aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2011-09-07 10:00:37 +0200
committerBjörn Gustavsson <[email protected]>2011-09-14 16:42:48 +0200
commit4792b253584ca8d4429e1a353178db8cd0c470f4 (patch)
treebb1f8d24bd4a9847d2fba36e45815bcccdf6f0cb
parent262a9af33d3ceb4cb032c434b100cea7d4b0d60e (diff)
downloadotp-4792b253584ca8d4429e1a353178db8cd0c470f4.tar.gz
otp-4792b253584ca8d4429e1a353178db8cd0c470f4.tar.bz2
otp-4792b253584ca8d4429e1a353178db8cd0c470f4.zip
sys_pre_expand: Don't duplicate options given in the source code
Any compiler options given with a -compile() attribute in source file would be included both at the beginning and the end of the option list for the compiler. Including the options twice is harmless during compilation, but since the options will also be available in Mod:module_info(compile), including them twice will waste memory. Include the options from the source first in the list so that they override options given on the command line.
-rw-r--r--lib/compiler/src/sys_pre_expand.erl6
1 files changed, 2 insertions, 4 deletions
diff --git a/lib/compiler/src/sys_pre_expand.erl b/lib/compiler/src/sys_pre_expand.erl
index 480954adac..dd6f24e21f 100644
--- a/lib/compiler/src/sys_pre_expand.erl
+++ b/lib/compiler/src/sys_pre_expand.erl
@@ -223,10 +223,8 @@ attribute(export, Es, _L, St) ->
St#expand{exports=union(from_list(Es), St#expand.exports)};
attribute(import, Is, _L, St) ->
import(Is, St);
-attribute(compile, C, _L, St) when is_list(C) ->
- St#expand{compile=St#expand.compile ++ C};
-attribute(compile, C, _L, St) ->
- St#expand{compile=St#expand.compile ++ [C]};
+attribute(compile, _C, _L, St) ->
+ St;
attribute(Name, Val, Line, St) when is_list(Val) ->
St#expand{attributes=St#expand.attributes ++ [{Name,Line,Val}]};
attribute(Name, Val, Line, St) ->