<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/compiler/src, branch OTP-21.2</title>
<subtitle>Mirror of Erlang/OTP repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/'/>
<entry>
<title>Fix unsafe optimization of stack trace building</title>
<updated>2018-12-05T13:07:04+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2018-12-05T13:01:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=b3bd35ccd0004d59e478308df3bc85c351557f3c'/>
<id>b3bd35ccd0004d59e478308df3bc85c351557f3c</id>
<content type='text'>
The `sys_core_fold` pass of the compiler would optimize
away the building of the stacktrace in code such as:

    try
        ...
    catch
        C:R:Stk -&gt;
           erlang:raise(C, {R,Stk}, Stk)
    end

That optimization is unsafe and would cause a crash in a later compiler
pass.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The `sys_core_fold` pass of the compiler would optimize
away the building of the stacktrace in code such as:

    try
        ...
    catch
        C:R:Stk -&gt;
           erlang:raise(C, {R,Stk}, Stk)
    end

That optimization is unsafe and would cause a crash in a later compiler
pass.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix internal consistency failure for is_function/2</title>
<updated>2018-11-20T12:13:26+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2018-11-20T12:05:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=8be2c32fe0534d863c6ce6d7665011a162fc39ec'/>
<id>8be2c32fe0534d863c6ce6d7665011a162fc39ec</id>
<content type='text'>
There could be an internal consistency failure when using is_function/2,
because an optimization did not take into account that is_function/2 can fail.

https://bugs.erlang.org/browse/ERL-778
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There could be an internal consistency failure when using is_function/2,
because an optimization did not take into account that is_function/2 can fail.

https://bugs.erlang.org/browse/ERL-778
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix bug when beam_jump removes put_tuple instructions</title>
<updated>2018-10-31T12:18:42+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2018-10-31T12:07:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=94517048c3dad66c6c6469088d174cefcbbdb552'/>
<id>94517048c3dad66c6c6469088d174cefcbbdb552</id>
<content type='text'>
`beam_jump` could remove a `put_tuple` instruction when the
tuple would not be used, but it would leave the following
`put` instructions. Make sure they are removed.

https://bugs.erlang.org/browse/ERL-759
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
`beam_jump` could remove a `put_tuple` instruction when the
tuple would not be used, but it would leave the following
`put` instructions. Make sure they are removed.

https://bugs.erlang.org/browse/ERL-759
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'john/compiler/bs_match-anno-liveness-fix/OTP-15353/ERL-753' into maint</title>
<updated>2018-10-16T08:34:03+00:00</updated>
<author>
<name>John Högberg</name>
<email>john@erlang.org</email>
</author>
<published>2018-10-16T08:34:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=41ab6463e73011969498969834b4ee84024748b0'/>
<id>41ab6463e73011969498969834b4ee84024748b0</id>
<content type='text'>
* john/compiler/bs_match-anno-liveness-fix/OTP-15353/ERL-753:
  beam_utils: Handle bs_start_match2 in anno_defs
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* john/compiler/bs_match-anno-liveness-fix/OTP-15353/ERL-753:
  beam_utils: Handle bs_start_match2 in anno_defs
</pre>
</div>
</content>
</entry>
<entry>
<title>beam_utils: Handle bs_start_match2 in anno_defs</title>
<updated>2018-10-15T11:15:13+00:00</updated>
<author>
<name>John Högberg</name>
<email>john@erlang.org</email>
</author>
<published>2018-10-15T08:30:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=59e5879164f0c11d2063e4eecb8a7052e2f4a04a'/>
<id>59e5879164f0c11d2063e4eecb8a7052e2f4a04a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>compiler: Forward +source flag to epp and fix bug in +deterministic</title>
<updated>2018-10-05T09:47:57+00:00</updated>
<author>
<name>John Högberg</name>
<email>john@erlang.org</email>
</author>
<published>2018-10-05T08:06:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=3a34f37fbc5af8eca7a70f5dab61dca7ee1706b0'/>
<id>3a34f37fbc5af8eca7a70f5dab61dca7ee1706b0</id>
<content type='text'>
The source file path as given to `erlc` was included in an implicit
file attribute inserted by epp, even when the +source flag was
set to something else which was a bit surprising. It was also
included when +deterministic was specified, breaking the flag's
promise.

This commit forwards the +source flag to epp so it inserts the
right information, and if +deterministic is given it will be shaved
to just the base name of the file, guaranteeing the same result
regardless of how the input is reached.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The source file path as given to `erlc` was included in an implicit
file attribute inserted by epp, even when the +source flag was
set to something else which was a bit surprising. It was also
included when +deterministic was specified, breaking the flag's
promise.

This commit forwards the +source flag to epp so it inserts the
right information, and if +deterministic is given it will be shaved
to just the base name of the file, guaranteeing the same result
regardless of how the input is reached.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix rare bug in binary matching (again)</title>
<updated>2018-09-28T08:47:56+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2018-09-28T03:57:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=0bb261b730eff06cca524ea9999ff035585ef5b4'/>
<id>0bb261b730eff06cca524ea9999ff035585ef5b4</id>
<content type='text'>
2e40d8d1c51a attempted fix a bug in binary matching, but it only
fixed the bug for the minimized test case.

This commit removes the previous fix and fixes the bug in a more
effective way. See the comments in the new code in `sys_core_bsm`
for an explanation.

This commit restores the optimizations in string.erl and dets_v9.erl
that the previous fix disabled.

I have not found any code where this commit will disable optimizations
when they are actually safe. There are some changes to the code
in ssl_cipher.erl in that some bs_start_match2 instruction did not
reuse the binary register for the match context, but the delayed
sub binary optimizations was never applied to the code in the first
place.

https://bugs.erlang.org/browse/ERL-689
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
2e40d8d1c51a attempted fix a bug in binary matching, but it only
fixed the bug for the minimized test case.

This commit removes the previous fix and fixes the bug in a more
effective way. See the comments in the new code in `sys_core_bsm`
for an explanation.

This commit restores the optimizations in string.erl and dets_v9.erl
that the previous fix disabled.

I have not found any code where this commit will disable optimizations
when they are actually safe. There are some changes to the code
in ssl_cipher.erl in that some bs_start_match2 instruction did not
reuse the binary register for the match context, but the delayed
sub binary optimizations was never applied to the code in the first
place.

https://bugs.erlang.org/browse/ERL-689
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'maint-21' into maint</title>
<updated>2018-09-12T12:41:05+00:00</updated>
<author>
<name>Rickard Green</name>
<email>rickard@erlang.org</email>
</author>
<published>2018-09-12T12:41:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=6d665a8296999822e4d516343d0e21ed62e70b37'/>
<id>6d665a8296999822e4d516343d0e21ed62e70b37</id>
<content type='text'>
* maint-21:
  Updated OTP version
  Update release notes
  Update version numbers
  erts: Fix "Prevent inconsistent node lists" fix
  Fix include-path regression caused by dd0a39c
  Restore default SIGTERM behaviour for port programs
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* maint-21:
  Updated OTP version
  Update release notes
  Update version numbers
  erts: Fix "Prevent inconsistent node lists" fix
  Fix include-path regression caused by dd0a39c
  Restore default SIGTERM behaviour for port programs
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix include-path regression caused by dd0a39c</title>
<updated>2018-09-10T12:43:17+00:00</updated>
<author>
<name>John Högberg</name>
<email>john@erlang.org</email>
</author>
<published>2018-09-10T11:09:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=3c24f3803a504d20b604f9608a8c80ae31750fb3'/>
<id>3c24f3803a504d20b604f9608a8c80ae31750fb3</id>
<content type='text'>
Include paths don't actually affect code generation in any way, but
it's reasonable for a build tool like rebar3 to recompile when the
include paths change. This commit restores the old behavior without
the +deterministic flag.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Include paths don't actually affect code generation in any way, but
it's reasonable for a build tool like rebar3 to recompile when the
include paths change. This commit restores the old behavior without
the +deterministic flag.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'hasse/dialyzer/improve_guards/OTP-15268/ERL-680' into maint</title>
<updated>2018-08-31T06:08:46+00:00</updated>
<author>
<name>Hans Bolinder</name>
<email>hasse@erlang.org</email>
</author>
<published>2018-08-31T06:08:46+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=583b7add1d66616e61c332ded0658c684c39c8c6'/>
<id>583b7add1d66616e61c332ded0658c684c39c8c6</id>
<content type='text'>
* hasse/dialyzer/improve_guards/OTP-15268/ERL-680:
  dialyzer: Improve handling of complex guards
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* hasse/dialyzer/improve_guards/OTP-15268/ERL-680:
  dialyzer: Improve handling of complex guards
</pre>
</div>
</content>
</entry>
</feed>
