Skip to content

Commit fdcdc3d

Browse files
authored
[flang][CodeGen][NFC] Reduce boilerplatre for ExternalNameConversion (#94474)
Use tablegen to generate the pass constructor. I removed the duplicated pass option handling. I don't understand why the manual instantiation of the pass needs its own duplicate of the pass options in the (automatically generated) base class (even with the option to ignore the pass options in the base class). This pass doesn't need changes to support other top level operations.
1 parent 03a2fe9 commit fdcdc3d

File tree

4 files changed

+6
-26
lines changed

4 files changed

+6
-26
lines changed

flang/include/flang/Optimizer/Transforms/Passes.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,6 @@ std::unique_ptr<mlir::Pass> createAffineDemotionPass();
6060
std::unique_ptr<mlir::Pass>
6161
createArrayValueCopyPass(fir::ArrayValueCopyOptions options = {});
6262
std::unique_ptr<mlir::Pass> createCFGConversionPassWithNSW();
63-
std::unique_ptr<mlir::Pass> createExternalNameConversionPass();
64-
std::unique_ptr<mlir::Pass>
65-
createExternalNameConversionPass(bool appendUnderscore);
6663
std::unique_ptr<mlir::Pass> createMemDataFlowOptPass();
6764
std::unique_ptr<mlir::Pass> createPromoteToAffinePass();
6865
std::unique_ptr<mlir::Pass>

flang/include/flang/Optimizer/Transforms/Passes.td

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,6 @@ def ExternalNameConversion : Pass<"external-name-interop", "mlir::ModuleOp"> {
163163
let description = [{
164164
Demangle FIR internal name and mangle them for external interoperability.
165165
}];
166-
let constructor = "::fir::createExternalNameConversionPass()";
167166
let options = [
168167
Option<"appendUnderscoreOpt", "append-underscore",
169168
"bool", /*default=*/"true",

flang/include/flang/Tools/CLOptions.inc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,9 +233,8 @@ inline void addBoxedProcedurePass(mlir::PassManager &pm) {
233233

234234
inline void addExternalNameConversionPass(
235235
mlir::PassManager &pm, bool appendUnderscore = true) {
236-
addPassConditionally(pm, disableExternalNameConversion, [&]() {
237-
return fir::createExternalNameConversionPass(appendUnderscore);
238-
});
236+
addPassConditionally(pm, disableExternalNameConversion,
237+
[&]() { return fir::createExternalNameConversion({appendUnderscore}); });
239238
}
240239

241240
// Use inliner extension point callback to register the default inliner pass.

flang/lib/Optimizer/Transforms/ExternalNameConversion.cpp

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -45,25 +45,18 @@ namespace {
4545
class ExternalNameConversionPass
4646
: public fir::impl::ExternalNameConversionBase<ExternalNameConversionPass> {
4747
public:
48-
ExternalNameConversionPass(bool appendUnderscoring)
49-
: appendUnderscores(appendUnderscoring) {}
50-
51-
ExternalNameConversionPass() { usePassOpt = true; }
48+
using ExternalNameConversionBase<
49+
ExternalNameConversionPass>::ExternalNameConversionBase;
5250

5351
mlir::ModuleOp getModule() { return getOperation(); }
5452
void runOnOperation() override;
55-
56-
private:
57-
bool appendUnderscores;
58-
bool usePassOpt = false;
5953
};
6054
} // namespace
6155

6256
void ExternalNameConversionPass::runOnOperation() {
6357
auto op = getOperation();
6458
auto *context = &getContext();
6559

66-
appendUnderscores = (usePassOpt) ? appendUnderscoreOpt : appendUnderscores;
6760
llvm::DenseMap<mlir::StringAttr, mlir::FlatSymbolRefAttr> remappings;
6861
// Update names of external Fortran functions and names of Common Block
6962
// globals.
@@ -74,7 +67,8 @@ void ExternalNameConversionPass::runOnOperation() {
7467
mlir::SymbolTable::getSymbolAttrName());
7568
auto deconstructedName = fir::NameUniquer::deconstruct(symName);
7669
if (fir::NameUniquer::isExternalFacingUniquedName(deconstructedName)) {
77-
auto newName = mangleExternalName(deconstructedName, appendUnderscores);
70+
auto newName =
71+
mangleExternalName(deconstructedName, appendUnderscoreOpt);
7872
auto newAttr = mlir::StringAttr::get(context, newName);
7973
mlir::SymbolTable::setSymbolName(&funcOrGlobal, newAttr);
8074
auto newSymRef = mlir::FlatSymbolRefAttr::get(newAttr);
@@ -101,12 +95,3 @@ void ExternalNameConversionPass::runOnOperation() {
10195
nestedOp->setAttr(update.first, update.second);
10296
});
10397
}
104-
105-
std::unique_ptr<mlir::Pass> fir::createExternalNameConversionPass() {
106-
return std::make_unique<ExternalNameConversionPass>();
107-
}
108-
109-
std::unique_ptr<mlir::Pass>
110-
fir::createExternalNameConversionPass(bool appendUnderscoring) {
111-
return std::make_unique<ExternalNameConversionPass>(appendUnderscoring);
112-
}

0 commit comments

Comments
 (0)