blob: b840c08f631422b1a628e42ca5310b98f168731c [file] [log] [blame]
------------ C1:: ------------
%this = _Parameter #0 [_T (#lib::C1)+]
t1 = _Call direct [Object::] (%this)
RESULT: _T {}?
------------ C2:: ------------
%this = _Parameter #0 [_T (#lib::C2)+]
t1 = _Call direct [Object::] (%this)
RESULT: _T {}?
------------ C3:: ------------
%this = _Parameter #0 [_T (#lib::C3)+]
t1 = _Call direct [Object::] (%this)
RESULT: _T {}?
------------ C4:: ------------
%this = _Parameter #0 [_T (#lib::C4)+]
t1 = _Call direct [Object::] (%this)
RESULT: _T {}?
------------ TestEnum:: ------------
%this = _Parameter #0 [_T (#lib::TestEnum)+]
%index = _Parameter #1 [_T (dart.core::int)+?]
%_name = _Parameter #2 [_T (dart.core::String)+?]
t3 = _Call direct set [TestEnum::index] (%this, %index)
t4 = _Call direct set [TestEnum::_name] (%this, %_name)
t5 = _Call direct [Object::] (%this)
RESULT: _T {}?
------------ TestEnum::toString ------------
%this = _Parameter #0 [_T (#lib::TestEnum)+]
t1* = _Call direct get [TestEnum::_name] (%this)
RESULT: t1
------------ TestEnum::values ------------
RESULT: _T (dart.core::_ImmutableList, ListConstant<TestEnum*>([#lib::TestEnum {index: 0, #lib::_name: TestEnum.v1, }, #lib::TestEnum {index: 1, #lib::_name: TestEnum.v2, }]))
------------ TestEnum::v1 ------------
RESULT: _T (#lib::TestEnum, #lib::TestEnum {index: 0, #lib::_name: TestEnum.v1, })
------------ TestEnum::v2 ------------
RESULT: _T (#lib::TestEnum, #lib::TestEnum {index: 1, #lib::_name: TestEnum.v2, })
------------ foo ------------
%x = _Parameter #0 [_T ANY?]
RESULT: _T {}?
------------ bar ------------
%x = _Parameter #0 [_T ANY?]
RESULT: _T {}?
------------ baz ------------
%x = _Parameter #0 [_T ANY?]
RESULT: _T {}?
------------ sequence ------------
t0 = _Call direct [C1::] (_T (#lib::C1))
t1 = _Call direct [C2::] (_T (#lib::C2))
t2 = _Call direct [C3::] (_T (#lib::C3))
RESULT: _T (#lib::C3)
------------ if1 ------------
%cond = _Parameter #0 [_T (dart.core::bool)+?]
t1 = _Call direct [C1::] (_T (#lib::C1))
t2 = _Call direct [C2::] (_T (#lib::C2))
t3 = _Call direct [foo] (_T (#lib::C2))
x_0 = _Join [DynamicType(dynamic)] (_T (#lib::C2), _T (#lib::C1))
RESULT: x_0
------------ if2 ------------
%cond1 = _Parameter #0 [_T (dart.core::bool)+?]
%cond2 = _Parameter #1 [_T (dart.core::bool)+?]
t2 = _Call direct [C1::] (_T (#lib::C1))
t3 = _Call direct [foo] (_T (#lib::C1))
t4 = _Call direct [C2::] (_T (#lib::C2))
t5 = _Call direct [bar] (_T (#lib::C2))
x_0 = _Join [DynamicType(dynamic)] (_T (#lib::C1), _T (#lib::C2))
RESULT: x_0
------------ if3 ------------
%cond1 = _Parameter #0 [_T (dart.core::bool)+?]
%cond2 = _Parameter #1 [_T (dart.core::bool)+?]
t2 = _Call direct [C1::] (_T (#lib::C1))
t3 = _Call direct [C2::] (_T (#lib::C2))
t4* = _Call direct [foo] (_T (#lib::C2))
t5 = _TypeCheck (t4 against dart.core::bool*) (for AsExpression(foo, as bool*))
t6 = _Call direct [C3::] (_T (#lib::C3))
t7* = _Call direct [foo] (_T (#lib::C3))
t8 = _TypeCheck (t7 against dart.core::bool*) (for AsExpression(foo, as bool*))
x_0 = _Join [DynamicType(dynamic)] (_T (#lib::C2), _T (#lib::C3))
t10 = _Call direct [bar] (x_0)
RESULT: x_0
------------ if4 ------------
t0 = _Call direct [C1::] (_T (#lib::C1))
t1 = _Call direct [C2::] (_T (#lib::C2))
t2* = _Call direct [foo] (_T (#lib::C2))
t3 = _TypeCheck (t2 against dart.core::bool*) (for AsExpression(foo, as bool*))
t4 = _Call direct [C3::] (_T (#lib::C3))
t5* = _Call direct [foo] (_T (#lib::C3))
t6 = _TypeCheck (t5 against dart.core::bool*) (for AsExpression(foo, as bool*))
t7 = _Call direct [bar] (_T (#lib::C3))
x_0 = _Join [DynamicType(dynamic)] (_T (#lib::C2), _T (#lib::C3))
RESULT: x_0
------------ if5 ------------
%cond = _Parameter #0 [_T (dart.core::bool)+?]
t1 = _Call direct [C1::] (_T (#lib::C1))
t2 = _Call direct [C2::] (_T (#lib::C2))
t3 = _Call direct [foo] (_T (#lib::C1))
RESULT: _T {}?
------------ if6a ------------
%x = _Parameter #0 [_T (dart.core::bool)+?]
t1 = _Call direct [foo] (_T (dart.core::bool, true))
t2 = _Call direct [bar] (_T (dart.core::bool, false))
x_0 = _Join [InterfaceType(bool*)] (_T (dart.core::bool, true), _T (dart.core::bool, false))
t4 = _Call direct [baz] (x_0)
RESULT: _T {}?
------------ if6b ------------
%x = _Parameter #0 [_T ANY?]
t1 = _TypeCheck (%x against dart.core::bool*) (for AsExpression( as bool*))
t2 = _Call direct [foo] (_T (dart.core::bool, true))
t3 = _Call direct [bar] (_T (dart.core::bool, false))
x_0 = _Join [DynamicType(dynamic)] (_T (dart.core::bool, true), _T (dart.core::bool, false))
t5 = _Call direct [baz] (x_0)
RESULT: _T {}?
------------ if7 ------------
%x = _Parameter #0 [_T (dart.core::int)+?]
%y = _Parameter #1 [_T (dart.core::String)+?]
%z = _Parameter #2 [_T ANY?]
t3* = _Call [num::==] (%x, _T (dart.core::_Smi, 5))
t4* = _Call [String::==] (%y, _T (dart.core::_OneByteString, hi))
t5* = _Call [Object::==] (%z, _T {}?)
t6 = _Call direct [foo] (_T (dart.core::_Smi, 5))
t7 = _Call direct [foo] (_T (dart.core::_OneByteString, hi))
t8 = _Narrow (%z to _T ANY)
t9 = _Call direct [foo] (t8)
RESULT: _T {}?
------------ if8 ------------
%x = _Parameter #0 [_T ANY?]
t1 = _Narrow (%x to _T (dart.core::String)+)
t2 = _Call direct [foo] (t1)
RESULT: _T {}?
------------ if9 ------------
%x = _Parameter #0 [_T (#lib::TestEnum)+?]
t1* = _Call [Object::==] (%x, _T (#lib::TestEnum, #lib::TestEnum {index: 0, #lib::_name: TestEnum.v1, }))
t2 = _Call direct [foo] (_T (#lib::TestEnum, #lib::TestEnum {index: 0, #lib::_name: TestEnum.v1, }))
RESULT: _T {}?
------------ conditional1 ------------
%cond1 = _Parameter #0 [_T (dart.core::bool)+?]
%cond2 = _Parameter #1 [_T (dart.core::bool)+?]
t2 = _Call direct [C1::] (_T (#lib::C1))
t3 = _Call direct [C2::] (_T (#lib::C2))
t4* = _Call direct [foo] (_T (#lib::C2))
t5 = _TypeCheck (t4 against dart.core::bool*) (for AsExpression(foo, as bool*))
t6 = _Call direct [C3::] (_T (#lib::C3))
t7 = _Call direct [C4::] (_T (#lib::C4))
x_0 = _Join [DynamicType(dynamic)] (_T (#lib::C3), _T (#lib::C4))
t9 = _Call direct [foo] (x_0)
t10 = _Join [InterfaceType(Object*)] (_T (#lib::C3), _T (#lib::C4))
t11 = _Narrow (t10 to _T (dart.core::Object)+?)
t12 = _Call direct [bar] (t11)
RESULT: _T {}?
------------ conditional2 ------------
%cond1 = _Parameter #0 [_T (dart.core::bool)+?]
%cond2 = _Parameter #1 [_T (dart.core::bool)+?]
t2 = _Call direct [C1::] (_T (#lib::C1))
t3 = _Call direct [C2::] (_T (#lib::C2))
t4* = _Call direct [foo] (_T (#lib::C2))
t5 = _TypeCheck (t4 against dart.core::bool*) (for AsExpression(foo, as bool*))
t6 = _Call direct [C3::] (_T (#lib::C3))
t7 = _Call direct [C4::] (_T (#lib::C4))
t8* = _Call direct [foo] (_T (dart.core::_GrowableList<#lib::C4*>))
t9 = _Call direct [foo] (_T (#lib::C3))
t10 = _Join [DynamicType(dynamic)] (_T (#lib::C3), t8)
t11 = _Call direct [bar] (t10)
RESULT: _T {}?
------------ loop1 ------------
t0 = _Call direct [C1::] (_T (#lib::C1))
x_0 = _Join [DynamicType(dynamic)] (_T (#lib::C1), _T (#lib::C2))
t2* = _Call direct [foo] (x_0)
t3 = _TypeCheck (t2 against dart.core::bool*) (for AsExpression(foo, as bool*))
t4 = _Call direct [C2::] (_T (#lib::C2))
t5 = _Call direct [bar] (x_0)
RESULT: x_0
------------ loop2 ------------
t0 = _Call direct [C1::] (_T (#lib::C1))
x_0 = _Join [DynamicType(dynamic)] (_T (#lib::C1), _T (#lib::C3))
t2 = _Call direct [foo] (x_0)
t3 = _Call direct [C2::] (_T (#lib::C2))
t4 = _Call direct [bar] (_T (#lib::C2))
t5 = _Call direct [C3::] (_T (#lib::C3))
t6* = _Call direct [bar] (_T (#lib::C3))
t7 = _TypeCheck (t6 against dart.core::bool*) (for AsExpression(bar, as bool*))
RESULT: _T (#lib::C3)
------------ loop3 ------------
t0 = _Call direct [C1::] (_T (#lib::C1))
t1 = _Call direct [C2::] (_T (#lib::C2))
t2* = _Call direct [foo] (_T (#lib::C2))
t3 = _TypeCheck (t2 against dart.core::bool*) (for AsExpression(foo, as bool*))
t4 = _Call direct [C3::] (_T (#lib::C3))
t5 = _Call direct [bar] (_T (#lib::C2))
RESULT: _T (#lib::C2)
------------ loop4 ------------
t0 = _Call direct [C1::] (_T (#lib::C1))
t1 = _Call direct [C2::] (_T (#lib::C2))
t2 = _Call direct [foo] (_T (#lib::C2))
t3* = _Call get [Iterable::iterator] (_T (dart.core::_GrowableList<DynamicType(dynamic)?>))
t4* = _Call [Iterator::moveNext] (t3)
t5 = _Narrow (t3 to _T ANY)
t6 = _Call get [Iterator::current] (t5)
x_0 = _Join [DynamicType(dynamic)] (_T (#lib::C2), _T (#lib::C3))
t8 = _Call direct [foo] (x_0)
t9 = _Call direct [C3::] (_T (#lib::C3))
RESULT: x_0
------------ loop5 ------------
t0 = _Call direct [C1::] (_T (#lib::C1))
x_0 = _Join [DynamicType(dynamic)] (_T (#lib::C1), _T (#lib::C3))
t2* = _Call direct [foo] (x_0)
t3 = _TypeCheck (t2 against dart.core::bool*) (for AsExpression(foo, as bool*))
t4 = _Call direct [C2::] (_T (#lib::C2))
t5* = _Call direct [bar] (_T (#lib::C2))
t6 = _TypeCheck (t5 against dart.core::bool*) (for AsExpression(bar, as bool*))
t7 = _Call direct [C3::] (_T (#lib::C3))
x_1 = _Join [DynamicType(dynamic)] (x_0, _T (#lib::C2))
RESULT: x_1
------------ loop6 ------------
t0 = _Call direct [C1::] (_T (#lib::C1))
x_1 = _Join [DynamicType(dynamic)] (_T (#lib::C3), _T (#lib::C2))
x_0 = _Join [DynamicType(dynamic)] (_T (#lib::C1), x_1)
t3* = _Call direct [foo] (x_0)
t4 = _TypeCheck (t3 against dart.core::bool*) (for AsExpression(foo, as bool*))
t5 = _Call direct [C2::] (_T (#lib::C2))
t6* = _Call direct [bar] (_T (#lib::C2))
t7 = _TypeCheck (t6 against dart.core::bool*) (for AsExpression(bar, as bool*))
t8 = _Call direct [C3::] (_T (#lib::C3))
RESULT: x_0
------------ try1 ------------
t0 = _Call direct [C1::] (_T (#lib::C1))
t1 = _Call direct [C2::] (_T (#lib::C2))
x_0 = _Join [DynamicType(dynamic)] (_T (#lib::C1), _T (#lib::C2), _T (#lib::C3))
t3 = _Call direct [foo] (x_0)
t4 = _Call direct [C3::] (_T (#lib::C3))
t5 = _Call direct [bar] (x_0)
t6 = _Call direct [C4::] (_T (#lib::C4))
RESULT: _T (#lib::C4)
------------ closure1 ------------
t0 = _Call direct [C1::] (_T (#lib::C1))
x_0 = _Join [DynamicType(dynamic)] (_T (#lib::C1), _T (#lib::C2))
t2 = _Call direct [foo] (x_0)
t3 = _Call direct [bar] (x_0)
t4 = _Call direct [foo] (_T ANY?)
t5 = _Call direct [C2::] (_T (#lib::C2))
RESULT: _T {}?
------------ closure2 ------------
t0 = _Call direct [C1::] (_T (#lib::C1))
x_0 = _Join [DynamicType(dynamic)] (_T (#lib::C1), _T (#lib::C2))
t2 = _Call direct [foo] (x_0)
t3 = _Call direct [C2::] (_T (#lib::C2))
t4 = _Call direct [foo] (_T ANY?)
RESULT: x_0
------------ switch1 ------------
%selector = _Parameter #0 [_T (dart.core::int)+?]
t1 = _Call direct [C1::] (_T (#lib::C1))
t2 = _Call direct [C2::] (_T (#lib::C2))
t3 = _Call direct [C3::] (_T (#lib::C3))
x_2 = _Join [DynamicType(dynamic)] (_T (#lib::C3), _T (#lib::C1))
x_3 = _Join [DynamicType(dynamic)] (x_2, _T (#lib::C2))
RESULT: x_3
------------ switch2 ------------
%selector = _Parameter #0 [_T (dart.core::int)+?]
t1 = _Call direct [C1::] (_T (#lib::C1))
t2 = _Call direct [C2::] (_T (#lib::C2))
t3 = _Call direct [C3::] (_T (#lib::C3))
x_2 = _Join [DynamicType(dynamic)] (_T (#lib::C3), _T (#lib::C2))
RESULT: x_2
------------ switch3 ------------
%selector = _Parameter #0 [_T (dart.core::int)+?]
t1 = _Call direct [C1::] (_T (#lib::C1))
t2 = _Call direct [C2::] (_T (#lib::C2))
x_1 = _Join [DynamicType(dynamic)] (_T (#lib::C1), _T (#lib::C2))
t4 = _Call direct [foo] (x_1)
t5 = _Call direct [C3::] (_T (#lib::C3))
x_2 = _Join [DynamicType(dynamic)] (_T (#lib::C1), _T (#lib::C3))
RESULT: x_2
------------ cast1 ------------
%x = _Parameter #0 [_T ANY?]
t1 = _TypeCheck (%x against #lib::C1*) (for AsExpression( as C1*))
t2 = _Call direct [foo] (t1)
t3 = _Call direct [bar] (t1)
RESULT: _T {}?
------------ main ------------
RESULT: _T {}?