forked from OSchip/llvm-project
Pass -Wa,-I and -Xassembler -I args to integrated assembler
This patch adds -I to the arguments that are passed to the integrated assembler from -Wa, and -Xassembler args. llvm-svn: 194743
This commit is contained in:
parent
f9fd0d6d11
commit
dfb661434d
|
@ -1707,6 +1707,13 @@ static void CollectArgsForIntegratedAssembler(Compilation &C,
|
|||
if (UseRelaxAll(C, Args))
|
||||
CmdArgs.push_back("-mrelax-all");
|
||||
|
||||
// When passing -I arguments to the assembler we sometimes need to
|
||||
// uncontionally take the next argument. For example, when parsing
|
||||
// '-Wa,-I -Wa,foo' we need to accept the -Wa,foo arg after seeing the
|
||||
// -Wa,-I arg and when parsing '-Wa,-I,foo' we need to accept the 'foo'
|
||||
// arg after parsing the '-I' arg.
|
||||
bool TakeNextArg = false;
|
||||
|
||||
// When using an integrated assembler, translate -Wa, and -Xassembler
|
||||
// options.
|
||||
for (arg_iterator it = Args.filtered_begin(options::OPT_Wa_COMMA,
|
||||
|
@ -1717,6 +1724,11 @@ static void CollectArgsForIntegratedAssembler(Compilation &C,
|
|||
|
||||
for (unsigned i = 0, e = A->getNumValues(); i != e; ++i) {
|
||||
StringRef Value = A->getValue(i);
|
||||
if (TakeNextArg) {
|
||||
CmdArgs.push_back(Value.data());
|
||||
TakeNextArg = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (Value == "-force_cpusubtype_ALL") {
|
||||
// Do nothing, this is the default and we don't support anything else.
|
||||
|
@ -1727,6 +1739,12 @@ static void CollectArgsForIntegratedAssembler(Compilation &C,
|
|||
CmdArgs.push_back("-fatal-assembler-warnings");
|
||||
} else if (Value == "--noexecstack") {
|
||||
CmdArgs.push_back("-mnoexecstack");
|
||||
} else if (Value.startswith("-I")) {
|
||||
CmdArgs.push_back(Value.data());
|
||||
// We need to consume the next argument if the current arg is a plain
|
||||
// -I. The next arg will be the include directory.
|
||||
if (Value == "-I")
|
||||
TakeNextArg = true;
|
||||
} else {
|
||||
D.Diag(diag::err_drv_unsupported_option_argument)
|
||||
<< A->getOption().getName() << Value;
|
||||
|
|
|
@ -10,3 +10,24 @@
|
|||
|
||||
// RUN: %clang -### -target x86_64-linux-gnu -c -integrated-as %s -fsanitize=address 2>&1 %s | FileCheck --check-prefix=SANITIZE %s
|
||||
// SANITIZE: argument unused during compilation: '-fsanitize=address'
|
||||
|
||||
// Test that -I params in -Wa, and -Xassembler args are passed to integrated assembler
|
||||
// RUN: %clang -### -c -integrated-as %s -Wa,-I,foo_dir 2>&1 %s | FileCheck --check-prefix=WA_INCLUDE1 %s
|
||||
// WA_INCLUDE1: cc1as
|
||||
// WA_INCLUDE1: "-I" "foo_dir"
|
||||
|
||||
// RUN: %clang -### -c -integrated-as %s -Wa,-Ifoo_dir 2>&1 %s | FileCheck --check-prefix=WA_INCLUDE2 %s
|
||||
// WA_INCLUDE2: cc1as
|
||||
// WA_INCLUDE2: "-Ifoo_dir"
|
||||
|
||||
// RUN: %clang -### -c -integrated-as %s -Wa,-I -Wa,foo_dir 2>&1 %s | FileCheck --check-prefix=WA_INCLUDE3 %s
|
||||
// WA_INCLUDE3: cc1as
|
||||
// WA_INCLUDE3: "-I" "foo_dir"
|
||||
|
||||
// RUN: %clang -### -c -integrated-as %s -Xassembler -I -Xassembler foo_dir 2>&1 %s | FileCheck --check-prefix=XA_INCLUDE1 %s
|
||||
// XA_INCLUDE1: cc1as
|
||||
// XA_INCLUDE1: "-I" "foo_dir"
|
||||
|
||||
// RUN: %clang -### -c -integrated-as %s -Xassembler -Ifoo_dir 2>&1 %s | FileCheck --check-prefix=XA_INCLUDE2 %s
|
||||
// XA_INCLUDE2: cc1as
|
||||
// XA_INCLUDE2: "-Ifoo_dir"
|
||||
|
|
Loading…
Reference in New Issue