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 @@ -537,6 +537,11 @@ } } + // If target is PPC32, adjust SubArchType according to -mspe. + if (Target.getArch() == llvm::Triple::ppc && + (A = Args.getLastArg(options::OPT_mspe))) + Target.setArchName("powerpcspe"); + // If target is RISC-V adjust the target triple according to // provided architecture name A = Args.getLastArg(options::OPT_march_EQ); diff --git a/clang/test/Driver/ppc-features.cpp b/clang/test/Driver/ppc-features.cpp --- a/clang/test/Driver/ppc-features.cpp +++ b/clang/test/Driver/ppc-features.cpp @@ -168,7 +168,9 @@ // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-invariant-function-descriptors -minvariant-function-descriptors -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-INVFUNCDESC %s // CHECK-INVFUNCDESC: "-target-feature" "+invariant-function-descriptors" -// RUN: %clang -target powerpc-unknown-linux-gnu %s -mno-spe -mspe -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-SPE %s +// RUN: %clang -target powerpc-unknown-freebsd %s -mno-spe -mspe -c -### 2>&1 | FileCheck -check-prefix=CHECK-SPE %s +// RUN: %clang -target powerpcspe-unknown-freebsd %s -mno-spe -mspe -c -### 2>&1 | FileCheck -check-prefix=CHECK-SPE %s +// CHECK-SPE: "-triple" "powerpcspe-unknown-freebsd" // CHECK-SPE: "-target-feature" "+spe" // Assembler features