r239481 - Pass down the -flto option to the -cc1 job, and from there into the
Teresa Johnson
tejohnson at google.com
Thu Jun 11 20:17:04 PDT 2015
Hi Nico,
Sorry about that. Since I am heading out on vacation for a week tomorrow I
went ahead and reverted for now.
Teresa
On Thu, Jun 11, 2015 at 6:07 PM, Nico Weber <thakis at chromium.org> wrote:
> Hi Teresa,
>
> this (well, 239480 really) seems to break building dynamic libraries
> pretty decisively:
> https://code.google.com/p/chromium/issues/detail?id=499508#c3 Can you
> take a look, and if it takes a while to investigate, revert this for now?
>
> Thanks,
> Nico
>
> On Wed, Jun 10, 2015 at 10:49 AM, Teresa Johnson <tejohnson at google.com>
> wrote:
>
>> Author: tejohnson
>> Date: Wed Jun 10 12:49:45 2015
>> New Revision: 239481
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=239481&view=rev
>> Log:
>> Pass down the -flto option to the -cc1 job, and from there into the
>> CodeGenOptions and onto the PassManagerBuilder. This enables gating
>> the new EliminateAvailableExternally module pass on whether we are
>> preparing for LTO.
>>
>> If we are preparing for LTO (e.g. a -flto -c compile), the new pass is not
>> included as we want to preserve available externally functions for
>> possible
>> link time inlining.
>>
>> Modified:
>> cfe/trunk/include/clang/Driver/Options.td
>> cfe/trunk/include/clang/Frontend/CodeGenOptions.def
>> cfe/trunk/lib/CodeGen/BackendUtil.cpp
>> cfe/trunk/lib/Driver/Tools.cpp
>> cfe/trunk/lib/Frontend/CompilerInvocation.cpp
>> cfe/trunk/test/CodeGen/available-externally-suppress.c
>>
>> Modified: cfe/trunk/include/clang/Driver/Options.td
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=239481&r1=239480&r2=239481&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/include/clang/Driver/Options.td (original)
>> +++ cfe/trunk/include/clang/Driver/Options.td Wed Jun 10 12:49:45 2015
>> @@ -636,7 +636,7 @@ def flat__namespace : Flag<["-"], "flat_
>> def flax_vector_conversions : Flag<["-"], "flax-vector-conversions">,
>> Group<f_Group>;
>> def flimited_precision_EQ : Joined<["-"], "flimited-precision=">,
>> Group<f_Group>;
>> def flto_EQ : Joined<["-"], "flto=">,
>> Group<clang_ignored_gcc_optimization_f_Group>;
>> -def flto : Flag<["-"], "flto">, Group<f_Group>;
>> +def flto : Flag<["-"], "flto">, Flags<[CC1Option]>, Group<f_Group>;
>> def fno_lto : Flag<["-"], "fno-lto">, Group<f_Group>;
>> def fmacro_backtrace_limit_EQ : Joined<["-"], "fmacro-backtrace-limit=">,
>> Group<f_Group>, Flags<[DriverOption,
>> CoreOption]>;
>>
>> Modified: cfe/trunk/include/clang/Frontend/CodeGenOptions.def
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CodeGenOptions.def?rev=239481&r1=239480&r2=239481&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/include/clang/Frontend/CodeGenOptions.def (original)
>> +++ cfe/trunk/include/clang/Frontend/CodeGenOptions.def Wed Jun 10
>> 12:49:45 2015
>> @@ -67,6 +67,8 @@ CODEGENOPT(InstrumentFunctions , 1, 0) /
>> CODEGENOPT(InstrumentForProfiling , 1, 0) ///< Set when -pg is enabled.
>> CODEGENOPT(LessPreciseFPMAD , 1, 0) ///< Enable less precise MAD
>> instructions to
>> ///< be generated.
>> +CODEGENOPT(PrepareForLTO , 1, 0) ///< Set when -flto is enabled on
>> the
>> + ///< compile step.
>> CODEGENOPT(MergeAllConstants , 1, 1) ///< Merge identical constants.
>> CODEGENOPT(MergeFunctions , 1, 0) ///< Set when -fmerge-functions is
>> enabled.
>> CODEGENOPT(MSVolatile , 1, 0) ///< Set when /volatile:ms is
>> enabled.
>>
>> Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=239481&r1=239480&r2=239481&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original)
>> +++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Wed Jun 10 12:49:45 2015
>> @@ -286,6 +286,7 @@ void EmitAssemblyHelper::CreatePasses()
>> PMBuilder.DisableUnitAtATime = !CodeGenOpts.UnitAtATime;
>> PMBuilder.DisableUnrollLoops = !CodeGenOpts.UnrollLoops;
>> PMBuilder.MergeFunctions = CodeGenOpts.MergeFunctions;
>> + PMBuilder.PrepareForLTO = CodeGenOpts.PrepareForLTO;
>> PMBuilder.RerollLoops = CodeGenOpts.RerollLoops;
>>
>> PMBuilder.addExtension(PassManagerBuilder::EP_EarlyAsPossible,
>>
>> Modified: cfe/trunk/lib/Driver/Tools.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=239481&r1=239480&r2=239481&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Driver/Tools.cpp (original)
>> +++ cfe/trunk/lib/Driver/Tools.cpp Wed Jun 10 12:49:45 2015
>> @@ -2703,6 +2703,10 @@ void Clang::ConstructJob(Compilation &C,
>> assert((isa<CompileJobAction>(JA) || isa<BackendJobAction>(JA)) &&
>> "Invalid action for clang tool.");
>>
>> + if (JA.getType() == types::TY_LTO_IR ||
>> + JA.getType() == types::TY_LTO_BC) {
>> + CmdArgs.push_back("-flto");
>> + }
>> if (JA.getType() == types::TY_Nothing) {
>> CmdArgs.push_back("-fsyntax-only");
>> } else if (JA.getType() == types::TY_LLVM_IR ||
>>
>> Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=239481&r1=239480&r2=239481&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original)
>> +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Wed Jun 10 12:49:45 2015
>> @@ -485,6 +485,8 @@ static bool ParseCodeGenArgs(CodeGenOpti
>>
>> Opts.MergeFunctions = Args.hasArg(OPT_fmerge_functions);
>>
>> + Opts.PrepareForLTO = Args.hasArg(OPT_flto);
>> +
>> Opts.MSVolatile = Args.hasArg(OPT_fms_volatile);
>>
>> Opts.VectorizeBB = Args.hasArg(OPT_vectorize_slp_aggressive);
>>
>> Modified: cfe/trunk/test/CodeGen/available-externally-suppress.c
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/available-externally-suppress.c?rev=239481&r1=239480&r2=239481&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/CodeGen/available-externally-suppress.c (original)
>> +++ cfe/trunk/test/CodeGen/available-externally-suppress.c Wed Jun 10
>> 12:49:45 2015
>> @@ -1,12 +1,18 @@
>> // RUN: %clang_cc1 -emit-llvm -o - -triple x86_64-apple-darwin10 %s |
>> FileCheck %s
>> +// RUN: %clang_cc1 -O2 -fno-inline -emit-llvm -o - -triple
>> x86_64-apple-darwin10 %s | FileCheck %s
>> +// RUN: %clang_cc1 -flto -O2 -fno-inline -emit-llvm -o - -triple
>> x86_64-apple-darwin10 %s | FileCheck %s -check-prefix=LTO
>>
>> // Ensure that we don't emit available_externally functions at -O0.
>> +// Also should not emit them at -O2, unless -flto is present in which
>> case
>> +// we should preserve them for link-time inlining decisions.
>> int x;
>>
>> inline void f0(int y) { x = y; }
>>
>> // CHECK-LABEL: define void @test()
>> // CHECK: declare void @f0(i32)
>> +// LTO-LABEL: define void @test()
>> +// LTO: define available_externally void @f0
>> void test() {
>> f0(17);
>> }
>> @@ -19,9 +25,13 @@ inline int __attribute__((always_inline)
>> }
>>
>> // CHECK: @test1
>> +// LTO: @test1
>> int test1(int x) {
>> // CHECK: br i1
>> // CHECK-NOT: call {{.*}} @f1
>> // CHECK: ret i32
>> + // LTO: br i1
>> + // LTO-NOT: call {{.*}} @f1
>> + // LTO: ret i32
>> return f1(x);
>> }
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>
>
--
Teresa Johnson | Software Engineer | tejohnson at google.com | 408-460-2413
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150611/e6e92c5d/attachment.html>
More information about the llvm-commits
mailing list