Skip to content

Commit edd1bbe

Browse files
authored
1 parent b176939 commit edd1bbe

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

externals/llvm-project

Submodule llvm-project updated 2681 files

lib/Dialect/Torch/Transforms/InlineGlobalSlots.cpp

+10-7
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ class InlineGlobalSlotsAnalysis : public DataFlowAnalysis {
132132
public:
133133
InlineGlobalSlotsAnalysis(DataFlowSolver &solver);
134134
LogicalResult initialize(Operation *top) override;
135-
LogicalResult visit(ProgramPoint point) override;
135+
LogicalResult visit(ProgramPoint *point) override;
136136

137137
private:
138138
/// The local transfer function determining the safety of `value`.
@@ -170,7 +170,7 @@ LogicalResult InlineGlobalSlotsAnalysis::initialize(Operation *top) {
170170
if (auto initialize = dyn_cast<Torch::InitializeGlobalSlotsOp>(op)) {
171171
initializeGlobalSlotsOp = initialize;
172172
}
173-
if (failed(visit(op)))
173+
if (failed(visit(getProgramPointAfter(op))))
174174
return WalkResult::interrupt();
175175

176176
return WalkResult::advance();
@@ -180,8 +180,11 @@ LogicalResult InlineGlobalSlotsAnalysis::initialize(Operation *top) {
180180
return success();
181181
}
182182

183-
LogicalResult InlineGlobalSlotsAnalysis::visit(ProgramPoint point) {
184-
if (auto op = dyn_cast<Operation *>(point)) {
183+
LogicalResult InlineGlobalSlotsAnalysis::visit(ProgramPoint *point) {
184+
if (point->isBlockStart())
185+
return success();
186+
187+
if (auto op = point->getPrevOp()) {
185188
for (auto value : op->getResults()) {
186189
bool isSafe = isValueSafeTransferFunction(value);
187190
auto *state = getOrCreate<InlineGlobalSlotsAnalysisState>(value);
@@ -196,7 +199,7 @@ LogicalResult InlineGlobalSlotsAnalysis::visit(ProgramPoint point) {
196199
auto *flatSymbolRefPoint =
197200
getLatticeAnchor<FlatSymbolRefLatticeAnchor>(globalSlot);
198201
auto *valueState = getOrCreateFor<InlineGlobalSlotsAnalysisState>(
199-
globalSlot, globalSlotGet.getResult());
202+
getProgramPointAfter(globalSlot), globalSlotGet.getResult());
200203
auto *globalState =
201204
getOrCreate<InlineGlobalSlotsAnalysisState>(flatSymbolRefPoint);
202205
propagateIfChanged(globalState,
@@ -223,7 +226,7 @@ bool InlineGlobalSlotsAnalysis::isValueSafeTransferFunction(Value value) {
223226
if ((op->hasTrait<Torch::OpTrait::ReadOnly>() || isMemoryEffectFree(op)) &&
224227
llvm::all_of(op->getResults(), [&](Value result) {
225228
auto *state = getOrCreateFor<InlineGlobalSlotsAnalysisState>(
226-
value.getDefiningOp(), result);
229+
getProgramPointAfter(value.getDefiningOp()), result);
227230
return state->isSafe;
228231
}))
229232
continue;
@@ -234,7 +237,7 @@ bool InlineGlobalSlotsAnalysis::isValueSafeTransferFunction(Value value) {
234237
SymbolTable::lookupNearestSymbolFrom<GlobalSlotOp>(op, symName);
235238

236239
auto *state = getOrCreateFor<InlineGlobalSlotsAnalysisState>(
237-
value.getDefiningOp(),
240+
getProgramPointAfter(value.getDefiningOp()),
238241
getLatticeAnchor<FlatSymbolRefLatticeAnchor>(globalSlot));
239242
if (state->isSafe)
240243
continue;

0 commit comments

Comments
 (0)