https://github.com/Jolyon0202 created https://github.com/llvm/llvm-project/pull/129024
Adaptation of adding -fpartial-inlining and -fno-partial-inlining options with GCC. >From 05be466a13c1fbfd211505c62e00b6c85ed4f2c9 Mon Sep 17 00:00:00 2001 From: Jolyon <yangjia...@huawei.com> Date: Thu, 27 Feb 2025 12:51:14 +0800 Subject: [PATCH] [clang] Add partial-inlining options Adaptation of adding -fpartial-inlining and -fno-partial-inlining options with GCC. --- clang/docs/ReleaseNotes.rst | 2 ++ clang/include/clang/Driver/Options.td | 4 ++++ clang/lib/Driver/ToolChains/Clang.cpp | 12 ++++++++++++ clang/test/Driver/clang_f_opts.c | 5 +++++ 4 files changed, 23 insertions(+) diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 307edf77ebb58..6a95a6bd494c9 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -116,6 +116,8 @@ New Compiler Flags The feature has `existed <https://clang.llvm.org/docs/SourceBasedCodeCoverage.html#running-the-instrumented-program>`_) for a while and this is just a user facing option. +- New Options ``-fpartial-inlining`` and ``-fno-partial-inlining`` added to adapt with GCC. + Deprecated Compiler Flags ------------------------- diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index e521cbf678d93..9ee0a424afb43 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -3376,6 +3376,10 @@ def fno_inline_functions : Flag<["-"], "fno-inline-functions">, Group<f_clang_Gr Visibility<[ClangOption, CC1Option]>; def fno_inline : Flag<["-"], "fno-inline">, Group<f_clang_Group>, Visibility<[ClangOption, CC1Option]>; +def fpartial_inlining : Flag<["-"], "fpartial-inlining">, Group<f_clang_Group>, + Visibility<[ClangOption, CC1Option]>; +def fno_partial_inlining : Flag<["-"], "fno-partial-inlining">, Group<f_clang_Group>, + Visibility<[ClangOption, CC1Option]>; def fno_global_isel : Flag<["-"], "fno-global-isel">, Group<f_clang_Group>, HelpText<"Disables the global instruction selector">; def fno_experimental_isel : Flag<["-"], "fno-experimental-isel">, Group<f_clang_Group>, diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index aa83e3e36124c..705158a610224 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -7370,6 +7370,18 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, Args.AddLastArg(CmdArgs, options::OPT_finline_max_stacksize_EQ); + // Adaptation of partial-inlining option with GCC. + if (Arg *A = Args.getLastArg(options::OPT_fno_partial_inlining, + options::OPT_fpartial_inlining)) { + if (A->getOption().matches(options::OPT_fno_partial_inlining)) { + CmdArgs.push_back("-mllvm"); + CmdArgs.push_back("-disable-partial-inlining"); + } else if (A->getOption().matches(options::OPT_fpartial_inlining)) { + CmdArgs.push_back("-mllvm"); + CmdArgs.push_back("-enable-partial-inlining"); + } + } + // FIXME: Find a better way to determine whether we are in C++20. bool HaveCxx20 = Std && diff --git a/clang/test/Driver/clang_f_opts.c b/clang/test/Driver/clang_f_opts.c index 7454ce3d30f5f..42a930cb94513 100644 --- a/clang/test/Driver/clang_f_opts.c +++ b/clang/test/Driver/clang_f_opts.c @@ -642,3 +642,8 @@ // RUN: %clang -### --target=x86_64-pc-windows-msvc -fno-strict-aliasing %s 2>&1 | FileCheck -check-prefix=CHECK-NO-STRICT-ALIASING %s // CHECK-STRICT-ALIASING-NOT: -relaxed-aliasing // CHECK-NO-STRICT-ALIASING: -relaxed-aliasing + +// RUN: %clang -### -S -fpartial-inlining %s 2>&1 | FileCheck -check-prefix=CHECK-PARTIAL-INLINING %s +// CHECK-PARTIAL-INLINING: "-mllvm" "-enable-partial-inlining" +// RUN: %clang -### -S -fno-partial-inlining %s 2>&1 | FileCheck -check-prefix=CHECK-NO-PARTIAL-INLINING %s +// CHECK-NO-PARTIAL-INLINING: "-mllvm" "-disable-partial-inlining" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits