]> granicus.if.org Git - clang/commitdiff
Accept and ignore -Wa,-mbig-obj on COFF targets for gas compatibility
authorReid Kleckner <rnk@google.com>
Wed, 4 Jan 2017 18:16:32 +0000 (18:16 +0000)
committerReid Kleckner <rnk@google.com>
Wed, 4 Jan 2017 18:16:32 +0000 (18:16 +0000)
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
test/Driver/mbig-obj.c [new file with mode: 0644]

index 874799b1101edbeaabd9849a3692279b6bcfb451..ea5ad7d051b65ec1ad62d982e50f6c12f35adc92 100644 (file)
@@ -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 (file)
index 0000000..77e8cef
--- /dev/null
@@ -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