@@ -242,6 +242,8 @@ define void @assume_1b_nr(i1 %arg, i1 %cond) norecurse {
242
242
; CHECK: Function Attrs: inaccessiblememonly nofree norecurse nosync nounwind willreturn
243
243
; CHECK-LABEL: define {{[^@]+}}@assume_1b_nr
244
244
; CHECK-SAME: (i1 [[ARG:%.*]], i1 [[COND:%.*]]) #[[ATTR3]] {
245
+ ; CHECK-NEXT: [[STACK:%.*]] = alloca i1, align 1
246
+ ; CHECK-NEXT: store i1 [[ARG]], i1* [[STACK]], align 1
245
247
; CHECK-NEXT: call void @llvm.assume(i1 noundef [[ARG]]) #[[ATTR4]]
246
248
; CHECK-NEXT: br i1 [[COND]], label [[T:%.*]], label [[F:%.*]]
247
249
; CHECK: t:
@@ -303,13 +305,18 @@ define void @assume_2b_nr(i1 %arg, i1 %cond) norecurse {
303
305
; CHECK: Function Attrs: inaccessiblememonly nofree norecurse nosync nounwind willreturn
304
306
; CHECK-LABEL: define {{[^@]+}}@assume_2b_nr
305
307
; CHECK-SAME: (i1 [[ARG:%.*]], i1 [[COND:%.*]]) #[[ATTR3]] {
308
+ ; CHECK-NEXT: [[STACK:%.*]] = alloca i1, align 1
309
+ ; CHECK-NEXT: store i1 [[ARG]], i1* [[STACK]], align 1
306
310
; CHECK-NEXT: br i1 [[COND]], label [[T:%.*]], label [[F:%.*]]
307
311
; CHECK: t:
312
+ ; CHECK-NEXT: store i1 true, i1* [[STACK]], align 1
308
313
; CHECK-NEXT: br label [[M:%.*]]
309
314
; CHECK: f:
315
+ ; CHECK-NEXT: store i1 false, i1* [[STACK]], align 1
310
316
; CHECK-NEXT: br label [[M]]
311
317
; CHECK: m:
312
- ; CHECK-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR4]]
318
+ ; CHECK-NEXT: [[L:%.*]] = load i1, i1* [[STACK]], align 1
319
+ ; CHECK-NEXT: call void @llvm.assume(i1 noundef [[L]]) #[[ATTR4]]
313
320
; CHECK-NEXT: ret void
314
321
;
315
322
%stack = alloca i1
@@ -375,7 +382,8 @@ define i1 @assume_4_nr(i1 %arg, i1 %cond) norecurse {
375
382
; CHECK-NEXT: store i1 false, i1* [[STACK]], align 1
376
383
; CHECK-NEXT: br label [[M]]
377
384
; CHECK: m:
378
- ; CHECK-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR4]]
385
+ ; CHECK-NEXT: [[L:%.*]] = load i1, i1* [[STACK]], align 1
386
+ ; CHECK-NEXT: call void @llvm.assume(i1 noundef [[L]]) #[[ATTR4]]
379
387
; CHECK-NEXT: [[R:%.*]] = call i1 @readI1p(i1* noalias nocapture nofree noundef nonnull readonly dereferenceable(1) [[STACK]]) #[[ATTR5]]
380
388
; CHECK-NEXT: ret i1 [[R]]
381
389
;
@@ -405,14 +413,17 @@ define i1 @assume_5_nr(i1 %arg, i1 %cond) norecurse {
405
413
; IS________OPM-NEXT: br i1 [[COND]], label [[T:%.*]], label [[F:%.*]]
406
414
; IS________OPM: t:
407
415
; IS________OPM-NEXT: store i1 true, i1* [[STACK]], align 1
408
- ; IS________OPM-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR4]]
416
+ ; IS________OPM-NEXT: [[L2:%.*]] = load i1, i1* [[STACK]], align 1
417
+ ; IS________OPM-NEXT: call void @llvm.assume(i1 noundef [[L2]]) #[[ATTR4]]
409
418
; IS________OPM-NEXT: br label [[M:%.*]]
410
419
; IS________OPM: f:
411
420
; IS________OPM-NEXT: store i1 false, i1* [[STACK]], align 1
412
- ; IS________OPM-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR4]]
421
+ ; IS________OPM-NEXT: [[L3:%.*]] = load i1, i1* [[STACK]], align 1
422
+ ; IS________OPM-NEXT: call void @llvm.assume(i1 noundef [[L3]]) #[[ATTR4]]
413
423
; IS________OPM-NEXT: br label [[M]]
414
424
; IS________OPM: m:
415
- ; IS________OPM-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR4]]
425
+ ; IS________OPM-NEXT: [[L4:%.*]] = load i1, i1* [[STACK]], align 1
426
+ ; IS________OPM-NEXT: call void @llvm.assume(i1 noundef [[L4]]) #[[ATTR4]]
416
427
; IS________OPM-NEXT: [[R:%.*]] = call i1 @readI1p(i1* noalias nocapture nofree noundef nonnull readonly dereferenceable(1) [[STACK]]) #[[ATTR5]]
417
428
; IS________OPM-NEXT: ret i1 [[R]]
418
429
;
@@ -432,7 +443,8 @@ define i1 @assume_5_nr(i1 %arg, i1 %cond) norecurse {
432
443
; IS________NPM-NEXT: call void @llvm.assume(i1 noundef false) #[[ATTR4]]
433
444
; IS________NPM-NEXT: br label [[M]]
434
445
; IS________NPM: m:
435
- ; IS________NPM-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR4]]
446
+ ; IS________NPM-NEXT: [[L4:%.*]] = load i1, i1* [[STACK]], align 1
447
+ ; IS________NPM-NEXT: call void @llvm.assume(i1 noundef [[L4]]) #[[ATTR4]]
436
448
; IS________NPM-NEXT: [[R:%.*]] = call i1 @readI1p(i1* noalias nocapture nofree noundef nonnull readonly dereferenceable(1) [[STACK]]) #[[ATTR5]]
437
449
; IS________NPM-NEXT: ret i1 [[R]]
438
450
;
@@ -472,10 +484,12 @@ define i1 @assume_5c_nr(i1 %cond) norecurse {
472
484
; IS________OPM-NEXT: br label [[M:%.*]]
473
485
; IS________OPM: f:
474
486
; IS________OPM-NEXT: store i1 false, i1* [[STACK]], align 1
475
- ; IS________OPM-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR4]]
487
+ ; IS________OPM-NEXT: [[L3:%.*]] = load i1, i1* [[STACK]], align 1
488
+ ; IS________OPM-NEXT: call void @llvm.assume(i1 noundef [[L3]]) #[[ATTR4]]
476
489
; IS________OPM-NEXT: br label [[M]]
477
490
; IS________OPM: m:
478
- ; IS________OPM-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR4]]
491
+ ; IS________OPM-NEXT: [[L4:%.*]] = load i1, i1* [[STACK]], align 1
492
+ ; IS________OPM-NEXT: call void @llvm.assume(i1 noundef [[L4]]) #[[ATTR4]]
479
493
; IS________OPM-NEXT: [[R:%.*]] = call i1 @readI1p(i1* noalias nocapture nofree noundef nonnull readonly dereferenceable(1) [[STACK]]) #[[ATTR5]]
480
494
; IS________OPM-NEXT: ret i1 [[R]]
481
495
;
@@ -495,7 +509,8 @@ define i1 @assume_5c_nr(i1 %cond) norecurse {
495
509
; IS________NPM-NEXT: call void @llvm.assume(i1 noundef false) #[[ATTR4]]
496
510
; IS________NPM-NEXT: br label [[M]]
497
511
; IS________NPM: m:
498
- ; IS________NPM-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR4]]
512
+ ; IS________NPM-NEXT: [[L4:%.*]] = load i1, i1* [[STACK]], align 1
513
+ ; IS________NPM-NEXT: call void @llvm.assume(i1 noundef [[L4]]) #[[ATTR4]]
499
514
; IS________NPM-NEXT: [[R:%.*]] = call i1 @readI1p(i1* noalias nocapture nofree noundef nonnull readonly dereferenceable(1) [[STACK]]) #[[ATTR5]]
500
515
; IS________NPM-NEXT: ret i1 [[R]]
501
516
;
@@ -733,6 +748,8 @@ define void @assume_1b(i1 %arg, i1 %cond) {
733
748
; CHECK: Function Attrs: inaccessiblememonly nofree norecurse nosync nounwind willreturn
734
749
; CHECK-LABEL: define {{[^@]+}}@assume_1b
735
750
; CHECK-SAME: (i1 [[ARG:%.*]], i1 [[COND:%.*]]) #[[ATTR3]] {
751
+ ; CHECK-NEXT: [[STACK:%.*]] = alloca i1, align 1
752
+ ; CHECK-NEXT: store i1 [[ARG]], i1* [[STACK]], align 1
736
753
; CHECK-NEXT: call void @llvm.assume(i1 noundef [[ARG]]) #[[ATTR4]]
737
754
; CHECK-NEXT: br i1 [[COND]], label [[T:%.*]], label [[F:%.*]]
738
755
; CHECK: t:
@@ -794,13 +811,18 @@ define void @assume_2b(i1 %arg, i1 %cond) {
794
811
; CHECK: Function Attrs: inaccessiblememonly nofree norecurse nosync nounwind willreturn
795
812
; CHECK-LABEL: define {{[^@]+}}@assume_2b
796
813
; CHECK-SAME: (i1 [[ARG:%.*]], i1 [[COND:%.*]]) #[[ATTR3]] {
814
+ ; CHECK-NEXT: [[STACK:%.*]] = alloca i1, align 1
815
+ ; CHECK-NEXT: store i1 [[ARG]], i1* [[STACK]], align 1
797
816
; CHECK-NEXT: br i1 [[COND]], label [[T:%.*]], label [[F:%.*]]
798
817
; CHECK: t:
818
+ ; CHECK-NEXT: store i1 true, i1* [[STACK]], align 1
799
819
; CHECK-NEXT: br label [[M:%.*]]
800
820
; CHECK: f:
821
+ ; CHECK-NEXT: store i1 false, i1* [[STACK]], align 1
801
822
; CHECK-NEXT: br label [[M]]
802
823
; CHECK: m:
803
- ; CHECK-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR4]]
824
+ ; CHECK-NEXT: [[L:%.*]] = load i1, i1* [[STACK]], align 1
825
+ ; CHECK-NEXT: call void @llvm.assume(i1 noundef [[L]]) #[[ATTR4]]
804
826
; CHECK-NEXT: ret void
805
827
;
806
828
%stack = alloca i1
@@ -866,7 +888,8 @@ define i1 @assume_4(i1 %arg, i1 %cond) {
866
888
; CHECK-NEXT: store i1 false, i1* [[STACK]], align 1
867
889
; CHECK-NEXT: br label [[M]]
868
890
; CHECK: m:
869
- ; CHECK-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR4]]
891
+ ; CHECK-NEXT: [[L:%.*]] = load i1, i1* [[STACK]], align 1
892
+ ; CHECK-NEXT: call void @llvm.assume(i1 noundef [[L]]) #[[ATTR4]]
870
893
; CHECK-NEXT: [[R:%.*]] = call i1 @readI1p(i1* noalias nocapture nofree noundef nonnull readonly dereferenceable(1) [[STACK]]) #[[ATTR5]]
871
894
; CHECK-NEXT: ret i1 [[R]]
872
895
;
@@ -896,14 +919,17 @@ define i1 @assume_5(i1 %arg, i1 %cond) {
896
919
; CHECK-NEXT: br i1 [[COND]], label [[T:%.*]], label [[F:%.*]]
897
920
; CHECK: t:
898
921
; CHECK-NEXT: store i1 true, i1* [[STACK]], align 1
899
- ; CHECK-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR4]]
922
+ ; CHECK-NEXT: [[L2:%.*]] = load i1, i1* [[STACK]], align 1
923
+ ; CHECK-NEXT: call void @llvm.assume(i1 noundef [[L2]]) #[[ATTR4]]
900
924
; CHECK-NEXT: br label [[M:%.*]]
901
925
; CHECK: f:
902
926
; CHECK-NEXT: store i1 false, i1* [[STACK]], align 1
903
- ; CHECK-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR4]]
927
+ ; CHECK-NEXT: [[L3:%.*]] = load i1, i1* [[STACK]], align 1
928
+ ; CHECK-NEXT: call void @llvm.assume(i1 noundef [[L3]]) #[[ATTR4]]
904
929
; CHECK-NEXT: br label [[M]]
905
930
; CHECK: m:
906
- ; CHECK-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR4]]
931
+ ; CHECK-NEXT: [[L4:%.*]] = load i1, i1* [[STACK]], align 1
932
+ ; CHECK-NEXT: call void @llvm.assume(i1 noundef [[L4]]) #[[ATTR4]]
907
933
; CHECK-NEXT: [[R:%.*]] = call i1 @readI1p(i1* noalias nocapture nofree noundef nonnull readonly dereferenceable(1) [[STACK]]) #[[ATTR5]]
908
934
; CHECK-NEXT: ret i1 [[R]]
909
935
;
@@ -943,10 +969,12 @@ define i1 @assume_5c(i1 %cond) {
943
969
; CHECK-NEXT: br label [[M:%.*]]
944
970
; CHECK: f:
945
971
; CHECK-NEXT: store i1 false, i1* [[STACK]], align 1
946
- ; CHECK-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR4]]
972
+ ; CHECK-NEXT: [[L3:%.*]] = load i1, i1* [[STACK]], align 1
973
+ ; CHECK-NEXT: call void @llvm.assume(i1 noundef [[L3]]) #[[ATTR4]]
947
974
; CHECK-NEXT: br label [[M]]
948
975
; CHECK: m:
949
- ; CHECK-NEXT: call void @llvm.assume(i1 noundef true) #[[ATTR4]]
976
+ ; CHECK-NEXT: [[L4:%.*]] = load i1, i1* [[STACK]], align 1
977
+ ; CHECK-NEXT: call void @llvm.assume(i1 noundef [[L4]]) #[[ATTR4]]
950
978
; CHECK-NEXT: [[R:%.*]] = call i1 @readI1p(i1* noalias nocapture nofree noundef nonnull readonly dereferenceable(1) [[STACK]]) #[[ATTR5]]
951
979
; CHECK-NEXT: ret i1 [[R]]
952
980
;
0 commit comments