From dc6040b357c49a4798784dbcdb36894c96e445bf Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 13 Apr 2010 00:38:24 +0000 Subject: add frontend support for -fdata-sections and -ffunction-sections, patch by Sylvere Teissier! llvm-svn: 101108 --- clang/lib/Frontend/CodeGenAction.cpp | 3 +++ clang/lib/Frontend/CompilerInvocation.cpp | 7 +++++++ 2 files changed, 10 insertions(+) (limited to 'clang/lib/Frontend') diff --git a/clang/lib/Frontend/CodeGenAction.cpp b/clang/lib/Frontend/CodeGenAction.cpp index 7ed702ed511..fdce21170e3 100644 --- a/clang/lib/Frontend/CodeGenAction.cpp +++ b/clang/lib/Frontend/CodeGenAction.cpp @@ -261,6 +261,9 @@ bool BackendConsumer::AddEmitPasses() { TargetMachine::setAsmVerbosityDefault(CodeGenOpts.AsmVerbose); + TargetMachine::setFunctionSections(CodeGenOpts.FunctionSections); + TargetMachine::setDataSections (CodeGenOpts.DataSections); + // FIXME: Parse this earlier. if (CodeGenOpts.RelocationModel == "static") { TargetMachine::setRelocationModel(llvm::Reloc::Static); diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 17007b00796..b5e56458779 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -148,6 +148,10 @@ static void CodeGenOptsToArgs(const CodeGenOptions &Opts, // VerifyModule is only derived. // Inlining is only derived. + if (Opts.DataSections) + Res.push_back("-fdata-sections"); + if (Opts.FunctionSections) + Res.push_back("-ffunction-sections"); if (Opts.AsmVerbose) Res.push_back("-masm-verbose"); if (!Opts.CodeModel.empty()) { @@ -803,6 +807,9 @@ static void ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, Opts.UnwindTables = Args.hasArg(OPT_munwind_tables); Opts.RelocationModel = getLastArgValue(Args, OPT_mrelocation_model, "pic"); + Opts.FunctionSections = Args.hasArg(OPT_ffunction_sections); + Opts.DataSections = Args.hasArg(OPT_fdata_sections); + Opts.MainFileName = getLastArgValue(Args, OPT_main_file_name); Opts.VerifyModule = !Args.hasArg(OPT_disable_llvm_verifier); } -- cgit v1.2.3