aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/test
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2012-02-16 15:12:13 +0100
committerBjörn Gustavsson <[email protected]>2012-02-16 15:12:13 +0100
commit7cd2fd917c8f4d6dff5ca1aca9d938a1790fc9a8 (patch)
treea495d229c0708e4c9ec611d4fd0383794da17712 /lib/compiler/test
parentddefaf865cb357a11e0aa80315a461e774c0d6fb (diff)
parentf928756b2b7f26b90d962cc038d4ba68619c1bf5 (diff)
downloadotp-7cd2fd917c8f4d6dff5ca1aca9d938a1790fc9a8.tar.gz
otp-7cd2fd917c8f4d6dff5ca1aca9d938a1790fc9a8.tar.bz2
otp-7cd2fd917c8f4d6dff5ca1aca9d938a1790fc9a8.zip
Merge branch 'bjorn/compiler/inline-and-on_load/OTP-9910' into maint
* bjorn/compiler/inline-and-on_load/OTP-9910: compiler: Teach the inliner to preserve on_load functions
Diffstat (limited to 'lib/compiler/test')
-rw-r--r--lib/compiler/test/compilation_SUITE.erl1
-rw-r--r--lib/compiler/test/compilation_SUITE_data/on_load_inline.erl23
2 files changed, 24 insertions, 0 deletions
diff --git a/lib/compiler/test/compilation_SUITE.erl b/lib/compiler/test/compilation_SUITE.erl
index 664582a3a8..408fd5ed53 100644
--- a/lib/compiler/test/compilation_SUITE.erl
+++ b/lib/compiler/test/compilation_SUITE.erl
@@ -159,6 +159,7 @@ split({int, N}, <<N:16,B:N/binary,T/binary>>) ->
?comp(convopts).
?comp(otp_7202).
?comp(on_load).
+?comp(on_load_inline).
beam_compiler_7(doc) ->
"Code snippet submitted from Ulf Wiger which fails in R3 Beam.";
diff --git a/lib/compiler/test/compilation_SUITE_data/on_load_inline.erl b/lib/compiler/test/compilation_SUITE_data/on_load_inline.erl
new file mode 100644
index 0000000000..322843b61e
--- /dev/null
+++ b/lib/compiler/test/compilation_SUITE_data/on_load_inline.erl
@@ -0,0 +1,23 @@
+-module(on_load_inline).
+-export([?MODULE/0]).
+-on_load(on_load/0).
+-compile(inline).
+
+?MODULE() ->
+ [{pid,Pid}] = ets:lookup(on_load_executed, pid),
+ exit(Pid, kill),
+ ok.
+
+on_load() ->
+ Parent = self(),
+ spawn(fun() ->
+ T = ets:new(on_load_executed, [named_table]),
+ ets:insert(T, {pid,self()}),
+ Parent ! done,
+ receive
+ wait_forever -> ok
+ end
+ end),
+ receive
+ done -> ok
+ end.