Author: jeanPerier Date: 2023-11-10T11:54:10+01:00 New Revision: 9f265c38718ca5c6b2b2ba6a237db1ba5e2cac55
URL: https://github.com/llvm/llvm-project/commit/9f265c38718ca5c6b2b2ba6a237db1ba5e2cac55 DIFF: https://github.com/llvm/llvm-project/commit/9f265c38718ca5c6b2b2ba6a237db1ba5e2cac55.diff LOG: [flang][driver] add -flang-deprecated-no-hlfir hidden option (#71820) Patch 1/3 of the transition to use the HLFIR step by default in lowering as described in https://discourse.llvm.org/t/rfc-enabling-the-hlfir-lowering-by-default/72778/7 This option will allow to lower code without the HLFIR step during a grace period as described in the RFC. It is not meant to be a long term switch for flang. Added: flang/test/Driver/hlfir-no-hlfir-error.f90 Modified: clang/include/clang/Driver/Options.td clang/lib/Driver/ToolChains/Flang.cpp flang/lib/Frontend/CompilerInvocation.cpp flang/test/Driver/driver-help-hidden.f90 flang/test/Driver/frontend-forwarding.f90 flang/test/HLFIR/hlfir-flags.f90 Removed: ################################################################################ diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 5d065cef778a7d8..3409ce29ac56302 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -6218,6 +6218,10 @@ def flang_experimental_hlfir : Flag<["-"], "flang-experimental-hlfir">, Flags<[HelpHidden]>, Visibility<[FlangOption, FC1Option]>, HelpText<"Use HLFIR lowering (experimental)">; +def flang_deprecated_no_hlfir : Flag<["-"], "flang-deprecated-no-hlfir">, + Flags<[HelpHidden]>, Visibility<[FlangOption, FC1Option]>, + HelpText<"Do not use HLFIR lowering (deprecated)">; + def flang_experimental_polymorphism : Flag<["-"], "flang-experimental-polymorphism">, Flags<[HelpHidden]>, Visibility<[FlangOption, FC1Option]>, HelpText<"Enable Fortran 2003 polymorphism (experimental)">; diff --git a/clang/lib/Driver/ToolChains/Flang.cpp b/clang/lib/Driver/ToolChains/Flang.cpp index 999039f83ddfb92..ce0f7e4da006d5f 100644 --- a/clang/lib/Driver/ToolChains/Flang.cpp +++ b/clang/lib/Driver/ToolChains/Flang.cpp @@ -143,6 +143,7 @@ void Flang::addCodegenOptions(const ArgList &Args, CmdArgs.push_back("-fversion-loops-for-stride"); Args.addAllArgs(CmdArgs, {options::OPT_flang_experimental_hlfir, + options::OPT_flang_deprecated_no_hlfir, options::OPT_flang_experimental_polymorphism, options::OPT_fno_ppc_native_vec_elem_order, options::OPT_fppc_native_vec_elem_order, diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp index ba2ecab3742587a..3fef3771ed0da0d 100644 --- a/flang/lib/Frontend/CompilerInvocation.cpp +++ b/flang/lib/Frontend/CompilerInvocation.cpp @@ -1073,6 +1073,19 @@ bool CompilerInvocation::createFromArgs( res.loweringOpts.setLowerToHighLevelFIR(true); } + // -flang-deprecated-no-hlfir + if (args.hasArg(clang::driver::options::OPT_flang_deprecated_no_hlfir) && + !args.hasArg(clang::driver::options::OPT_emit_hlfir)) { + if (args.hasArg(clang::driver::options::OPT_flang_experimental_hlfir)) { + const unsigned diagID = diags.getCustomDiagID( + clang::DiagnosticsEngine::Error, + "Options '-flang-experimental-hlfir' and " + "'-flang-deprecated-no-hlfir' cannot be both specified"); + diags.Report(diagID); + } + res.loweringOpts.setLowerToHighLevelFIR(false); + } + if (args.hasArg(clang::driver::options::OPT_flang_experimental_polymorphism)) { res.loweringOpts.setPolymorphicTypeImpl(true); } diff --git a/flang/test/Driver/driver-help-hidden.f90 b/flang/test/Driver/driver-help-hidden.f90 index 6d399f1d179a022..5e0e459c21c93e2 100644 --- a/flang/test/Driver/driver-help-hidden.f90 +++ b/flang/test/Driver/driver-help-hidden.f90 @@ -49,6 +49,8 @@ ! CHECK-NEXT: -fintegrated-as Enable the integrated assembler ! CHECK-NEXT: -fintrinsic-modules-path <dir> ! CHECK-NEXT: Specify where to find the compiled intrinsic modules +! CHECK-NEXT: -flang-deprecated-no-hlfir +! CHECK-NEXT: Do not use HLFIR lowering (deprecated) ! CHECK-NEXT: -flang-experimental-hlfir ! CHECK-NEXT: Use HLFIR lowering (experimental) ! CHECK-NEXT: -flang-experimental-polymorphism diff --git a/flang/test/Driver/frontend-forwarding.f90 b/flang/test/Driver/frontend-forwarding.f90 index 520f4898feb0a6b..20455791c9ff4d6 100644 --- a/flang/test/Driver/frontend-forwarding.f90 +++ b/flang/test/Driver/frontend-forwarding.f90 @@ -18,6 +18,7 @@ ! RUN: -fversion-loops-for-stride \ ! RUN: -flang-experimental-polymorphism \ ! RUN: -flang-experimental-hlfir \ +! RUN: -flang-deprecated-no-hlfir \ ! RUN: -fno-ppc-native-vector-element-order \ ! RUN: -fppc-native-vector-element-order \ ! RUN: -mllvm -print-before-all \ @@ -49,6 +50,7 @@ ! CHECK: "-fversion-loops-for-stride" ! CHECK: "-flang-experimental-polymorphism" ! CHECK: "-flang-experimental-hlfir" +! CHECK: "-flang-deprecated-no-hlfir" ! CHECK: "-fno-ppc-native-vector-element-order" ! CHECK: "-fppc-native-vector-element-order" ! CHECK: "-Rpass" diff --git a/flang/test/Driver/hlfir-no-hlfir-error.f90 b/flang/test/Driver/hlfir-no-hlfir-error.f90 new file mode 100644 index 000000000000000..2410393b6cd9c1a --- /dev/null +++ b/flang/test/Driver/hlfir-no-hlfir-error.f90 @@ -0,0 +1,16 @@ +! Test that -flang-experimental-hlfir and -flang-deprecated-no-hlfir +! options cannot be both used. + +!-------------------------- +! FLANG DRIVER (flang-new) +!-------------------------- +! RUN: not %flang -flang-experimental-hlfir -flang-deprecated-no-hlfir %s 2>&1 | FileCheck %s + +!----------------------------------------- +! FRONTEND FLANG DRIVER (flang-new -fc1) +!----------------------------------------- +! RUN: not %flang_fc1 -emit-llvm -flang-experimental-hlfir -flang-deprecated-no-hlfir %s 2>&1 | FileCheck %s + +! CHECK:error: Options '-flang-experimental-hlfir' and '-flang-deprecated-no-hlfir' cannot be both specified + +end diff --git a/flang/test/HLFIR/hlfir-flags.f90 b/flang/test/HLFIR/hlfir-flags.f90 index ccd6184e0265266..8ba9b21562a60ce 100644 --- a/flang/test/HLFIR/hlfir-flags.f90 +++ b/flang/test/HLFIR/hlfir-flags.f90 @@ -4,6 +4,7 @@ ! RUN: %flang_fc1 -emit-hlfir -flang-experimental-hlfir -o - %s | FileCheck --check-prefix HLFIR --check-prefix ALL %s ! RUN: bbc -emit-hlfir -hlfir -o - %s | FileCheck --check-prefix HLFIR --check-prefix ALL %s ! RUN: %flang_fc1 -emit-fir -o - %s | FileCheck %s --check-prefix NO-HLFIR --check-prefix ALL +! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir -o - %s | FileCheck %s --check-prefix NO-HLFIR --check-prefix ALL ! RUN: bbc -emit-fir -o - %s | FileCheck %s --check-prefix NO-HLFIR --check-prefix ALL ! RUN: %flang_fc1 -emit-fir -flang-experimental-hlfir -o - %s | FileCheck --check-prefix FIR --check-prefix ALL %s ! RUN: bbc -emit-fir -hlfir -o - %s | FileCheck --check-prefix FIR --check-prefix ALL %s _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits