<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/compiler/src, branch master</title>
<subtitle>Mirror of Erlang/OTP repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/'/>
<entry>
<title>Merge branch 'maint'</title>
<updated>2019-08-14T11:42:02+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2019-08-14T11:42:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=e51727f129d6b5667f81e86865d17cf564712054'/>
<id>e51727f129d6b5667f81e86865d17cf564712054</id>
<content type='text'>
* maint:
  Fix compiler crash when compiling some receive statements
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* maint:
  Fix compiler crash when compiling some receive statements
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix compiler crash when compiling some receive statements</title>
<updated>2019-08-14T05:10:17+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2019-08-13T04:38:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=c5e36feada9d0362108890f42c40dd2398b1b531'/>
<id>c5e36feada9d0362108890f42c40dd2398b1b531</id>
<content type='text'>
The compiler would crash when compiling the following code:

    do(Acc) -&gt;
        receive
            {Pid, abc} -&gt;
                ok;
            {Pid, []} -&gt;
                ok;
            {Pid, _Res} -&gt;
                exit(_Res)
        end,
        do([Pid | Acc]).

The last clause that always raises an exception would confuse the
compiler so that it would think that the `receive` statement was at the
end of the function and it would generate incorrect code for the `do/1`
call following the `receive`.

https://bugs.erlang.org/browse/ERL-1022
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The compiler would crash when compiling the following code:

    do(Acc) -&gt;
        receive
            {Pid, abc} -&gt;
                ok;
            {Pid, []} -&gt;
                ok;
            {Pid, _Res} -&gt;
                exit(_Res)
        end,
        do([Pid | Acc]).

The last clause that always raises an exception would confuse the
compiler so that it would think that the `receive` statement was at the
end of the function and it would generate incorrect code for the `do/1`
call following the `receive`.

https://bugs.erlang.org/browse/ERL-1022
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'john/compiler/fix-bs_skip-succeeded-oddity'</title>
<updated>2019-08-08T07:41:28+00:00</updated>
<author>
<name>John Högberg</name>
<email>john@erlang.org</email>
</author>
<published>2019-08-08T07:41:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=9d81adde66efa1f1a70345c70874e42707273db6'/>
<id>9d81adde66efa1f1a70345c70874e42707273db6</id>
<content type='text'>
* john/compiler/fix-bs_skip-succeeded-oddity:
  compiler: Fix awkward match context substitution
  beam_ssa_lint: Use #b_var{} instead of variable names
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* john/compiler/fix-bs_skip-succeeded-oddity:
  compiler: Fix awkward match context substitution
  beam_ssa_lint: Use #b_var{} instead of variable names
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'john/compiler/remove-dead-code-beam_ssa_type'</title>
<updated>2019-08-08T07:41:22+00:00</updated>
<author>
<name>John Högberg</name>
<email>john@erlang.org</email>
</author>
<published>2019-08-08T07:41:22+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=1e01e521d89cdf3fb7a52be0d24fd36b0fe30f4a'/>
<id>1e01e521d89cdf3fb7a52be0d24fd36b0fe30f4a</id>
<content type='text'>
* john/compiler/remove-dead-code-beam_ssa_type:
  beam_ssa_type: Remove unreachable code
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* john/compiler/remove-dead-code-beam_ssa_type:
  beam_ssa_type: Remove unreachable code
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #2226 from josevalim/jv-expand-squeeze-literal-integer-utf8</title>
<updated>2019-08-07T14:54:30+00:00</updated>
<author>
<name>John Högberg</name>
<email>john@erlang.org</email>
</author>
<published>2019-08-07T14:54:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=ac56a30fd3dfca2b9334ed338c162fbec3d38afd'/>
<id>ac56a30fd3dfca2b9334ed338c162fbec3d38afd</id>
<content type='text'>
Expand and squeeze literal integers/utf8 bin segments</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Expand and squeeze literal integers/utf8 bin segments</pre>
</div>
</content>
</entry>
<entry>
<title>compiler: Fix awkward match context substitution</title>
<updated>2019-08-07T14:47:25+00:00</updated>
<author>
<name>John Högberg</name>
<email>john@erlang.org</email>
</author>
<published>2019-08-07T12:00:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=6ae9975689858d0e0c9af0a36869c012bb3762c0'/>
<id>6ae9975689858d0e0c9af0a36869c012bb3762c0</id>
<content type='text'>
This worked out by accident since codegen never actually looks at
the arguments for 'succeeded'; it just assumes that they reference
the preceding instruction.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This worked out by accident since codegen never actually looks at
the arguments for 'succeeded'; it just assumes that they reference
the preceding instruction.
</pre>
</div>
</content>
</entry>
<entry>
<title>beam_ssa_lint: Use #b_var{} instead of variable names</title>
<updated>2019-08-07T14:39:12+00:00</updated>
<author>
<name>John Högberg</name>
<email>john@erlang.org</email>
</author>
<published>2019-08-07T14:19:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=db8a1822079b309075dd5be9fa1cb2019da2c61d'/>
<id>db8a1822079b309075dd5be9fa1cb2019da2c61d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>beam_ssa_type: Remove unreachable code</title>
<updated>2019-08-07T07:45:57+00:00</updated>
<author>
<name>John Högberg</name>
<email>john@erlang.org</email>
</author>
<published>2019-08-07T07:44:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=fd6904ffd83ae32a06f99547d3b3b7c77feac87b'/>
<id>fd6904ffd83ae32a06f99547d3b3b7c77feac87b</id>
<content type='text'>
Now that impossible branches are skipped altogether, it's no
longer possible to encounter get_tuple_element with a 'none'
argument.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now that impossible branches are skipped altogether, it's no
longer possible to encounter get_tuple_element with a 'none'
argument.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'john/compiler/validator-improve-try_case-handling'</title>
<updated>2019-08-07T06:13:14+00:00</updated>
<author>
<name>John Högberg</name>
<email>john@erlang.org</email>
</author>
<published>2019-08-07T06:13:14+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=0ac5f0177761ac68a22b8ebf691a20e470918dd6'/>
<id>0ac5f0177761ac68a22b8ebf691a20e470918dd6</id>
<content type='text'>
* john/compiler/validator-improve-try_case-handling:
  beam_validator: Disallow jumps to try_case handlers
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* john/compiler/validator-improve-try_case-handling:
  beam_validator: Disallow jumps to try_case handlers
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'john/compiler/explicit-call-exceptions'</title>
<updated>2019-08-07T06:12:58+00:00</updated>
<author>
<name>John Högberg</name>
<email>john@erlang.org</email>
</author>
<published>2019-08-07T06:12:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=18ab59fe935799f6495ed8273a9c577c655d30ab'/>
<id>18ab59fe935799f6495ed8273a9c577c655d30ab</id>
<content type='text'>
* john/compiler/explicit-call-exceptions:
  compiler: Simplify set_tuple_element optimization
  compiler: Make 'succeeded' optimization more general
  compiler: Simplify call type optimization
  compiler: All calls may throw, so they all need success checks
  erts_debug: Turn off unsafe optimizations in test case
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* john/compiler/explicit-call-exceptions:
  compiler: Simplify set_tuple_element optimization
  compiler: Make 'succeeded' optimization more general
  compiler: Simplify call type optimization
  compiler: All calls may throw, so they all need success checks
  erts_debug: Turn off unsafe optimizations in test case
</pre>
</div>
</content>
</entry>
</feed>
