forked from OSchip/llvm-project
Be more strict when checking the -flto option value
Summary: It seems -flto must be either "thin" or "full". I think the use of containValue is just a typo. Reviewers: ruiu, tejohnson Subscribers: mehdi_amini, inglorion Differential Revision: https://reviews.llvm.org/D34055 llvm-svn: 305392
This commit is contained in:
parent
eca926ab3a
commit
50a9dfa271
|
@ -649,8 +649,14 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
|
|||
Opts.NoUseJumpTables = Args.hasArg(OPT_fno_jump_tables);
|
||||
|
||||
Opts.PrepareForLTO = Args.hasArg(OPT_flto, OPT_flto_EQ);
|
||||
const Arg *A = Args.getLastArg(OPT_flto, OPT_flto_EQ);
|
||||
Opts.EmitSummaryIndex = A && A->containsValue("thin");
|
||||
Opts.EmitSummaryIndex = false;
|
||||
if (Arg *A = Args.getLastArg(OPT_flto_EQ)) {
|
||||
StringRef S = A->getValue();
|
||||
if (S == "thin")
|
||||
Opts.EmitSummaryIndex = true;
|
||||
else if (S != "full")
|
||||
Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args) << S;
|
||||
}
|
||||
Opts.LTOUnit = Args.hasFlag(OPT_flto_unit, OPT_fno_lto_unit, false);
|
||||
if (Arg *A = Args.getLastArg(OPT_fthinlto_index_EQ)) {
|
||||
if (IK.getLanguage() != InputKind::LLVM_IR)
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
|
||||
; RUN: %clang -flto=thin -c -o %t.o %s
|
||||
; RUN: llvm-lto -thinlto -o %t %t.o
|
||||
; RUN: not %clang_cc1 -x ir %t.o -fthinlto-index=%t.thinlto.bc -backend-option -nonexistent -emit-obj -o /dev/null 2>&1 | FileCheck %s
|
||||
; RUN: not %clang_cc1 -x ir %t.o -fthinlto-index=%t.thinlto.bc -backend-option -nonexistent -emit-obj -o /dev/null 2>&1 | FileCheck %s -check-prefix=UNKNOWN
|
||||
; UNKNOWN: clang: Unknown command line argument '-nonexistent'
|
||||
|
||||
; CHECK: clang: Unknown command line argument '-nonexistent'
|
||||
; RUN: not %clang_cc1 -flto=thinfoo 2>&1 | FileCheck %s -check-prefix=INVALID
|
||||
; INVALID: error: invalid value 'thinfoo' in '-flto=thinfoo'
|
||||
|
|
Loading…
Reference in New Issue