<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/compiler, branch OTP-18.1.1</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>2015-09-21T15:09:23+00:00</updated>
<author>
<name>Erlang/OTP</name>
<email>otp@erlang.org</email>
</author>
<published>2015-09-21T15:09:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=6738d356a279835222b951fd213ed4cf9897eb7e'/>
<id>6738d356a279835222b951fd213ed4cf9897eb7e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'bjorn/cuddle-with-tests' into maint</title>
<updated>2015-09-14T13:19:17+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2015-09-14T13:19:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=7e0e50bafef2b0855eba3f0111e6e141025ebf13'/>
<id>7e0e50bafef2b0855eba3f0111e6e141025ebf13</id>
<content type='text'>
* bjorn/cuddle-with-tests: (23 commits)
  rand_SUITE: Speed up basic_stats/1
  base64_SUITE: Speed up roundtrip/1
  lists_SUITE: Test lists:concat/2
  lists_SUITE: Test lists:split/2
  lists_SUITE: Add a test case for lists:prefix/2
  lists_SUITE: Add hof/1 to test all high-order functions
  lists_SUITE: Add test for lists:takewhile/1
  lists_SUITE: Run test cases in each group in parallel
  lists_SUITE: Test lists:keyreplace/4
  lists_SUITE: Extend flatten/1 test to also test flatlength/1
  lists_SUITE: Correct test of lists:flatten/2
  id_transform_SUITE: Modernize test suite
  io_proto_SUITE: Speed up determination of default shell
  io_proto_SUITE: Refactor up rtnode() and friends
  gen_event_SUITE: Remove unnecessary sleep calls
  proc_lib: Improve coverage for crash/1
  proc_lib_SUITE: Eliminate compiler warnings
  io_SUITE: Add coverage/1 to completely cover io_lib_pretty
  io_SUITE: Extend coverage of code for testing printable chars
  io_SUITE: Speed up test for bad +pc option
  ...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* bjorn/cuddle-with-tests: (23 commits)
  rand_SUITE: Speed up basic_stats/1
  base64_SUITE: Speed up roundtrip/1
  lists_SUITE: Test lists:concat/2
  lists_SUITE: Test lists:split/2
  lists_SUITE: Add a test case for lists:prefix/2
  lists_SUITE: Add hof/1 to test all high-order functions
  lists_SUITE: Add test for lists:takewhile/1
  lists_SUITE: Run test cases in each group in parallel
  lists_SUITE: Test lists:keyreplace/4
  lists_SUITE: Extend flatten/1 test to also test flatlength/1
  lists_SUITE: Correct test of lists:flatten/2
  id_transform_SUITE: Modernize test suite
  io_proto_SUITE: Speed up determination of default shell
  io_proto_SUITE: Refactor up rtnode() and friends
  gen_event_SUITE: Remove unnecessary sleep calls
  proc_lib: Improve coverage for crash/1
  proc_lib_SUITE: Eliminate compiler warnings
  io_SUITE: Add coverage/1 to completely cover io_lib_pretty
  io_SUITE: Extend coverage of code for testing printable chars
  io_SUITE: Speed up test for bad +pc option
  ...
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'c-rack/fix-typo3' into maint</title>
<updated>2015-09-11T08:17:10+00:00</updated>
<author>
<name>Zandra</name>
<email>zandra@erlang.org</email>
</author>
<published>2015-09-11T08:17:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=6fd0f00a4a5420621d5a12c28024a1f21fe8e14d'/>
<id>6fd0f00a4a5420621d5a12c28024a1f21fe8e14d</id>
<content type='text'>
* c-rack/fix-typo3:
  Fix typo in call_last/3 spec
  Fix typo
  Fix typo: message to send is in x(1) not x(0)
  Fix another small typo
  Fix typo
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* c-rack/fix-typo3:
  Fix typo in call_last/3 spec
  Fix typo
  Fix typo: message to send is in x(1) not x(0)
  Fix another small typo
  Fix typo
