diff options
| author | Nate Begeman <natebegeman@mac.com> | 2005-07-25 21:15:28 +0000 |
|---|---|---|
| committer | Nate Begeman <natebegeman@mac.com> | 2005-07-25 21:15:28 +0000 |
| commit | b9ce12b4bb2145f32c13cb517d8c12a4e60946ed (patch) | |
| tree | f3cd029f9a8ac9ffce228c17b5172bb71d6f8350 /llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp | |
| parent | dfa35465ddeade7a59d146e6f10082b72cd10671 (diff) | |
| download | bcm5719-llvm-b9ce12b4bb2145f32c13cb517d8c12a4e60946ed.tar.gz bcm5719-llvm-b9ce12b4bb2145f32c13cb517d8c12a4e60946ed.zip | |
Fix an optimization put in for accessing static globals. This obviates
the need to build PIC.
llvm-svn: 22512
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp b/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp index 4cbb585e821..52a8219eddb 100644 --- a/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp +++ b/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp @@ -45,7 +45,6 @@ namespace { PPC32TargetLowering(TargetMachine &TM) : TargetLowering(TM) { // Fold away setcc operations if possible. setSetCCIsExpensive(); - PICEnabled = true; // Set up the register classes. addRegisterClass(MVT::i32, PPC32::GPRCRegisterClass); @@ -1438,9 +1437,10 @@ unsigned ISel::SelectExpr(SDOperand N, bool Recording) { if (GV->hasWeakLinkage() || GV->isExternal()) { Tmp2 = MakeReg(MVT::i32); BuildMI(BB, PPC::LWZ, 2, Tmp2).addGlobalAddress(GV).addReg(Tmp1); - Tmp1 = Tmp2; + BuildMI(BB, Opc, 2, Result).addSImm(0).addReg(Tmp2); + } else { + BuildMI(BB, Opc, 2, Result).addGlobalAddress(GV).addReg(Tmp1); } - BuildMI(BB, Opc, 2, Result).addGlobalAddress(GV).addReg(Tmp1); } else { int offset; bool idx = SelectAddr(Address, Tmp1, offset); @@ -2491,9 +2491,10 @@ void ISel::Select(SDOperand N) { if (GV->hasWeakLinkage() || GV->isExternal()) { Tmp3 = MakeReg(MVT::i32); BuildMI(BB, PPC::LWZ, 2, Tmp3).addGlobalAddress(GV).addReg(Tmp2); - Tmp2 = Tmp3; + BuildMI(BB, Opc, 3).addReg(Tmp1).addSImm(0).addReg(Tmp3); + } else { + BuildMI(BB, Opc, 3).addReg(Tmp1).addGlobalAddress(GV).addReg(Tmp2); } - BuildMI(BB, Opc, 3).addReg(Tmp1).addGlobalAddress(GV).addReg(Tmp2); } else { int offset; bool idx = SelectAddr(Address, Tmp2, offset); |

