aboutsummaryrefslogtreecommitdiffstats
path: root/utils/TableGen/Record.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-03-13 16:25:21 +0000
committerChris Lattner <sabre@nondot.org>2009-03-13 16:25:21 +0000
commita14b1ded69dc76f4e41ef60eeab89dc8575af44b (patch)
tree442f96347125ff44bddb8a3c32707364662ad559 /utils/TableGen/Record.h
parent7b9ffe4a6db2e59c18510aac4ba30902653e13eb (diff)
downloadexternal_llvm-a14b1ded69dc76f4e41ef60eeab89dc8575af44b.zip
external_llvm-a14b1ded69dc76f4e41ef60eeab89dc8575af44b.tar.gz
external_llvm-a14b1ded69dc76f4e41ef60eeab89dc8575af44b.tar.bz2
add a new TGError class and use it to propagate location info with
errors when thrown. This gets us nice errors like this from tblgen: CMOVL32rr: (set GR32:i32:$dst, (X86cmov GR32:$src1, GR32:$src2)) /Users/sabre/llvm/Debug/bin/tblgen: error: Included from X86.td:116: Parsing X86InstrInfo.td:922: In CMOVL32rr: X86cmov node requires exactly 4 operands! def CMOVL32rr : I<0x4C, MRMSrcReg, // if <s, GR32 = GR32 ^ instead of just: CMOVL32rr: (set GR32:i32:$dst, (X86cmov GR32:$src1, GR32:$src2)) /Users/sabre/llvm/Debug/bin/tblgen: In CMOVL32rr: X86cmov node requires exactly 4 operands! This is all I plan to do with this, but it should be easy enough to improve if anyone cares (e.g. keeping more loc info in "dag" expr records in tblgen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66898 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/Record.h')
-rw-r--r--utils/TableGen/Record.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/utils/TableGen/Record.h b/utils/TableGen/Record.h
index 5eb07eb..00b7730 100644
--- a/utils/TableGen/Record.h
+++ b/utils/TableGen/Record.h
@@ -1195,6 +1195,17 @@ struct LessRecordFieldName {
}
};
+
+class TGError {
+ TGLoc Loc;
+ std::string Message;
+public:
+ TGError(TGLoc loc, const std::string &message) : Loc(loc), Message(message) {}
+
+ TGLoc getLoc() const { return Loc; }
+ const std::string &getMessage() const { return Message; }
+};
+
std::ostream &operator<<(std::ostream &OS, const RecordKeeper &RK);