diff options
author | John Högberg <[email protected]> | 2018-09-26 11:36:06 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2018-09-26 11:36:06 +0200 |
commit | 08ef38b2c9f84ed118e693bff38efa69fc2c7eb8 (patch) | |
tree | e46b41239e72f690187e00d4704956669b2c0c4d /lib/compiler/src | |
parent | 1d5d8a8c5c7cc8f0e011bb121ef21787ece2be58 (diff) | |
parent | 6c968a18962ea85f9b426d98fbd3c7b3e527c038 (diff) | |
download | otp-08ef38b2c9f84ed118e693bff38efa69fc2c7eb8.tar.gz otp-08ef38b2c9f84ed118e693bff38efa69fc2c7eb8.tar.bz2 otp-08ef38b2c9f84ed118e693bff38efa69fc2c7eb8.zip |
Merge pull request #1960 from jhogberg/john/compiler/validator-aliased-type-fixes/ERL-735
beam_validator: Use set_aliased_type in more operations
Diffstat (limited to 'lib/compiler/src')
-rw-r--r-- | lib/compiler/src/beam_validator.erl | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/compiler/src/beam_validator.erl b/lib/compiler/src/beam_validator.erl index 8d699f2abd..e76b097500 100644 --- a/lib/compiler/src/beam_validator.erl +++ b/lib/compiler/src/beam_validator.erl @@ -572,7 +572,7 @@ valfun_4({bif,tuple_size,{f,Fail},[Tuple],Dst}=I, Vst0) -> TupleType0 = get_term_type(Tuple, Vst0), Vst1 = branch_state(Fail, Vst0), TupleType = upgrade_tuple_type({tuple,[0]}, TupleType0), - Vst = set_type(TupleType, Tuple, Vst1), + Vst = set_aliased_type(TupleType, Tuple, Vst1), set_type_reg_expr({integer,[]}, I, Dst, Vst); valfun_4({bif,element,{f,Fail},[Pos,Tuple],Dst}, Vst0) -> TupleType0 = get_term_type(Tuple, Vst0), @@ -589,20 +589,20 @@ valfun_4(raw_raise=I, Vst) -> valfun_4({bif,map_get,{f,Fail},[_Key,Map]=Src,Dst}, Vst0) -> validate_src(Src, Vst0), Vst1 = branch_state(Fail, Vst0), - Vst = set_type(map, Map, Vst1), + Vst = set_aliased_type(map, Map, Vst1), Type = propagate_fragility(term, Src, Vst), set_type_reg(Type, Dst, Vst); valfun_4({bif,is_map_key,{f,Fail},[_Key,Map]=Src,Dst}, Vst0) -> validate_src(Src, Vst0), Vst1 = branch_state(Fail, Vst0), - Vst = set_type(map, Map, Vst1), + Vst = set_aliased_type(map, Map, Vst1), Type = propagate_fragility(bool, Src, Vst), set_type_reg(Type, Dst, Vst); valfun_4({bif,Op,{f,Fail},[Cons]=Src,Dst}, Vst0) when Op =:= hd; Op =:= tl -> validate_src(Src, Vst0), Vst1 = branch_state(Fail, Vst0), - Vst = set_type(cons, Cons, Vst1), + Vst = set_aliased_type(cons, Cons, Vst1), Type0 = bif_type(Op, Src, Vst), Type = propagate_fragility(Type0, Src, Vst), set_type_reg(Type, Dst, Vst); |