<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/compiler, branch OTP-19.0</title>
<subtitle>Mirror of Erlang/OTP repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/'/>
<entry>
<title>Prepare release</title>
<updated>2016-06-21T13:12:41+00:00</updated>
<author>
<name>Erlang/OTP</name>
<email>otp@erlang.org</email>
</author>
<published>2016-06-21T13:12:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=6e51c6d19612d03abc81b86bb70b8d7da678ce5d'/>
<id>6e51c6d19612d03abc81b86bb70b8d7da678ce5d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>compile.xml: Eliminate unsightly space before period</title>
<updated>2016-06-08T08:14:17+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2016-06-08T08:14:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=d567a443e1b3506fdef7d1f57af8d4cd364d45b4'/>
<id>d567a443e1b3506fdef7d1f57af8d4cd364d45b4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Compiler: new function env_compiler_options/0</title>
<updated>2016-06-07T19:28:18+00:00</updated>
<author>
<name>alisdair sullivan</name>
<email>alisdairsullivan@yahoo.ca</email>
</author>
<published>2016-06-07T04:52:14+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=60a13b64316a79edbf830811cdf113311c6547b7'/>
<id>60a13b64316a79edbf830811cdf113311c6547b7</id>
<content type='text'>
retrieve the value of the environment variable ERL_COMPILER_OPTIONS
in the same manner as used by file/2, forms/2 and output_generated/2
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
retrieve the value of the environment variable ERL_COMPILER_OPTIONS
in the same manner as used by file/2, forms/2 and output_generated/2
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'bjorn/compiler/misc'</title>
<updated>2016-06-03T09:57:45+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2016-06-03T09:57:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=b9f8fee6ab5088825f53bfa5dcfdca2ffa81288d'/>
<id>b9f8fee6ab5088825f53bfa5dcfdca2ffa81288d</id>
<content type='text'>
* bjorn/compiler/misc:
  misc_SUITE: Cover the remaining lines in beam_peep
  Avoid the dreaded "no_file" in warnings
  Eliminate crash for map updates in guards
  beam_block: Eliminate crash in beam_utils
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* bjorn/compiler/misc:
  misc_SUITE: Cover the remaining lines in beam_peep
  Avoid the dreaded "no_file" in warnings
  Eliminate crash for map updates in guards
  beam_block: Eliminate crash in beam_utils
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'jv/compiler/mapsify-rec_env/PR-1082/OTP-13646'</title>
<updated>2016-06-03T09:16:23+00:00</updated>
<author>
<name>Björn-Egil Dahlberg</name>
<email>egil@erlang.org</email>
</author>
<published>2016-06-03T09:16:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=8e8358ef4a7ecf69176fa5649cff11cfd7174ae0'/>
<id>8e8358ef4a7ecf69176fa5649cff11cfd7174ae0</id>
<content type='text'>
* jv/compiler/mapsify-rec_env/PR-1082/OTP-13646:
  Convert dict() to map() in rec_env.erl
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* jv/compiler/mapsify-rec_env/PR-1082/OTP-13646:
  Convert dict() to map() in rec_env.erl
</pre>
</div>
</content>
</entry>
<entry>
<title>misc_SUITE: Cover the remaining lines in beam_peep</title>
<updated>2016-06-03T07:43:08+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2016-06-02T16:08:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=819d11e4a8f67cbe5c6fa60580e47a5b884040d7'/>
<id>819d11e4a8f67cbe5c6fa60580e47a5b884040d7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid the dreaded "no_file" in warnings</title>
<updated>2016-06-02T13:49:56+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2016-06-02T04:40:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=a04289a5f30f39b62c7d245f272f486cfd70e6a8'/>
<id>a04289a5f30f39b62c7d245f272f486cfd70e6a8</id>
<content type='text'>
Add more filename/line number annotations while translating to
Core Erlang in v3_core, and ensure that sys_core_fold retains
existing annotations. The goal is to avoid that sys_core_fold
generate warnings with "no_file" instead of a filename.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add more filename/line number annotations while translating to
Core Erlang in v3_core, and ensure that sys_core_fold retains
existing annotations. The goal is to avoid that sys_core_fold
generate warnings with "no_file" instead of a filename.
</pre>
</div>
</content>
</entry>
<entry>
<title>Eliminate crash for map updates in guards</title>
<updated>2016-06-02T10:51:18+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2016-06-02T07:58:46+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=5facb518a9ee2d756564eccd92a2c11f334d6282'/>
<id>5facb518a9ee2d756564eccd92a2c11f334d6282</id>
<content type='text'>
beam_validator would complain that x(1) is uninitialized
in a test_heap instruction when attempting to compile
the following code with sys_core_fold turned off:

  foo(M) when not (M#{true := 0}); [M] -&gt;
    ok.

Simplified, the generated BEAM assembly code looked like
this:

    test is_map BadMap x(0)
    put_map_exact Fail x(0) =&gt; x(1) ...
    jump BooleanStuff

  BadMap:
    move ok =&gt; x(1)
    jump Fail

  BooleanStuff:
    ...
    move Boolean =&gt; x(2)
    jump Build

  Fail:
    move false =&gt; x(2)

  Build:
    test_heap 2 3  %% x(0), x(1), x(2) must be live.
    ...

That is, if put_map_exact failed, control would transfer
to the label Fail without initializing x(1).

Fix that by making sure that x(1) is initilized even if
put_map_exact fails:

    test is_map BadMap x(0)
    put_map_exact BadLbl x(0) =&gt; x(1) ...
    jump OkLbl

  BadLbl:
    move ok =&gt; x(1)
    jump Fail

  OkLbl:
    jump BooleanStuff

  BadMap:
    move ok =&gt; x(1)
    jump Fail

  BooleanStuff:
    ...
    move Boolean =&gt; x(2)
    jump Build

  Fail:
    move false =&gt; x(2)

  Build:
    test_heap 2 3  %% x(0), x(1), x(2) must be live.
    ...

Note that this situation is rare, and that other optimization passes
(beam_dead and beam_jump in particular) will clean up this mess.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
beam_validator would complain that x(1) is uninitialized
in a test_heap instruction when attempting to compile
the following code with sys_core_fold turned off:

  foo(M) when not (M#{true := 0}); [M] -&gt;
    ok.

Simplified, the generated BEAM assembly code looked like
this:

    test is_map BadMap x(0)
    put_map_exact Fail x(0) =&gt; x(1) ...
    jump BooleanStuff

  BadMap:
    move ok =&gt; x(1)
    jump Fail

  BooleanStuff:
    ...
    move Boolean =&gt; x(2)
    jump Build

  Fail:
    move false =&gt; x(2)

  Build:
    test_heap 2 3  %% x(0), x(1), x(2) must be live.
    ...

That is, if put_map_exact failed, control would transfer
to the label Fail without initializing x(1).

Fix that by making sure that x(1) is initilized even if
put_map_exact fails:

    test is_map BadMap x(0)
    put_map_exact BadLbl x(0) =&gt; x(1) ...
    jump OkLbl

  BadLbl:
    move ok =&gt; x(1)
    jump Fail

  OkLbl:
    jump BooleanStuff

  BadMap:
    move ok =&gt; x(1)
    jump Fail

  BooleanStuff:
    ...
    move Boolean =&gt; x(2)
    jump Build

  Fail:
    move false =&gt; x(2)

  Build:
    test_heap 2 3  %% x(0), x(1), x(2) must be live.
    ...

Note that this situation is rare, and that other optimization passes
(beam_dead and beam_jump in particular) will clean up this mess.
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Prepare release"</title>
<updated>2016-06-02T09:39:07+00:00</updated>
<author>
<name>Erlang/OTP</name>
<email>otp@erlang.org</email>
</author>
<published>2016-06-02T09:39:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=c04cad3ba921deb086d19e2de2526af4854add75'/>
<id>c04cad3ba921deb086d19e2de2526af4854add75</id>
<content type='text'>
This reverts commit e020f75c10410a6943cd055bfa072a2641eab7da.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit e020f75c10410a6943cd055bfa072a2641eab7da.
</pre>
</div>
</content>
</entry>
<entry>
<title>Prepare release</title>
<updated>2016-06-02T08:55:26+00:00</updated>
<author>
<name>Erlang/OTP</name>
<email>otp@erlang.org</email>
</author>
<published>2016-06-02T08:55:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=e020f75c10410a6943cd055bfa072a2641eab7da'/>
<id>e020f75c10410a6943cd055bfa072a2641eab7da</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
