Changes in directory llvm/utils/TableGen:
IntrinsicEmitter.cpp updated: 1.23 -> 1.24 --- Log message: Error check and eliminate unnecessary value. --- Diffs of the changes: (+15 -8) IntrinsicEmitter.cpp | 23 +++++++++++++++-------- 1 files changed, 15 insertions(+), 8 deletions(-) Index: llvm/utils/TableGen/IntrinsicEmitter.cpp diff -u llvm/utils/TableGen/IntrinsicEmitter.cpp:1.23 llvm/utils/TableGen/IntrinsicEmitter.cpp:1.24 --- llvm/utils/TableGen/IntrinsicEmitter.cpp:1.23 Tue Feb 6 12:02:54 2007 +++ llvm/utils/TableGen/IntrinsicEmitter.cpp Tue Feb 6 12:30:58 2007 @@ -108,11 +108,8 @@ OS << "#endif\n\n"; } -static void EmitTypeVerify(std::ostream &OS, Record *ArgType) { - if (ArgType->getValueAsString("TypeVal") == "...") { - OS << "-2, "; - return; - } +static bool EmitTypeVerify(std::ostream &OS, Record *ArgType) { + if (ArgType->getValueAsString("TypeVal") == "...") return true; OS << "(int)" << ArgType->getValueAsString("TypeVal") << ", "; // If this is an integer type, check the width is correct. @@ -124,6 +121,8 @@ EmitTypeVerify(OS, ArgType->getValueAsDef("ElTy")); OS << ArgType->getValueAsInt("NumElts") << ", "; } + + return false; } /// RecordListComparator - Provide a determinstic comparator for lists of @@ -172,9 +171,17 @@ const std::vector<Record*> &ArgTypes = I->first; OS << " VerifyIntrinsicPrototype(IF, "; - for (unsigned j = 0; j != ArgTypes.size(); ++j) - EmitTypeVerify(OS, ArgTypes[j]); - OS << "-1);\n"; + bool VarArg = false; + for (unsigned j = 0; j != ArgTypes.size(); ++j) { + VarArg = EmitTypeVerify(OS, ArgTypes[j]); + if (VarArg) { + if ((j+1) != ArgTypes.size()) + throw "Var arg type not last argument"; + break; + } + } + + OS << (VarArg ? "-2);\n" : "-1);\n"); OS << " break;\n"; } OS << " }\n"; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits