Add a divided flag for the first piece of an argument divided into mulitple parts. Fixes PR1643



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49611 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
index ac5cfd2..04aa472 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
@@ -4162,8 +4162,11 @@
     unsigned NumRegs = getNumRegisters(VT);
     for (unsigned i = 0; i != NumRegs; ++i) {
       RetVals.push_back(RegisterVT);
+
+      if (NumRegs > 1 && i == 0)
+        Flags.setDivided();
       // if it isn't first piece, alignment must be 1
-      if (i > 0)
+      else if (i > 0)
         Flags.setOrigAlign(1);
       Ops.push_back(DAG.getArgFlags(Flags));
     }
@@ -4285,7 +4288,9 @@
     for (unsigned i = 0; i != NumParts; ++i) {
       // if it isn't first piece, alignment must be 1
       ISD::ArgFlagsTy MyFlags = Flags;
-      if (i != 0)
+      if (NumParts > 1 && i == 0)
+        MyFlags.setDivided();
+      else if (i != 0)
         MyFlags.setOrigAlign(1);
 
       Ops.push_back(Parts[i]);