[clang] [flang] [flang][driver] Add -fno-fortran-main (link time) option to remove Fortran_main from link line (PR #74139)
https://github.com/mjklemm updated https://github.com/llvm/llvm-project/pull/74139 >From 2e41335a7de3d2efa88eacee659172a3b9525e45 Mon Sep 17 00:00:00 2001 From: Michael Klemm Date: Fri, 1 Dec 2023 21:41:44 +0100 Subject: [PATCH 1/9] Add -fno-fortran-main driver option --- clang/include/clang/Driver/Options.td | 4 1 file changed, 4 insertions(+) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 19d04e82aed4d6..aa26344f67b313 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -6345,6 +6345,10 @@ def J : JoinedOrSeparate<["-"], "J">, Group, Alias; +def no_fortran_main : Flag<["-"], "fno-fortran-main">, + Visibility<[FlangOption]>, Group, + HelpText<"Don't link in Fortran main">; + //===--===// // FC1 Options //===--===// >From 44b684ae43a6da37bb56c5b699628c6807257ad9 Mon Sep 17 00:00:00 2001 From: Michael Klemm Date: Fri, 1 Dec 2023 21:42:09 +0100 Subject: [PATCH 2/9] Skip linking Fortran_main.a if -fno-fortran-main is present --- clang/lib/Driver/ToolChains/CommonArgs.cpp | 46 -- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 0ae8e2dce32e94..2899f07cb7490c 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1116,33 +1116,37 @@ bool tools::addOpenMPRuntime(ArgStringList , const ToolChain , return true; } +// TODO: add -fno-fortran-main option and check it in this function. void tools::addFortranRuntimeLibs(const ToolChain , const ArgList , llvm::opt::ArgStringList ) { // These are handled earlier on Windows by telling the frontend driver to add // the correct libraries to link against as dependents in the object file. if (!TC.getTriple().isKnownWindowsMSVCEnvironment()) { -// The --whole-archive option needs to be part of the link line to -// make sure that the main() function from Fortran_main.a is pulled -// in by the linker. Determine if --whole-archive is active when -// flang will try to link Fortran_main.a. If it is, don't add the -// --whole-archive flag to the link line. If it's not, add a proper -// --whole-archive/--no-whole-archive bracket to the link line. -bool WholeArchiveActive = false; -for (auto *Arg : Args.filtered(options::OPT_Wl_COMMA)) - if (Arg) -for (StringRef ArgValue : Arg->getValues()) { - if (ArgValue == "--whole-archive") -WholeArchiveActive = true; - if (ArgValue == "--no-whole-archive") -WholeArchiveActive = false; -} - -if (!WholeArchiveActive) - CmdArgs.push_back("--whole-archive"); -CmdArgs.push_back("-lFortran_main"); -if (!WholeArchiveActive) - CmdArgs.push_back("--no-whole-archive"); +// if -fno-fortran-main has been passed, skip linking Fortran_main.a +bool DontLinkFortranMain = Args.getLastArg(options::OPT_no_fortran_main) != nullptr; +if (!DontLinkFortranMain) { + // The --whole-archive option needs to be part of the link line to + // make sure that the main() function from Fortran_main.a is pulled + // in by the linker. Determine if --whole-archive is active when + // flang will try to link Fortran_main.a. If it is, don't add the + // --whole-archive flag to the link line. If it's not, add a proper + // --whole-archive/--no-whole-archive bracket to the link line. + bool WholeArchiveActive = false; + for (auto *Arg : Args.filtered(options::OPT_Wl_COMMA)) +if (Arg) + for (StringRef ArgValue : Arg->getValues()) { +if (ArgValue == "--whole-archive") + WholeArchiveActive = true; +if (ArgValue == "--no-whole-archive") + WholeArchiveActive = false; + } + if (!WholeArchiveActive) +CmdArgs.push_back("--whole-archive"); + CmdArgs.push_back("-lFortran_main"); + if (!WholeArchiveActive) +CmdArgs.push_back("--no-whole-archive"); +} // Perform regular linkage of the remaining runtime libraries. CmdArgs.push_back("-lFortranRuntime"); CmdArgs.push_back("-lFortranDecimal"); >From e1a472fa914ea9405be6589e89fbe8201448600f Mon Sep 17 00:00:00 2001 From: Michael Klemm Date: Fri, 1 Dec 2023 15:10:29 -0600 Subject: [PATCH 3/9] Cleanup and simplify the code a bit --- clang/lib/Driver/ToolChains/CommonArgs.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 2899f07cb7490c..f0e3df2a63ae98 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++
[clang] [flang] [flang][driver] Add -fno-fortran-main (link time) option to remove Fortran_main from link line (PR #74139)
@@ -6345,6 +6345,10 @@ def J : JoinedOrSeparate<["-"], "J">, Group, Alias; +def no_fortran_main : Flag<["-"], "fno-fortran-main">, + Visibility<[FlangOption]>, Group, + HelpText<"Don't link in Fortran main">; banach-space wrote: [nit] For folks less familiar with the compiler internals, it would be a good to be a bit more specific, e.g: ```bash Skip Fortran_main.a (provided by Flang) when linking ``` WDYT? This is also something worth documenting ;-) https://github.com/llvm/llvm-project/pull/74139 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang][driver] Add -fno-fortran-main (link time) option to remove Fortran_main from link line (PR #74139)
mjklemm wrote: > I know that it's extra work, but it's also super useful bit of documentation. > And I would only rarely try to track the history beyond commit messages > (there's just too much otherwise). I can absolutely do that. I'll craft some wording for the rationale behind that change and add it to the PR. https://github.com/llvm/llvm-project/pull/74139 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang][driver] Add -fno-fortran-main (link time) option to remove Fortran_main from link line (PR #74139)
@@ -6345,6 +6345,10 @@ def J : JoinedOrSeparate<["-"], "J">, Group, Alias; +def no_fortran_main : Flag<["-"], "fno-fortran-main">, + Visibility<[FlangOption]>, Group, + HelpText<"Don't link in Fortran main">; + mjklemm wrote: @banach-space ``` let Visibility = [FlangOption] in { def no_fortran_main : Flag<["-"], "fno-fortran-main">, Visibility<[FlangOption]>, Group, HelpText<"Don't link in Fortran main">; } // let Visibility = [ FlangOption ] ``` Was that the suggested edit? I guess `-J` should not be be modified as part of the edit, right? https://github.com/llvm/llvm-project/pull/74139 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang][driver] Add -fno-fortran-main (link time) option to remove Fortran_main from link line (PR #74139)
https://github.com/mjklemm updated https://github.com/llvm/llvm-project/pull/74139 >From 2e41335a7de3d2efa88eacee659172a3b9525e45 Mon Sep 17 00:00:00 2001 From: Michael Klemm Date: Fri, 1 Dec 2023 21:41:44 +0100 Subject: [PATCH 1/8] Add -fno-fortran-main driver option --- clang/include/clang/Driver/Options.td | 4 1 file changed, 4 insertions(+) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 19d04e82aed4d..aa26344f67b31 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -6345,6 +6345,10 @@ def J : JoinedOrSeparate<["-"], "J">, Group, Alias; +def no_fortran_main : Flag<["-"], "fno-fortran-main">, + Visibility<[FlangOption]>, Group, + HelpText<"Don't link in Fortran main">; + //===--===// // FC1 Options //===--===// >From 44b684ae43a6da37bb56c5b699628c6807257ad9 Mon Sep 17 00:00:00 2001 From: Michael Klemm Date: Fri, 1 Dec 2023 21:42:09 +0100 Subject: [PATCH 2/8] Skip linking Fortran_main.a if -fno-fortran-main is present --- clang/lib/Driver/ToolChains/CommonArgs.cpp | 46 -- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 0ae8e2dce32e9..2899f07cb7490 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1116,33 +1116,37 @@ bool tools::addOpenMPRuntime(ArgStringList , const ToolChain , return true; } +// TODO: add -fno-fortran-main option and check it in this function. void tools::addFortranRuntimeLibs(const ToolChain , const ArgList , llvm::opt::ArgStringList ) { // These are handled earlier on Windows by telling the frontend driver to add // the correct libraries to link against as dependents in the object file. if (!TC.getTriple().isKnownWindowsMSVCEnvironment()) { -// The --whole-archive option needs to be part of the link line to -// make sure that the main() function from Fortran_main.a is pulled -// in by the linker. Determine if --whole-archive is active when -// flang will try to link Fortran_main.a. If it is, don't add the -// --whole-archive flag to the link line. If it's not, add a proper -// --whole-archive/--no-whole-archive bracket to the link line. -bool WholeArchiveActive = false; -for (auto *Arg : Args.filtered(options::OPT_Wl_COMMA)) - if (Arg) -for (StringRef ArgValue : Arg->getValues()) { - if (ArgValue == "--whole-archive") -WholeArchiveActive = true; - if (ArgValue == "--no-whole-archive") -WholeArchiveActive = false; -} - -if (!WholeArchiveActive) - CmdArgs.push_back("--whole-archive"); -CmdArgs.push_back("-lFortran_main"); -if (!WholeArchiveActive) - CmdArgs.push_back("--no-whole-archive"); +// if -fno-fortran-main has been passed, skip linking Fortran_main.a +bool DontLinkFortranMain = Args.getLastArg(options::OPT_no_fortran_main) != nullptr; +if (!DontLinkFortranMain) { + // The --whole-archive option needs to be part of the link line to + // make sure that the main() function from Fortran_main.a is pulled + // in by the linker. Determine if --whole-archive is active when + // flang will try to link Fortran_main.a. If it is, don't add the + // --whole-archive flag to the link line. If it's not, add a proper + // --whole-archive/--no-whole-archive bracket to the link line. + bool WholeArchiveActive = false; + for (auto *Arg : Args.filtered(options::OPT_Wl_COMMA)) +if (Arg) + for (StringRef ArgValue : Arg->getValues()) { +if (ArgValue == "--whole-archive") + WholeArchiveActive = true; +if (ArgValue == "--no-whole-archive") + WholeArchiveActive = false; + } + if (!WholeArchiveActive) +CmdArgs.push_back("--whole-archive"); + CmdArgs.push_back("-lFortran_main"); + if (!WholeArchiveActive) +CmdArgs.push_back("--no-whole-archive"); +} // Perform regular linkage of the remaining runtime libraries. CmdArgs.push_back("-lFortranRuntime"); CmdArgs.push_back("-lFortranDecimal"); >From e1a472fa914ea9405be6589e89fbe8201448600f Mon Sep 17 00:00:00 2001 From: Michael Klemm Date: Fri, 1 Dec 2023 15:10:29 -0600 Subject: [PATCH 3/8] Cleanup and simplify the code a bit --- clang/lib/Driver/ToolChains/CommonArgs.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 2899f07cb7490..f0e3df2a63ae9 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++
[clang] [flang] [flang][driver] Add -fno-fortran-main (link time) option to remove Fortran_main from link line (PR #74139)
https://github.com/mjklemm updated https://github.com/llvm/llvm-project/pull/74139 >From 2e41335a7de3d2efa88eacee659172a3b9525e45 Mon Sep 17 00:00:00 2001 From: Michael Klemm Date: Fri, 1 Dec 2023 21:41:44 +0100 Subject: [PATCH 1/7] Add -fno-fortran-main driver option --- clang/include/clang/Driver/Options.td | 4 1 file changed, 4 insertions(+) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 19d04e82aed4d..aa26344f67b31 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -6345,6 +6345,10 @@ def J : JoinedOrSeparate<["-"], "J">, Group, Alias; +def no_fortran_main : Flag<["-"], "fno-fortran-main">, + Visibility<[FlangOption]>, Group, + HelpText<"Don't link in Fortran main">; + //===--===// // FC1 Options //===--===// >From 44b684ae43a6da37bb56c5b699628c6807257ad9 Mon Sep 17 00:00:00 2001 From: Michael Klemm Date: Fri, 1 Dec 2023 21:42:09 +0100 Subject: [PATCH 2/7] Skip linking Fortran_main.a if -fno-fortran-main is present --- clang/lib/Driver/ToolChains/CommonArgs.cpp | 46 -- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 0ae8e2dce32e9..2899f07cb7490 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1116,33 +1116,37 @@ bool tools::addOpenMPRuntime(ArgStringList , const ToolChain , return true; } +// TODO: add -fno-fortran-main option and check it in this function. void tools::addFortranRuntimeLibs(const ToolChain , const ArgList , llvm::opt::ArgStringList ) { // These are handled earlier on Windows by telling the frontend driver to add // the correct libraries to link against as dependents in the object file. if (!TC.getTriple().isKnownWindowsMSVCEnvironment()) { -// The --whole-archive option needs to be part of the link line to -// make sure that the main() function from Fortran_main.a is pulled -// in by the linker. Determine if --whole-archive is active when -// flang will try to link Fortran_main.a. If it is, don't add the -// --whole-archive flag to the link line. If it's not, add a proper -// --whole-archive/--no-whole-archive bracket to the link line. -bool WholeArchiveActive = false; -for (auto *Arg : Args.filtered(options::OPT_Wl_COMMA)) - if (Arg) -for (StringRef ArgValue : Arg->getValues()) { - if (ArgValue == "--whole-archive") -WholeArchiveActive = true; - if (ArgValue == "--no-whole-archive") -WholeArchiveActive = false; -} - -if (!WholeArchiveActive) - CmdArgs.push_back("--whole-archive"); -CmdArgs.push_back("-lFortran_main"); -if (!WholeArchiveActive) - CmdArgs.push_back("--no-whole-archive"); +// if -fno-fortran-main has been passed, skip linking Fortran_main.a +bool DontLinkFortranMain = Args.getLastArg(options::OPT_no_fortran_main) != nullptr; +if (!DontLinkFortranMain) { + // The --whole-archive option needs to be part of the link line to + // make sure that the main() function from Fortran_main.a is pulled + // in by the linker. Determine if --whole-archive is active when + // flang will try to link Fortran_main.a. If it is, don't add the + // --whole-archive flag to the link line. If it's not, add a proper + // --whole-archive/--no-whole-archive bracket to the link line. + bool WholeArchiveActive = false; + for (auto *Arg : Args.filtered(options::OPT_Wl_COMMA)) +if (Arg) + for (StringRef ArgValue : Arg->getValues()) { +if (ArgValue == "--whole-archive") + WholeArchiveActive = true; +if (ArgValue == "--no-whole-archive") + WholeArchiveActive = false; + } + if (!WholeArchiveActive) +CmdArgs.push_back("--whole-archive"); + CmdArgs.push_back("-lFortran_main"); + if (!WholeArchiveActive) +CmdArgs.push_back("--no-whole-archive"); +} // Perform regular linkage of the remaining runtime libraries. CmdArgs.push_back("-lFortranRuntime"); CmdArgs.push_back("-lFortranDecimal"); >From e1a472fa914ea9405be6589e89fbe8201448600f Mon Sep 17 00:00:00 2001 From: Michael Klemm Date: Fri, 1 Dec 2023 15:10:29 -0600 Subject: [PATCH 3/7] Cleanup and simplify the code a bit --- clang/lib/Driver/ToolChains/CommonArgs.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 2899f07cb7490..f0e3df2a63ae9 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++
[clang] [flang] [flang][driver] Add -fno-fortran-main (link time) option to remove Fortran_main from link line (PR #74139)
https://github.com/banach-space commented: Thanks for pushing on! I've made one small suggestion and I also have one more request for the summary. I know that you added links to relevant PRs, but I would still appreciate if the summary (and the commit msg) where self-contained and included the justification for this new flag. You could use the example by @tblah to show where the flag might be needed. Please do keep the links :) I think that it would also be helpful to include what could be an alternative to this and that wouldn't require a flag - I think that the only option would be to mimic what Classic Flang does? I know that it's extra work, but it's also super useful bit of documentation. And I would only rarely try to track the history beyond commit messages (there's just too much otherwise). https://github.com/llvm/llvm-project/pull/74139 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [flang] [flang][driver] Add -fno-fortran-main (link time) option to remove Fortran_main from link line (PR #74139)
https://github.com/mjklemm updated https://github.com/llvm/llvm-project/pull/74139 >From 2e41335a7de3d2efa88eacee659172a3b9525e45 Mon Sep 17 00:00:00 2001 From: Michael Klemm Date: Fri, 1 Dec 2023 21:41:44 +0100 Subject: [PATCH 1/6] Add -fno-fortran-main driver option --- clang/include/clang/Driver/Options.td | 4 1 file changed, 4 insertions(+) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 19d04e82aed4d..aa26344f67b31 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -6345,6 +6345,10 @@ def J : JoinedOrSeparate<["-"], "J">, Group, Alias; +def no_fortran_main : Flag<["-"], "fno-fortran-main">, + Visibility<[FlangOption]>, Group, + HelpText<"Don't link in Fortran main">; + //===--===// // FC1 Options //===--===// >From 44b684ae43a6da37bb56c5b699628c6807257ad9 Mon Sep 17 00:00:00 2001 From: Michael Klemm Date: Fri, 1 Dec 2023 21:42:09 +0100 Subject: [PATCH 2/6] Skip linking Fortran_main.a if -fno-fortran-main is present --- clang/lib/Driver/ToolChains/CommonArgs.cpp | 46 -- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 0ae8e2dce32e9..2899f07cb7490 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1116,33 +1116,37 @@ bool tools::addOpenMPRuntime(ArgStringList , const ToolChain , return true; } +// TODO: add -fno-fortran-main option and check it in this function. void tools::addFortranRuntimeLibs(const ToolChain , const ArgList , llvm::opt::ArgStringList ) { // These are handled earlier on Windows by telling the frontend driver to add // the correct libraries to link against as dependents in the object file. if (!TC.getTriple().isKnownWindowsMSVCEnvironment()) { -// The --whole-archive option needs to be part of the link line to -// make sure that the main() function from Fortran_main.a is pulled -// in by the linker. Determine if --whole-archive is active when -// flang will try to link Fortran_main.a. If it is, don't add the -// --whole-archive flag to the link line. If it's not, add a proper -// --whole-archive/--no-whole-archive bracket to the link line. -bool WholeArchiveActive = false; -for (auto *Arg : Args.filtered(options::OPT_Wl_COMMA)) - if (Arg) -for (StringRef ArgValue : Arg->getValues()) { - if (ArgValue == "--whole-archive") -WholeArchiveActive = true; - if (ArgValue == "--no-whole-archive") -WholeArchiveActive = false; -} - -if (!WholeArchiveActive) - CmdArgs.push_back("--whole-archive"); -CmdArgs.push_back("-lFortran_main"); -if (!WholeArchiveActive) - CmdArgs.push_back("--no-whole-archive"); +// if -fno-fortran-main has been passed, skip linking Fortran_main.a +bool DontLinkFortranMain = Args.getLastArg(options::OPT_no_fortran_main) != nullptr; +if (!DontLinkFortranMain) { + // The --whole-archive option needs to be part of the link line to + // make sure that the main() function from Fortran_main.a is pulled + // in by the linker. Determine if --whole-archive is active when + // flang will try to link Fortran_main.a. If it is, don't add the + // --whole-archive flag to the link line. If it's not, add a proper + // --whole-archive/--no-whole-archive bracket to the link line. + bool WholeArchiveActive = false; + for (auto *Arg : Args.filtered(options::OPT_Wl_COMMA)) +if (Arg) + for (StringRef ArgValue : Arg->getValues()) { +if (ArgValue == "--whole-archive") + WholeArchiveActive = true; +if (ArgValue == "--no-whole-archive") + WholeArchiveActive = false; + } + if (!WholeArchiveActive) +CmdArgs.push_back("--whole-archive"); + CmdArgs.push_back("-lFortran_main"); + if (!WholeArchiveActive) +CmdArgs.push_back("--no-whole-archive"); +} // Perform regular linkage of the remaining runtime libraries. CmdArgs.push_back("-lFortranRuntime"); CmdArgs.push_back("-lFortranDecimal"); >From e1a472fa914ea9405be6589e89fbe8201448600f Mon Sep 17 00:00:00 2001 From: Michael Klemm Date: Fri, 1 Dec 2023 15:10:29 -0600 Subject: [PATCH 3/6] Cleanup and simplify the code a bit --- clang/lib/Driver/ToolChains/CommonArgs.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 2899f07cb7490..f0e3df2a63ae9 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++
[clang] [flang] [flang][driver] Add -fno-fortran-main (link time) option to remove Fortran_main from link line (PR #74139)
DavidTruby wrote: I think this solution is fine, at least in the short term. I had a think after reviewing the initial patch and looking at the failure that @tblah showed in #73124; my thoughts are that the “correct” way of doing this would be instead of linking Fortran_main all the time, we could insert a linker directive in the object file containing the program statement. That way we would only link Fortran_main when there is actually a program statement in the Fortran. However that’s more work and would need a bit more thought anyway so we at least need something like this or the revert in the interim. https://github.com/llvm/llvm-project/pull/74139 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits