Skip to content

Commit 98f0e4f

Browse files
committed
Revert "[SelectionDAG] Add pcsections recursively on SDNode values"
Revert "[SelectionDAG] Add missing setValue calls in visitIntrinsicCall" This reverts commit 0c64e1b. This reverts commit 1142e6c. It spuriously added !pcsections where they shouldn't be. See added test case in test/CodeGen/X86/pcsections.ll as an example. The reason is that the SelectionDAG chains operations in a basic block as "operands" pointing to preceding instructions. This resulted in setting the metadata on _all_ instructions preceding the one that should have the metadata. Reverting for now because the semantics of !pcsections was completely buggy now.
1 parent 3de55e6 commit 98f0e4f

File tree

7 files changed

+83
-793
lines changed

7 files changed

+83
-793
lines changed

llvm/include/llvm/CodeGen/SelectionDAG.h

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2263,8 +2263,7 @@ class SelectionDAG {
22632263
}
22642264
/// Set PCSections to be associated with Node.
22652265
void addPCSections(const SDNode *Node, MDNode *MD) {
2266-
SmallPtrSet<const llvm::SDNode *, 32> Visited;
2267-
addPCSections(Node, MD, Visited);
2266+
SDEI[Node].PCSections = MD;
22682267
}
22692268
/// Return PCSections associated with Node, or nullptr if none exists.
22702269
MDNode *getPCSections(const SDNode *Node) const {
@@ -2342,10 +2341,6 @@ class SelectionDAG {
23422341
SDNode *FindNodeOrInsertPos(const FoldingSetNodeID &ID, const SDLoc &DL,
23432342
void *&InsertPos);
23442343

2345-
/// Recursively set PCSections to be associated with Node and all its values.
2346-
void addPCSections(const SDNode *Node, MDNode *MD,
2347-
SmallPtrSet<const llvm::SDNode *, 32> &Visited);
2348-
23492344
/// Maps to auto-CSE operations.
23502345
std::vector<CondCodeSDNode*> CondCodeNodes;
23512346

llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1363,19 +1363,6 @@ SDNode *SelectionDAG::FindNodeOrInsertPos(const FoldingSetNodeID &ID,
13631363
return N;
13641364
}
13651365

1366-
void SelectionDAG::addPCSections(
1367-
const SDNode *Node, MDNode *MD,
1368-
SmallPtrSet<const llvm::SDNode *, 32> &Visited) {
1369-
// If we've been here before, return now.
1370-
if (!Visited.insert(Node).second)
1371-
return;
1372-
1373-
SDEI[Node].PCSections = MD;
1374-
1375-
for (const SDValue &Op : Node->op_values())
1376-
addPCSections(Op.getNode(), MD, Visited);
1377-
}
1378-
13791366
void SelectionDAG::clear() {
13801367
allnodes_clear();
13811368
OperandRecycler.clear(OperandAllocator);

llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5936,7 +5936,6 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
59365936
/* AlwaysInline */ false, isTC, MachinePointerInfo(I.getArgOperand(0)),
59375937
MachinePointerInfo(I.getArgOperand(1)), I.getAAMetadata(), AA);
59385938
updateDAGForMaybeTailCall(MC);
5939-
setValue(&I, MC);
59405939
return;
59415940
}
59425941
case Intrinsic::memcpy_inline: {
@@ -5958,7 +5957,6 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
59585957
/* AlwaysInline */ true, isTC, MachinePointerInfo(I.getArgOperand(0)),
59595958
MachinePointerInfo(I.getArgOperand(1)), I.getAAMetadata(), AA);
59605959
updateDAGForMaybeTailCall(MC);
5961-
setValue(&I, MC);
59625960
return;
59635961
}
59645962
case Intrinsic::memset: {
@@ -5975,7 +5973,6 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
59755973
Root, sdl, Op1, Op2, Op3, Alignment, isVol, /* AlwaysInline */ false,
59765974
isTC, MachinePointerInfo(I.getArgOperand(0)), I.getAAMetadata());
59775975
updateDAGForMaybeTailCall(MS);
5978-
setValue(&I, MS);
59795976
return;
59805977
}
59815978
case Intrinsic::memset_inline: {
@@ -5994,7 +5991,6 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
59945991
MachinePointerInfo(I.getArgOperand(0)),
59955992
I.getAAMetadata());
59965993
updateDAGForMaybeTailCall(MC);
5997-
setValue(&I, MC);
59985994
return;
59995995
}
60005996
case Intrinsic::memmove: {
@@ -6016,7 +6012,6 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
60166012
MachinePointerInfo(I.getArgOperand(1)),
60176013
I.getAAMetadata(), AA);
60186014
updateDAGForMaybeTailCall(MM);
6019-
setValue(&I, MM);
60206015
return;
60216016
}
60226017
case Intrinsic::memcpy_element_unordered_atomic: {
@@ -6033,7 +6028,6 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
60336028
isTC, MachinePointerInfo(MI.getRawDest()),
60346029
MachinePointerInfo(MI.getRawSource()));
60356030
updateDAGForMaybeTailCall(MC);
6036-
setValue(&I, MC);
60376031
return;
60386032
}
60396033
case Intrinsic::memmove_element_unordered_atomic: {
@@ -6050,7 +6044,6 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
60506044
isTC, MachinePointerInfo(MI.getRawDest()),
60516045
MachinePointerInfo(MI.getRawSource()));
60526046
updateDAGForMaybeTailCall(MC);
6053-
setValue(&I, MC);
60546047
return;
60556048
}
60566049
case Intrinsic::memset_element_unordered_atomic: {
@@ -6066,7 +6059,6 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I,
60666059
DAG.getAtomicMemset(getRoot(), sdl, Dst, Val, Length, LengthTy, ElemSz,
60676060
isTC, MachinePointerInfo(MI.getRawDest()));
60686061
updateDAGForMaybeTailCall(MC);
6069-
setValue(&I, MC);
60706062
return;
60716063
}
60726064
case Intrinsic::call_preallocated_setup: {

llvm/test/CodeGen/AArch64/pcsections-memtransfer.ll

Lines changed: 0 additions & 179 deletions
This file was deleted.

0 commit comments

Comments
 (0)