diff options
author | Magnus Lång <[email protected]> | 2017-11-05 18:50:40 +0100 |
---|---|---|
committer | Magnus Lång <[email protected]> | 2017-11-05 20:52:48 +0100 |
commit | 14250efc69cacde4310aeb89b3b1ef631d8e5fe9 (patch) | |
tree | b61cb180f9f6b3ac2892a955b8fc9536fc0e7260 /lib/hipe/main/hipe_main.erl | |
parent | 354f6d1c29ecaabab8a5aa3f1c95a4188a0aa542 (diff) | |
download | otp-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/main/hipe_main.erl')
-rw-r--r-- | lib/hipe/main/hipe_main.erl | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/hipe/main/hipe_main.erl b/lib/hipe/main/hipe_main.erl index dca6fddec3..4b5eb4c63e 100644 --- a/lib/hipe/main/hipe_main.erl +++ b/lib/hipe/main/hipe_main.erl @@ -410,6 +410,11 @@ icode_to_rtl(MFA, Icode, Options, Servers) -> hipe_llvm_liveness:analyze(RtlCfg4) end, pp(RtlCfg5, MFA, rtl, pp_rtl, Options, Servers), + case proplists:get_bool(verify_gcsafe, Options) of + false -> ok; + true -> + ok = hipe_rtl_verify_gcsafe:check(RtlCfg5) + end, LinearRTL1 = hipe_rtl_cfg:linearize(RtlCfg5), LinearRTL2 = hipe_rtl_cleanup_const:cleanup(LinearRTL1), %% hipe_rtl:pp(standard_io, LinearRTL2), |