Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(105)

Issue 183303002: Fix bug in load elimination with multiple phis. (Closed)

Created:
6 years, 9 months ago by Florian Schneider
Modified:
6 years, 9 months ago
CC:
reviews_dartlang.org, vm-dev_dartlang.org
Visibility:
Public.

Description

Fix bug in load elimination with multiple phis. The in-set has to be computed on the out-sets of the predecessors with the phi-moves of the predecessor applied. This is now done on a temporary copy of out, instead of the out-set itself - otherwise the phi-moves may be applied more than once to the same set. BUG=http://dartbug.com/17159 TEST=tests/language/vm/load_to_load_forwarding_vm_test.dart R=vegorov@chromium.org Committed: https://code.google.com/p/dart/source/detail?r=33118

Patch Set 1 #

Total comments: 2

Patch Set 2 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+35 lines, -17 lines) Patch
M runtime/vm/flow_graph_optimizer.cc View 1 6 chunks +11 lines, -17 lines 0 comments Download
M tests/language/vm/load_to_load_forwarding_vm_test.dart View 3 chunks +24 lines, -0 lines 0 comments Download

Messages

Total messages: 4 (0 generated)
Florian Schneider
6 years, 9 months ago (2014-02-27 16:21:45 UTC) #1
Vyacheslav Egorov (Chromium)
lgtm https://codereview.chromium.org/183303002/diff/1/runtime/vm/flow_graph_optimizer.cc File runtime/vm/flow_graph_optimizer.cc (right): https://codereview.chromium.org/183303002/diff/1/runtime/vm/flow_graph_optimizer.cc#newcode5994 runtime/vm/flow_graph_optimizer.cc:5994: if (pred_out != NULL) { I would write ...
6 years, 9 months ago (2014-02-27 16:25:08 UTC) #2
Florian Schneider
Committed patchset #2 manually as r33118 (presubmit successful).
6 years, 9 months ago (2014-02-27 16:32:14 UTC) #3
Florian Schneider
6 years, 9 months ago (2014-02-28 13:38:57 UTC) #4
Message was sent while issue was closed.
https://codereview.chromium.org/183303002/diff/1/runtime/vm/flow_graph_optimi...
File runtime/vm/flow_graph_optimizer.cc (right):

https://codereview.chromium.org/183303002/diff/1/runtime/vm/flow_graph_optimi...
runtime/vm/flow_graph_optimizer.cc:5994: if (pred_out != NULL) {
On 2014/02/27 16:25:09, Vyacheslav Egorov wrote:
> I would write it slightly differently:
> 
> if (pred_out == NULL) continue;
> 
> PhiPlaceMoves::MovesList phi_moves =
> aliased_set_->phi_moves()->GetOutgoingMoves(pred);
> if (phi_moves != NULL) {
>   // If there are phi moves, perform intersection with
>   // a copy of pred_out where the phi moves are applied.
>   temp_out->CopyFrom(pred_out);
>   PerformPhiMoves(phi_moves, temp_out, forwarded_loads);
>   pred_out = temp_out;
> }
> 
> temp->Intersect(pred_out);

Done.

Powered by Google App Engine
This is Rietveld 408576698