File tree Expand file tree Collapse file tree 1 file changed +117
-0
lines changed
optvm/src/test/java/com/compilerprogramming/ezlang/compiler Expand file tree Collapse file tree 1 file changed +117
-0
lines changed Original file line number Diff line number Diff line change @@ -3683,4 +3683,121 @@ func main()->Int
3683
3683
L1:
3684
3684
""" , result );
3685
3685
}
3686
+
3687
+ @ Test
3688
+ public void testSSA21 ()
3689
+ {
3690
+ String src = """
3691
+ func eq(a: [Int], b: [Int], n: Int)->Int
3692
+ {
3693
+ var result = 1
3694
+ var i = 0
3695
+ while (i < n)
3696
+ {
3697
+ if (a[i] != b[i])
3698
+ {
3699
+ result = 0
3700
+ break
3701
+ }
3702
+ i = i + 1
3703
+ }
3704
+ return result
3705
+ }
3706
+ """ ;
3707
+ String result = compileSrc (src );
3708
+ Assert .assertEquals ("""
3709
+ func eq
3710
+ Before SSA
3711
+ ==========
3712
+ L0:
3713
+ arg a
3714
+ arg b
3715
+ arg n
3716
+ result = 1
3717
+ i = 0
3718
+ goto L2
3719
+ L2:
3720
+ %t5 = i<n
3721
+ if %t5 goto L3 else goto L4
3722
+ L3:
3723
+ %t6 = a[i]
3724
+ %t7 = b[i]
3725
+ %t8 = %t6!=%t7
3726
+ if %t8 goto L5 else goto L6
3727
+ L5:
3728
+ result = 0
3729
+ goto L4
3730
+ L4:
3731
+ ret result
3732
+ goto L1
3733
+ L1:
3734
+ L6:
3735
+ %t9 = i+1
3736
+ i = %t9
3737
+ goto L2
3738
+ After SSA
3739
+ =========
3740
+ L0:
3741
+ arg a_0
3742
+ arg b_0
3743
+ arg n_0
3744
+ result_0 = 1
3745
+ i_0 = 0
3746
+ goto L2
3747
+ L2:
3748
+ i_1 = phi(i_0, i_2)
3749
+ %t5_0 = i_1<n_0
3750
+ if %t5_0 goto L3 else goto L4
3751
+ L3:
3752
+ %t6_0 = a_0[i_1]
3753
+ %t7_0 = b_0[i_1]
3754
+ %t8_0 = %t6_0!=%t7_0
3755
+ if %t8_0 goto L5 else goto L6
3756
+ L5:
3757
+ result_1 = 0
3758
+ goto L4
3759
+ L4:
3760
+ result_2 = phi(result_0, result_1)
3761
+ ret result_2
3762
+ goto L1
3763
+ L1:
3764
+ L6:
3765
+ %t9_0 = i_1+1
3766
+ i_2 = %t9_0
3767
+ goto L2
3768
+ After exiting SSA
3769
+ =================
3770
+ L0:
3771
+ arg a_0
3772
+ arg b_0
3773
+ arg n_0
3774
+ result_0 = 1
3775
+ i_0 = 0
3776
+ i_1 = i_0
3777
+ goto L2
3778
+ L2:
3779
+ %t5_0 = i_1<n_0
3780
+ result_2 = result_0
3781
+ if %t5_0 goto L3 else goto L4
3782
+ L3:
3783
+ %t6_0 = a_0[i_1]
3784
+ %t7_0 = b_0[i_1]
3785
+ %t8_0 = %t6_0!=%t7_0
3786
+ if %t8_0 goto L5 else goto L6
3787
+ L5:
3788
+ result_1 = 0
3789
+ result_2 = result_1
3790
+ goto L4
3791
+ L4:
3792
+ ret result_2
3793
+ goto L1
3794
+ L1:
3795
+ L6:
3796
+ %t9_0 = i_1+1
3797
+ i_2 = %t9_0
3798
+ i_1 = i_2
3799
+ goto L2
3800
+ """ , result );
3801
+ }
3802
+
3686
3803
}
You can’t perform that action at this time.
0 commit comments