[cfe-commits] r152145 - in /cfe/trunk: include/clang/Driver/CC1Options.td include/clang/Driver/Options.td lib/Driver/Tools.cpp lib/Frontend/CompilerInvocation.cpp test/CodeGen/noinline.c test/Driver/noinline.c

Chad Rosier mcrosier at apple.com
Fri Mar 9 10:19:34 PST 2012


On Mar 8, 2012, at 8:14 PM, Daniel Dunbar wrote:

> On Thu, Mar 8, 2012 at 12:51 PM, Chad Rosier <mcrosier at apple.com> wrote:
>> Daniel,
>> Currently, -fno-inline is ignored entirely.  This flag is used to ignore the 'inline' keyword, but my understanding is that we don't currently support this keyword anyways.  Someone please speak up if I'm incorrect.
>> 
>> The -fno-inline-functions was previously be ignored, but now it can be used to disable automatic inlining.  Thus, with -fno-inline-functions the only functions that will be inlined are those marked with the always_inline attribute.
>> 
>> Does this clarify things?  Do you see a issues?
> 
> Ah, thanks.
> 
> No, I think this is the right way to go.
> 
> As for -fno-inline, I'm tempted to propose that in Clang we make
> -fno-inline a synonym for -fno-inline-functions, as I think this is a
> needless source of confusion. However, maybe it is best to ignore it
> completely (or reject it).

I'm prefer the first suggestion.  If we do begin supporting the inline keyword, then we can add it under the -fno-inline-functions flag.  I'm not fond of ignoring or rejecting a longstanding flag (despite the horrid naming).

> I find it unfortunate that GCC ruined these flags so that the short
> one has the most counterintuitive meaning, but I guess that is really
> neither here nor there...

You're telling me?  The purpose of this patch was to rename -fno-inline to -fno-inline-functions...  doh!

