diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-10-19 23:50:58 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-10-19 23:50:58 +0000 |
commit | f7c9695a3890102916929e60bbf8ed33c0fc417a (patch) | |
tree | 8c1170846c14956d6b6a20e02678e1ef93436596 | |
parent | 40eaa99fa9f7ec9af2c1cf3faf914567c78a1905 (diff) | |
download | external_llvm-f7c9695a3890102916929e60bbf8ed33c0fc417a.zip external_llvm-f7c9695a3890102916929e60bbf8ed33c0fc417a.tar.gz external_llvm-f7c9695a3890102916929e60bbf8ed33c0fc417a.tar.bz2 |
Resolve unfold tables ambiguity.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43194 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/X86/X86RegisterInfo.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/Target/X86/X86RegisterInfo.cpp b/lib/Target/X86/X86RegisterInfo.cpp index 4828067..c78db16 100644 --- a/lib/Target/X86/X86RegisterInfo.cpp +++ b/lib/Target/X86/X86RegisterInfo.cpp @@ -324,9 +324,10 @@ X86RegisterInfo::X86RegisterInfo(X86TargetMachine &tm, unsigned FoldedLoad = OpTbl0[i][2]; // Index 0, folded load or store. unsigned AuxInfo = 0 | (FoldedLoad << 4) | ((FoldedLoad^1) << 5); - if (!MemOp2RegOpTable.insert(std::make_pair((unsigned*)MemOp, + if (RegOp != X86::FsMOVAPDrr && RegOp != X86::FsMOVAPSrr) + if (!MemOp2RegOpTable.insert(std::make_pair((unsigned*)MemOp, std::make_pair(RegOp, AuxInfo)))) - AmbEntries.push_back(MemOp); + AmbEntries.push_back(MemOp); } static const unsigned OpTbl1[][2] = { @@ -449,9 +450,10 @@ X86RegisterInfo::X86RegisterInfo(X86TargetMachine &tm, if (!RegOp2MemOpTable1.insert(std::make_pair((unsigned*)RegOp, MemOp))) assert(false && "Duplicated entries?"); unsigned AuxInfo = 1 | (1 << 4); // Index 1, folded load - if (!MemOp2RegOpTable.insert(std::make_pair((unsigned*)MemOp, + if (RegOp != X86::FsMOVAPDrr && RegOp != X86::FsMOVAPSrr) + if (!MemOp2RegOpTable.insert(std::make_pair((unsigned*)MemOp, std::make_pair(RegOp, AuxInfo)))) - AmbEntries.push_back(MemOp); + AmbEntries.push_back(MemOp); } static const unsigned OpTbl2[][2] = { @@ -648,8 +650,7 @@ X86RegisterInfo::X86RegisterInfo(X86TargetMachine &tm, } // Remove ambiguous entries. - for (unsigned i = 0, e = AmbEntries.size(); i != e; ++i) - MemOp2RegOpTable.erase((unsigned*)AmbEntries[i]); + assert(AmbEntries.empty() && "Duplicated entries in unfolding maps?"); } // getX86RegNum - This function maps LLVM register identifiers to their X86 |