xref: /llvm-project/llvm/test/Transforms/GVNSink/operand-mismatch.ll (revision 055fb7795aa219a3d274d280ec9129784f169f56)
1ddb90936SSanjay Patel; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
20676acb6SBjorn Pettersson; RUN: opt -passes=gvn-sink -S < %s | FileCheck %s
3ddb90936SSanjay Patel
4ddb90936SSanjay Patel; This would assert/crash because the calls have different numbers of operands:
5ddb90936SSanjay Patel; https://bugs.llvm.org/show_bug.cgi?id=42346
6ddb90936SSanjay Patel
7ddb90936SSanjay Patel%vec = type opaque
8ddb90936SSanjay Patel%map = type { i32 }
9ddb90936SSanjay Patel
10ddb90936SSanjay Pateldefine void @PR42346() {
11ddb90936SSanjay Patel; CHECK-LABEL: @PR42346(
12ddb90936SSanjay Patel; CHECK-NEXT:  entry:
13*055fb779SNikita Popov; CHECK-NEXT:    [[CALL1:%.*]] = call ptr @bar(ptr undef, ptr undef)
14ddb90936SSanjay Patel; CHECK-NEXT:    br label [[EXIT:%.*]]
15ddb90936SSanjay Patel; CHECK:       if:
16*055fb779SNikita Popov; CHECK-NEXT:    [[CALL2:%.*]] = call ptr @baz(ptr undef)
17ddb90936SSanjay Patel; CHECK-NEXT:    br label [[EXIT]]
18ddb90936SSanjay Patel; CHECK:       exit:
19ddb90936SSanjay Patel; CHECK-NEXT:    ret void
20ddb90936SSanjay Patel;
21ddb90936SSanjay Patelentry:
22*055fb779SNikita Popov  %call1 = call ptr @bar(ptr undef, ptr undef)
23ddb90936SSanjay Patel  br label %exit
24ddb90936SSanjay Patel
25ddb90936SSanjay Patelif:
26*055fb779SNikita Popov  %call2 = call ptr @baz(ptr undef)
27ddb90936SSanjay Patel  br label %exit
28ddb90936SSanjay Patel
29ddb90936SSanjay Patelexit:
30ddb90936SSanjay Patel  ret void
31ddb90936SSanjay Patel}
32ddb90936SSanjay Patel
33*055fb779SNikita Popovdeclare ptr @bar(ptr, ptr)
34*055fb779SNikita Popovdeclare ptr @baz(ptr)
35