[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / Transforms / GVNHoist / hoist-very-busy.ll
blob44b48fadc112a08664bcae69cb767c1205452498
1 ; RUN: opt -S -passes=gvn-hoist < %s | FileCheck %s
3 %struct.__jmp_buf_tag = type { [8 x i64], i32 }
5 ; Check that hoisting only happens when the expression is very busy.
6 ; CHECK: store
7 ; CHECK: store
9 @test_exit_buf = global %struct.__jmp_buf_tag zeroinitializer
10 @G = global i32 0
12 define void @test_command(i32 %c1) {
13 entry:
14   switch i32 %c1, label %exit [
15     i32 0, label %sw0
16     i32 1, label %sw1
17   ]
19 sw0:
20   store i32 1, ptr @G
21   br label %exit
23 sw1:
24   store i32 1, ptr @G
25   br label %exit
27 exit:
28   call void @longjmp(ptr @test_exit_buf, i32 1) #0
29   unreachable
32 declare void @longjmp(ptr, i32) #0
34 attributes #0 = { noreturn nounwind }
36 ; Check that the store is hoisted.
37 ; CHECK-LABEL: define void @fun(
38 ; CHECK: store
39 ; CHECK-NOT: store
41 define void @fun() {
42 entry:
43   br label %if.then
45 if.then:                                          ; preds = %entry
46   br i1 undef, label %sw0, label %sw1
48 sw0:
49   store i32 1, ptr @G
50   unreachable
52 sw1:
53   store i32 1, ptr @G
54   ret void