From 4f271b83c067a00b7054ed96076c406bd1d90219 Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Wed, 4 Jan 2017 18:16:32 +0000 Subject: [PATCH] Accept and ignore -Wa,-mbig-obj on COFF targets for gas compatibility LLVM's integrated assembler will automatically switch to big objects when there are more than 2**16 sections. Patch by Kyra! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290979 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/Tools.cpp | 4 ++++ test/Driver/mbig-obj.c | 9 +++++++++ 2 files changed, 13 insertions(+) create mode 100644 test/Driver/mbig-obj.c diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 874799b110..ea5ad7d051 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -3067,6 +3067,10 @@ static void CollectArgsForIntegratedAssembler(Compilation &C, continue; } + if (C.getDefaultToolChain().getTriple().isOSBinFormatCOFF() && + Value == "-mbig-obj") + continue; // LLVM handles bigobj automatically + switch (C.getDefaultToolChain().getArch()) { default: break; diff --git a/test/Driver/mbig-obj.c b/test/Driver/mbig-obj.c new file mode 100644 index 0000000000..77e8cef700 --- /dev/null +++ b/test/Driver/mbig-obj.c @@ -0,0 +1,9 @@ +// RUN: %clang --target=x86_64-windows -c -Wa,-mbig-obj %s 2>&1 | FileCheck %s --check-prefix=WINDOWS +// RUN: %clang --target=x86_64-windows -c -Xassembler -mbig-obj %s 2>&1 | FileCheck %s --check-prefix=WINDOWS +// RUN: not %clang --target=x86_64-linux -c -Wa,-mbig-obj %s 2>&1 | FileCheck %s --check-prefix=LINUX +// RUN: not %clang --target=x86_64-linux -c -Xassembler -mbig-obj %s 2>&1 | FileCheck %s --check-prefix=LINUX +// WINDOWS-NOT: argument unused during compilation +// LINUX: unsupported argument '-mbig-obj' to option '{{(Wa,|Xassembler)}}' +#ifdef _WIN32 +#warning "produce non-empty output for FileCheck" +#endif -- 2.50.1