@@ -73,51 +73,51 @@ target triple = "x86_64-unknown-linux-gnu"
73
73
; CHECK: @switch.table.external_linkage = private unnamed_addr constant [3 x ptr] [ptr @a1, ptr @b1, ptr @c1], align
74
74
75
75
; Lookup table check for integer pointers that have internal linkage
76
- ; CHECK: @reltable. internal_linkage = private unnamed_addr constant [3 x i32]
76
+ ; CHECK: @switch.table. internal_linkage.rel = private unnamed_addr constant [3 x i32]
77
77
; CHECK-SAME: [
78
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @a2 to i64), i64 ptrtoint (ptr @reltable. internal_linkage to i64)) to i32),
79
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @b2 to i64), i64 ptrtoint (ptr @reltable. internal_linkage to i64)) to i32),
80
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @c2 to i64), i64 ptrtoint (ptr @reltable. internal_linkage to i64)) to i32)
78
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @a2 to i64), i64 ptrtoint (ptr @switch.table. internal_linkage.rel to i64)) to i32),
79
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @b2 to i64), i64 ptrtoint (ptr @switch.table. internal_linkage.rel to i64)) to i32),
80
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @c2 to i64), i64 ptrtoint (ptr @switch.table. internal_linkage.rel to i64)) to i32)
81
81
; CHECK-SAME: ], align 4
82
82
83
83
; Relative switch lookup table for strings
84
- ; CHECK: @reltable. string_table = private unnamed_addr constant [3 x i32]
84
+ ; CHECK: @switch.table. string_table.rel = private unnamed_addr constant [3 x i32]
85
85
; CHECK-SAME: [
86
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str to i64), i64 ptrtoint (ptr @reltable. string_table to i64)) to i32),
87
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.1 to i64), i64 ptrtoint (ptr @reltable. string_table to i64)) to i32),
88
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.2 to i64), i64 ptrtoint (ptr @reltable. string_table to i64)) to i32)
86
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str to i64), i64 ptrtoint (ptr @switch.table. string_table.rel to i64)) to i32),
87
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.1 to i64), i64 ptrtoint (ptr @switch.table. string_table.rel to i64)) to i32),
88
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.2 to i64), i64 ptrtoint (ptr @switch.table. string_table.rel to i64)) to i32)
89
89
; CHECK-SAME: ], align 4
90
90
91
91
; Relative switch lookup table for strings with holes, where holes are filled with relative offset to default values
92
- ; CHECK: @reltable. string_table_holes = private unnamed_addr constant [4 x i32]
92
+ ; CHECK: @switch.table. string_table_holes.rel = private unnamed_addr constant [4 x i32]
93
93
; CHECK-SAME: [
94
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str to i64), i64 ptrtoint (ptr @reltable. string_table_holes to i64)) to i32),
95
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.3 to i64), i64 ptrtoint (ptr @reltable. string_table_holes to i64)) to i32),
96
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.2 to i64), i64 ptrtoint (ptr @reltable. string_table_holes to i64)) to i32),
97
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.4 to i64), i64 ptrtoint (ptr @reltable. string_table_holes to i64)) to i32)
94
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str to i64), i64 ptrtoint (ptr @switch.table. string_table_holes.rel to i64)) to i32),
95
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.3 to i64), i64 ptrtoint (ptr @switch.table. string_table_holes.rel to i64)) to i32),
96
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.2 to i64), i64 ptrtoint (ptr @switch.table. string_table_holes.rel to i64)) to i32),
97
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.4 to i64), i64 ptrtoint (ptr @switch.table. string_table_holes.rel to i64)) to i32)
98
98
; CHECK-SAME: ], align 4
99
99
100
100
; Single value check
101
- ; CHECK: @reltable. single_value = private unnamed_addr constant [3 x i32]
101
+ ; CHECK: @switch.table. single_value.rel = private unnamed_addr constant [3 x i32]
102
102
; CHECK-SAME: [
103
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str to i64), i64 ptrtoint (ptr @reltable. single_value to i64)) to i32),
104
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.1 to i64), i64 ptrtoint (ptr @reltable. single_value to i64)) to i32),
105
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.2 to i64), i64 ptrtoint (ptr @reltable. single_value to i64)) to i32)
103
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str to i64), i64 ptrtoint (ptr @switch.table. single_value.rel to i64)) to i32),
104
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.1 to i64), i64 ptrtoint (ptr @switch.table. single_value.rel to i64)) to i32),
105
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.2 to i64), i64 ptrtoint (ptr @switch.table. single_value.rel to i64)) to i32)
106
106
; CHECK-SAME: ], align 4
107
107
;
108
108
109
109
; Relative lookup table for the loop hoist check test
110
- ; CHECK: @reltable.loop_hoist = internal unnamed_addr constant [2 x i32]
110
+ ; CHECK: @table.rel = internal unnamed_addr constant [2 x i32]
111
111
; CHECK-SAME: [
112
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.8 to i64), i64 ptrtoint (ptr @reltable.loop_hoist to i64)) to i32),
113
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.9 to i64), i64 ptrtoint (ptr @reltable.loop_hoist to i64)) to i32)
112
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.8 to i64), i64 ptrtoint (ptr @table.rel to i64)) to i32),
113
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.9 to i64), i64 ptrtoint (ptr @table.rel to i64)) to i32)
114
114
; CHECK-SAME: ], align 4
115
115
116
116
; Relative look up table for the test where gep is not immediately followed by a load check
117
- ; CHECK: @reltable.gep_is_not_imm_followed_by_load = internal unnamed_addr constant [2 x i32]
117
+ ; CHECK: @table2.rel = internal unnamed_addr constant [2 x i32]
118
118
; CHECK-SAME: [
119
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.8 to i64), i64 ptrtoint (ptr @reltable.gep_is_not_imm_followed_by_load to i64)) to i32),
120
- ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.9 to i64), i64 ptrtoint (ptr @reltable.gep_is_not_imm_followed_by_load to i64)) to i32)
119
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.8 to i64), i64 ptrtoint (ptr @table2.rel to i64)) to i32),
120
+ ; CHECK-SAME: i32 trunc (i64 sub (i64 ptrtoint (ptr @.str.9 to i64), i64 ptrtoint (ptr @table2.rel to i64)) to i32)
121
121
; CHECK-SAME: ], align 4
122
122
123
123
; Lookup table check for integer pointers that have external linkage
@@ -154,7 +154,7 @@ define ptr @internal_linkage(i32 %cond) {
154
154
; CHECK-NEXT: br i1 [[TMP0]], label [[SWITCH_LOOKUP:%.*]], label [[RETURN:%.*]]
155
155
; CHECK: switch.lookup:
156
156
; CHECK-NEXT: [[RELTABLE_SHIFT:%.*]] = shl i32 %cond, 2
157
- ; CHECK-NEXT: [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i32(ptr @reltable. internal_linkage, i32 [[RELTABLE_SHIFT]])
157
+ ; CHECK-NEXT: [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i32(ptr @switch.table. internal_linkage.rel , i32 [[RELTABLE_SHIFT]])
158
158
; CHECK-NEXT: ret ptr [[RELTABLE_INTRINSIC]]
159
159
; CHECK: return:
160
160
; CHECK-NEXT: ret ptr @d2
@@ -180,7 +180,7 @@ define ptr @string_table(i32 %cond) {
180
180
; CHECK-NEXT: br i1 [[TMP0]], label [[SWITCH_LOOKUP:%.*]], label [[RETURN:%.*]]
181
181
; CHECK: switch.lookup:
182
182
; CHECK-NEXT: [[RELTABLE_SHIFT:%.*]] = shl i32 %cond, 2
183
- ; CHECK-NEXT: [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i32(ptr @reltable. string_table, i32 [[RELTABLE_SHIFT]])
183
+ ; CHECK-NEXT: [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i32(ptr @switch.table. string_table.rel , i32 [[RELTABLE_SHIFT]])
184
184
; CHECK-NEXT: ret ptr [[RELTABLE_INTRINSIC]]
185
185
; CHECK: return:
186
186
; CHECK-NEXT: ret ptr @.str.3
@@ -206,7 +206,7 @@ define ptr @string_table_holes(i32 %cond) {
206
206
; CHECK-NEXT: br i1 [[TMP0]], label [[SWITCH_LOOKUP:%.*]], label [[RETURN:%.*]]
207
207
; CHECK: switch.lookup:
208
208
; CHECK-NEXT: [[RELTABLE_SHIFT:%.*]] = shl i32 [[COND]], 2
209
- ; CHECK-NEXT: [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i32(ptr @reltable. string_table_holes, i32 [[RELTABLE_SHIFT]])
209
+ ; CHECK-NEXT: [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i32(ptr @switch.table. string_table_holes.rel , i32 [[RELTABLE_SHIFT]])
210
210
; CHECK-NEXT: ret ptr [[RELTABLE_INTRINSIC]]
211
211
; CHECK: return:
212
212
; CHECK-NEXT: ret ptr @.str.3
@@ -235,7 +235,7 @@ define void @single_value(i32 %cond) {
235
235
; CHECK-NEXT: br i1 [[TMP0]], label [[SWITCH_LOOKUP:%.*]], label [[RETURN:%.*]]
236
236
; CHECK: switch.lookup:
237
237
; CHECK-NEXT: [[RELTABLE_SHIFT:%.*]] = shl i32 [[COND]], 2
238
- ; CHECK-NEXT: [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i32(ptr @reltable. single_value, i32 [[RELTABLE_SHIFT]])
238
+ ; CHECK-NEXT: [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i32(ptr @switch.table. single_value.rel , i32 [[RELTABLE_SHIFT]])
239
239
; CHECK: sw.epilog:
240
240
; CHECK-NEXT: [[STR1:%.*]] = phi ptr [ @.str.5, %entry ], [ @.str.7, %switch.lookup ]
241
241
; CHECK-NEXT: [[STR2:%.*]] = phi ptr [ @.str.6, %entry ], [ [[RELTABLE_INTRINSIC]], [[SWITCH_LOOKUP]] ]
@@ -265,7 +265,7 @@ define ptr @user_defined_lookup_table(i32 %cond) {
265
265
; CHECK: cond.false:
266
266
; CHECK-NEXT: [[IDX_PROM:%.*]] = sext i32 [[COND]] to i64
267
267
; CHECK-NEXT: [[RELTABLE_SHIFT:%.*]] = shl i64 [[IDX_PROM]], 2
268
- ; CHECK-NEXT: [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i64(ptr @reltable. user_defined_lookup_table, i64 [[RELTABLE_SHIFT]])
268
+ ; CHECK-NEXT: [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i64(ptr @user_defined_lookup_table.table.rel , i64 [[RELTABLE_SHIFT]])
269
269
; CHECK-NEXT: br label %cond.end
270
270
; CHECK: cond.end:
271
271
; CHECK-NEXT: [[COND1:%.*]] = phi ptr [ [[RELTABLE_INTRINSIC]], %cond.false ], [ @.str.3, %entry ]
@@ -296,7 +296,7 @@ define ptr @loop_hoist(i32 %x) {
296
296
; CHECK-NEXT: [[RELTABLE_SHIFT:%.*]] = shl i32 [[X:%.*]], 2
297
297
; CHECK-NEXT: br i1 [[TMP0]], label %if.done, label %if.false
298
298
; CHECK: if.false:
299
- ; CHECK-NEXT: [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i32(ptr @reltable.loop_hoist , i32 [[RELTABLE_SHIFT]])
299
+ ; CHECK-NEXT: [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i32(ptr @table.rel , i32 [[RELTABLE_SHIFT]])
300
300
; CHECK-NEXT: br label %if.done
301
301
; CHECK: if.done:
302
302
; CHECK-NEXT: [[TMP2:%.*]] = phi ptr [ @.str.10, %entry ], [ [[RELTABLE_INTRINSIC]], %if.false ]
@@ -327,7 +327,7 @@ define ptr @gep_is_not_imm_followed_by_load(i32 %x) {
327
327
; CHECK: entry:
328
328
; CHECK-NEXT: [[RELTABLE_SHIFT:%.*]] = shl i32 [[X:%.*]], 2
329
329
; CHECK-NEXT: call void @may_not_return()
330
- ; CHECK-NEXT: [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i32(ptr @reltable.gep_is_not_imm_followed_by_load , i32 [[RELTABLE_SHIFT]])
330
+ ; CHECK-NEXT: [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i32(ptr @table2.rel , i32 [[RELTABLE_SHIFT]])
331
331
; CHECK-NEXT: ret ptr [[RELTABLE_INTRINSIC]]
332
332
;
333
333
entry:
0 commit comments