<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/compiler/src, branch OTP-20.2</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 'lukas/compiler/add_to_dis/OTP-14784' into maint</title>
<updated>2017-11-20T09:32:25+00:00</updated>
<author>
<name>Lukas Larsson</name>
<email>lukas@erlang.org</email>
</author>
<published>2017-11-20T09:32:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=3b5fced77873fa6ee87a81a6162acf9d9f43c6de'/>
<id>3b5fced77873fa6ee87a81a6162acf9d9f43c6de</id>
<content type='text'>
* lukas/compiler/add_to_dis/OTP-14784:
  compiler: Add +to_dis option that dumps loaded asm
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lukas/compiler/add_to_dis/OTP-14784:
  compiler: Add +to_dis option that dumps loaded asm
</pre>
</div>
</content>
</entry>
<entry>
<title>compiler: Add +to_dis option that dumps loaded asm</title>
<updated>2017-11-20T09:31:17+00:00</updated>
<author>
<name>Lukas Larsson</name>
<email>lukas@erlang.org</email>
</author>
<published>2017-10-19T12:50:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=d8d07a7593d811a6adad060951bc425ee0d81446'/>
<id>d8d07a7593d811a6adad060951bc425ee0d81446</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Recognize 'deterministic' when given in a -compile() attribute</title>
<updated>2017-11-10T05:51:22+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2017-11-10T05:26:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=9fc2d48a6de8b95b0d36c4439bff8e59710f4360'/>
<id>9fc2d48a6de8b95b0d36c4439bff8e59710f4360</id>
<content type='text'>
The compiler option 'deterministic' was only recognized when given
as an option to the compiler, not when it was specified in a
-compile() attribute in the source file.

https://bugs.erlang.org/browse/ERL-498
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The compiler option 'deterministic' was only recognized when given
as an option to the compiler, not when it was specified in a
-compile() attribute in the source file.

https://bugs.erlang.org/browse/ERL-498
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix incorrect internal consistency failure for binary matching code</title>
<updated>2017-09-29T05:46:49+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2017-09-29T05:17:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=7715f437ab9a789e0500873b6002a49bfe69009c'/>
<id>7715f437ab9a789e0500873b6002a49bfe69009c</id>
<content type='text'>
4c31fd0b9665 made the merging of match contexts stricter;
in fact, a little bit too strict.

Two match contexts with different number of slots would
be downgraded to the 'term' type. The correct way is to
keep the match context but set the number of slots to the
lowest number of slots of the two match contexts.

https://bugs.erlang.org/browse/ERL-490
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
4c31fd0b9665 made the merging of match contexts stricter;
in fact, a little bit too strict.

Two match contexts with different number of slots would
be downgraded to the 'term' type. The correct way is to
keep the match context but set the number of slots to the
lowest number of slots of the two match contexts.

https://bugs.erlang.org/browse/ERL-490
</pre>
</div>
</content>
</entry>
<entry>
<title>Make handling of match contexts stricter</title>
<updated>2017-08-30T04:17:14+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2017-08-29T16:02:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=4c31fd0b966571508b4eb5170ddb0b38fbaf5fc0'/>
<id>4c31fd0b966571508b4eb5170ddb0b38fbaf5fc0</id>
<content type='text'>
beam_validator could fail issue a diagnostic when a register
that was supposed to be a match context was not guaranteed to
be a match context.

The bug was in merging of types. Merging of a match context with
another term would result in a match context. That is wrong. Merging
should produce a more general type, not a narrower type. Also, the
valid slots in two match contexts should be combined with 'band', not
'bor'.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
beam_validator could fail issue a diagnostic when a register
that was supposed to be a match context was not guaranteed to
be a match context.

The bug was in merging of types. Merging of a match context with
another term would result in a match context. That is wrong. Merging
should produce a more general type, not a narrower type. Also, the
valid slots in two match contexts should be combined with 'band', not
'bor'.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'john/compiler/fail-labels-in-blocks-otp-18/ERIERL-48/OTP-14522' into maint</title>
<updated>2017-08-22T14:28:15+00:00</updated>
<author>
<name>Lukas Larsson</name>
<email>lukas@erlang.org</email>
</author>
<published>2017-08-22T14:28:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=eb4ef92b083f9874b5b4db1f1060585fbb653779'/>
<id>eb4ef92b083f9874b5b4db1f1060585fbb653779</id>
<content type='text'>
* john/compiler/fail-labels-in-blocks-otp-18/ERIERL-48/OTP-14522:
  compiler: Fix live regs update on allocate in validator
  Take fail labels into account when determining liveness in block ops

Conflicts:
	lib/compiler/src/beam_utils.erl
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* john/compiler/fail-labels-in-blocks-otp-18/ERIERL-48/OTP-14522:
  compiler: Fix live regs update on allocate in validator
  Take fail labels into account when determining liveness in block ops

Conflicts:
	lib/compiler/src/beam_utils.erl
</pre>
</div>
</content>
</entry>
<entry>
<title>compiler: Fix live regs update on allocate in validator</title>
<updated>2017-08-16T11:30:34+00:00</updated>
<author>
<name>Lukas Larsson</name>
<email>lukas@erlang.org</email>
</author>
<published>2017-07-19T15:01:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=c803276c92bce2ed739f87f353108daff21c0d91'/>
<id>c803276c92bce2ed739f87f353108daff21c0d91</id>
<content type='text'>
The state without pruned registers was passed on to test_heap
causing the validator to belive registers that aren't live
actually are live.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The state without pruned registers was passed on to test_heap
causing the validator to belive registers that aren't live
actually are live.
</pre>
</div>
</content>
</entry>
<entry>
<title>Take fail labels into account when determining liveness in block ops</title>
<updated>2017-08-07T14:05:30+00:00</updated>
<author>
<name>John Högberg</name>
<email>john@erlang.org</email>
</author>
<published>2017-08-07T14:05:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=c20dbc7ee48a4193975f4351973c323c359528d7'/>
<id>c20dbc7ee48a4193975f4351973c323c359528d7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>sys_core_fold: Fix unsafe optimization of non-variable apply</title>
<updated>2017-08-07T05:20:29+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2017-08-07T05:00:14+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=f59e70ce61913356a67d58e03d6b68c29e983363'/>
<id>f59e70ce61913356a67d58e03d6b68c29e983363</id>
<content type='text'>
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:

&gt; cat test1.core
module 'test1' ['test1'/2]
    attributes []
'i'/1 =
  fun (_f) -&gt; _f
'test1'/2 =
  fun (_f, _x) -&gt;
    apply apply 'i'/1 (_f) (_x)
end
&gt; erlc test1.core
no_file: Warning: invalid function call

Reported-by: Mikael Pettersson
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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:

&gt; cat test1.core
module 'test1' ['test1'/2]
    attributes []
'i'/1 =
  fun (_f) -&gt; _f
'test1'/2 =
  fun (_f, _x) -&gt;
    apply apply 'i'/1 (_f) (_x)
end
&gt; erlc test1.core
no_file: Warning: invalid function call

Reported-by: Mikael Pettersson
</pre>
</div>
</content>
</entry>
<entry>
<title>Update copyright year</title>
<updated>2017-06-14T13:36:21+00:00</updated>
<author>
<name>Hans Nilsson</name>
<email>hans@erlang.org</email>
</author>
<published>2017-06-14T13:36:21+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=43718d3b81d7f3d08e25047e22d579801bbe5044'/>
<id>43718d3b81d7f3d08e25047e22d579801bbe5044</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
