aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/test/core_SUITE.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2017-08-07 07:00:14 +0200
committerBjörn Gustavsson <[email protected]>2017-08-07 07:20:29 +0200
commitf59e70ce61913356a67d58e03d6b68c29e983363 (patch)
tree370a0b69f33dc1db37fb79bc249e7402719cb101 /lib/compiler/test/core_SUITE.erl
parent520310feef0d76c0f99447187f3574408b219ae5 (diff)
downloadotp-f59e70ce61913356a67d58e03d6b68c29e983363.tar.gz
otp-f59e70ce61913356a67d58e03d6b68c29e983363.tar.bz2
otp-f59e70ce61913356a67d58e03d6b68c29e983363.zip
sys_core_fold: Fix unsafe optimization of non-variable apply
The sys_core_fold pass would do an unsafe "optimization" when an apply operation did not have a variable in the function position as in the following example: > cat test1.core module 'test1' ['test1'/2] attributes [] 'i'/1 = fun (_f) -> _f 'test1'/2 = fun (_f, _x) -> apply apply 'i'/1 (_f) (_x) end > erlc test1.core no_file: Warning: invalid function call Reported-by: Mikael Pettersson
Diffstat (limited to 'lib/compiler/test/core_SUITE.erl')
-rw-r--r--lib/compiler/test/core_SUITE.erl8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/compiler/test/core_SUITE.erl b/lib/compiler/test/core_SUITE.erl
index f8839da42f..0e07e8dd2e 100644
--- a/lib/compiler/test/core_SUITE.erl
+++ b/lib/compiler/test/core_SUITE.erl
@@ -28,7 +28,8 @@
map_core_test/1,eval_case/1,bad_boolean_guard/1,
bs_shadowed_size_var/1,
cover_v3_kernel_1/1,cover_v3_kernel_2/1,cover_v3_kernel_3/1,
- cover_v3_kernel_4/1,cover_v3_kernel_5/1]).
+ cover_v3_kernel_4/1,cover_v3_kernel_5/1,
+ non_variable_apply/1]).
-include_lib("common_test/include/ct.hrl").
@@ -56,7 +57,8 @@ groups() ->
map_core_test,eval_case,bad_boolean_guard,
bs_shadowed_size_var,
cover_v3_kernel_1,cover_v3_kernel_2,cover_v3_kernel_3,
- cover_v3_kernel_4,cover_v3_kernel_5
+ cover_v3_kernel_4,cover_v3_kernel_5,
+ non_variable_apply
]}].
@@ -90,7 +92,7 @@ end_per_group(_GroupName, Config) ->
?comp(cover_v3_kernel_3).
?comp(cover_v3_kernel_4).
?comp(cover_v3_kernel_5).
-
+?comp(non_variable_apply).
try_it(Mod, Conf) ->
Src = filename:join(proplists:get_value(data_dir, Conf),