aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2018-11-29 07:52:53 +0100
committerBjörn Gustavsson <[email protected]>2018-11-30 14:23:39 +0100
commitc31902c4bb2d1a8e4ba4a8691581a22ea2daec43 (patch)
treeb9053291bd8772b3bcb9f47a19a5ca038fd8d4aa /lib/compiler
parent99267eabed747c8facbcfe057184396bf74491e1 (diff)
downloadotp-c31902c4bb2d1a8e4ba4a8691581a22ea2daec43.tar.gz
otp-c31902c4bb2d1a8e4ba4a8691581a22ea2daec43.tar.bz2
otp-c31902c4bb2d1a8e4ba4a8691581a22ea2daec43.zip
beam_validator: Don't discard fragility
Be more careful when updating types so that fragility is not lost.
Diffstat (limited to 'lib/compiler')
-rw-r--r--lib/compiler/src/beam_validator.erl6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/compiler/src/beam_validator.erl b/lib/compiler/src/beam_validator.erl
index 7d908df3bf..1945faba7f 100644
--- a/lib/compiler/src/beam_validator.erl
+++ b/lib/compiler/src/beam_validator.erl
@@ -1366,8 +1366,10 @@ kill_aliases(Reg, #st{aliases=Aliases0}=St) ->
St
end.
-set_type(Type, {x,_}=Reg, Vst) -> set_type_reg(Type, Reg, Vst);
-set_type(Type, {y,_}=Reg, Vst) -> set_type_y(Type, Reg, Vst);
+set_type(Type, {x,_}=Reg, Vst) ->
+ set_type_reg(Type, Reg, Reg, Vst);
+set_type(Type, {y,_}=Reg, Vst) ->
+ set_type_reg(Type, Reg, Reg, Vst);
set_type(_, _, #vst{}=Vst) -> Vst.
set_type_reg(Type, Src, Dst, Vst) ->