1263320SdimPull in r198311 from upstream clang trunk (by Roman Divacky):
2263320Sdim
3263320Sdim  In the FreeBSD assembler driver, inform the sparc assembler that we're producing
4263320Sdim  PIC code.
5263320Sdim
6269012SemasteIntroduced here: http://svnweb.freebsd.org/changeset/base/262262
7263320Sdim
8263320SdimIndex: tools/clang/lib/Driver/Tools.cpp
9263320Sdim===================================================================
10263320Sdim--- tools/clang/lib/Driver/Tools.cpp
11263320Sdim+++ tools/clang/lib/Driver/Tools.cpp
12263320Sdim@@ -5785,6 +5785,19 @@ void freebsd::Assemble::ConstructJob(Compilation &
13263320Sdim     default:
14263320Sdim       CmdArgs.push_back("-matpcs");
15263320Sdim     }
16263320Sdim+  } else if (getToolChain().getArch() == llvm::Triple::sparc ||
17263320Sdim+	     getToolChain().getArch() == llvm::Triple::sparcv9) {
18263320Sdim+    Arg *LastPICArg = Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC,
19263320Sdim+                                      options::OPT_fpic, options::OPT_fno_pic,
20263320Sdim+                                      options::OPT_fPIE, options::OPT_fno_PIE,
21263320Sdim+                                      options::OPT_fpie, options::OPT_fno_pie);
22263320Sdim+    if (LastPICArg &&
23263320Sdim+        (LastPICArg->getOption().matches(options::OPT_fPIC) ||
24263320Sdim+         LastPICArg->getOption().matches(options::OPT_fpic) ||
25263320Sdim+         LastPICArg->getOption().matches(options::OPT_fPIE) ||
26263320Sdim+         LastPICArg->getOption().matches(options::OPT_fpie))) {
27263320Sdim+      CmdArgs.push_back("-KPIC");
28263320Sdim+    }
29263320Sdim   }
30263320Sdim 
31263320Sdim   Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
32