forked from OSchip/llvm-project
[X86] When recognizing vector loads or VZEXT_LOAD in selectScalarSSELoad make sure we pass the load's user rather than load itself to the second operand of IsLegalToFold.
llvm-svn: 290089
This commit is contained in:
parent
04bd11ec4d
commit
1fd4196337
|
@ -1518,7 +1518,7 @@ bool X86DAGToDAGISel::selectScalarSSELoad(SDNode *Root,
|
|||
if (ISD::isNON_EXTLoad(N.getNode())) {
|
||||
PatternNodeWithChain = N;
|
||||
if (IsProfitableToFold(PatternNodeWithChain, N.getNode(), Root) &&
|
||||
IsLegalToFold(PatternNodeWithChain, N.getNode(), Root, OptLevel)) {
|
||||
IsLegalToFold(PatternNodeWithChain, *N->use_begin(), Root, OptLevel)) {
|
||||
LoadSDNode *LD = cast<LoadSDNode>(PatternNodeWithChain);
|
||||
return selectAddr(LD, LD->getBasePtr(), Base, Scale, Index, Disp,
|
||||
Segment);
|
||||
|
@ -1529,7 +1529,7 @@ bool X86DAGToDAGISel::selectScalarSSELoad(SDNode *Root,
|
|||
if (N.getOpcode() == X86ISD::VZEXT_LOAD) {
|
||||
PatternNodeWithChain = N;
|
||||
if (IsProfitableToFold(PatternNodeWithChain, N.getNode(), Root) &&
|
||||
IsLegalToFold(PatternNodeWithChain, N.getNode(), Root, OptLevel)) {
|
||||
IsLegalToFold(PatternNodeWithChain, *N->use_begin(), Root, OptLevel)) {
|
||||
auto *MI = cast<MemIntrinsicSDNode>(PatternNodeWithChain);
|
||||
return selectAddr(MI, MI->getBasePtr(), Base, Scale, Index, Disp,
|
||||
Segment);
|
||||
|
|
Loading…
Reference in New Issue