aboutsummaryrefslogtreecommitdiffstats
path: root/test/CodeGen/XCore
diff options
context:
space:
mode:
authorRichard Osborne <richard@xmos.com>2009-01-14 18:26:46 +0000
committerRichard Osborne <richard@xmos.com>2009-01-14 18:26:46 +0000
commit29cab5f0ee477f86d305ed080d61c17ff64b602f (patch)
tree81ece34cef6a101e74587a68b3a682a97ec3d9ff /test/CodeGen/XCore
parenta8c78a9e89afcca4f003c55bcdbd41a23ecd5c8d (diff)
downloadexternal_llvm-29cab5f0ee477f86d305ed080d61c17ff64b602f.zip
external_llvm-29cab5f0ee477f86d305ed080d61c17ff64b602f.tar.gz
external_llvm-29cab5f0ee477f86d305ed080d61c17ff64b602f.tar.bz2
Add pseudo instructions to the XCore for (load|store|load address) of a
frame index. eliminateFrameIndex will replace these instructions with (LDWSP|STWSP|LDAWSP) or (LDW|STW|LDAWF) if a frame pointer is in use. This fixes PR 3324. Previously we used LDWSP, STWSP, LDAWSP before frame pointer elimination. However since they were marked as implicitly using SP they could not be rematerialised. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62238 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/XCore')
-rw-r--r--test/CodeGen/XCore/2009-01-14-Remat-Crash.ll18
1 files changed, 18 insertions, 0 deletions
diff --git a/test/CodeGen/XCore/2009-01-14-Remat-Crash.ll b/test/CodeGen/XCore/2009-01-14-Remat-Crash.ll
new file mode 100644
index 0000000..735e988
--- /dev/null
+++ b/test/CodeGen/XCore/2009-01-14-Remat-Crash.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-as < %s | llc -march=xcore > %t1.s
+; PR3324
+define double @f1(double %a, double %b, double %c, double %d, double %e, double %f, double %g) nounwind {
+entry:
+ br i1 false, label %bb113, label %bb129
+
+bb113: ; preds = %entry
+ ret double 0.000000e+00
+
+bb129: ; preds = %entry
+ %tmp134 = sub double %b, %a ; <double> [#uses=1]
+ %tmp136 = sub double %tmp134, %c ; <double> [#uses=1]
+ %tmp138 = add double %tmp136, %d ; <double> [#uses=1]
+ %tmp140 = sub double %tmp138, %e ; <double> [#uses=1]
+ %tmp142 = add double %tmp140, %f ; <double> [#uses=1]
+ %tmp.0 = mul double %tmp142, 0.000000e+00 ; <double> [#uses=1]
+ ret double %tmp.0
+}