forked from OSchip/llvm-project
clang-cl: Don't treat linker input files differently when /TP or /TC is specified.
Summary: This fixes http://llvm.org/PR20923. Test Plan: This patch includes an automated test. Reviewers: hansw Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D5334 llvm-svn: 217699
This commit is contained in:
parent
e668f61076
commit
7e954ea063
|
@ -1076,8 +1076,17 @@ void Driver::BuildInputs(const ToolChain &TC, DerivedArgList &Args,
|
|||
}
|
||||
} else {
|
||||
assert(InputTypeArg && "InputType set w/o InputTypeArg");
|
||||
InputTypeArg->claim();
|
||||
if (!InputTypeArg->getOption().matches(options::OPT_x)) {
|
||||
// If emulating cl.exe, make sure that /TC and /TP don't affect input
|
||||
// object files.
|
||||
const char *Ext = strrchr(Value, '.');
|
||||
if (Ext && TC.LookupTypeForExtension(Ext + 1) == types::TY_Object)
|
||||
Ty = types::TY_Object;
|
||||
}
|
||||
if (Ty == types::TY_INVALID) {
|
||||
Ty = InputType;
|
||||
InputTypeArg->claim();
|
||||
}
|
||||
}
|
||||
|
||||
if (DiagnoseInputExistence(*this, Args, Value))
|
||||
|
|
|
@ -34,6 +34,14 @@
|
|||
// WARN: note: The last /TC or /TP option takes precedence over earlier instances
|
||||
// WARN-NOT: note
|
||||
|
||||
// RUN: env LIB=%S/Inputs/cl-libs %clang_cl /c /TP cl-test.lib %s -### 2>&1 | FileCheck -check-prefix=TPlib %s
|
||||
// TPlib: warning: cl-test.lib: 'linker' input unused
|
||||
// TPlib-NOT: cl-test.lib
|
||||
|
||||
// RUN: env LIB=%S/Inputs/cl-libs %clang_cl /c /TC cl-test.lib %s -### 2>&1 | FileCheck -check-prefix=TClib %s
|
||||
// TClib: warning: cl-test.lib: 'linker' input unused
|
||||
// TClib-NOT: cl-test.lib
|
||||
|
||||
// RUN: not %clang_cl - 2>&1 | FileCheck -check-prefix=STDIN %s
|
||||
// STDIN: error: use /Tc or /Tp
|
||||
|
||||
|
|
Loading…
Reference in New Issue