diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-12-14 17:23:59 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-12-14 17:23:59 +0000 |
| commit | 8c9e14620f9e0ded5b089a6ee34bf865119319cf (patch) | |
| tree | 3701fd35eb6c308a43a50ac4b0b40a579fefbf7d /llvm/lib/Transforms | |
| parent | f69abd13d42cefc52ee0aa61c94dfa1f91541c8e (diff) | |
| download | bcm5719-llvm-8c9e14620f9e0ded5b089a6ee34bf865119319cf.tar.gz bcm5719-llvm-8c9e14620f9e0ded5b089a6ee34bf865119319cf.zip | |
Fix Transforms/ScalarRepl/2005-12-14-UnionPromoteCrash.ll, a crash on undefined
behavior in 126.gcc on big-endian systems.
llvm-svn: 24708
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp b/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp index 4c5e3a30b6a..1eff10b7b7a 100644 --- a/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp +++ b/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp @@ -539,7 +539,7 @@ void SROA::ConvertUsesToScalar(Value *Ptr, AllocaInst *NewAI, unsigned Offset) { if (LoadInst *LI = dyn_cast<LoadInst>(User)) { // The load is a bit extract from NewAI shifted right by Offset bits. Value *NV = new LoadInst(NewAI, LI->getName(), LI); - if (Offset) + if (Offset && Offset < NV->getType()->getPrimitiveSizeInBits()) NV = new ShiftInst(Instruction::Shr, NV, ConstantUInt::get(Type::UByteTy, Offset), LI->getName(), LI); @@ -563,7 +563,7 @@ void SROA::ConvertUsesToScalar(Value *Ptr, AllocaInst *NewAI, unsigned Offset) { SV = new CastInst(SV, SV->getType()->getUnsignedVersion(), SV->getName(), SI); SV = new CastInst(SV, Old->getType(), SV->getName(), SI); - if (Offset) + if (Offset && Offset < SV->getType()->getPrimitiveSizeInBits()) SV = new ShiftInst(Instruction::Shl, SV, ConstantUInt::get(Type::UByteTy, Offset), SV->getName()+".adj", SI); |

