@@ -246,7 +246,7 @@ define ptr @test10(ptr %a, i64 %n) {
246
246
; ATTRIBUTOR-LABEL: define ptr @test10(
247
247
; ATTRIBUTOR-SAME: ptr nofree readnone [[A:%.*]], i64 [[N:%.*]]) #[[ATTR3:[0-9]+]] {
248
248
; ATTRIBUTOR-NEXT: [[CMP:%.*]] = icmp ne i64 [[N]], 0
249
- ; ATTRIBUTOR-NEXT: call void @llvm.assume(i1 [[CMP]]) #[[ATTR14 :[0-9]+]]
249
+ ; ATTRIBUTOR-NEXT: call void @llvm.assume(i1 [[CMP]]) #[[ATTR13 :[0-9]+]]
250
250
; ATTRIBUTOR-NEXT: [[B:%.*]] = getelementptr inbounds i8, ptr [[A]], i64 [[N]]
251
251
; ATTRIBUTOR-NEXT: ret ptr [[B]]
252
252
;
@@ -338,7 +338,7 @@ define internal void @test13(ptr %a, ptr %b, ptr %c) {
338
338
; FNATTRS-NEXT: ret void
339
339
;
340
340
; ATTRIBUTOR-LABEL: define internal void @test13(
341
- ; ATTRIBUTOR-SAME: ptr nocapture nofree readnone [[A:%.*]], ptr nocapture nofree readnone [[B:%.*]], ptr nocapture nofree readnone [[C:%.*]]) #[[ATTR4:[0-9]+ ]] {
341
+ ; ATTRIBUTOR-SAME: ptr nocapture nofree nonnull readnone [[A:%.*]], ptr nocapture nofree readnone [[B:%.*]], ptr nocapture nofree readnone [[C:%.*]]) #[[ATTR0 ]] {
342
342
; ATTRIBUTOR-NEXT: ret void
343
343
;
344
344
ret void
@@ -382,7 +382,7 @@ define internal ptr @f1(ptr %arg) {
382
382
; FNATTRS-NEXT: ret ptr [[TMP10]]
383
383
;
384
384
; ATTRIBUTOR-LABEL: define internal ptr @f1(
385
- ; ATTRIBUTOR-SAME: ptr nofree readonly [[ARG:%.*]]) #[[ATTR5 :[0-9]+]] {
385
+ ; ATTRIBUTOR-SAME: ptr nofree readonly [[ARG:%.*]]) #[[ATTR4 :[0-9]+]] {
386
386
; ATTRIBUTOR-NEXT: bb:
387
387
; ATTRIBUTOR-NEXT: [[TMP:%.*]] = icmp eq ptr [[ARG]], null
388
388
; ATTRIBUTOR-NEXT: br i1 [[TMP]], label [[BB9:%.*]], label [[BB1:%.*]]
@@ -392,11 +392,11 @@ define internal ptr @f1(ptr %arg) {
392
392
; ATTRIBUTOR-NEXT: br i1 [[TMP3]], label [[BB6:%.*]], label [[BB4:%.*]]
393
393
; ATTRIBUTOR: bb4:
394
394
; ATTRIBUTOR-NEXT: [[TMP5:%.*]] = getelementptr inbounds i32, ptr [[ARG]], i64 1
395
- ; ATTRIBUTOR-NEXT: [[TMP5B:%.*]] = tail call ptr @f3(ptr readonly [[TMP5]]) #[[ATTR15 :[0-9]+]]
395
+ ; ATTRIBUTOR-NEXT: [[TMP5B:%.*]] = tail call ptr @f3(ptr nofree nonnull readonly [[TMP5]]) #[[ATTR14 :[0-9]+]]
396
396
; ATTRIBUTOR-NEXT: [[TMP5C:%.*]] = getelementptr inbounds i32, ptr [[TMP5B]], i64 -1
397
397
; ATTRIBUTOR-NEXT: br label [[BB9]]
398
398
; ATTRIBUTOR: bb6:
399
- ; ATTRIBUTOR-NEXT: [[TMP7:%.*]] = tail call ptr @f2(ptr readonly [[ARG]]) #[[ATTR15 ]]
399
+ ; ATTRIBUTOR-NEXT: [[TMP7:%.*]] = tail call ptr @f2(ptr nofree nonnull readonly [[ARG]]) #[[ATTR14 ]]
400
400
; ATTRIBUTOR-NEXT: ret ptr [[TMP7]]
401
401
; ATTRIBUTOR: bb9:
402
402
; ATTRIBUTOR-NEXT: [[TMP10:%.*]] = phi ptr [ [[TMP5C]], [[BB4]] ], [ inttoptr (i64 4 to ptr), [[BB:%.*]] ]
@@ -436,9 +436,9 @@ define internal ptr @f2(ptr %arg) {
436
436
; FNATTRS-NEXT: ret ptr [[TMP]]
437
437
;
438
438
; ATTRIBUTOR-LABEL: define internal ptr @f2(
439
- ; ATTRIBUTOR-SAME: ptr readonly [[ARG:%.*]]) #[[ATTR5 ]] {
439
+ ; ATTRIBUTOR-SAME: ptr nofree nonnull readonly [[ARG:%.*]]) #[[ATTR4 ]] {
440
440
; ATTRIBUTOR-NEXT: bb:
441
- ; ATTRIBUTOR-NEXT: [[TMP:%.*]] = tail call ptr @f1(ptr readonly [[ARG]]) #[[ATTR15 ]]
441
+ ; ATTRIBUTOR-NEXT: [[TMP:%.*]] = tail call ptr @f1(ptr nofree nonnull readonly [[ARG]]) #[[ATTR14 ]]
442
442
; ATTRIBUTOR-NEXT: ret ptr [[TMP]]
443
443
;
444
444
bb:
@@ -457,9 +457,9 @@ define dso_local noalias ptr @f3(ptr %arg) {
457
457
; FNATTRS-NEXT: ret ptr [[TMP]]
458
458
;
459
459
; ATTRIBUTOR-LABEL: define dso_local noalias ptr @f3(
460
- ; ATTRIBUTOR-SAME: ptr nofree readonly [[ARG:%.*]]) #[[ATTR5 ]] {
460
+ ; ATTRIBUTOR-SAME: ptr nofree readonly [[ARG:%.*]]) #[[ATTR4 ]] {
461
461
; ATTRIBUTOR-NEXT: bb:
462
- ; ATTRIBUTOR-NEXT: [[TMP:%.*]] = call ptr @f1(ptr nofree readonly [[ARG]]) #[[ATTR15 ]]
462
+ ; ATTRIBUTOR-NEXT: [[TMP:%.*]] = call ptr @f1(ptr nofree readonly [[ARG]]) #[[ATTR14 ]]
463
463
; ATTRIBUTOR-NEXT: ret ptr [[TMP]]
464
464
;
465
465
bb:
@@ -508,14 +508,14 @@ define void @f16(ptr %a, ptr %b, i8 %c) {
508
508
; FNATTRS-NEXT: ret void
509
509
;
510
510
; ATTRIBUTOR-LABEL: define void @f16(
511
- ; ATTRIBUTOR-SAME: ptr nonnull [[A:%.*]], ptr [[B:%.*]], i8 [[C:%.*]]) #[[ATTR7 :[0-9]+]] {
511
+ ; ATTRIBUTOR-SAME: ptr nonnull [[A:%.*]], ptr [[B:%.*]], i8 [[C:%.*]]) #[[ATTR6 :[0-9]+]] {
512
512
; ATTRIBUTOR-NEXT: [[CMP:%.*]] = icmp eq i8 [[C]], 0
513
513
; ATTRIBUTOR-NEXT: br i1 [[CMP]], label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]]
514
514
; ATTRIBUTOR: if.then:
515
- ; ATTRIBUTOR-NEXT: tail call void @fun2(ptr nonnull [[A]], ptr nonnull [[B]]) #[[ATTR16 :[0-9]+]]
515
+ ; ATTRIBUTOR-NEXT: tail call void @fun2(ptr nonnull [[A]], ptr nonnull [[B]]) #[[ATTR15 :[0-9]+]]
516
516
; ATTRIBUTOR-NEXT: ret void
517
517
; ATTRIBUTOR: if.else:
518
- ; ATTRIBUTOR-NEXT: tail call void @fun2(ptr nonnull [[A]], ptr [[B]]) #[[ATTR16 ]]
518
+ ; ATTRIBUTOR-NEXT: tail call void @fun2(ptr nonnull [[A]], ptr [[B]]) #[[ATTR15 ]]
519
519
; ATTRIBUTOR-NEXT: ret void
520
520
;
521
521
%cmp = icmp eq i8 %c , 0
@@ -550,17 +550,17 @@ define void @f17(ptr %a, i8 %c) {
550
550
; FNATTRS-NEXT: ret void
551
551
;
552
552
; ATTRIBUTOR-LABEL: define void @f17(
553
- ; ATTRIBUTOR-SAME: ptr nonnull [[A:%.*]], i8 [[C:%.*]]) #[[ATTR7 ]] {
553
+ ; ATTRIBUTOR-SAME: ptr nonnull [[A:%.*]], i8 [[C:%.*]]) #[[ATTR6 ]] {
554
554
; ATTRIBUTOR-NEXT: [[CMP:%.*]] = icmp eq i8 [[C]], 0
555
555
; ATTRIBUTOR-NEXT: br i1 [[CMP]], label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]]
556
556
; ATTRIBUTOR: if.then:
557
- ; ATTRIBUTOR-NEXT: tail call void @fun0() #[[ATTR16 ]]
557
+ ; ATTRIBUTOR-NEXT: tail call void @fun0() #[[ATTR15 ]]
558
558
; ATTRIBUTOR-NEXT: br label [[CONT:%.*]]
559
559
; ATTRIBUTOR: if.else:
560
- ; ATTRIBUTOR-NEXT: tail call void @fun0() #[[ATTR16 ]]
560
+ ; ATTRIBUTOR-NEXT: tail call void @fun0() #[[ATTR15 ]]
561
561
; ATTRIBUTOR-NEXT: br label [[CONT]]
562
562
; ATTRIBUTOR: cont:
563
- ; ATTRIBUTOR-NEXT: tail call void @fun1(ptr nonnull [[A]]) #[[ATTR16 ]]
563
+ ; ATTRIBUTOR-NEXT: tail call void @fun1(ptr nonnull [[A]]) #[[ATTR15 ]]
564
564
; ATTRIBUTOR-NEXT: ret void
565
565
;
566
566
%cmp = icmp eq i8 %c , 0
@@ -611,26 +611,26 @@ define void @f18(ptr %a, ptr %b, i8 %c) {
611
611
; FNATTRS-NEXT: ret void
612
612
;
613
613
; ATTRIBUTOR-LABEL: define void @f18(
614
- ; ATTRIBUTOR-SAME: ptr nonnull [[A:%.*]], ptr [[B:%.*]], i8 [[C:%.*]]) #[[ATTR7 ]] {
614
+ ; ATTRIBUTOR-SAME: ptr nonnull [[A:%.*]], ptr [[B:%.*]], i8 [[C:%.*]]) #[[ATTR6 ]] {
615
615
; ATTRIBUTOR-NEXT: [[CMP1:%.*]] = icmp eq i8 [[C]], 0
616
616
; ATTRIBUTOR-NEXT: br i1 [[CMP1]], label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]]
617
617
; ATTRIBUTOR: if.then:
618
- ; ATTRIBUTOR-NEXT: tail call void @fun0() #[[ATTR16 ]]
618
+ ; ATTRIBUTOR-NEXT: tail call void @fun0() #[[ATTR15 ]]
619
619
; ATTRIBUTOR-NEXT: br label [[CONT:%.*]]
620
620
; ATTRIBUTOR: if.else:
621
- ; ATTRIBUTOR-NEXT: tail call void @fun0() #[[ATTR16 ]]
621
+ ; ATTRIBUTOR-NEXT: tail call void @fun0() #[[ATTR15 ]]
622
622
; ATTRIBUTOR-NEXT: br label [[CONT]]
623
623
; ATTRIBUTOR: cont:
624
624
; ATTRIBUTOR-NEXT: [[CMP2:%.*]] = icmp eq i8 [[C]], 1
625
625
; ATTRIBUTOR-NEXT: br i1 [[CMP2]], label [[CONT_THEN:%.*]], label [[CONT_ELSE:%.*]]
626
626
; ATTRIBUTOR: cont.then:
627
- ; ATTRIBUTOR-NEXT: tail call void @fun1(ptr nonnull [[B]]) #[[ATTR16 ]]
627
+ ; ATTRIBUTOR-NEXT: tail call void @fun1(ptr nonnull [[B]]) #[[ATTR15 ]]
628
628
; ATTRIBUTOR-NEXT: br label [[CONT2:%.*]]
629
629
; ATTRIBUTOR: cont.else:
630
- ; ATTRIBUTOR-NEXT: tail call void @fun0() #[[ATTR16 ]]
630
+ ; ATTRIBUTOR-NEXT: tail call void @fun0() #[[ATTR15 ]]
631
631
; ATTRIBUTOR-NEXT: br label [[CONT2]]
632
632
; ATTRIBUTOR: cont2:
633
- ; ATTRIBUTOR-NEXT: tail call void @fun1(ptr nonnull [[A]]) #[[ATTR16 ]]
633
+ ; ATTRIBUTOR-NEXT: tail call void @fun1(ptr nonnull [[A]]) #[[ATTR15 ]]
634
634
; ATTRIBUTOR-NEXT: ret void
635
635
;
636
636
%cmp1 = icmp eq i8 %c , 0
@@ -674,7 +674,7 @@ define void @f19(ptr %a, ptr %b, i8 %c) {
674
674
; FNATTRS-NEXT: ret void
675
675
;
676
676
; ATTRIBUTOR-LABEL: define void @f19(
677
- ; ATTRIBUTOR-SAME: ptr [[A:%.*]], ptr nonnull [[B:%.*]], i8 [[C:%.*]]) #[[ATTR8 :[0-9]+]] {
677
+ ; ATTRIBUTOR-SAME: ptr [[A:%.*]], ptr nonnull [[B:%.*]], i8 [[C:%.*]]) #[[ATTR7 :[0-9]+]] {
678
678
; ATTRIBUTOR-NEXT: br label [[LOOP_HEADER:%.*]]
679
679
; ATTRIBUTOR: loop.header:
680
680
; ATTRIBUTOR-NEXT: [[CMP2:%.*]] = icmp eq i8 [[C]], 0
@@ -883,7 +883,7 @@ define i8 @parent7(ptr %a) {
883
883
;
884
884
; ATTRIBUTOR-LABEL: define i8 @parent7(
885
885
; ATTRIBUTOR-SAME: ptr nonnull [[A:%.*]]) {
886
- ; ATTRIBUTOR-NEXT: [[RET:%.*]] = call i8 @use1safecall(ptr nonnull [[A]]) #[[ATTR16 ]]
886
+ ; ATTRIBUTOR-NEXT: [[RET:%.*]] = call i8 @use1safecall(ptr nonnull [[A]]) #[[ATTR15 ]]
887
887
; ATTRIBUTOR-NEXT: call void @use1nonnull(ptr nonnull [[A]])
888
888
; ATTRIBUTOR-NEXT: ret i8 [[RET]]
889
889
;
@@ -915,7 +915,7 @@ define i1 @parent8(ptr %a, ptr %bogus1, ptr %b) personality ptr @esfp{
915
915
; FNATTRS-NEXT: unreachable
916
916
;
917
917
; ATTRIBUTOR-LABEL: define i1 @parent8(
918
- ; ATTRIBUTOR-SAME: ptr nonnull [[A:%.*]], ptr nocapture nofree readnone [[BOGUS1:%.*]], ptr nonnull [[B:%.*]]) #[[ATTR8 ]] personality ptr @esfp {
918
+ ; ATTRIBUTOR-SAME: ptr nonnull [[A:%.*]], ptr nocapture nofree readnone [[BOGUS1:%.*]], ptr nonnull [[B:%.*]]) #[[ATTR7 ]] personality ptr @esfp {
919
919
; ATTRIBUTOR-NEXT: entry:
920
920
; ATTRIBUTOR-NEXT: invoke void @use2nonnull(ptr nonnull [[A]], ptr nonnull [[B]])
921
921
; ATTRIBUTOR-NEXT: to label [[CONT:%.*]] unwind label [[EXC:%.*]]
@@ -965,7 +965,7 @@ define ptr @gep1_no_null_opt(ptr %p) #0 {
965
965
; FNATTRS-NEXT: ret ptr [[Q]]
966
966
;
967
967
; ATTRIBUTOR-LABEL: define ptr @gep1_no_null_opt(
968
- ; ATTRIBUTOR-SAME: ptr nofree readnone [[P:%.*]]) #[[ATTR9 :[0-9]+]] {
968
+ ; ATTRIBUTOR-SAME: ptr nofree readnone [[P:%.*]]) #[[ATTR8 :[0-9]+]] {
969
969
; ATTRIBUTOR-NEXT: [[Q:%.*]] = getelementptr inbounds i32, ptr [[P]], i32 1
970
970
; ATTRIBUTOR-NEXT: ret ptr [[Q]]
971
971
;
@@ -1006,8 +1006,8 @@ define internal ptr @g2() {
1006
1006
; FNATTRS-SAME: ) #[[ATTR0]] {
1007
1007
; FNATTRS-NEXT: ret ptr inttoptr (i64 4 to ptr)
1008
1008
;
1009
- ; ATTRIBUTOR-LABEL: define internal ptr @g2(
1010
- ; ATTRIBUTOR-SAME: ) #[[ATTR10:[0-9]+ ]] {
1009
+ ; ATTRIBUTOR-LABEL: define internal nonnull ptr @g2(
1010
+ ; ATTRIBUTOR-SAME: ) #[[ATTR0 ]] {
1011
1011
; ATTRIBUTOR-NEXT: ret ptr inttoptr (i64 4 to ptr)
1012
1012
;
1013
1013
ret ptr inttoptr (i64 4 to ptr )
@@ -1021,7 +1021,7 @@ define ptr @g1() {
1021
1021
;
1022
1022
; ATTRIBUTOR-LABEL: define ptr @g1(
1023
1023
; ATTRIBUTOR-SAME: ) #[[ATTR0]] {
1024
- ; ATTRIBUTOR-NEXT: [[C:%.*]] = call ptr @g2() #[[ATTR10 ]]
1024
+ ; ATTRIBUTOR-NEXT: [[C:%.*]] = call ptr @g2() #[[ATTR16:[0-9]+ ]]
1025
1025
; ATTRIBUTOR-NEXT: ret ptr [[C]]
1026
1026
;
1027
1027
%c = call ptr @g2 ()
@@ -1036,8 +1036,8 @@ define internal void @called_by_weak(ptr %a) {
1036
1036
; FNATTRS-NEXT: ret void
1037
1037
;
1038
1038
; ATTRIBUTOR-LABEL: define internal void @called_by_weak(
1039
- ; ATTRIBUTOR-SAME: ptr nocapture readnone [[A:%.*]]) #[[ATTR11 :[0-9]+]] {
1040
- ; ATTRIBUTOR-NEXT: call void @use_i32_ptr(ptr [[A]])
1039
+ ; ATTRIBUTOR-SAME: ptr nocapture nonnull readnone [[A:%.*]]) #[[ATTR10 :[0-9]+]] {
1040
+ ; ATTRIBUTOR-NEXT: call void @use_i32_ptr(ptr nonnull [[A]]) #[[ATTR17:[0-9]+]]
1041
1041
; ATTRIBUTOR-NEXT: ret void
1042
1042
;
1043
1043
call void @use_i32_ptr (ptr %a )
@@ -1068,8 +1068,8 @@ define internal void @control(ptr dereferenceable(4) %a) {
1068
1068
; FNATTRS-NEXT: ret void
1069
1069
;
1070
1070
; ATTRIBUTOR-LABEL: define internal void @control(
1071
- ; ATTRIBUTOR-SAME: ptr nocapture readnone dereferenceable(4) [[A:%.*]]) #[[ATTR11 ]] {
1072
- ; ATTRIBUTOR-NEXT: call void @use_i32_ptr(ptr [[A]])
1071
+ ; ATTRIBUTOR-SAME: ptr nocapture nonnull readnone dereferenceable(4) [[A:%.*]]) #[[ATTR10 ]] {
1072
+ ; ATTRIBUTOR-NEXT: call void @use_i32_ptr(ptr [[A]]) #[[ATTR17]]
1073
1073
; ATTRIBUTOR-NEXT: ret void
1074
1074
;
1075
1075
call void @use_i32_ptr (ptr %a )
@@ -1083,7 +1083,7 @@ define internal void @naked(ptr dereferenceable(4) %a) naked {
1083
1083
; FNATTRS-NEXT: ret void
1084
1084
;
1085
1085
; ATTRIBUTOR-LABEL: define internal void @naked(
1086
- ; ATTRIBUTOR-SAME: ptr dereferenceable(4) [[A:%.*]]) #[[ATTR12 :[0-9]+]] {
1086
+ ; ATTRIBUTOR-SAME: ptr nonnull dereferenceable(4) [[A:%.*]]) #[[ATTR11 :[0-9]+]] {
1087
1087
; ATTRIBUTOR-NEXT: call void @use_i32_ptr(ptr [[A]])
1088
1088
; ATTRIBUTOR-NEXT: ret void
1089
1089
;
@@ -1098,7 +1098,7 @@ define internal void @optnone(ptr dereferenceable(4) %a) optnone noinline {
1098
1098
; FNATTRS-NEXT: ret void
1099
1099
;
1100
1100
; ATTRIBUTOR-LABEL: define internal void @optnone(
1101
- ; ATTRIBUTOR-SAME: ptr dereferenceable(4) [[A:%.*]]) #[[ATTR13 :[0-9]+]] {
1101
+ ; ATTRIBUTOR-SAME: ptr nonnull dereferenceable(4) [[A:%.*]]) #[[ATTR12 :[0-9]+]] {
1102
1102
; ATTRIBUTOR-NEXT: call void @use_i32_ptr(ptr [[A]])
1103
1103
; ATTRIBUTOR-NEXT: ret void
1104
1104
;
@@ -1135,35 +1135,20 @@ define void @make_live(ptr nonnull dereferenceable(8) %a) {
1135
1135
declare void @h (ptr ) willreturn nounwind
1136
1136
declare i32 @g (ptr ) willreturn nounwind
1137
1137
define i32 @nonnull_exec_ctx_1 (ptr %a , i32 %b ) {
1138
- ; FNATTRS-LABEL: define i32 @nonnull_exec_ctx_1(
1139
- ; FNATTRS-SAME: ptr [[A:%.*]], i32 [[B:%.*]]) #[[ATTR7]] {
1140
- ; FNATTRS-NEXT: en:
1141
- ; FNATTRS-NEXT: [[TMP3:%.*]] = icmp eq i32 [[B]], 0
1142
- ; FNATTRS-NEXT: br i1 [[TMP3]], label [[EX:%.*]], label [[HD:%.*]]
1143
- ; FNATTRS: ex:
1144
- ; FNATTRS-NEXT: [[TMP5:%.*]] = tail call i32 @g(ptr nonnull [[A]])
1145
- ; FNATTRS-NEXT: ret i32 [[TMP5]]
1146
- ; FNATTRS: hd:
1147
- ; FNATTRS-NEXT: [[TMP7:%.*]] = phi i32 [ [[TMP8:%.*]], [[HD]] ], [ 0, [[EN:%.*]] ]
1148
- ; FNATTRS-NEXT: tail call void @h(ptr [[A]])
1149
- ; FNATTRS-NEXT: [[TMP8]] = add nuw i32 [[TMP7]], 1
1150
- ; FNATTRS-NEXT: [[TMP9:%.*]] = icmp eq i32 [[TMP8]], [[B]]
1151
- ; FNATTRS-NEXT: br i1 [[TMP9]], label [[EX]], label [[HD]]
1152
- ;
1153
- ; ATTRIBUTOR-LABEL: define i32 @nonnull_exec_ctx_1(
1154
- ; ATTRIBUTOR-SAME: ptr [[A:%.*]], i32 [[B:%.*]]) #[[ATTR8]] {
1155
- ; ATTRIBUTOR-NEXT: en:
1156
- ; ATTRIBUTOR-NEXT: [[TMP3:%.*]] = icmp eq i32 [[B]], 0
1157
- ; ATTRIBUTOR-NEXT: br i1 [[TMP3]], label [[EX:%.*]], label [[HD:%.*]]
1158
- ; ATTRIBUTOR: ex:
1159
- ; ATTRIBUTOR-NEXT: [[TMP5:%.*]] = tail call i32 @g(ptr nonnull [[A]])
1160
- ; ATTRIBUTOR-NEXT: ret i32 [[TMP5]]
1161
- ; ATTRIBUTOR: hd:
1162
- ; ATTRIBUTOR-NEXT: [[TMP7:%.*]] = phi i32 [ [[TMP8:%.*]], [[HD]] ], [ 0, [[EN:%.*]] ]
1163
- ; ATTRIBUTOR-NEXT: tail call void @h(ptr [[A]])
1164
- ; ATTRIBUTOR-NEXT: [[TMP8]] = add nuw i32 [[TMP7]], 1
1165
- ; ATTRIBUTOR-NEXT: [[TMP9:%.*]] = icmp eq i32 [[TMP8]], [[B]]
1166
- ; ATTRIBUTOR-NEXT: br i1 [[TMP9]], label [[EX]], label [[HD]]
1138
+ ; COMMON-LABEL: define i32 @nonnull_exec_ctx_1(
1139
+ ; COMMON-SAME: ptr [[A:%.*]], i32 [[B:%.*]]) #[[ATTR7:[0-9]+]] {
1140
+ ; COMMON-NEXT: en:
1141
+ ; COMMON-NEXT: [[TMP3:%.*]] = icmp eq i32 [[B]], 0
1142
+ ; COMMON-NEXT: br i1 [[TMP3]], label [[EX:%.*]], label [[HD:%.*]]
1143
+ ; COMMON: ex:
1144
+ ; COMMON-NEXT: [[TMP5:%.*]] = tail call i32 @g(ptr nonnull [[A]])
1145
+ ; COMMON-NEXT: ret i32 [[TMP5]]
1146
+ ; COMMON: hd:
1147
+ ; COMMON-NEXT: [[TMP7:%.*]] = phi i32 [ [[TMP8:%.*]], [[HD]] ], [ 0, [[EN:%.*]] ]
1148
+ ; COMMON-NEXT: tail call void @h(ptr [[A]])
1149
+ ; COMMON-NEXT: [[TMP8]] = add nuw i32 [[TMP7]], 1
1150
+ ; COMMON-NEXT: [[TMP9:%.*]] = icmp eq i32 [[TMP8]], [[B]]
1151
+ ; COMMON-NEXT: br i1 [[TMP9]], label [[EX]], label [[HD]]
1167
1152
;
1168
1153
en:
1169
1154
%tmp3 = icmp eq i32 %b , 0
@@ -1182,39 +1167,22 @@ hd:
1182
1167
}
1183
1168
1184
1169
define i32 @nonnull_exec_ctx_1b (ptr %a , i32 %b ) {
1185
- ; FNATTRS-LABEL: define i32 @nonnull_exec_ctx_1b(
1186
- ; FNATTRS-SAME: ptr [[A:%.*]], i32 [[B:%.*]]) #[[ATTR7]] {
1187
- ; FNATTRS-NEXT: en:
1188
- ; FNATTRS-NEXT: [[TMP3:%.*]] = icmp eq i32 [[B]], 0
1189
- ; FNATTRS-NEXT: br i1 [[TMP3]], label [[EX:%.*]], label [[HD:%.*]]
1190
- ; FNATTRS: ex:
1191
- ; FNATTRS-NEXT: [[TMP5:%.*]] = tail call i32 @g(ptr nonnull [[A]])
1192
- ; FNATTRS-NEXT: ret i32 [[TMP5]]
1193
- ; FNATTRS: hd:
1194
- ; FNATTRS-NEXT: [[TMP7:%.*]] = phi i32 [ [[TMP8:%.*]], [[HD2:%.*]] ], [ 0, [[EN:%.*]] ]
1195
- ; FNATTRS-NEXT: tail call void @h(ptr [[A]])
1196
- ; FNATTRS-NEXT: br label [[HD2]]
1197
- ; FNATTRS: hd2:
1198
- ; FNATTRS-NEXT: [[TMP8]] = add nuw i32 [[TMP7]], 1
1199
- ; FNATTRS-NEXT: [[TMP9:%.*]] = icmp eq i32 [[TMP8]], [[B]]
1200
- ; FNATTRS-NEXT: br i1 [[TMP9]], label [[EX]], label [[HD]]
1201
- ;
1202
- ; ATTRIBUTOR-LABEL: define i32 @nonnull_exec_ctx_1b(
1203
- ; ATTRIBUTOR-SAME: ptr [[A:%.*]], i32 [[B:%.*]]) #[[ATTR8]] {
1204
- ; ATTRIBUTOR-NEXT: en:
1205
- ; ATTRIBUTOR-NEXT: [[TMP3:%.*]] = icmp eq i32 [[B]], 0
1206
- ; ATTRIBUTOR-NEXT: br i1 [[TMP3]], label [[EX:%.*]], label [[HD:%.*]]
1207
- ; ATTRIBUTOR: ex:
1208
- ; ATTRIBUTOR-NEXT: [[TMP5:%.*]] = tail call i32 @g(ptr nonnull [[A]])
1209
- ; ATTRIBUTOR-NEXT: ret i32 [[TMP5]]
1210
- ; ATTRIBUTOR: hd:
1211
- ; ATTRIBUTOR-NEXT: [[TMP7:%.*]] = phi i32 [ [[TMP8:%.*]], [[HD2:%.*]] ], [ 0, [[EN:%.*]] ]
1212
- ; ATTRIBUTOR-NEXT: tail call void @h(ptr [[A]])
1213
- ; ATTRIBUTOR-NEXT: br label [[HD2]]
1214
- ; ATTRIBUTOR: hd2:
1215
- ; ATTRIBUTOR-NEXT: [[TMP8]] = add nuw i32 [[TMP7]], 1
1216
- ; ATTRIBUTOR-NEXT: [[TMP9:%.*]] = icmp eq i32 [[TMP8]], [[B]]
1217
- ; ATTRIBUTOR-NEXT: br i1 [[TMP9]], label [[EX]], label [[HD]]
1170
+ ; COMMON-LABEL: define i32 @nonnull_exec_ctx_1b(
1171
+ ; COMMON-SAME: ptr [[A:%.*]], i32 [[B:%.*]]) #[[ATTR7]] {
1172
+ ; COMMON-NEXT: en:
1173
+ ; COMMON-NEXT: [[TMP3:%.*]] = icmp eq i32 [[B]], 0
1174
+ ; COMMON-NEXT: br i1 [[TMP3]], label [[EX:%.*]], label [[HD:%.*]]
1175
+ ; COMMON: ex:
1176
+ ; COMMON-NEXT: [[TMP5:%.*]] = tail call i32 @g(ptr nonnull [[A]])
1177
+ ; COMMON-NEXT: ret i32 [[TMP5]]
1178
+ ; COMMON: hd:
1179
+ ; COMMON-NEXT: [[TMP7:%.*]] = phi i32 [ [[TMP8:%.*]], [[HD2:%.*]] ], [ 0, [[EN:%.*]] ]
1180
+ ; COMMON-NEXT: tail call void @h(ptr [[A]])
1181
+ ; COMMON-NEXT: br label [[HD2]]
1182
+ ; COMMON: hd2:
1183
+ ; COMMON-NEXT: [[TMP8]] = add nuw i32 [[TMP7]], 1
1184
+ ; COMMON-NEXT: [[TMP9:%.*]] = icmp eq i32 [[TMP8]], [[B]]
1185
+ ; COMMON-NEXT: br i1 [[TMP9]], label [[EX]], label [[HD]]
1218
1186
;
1219
1187
en:
1220
1188
%tmp3 = icmp eq i32 %b , 0
@@ -1252,7 +1220,7 @@ define i32 @nonnull_exec_ctx_2(ptr %a, i32 %b) willreturn nounwind {
1252
1220
; FNATTRS-NEXT: br i1 [[TMP9]], label [[EX]], label [[HD]]
1253
1221
;
1254
1222
; ATTRIBUTOR-LABEL: define i32 @nonnull_exec_ctx_2(
1255
- ; ATTRIBUTOR-SAME: ptr nonnull [[A:%.*]], i32 [[B:%.*]]) #[[ATTR7 ]] {
1223
+ ; ATTRIBUTOR-SAME: ptr nonnull [[A:%.*]], i32 [[B:%.*]]) #[[ATTR6 ]] {
1256
1224
; ATTRIBUTOR-NEXT: en:
1257
1225
; ATTRIBUTOR-NEXT: [[TMP3:%.*]] = icmp eq i32 [[B]], 0
1258
1226
; ATTRIBUTOR-NEXT: br i1 [[TMP3]], label [[EX:%.*]], label [[HD:%.*]]
@@ -1301,7 +1269,7 @@ define i32 @nonnull_exec_ctx_2b(ptr %a, i32 %b) willreturn nounwind {
1301
1269
; FNATTRS-NEXT: br i1 [[TMP9]], label [[EX]], label [[HD]]
1302
1270
;
1303
1271
; ATTRIBUTOR-LABEL: define i32 @nonnull_exec_ctx_2b(
1304
- ; ATTRIBUTOR-SAME: ptr nonnull [[A:%.*]], i32 [[B:%.*]]) #[[ATTR7 ]] {
1272
+ ; ATTRIBUTOR-SAME: ptr nonnull [[A:%.*]], i32 [[B:%.*]]) #[[ATTR6 ]] {
1305
1273
; ATTRIBUTOR-NEXT: en:
1306
1274
; ATTRIBUTOR-NEXT: [[TMP3:%.*]] = icmp eq i32 [[B]], 0
1307
1275
; ATTRIBUTOR-NEXT: br i1 [[TMP3]], label [[EX:%.*]], label [[HD:%.*]]
0 commit comments