diff options
author | Björn Gustavsson <[email protected]> | 2019-01-17 15:30:05 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2019-01-17 15:30:05 +0100 |
commit | 39a0f4254f759dbce35be7325e0362100baab3c5 (patch) | |
tree | 24ef61292c8e174a2ece42c65e84429bf96cef5e | |
parent | 9627785145f4db991ce0206d2fdc053557720c61 (diff) | |
download | otp-39a0f4254f759dbce35be7325e0362100baab3c5.tar.gz otp-39a0f4254f759dbce35be7325e0362100baab3c5.tar.bz2 otp-39a0f4254f759dbce35be7325e0362100baab3c5.zip |
sys_core_inline: Kill *all* fun annotations when inlining
sys_core_inline didn't kill fun annotations in variables,
which could lead to duplicated wrapper functions for funs.
That was basically harmless because the duplicated functions
were eventually discarded.
-rw-r--r-- | lib/compiler/src/sys_core_inline.erl | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/compiler/src/sys_core_inline.erl b/lib/compiler/src/sys_core_inline.erl index 5a6cc45e4a..3380e3f1bd 100644 --- a/lib/compiler/src/sys_core_inline.erl +++ b/lib/compiler/src/sys_core_inline.erl @@ -195,6 +195,9 @@ kill_id_anns(Body) -> cerl_trees:map(fun(#c_fun{anno=A0}=CFun) -> A = kill_id_anns_1(A0), CFun#c_fun{anno=A}; + (#c_var{anno=A0}=Var) -> + A = kill_id_anns_1(A0), + Var#c_var{anno=A}; (Expr) -> %% Mark everything as compiler generated to %% suppress bogus warnings. |