diff options
author | Venkatraman Govindaraju <venkatra@cs.wisc.edu> | 2013-12-29 04:27:21 +0000 |
---|---|---|
committer | Venkatraman Govindaraju <venkatra@cs.wisc.edu> | 2013-12-29 04:27:21 +0000 |
commit | 0c6782545920d2d0cd3764f463ac352f5ff17ac4 (patch) | |
tree | 860600108b84e6d5d5709f0bc36dd586d2f8ef4c /lib/Target/Sparc | |
parent | 006e786b35cbcbfbb40abb029656b5140f38020e (diff) | |
download | llvm-0c6782545920d2d0cd3764f463ac352f5ff17ac4.tar.gz llvm-0c6782545920d2d0cd3764f463ac352f5ff17ac4.tar.bz2 llvm-0c6782545920d2d0cd3764f463ac352f5ff17ac4.tar.xz |
[SparcV9] For codegen generated library calls that return float, set inreg flag manually in LowerCall().
This makes the sparc backend to generate Sparc64 ABI compliant code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198149 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/Sparc')
-rw-r--r-- | lib/Target/Sparc/SparcISelLowering.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Target/Sparc/SparcISelLowering.cpp b/lib/Target/Sparc/SparcISelLowering.cpp index b794f8702b..a1137f7ec3 100644 --- a/lib/Target/Sparc/SparcISelLowering.cpp +++ b/lib/Target/Sparc/SparcISelLowering.cpp @@ -1252,6 +1252,12 @@ SparcTargetLowering::LowerCall_64(TargetLowering::CallLoweringInfo &CLI, SmallVector<CCValAssign, 16> RVLocs; CCState RVInfo(CLI.CallConv, CLI.IsVarArg, DAG.getMachineFunction(), DAG.getTarget(), RVLocs, *DAG.getContext()); + + // Set inreg flag manually for codegen generated library calls that + // return float. + if (CLI.Ins.size() == 1 && CLI.Ins[0].VT == MVT::f32 && CLI.CS == 0) + CLI.Ins[0].Flags.setInReg(); + RVInfo.AnalyzeCallResult(CLI.Ins, CC_Sparc64); // Copy all of the result registers out of their specified physreg. |