Skip to content

Commit d5679e5

Browse files
author
Jian Yang
committed
[clang] Add partial-inlining options
Adaptation of adding -fpartial-inlining and -fno-partial-inlining options with GCC.
1 parent dc683d2 commit d5679e5

File tree

3 files changed

+21
-0
lines changed

3 files changed

+21
-0
lines changed

clang/include/clang/Driver/Options.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3134,6 +3134,10 @@ def fno_inline_functions : Flag<["-"], "fno-inline-functions">, Group<f_clang_Gr
31343134
Visibility<[ClangOption, CC1Option]>;
31353135
def fno_inline : Flag<["-"], "fno-inline">, Group<f_clang_Group>,
31363136
Visibility<[ClangOption, CC1Option]>;
3137+
def fpartial_inlining : Flag<["-"], "fpartial-inlining">, Group<f_clang_Group>,
3138+
Visibility<[ClangOption, CC1Option]>;
3139+
def fno_partial_inlining : Flag<["-"], "fno-partial-inlining">, Group<f_clang_Group>,
3140+
Visibility<[ClangOption, CC1Option]>;
31373141
def fno_global_isel : Flag<["-"], "fno-global-isel">, Group<f_clang_Group>,
31383142
HelpText<"Disables the global instruction selector">;
31393143
def fno_experimental_isel : Flag<["-"], "fno-experimental-isel">, Group<f_clang_Group>,

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6923,6 +6923,18 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
69236923

69246924
Args.AddLastArg(CmdArgs, options::OPT_finline_max_stacksize_EQ);
69256925

6926+
// Adaptation of partial-inlining option with GCC.
6927+
if (Arg *A = Args.getLastArg(options::OPT_fno_partial_inlining,
6928+
options::OPT_fpartial_inlining)) {
6929+
if (A->getOption().matches(options::OPT_fno_partial_inlining)) {
6930+
CmdArgs.push_back("-mllvm");
6931+
CmdArgs.push_back("-disable-partial-inlining");
6932+
} else if (A->getOption().matches(options::OPT_fpartial_inlining)) {
6933+
CmdArgs.push_back("-mllvm");
6934+
CmdArgs.push_back("-enable-partial-inlining");
6935+
}
6936+
}
6937+
69266938
// FIXME: Find a better way to determine whether we are in C++20.
69276939
bool HaveCxx20 =
69286940
Std &&

clang/test/Driver/clang_f_opts.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,3 +611,8 @@
611611
// CHECK-INT-OBJEMITTER-NOT: unsupported option '-fintegrated-objemitter' for target
612612
// RUN: not %clang -### -fno-integrated-objemitter --target=x86_64 %s 2>&1 | FileCheck -check-prefix=CHECK-NOINT-OBJEMITTER %s
613613
// CHECK-NOINT-OBJEMITTER: unsupported option '-fno-integrated-objemitter' for target
614+
615+
// RUN: %clang -### -S -fpartial-inlining %s 2>&1 | FileCheck -check-prefix=CHECK-PARTIAL-INLINING %s
616+
// CHECK-PARTIAL-INLINING: "-mllvm" "-enable-partial-inlining"
617+
// RUN: %clang -### -S -fno-partial-inlining %s 2>&1 | FileCheck -check-prefix=CHECK-NO-PARTIAL-INLINING %s
618+
// CHECK-NO-PARTIAL-INLINING: "-mllvm" "-disable-partial-inlining"

0 commit comments

Comments
 (0)