diff options
author | Björn Gustavsson <[email protected]> | 2018-04-25 07:41:49 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2018-04-25 10:38:59 +0200 |
commit | 6703828ea9085a4125812cfa47631d061032c514 (patch) | |
tree | dad6d32955220f75fd9af17ea51c7727d4a7f4e0 /lib/compiler/src | |
parent | 381ab6129998cbd43216eaafabf7cef78c879c5d (diff) | |
download | otp-6703828ea9085a4125812cfa47631d061032c514.tar.gz otp-6703828ea9085a4125812cfa47631d061032c514.tar.bz2 otp-6703828ea9085a4125812cfa47631d061032c514.zip |
sys_core_fold: Eliminate crash for map update in guard
sys_core_fold would crash when attempting to optimize this code:
t() when (#{})#{}->
c.
Diffstat (limited to 'lib/compiler/src')
-rw-r--r-- | lib/compiler/src/sys_core_fold.erl | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/compiler/src/sys_core_fold.erl b/lib/compiler/src/sys_core_fold.erl index bb3a9c7628..167383a202 100644 --- a/lib/compiler/src/sys_core_fold.erl +++ b/lib/compiler/src/sys_core_fold.erl @@ -214,6 +214,8 @@ opt_guard_try(#c_case{clauses=Cs}=Term) -> Term#c_case{clauses=opt_guard_try_list(Cs)}; opt_guard_try(#c_clause{body=B0}=Term) -> Term#c_clause{body=opt_guard_try(B0)}; +opt_guard_try(#c_let{vars=[],arg=#c_values{es=[]},body=B}) -> + B; opt_guard_try(#c_let{arg=Arg,body=B0}=Term) -> case opt_guard_try(B0) of #c_literal{}=B -> |