diff options
| author | Christian Pirker <cpirker@a-bix.com> | 2014-06-01 09:30:52 +0000 |
|---|---|---|
| committer | Christian Pirker <cpirker@a-bix.com> | 2014-06-01 09:30:52 +0000 |
| commit | 762b2c624f595024084016d29007cc3774d5edbc (patch) | |
| tree | 9138bfefe555b68be6cd769b1c045ea0ab6c6787 | |
| parent | 639625e9f44e11e8db12cf834e667de3a5c1bcd5 (diff) | |
| download | bcm5719-llvm-762b2c624f595024084016d29007cc3774d5edbc.tar.gz bcm5719-llvm-762b2c624f595024084016d29007cc3774d5edbc.zip | |
ARMEB: Fix function return type f64
Reviewed at http://reviews.llvm.org/D3968
llvm-svn: 209990
| -rw-r--r-- | llvm/lib/Target/ARM/ARMISelLowering.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/ARM/big-endian-ret-f64.ll | 12 |
2 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp index a7a47d972cb..eed523be3f3 100644 --- a/llvm/lib/Target/ARM/ARMISelLowering.cpp +++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp @@ -8315,6 +8315,8 @@ static SDValue PerformVMOVRRDCombine(SDNode *N, std::min(4U, LD->getAlignment() / 2)); DAG.ReplaceAllUsesOfValueWith(SDValue(LD, 1), NewLD2.getValue(1)); + if (DCI.DAG.getTargetLoweringInfo().isBigEndian()) + std::swap (NewLD1, NewLD2); SDValue Result = DCI.CombineTo(N, NewLD1, NewLD2); DCI.RemoveFromWorklist(LD); DAG.DeleteNode(LD); diff --git a/llvm/test/CodeGen/ARM/big-endian-ret-f64.ll b/llvm/test/CodeGen/ARM/big-endian-ret-f64.ll new file mode 100644 index 00000000000..614bfc0a5b3 --- /dev/null +++ b/llvm/test/CodeGen/ARM/big-endian-ret-f64.ll @@ -0,0 +1,12 @@ +; RUN: llc -mtriple=armebv7a-eabi %s -O0 -o - | FileCheck %s +; RUN: llc -mtriple=armebv8a-eabi %s -O0 -o - | FileCheck %s + +define double @fn() { +; CHECK-LABEL: fn +; CHECK: ldr r0, [sp] +; CHECK: ldr r1, [sp, #4] + %r = alloca double, align 8 + %1 = load double* %r, align 8 + ret double %1 +} + |

