summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/NewGVN/int_sideeffect.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Transforms/NewGVN/int_sideeffect.ll')
-rw-r--r--llvm/test/Transforms/NewGVN/int_sideeffect.ll27
1 files changed, 27 insertions, 0 deletions
diff --git a/llvm/test/Transforms/NewGVN/int_sideeffect.ll b/llvm/test/Transforms/NewGVN/int_sideeffect.ll
new file mode 100644
index 00000000000..75a798d6f0a
--- /dev/null
+++ b/llvm/test/Transforms/NewGVN/int_sideeffect.ll
@@ -0,0 +1,27 @@
+; RUN: opt -S < %s -newgvn | FileCheck %s
+
+declare void @llvm.sideeffect()
+
+; Store-to-load forwarding across a @llvm.sideeffect.
+
+; CHECK-LABEL: s2l
+; CHECK-NOT: load
+define float @s2l(float* %p) {
+ store float 0.0, float* %p
+ call void @llvm.sideeffect()
+ %t = load float, float* %p
+ ret float %t
+}
+
+; Redundant load elimination across a @llvm.sideeffect.
+
+; CHECK-LABEL: rle
+; CHECK: load
+; CHECK-NOT: load
+define float @rle(float* %p) {
+ %r = load float, float* %p
+ call void @llvm.sideeffect()
+ %s = load float, float* %p
+ %t = fadd float %r, %s
+ ret float %t
+}
OpenPOWER on IntegriCloud