</pre>
</div>
</content>
</entry>
<entry>
<title>compile_SUITE: Add test of warnings</title>
<updated>2015-09-10T08:09:48+00:00</updated>
<author>
<name>Björn Gustavsson</name>
<email>bjorn@erlang.org</email>
</author>
<published>2015-08-31T10:36:36+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=60a6858785f49357757691956295dbcb304c0508'/>
<id>60a6858785f49357757691956295dbcb304c0508</id>
<content type='text'>
Make sure that all warnings produced when compiling the
test suite contains filenames and line numbers.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make sure that all warnings produced when compiling the
test suite contains filenames and line numbers.
</pre>
</div>
</content>
</entry>
<entry>
<title>compiler: Fix get_map_elements register corruption</title>
<updated>2015-09-04T15:58:03+00:00</updated>
<author>
<name>Björn-Egil Dahlberg</name>
<email>egil@erlang.org</email>
</author>
<published>2015-08-31T14:07:46+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=d0784035abb22f4f385c8a8737a7b15c3741bbca'/>
<id>d0784035abb22f4f385c8a8737a7b15c3741bbca</id>
<content type='text'>
Instruction get_map_elements might destroy target registers when the fail-label is taken.
Only seen for patterns with two, and only two, target registers.
Specifically: we copy one register, and then jump.

    foo(A,#{a := V1, b := V2}) -&gt; ...
    foo(A,#{b := V}) -&gt; ...

call foo(value, #{a=&gt;whops, c=&gt;42}).

corresponding assembler:

    {test,is_map,{f,5},[{x,1}]}.

    {get_map_elements,{f,7},{x,1},{list,[{atom,a},{x,1},{atom,b},{x,2}]}}.
    %% if 'a' exists but not 'b' {x,1} is overwritten, jump {f,7}

    {move,{integer,1},{x,0}}.
    {call_only,3,{f,10}}.
    {label,7}.

    {get_map_elements,{f,8},{x,1},{list,[{atom,b},{x,2}]}}.
    %% {x,1} (src) is read with a corrupt value

    {move,{x,0},{x,1}}.
    {move,{integer,2},{x,0}}.
    {call_only,3,{f,10}}.

The fix is to remove 'opt_moves' pass for get_map_elements instruction
in the case of two or more destinations.

Reported-by: Valery Tikhonov
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instruction get_map_elements might destroy target registers when the fail-label is taken.
Only seen for patterns with two, and only two, target registers.
Specifically: we copy one register, and then jump.

    foo(A,#{a := V1, b := V2}) -&gt; ...
    foo(A,#{b := V}) -&gt; ...

call foo(value, #{a=&gt;whops, c=&gt;42}).

corresponding assembler:

    {test,is_map,{f,5},[{x,1}]}.

    {get_map_elements,{f,7},{x,1},{list,[{atom,a},{x,1},{atom,b},{x,2}]}}.
    %% if 'a' exists but not 'b' {x,1} is overwritten, jump {f,7}

    {move,{integer,1},{x,0}}.
    {call_only,3,{f,10}}.
    {label,7}.

    {get_map_elements,{f,8},{x,1},{list,[{atom,b},{x,2}]}}.
    %% {x,1} (src) is read with a corrupt value

    {move,{x,0},{x,1}}.
    {move,{integer,2},{x,0}}.
    {call_only,3,{f,10}}.

The fix is to remove 'opt_moves' pass for get_map_elements instruction
in the case of two or more destinations.

Reported-by: Valery Tikhonov
</pre>
</div>
</content>
</entry>
<entry>
<title>compiler: Add extra checks for get_map_elements in validator</title>
<updated>2015-09-04T15:57:57+00:00</updated>
<author>
<name>Björn-Egil Dahlberg</name>
<email>egil@erlang.org</email>
</author>
<published>2015-08-31T14:07:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=c9bbba0db169ece606b02162057e4681b8fb1ce4'/>
<id>c9bbba0db169ece606b02162057e4681b8fb1ce4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>compiler: Add test for corrupt register in get_map_elements</title>
<updated>2015-09-04T15:57:57+00:00</updated>
<author>
<name>Björn-Egil Dahlberg</name>
<email>egil@erlang.org</email>
</author>
<published>2015-08-31T12:52:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=f8274691e80c7cd29d97c0e67b032ac56ed25496'/>
<id>f8274691e80c7cd29d97c0e67b032ac56ed25496</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix typo in call_last/3 spec</title>
<updated>2015-08-28T16:30:30+00:00</updated>
<author>
<name>Constantin Rack</name>
<email>constantin@rack.li</email>
</author>
<published>2015-08-28T16:30:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=bba382165f48cace97ac64e580d533d998c0fe80'/>
<id>bba382165f48cace97ac64e580d533d998c0fe80</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix typo</title>
<updated>2015-08-25T08:35:03+00:00</updated>
<author>
<name>Constantin Rack</name>
<email>constantin@rack.li</email>
</author>
<published>2015-08-25T08:35:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=363b2038feb3c668395c6c145d83910a04cebea5'/>
<id>363b2038feb3c668395c6c145d83910a04cebea5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix typo: message to send is in x(1) not x(0)</title>
<updated>2015-08-24T07:41:12+00:00</updated>
<author>
<name>Constantin Rack</name>
<email>constantin@rack.li</email>
</author>
<published>2015-08-24T07:41:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=1d967bb8406dfd475265520b24ac4bcf099a3df1'/>
<id>1d967bb8406dfd475265520b24ac4bcf099a3df1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