> - Daniel
> 
>> 
>>  Chad
>> 
>> 
>> On Mar 8, 2012, at 11:19 AM, Daniel Dunbar wrote:
>> 
>>> Hey Chad,
>>> 
>>> I'm having trouble following the patch below. Can you explain exactly
>>> what -fno-inline and -fno-inline-functions currently map to?
>>> 
>>> - Daniel
>>> 
>>> On Tue, Mar 6, 2012 at 1:17 PM, Chad Rosier <mcrosier at apple.com> wrote:
>>>> Author: mcrosier
>>>> Date: Tue Mar  6 15:17:19 2012
>>>> New Revision: 152145
>>>> 
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=152145&view=rev
>>>> Log:
>>>> [driver] What was implemented in r152130 was actually -fno-inline-functions, not
>>>> -fno-inline.
>>>> Part of rdar://10972766
>>>> 
>>>> Modified:
>>>>    cfe/trunk/include/clang/Driver/CC1Options.td
>>>>    cfe/trunk/include/clang/Driver/Options.td
>>>>    cfe/trunk/lib/Driver/Tools.cpp
>>>>    cfe/trunk/lib/Frontend/CompilerInvocation.cpp
>>>>    cfe/trunk/test/CodeGen/noinline.c
>>>>    cfe/trunk/test/Driver/noinline.c
>>>> 
>>>> Modified: cfe/trunk/include/clang/Driver/CC1Options.td
>>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=152145&r1=152144&r2=152145&view=diff
>>>> ==============================================================================
>>>> --- cfe/trunk/include/clang/Driver/CC1Options.td (original)
>>>> +++ cfe/trunk/include/clang/Driver/CC1Options.td Tue Mar  6 15:17:19 2012
>>>> @@ -503,8 +503,8 @@
>>>>   HelpText<"Allow GNU-extension keywords regardless of language standard">;
>>>>  def fgnu89_inline : Flag<"-fgnu89-inline">,
>>>>   HelpText<"Use the gnu89 inline semantics">;
>>>> -def fno_inline : Flag<"-fno-inline">,
>>>> -  HelpText<"Disable function inlining">;
>>>> +def fno_inline_functions : Flag<"-fno-inline-functions">,
>>>> +  HelpText<"Disable automatic function inlining">;
>>>>  def fno_gnu_keywords : Flag<"-fno-gnu-keywords">,
>>>>   HelpText<"Disallow GNU-extension keywords regardless of language standard">;
>>>>  def fdollars_in_identifiers : Flag<"-fdollars-in-identifiers">,
>>>> 
>>>> Modified: cfe/trunk/include/clang/Driver/Options.td
>>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=152145&r1=152144&r2=152145&view=diff
>>>> ==============================================================================
>>>> --- cfe/trunk/include/clang/Driver/Options.td (original)
>>>> +++ cfe/trunk/include/clang/Driver/Options.td Tue Mar  6 15:17:19 2012
>>>> @@ -419,8 +419,8 @@
>>>>  def fno_eliminate_unused_debug_symbols : Flag<"-fno-eliminate-unused-debug-symbols">, Group<f_Group>;
>>>>  def fno_exceptions : Flag<"-fno-exceptions">, Group<f_Group>;
>>>>  def fno_gnu_keywords : Flag<"-fno-gnu-keywords">, Group<f_Group>;
>>>> -def fno_inline_functions : Flag<"-fno-inline-functions">, Group<clang_ignored_f_Group>;
>>>> -def fno_inline : Flag<"-fno-inline">, Group<f_Group>;
>>>> +def fno_inline_functions : Flag<"-fno-inline-functions">, Group<f_Group>;
>>>> +def fno_inline : Flag<"-fno-inline">, Group<clang_ignored_f_Group>;
>>>>  def fno_keep_inline_functions : Flag<"-fno-keep-inline-functions">, Group<clang_ignored_f_Group>;
>>>>  def fno_lax_vector_conversions : Flag<"-fno-lax-vector-conversions">, Group<f_Group>;
>>>>  def fno_limit_debug_info : Flag<"-fno-limit-debug-info">, Group<f_Group>,
>>>> 
>>>> Modified: cfe/trunk/lib/Driver/Tools.cpp
>>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=152145&r1=152144&r2=152145&view=diff
>>>> ==============================================================================
>>>> --- cfe/trunk/lib/Driver/Tools.cpp (original)
>>>> +++ cfe/trunk/lib/Driver/Tools.cpp Tue Mar  6 15:17:19 2012
>>>> @@ -2168,8 +2168,8 @@
>>>>                    false))
>>>>     CmdArgs.push_back("-fgnu89-inline");
>>>> 
>>>> -  if (Args.hasArg(options::OPT_fno_inline))
>>>> -    CmdArgs.push_back("-fno-inline");
>>>> +  if (Args.hasArg(options::OPT_fno_inline_functions))
>>>> +    CmdArgs.push_back("-fno-inline-functions");
>>>> 
>>>>   // -fobjc-nonfragile-abi=0 is default.
>>>>   ObjCRuntime objCRuntime;
>>>> 
>>>> Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
>>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=152145&r1=152144&r2=152145&view=diff
>>>> ==============================================================================
>>>> --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original)
>>>> +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Tue Mar  6 15:17:19 2012
>>>> @@ -1104,8 +1104,8 @@
>>>>   // We must always run at least the always inlining pass.
>>>>   Opts.Inlining = (Opts.OptimizationLevel > 1) ? CodeGenOptions::NormalInlining
>>>>     : CodeGenOptions::OnlyAlwaysInlining;
>>>> -  // -fno-inline overrides OptimizationLevel > 1.
>>>> -  Opts.Inlining = Args.hasArg(OPT_fno_inline) ?
>>>> +  // -fno-inline-functions overrides OptimizationLevel > 1.
>>>> +  Opts.Inlining = Args.hasArg(OPT_fno_inline_functions) ?
>>>>     CodeGenOptions::OnlyAlwaysInlining : Opts.Inlining;
>>>> 
>>>>   Opts.DebugInfo = Args.hasArg(OPT_g);
>>>> @@ -1939,7 +1939,8 @@
>>>>   // optimization level and -fno-inline, not actually whether the backend has
>>>>   // inlining enabled.
>>>>   //
>>>> -  Opts.NoInline = !Opt || Args.hasArg(OPT_fno_inline);
>>>> +  // FIXME: This is affected by other options (-fno-inline).
>>>> +  Opts.NoInline = !Opt;
>>>> 
>>>>   Opts.FastMath = Args.hasArg(OPT_ffast_math);
>>>> 
>>>> 
>>>> Modified: cfe/trunk/test/CodeGen/noinline.c
>>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/noinline.c?rev=152145&r1=152144&r2=152145&view=diff
>>>> ==============================================================================
>>>> --- cfe/trunk/test/CodeGen/noinline.c (original)
>>>> +++ cfe/trunk/test/CodeGen/noinline.c Tue Mar  6 15:17:19 2012
>>>> @@ -1,7 +1,7 @@
>>>> -// Make sure -fno-inline is behaving correctly.
>>>> +// Make sure -fno-inline-functions is behaving correctly.
>>>>  // rdar://10972766
>>>> 
>>>> -// RUN: %clang_cc1 -O3 -fno-inline -emit-llvm %s -o - | FileCheck -check-prefix=NOINLINE %s
>>>> +// RUN: %clang_cc1 -O3 -fno-inline-functions -emit-llvm %s -o - | FileCheck -check-prefix=NOINLINE %s
>>>> 
>>>>  int dont_inline_me(int a, int b) { return(a+b); }
>>>> 
>>>> 
>>>> Modified: cfe/trunk/test/Driver/noinline.c
>>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/noinline.c?rev=152145&r1=152144&r2=152145&view=diff
>>>> ==============================================================================
>>>> --- cfe/trunk/test/Driver/noinline.c (original)
>>>> +++ cfe/trunk/test/Driver/noinline.c Tue Mar  6 15:17:19 2012
>>>> @@ -1,9 +1,9 @@
>>>> -// Make sure the driver is correctly passing -fno-inline
>>>> +// Make sure the driver is correctly passing -fno-inline-functions
>>>>  // rdar://10972766
>>>> 
>>>>  // RUN: %clang -target x86_64-apple-darwin10 \
>>>> -// RUN:   -fno-inline -### -fsyntax-only %s 2> %t
>>>> +// RUN:   -fno-inline-functions -### -fsyntax-only %s 2> %t
>>>>  // RUN: FileCheck --check-prefix=CHECK < %t %s
>>>> 
>>>>  // CHECK: clang
>>>> -// CHECK: "-fno-inline"
>>>> +// CHECK: "-fno-inline-functions"
>>>> 
>>>> 
>>>> _______________________________________________
>>>> cfe-commits mailing list
>>>> cfe-commits at cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>> 




More information about the cfe-commits mailing list