llvm-project/llvm/utils/TableGen
Daniel Dunbar ced008152f Fix non-determinism in DAGISel emitter.
- This manifested as non-determinism in the .inc output in rare cases (when two
   distinct patterns ended up being equivalent, which is rather rare). That
   meant the pattern matching was non-deterministic, which could eventually mean
   the code generator selected different instructions based on the arch.

 - It's probably worth making the DAGISel ensure a total ordering (or force the
   user to), but the simple fix here is to totally order the Record* maps based
   on a unique ID.

 - PR4672, PR4711.

Yay:
--
ddunbar@giles:~$ cat ~/llvm.obj.64/lib/Target/*/*.inc | shasum
d1099ff34b21459a5a3e7021c225c080e6017ece  -
ddunbar@giles:~$ cat ~/llvm.obj.ppc/lib/Target/*/*.inc | shasum
d1099ff34b21459a5a3e7021c225c080e6017ece  -
--

llvm-svn: 79846
2009-08-23 09:47:37 +00:00
..
AsmMatcherEmitter.cpp llvm-mc/AsmParser: Match hard coded registers (e.g. 'shldl %cl, %eax, %eax') 2009-08-11 23:23:44 +00:00
AsmMatcherEmitter.h Stub out assembly matcher (.s -> MCInst) tblgen backend. 2009-07-11 19:39:44 +00:00
AsmWriterEmitter.cpp remove some DOUTs 2009-08-23 04:44:11 +00:00
AsmWriterEmitter.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
CMakeLists.txt Update CMakeLists.txt 2009-07-11 21:53:14 +00:00
CallingConvEmitter.cpp Add contexts to some of the MVT APIs. No functionality change yet, just the infrastructure work needed to get the contexts to where they need to be first. 2009-08-12 00:36:31 +00:00
CallingConvEmitter.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
ClangDiagnosticsEmitter.cpp Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
ClangDiagnosticsEmitter.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
CodeEmitterGen.cpp Convert more abort() calls to llvm_report_error(). 2009-07-08 19:04:27 +00:00
CodeEmitterGen.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
CodeGenDAGPatterns.cpp Fix non-determinism in DAGISel emitter. 2009-08-23 09:47:37 +00:00
CodeGenDAGPatterns.h Fix non-determinism in DAGISel emitter. 2009-08-23 09:47:37 +00:00
CodeGenInstruction.cpp Make BinOps typed and require a type specifier for !nameconcat. This 2009-04-23 21:25:15 +00:00
CodeGenInstruction.h Rename isSimpleLoad to canFoldAsLoad, to better reflect its meaning. 2008-12-03 18:15:48 +00:00
CodeGenIntrinsics.h Split EVT into MVT and EVT, the former representing _just_ a primitive type, while 2009-08-11 20:47:22 +00:00
CodeGenRegisters.h Split EVT into MVT and EVT, the former representing _just_ a primitive type, while 2009-08-11 20:47:22 +00:00
CodeGenTarget.cpp Split EVT into MVT and EVT, the former representing _just_ a primitive type, while 2009-08-11 20:47:22 +00:00
CodeGenTarget.h Split EVT into MVT and EVT, the former representing _just_ a primitive type, while 2009-08-11 20:47:22 +00:00
DAGISelEmitter.cpp Change Pass::print to take a raw ostream instead of std::ostream, 2009-08-23 06:03:38 +00:00
DAGISelEmitter.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
FastISelEmitter.cpp Split EVT into MVT and EVT, the former representing _just_ a primitive type, while 2009-08-11 20:47:22 +00:00
FastISelEmitter.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
InstrEnumEmitter.cpp Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
InstrEnumEmitter.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
InstrInfoEmitter.cpp 1. Introduce a new TargetOperandInfo::getRegClass() helper method 2009-07-29 21:10:12 +00:00
InstrInfoEmitter.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
IntrinsicEmitter.cpp Push LLVMContexts through the IntegerType APIs. 2009-08-13 21:58:54 +00:00
IntrinsicEmitter.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
LLVMCConfigurationEmitter.cpp Add an 'init' option property. 2009-07-07 16:08:41 +00:00
LLVMCConfigurationEmitter.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
Makefile Change 'make install' to install tblgen, for better support of out-of-tree targets, 2009-05-08 17:32:47 +00:00
Record.cpp Fix non-determinism in DAGISel emitter. 2009-08-23 09:47:37 +00:00
Record.h Fix non-determinism in DAGISel emitter. 2009-08-23 09:47:37 +00:00
RegisterInfoEmitter.cpp Split EVT into MVT and EVT, the former representing _just_ a primitive type, while 2009-08-11 20:47:22 +00:00
RegisterInfoEmitter.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
SubtargetEmitter.cpp Extend the instruction itinerary model to include the ability to indicate the def and use cycle for each operand. This additional information is optional, so existing itineraries do not need to be changed. 2009-08-17 16:02:57 +00:00
SubtargetEmitter.h Extend the instruction itinerary model to include the ability to indicate the def and use cycle for each operand. This additional information is optional, so existing itineraries do not need to be changed. 2009-08-17 16:02:57 +00:00
TGLexer.cpp Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
TGLexer.h prune #include, fix warning. 2009-06-21 05:33:06 +00:00
TGParser.cpp This void is implicit in C++. 2009-08-12 22:10:57 +00:00
TGParser.h move include searching logic from TGLexer to SourceMgr. 2009-06-21 05:06:04 +00:00
TGValueTypes.cpp Add contexts to some of the MVT APIs. No functionality change yet, just the infrastructure work needed to get the contexts to where they need to be first. 2009-08-12 00:36:31 +00:00
TableGen.cpp Change raw_fd_ostream to take flags as an optional bitmask 2009-08-23 02:51:22 +00:00
TableGenBackend.cpp Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00
TableGenBackend.h Replace std::iostreams with raw_ostream in TableGen. 2009-07-03 00:10:29 +00:00