@@ -17805,6 +17805,159 @@ ir.cpp:
17805
17805
# 2478| v2478_6(void) = AliasedUse : ~m2480_20
17806
17806
# 2478| v2478_7(void) = ExitFunction :
17807
17807
17808
+ # 2484| void destructor_without_block(bool)
17809
+ # 2484| Block 0
17810
+ # 2484| v2484_1(void) = EnterFunction :
17811
+ # 2484| m2484_2(unknown) = AliasedDefinition :
17812
+ # 2484| m2484_3(unknown) = InitializeNonLocal :
17813
+ # 2484| m2484_4(unknown) = Chi : total:m2484_2, partial:m2484_3
17814
+ # 2484| r2484_5(glval<bool>) = VariableAddress[b] :
17815
+ # 2484| m2484_6(bool) = InitializeParameter[b] : &:r2484_5
17816
+ # 2486| r2486_1(glval<bool>) = VariableAddress[b] :
17817
+ # 2486| r2486_2(bool) = Load[b] : &:r2486_1, m2484_6
17818
+ # 2486| v2486_3(void) = ConditionalBranch : r2486_2
17819
+ #-----| False -> Block 2
17820
+ #-----| True -> Block 1
17821
+
17822
+ # 2487| Block 1
17823
+ # 2487| r2487_1(glval<ClassWithDestructor>) = VariableAddress[c] :
17824
+ # 2487| m2487_2(ClassWithDestructor) = Uninitialized[c] : &:r2487_1
17825
+ # 2487| r2487_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
17826
+ # 2487| v2487_4(void) = Call[ClassWithDestructor] : func:r2487_3, this:r2487_1
17827
+ # 2487| m2487_5(unknown) = ^CallSideEffect : ~m2484_4
17828
+ # 2487| m2487_6(unknown) = Chi : total:m2484_4, partial:m2487_5
17829
+ # 2487| m2487_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2487_1
17830
+ # 2487| m2487_8(ClassWithDestructor) = Chi : total:m2487_2, partial:m2487_7
17831
+ #-----| r0_1(glval<ClassWithDestructor>) = VariableAddress[c] :
17832
+ #-----| r0_2(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
17833
+ #-----| v0_3(void) = Call[~ClassWithDestructor] : func:r0_2, this:r0_1
17834
+ #-----| m0_4(unknown) = ^CallSideEffect : ~m2487_6
17835
+ #-----| m0_5(unknown) = Chi : total:m2487_6, partial:m0_4
17836
+ #-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_1, m2487_8
17837
+ #-----| m0_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r0_1
17838
+ #-----| m0_8(ClassWithDestructor) = Chi : total:m2487_8, partial:m0_7
17839
+ #-----| Goto -> Block 2
17840
+
17841
+ # 2489| Block 2
17842
+ # 2489| m2489_1(unknown) = Phi : from 0:~m2484_4, from 1:~m0_5
17843
+ # 2489| r2489_2(glval<bool>) = VariableAddress[b] :
17844
+ # 2489| r2489_3(bool) = Load[b] : &:r2489_2, m2484_6
17845
+ # 2489| v2489_4(void) = ConditionalBranch : r2489_3
17846
+ #-----| False -> Block 4
17847
+ #-----| True -> Block 3
17848
+
17849
+ # 2490| Block 3
17850
+ # 2490| r2490_1(glval<ClassWithDestructor>) = VariableAddress[d] :
17851
+ # 2490| m2490_2(ClassWithDestructor) = Uninitialized[d] : &:r2490_1
17852
+ # 2490| r2490_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
17853
+ # 2490| v2490_4(void) = Call[ClassWithDestructor] : func:r2490_3, this:r2490_1
17854
+ # 2490| m2490_5(unknown) = ^CallSideEffect : ~m2489_1
17855
+ # 2490| m2490_6(unknown) = Chi : total:m2489_1, partial:m2490_5
17856
+ # 2490| m2490_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2490_1
17857
+ # 2490| m2490_8(ClassWithDestructor) = Chi : total:m2490_2, partial:m2490_7
17858
+ #-----| r0_9(glval<ClassWithDestructor>) = VariableAddress[d] :
17859
+ #-----| r0_10(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
17860
+ #-----| v0_11(void) = Call[~ClassWithDestructor] : func:r0_10, this:r0_9
17861
+ #-----| m0_12(unknown) = ^CallSideEffect : ~m2490_6
17862
+ #-----| m0_13(unknown) = Chi : total:m2490_6, partial:m0_12
17863
+ #-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_9, m2490_8
17864
+ #-----| m0_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r0_9
17865
+ #-----| m0_16(ClassWithDestructor) = Chi : total:m2490_8, partial:m0_15
17866
+ #-----| Goto -> Block 5
17867
+
17868
+ # 2492| Block 4
17869
+ # 2492| r2492_1(glval<ClassWithDestructor>) = VariableAddress[e] :
17870
+ # 2492| m2492_2(ClassWithDestructor) = Uninitialized[e] : &:r2492_1
17871
+ # 2492| r2492_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
17872
+ # 2492| v2492_4(void) = Call[ClassWithDestructor] : func:r2492_3, this:r2492_1
17873
+ # 2492| m2492_5(unknown) = ^CallSideEffect : ~m2489_1
17874
+ # 2492| m2492_6(unknown) = Chi : total:m2489_1, partial:m2492_5
17875
+ # 2492| m2492_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2492_1
17876
+ # 2492| m2492_8(ClassWithDestructor) = Chi : total:m2492_2, partial:m2492_7
17877
+ #-----| r0_17(glval<ClassWithDestructor>) = VariableAddress[e] :
17878
+ #-----| r0_18(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
17879
+ #-----| v0_19(void) = Call[~ClassWithDestructor] : func:r0_18, this:r0_17
17880
+ #-----| m0_20(unknown) = ^CallSideEffect : ~m2492_6
17881
+ #-----| m0_21(unknown) = Chi : total:m2492_6, partial:m0_20
17882
+ #-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_17, m2492_8
17883
+ #-----| m0_23(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r0_17
17884
+ #-----| m0_24(ClassWithDestructor) = Chi : total:m2492_8, partial:m0_23
17885
+ #-----| Goto -> Block 5
17886
+
17887
+ # 2494| Block 5
17888
+ # 2494| m2494_1(unknown) = Phi : from 3:~m0_13, from 4:~m0_21, from 6:~m0_29
17889
+ # 2494| r2494_2(glval<bool>) = VariableAddress[b] :
17890
+ # 2494| r2494_3(bool) = Load[b] : &:r2494_2, m2484_6
17891
+ # 2494| v2494_4(void) = ConditionalBranch : r2494_3
17892
+ #-----| False -> Block 7
17893
+ #-----| True -> Block 6
17894
+
17895
+ # 2495| Block 6
17896
+ # 2495| r2495_1(glval<ClassWithDestructor>) = VariableAddress[f] :
17897
+ # 2495| m2495_2(ClassWithDestructor) = Uninitialized[f] : &:r2495_1
17898
+ # 2495| r2495_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
17899
+ # 2495| v2495_4(void) = Call[ClassWithDestructor] : func:r2495_3, this:r2495_1
17900
+ # 2495| m2495_5(unknown) = ^CallSideEffect : ~m2494_1
17901
+ # 2495| m2495_6(unknown) = Chi : total:m2494_1, partial:m2495_5
17902
+ # 2495| m2495_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2495_1
17903
+ # 2495| m2495_8(ClassWithDestructor) = Chi : total:m2495_2, partial:m2495_7
17904
+ #-----| r0_25(glval<ClassWithDestructor>) = VariableAddress[f] :
17905
+ #-----| r0_26(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
17906
+ #-----| v0_27(void) = Call[~ClassWithDestructor] : func:r0_26, this:r0_25
17907
+ #-----| m0_28(unknown) = ^CallSideEffect : ~m2495_6
17908
+ #-----| m0_29(unknown) = Chi : total:m2495_6, partial:m0_28
17909
+ #-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_25, m2495_8
17910
+ #-----| m0_31(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r0_25
17911
+ #-----| m0_32(ClassWithDestructor) = Chi : total:m2495_8, partial:m0_31
17912
+ #-----| Goto (back edge) -> Block 5
17913
+
17914
+ # 2497| Block 7
17915
+ # 2497| r2497_1(glval<int>) = VariableAddress[i] :
17916
+ # 2497| r2497_2(int) = Constant[0] :
17917
+ # 2497| m2497_3(int) = Store[i] : &:r2497_1, r2497_2
17918
+ #-----| Goto -> Block 8
17919
+
17920
+ # 2497| Block 8
17921
+ # 2497| m2497_4(unknown) = Phi : from 7:~m2494_1, from 9:~m0_37
17922
+ # 2497| m2497_5(int) = Phi : from 7:m2497_3, from 9:m2497_15
17923
+ # 2497| r2497_6(glval<int>) = VariableAddress[i] :
17924
+ # 2497| r2497_7(int) = Load[i] : &:r2497_6, m2497_5
17925
+ # 2497| r2497_8(int) = Constant[42] :
17926
+ # 2497| r2497_9(bool) = CompareLT : r2497_7, r2497_8
17927
+ # 2497| v2497_10(void) = ConditionalBranch : r2497_9
17928
+ #-----| False -> Block 10
17929
+ #-----| True -> Block 9
17930
+
17931
+ # 2498| Block 9
17932
+ # 2498| r2498_1(glval<ClassWithDestructor>) = VariableAddress[g] :
17933
+ # 2498| m2498_2(ClassWithDestructor) = Uninitialized[g] : &:r2498_1
17934
+ # 2498| r2498_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
17935
+ # 2498| v2498_4(void) = Call[ClassWithDestructor] : func:r2498_3, this:r2498_1
17936
+ # 2498| m2498_5(unknown) = ^CallSideEffect : ~m2497_4
17937
+ # 2498| m2498_6(unknown) = Chi : total:m2497_4, partial:m2498_5
17938
+ # 2498| m2498_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2498_1
17939
+ # 2498| m2498_8(ClassWithDestructor) = Chi : total:m2498_2, partial:m2498_7
17940
+ #-----| r0_33(glval<ClassWithDestructor>) = VariableAddress[g] :
17941
+ #-----| r0_34(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
17942
+ #-----| v0_35(void) = Call[~ClassWithDestructor] : func:r0_34, this:r0_33
17943
+ #-----| m0_36(unknown) = ^CallSideEffect : ~m2498_6
17944
+ #-----| m0_37(unknown) = Chi : total:m2498_6, partial:m0_36
17945
+ #-----| v0_38(void) = ^IndirectReadSideEffect[-1] : &:r0_33, m2498_8
17946
+ #-----| m0_39(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r0_33
17947
+ #-----| m0_40(ClassWithDestructor) = Chi : total:m2498_8, partial:m0_39
17948
+ # 2497| r2497_11(glval<int>) = VariableAddress[i] :
17949
+ # 2497| r2497_12(int) = Load[i] : &:r2497_11, m2497_5
17950
+ # 2497| r2497_13(int) = Constant[1] :
17951
+ # 2497| r2497_14(int) = Add : r2497_12, r2497_13
17952
+ # 2497| m2497_15(int) = Store[i] : &:r2497_11, r2497_14
17953
+ #-----| Goto (back edge) -> Block 8
17954
+
17955
+ # 2499| Block 10
17956
+ # 2499| v2499_1(void) = NoOp :
17957
+ # 2484| v2484_7(void) = ReturnVoid :
17958
+ # 2484| v2484_8(void) = AliasedUse : ~m2497_4
17959
+ # 2484| v2484_9(void) = ExitFunction :
17960
+
17808
17961
perf-regression.cpp:
17809
17962
# 6| void Big::Big()
17810
17963
# 6| Block 0
0 commit comments