forked from OSchip/llvm-project
Fix -ftrap-function fallout from llvm r145714. <rdar://problem/10799325>
That llvm change removed the -trap-func backend option, so that using -ftrap-function with clang would cause the backend to complain. Fix it by adding the trap function name to the CodeGenOptions and passing it through to the TargetOptions. llvm-svn: 149679
This commit is contained in:
parent
3b1817d2f5
commit
14adb360a7
|
@ -154,6 +154,8 @@ def ffunction_sections : Flag<"-ffunction-sections">,
|
|||
HelpText<"Place each function in its own section (ELF Only)">;
|
||||
def fdata_sections : Flag<"-fdata-sections">,
|
||||
HelpText<"Place each data in its own section (ELF Only)">;
|
||||
def ftrap_function_EQ : Joined<"-ftrap-function=">,
|
||||
HelpText<"Issue call to specified function rather than a trap instruction">;
|
||||
def funroll_loops : Flag<"-funroll-loops">,
|
||||
HelpText<"Turn on loop unroller">;
|
||||
def femit_coverage_notes : Flag<"-femit-coverage-notes">,
|
||||
|
|
|
@ -148,6 +148,10 @@ public:
|
|||
/// The name of the relocation model to use.
|
||||
std::string RelocationModel;
|
||||
|
||||
/// If not an empty string, trap intrinsics are lowered to calls to this
|
||||
/// function instead of to trap instructions.
|
||||
std::string TrapFuncName;
|
||||
|
||||
/// A list of command-line options to forward to the LLVM backend.
|
||||
std::vector<std::string> BackendOptions;
|
||||
|
||||
|
|
|
@ -327,6 +327,7 @@ bool EmitAssemblyHelper::AddEmitPasses(BackendAction Action,
|
|||
Options.StackAlignmentOverride = CodeGenOpts.StackAlignment;
|
||||
Options.RealignStack = CodeGenOpts.StackRealignment;
|
||||
Options.DisableTailCalls = CodeGenOpts.DisableTailCalls;
|
||||
Options.TrapFuncName = CodeGenOpts.TrapFuncName;
|
||||
|
||||
TargetMachine *TM = TheTarget->createTargetMachine(Triple, TargetOpts.CPU,
|
||||
FeaturesStr, Options,
|
||||
|
|
|
@ -1947,12 +1947,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
CmdArgs.push_back(A->getValue(Args));
|
||||
}
|
||||
|
||||
// Forward -ftrap_function= options to the backend.
|
||||
if (Arg *A = Args.getLastArg(options::OPT_ftrap_function_EQ)) {
|
||||
StringRef FuncName = A->getValue(Args);
|
||||
CmdArgs.push_back("-backend-option");
|
||||
CmdArgs.push_back(Args.MakeArgString("-trap-func=" + FuncName));
|
||||
}
|
||||
Args.AddLastArg(CmdArgs, options::OPT_ftrap_function_EQ);
|
||||
|
||||
// -fno-strict-overflow implies -fwrapv if it isn't disabled, but
|
||||
// -fstrict-overflow won't turn off an explicitly enabled -fwrapv.
|
||||
|
|
|
@ -1143,6 +1143,7 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
|
|||
Args.hasArg(OPT_cl_fast_relaxed_math);
|
||||
Opts.UnwindTables = Args.hasArg(OPT_munwind_tables);
|
||||
Opts.RelocationModel = Args.getLastArgValue(OPT_mrelocation_model, "pic");
|
||||
Opts.TrapFuncName = Args.getLastArgValue(OPT_ftrap_function_EQ);
|
||||
|
||||
Opts.FunctionSections = Args.hasArg(OPT_ffunction_sections);
|
||||
Opts.DataSections = Args.hasArg(OPT_fdata_sections);
|
||||
|
|
Loading…
Reference in New Issue