File: pr65447.ll

package info (click to toggle)
llvm-toolchain-21 1%3A21.1.6-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,245,028 kB
  • sloc: cpp: 7,619,726; ansic: 1,434,018; asm: 1,058,748; python: 252,740; f90: 94,671; objc: 70,685; lisp: 42,813; pascal: 18,401; sh: 8,601; ml: 5,111; perl: 4,720; makefile: 3,675; awk: 3,523; javascript: 2,409; xml: 892; fortran: 770
file content (140 lines) | stat: -rw-r--r-- 5,002 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
; RUN: opt -S -passes=gvn < %s | FileCheck %s

; Make sure deduplicated phi nodes are removed from the VN map.
define i64 @f2(ptr %arg) {
; CHECK-LABEL: define i64 @f2(
; CHECK-SAME: ptr [[ARG:%.*]]) {
; CHECK-NEXT:  BB:
; CHECK-NEXT:    store i1 false, ptr [[ARG]], align 1
; CHECK-NEXT:    br label [[BB2D:%.*]]
; CHECK:       BB2a:
; CHECK-NEXT:    br label [[BB2B:%.*]]
; CHECK:       BB2b:
; CHECK-NEXT:    br label [[BB2C:%.*]]
; CHECK:       BB2c:
; CHECK-NEXT:    [[AZ2:%.*]] = phi i1 [ true, [[BB2B]] ], [ [[AZ:%.*]], [[BB2D]] ]
; CHECK-NEXT:    [[DOTPHI_TRANS_INSERT:%.*]] = sext i1 [[AZ2]] to i64
; CHECK-NEXT:    [[GEP2_PHI_TRANS_INSERT:%.*]] = getelementptr i1, ptr [[ARG]], i64 [[DOTPHI_TRANS_INSERT]]
; CHECK-NEXT:    [[L93_PRE:%.*]] = load i1, ptr [[GEP2_PHI_TRANS_INSERT]], align 1
; CHECK-NEXT:    br label [[BB2D]]
; CHECK:       BB2d:
; CHECK-NEXT:    [[AZ]] = phi i1 [ [[AZ2]], [[BB2C]] ], [ false, [[BB:%.*]] ]
; CHECK-NEXT:    [[L93:%.*]] = phi i1 [ [[L93_PRE]], [[BB2C]] ], [ false, [[BB]] ]
; CHECK-NEXT:    [[TMP0:%.*]] = sext i1 [[AZ]] to i64
; CHECK-NEXT:    [[GEP2:%.*]] = getelementptr i1, ptr [[ARG]], i64 [[TMP0]]
; CHECK-NEXT:    store i1 [[AZ]], ptr [[ARG]], align 2
; CHECK-NEXT:    br i1 [[L93]], label [[BB2C]], label [[BB1E:%.*]]
; CHECK:       BB1e:
; CHECK-NEXT:    br i1 [[AZ]], label [[BB2F:%.*]], label [[BB4:%.*]]
; CHECK:       BB2f:
; CHECK-NEXT:    store i1 true, ptr [[ARG]], align 2
; CHECK-NEXT:    br label [[BB2B]]
; CHECK:       BB4:
; CHECK-NEXT:    br label [[BB4]]
;
BB:
  store i1 false, ptr %arg, align 1
  br label %BB2d

BB2a: ; No predecessors!
  br label %BB2b

BB2b:       ; preds = %BB2f, %BB2a
  br label %BB2c

BB2c:                     ; preds = %BB2d, %BB2b
  %0 = phi i1 [ true, %BB2b ], [ %1, %BB2d ]
  br label %BB2d

BB2d:                              ; preds = %BB2c, %BB
  %1 = phi i1 [ %0, %BB2c ], [ false, %BB ]
  %2 = sext i1 %1 to i64
  %gep2 = getelementptr i1, ptr %arg, i64 %2
  %L93 = load i1, ptr %gep2, align 1
  %Az = load i1, ptr %arg, align 2
  store i1 %1, ptr %arg, align 2
  br i1 %L93, label %BB2c, label %BB1e

BB1e:                                        ; preds = %BB2d
  br i1 %Az, label %BB2f, label %BB4

BB2f:                                ; preds = %BB1e
  store i1 true, ptr %arg, align 2
  br label %BB2b

BB4:                                              ; preds = %BB1e, %BB4
  br label %BB4

; uselistorder directives
  uselistorder label %BB4, { 1, 0 }
}

; Make sure deduplicated phi nodes are removed from the VN map. Make
; sure there is no assert on attempt to use ConstantData use lists.
define i64 @f_null() {
; CHECK-LABEL: define i64 @f_null() {
; CHECK-NEXT:  BB:
; CHECK-NEXT:    store i1 false, ptr null, align 1
; CHECK-NEXT:    br label [[BB2D:%.*]]
; CHECK:       BB2a:
; CHECK-NEXT:    br label [[BB2B:%.*]]
; CHECK:       BB2b:
; CHECK-NEXT:    br label [[BB2C:%.*]]
; CHECK:       BB2c:
; CHECK-NEXT:    [[AZ2:%.*]] = phi i1 [ true, [[BB2B]] ], [ [[AZ:%.*]], [[BB2D]] ]
; CHECK-NEXT:    [[DOTPHI_TRANS_INSERT:%.*]] = sext i1 [[AZ2]] to i64
; CHECK-NEXT:    [[GEP2_PHI_TRANS_INSERT:%.*]] = getelementptr i1, ptr null, i64 [[DOTPHI_TRANS_INSERT]]
; CHECK-NEXT:    [[L93_PRE:%.*]] = load i1, ptr [[GEP2_PHI_TRANS_INSERT]], align 1
; CHECK-NEXT:    br label [[BB2D]]
; CHECK:       BB2d:
; CHECK-NEXT:    [[AZ]] = phi i1 [ [[AZ2]], [[BB2C]] ], [ false, [[BB:%.*]] ]
; CHECK-NEXT:    [[L93:%.*]] = phi i1 [ [[L93_PRE]], [[BB2C]] ], [ false, [[BB]] ]
; CHECK-NEXT:    [[TMP0:%.*]] = sext i1 [[AZ]] to i64
; CHECK-NEXT:    [[GEP2:%.*]] = getelementptr i1, ptr null, i64 [[TMP0]]
; CHECK-NEXT:    store i1 [[AZ]], ptr null, align 2
; CHECK-NEXT:    br i1 [[L93]], label [[BB2C]], label [[BB1E:%.*]]
; CHECK:       BB1e:
; CHECK-NEXT:    br i1 [[AZ]], label [[BB2F:%.*]], label [[BB4:%.*]]
; CHECK:       BB2f:
; CHECK-NEXT:    store i1 true, ptr null, align 2
; CHECK-NEXT:    br label [[BB2B]]
; CHECK:       BB4:
; CHECK-NEXT:    br label [[BB4]]
;
BB:
  store i1 false, ptr null, align 1
  br label %BB2d

BB2a: ; No predecessors!
  br label %BB2b

BB2b:       ; preds = %BB2f, %BB2a
  br label %BB2c

BB2c:                     ; preds = %BB2d, %BB2b
  %0 = phi i1 [ true, %BB2b ], [ %1, %BB2d ]
  br label %BB2d

BB2d:                              ; preds = %BB2c, %BB
  %1 = phi i1 [ %0, %BB2c ], [ false, %BB ]
  %2 = sext i1 %1 to i64
  %gep2 = getelementptr i1, ptr null, i64 %2
  %L93 = load i1, ptr %gep2, align 1
  %Az = load i1, ptr null, align 2
  store i1 %1, ptr null, align 2
  br i1 %L93, label %BB2c, label %BB1e

BB1e:                                        ; preds = %BB2d
  br i1 %Az, label %BB2f, label %BB4

BB2f:                                ; preds = %BB1e
  store i1 true, ptr null, align 2
  br label %BB2b

BB4:                                              ; preds = %BB1e, %BB4
  br label %BB4

; uselistorder directives
  uselistorder label %BB4, { 1, 0 }
}