summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorAditya Nandakumar <aditya_nandakumar@apple.com>2016-01-04 19:48:14 +0000
committerAditya Nandakumar <aditya_nandakumar@apple.com>2016-01-04 19:48:14 +0000
commit12d060481a2477e69606a4d27d6d0f2438193e89 (patch)
tree4a0fe4ee2e7cd72a2cb3fd08e94b36e6e2f615f2 /llvm/test/Transforms
parent4d315f13001d7d393ecb2c1ced7c22ff34d5eace (diff)
downloadbcm5719-llvm-12d060481a2477e69606a4d27d6d0f2438193e89.tar.gz
bcm5719-llvm-12d060481a2477e69606a4d27d6d0f2438193e89.zip
Remove dead instructions before Redoing
Before reevaluating instructions, iterate over all instructions to be reevaluated and remove trivially dead instructions and if any of it's operands become trivially dead, mark it for deletion until all trivially dead instructions have been removed llvm-svn: 256773
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/Reassociate/factorize-again.ll34
-rw-r--r--llvm/test/Transforms/Reassociate/secondary.ll2
2 files changed, 35 insertions, 1 deletions
diff --git a/llvm/test/Transforms/Reassociate/factorize-again.ll b/llvm/test/Transforms/Reassociate/factorize-again.ll
new file mode 100644
index 00000000000..87e77945dfb
--- /dev/null
+++ b/llvm/test/Transforms/Reassociate/factorize-again.ll
@@ -0,0 +1,34 @@
+; RUN: opt -S -reassociate < %s | FileCheck %s
+
+; CHECK-LABEL: main
+; CHECK: %2 = fsub
+; CHECK: %3 = fsub
+; CHECK: fadd fast float %3, %2
+define void @main(float, float) {
+wrapper_entry:
+ %2 = fsub float undef, %0
+ %3 = fsub float undef, %1
+ %4 = call float @llvm.rsqrt.f32(float undef)
+ %5 = fmul fast float undef, %4
+ %6 = fmul fast float %2, %4
+ %7 = fmul fast float %3, %4
+ %8 = fmul fast float %5, undef
+ %9 = fmul fast float %6, undef
+ %10 = fmul fast float %7, undef
+ %11 = fadd fast float %8, %9
+ %12 = fadd fast float %11, %10
+ %13 = call float @foo2(float %12, float 0.000000e+00)
+ %mul36 = fmul fast float %13, 1.500000e+00
+ call void @foo1(i32 4, float %mul36)
+ ret void
+}
+
+declare void @foo1(i32, float)
+
+declare float @foo2(float, float) #1
+
+declare float @llvm.rsqrt.f32(float) #1
+
+attributes #0 = { argmemonly nounwind }
+attributes #1 = { nounwind readnone }
+
diff --git a/llvm/test/Transforms/Reassociate/secondary.ll b/llvm/test/Transforms/Reassociate/secondary.ll
index 388cd6bcb6f..a52000ada53 100644
--- a/llvm/test/Transforms/Reassociate/secondary.ll
+++ b/llvm/test/Transforms/Reassociate/secondary.ll
@@ -6,7 +6,7 @@
; CHECK: define
; CHECK-NOT: undef
-; CHECK: %factor = mul i32 %tmp3.neg, 2
+; CHECK: %factor = mul i32 %tmp3, -2
; CHECK-NOT: undef
; CHECK: }
OpenPOWER on IntegriCloud