@@ -13473,14 +13473,6 @@ bool DAGCombiner::MergeConsecutiveStores(StoreSDNode *St) {
13473
13473
continue;
13474
13474
}
13475
13475
13476
- // Check that we can merge these candidates without causing a cycle
13477
- if (!checkMergeStoreCandidatesForDependencies(StoreNodes,
13478
- NumConsecutiveStores)) {
13479
- StoreNodes.erase(StoreNodes.begin(),
13480
- StoreNodes.begin() + NumConsecutiveStores);
13481
- continue;
13482
- }
13483
-
13484
13476
// The node with the lowest store address.
13485
13477
LLVMContext &Context = *DAG.getContext();
13486
13478
const DataLayout &DL = DAG.getDataLayout();
@@ -13576,6 +13568,12 @@ bool DAGCombiner::MergeConsecutiveStores(StoreSDNode *St) {
13576
13568
continue;
13577
13569
}
13578
13570
13571
+ // Check that we can merge these candidates without causing a cycle.
13572
+ if (!checkMergeStoreCandidatesForDependencies(StoreNodes, NumElem)) {
13573
+ StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem);
13574
+ continue;
13575
+ }
13576
+
13579
13577
bool Merged = MergeStoresOfConstantsOrVecElts(
13580
13578
StoreNodes, MemVT, NumElem, true, UseVector, LastIntegerTrunc);
13581
13579
RV |= Merged;
@@ -13634,6 +13632,14 @@ bool DAGCombiner::MergeConsecutiveStores(StoreSDNode *St) {
13634
13632
continue;
13635
13633
}
13636
13634
13635
+ // Check that we can merge these candidates without causing a cycle.
13636
+ if (!checkMergeStoreCandidatesForDependencies(StoreNodes,
13637
+ NumStoresToMerge)) {
13638
+ StoreNodes.erase(StoreNodes.begin(),
13639
+ StoreNodes.begin() + NumStoresToMerge);
13640
+ continue;
13641
+ }
13642
+
13637
13643
bool Merged = MergeStoresOfConstantsOrVecElts(
13638
13644
StoreNodes, MemVT, NumStoresToMerge, false, true, false);
13639
13645
if (!Merged) {
@@ -13803,6 +13809,12 @@ bool DAGCombiner::MergeConsecutiveStores(StoreSDNode *St) {
13803
13809
continue;
13804
13810
}
13805
13811
13812
+ // Check that we can merge these candidates without causing a cycle.
13813
+ if (!checkMergeStoreCandidatesForDependencies(StoreNodes, NumElem)) {
13814
+ StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem);
13815
+ continue;
13816
+ }
13817
+
13806
13818
// Find if it is better to use vectors or integers to load and store
13807
13819
// to memory.
13808
13820
EVT JointMemOpVT;
0 commit comments