Handle multiple pass-through instructions when merging local values
commit241d6fdc1a5f9b921f66187cbbff7713d882f107
authorGuilherme Ottoni <ottoni@fb.com>
Tue, 23 Sep 2014 01:00:58 +0000 (22 18:00 -0700)
committerhhvm-bot <hhvm-bot@fb.com>
Tue, 23 Sep 2014 01:30:27 +0000 (22 18:30 -0700)
tree45a3aae12eb447eae7943188f6801b3bba504396
parentb36fcb75d5f3c65dff54479ff27b84b682ca0a8b
Handle multiple pass-through instructions when merging local values

Summary: FrameState::merge had logic to keep the local value if one of the
branches had a value that was the dest of a pass-through instruction
whose source came from another branch.  This diff generalizes that to
handle cases where there are multiple pass-through instructions in one
of the branches.

Reviewed By: @swtaarrs

Differential Revision: D1569596
hphp/runtime/vm/jit/frame-state.cpp
hphp/test/slow/control-flow/bug-5183265.php [new file with mode: 0644]
hphp/test/slow/control-flow/bug-5183265.php.expect [new file with mode: 0644]
hphp/test/slow/control-flow/bug-5183265.php.opts [new file with mode: 0644]