llvm-6502/utils/TableGen
Evan Cheng 481c8e0501 At top of generated isel SelectCode() is this:
if (!N.Val->hasOneUse()) {
    std::map<SDOperand, SDOperand>::iterator CGMI = CodeGenMap.find(N);
    if (CGMI != CodeGenMap.end()) return CGMI->second;
  }

Suppose a DAG like this:

           X
         ^   ^
        /     \
      USE1    USE2

Suppose USE1 is being selected first and during which X is selected and
returned a new node. After this, USE1 is no longer an use of X. During USE2
selection, X will be selected again since it has only one use!

The fix is to always query CodeGenMap.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24679 91177308-0d34-0410-b5e6-96231b3b80d8
2005-12-12 23:22:48 +00:00
..
.cvsignore
AsmWriterEmitter.cpp
AsmWriterEmitter.h
CodeEmitterGen.cpp
CodeEmitterGen.h Remove trailing whitespace 2005-04-22 00:00:37 +00:00
CodeGenInstruction.h
CodeGenRegisters.h
CodeGenTarget.cpp
CodeGenTarget.h
DAGISelEmitter.cpp At top of generated isel SelectCode() is this: 2005-12-12 23:22:48 +00:00
DAGISelEmitter.h
FileLexer.cpp
FileLexer.l
FileParser.cpp
FileParser.h
FileParser.y
InstrInfoEmitter.cpp
InstrInfoEmitter.h
Makefile
Record.cpp
Record.h
RegisterInfoEmitter.cpp
RegisterInfoEmitter.h
SubtargetEmitter.cpp
SubtargetEmitter.h
TableGen.cpp
TableGenBackend.cpp
TableGenBackend.h