@@ -523,20 +523,20 @@ declare void @cold() cold
523
523
524
524
; If loop has single exit and it leads to 'cold' block then edge leading to loop enter
525
525
; should be considered 'cold' as well.
526
- define void @test13 () {
526
+ define void @test13 (i1 %arg ) {
527
527
; CHECK: edge %entry -> %loop probability is 0x078780e3 / 0x80000000 = 5.88%
528
528
; CHECK: edge %entry -> %exit probability is 0x78787f1d / 0x80000000 = 94.12% [HOT edge]
529
529
; CHECK: edge %loop -> %loop probability is 0x7fbe1203 / 0x80000000 = 99.80% [HOT edge]
530
530
; CHECK: edge %loop -> %cold probability is 0x0041edfd / 0x80000000 = 0.20%
531
531
; CHECK: edge %cold -> %exit probability is 0x80000000 / 0x80000000 = 100.00% [HOT edge]
532
532
533
533
entry:
534
- br i1 undef , label %loop , label %exit
534
+ br i1 %arg , label %loop , label %exit
535
535
536
536
loop:
537
537
%i.0 = phi i32 [ 0 , %entry ], [ %inc , %loop ]
538
538
%inc = add nsw i32 %i.0 , 1
539
- br i1 undef , label %loop , label %cold
539
+ br i1 %arg , label %loop , label %cold
540
540
541
541
cold:
542
542
call void @cold ()
@@ -547,7 +547,7 @@ exit:
547
547
}
548
548
549
549
; This is the same case as test13 but with additional loop 'preheader' block.
550
- define void @test14 () {
550
+ define void @test14 (i1 %arg ) {
551
551
; CHECK: edge %entry -> %preheader probability is 0x078780e3 / 0x80000000 = 5.88%
552
552
; CHECK: edge %entry -> %exit probability is 0x78787f1d / 0x80000000 = 94.12% [HOT edge]
553
553
; CHECK: edge %preheader -> %loop probability is 0x80000000 / 0x80000000 = 100.00% [HOT edge]
@@ -556,15 +556,15 @@ define void @test14() {
556
556
; CHECK: edge %cold -> %exit probability is 0x80000000 / 0x80000000 = 100.00% [HOT edge]
557
557
558
558
entry:
559
- br i1 undef , label %preheader , label %exit
559
+ br i1 %arg , label %preheader , label %exit
560
560
561
561
preheader:
562
562
br label %loop
563
563
564
564
loop:
565
565
%i.0 = phi i32 [ 0 , %preheader ], [ %inc , %loop ]
566
566
%inc = add nsw i32 %i.0 , 1
567
- br i1 undef , label %loop , label %cold
567
+ br i1 %arg , label %loop , label %cold
568
568
569
569
cold:
570
570
call void @cold ()
@@ -576,7 +576,7 @@ exit:
576
576
577
577
; If loop has multiple low probability exits then edge leading to loop enter
578
578
; should be considered low probable as well.
579
- define void @test15 () {
579
+ define void @test15 (i1 %arg ) {
580
580
; CHECK: edge %entry -> %loop probability is 0x078780e3 / 0x80000000 = 5.88%
581
581
; CHECK: edge %entry -> %exit probability is 0x78787f1d / 0x80000000 = 94.12% [HOT edge]
582
582
; CHECK: edge %loop -> %cont probability is 0x80000000 / 0x80000000 = 100.00% [HOT edge]
@@ -586,15 +586,15 @@ define void @test15() {
586
586
; CHECK: edge %cold -> %exit probability is 0x80000000 / 0x80000000 = 100.00% [HOT edge]
587
587
588
588
entry:
589
- br i1 undef , label %loop , label %exit
589
+ br i1 %arg , label %loop , label %exit
590
590
591
591
loop:
592
592
%i.0 = phi i32 [ 0 , %entry ], [ %inc , %cont ]
593
593
%inc = add nsw i32 %i.0 , 1
594
- br i1 undef , label %cont , label %unreached
594
+ br i1 %arg , label %cont , label %unreached
595
595
596
596
cont:
597
- br i1 undef , label %loop , label %cold
597
+ br i1 %arg , label %loop , label %cold
598
598
599
599
unreached:
600
600
unreachable
@@ -609,7 +609,7 @@ exit:
609
609
}
610
610
611
611
; This is the same case as test15 but with additional loop 'preheader' block.
612
- define void @test16 () {
612
+ define void @test16 (i1 %arg ) {
613
613
; CHECK: edge %entry -> %preheader probability is 0x80000000 / 0x80000000 = 100.00% [HOT edge]
614
614
; CHECK: edge %preheader -> %loop probability is 0x078780e3 / 0x80000000 = 5.88%
615
615
; CHECK: edge %preheader -> %exit probability is 0x78787f1d / 0x80000000 = 94.12% [HOT edge]
@@ -623,15 +623,15 @@ entry:
623
623
br label %preheader
624
624
625
625
preheader:
626
- br i1 undef , label %loop , label %exit
626
+ br i1 %arg , label %loop , label %exit
627
627
628
628
loop:
629
629
%i.0 = phi i32 [ 0 , %preheader ], [ %inc , %cont ]
630
630
%inc = add nsw i32 %i.0 , 1
631
- br i1 undef , label %cont , label %unreached
631
+ br i1 %arg , label %cont , label %unreached
632
632
633
633
cont:
634
- br i1 undef , label %loop , label %cold
634
+ br i1 %arg , label %loop , label %cold
635
635
636
636
unreached:
637
637
unreachable
@@ -649,7 +649,7 @@ declare void @abort() noreturn
649
649
650
650
; Check that 'preheader' has 50/50 probability since there is one 'normal' exit.
651
651
; Check that exit to 'cold' and 'noreturn' has lower probability than 'normal' exit.
652
- define void @test17 () {
652
+ define void @test17 (i1 %arg ) {
653
653
; CHECK: edge %entry -> %preheader probability is 0x80000000 / 0x80000000 = 100.00% [HOT edge]
654
654
; CHECK: edge %preheader -> %loop probability is 0x40000000 / 0x80000000 = 50.00%
655
655
; CHECK: edge %preheader -> %exit probability is 0x40000000 / 0x80000000 = 50.00%
@@ -664,18 +664,18 @@ entry:
664
664
br label %preheader
665
665
666
666
preheader:
667
- br i1 undef , label %loop , label %exit
667
+ br i1 %arg , label %loop , label %exit
668
668
669
669
loop:
670
670
%i.0 = phi i32 [ 0 , %preheader ], [ %inc , %cont2 ]
671
671
%inc = add nsw i32 %i.0 , 1
672
- br i1 undef , label %cont , label %noreturn
672
+ br i1 %arg , label %cont , label %noreturn
673
673
674
674
cont:
675
- br i1 undef , label %cont2 , label %cold
675
+ br i1 %arg , label %cont2 , label %cold
676
676
677
677
cont2:
678
- br i1 undef , label %loop , label %exit
678
+ br i1 %arg , label %loop , label %exit
679
679
680
680
noreturn:
681
681
call void @abort ()
@@ -692,7 +692,7 @@ exit:
692
692
693
693
; This is case with two loops where one nested into another. Nested loop has
694
694
; low probable exit what encreases robability to take exit in the top level loop.
695
- define void @test18 () {
695
+ define void @test18 (i1 %arg ) {
696
696
; CHECK: edge %entry -> %top.loop probability is 0x80000000 / 0x80000000 = 100.00% [HOT edge]
697
697
; CHECK: edge %top.loop -> %loop probability is 0x546cd4b7 / 0x80000000 = 65.96%
698
698
; CHECK: edge %top.loop -> %exit probability is 0x2b932b49 / 0x80000000 = 34.04%
@@ -705,12 +705,12 @@ entry:
705
705
706
706
top.loop:
707
707
%j.0 = phi i32 [ 0 , %entry ], [ %j.inc , %cold ]
708
- br i1 undef , label %loop , label %exit
708
+ br i1 %arg , label %loop , label %exit
709
709
710
710
loop:
711
711
%i.0 = phi i32 [ %j.0 , %top.loop ], [ %inc , %loop ]
712
712
%inc = add nsw i32 %i.0 , 1
713
- br i1 undef , label %loop , label %cold
713
+ br i1 %arg , label %loop , label %cold
714
714
715
715
cold:
716
716
call void @cold ()
0 commit comments