[instruction-selector-mips64] Add missing CanCover check

Change-Id: I2264b7850f2c091bfd28d90c5bfe36dcfe6e8a11
Reviewed-on: https://chromium-review.googlesource.com/c/1369908
Reviewed-by: Predrag Rudic <prudic@wavecomp.com>
Commit-Queue: Yu Yin <xwafish@gmail.com>
Cr-Commit-Position: refs/heads/master@{#59994}
This commit is contained in:
Yu Yin 2018-12-11 13:54:46 +08:00 committed by Commit Bot
parent 8dd8bd56d1
commit f93aef833c

View File

@ -201,6 +201,8 @@ struct ExtendingLoadMatcher {
DCHECK(m.IsWord64Sar());
if (m.left().IsLoad() && m.right().Is(32) &&
selector_->CanCover(m.node(), m.left().node())) {
DCHECK_EQ(selector_->GetEffectiveLevel(node),
selector_->GetEffectiveLevel(m.left().node()));
MachineRepresentation rep =
LoadRepresentationOf(m.left().node()->op()).representation();
DCHECK_EQ(3, ElementSizeLog2Of(rep));
@ -1367,7 +1369,8 @@ void InstructionSelector::VisitTruncateInt64ToInt32(Node* node) {
if (CanCover(node, value)) {
switch (value->opcode()) {
case IrOpcode::kWord64Sar: {
if (TryEmitExtendingLoad(this, value, node)) {
if (CanCoverTransitively(node, value, value->InputAt(0)) &&
TryEmitExtendingLoad(this, value, node)) {
return;
} else {
Int64BinopMatcher m(value);