summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86RegisterInfo.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2007-10-19 23:50:58 +0000
committerEvan Cheng <evan.cheng@apple.com>2007-10-19 23:50:58 +0000
commit45e096c77e06d144158e7435b805976beb8a42ff (patch)
tree3d11b1955368d350dab7da244ff8afce1e9d7166 /llvm/lib/Target/X86/X86RegisterInfo.cpp
parentf52a6fc50ce086b6123f92d8d3fa940a27f153d4 (diff)
downloadbcm5719-llvm-45e096c77e06d144158e7435b805976beb8a42ff.tar.gz
bcm5719-llvm-45e096c77e06d144158e7435b805976beb8a42ff.zip
Resolve unfold tables ambiguity.
llvm-svn: 43194
Diffstat (limited to 'llvm/lib/Target/X86/X86RegisterInfo.cpp')
-rw-r--r--llvm/lib/Target/X86/X86RegisterInfo.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/llvm/lib/Target/X86/X86RegisterInfo.cpp b/llvm/lib/Target/X86/X86RegisterInfo.cpp
index 48280676df7..c78db16a42e 100644
--- a/llvm/lib/Target/X86/X86RegisterInfo.cpp
+++ b/llvm/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
OpenPOWER on IntegriCloud