xref: /llvm-project/llvm/test/Transforms/InstSimplify/gv-alloca-cmp.ll (revision e578b3be24fc3986f46942aa1fdbf73ff8d34ace)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
2; RUN: opt < %s -passes=instsimplify -S | FileCheck %s
3
4@gv = global i64 zeroinitializer, align 16
5
6define i1 @cmp_gv_alloca() {
7; CHECK-LABEL: define i1 @cmp_gv_alloca() {
8; CHECK-NEXT:    ret i1 false
9;
10  %alloca = alloca i64, align 8
11  %cmp = icmp eq ptr %alloca, @gv
12  ret i1 %cmp
13}
14
15@gv_externally_init = externally_initialized global i64 zeroinitializer, align 16
16
17define i1 @cmp_gv_alloca_extern_init() {
18; CHECK-LABEL: define i1 @cmp_gv_alloca_extern_init() {
19; CHECK-NEXT:    ret i1 false
20;
21  %alloca = alloca i64, align 8
22  %cmp = icmp eq ptr %alloca, @gv_externally_init
23  ret i1 %cmp
24}
25
26@const_gv = protected addrspace(4) externally_initialized global [4096 x i64] zeroinitializer, align 16
27define i1 @cmp_gv_alloca_cast() {
28; CHECK-LABEL: define i1 @cmp_gv_alloca_cast() {
29; CHECK-NEXT:    ret i1 false
30;
31  %alloca = alloca i64, align 8, addrspace(5)
32  %cast.alloca = addrspacecast ptr addrspace(5) %alloca to ptr
33  %cmp = icmp eq ptr %cast.alloca, addrspacecast (ptr addrspace(4) @const_gv to ptr)
34  ret i1 %cmp
35}
36
37@gv_weak = weak global i64 zeroinitializer, align 16
38
39define i1 @cmp_gv_weak_alloca() {
40; CHECK-LABEL: define i1 @cmp_gv_weak_alloca() {
41; CHECK-NEXT:    ret i1 false
42;
43  %alloca = alloca i64, align 8
44  %cmp = icmp eq ptr %alloca, @gv_weak
45  ret i1 %cmp
46}
47
48%opaque = type opaque
49@gv_unsized = weak global %opaque zeroinitializer, align 16
50
51define i1 @cmp_gv_unsized_alloca() {
52; CHECK-LABEL: define i1 @cmp_gv_unsized_alloca() {
53; CHECK-NEXT:    [[ALLOCA:%.*]] = alloca i64, align 8
54; CHECK-NEXT:    [[CMP:%.*]] = icmp eq ptr [[ALLOCA]], @gv_unsized
55; CHECK-NEXT:    ret i1 [[CMP]]
56;
57  %alloca = alloca i64, align 8
58  %cmp = icmp eq ptr %alloca, @gv_unsized
59  ret i1 %cmp
60}
61