aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hipe/icode/hipe_icode_pp.erl
diff options
context:
space:
mode:
authorMagnus Lång <[email protected]>2017-11-05 18:50:40 +0100
committerMagnus Lång <[email protected]>2017-11-05 20:52:48 +0100
commit14250efc69cacde4310aeb89b3b1ef631d8e5fe9 (patch)
treeb61cb180f9f6b3ac2892a955b8fc9536fc0e7260 /lib/hipe/icode/hipe_icode_pp.erl
parent354f6d1c29ecaabab8a5aa3f1c95a4188a0aa542 (diff)
downloadotp-14250efc69cacde4310aeb89b3b1ef631d8e5fe9.tar.gz
otp-14250efc69cacde4310aeb89b3b1ef631d8e5fe9.tar.bz2
otp-14250efc69cacde4310aeb89b3b1ef631d8e5fe9.zip
HiPE: Verify GC safety of derived values
HiPE has had metadata for gc safety on it's temporaries for a while, but it has never been enforced or even checked, so naturally several gc-safety violations has slipped through. A new pass, hipe_rtl_verify_gcsafe verifies gcsafety on optimised RTL and is used when running the testsuite, and can be manually enabled with +{hipe,[verify_gcsafe]}.
Diffstat (limited to 'lib/hipe/icode/hipe_icode_pp.erl')
-rw-r--r--lib/hipe/icode/hipe_icode_pp.erl5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/hipe/icode/hipe_icode_pp.erl b/lib/hipe/icode/hipe_icode_pp.erl
index 5b017dca32..33d1e62884 100644
--- a/lib/hipe/icode/hipe_icode_pp.erl
+++ b/lib/hipe/icode/hipe_icode_pp.erl
@@ -230,7 +230,10 @@ pp_arg(Dev, Arg) ->
case hipe_icode:is_reg(Arg) of
true ->
N = hipe_icode:reg_name(Arg),
- io:format(Dev, "r~p", [N]);
+ case hipe_icode:reg_is_gcsafe(Arg) of
+ true -> io:format(Dev, "rs~p", [N]);
+ false -> io:format(Dev, "r~p", [N])
+ end;
false ->
N = hipe_icode:fvar_name(Arg),
io:format(Dev, "fv~p", [N])