summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2019-06-21 15:17:24 +0000
committerSanjay Patel <spatel@rotateright.com>2019-06-21 15:17:24 +0000
commitddb9093684062b6552b338ff754c674e79a55826 (patch)
treefacb10df7bf9ef0e646e987b6e6b5ced7aacfed5 /llvm/test/Transforms
parente0eb66bbff5e4307c54e4f5c52e711b4b1b05126 (diff)
downloadbcm5719-llvm-ddb9093684062b6552b338ff754c674e79a55826.tar.gz
bcm5719-llvm-ddb9093684062b6552b338ff754c674e79a55826.zip
[GVNSink] prevent crashing on mismatched instructions (PR42346)
Patch based on suggestion by James Molloy (@jmolloy) in: https://bugs.llvm.org/show_bug.cgi?id=42346 llvm-svn: 364062
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/GVNSink/operand-mismatch.ll34
1 files changed, 34 insertions, 0 deletions
diff --git a/llvm/test/Transforms/GVNSink/operand-mismatch.ll b/llvm/test/Transforms/GVNSink/operand-mismatch.ll
new file mode 100644
index 00000000000..2ca45cb895b
--- /dev/null
+++ b/llvm/test/Transforms/GVNSink/operand-mismatch.ll
@@ -0,0 +1,34 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -gvn-sink -S < %s | FileCheck %s
+
+; This would assert/crash because the calls have different numbers of operands:
+; https://bugs.llvm.org/show_bug.cgi?id=42346
+
+%vec = type opaque
+%map = type { i32 }
+
+define void @PR42346() {
+; CHECK-LABEL: @PR42346(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[CALL1:%.*]] = call %vec* @bar(%map* undef, %vec* (%map*)* undef)
+; CHECK-NEXT: br label [[EXIT:%.*]]
+; CHECK: if:
+; CHECK-NEXT: [[CALL2:%.*]] = call %vec* @baz(%map* undef)
+; CHECK-NEXT: br label [[EXIT]]
+; CHECK: exit:
+; CHECK-NEXT: ret void
+;
+entry:
+ %call1 = call %vec* @bar(%map* undef, %vec* (%map*)* undef)
+ br label %exit
+
+if:
+ %call2 = call %vec* @baz(%map* undef)
+ br label %exit
+
+exit:
+ ret void
+}
+
+declare %vec* @bar(%map*, %vec* (%map*)*)
+declare %vec* @baz(%map*)
OpenPOWER on IntegriCloud