<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/compiler/src, branch OTP-20.1.3</title>
<subtitle>Mirror of Erlang/OTP repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/'/>
<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>
<entry>
<title>v3_kernel: Keep orddicts sorted</title>
<updated>2017-06-13T11:07:02+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2017-06-13T11:07:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=4179fda36587ea42d79a7222eb358e4ca3fbcfab'/>
<id>4179fda36587ea42d79a7222eb358e4ca3fbcfab</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: Ensure that orddict keys are unique</title>
<updated>2017-06-13T10:58:19+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2017-06-13T10:52:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=2820003c58097805f5ec8d2c82c3006e20662fcb'/>
<id>2820003c58097805f5ec8d2c82c3006e20662fcb</id>
<content type='text'>
All keys in an orddict must be unique. sys_core_fold:sub_sub_scope/1
broke that rule. It was probably harmless, but it is better to
avoid such rule violations.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
All keys in an orddict must be unique. sys_core_fold:sub_sub_scope/1
broke that rule. It was probably harmless, but it is better to
avoid such rule violations.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'hasse/unicode_atoms/OTP-14285'</title>
<updated>2017-06-12T10:23:48+00:00</updated>
<author>
<name>Hans Bolinder</name>
<email>hasse@erlang.org</email>
</author>
<published>2017-06-12T10:23:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=dd9e39dc2b97e30c03b24a00eb757be7d2c2bdc2'/>
<id>dd9e39dc2b97e30c03b24a00eb757be7d2c2bdc2</id>
<content type='text'>
* hasse/unicode_atoms/OTP-14285:
  compiler: Handle (bad) Unicode parse transform module names
  kernel: Improve handling of Unicode filenames
  stdlib: Handle Unicode atoms in ms_transform
  stdlib: Improve Unicode handling of the Erlang parser
  stdlib: Handle unknown compiler options with Unicode
  stdlib: Handle Unicode macro names
  stdlib: Correct Unicode handling in escript
  dialyzer: Improve handling of Unicode
  parsetools: Improve handling of Unicode atoms
  stdlib: Handle Unicode atoms when formatting stacktraces
  stdlib: Add more checks of module names to the linter
  stdlib: Handle Unicode atoms better in io_lib_format
  stdlib: Handle Unicode atoms in c.erl
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* hasse/unicode_atoms/OTP-14285:
  compiler: Handle (bad) Unicode parse transform module names
  kernel: Improve handling of Unicode filenames
  stdlib: Handle Unicode atoms in ms_transform
  stdlib: Improve Unicode handling of the Erlang parser
  stdlib: Handle unknown compiler options with Unicode
  stdlib: Handle Unicode macro names
  stdlib: Correct Unicode handling in escript
  dialyzer: Improve handling of Unicode
  parsetools: Improve handling of Unicode atoms
  stdlib: Handle Unicode atoms when formatting stacktraces
  stdlib: Add more checks of module names to the linter
  stdlib: Handle Unicode atoms better in io_lib_format
  stdlib: Handle Unicode atoms in c.erl
</pre>
</div>
</content>
</entry>
</feed>
