summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
diff options
context:
space:
mode:
authorNicolas Geoffray <nicolas.geoffray@lip6.fr>2008-04-13 13:40:22 +0000
committerNicolas Geoffray <nicolas.geoffray@lip6.fr>2008-04-13 13:40:22 +0000
commitdcc2eda5fc16813f0d90dfdbbc237613c2663adb (patch)
treecdbb6745db071b83ffcc439ce091551b826d51b2 /llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
parentb1e8bf2cad6df8b1de2b841619689ad77afee448 (diff)
downloadbcm5719-llvm-dcc2eda5fc16813f0d90dfdbbc237613c2663adb.tar.gz
bcm5719-llvm-dcc2eda5fc16813f0d90dfdbbc237613c2663adb.zip
Add a divided flag for the first piece of an argument divided into mulitple parts. Fixes PR1643
llvm-svn: 49611
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
index ac5cfd2e91e..04aa472d8f6 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
@@ -4162,8 +4162,11 @@ TargetLowering::LowerArguments(Function &F, SelectionDAG &DAG) {
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 @@ TargetLowering::LowerCallTo(SDOperand Chain, const Type *RetTy,
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]);
OpenPOWER on IntegriCloud