Changeset 206472 in webkit


Ignore:
Timestamp:
Sep 27, 2016 4:54:28 PM (8 years ago)
Author:
fpizlo@apple.com
Message:

B3::lowerMacros forgets to before->updatePredecessorsAfter() when lowering ChillMod on ARM64
https://bugs.webkit.org/show_bug.cgi?id=162644

Reviewed by Keith Miller.

JSTests:

  • stress/chill-mod-chill-mod.js: Added.

(foo):

Source/JavaScriptCore:

If you forget to update the predecessors of your successors, then bad things will happen if you
do something that requires accurate predecessors for correctness. lowerMacros() uses
BlockInsertionSet, which relies on accurate predecessors.

  • b3/B3LowerMacros.cpp:
Location:
trunk
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/JSTests/ChangeLog

    r206374 r206472  
     12016-09-27  Filip Pizlo  <fpizlo@apple.com>
     2
     3        B3::lowerMacros forgets to before->updatePredecessorsAfter() when lowering ChillMod on ARM64
     4        https://bugs.webkit.org/show_bug.cgi?id=162644
     5
     6        Reviewed by Keith Miller.
     7
     8        * stress/chill-mod-chill-mod.js: Added.
     9        (foo):
     10
    1112016-09-26  Csaba Osztrogonác  <oszi@inf.u-szeged.hu>
    212
  • trunk/Source/JavaScriptCore/ChangeLog

    r206470 r206472  
     12016-09-27  Filip Pizlo  <fpizlo@apple.com>
     2
     3        B3::lowerMacros forgets to before->updatePredecessorsAfter() when lowering ChillMod on ARM64
     4        https://bugs.webkit.org/show_bug.cgi?id=162644
     5
     6        Reviewed by Keith Miller.
     7
     8        If you forget to update the predecessors of your successors, then bad things will happen if you
     9        do something that requires accurate predecessors for correctness. lowerMacros() uses
     10        BlockInsertionSet, which relies on accurate predecessors.
     11
     12        * b3/B3LowerMacros.cpp:
     13
    1142016-09-27  JF Bastien  <jfbastien@apple.com>
    215
  • trunk/Source/JavaScriptCore/b3/B3LowerMacros.cpp

    r204466 r206472  
    148148                    zeroResult->setPhi(phi);
    149149                    m_value->replaceWithIdentity(phi);
     150                    before->updatePredecessorsAfter();
    150151                    m_changed = true;
    151152                } else
Note: See TracChangeset for help on using the changeset viewer.