diff --git a/flang/include/flang/Optimizer/Transforms/Passes.td b/flang/include/flang/Optimizer/Transforms/Passes.td index c04b8382bc480..e6ecdede29484 100644 --- a/flang/include/flang/Optimizer/Transforms/Passes.td +++ b/flang/include/flang/Optimizer/Transforms/Passes.td @@ -172,7 +172,7 @@ def ExternalNameConversion : Pass<"external-name-interop", "mlir::ModuleOp"> { }]; let constructor = "::fir::createExternalNameConversionPass()"; let options = [ - Option<"appendUnderscore", "append-underscore", + Option<"appendUnderscoreOpt", "append-underscore", "bool", /*default=*/"true", "Append trailing underscore to external names."> ]; diff --git a/flang/lib/Optimizer/Transforms/ExternalNameConversion.cpp b/flang/lib/Optimizer/Transforms/ExternalNameConversion.cpp index a5f58a833132c..f128a8a52ddd8 100644 --- a/flang/lib/Optimizer/Transforms/ExternalNameConversion.cpp +++ b/flang/lib/Optimizer/Transforms/ExternalNameConversion.cpp @@ -158,13 +158,14 @@ class ExternalNameConversionPass ExternalNameConversionPass(bool appendUnderscoring) : appendUnderscores(appendUnderscoring) {} - ExternalNameConversionPass() { appendUnderscores = appendUnderscore; } + ExternalNameConversionPass() { usePassOpt = true; } mlir::ModuleOp getModule() { return getOperation(); } void runOnOperation() override; private: bool appendUnderscores; + bool usePassOpt; }; } // namespace @@ -172,9 +173,11 @@ void ExternalNameConversionPass::runOnOperation() { auto op = getOperation(); auto *context = &getContext(); + appendUnderscores = (usePassOpt) ? appendUnderscoreOpt : appendUnderscores; + mlir::RewritePatternSet patterns(context); patterns.insert(context, appendUnderscore); + MangleNameOnAddrOfOp>(context, appendUnderscores); ConversionTarget target(*context); target.addLegalDialect