Index: lib/Driver/Tools.cpp =================================================================== --- lib/Driver/Tools.cpp +++ lib/Driver/Tools.cpp @@ -6742,6 +6742,12 @@ else CmdArgs.push_back("-EL"); + if (Arg *A = Args.getLastArg(options::OPT_G)) { + StringRef v = A->getValue(); + CmdArgs.push_back(Args.MakeArgString("-G" + v)); + A->claim(); + } + addAssemblerKPIC(Args, CmdArgs); } else if (getToolChain().getArch() == llvm::Triple::arm || getToolChain().getArch() == llvm::Triple::armeb || Index: test/Driver/freebsd.c =================================================================== --- test/Driver/freebsd.c +++ test/Driver/freebsd.c @@ -140,3 +140,7 @@ // RUN: | FileCheck --check-prefix=CHECK-SPARC-CPU %s // CHECK-SPARC-CPU: cc1{{.*}}" "-target-cpu" "ultrasparc" // CHECK-SPARC-CPU: as{{.*}}" "-Av9a + +// RUN: %clang -mcpu=ultrasparc -target mips-unknown-freebsd8 %s -G0 -### -no-integrated-as 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-MIPS-AS-G0 %s +// CHECK-MIPS-AS-G0: as{{.*}}" "-G0