Changes in directory llvm/lib/Target/SparcV8:

SparcV8ISelDAGToDAG.cpp updated: 1.54 -> 1.55
---
Log message:

Silly Sparc is big endian.  If we have to load args out of incoming stack slots
that are smaller than an int, make sure to adjust the frame pointer to take
this into consideration.


---
Diffs of the changes:  (+4 -0)

 SparcV8ISelDAGToDAG.cpp |    4 ++++
 1 files changed, 4 insertions(+)


Index: llvm/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp
diff -u llvm/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp:1.54 
llvm/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp:1.55
--- llvm/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp:1.54        Sun Jan 15 
16:22:01 2006
+++ llvm/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp     Sun Jan 15 19:40:00 2006
@@ -241,6 +241,10 @@
           unsigned LoadOp =
             I->getType()->isSigned() ? ISD::SEXTLOAD : ISD::ZEXTLOAD;
 
+          // Sparc is big endian, so add an offset based on the ObjectVT.
+          unsigned Offset = 4-std::max(1U, MVT::getSizeInBits(ObjectVT)/8);
+          FIPtr = DAG.getNode(ISD::ADD, MVT::i32, FIPtr,
+                              DAG.getConstant(Offset, MVT::i32));
           Load = DAG.getExtLoad(LoadOp, MVT::i32, Root, FIPtr,
                                 DAG.getSrcValue(0), ObjectVT);
           Load = DAG.getNode(ISD::TRUNCATE, ObjectVT, Load);



_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to