@@ -13154,42 +13154,30 @@ SDValue DAGCombiner::ForwardStoreValueToDirectLoad(LoadSDNode *LD) {
13154
13154
if (LD->getBasePtr().isUndef() || Offset != 0)
13155
13155
return SDValue();
13156
13156
// Model necessary truncations / extenstions.
13157
- SmallVector<SDNode *, 4> Vals; // Temporaries which may need to be deleted.
13158
- SDValue Val, RV;
13157
+ SDValue Val;
13159
13158
// Truncate Value To Stored Memory Size.
13160
13159
do {
13161
13160
if (!getTruncatedStoreValue(ST, Val))
13162
13161
continue;
13163
- if (Vals.empty() || Vals.back() != Val.getNode())
13164
- Vals.push_back(Val.getNode());
13165
13162
if (!isTypeLegal(LDMemType))
13166
13163
continue;
13167
13164
if (STMemType != LDMemType) {
13168
13165
// TODO: Support vectors? This requires extract_subvector/bitcast.
13169
13166
if (!STMemType.isVector() && !LDMemType.isVector() &&
13170
- STMemType.isInteger() && LDMemType.isInteger()) {
13171
- Vals.push_back(Val.getNode());
13167
+ STMemType.isInteger() && LDMemType.isInteger())
13172
13168
Val = DAG.getNode(ISD::TRUNCATE, SDLoc(LD), LDMemType, Val);
13173
- } else
13169
+ else
13174
13170
continue;
13175
13171
}
13176
- if (Vals.empty() || Vals.back() != Val.getNode())
13177
- Vals.push_back(Val.getNode());
13178
- if (extendLoadedValueToExtension(LD, Val))
13179
- RV = ReplaceLd(LD, Val, Chain);
13180
- else if (Vals.empty() || Vals.back() != Val.getNode())
13181
- Vals.push_back(Val.getNode());
13172
+ if (!extendLoadedValueToExtension(LD, Val))
13173
+ continue;
13174
+ return ReplaceLd(LD, Val, Chain);
13182
13175
} while (false);
13183
13176
13184
13177
// On failure, cleanup dead nodes we may have created.
13185
- if (Vals.empty() || Vals.back() != Val.getNode())
13186
- Vals.push_back(Val.getNode());
13187
- while (!Vals.empty()) {
13188
- SDNode *Val = Vals.pop_back_val();
13189
- if (Val->use_empty())
13190
- recursivelyDeleteUnusedNodes(Val);
13191
- }
13192
- return RV;
13178
+ if (Val->use_empty())
13179
+ deleteAndRecombine(Val.getNode());
13180
+ return SDValue();
13193
13181
}
13194
13182
13195
13183
SDValue DAGCombiner::visitLOAD(SDNode *N) {
0 commit comments