Mark byval parameter stack objects mutable for now.
authorEvan Cheng <evan.cheng@apple.com>
Thu, 10 Jan 2008 02:24:25 +0000 (02:24 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Thu, 10 Jan 2008 02:24:25 +0000 (02:24 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45813 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86ISelLowering.cpp

index a7cf6cf8ca2c03e8170c8dafbceab8f93afb76c8..30c00f5f615f902a233f75fae2b41cf9a995ea5e 100644 (file)
@@ -1012,16 +1012,17 @@ SDOperand X86TargetLowering::LowerMemArgument(SDOperand Op, SelectionDAG &DAG,
                                               MachineFrameInfo *MFI,
                                               SDOperand Root, unsigned i) {
   // Create the nodes corresponding to a load from this parameter slot.
+  unsigned Flags = cast<ConstantSDNode>(Op.getOperand(3 + i))->getValue();
+  bool isByVal = Flags & ISD::ParamFlags::ByVal;
+
+  // FIXME: For now, all byval parameter objects are marked mutable. This
+  // can be changed with more analysis.
   int FI = MFI->CreateFixedObject(MVT::getSizeInBits(VA.getValVT())/8,
-                                  VA.getLocMemOffset());
+                                  VA.getLocMemOffset(), !isByVal);
   SDOperand FIN = DAG.getFrameIndex(FI, getPointerTy());
-
-  unsigned Flags =  cast<ConstantSDNode>(Op.getOperand(3 + i))->getValue();
-
-  if (Flags & ISD::ParamFlags::ByVal)
+  if (isByVal)
     return FIN;
-  else
-    return DAG.getLoad(VA.getValVT(), Root, FIN, NULL, 0);
+  return DAG.getLoad(VA.getValVT(), Root, FIN, NULL, 0);
 }
 
 SDOperand