aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hipe/main/hipe.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/main/hipe.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/main/hipe.erl')
-rw-r--r--lib/hipe/main/hipe.erl4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/hipe/main/hipe.erl b/lib/hipe/main/hipe.erl
index f5f5bf5830..acb9b7b062 100644
--- a/lib/hipe/main/hipe.erl
+++ b/lib/hipe/main/hipe.erl
@@ -1414,6 +1414,7 @@ opt_keys() ->
use_clusters,
use_jumptable,
verbose,
+ verify_gcsafe,
%% verbose_spills,
x87].
@@ -1510,7 +1511,8 @@ opt_negations() ->
{no_use_callgraph, use_callgraph},
{no_use_clusters, use_clusters},
{no_use_inline_atom_search, use_inline_atom_search},
- {no_use_indexing, use_indexing}].
+ {no_use_indexing, use_indexing},
+ {no_verify_gcsafe, verify_gcsafe}].
%% Don't use negative forms in right-hand sides of aliases and expansions!
%% We only expand negations once, before the other expansions are done.