r250402 - Revert "Clang support for -flto=thin." (bot failures)
Teresa Johnson via cfe-commits
cfe-commits at lists.llvm.org
Thu Oct 15 06:41:51 PDT 2015
Author: tejohnson
Date: Thu Oct 15 08:41:51 2015
New Revision: 250402
URL: http://llvm.org/viewvc/llvm-project?rev=250402&view=rev
Log:
Revert "Clang support for -flto=thin." (bot failures)
Rolling this back for now since there are a couple of bot failures on
the new tests I added, and I won't have a chance to look at them in detail
until later this afternoon. I think the new tests need some restrictions on
having the gold plugin available.
This reverts commit r250398.
Removed:
cfe/trunk/test/Driver/thinlto.c
cfe/trunk/test/Misc/thinlto.c
Modified:
cfe/trunk/include/clang/Driver/Driver.h
cfe/trunk/include/clang/Driver/Options.td
cfe/trunk/include/clang/Frontend/CodeGenOptions.def
cfe/trunk/lib/CodeGen/BackendUtil.cpp
cfe/trunk/lib/Driver/Driver.cpp
cfe/trunk/lib/Driver/SanitizerArgs.cpp
cfe/trunk/lib/Driver/Tools.cpp
cfe/trunk/lib/Frontend/CompilerInvocation.cpp
cfe/trunk/test/Driver/clang_f_opts.c
cfe/trunk/test/Driver/lto.c
Modified: cfe/trunk/include/clang/Driver/Driver.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Driver.h?rev=250402&r1=250401&r2=250402&view=diff
==============================================================================
--- cfe/trunk/include/clang/Driver/Driver.h (original)
+++ cfe/trunk/include/clang/Driver/Driver.h Thu Oct 15 08:41:51 2015
@@ -52,14 +52,6 @@ namespace driver {
class SanitizerArgs;
class ToolChain;
-/// Describes the kind of LTO mode selected via -f(no-)?lto(=.*)? options.
-enum LTOKind {
- LTOK_None,
- LTOK_Full,
- LTOK_Thin,
- LTOK_Unknown
-};
-
/// Driver - Encapsulate logic for constructing compilation processes
/// from a set of gcc-driver-like command line arguments.
class Driver {
@@ -82,9 +74,6 @@ class Driver {
SaveTempsObj
} SaveTemps;
- /// LTO mode selected via -f(no-)?lto(=.*)? options.
- LTOKind LTOMode;
-
public:
// Diag - Forwarding function for diagnostics.
DiagnosticBuilder Diag(unsigned DiagID) const {
@@ -422,17 +411,9 @@ public:
/// handle this action.
bool ShouldUseClangCompiler(const JobAction &JA) const;
- /// Returns true if we are performing any kind of LTO.
- bool isUsingLTO() const { return LTOMode != LTOK_None; }
-
- /// Get the specific kind of LTO being performed.
- LTOKind getLTOMode() const { return LTOMode; }
+ bool IsUsingLTO(const llvm::opt::ArgList &Args) const;
private:
- /// Parse the \p Args list for LTO options and record the type of LTO
- /// compilation based on which -f(no-)?lto(=.*)? option occurs last.
- void setLTOMode(const llvm::opt::ArgList &Args);
-
/// \brief Retrieves a ToolChain for a particular \p Target triple.
///
/// Will cache ToolChains for the life of the driver object, and create them
Modified: cfe/trunk/include/clang/Driver/Options.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=250402&r1=250401&r2=250402&view=diff
==============================================================================
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Thu Oct 15 08:41:51 2015
@@ -687,12 +687,9 @@ def finstrument_functions : Flag<["-"],
def flat__namespace : Flag<["-"], "flat_namespace">;
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=">, Flags<[CC1Option]>, Group<f_Group>,
- HelpText<"Set LTO mode to either 'full' or 'thin'">;
-def flto : Flag<["-"], "flto">, Flags<[CC1Option]>, Group<f_Group>,
- HelpText<"Enable LTO in 'full' mode">;
-def fno_lto : Flag<["-"], "fno-lto">, Group<f_Group>,
- HelpText<"Disable LTO mode (default)">;
+def flto_EQ : Joined<["-"], "flto=">, Group<clang_ignored_gcc_optimization_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]>;
def fmerge_all_constants : Flag<["-"], "fmerge-all-constants">, Group<f_Group>;
Modified: cfe/trunk/include/clang/Frontend/CodeGenOptions.def
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CodeGenOptions.def?rev=250402&r1=250401&r2=250402&view=diff
==============================================================================
--- cfe/trunk/include/clang/Frontend/CodeGenOptions.def (original)
+++ cfe/trunk/include/clang/Frontend/CodeGenOptions.def Thu Oct 15 08:41:51 2015
@@ -73,8 +73,6 @@ CODEGENOPT(LessPreciseFPMAD , 1, 0) ///
///< be generated.
CODEGENOPT(PrepareForLTO , 1, 0) ///< Set when -flto is enabled on the
///< compile step.
-CODEGENOPT(EmitFunctionSummary, 1, 0) ///< Set when -flto=thin 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=250402&r1=250401&r2=250402&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original)
+++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Thu Oct 15 08:41:51 2015
@@ -605,8 +605,8 @@ void EmitAssemblyHelper::EmitAssembly(Ba
break;
case Backend_EmitBC:
- getPerModulePasses()->add(createBitcodeWriterPass(
- *OS, CodeGenOpts.EmitLLVMUseLists, CodeGenOpts.EmitFunctionSummary));
+ getPerModulePasses()->add(
+ createBitcodeWriterPass(*OS, CodeGenOpts.EmitLLVMUseLists));
break;
case Backend_EmitLL:
Modified: cfe/trunk/lib/Driver/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=250402&r1=250401&r2=250402&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/Driver.cpp (original)
+++ cfe/trunk/lib/Driver/Driver.cpp Thu Oct 15 08:41:51 2015
@@ -50,8 +50,7 @@ Driver::Driver(StringRef ClangExecutable
DiagnosticsEngine &Diags,
IntrusiveRefCntPtr<vfs::FileSystem> VFS)
: Opts(createDriverOptTable()), Diags(Diags), VFS(VFS), Mode(GCCMode),
- SaveTemps(SaveTempsNone), LTOMode(LTOK_None),
- ClangExecutable(ClangExecutable),
+ SaveTemps(SaveTempsNone), ClangExecutable(ClangExecutable),
SysRoot(DEFAULT_SYSROOT), UseStdLib(true),
DefaultTargetTriple(DefaultTargetTriple),
DriverTitle("clang LLVM compiler"), CCPrintOptionsFilename(nullptr),
@@ -367,31 +366,6 @@ static llvm::Triple computeTargetTriple(
return Target;
}
-// \brief Parse the LTO options and record the type of LTO compilation
-// based on which -f(no-)?lto(=.*)? option occurs last.
-void Driver::setLTOMode(const llvm::opt::ArgList &Args) {
- LTOMode = LTOK_None;
- if (!Args.hasFlag(options::OPT_flto, options::OPT_flto_EQ,
- options::OPT_fno_lto, false))
- return;
-
- StringRef LTOName("full");
-
- const Arg *A = Args.getLastArg(options::OPT_flto_EQ);
- if (A) LTOName = A->getValue();
-
- LTOMode = llvm::StringSwitch<LTOKind>(LTOName)
- .Case("full", LTOK_Full)
- .Case("thin", LTOK_Thin)
- .Default(LTOK_Unknown);
-
- if (LTOMode == LTOK_Unknown) {
- assert(A);
- Diag(diag::err_drv_unsupported_option_argument) << A->getOption().getName()
- << A->getValue();
- }
-}
-
Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) {
llvm::PrettyStackTraceString CrashInfo("Compilation construction");
@@ -475,8 +449,6 @@ Compilation *Driver::BuildCompilation(Ar
.Default(SaveTempsCwd);
}
- setLTOMode(Args);
-
std::unique_ptr<llvm::opt::InputArgList> UArgs =
llvm::make_unique<InputArgList>(std::move(Args));
@@ -1595,7 +1567,7 @@ Driver::ConstructPhaseAction(const ToolC
types::TY_LLVM_BC);
}
case phases::Backend: {
- if (isUsingLTO()) {
+ if (IsUsingLTO(Args)) {
types::ID Output =
Args.hasArg(options::OPT_S) ? types::TY_LTO_IR : types::TY_LTO_BC;
return llvm::make_unique<BackendJobAction>(std::move(Input), Output);
@@ -1616,6 +1588,10 @@ Driver::ConstructPhaseAction(const ToolC
llvm_unreachable("invalid phase in ConstructPhaseAction");
}
+bool Driver::IsUsingLTO(const ArgList &Args) const {
+ return Args.hasFlag(options::OPT_flto, options::OPT_fno_lto, false);
+}
+
void Driver::BuildJobs(Compilation &C) const {
llvm::PrettyStackTraceString CrashInfo("Building compilation jobs");
Modified: cfe/trunk/lib/Driver/SanitizerArgs.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/SanitizerArgs.cpp?rev=250402&r1=250401&r2=250402&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/SanitizerArgs.cpp (original)
+++ cfe/trunk/lib/Driver/SanitizerArgs.cpp Thu Oct 15 08:41:51 2015
@@ -283,7 +283,7 @@ SanitizerArgs::SanitizerArgs(const ToolC
}
// Check that LTO is enabled if we need it.
- if ((Kinds & NeedsLTO) && !D.isUsingLTO()) {
+ if ((Kinds & NeedsLTO) && !D.IsUsingLTO(Args)) {
D.Diag(diag::err_drv_argument_only_allowed_with)
<< lastArgumentForMask(D, Args, Kinds & NeedsLTO) << "-flto";
}
Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=250402&r1=250401&r2=250402&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Thu Oct 15 08:41:51 2015
@@ -1648,7 +1648,7 @@ static std::string getCPUName(const ArgL
}
static void AddGoldPlugin(const ToolChain &ToolChain, const ArgList &Args,
- ArgStringList &CmdArgs, bool IsThinLTO) {
+ ArgStringList &CmdArgs) {
// Tell the linker to load the plugin. This has to come before AddLinkerInputs
// as gold requires -plugin to come before any -plugin-opt that -Wl might
// forward.
@@ -1664,8 +1664,6 @@ static void AddGoldPlugin(const ToolChai
std::string CPU = getCPUName(Args, ToolChain.getTriple());
if (!CPU.empty())
CmdArgs.push_back(Args.MakeArgString(Twine("-plugin-opt=mcpu=") + CPU));
-
- if (IsThinLTO) CmdArgs.push_back("-plugin-opt=thinlto");
}
/// This is a helper function for validating the optional refinement step
@@ -2847,7 +2845,6 @@ static VersionTuple getMSCompatibilityVe
static void claimNoWarnArgs(const ArgList &Args) {
// Don't warn about unused -f(no-)?lto. This can happen when we're
// preprocessing, precompiling or assembling.
- Args.ClaimAllArgs(options::OPT_flto_EQ);
Args.ClaimAllArgs(options::OPT_flto);
Args.ClaimAllArgs(options::OPT_fno_lto);
}
@@ -3275,6 +3272,10 @@ void Clang::ConstructJob(Compilation &C,
} else {
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 ||
@@ -3305,9 +3306,6 @@ void Clang::ConstructJob(Compilation &C,
// the use-list order, since serialization to bitcode is part of the flow.
if (JA.getType() == types::TY_LLVM_BC)
CmdArgs.push_back("-emit-llvm-uselists");
-
- if (D.isUsingLTO())
- Args.AddLastArg(CmdArgs, options::OPT_flto, options::OPT_flto_EQ);
}
// We normally speed up the clang process a bit by skipping destructors at
@@ -6458,8 +6456,8 @@ void cloudabi::Linker::ConstructJob(Comp
{options::OPT_T_Group, options::OPT_e, options::OPT_s,
options::OPT_t, options::OPT_Z_Flag, options::OPT_r});
- if (D.isUsingLTO())
- AddGoldPlugin(ToolChain, Args, CmdArgs, D.getLTOMode() == LTOK_Thin);
+ if (D.IsUsingLTO(Args))
+ AddGoldPlugin(ToolChain, Args, CmdArgs);
AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
@@ -6602,7 +6600,7 @@ void darwin::Linker::AddLinkArgs(Compila
options::OPT_fno_application_extension, false))
CmdArgs.push_back("-application_extension");
- if (D.isUsingLTO()) {
+ if (D.IsUsingLTO(Args)) {
// If we are using LTO, then automatically create a temporary file path for
// the linker to use, so that it's lifetime will extend past a possible
// dsymutil step.
@@ -7604,8 +7602,8 @@ void freebsd::Linker::ConstructJob(Compi
Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag);
Args.AddAllArgs(CmdArgs, options::OPT_r);
- if (D.isUsingLTO())
- AddGoldPlugin(ToolChain, Args, CmdArgs, D.getLTOMode() == LTOK_Thin);
+ if (D.IsUsingLTO(Args))
+ AddGoldPlugin(ToolChain, Args, CmdArgs);
bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs);
AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
@@ -8479,8 +8477,8 @@ void gnutools::Linker::ConstructJob(Comp
for (const auto &Path : Paths)
CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + Path));
- if (D.isUsingLTO())
- AddGoldPlugin(ToolChain, Args, CmdArgs, D.getLTOMode() == LTOK_Thin);
+ if (D.IsUsingLTO(Args))
+ AddGoldPlugin(ToolChain, Args, CmdArgs);
if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle))
CmdArgs.push_back("--no-demangle");
Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=250402&r1=250401&r2=250402&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original)
+++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Thu Oct 15 08:41:51 2015
@@ -499,9 +499,7 @@ static bool ParseCodeGenArgs(CodeGenOpti
Opts.MergeFunctions = Args.hasArg(OPT_fmerge_functions);
- Opts.PrepareForLTO = Args.hasArg(OPT_flto, OPT_flto_EQ);
- const Arg *A = Args.getLastArg(OPT_flto, OPT_flto_EQ);
- Opts.EmitFunctionSummary = A && A->containsValue("thin");
+ Opts.PrepareForLTO = Args.hasArg(OPT_flto);
Opts.MSVolatile = Args.hasArg(OPT_fms_volatile);
Modified: cfe/trunk/test/Driver/clang_f_opts.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/clang_f_opts.c?rev=250402&r1=250401&r2=250402&view=diff
==============================================================================
--- cfe/trunk/test/Driver/clang_f_opts.c (original)
+++ cfe/trunk/test/Driver/clang_f_opts.c Thu Oct 15 08:41:51 2015
@@ -373,7 +373,7 @@
// CHECK-WARNING-DAG: optimization flag '-ftracer' is not supported
// CHECK-WARNING-DAG: optimization flag '-funroll-all-loops' is not supported
// CHECK-WARNING-DAG: optimization flag '-funswitch-loops' is not supported
-// CHECK-WARNING-DAG: unsupported argument '1' to option 'flto='
+// CHECK-WARNING-DAG: optimization flag '-flto=1' is not supported
// CHECK-WARNING-DAG: optimization flag '-falign-labels' is not supported
// CHECK-WARNING-DAG: optimization flag '-falign-labels=100' is not supported
// CHECK-WARNING-DAG: optimization flag '-falign-loops' is not supported
Modified: cfe/trunk/test/Driver/lto.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/lto.c?rev=250402&r1=250401&r2=250402&view=diff
==============================================================================
--- cfe/trunk/test/Driver/lto.c (original)
+++ cfe/trunk/test/Driver/lto.c Thu Oct 15 08:41:51 2015
@@ -1,51 +1,25 @@
// -flto causes a switch to llvm-bc object files.
-// RUN: %clang -ccc-print-phases -c %s -flto 2> %t
-// RUN: FileCheck -check-prefix=CHECK-COMPILE-ACTIONS < %t %s
-//
-// CHECK-COMPILE-ACTIONS: 2: compiler, {1}, ir
-// CHECK-COMPILE-ACTIONS: 3: backend, {2}, lto-bc
-
-// RUN: %clang -ccc-print-phases %s -flto 2> %t
-// RUN: FileCheck -check-prefix=CHECK-COMPILELINK-ACTIONS < %t %s
-//
-// CHECK-COMPILELINK-ACTIONS: 0: input, "{{.*}}lto.c", c
-// CHECK-COMPILELINK-ACTIONS: 1: preprocessor, {0}, cpp-output
-// CHECK-COMPILELINK-ACTIONS: 2: compiler, {1}, ir
-// CHECK-COMPILELINK-ACTIONS: 3: backend, {2}, lto-bc
-// CHECK-COMPILELINK-ACTIONS: 4: linker, {3}, image
+// RUN: %clang -ccc-print-phases -c %s -flto 2> %t.log
+// RUN: grep '2: compiler, {1}, ir' %t.log
+// RUN: grep '3: backend, {2}, lto-bc' %t.log
+
+// RUN: %clang -ccc-print-phases %s -flto 2> %t.log
+// RUN: grep '0: input, ".*lto.c", c' %t.log
+// RUN: grep '1: preprocessor, {0}, cpp-output' %t.log
+// RUN: grep '2: compiler, {1}, ir' %t.log
+// RUN: grep '3: backend, {2}, lto-bc' %t.log
+// RUN: grep '4: linker, {3}, image' %t.log
// llvm-bc and llvm-ll outputs need to match regular suffixes
// (unfortunately).
-// RUN: %clang %s -flto -save-temps -### 2> %t
-// RUN: FileCheck -check-prefix=CHECK-COMPILELINK-SUFFIXES < %t %s
-//
-// CHECK-COMPILELINK-SUFFIXES: "-o" "{{.*}}lto.i" "-x" "c" "{{.*}}lto.c"
-// CHECK-COMPILELINK-SUFFIXES: "-o" "{{.*}}lto.bc" {{.*}}"{{.*}}lto.i"
-// CHECK-COMPILELINK-SUFFIXES: "-o" "{{.*}}lto.o" {{.*}}"{{.*}}lto.bc"
-// CHECK-COMPILELINK-SUFFIXES: "{{.*}}a.{{(out|exe)}}" {{.*}}"{{.*}}lto.o"
+// RUN: %clang %s -flto -save-temps -### 2> %t.log
+// RUN: grep '"-o" ".*lto\.i" "-x" "c" ".*lto\.c"' %t.log
+// RUN: grep '"-o" ".*lto\.bc" .*".*lto\.i"' %t.log
+// RUN: grep '"-o" ".*lto\.o" .*".*lto\.bc"' %t.log
+// RUN: grep '".*a\.\(out\|exe\)" .*".*lto\.o"' %t.log
-// RUN: %clang %s -flto -S -### 2> %t
-// RUN: FileCheck -check-prefix=CHECK-COMPILE-SUFFIXES < %t %s
-//
-// CHECK-COMPILE-SUFFIXES: "-o" "{{.*}}lto.s" "-x" "c" "{{.*}}lto.c"
+// RUN: %clang %s -flto -S -### 2> %t.log
+// RUN: grep '"-o" ".*lto\.s" "-x" "c" ".*lto\.c"' %t.log
// RUN: not %clang %s -emit-llvm 2>&1 | FileCheck --check-prefix=LLVM-LINK %s
// LLVM-LINK: -emit-llvm cannot be used when linking
-
-// -flto should cause link using gold plugin
-// RUN: %clang -### %s -flto 2> %t
-// RUN: FileCheck -check-prefix=CHECK-LINK-LTO-ACTION < %t %s
-//
-// CHECK-LINK-LTO-ACTION: "-plugin" "{{.*}}/LLVMgold.so"
-
-// -flto=full should cause link using gold plugin
-// RUN: %clang -### %s -flto=full 2> %t
-// RUN: FileCheck -check-prefix=CHECK-LINK-FULL-ACTION < %t %s
-//
-// CHECK-LINK-FULL-ACTION: "-plugin" "{{.*}}/LLVMgold.so"
-
-// Check that subsequent -fno-lto takes precedence
-// RUN: %clang -### %s -flto=full -fno-lto 2> %t
-// RUN: FileCheck -check-prefix=CHECK-LINK-NOLTO-ACTION < %t %s
-//
-// CHECK-LINK-NOLTO-ACTION-NOT: "-plugin" "{{.*}}/LLVMgold.so"
Removed: cfe/trunk/test/Driver/thinlto.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/thinlto.c?rev=250401&view=auto
==============================================================================
--- cfe/trunk/test/Driver/thinlto.c (original)
+++ cfe/trunk/test/Driver/thinlto.c (removed)
@@ -1,37 +0,0 @@
-// -flto=thin causes a switch to llvm-bc object files.
-// RUN: %clang -ccc-print-phases -c %s -flto=thin 2> %t
-// RUN: FileCheck -check-prefix=CHECK-COMPILE-ACTIONS < %t %s
-//
-// CHECK-COMPILE-ACTIONS: 2: compiler, {1}, ir
-// CHECK-COMPILE-ACTIONS: 3: backend, {2}, lto-bc
-
-// RUN: %clang -ccc-print-phases %s -flto=thin 2> %t
-// RUN: FileCheck -check-prefix=CHECK-COMPILELINK-ACTIONS < %t %s
-//
-// CHECK-COMPILELINK-ACTIONS: 0: input, "{{.*}}thinlto.c", c
-// CHECK-COMPILELINK-ACTIONS: 1: preprocessor, {0}, cpp-output
-// CHECK-COMPILELINK-ACTIONS: 2: compiler, {1}, ir
-// CHECK-COMPILELINK-ACTIONS: 3: backend, {2}, lto-bc
-// CHECK-COMPILELINK-ACTIONS: 4: linker, {3}, image
-
-// -flto=thin should cause link using gold plugin with thinlto option,
-// also confirm that it takes precedence over earlier -fno-lto and -flto=full.
-// RUN: %clang -### %s -flto=full -fno-lto -flto=thin 2> %t
-// RUN: FileCheck -check-prefix=CHECK-LINK-THIN-ACTION < %t %s
-//
-// CHECK-LINK-THIN-ACTION: "-plugin" "{{.*}}/LLVMgold.so"
-// CHECK-LINK-THIN-ACTION: "-plugin-opt=thinlto"
-
-// Check that subsequent -flto=full takes precedence
-// RUN: %clang -### %s -flto=thin -flto=full 2> %t
-// RUN: FileCheck -check-prefix=CHECK-LINK-FULL-ACTION < %t %s
-//
-// CHECK-LINK-FULL-ACTION: "-plugin" "{{.*}}/LLVMgold.so"
-// CHECK-LINK-FULL-ACTION-NOT: "-plugin-opt=thinlto"
-
-// Check that subsequent -fno-lto takes precedence
-// RUN: %clang -### %s -flto=thin -fno-lto 2> %t
-// RUN: FileCheck -check-prefix=CHECK-LINK-NOLTO-ACTION < %t %s
-//
-// CHECK-LINK-NOLTO-ACTION-NOT: "-plugin" "{{.*}}/LLVMgold.so"
-// CHECK-LINK-NOLTO-ACTION-NOT: "-plugin-opt=thinlto"
Removed: cfe/trunk/test/Misc/thinlto.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/thinlto.c?rev=250401&view=auto
==============================================================================
--- cfe/trunk/test/Misc/thinlto.c (original)
+++ cfe/trunk/test/Misc/thinlto.c (removed)
@@ -1,9 +0,0 @@
-// RUN: %clang_cc1 -flto=thin -emit-llvm-bc < %s | llvm-bcanalyzer -dump | FileCheck %s
-// CHECK: <FUNCTION_SUMMARY_BLOCK
-// CHECK-NEXT: <PERMODULE_ENTRY
-// CHECK-NEXT: <PERMODULE_ENTRY
-// CHECK-NEXT: </FUNCTION_SUMMARY_BLOCK
-
-__attribute__((noinline)) void foo() {}
-
-int main() { foo(); }
More information about the cfe-commits
mailing list