[llvm-commits] CVS: llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp

Chris Lattner lattner at cs.uiuc.edu
Wed Dec 14 09:24:10 PST 2005



Changes in directory llvm/lib/Transforms/Scalar:

ScalarReplAggregates.cpp updated: 1.33 -> 1.34
---
Log message:

Fix Transforms/ScalarRepl/2005-12-14-UnionPromoteCrash.ll, a crash on undefined
behavior in 126.gcc on big-endian systems.


---
Diffs of the changes:  (+2 -2)

 ScalarReplAggregates.cpp |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)


Index: llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
diff -u llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp:1.33 llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp:1.34
--- llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp:1.33	Mon Dec 12 01:19:13 2005
+++ llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp	Wed Dec 14 11:23:59 2005
@@ -539,7 +539,7 @@
     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 @@
           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);






More information about the llvm-commits mailing list