diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2005-12-12 23:22:48 +0000 | 
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2005-12-12 23:22:48 +0000 | 
| commit | 481c8e05014561d365003cbd1cdb1109d4b5ee1d (patch) | |
| tree | 2b41e9ad5f429e6b9a407c5b2e6b99b327fddf06 /lib/Transforms/IPO/FunctionResolution.cpp | |
| parent | ac22c83e6853c759a10eb7310b019b22e1d42d16 (diff) | |
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
Diffstat (limited to 'lib/Transforms/IPO/FunctionResolution.cpp')
0 files changed, 0 insertions, 0 deletions
