diff options
| author | Chad Rosier <mcrosier@apple.com> | 2012-03-14 23:32:11 +0000 | 
|---|---|---|
| committer | Chad Rosier <mcrosier@apple.com> | 2012-03-14 23:32:11 +0000 | 
| commit | 883b2579aa1677abdbae07341fc78a930e9ae88a (patch) | |
| tree | 9a6cca2a3adad2d6bb1486f1250690349442373c /clang/lib | |
| parent | 01401cec0001a37790f7178ddc82364e59d96a90 (diff) | |
| download | bcm5719-llvm-883b2579aa1677abdbae07341fc78a930e9ae88a.tar.gz bcm5719-llvm-883b2579aa1677abdbae07341fc78a930e9ae88a.zip  | |
[frontend] Add support for disabling the "inline" keyword using 
-fno-inline-functions.
This behaves much like -fno-inline in gcc, but based on a discussion with 
Daniel it was decided that -fno-inline-functions should subsume -fno-inline.
Please speak up if you object.  The -fno-inline flag remains ignored.
Final part of rdar://10972766
llvm-svn: 152754
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/CodeGen/CodeGenFunction.cpp | 15 | ||||
| -rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 5 | 
2 files changed, 11 insertions, 9 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp index b80ceddbe37..06e90b66485 100644 --- a/clang/lib/CodeGen/CodeGenFunction.cpp +++ b/clang/lib/CodeGen/CodeGenFunction.cpp @@ -266,13 +266,14 @@ void CodeGenFunction::StartFunction(GlobalDecl GD, QualType RetTy,    // Pass inline keyword to optimizer if it appears explicitly on any    // declaration. -  if (const FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(D)) -    for (FunctionDecl::redecl_iterator RI = FD->redecls_begin(), -           RE = FD->redecls_end(); RI != RE; ++RI) -      if (RI->isInlineSpecified()) { -        Fn->addFnAttr(llvm::Attribute::InlineHint); -        break; -      } +  if (!CGM.getCodeGenOpts().NoInline)  +    if (const FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(D)) +      for (FunctionDecl::redecl_iterator RI = FD->redecls_begin(), +             RE = FD->redecls_end(); RI != RE; ++RI) +        if (RI->isInlineSpecified()) { +          Fn->addFnAttr(llvm::Attribute::InlineHint); +          break; +        }    if (getContext().getLangOpts().OpenCL) {      // Add metadata for a kernel function. diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 13a9897f071..ffc1276f5a6 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -1165,8 +1165,9 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,    Opts.Inlining = (Opts.OptimizationLevel > 1) ? CodeGenOptions::NormalInlining      : CodeGenOptions::OnlyAlwaysInlining;    // -fno-inline-functions overrides OptimizationLevel > 1. -  Opts.Inlining = Args.hasArg(OPT_fno_inline_functions) ?  -    CodeGenOptions::OnlyAlwaysInlining : Opts.Inlining; +  Opts.NoInline = Args.hasArg(OPT_fno_inline_functions); +  Opts.Inlining = Opts.NoInline ? CodeGenOptions::OnlyAlwaysInlining : +    Opts.Inlining;    Opts.DebugInfo = Args.hasArg(OPT_g);    Opts.LimitDebugInfo = !Args.hasArg(OPT_fno_limit_debug_info)  | 

