diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -3888,9 +3888,15 @@ } } + const llvm::Triple &RawTriple = C.getDefaultToolChain().getTriple(); + if (RawTriple.isOSAIX()) + if (Arg *A = C.getArgs().getLastArg(options::OPT_G)) + Diag(diag::err_drv_unsupported_opt_for_target) + << A->getSpelling() << RawTriple.str(); + // Collect the list of architectures. llvm::StringSet<> ArchNames; - if (C.getDefaultToolChain().getTriple().isOSBinFormatMachO()) + if (RawTriple.isOSBinFormatMachO()) for (const Arg *A : C.getArgs()) if (A->getOption().matches(options::OPT_arch)) ArchNames.insert(A->getValue()); diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -4958,11 +4958,6 @@ if (D.CCGenDiagnostics) CmdArgs.push_back("-disable-pragma-debug-crash"); - if (RawTriple.isOSAIX()) - if (Arg *A = Args.getLastArg(options::OPT_G)) - D.Diag(diag::err_drv_unsupported_opt_for_target) - << A->getSpelling() << RawTriple.str(); - bool UseSeparateSections = isUseSeparateSections(Triple); if (Args.hasFlag(options::OPT_ffunction_sections, diff --git a/clang/test/Driver/aix-err-options.c b/clang/test/Driver/aix-err-options.c --- a/clang/test/Driver/aix-err-options.c +++ b/clang/test/Driver/aix-err-options.c @@ -1,7 +1,28 @@ -// RUN: %clang -target powerpc32-ibm-aix-xcoff -### -S -emit-llvm -G 0 2>&1 %s | \ +// RUN: %clang -target powerpc-ibm-aix-xcoff -### -E -G 0 2>&1 %s | \ // RUN: FileCheck --check-prefix=CHECK32 %s +// RUN: %clang -target powerpc-ibm-aix-xcoff -### -S -emit-llvm -G 0 2>&1 %s | \ +// RUN: FileCheck --check-prefix=CHECK32 %s +// RUN: %clang -target powerpc-ibm-aix-xcoff -### -c -G 0 2>&1 %s | \ +// RUN: FileCheck --check-prefix=CHECK32 %s +// RUN: %clang -target powerpc-ibm-aix-xcoff -### -c \ +// RUN: %S/Inputs/aix_ppc_tree/dummy0.s -G 0 2>&1 | \ +// RUN: FileCheck --check-prefix=CHECK32 %s +// RUN: %clang -target powerpc-ibm-aix-xcoff -### -o dummy.so \ +// RUN: %S/Inputs/aix_ppc_tree/dummy0.o -G 0 2>&1 | \ +// RUN: FileCheck --check-prefix=CHECK32 %s + +// RUN: %clang -target powerpc64-ibm-aix-xcoff -### -E -G 0 2>&1 %s | \ +// RUN: FileCheck --check-prefix=CHECK64 %s // RUN: %clang -target powerpc64-ibm-aix-xcoff -### -S -emit-llvm -G 0 2>&1 %s | \ // RUN: FileCheck --check-prefix=CHECK64 %s +// RUN: %clang -target powerpc64-ibm-aix-xcoff -### -c -G 0 2>&1 %s | \ +// RUN: FileCheck --check-prefix=CHECK64 %s +// RUN: %clang -target powerpc64-ibm-aix-xcoff -### -c \ +// RUN: %S/Inputs/aix_ppc_tree/dummy0.s -G 0 2>&1 | \ +// RUN: FileCheck --check-prefix=CHECK64 %s +// RUN: %clang -target powerpc64-ibm-aix-xcoff -### -o dummy.so \ +// RUN: %S/Inputs/aix_ppc_tree/dummy0.o -G 0 2>&1 | \ +// RUN: FileCheck --check-prefix=CHECK64 %s -// CHECK32: error: unsupported option '-G' for target 'powerpc32-ibm-aix-xcoff' +// CHECK32: error: unsupported option '-G' for target 'powerpc-ibm-aix-xcoff' // CHECK64: error: unsupported option '-G' for target 'powerpc64-ibm-aix-xcoff'