summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/MachineFunction.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2010-05-24 21:33:37 +0000
committerEvan Cheng <evan.cheng@apple.com>2010-05-24 21:33:37 +0000
commit1b79babdecf775b03ed6c347c75fa05588ed9c65 (patch)
tree0f21b91dcc790845c05789bb673f6f8653676e9c /llvm/lib/CodeGen/MachineFunction.cpp
parent79b6a0f140157300b4be158178837313e3d6f592 (diff)
downloadbcm5719-llvm-1b79babdecf775b03ed6c347c75fa05588ed9c65.tar.gz
bcm5719-llvm-1b79babdecf775b03ed6c347c75fa05588ed9c65.zip
Avoid adding duplicate function live-in's.
llvm-svn: 104560
Diffstat (limited to 'llvm/lib/CodeGen/MachineFunction.cpp')
-rw-r--r--llvm/lib/CodeGen/MachineFunction.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/MachineFunction.cpp b/llvm/lib/CodeGen/MachineFunction.cpp
index 3cf10b3ac65..a38c881982e 100644
--- a/llvm/lib/CodeGen/MachineFunction.cpp
+++ b/llvm/lib/CodeGen/MachineFunction.cpp
@@ -398,8 +398,14 @@ void MachineFunction::viewCFGOnly() const
unsigned MachineFunction::addLiveIn(unsigned PReg,
const TargetRegisterClass *RC) {
assert(RC->contains(PReg) && "Not the correct regclass!");
- unsigned VReg = getRegInfo().createVirtualRegister(RC);
- getRegInfo().addLiveIn(PReg, VReg);
+ MachineRegisterInfo &MRI = getRegInfo();
+ unsigned VReg = MRI.getLiveInVirtReg(PReg);
+ if (VReg) {
+ assert(MRI.getRegClass(VReg) == RC && "Register class mismatch!");
+ return VReg;
+ }
+ VReg = MRI.createVirtualRegister(RC);
+ MRI.addLiveIn(PReg, VReg);
return VReg;
}
OpenPOWER on IntegriCloud