[llvm-commits] [llvm] r42192 - in /llvm/trunk: lib/Target/TargetData.cpp lib/Target/X86/X86ISelLowering.cpp test/CodeGen/X86/byval2.ll

Rafael Espindola rafael.espindola at gmail.com
Fri Sep 21 08:50:22 PDT 2007


Author: rafael
Date: Fri Sep 21 10:50:22 2007
New Revision: 42192

URL: http://llvm.org/viewvc/llvm-project?rev=42192&view=rev
Log:
Don't add a default STACK_ALIGN (use the generic ABI alignment)
Implement calls to functions with byval arguments on X86

Modified:
    llvm/trunk/lib/Target/TargetData.cpp
    llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
    llvm/trunk/test/CodeGen/X86/byval2.ll

Modified: llvm/trunk/lib/Target/TargetData.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetData.cpp?rev=42192&r1=42191&r2=42192&view=diff

==============================================================================
--- llvm/trunk/lib/Target/TargetData.cpp (original)
+++ llvm/trunk/lib/Target/TargetData.cpp Fri Sep 21 10:50:22 2007
@@ -182,7 +182,6 @@
   setAlignment(VECTOR_ALIGN,    8,  8, 64);  // v2i32
   setAlignment(VECTOR_ALIGN,   16, 16, 128); // v16i8, v8i16, v4i32, ...
   setAlignment(AGGREGATE_ALIGN, 0,  8,  0);  // struct, union, class, ...
-  setAlignment(STACK_ALIGN,     0,  8,  0);  // objects on the stack
 
   while (!temp.empty()) {
     std::string token = getToken(temp, "-");

Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=42192&r1=42191&r2=42192&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Fri Sep 21 10:50:22 2007
@@ -859,9 +859,9 @@
       assert(VA.isMemLoc());
       if (StackPtr.Val == 0)
         StackPtr = DAG.getRegister(getStackPtrReg(), getPointerTy());
-      SDOperand PtrOff = DAG.getConstant(VA.getLocMemOffset(), getPointerTy());
-      PtrOff = DAG.getNode(ISD::ADD, getPointerTy(), StackPtr, PtrOff);
-      MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, NULL, 0));
+
+      MemOpChains.push_back(LowerMemOpCallTo(Op, DAG, StackPtr, VA, Chain,
+                                             Arg));
     }
   }
 
@@ -1064,7 +1064,6 @@
     unsigned Align = 1 << ((Flags & ISD::ParamFlags::ByValAlign) >>
                            ISD::ParamFlags::ByValAlignOffs);
 
-    assert (Align >= 8);
     unsigned  Size = (Flags & ISD::ParamFlags::ByValSize) >>
         ISD::ParamFlags::ByValSizeOffs;
 
@@ -1133,9 +1132,9 @@
       assert(VA.isMemLoc());
       if (StackPtr.Val == 0)
         StackPtr = DAG.getRegister(getStackPtrReg(), getPointerTy());
-      SDOperand PtrOff = DAG.getConstant(VA.getLocMemOffset(), getPointerTy());
-      PtrOff = DAG.getNode(ISD::ADD, getPointerTy(), StackPtr, PtrOff);
-      MemOpChains.push_back(DAG.getStore(Chain, Arg, PtrOff, NULL, 0));
+
+      MemOpChains.push_back(LowerMemOpCallTo(Op, DAG, StackPtr, VA, Chain,
+                                             Arg));
     }
   }
 

Modified: llvm/trunk/test/CodeGen/X86/byval2.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/byval2.ll?rev=42192&r1=42191&r2=42192&view=diff

==============================================================================
--- llvm/trunk/test/CodeGen/X86/byval2.ll (original)
+++ llvm/trunk/test/CodeGen/X86/byval2.ll Fri Sep 21 10:50:22 2007
@@ -1,4 +1,5 @@
 ; RUN: llvm-as < %s | llc -march=x86-64 | grep rep.movsl | count 2
+; RUN: llvm-as < %s | llc -march=x86    | grep rep.movsl | count 2
 
 %struct.s = type { i64, i64, i64 }
 





More information about the llvm-commits mailing list