X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=utils%2FTableGen%2FTableGen.cpp;h=c6692f805bacef30d16b40199e8092542db3c09b;hb=bc03979536a1ecb220f1330719f3e3973a81ab0b;hp=1bc2790f093d6a1fafd94167f4c111f7258c6c86;hpb=ecbdcf2ae056404cde449783a1ec8ba798c36562;p=oota-llvm.git diff --git a/utils/TableGen/TableGen.cpp b/utils/TableGen/TableGen.cpp index 1bc2790f093..c6692f805ba 100644 --- a/utils/TableGen/TableGen.cpp +++ b/utils/TableGen/TableGen.cpp @@ -29,6 +29,7 @@ #include "InstrEnumEmitter.h" #include "AsmWriterEmitter.h" #include "DAGISelEmitter.h" +#include "FastISelEmitter.h" #include "SubtargetEmitter.h" #include "IntrinsicEmitter.h" #include "LLVMCConfigurationEmitter.h" @@ -45,9 +46,10 @@ enum ActionType { GenInstrEnums, GenInstrs, GenAsmWriter, GenCallingConv, GenDAGISel, + GenFastISel, GenSubtarget, GenIntrinsic, - GenLLVMCCConf, + GenLLVMCConf, PrintEnums }; @@ -74,12 +76,14 @@ namespace { "Generate assembly writer"), clEnumValN(GenDAGISel, "gen-dag-isel", "Generate a DAG instruction selector"), + clEnumValN(GenFastISel, "gen-fast-isel", + "Generate a \"fast\" instruction selector"), clEnumValN(GenSubtarget, "gen-subtarget", "Generate subtarget enumerations"), clEnumValN(GenIntrinsic, "gen-intrinsic", "Generate intrinsic information"), - clEnumValN(GenLLVMCCConf, "gen-llvmcc", - "Generate LLVMCC configuration library"), + clEnumValN(GenLLVMCConf, "gen-llvmc", + "Generate LLVMC configuration library"), clEnumValN(PrintEnums, "print-enums", "Print enum values for a class"), clEnumValEnd)); @@ -177,14 +181,17 @@ int main(int argc, char **argv) { case GenDAGISel: DAGISelEmitter(Records).run(*Out); break; + case GenFastISel: + FastISelEmitter(Records).run(*Out); + break; case GenSubtarget: SubtargetEmitter(Records).run(*Out); break; case GenIntrinsic: IntrinsicEmitter(Records).run(*Out); break; - case GenLLVMCCConf: - LLVMCCConfigurationEmitter(Records).run(*Out); + case GenLLVMCConf: + LLVMCConfigurationEmitter(Records).run(*Out); break; case PrintEnums: { @@ -205,6 +212,13 @@ int main(int argc, char **argv) { std::remove(OutputFilename.c_str()); // Remove the file, it's broken } return 1; + } catch (const char *Error) { + cerr << argv[0] << ": " << Error << "\n"; + if (Out != cout.stream()) { + delete Out; // Close the file + std::remove(OutputFilename.c_str()); // Remove the file, it's broken + } + return 1; } catch (...) { cerr << argv[0] << ": Unknown unexpected exception occurred.\n"; if (Out != cout.stream()) {