llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang @llvm/pr-subscribers-flang-driver @llvm/pr-subscribers-clang-driver Author: Tom Eccles (tblah) <details> <summary>Changes</summary> Intended to warn users of the 19.x release not to do this. A better solution should be found for the 20.x release. See discussion in https://github.com/llvm/llvm-project/pull/78152. Unfortunately there is no warning on Windows currently. I am rushing to get this landed before 19.x branches. --- Full diff: https://github.com/llvm/llvm-project/pull/79016.diff 3 Files Affected: - (modified) clang/include/clang/Basic/DiagnosticDriverKinds.td (+2) - (modified) clang/lib/Driver/ToolChains/CommonArgs.cpp (+12-2) - (modified) flang/test/Driver/linker-flags.f90 (+4) ``````````diff diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td index 090b169a0e72408..094fe1950941270 100644 --- a/clang/include/clang/Basic/DiagnosticDriverKinds.td +++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td @@ -427,6 +427,8 @@ def warn_drv_clang_unsupported : Warning< "the clang compiler does not support '%0'">; def warn_drv_deprecated_arg : Warning< "argument '%0' is deprecated, use '%1' instead">, InGroup<Deprecated>; +def warn_drv_deprecated_custom : Warning< + "argument '%0' is deprecated, %1">, InGroup<Deprecated>; def warn_drv_assuming_mfloat_abi_is : Warning< "unknown platform, assuming -mfloat-abi=%0">; def warn_drv_unsupported_float_abi_by_lib : Warning< diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 385f66f3782bc1a..938f4941eb5a03f 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1193,6 +1193,16 @@ static void addFortranMain(const ToolChain &TC, const ArgList &Args, return; } + const Driver &D = TC.getDriver(); + const char *LinkFlag = "-lFortran_main"; + + // warn if -lFortran_main was already specified + for (const char *arg : CmdArgs) { + if (strncmp(arg, LinkFlag, strlen(LinkFlag)) == 0) + D.Diag(diag::warn_drv_deprecated_custom) + << LinkFlag << "see the flang driver documentation for correct usage"; + } + // 2. GNU and similar // 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 @@ -1201,12 +1211,12 @@ static void addFortranMain(const ToolChain &TC, const ArgList &Args, if (!isWholeArchivePresent(Args) && !TC.getTriple().isMacOSX() && !TC.getTriple().isOSAIX()) { CmdArgs.push_back("--whole-archive"); - CmdArgs.push_back("-lFortran_main"); + CmdArgs.push_back(LinkFlag); CmdArgs.push_back("--no-whole-archive"); return; } - CmdArgs.push_back("-lFortran_main"); + CmdArgs.push_back(LinkFlag); } /// Add Fortran runtime libs diff --git a/flang/test/Driver/linker-flags.f90 b/flang/test/Driver/linker-flags.f90 index ea91946316cfaa6..341f491bd778fbc 100644 --- a/flang/test/Driver/linker-flags.f90 +++ b/flang/test/Driver/linker-flags.f90 @@ -11,6 +11,7 @@ ! RUN: %flang -### --target=x86_64-unknown-dragonfly %S/Inputs/hello.f90 2>&1 | FileCheck %s --check-prefixes=CHECK,UNIX ! RUN: %flang -### --target=x86_64-unknown-haiku %S/Inputs/hello.f90 2>&1 | FileCheck %s --check-prefixes=CHECK,HAIKU ! RUN: %flang -### --target=x86_64-windows-gnu %S/Inputs/hello.f90 2>&1 | FileCheck %s --check-prefixes=CHECK,MINGW +! RUN: %flang -### --target=aarch64-unknown-linux-gnu %S/Inputs/hello.f90 -lFortran_main 2>&1 | FileCheck %s --check-prefixes=DEPRECATED ! NOTE: Clang's driver library, clangDriver, usually adds 'oldnames' on Windows, ! but it is not needed when compiling Fortran code and they might bring in @@ -53,3 +54,6 @@ ! MSVC-LABEL: link ! MSVC-SAME: /subsystem:console ! MSVC-SAME: "[[object_file]]" + +! Check that we warn when using -lFortran_main +! DEPRECATED: warning: argument '-lFortran_main' is deprecated, see the flang driver documentation for correct usage [-Wdeprecated] `````````` </details> https://github.com/llvm/llvm-project/pull/79016 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits