<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jan 20, 2014 at 12:33 PM, David Woodhouse <span dir="ltr"><<a href="mailto:dwmw2@infradead.org" target="_blank">dwmw2@infradead.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This lets me build the 16-bit startup code of the Linux kernel with<br>
clang. If I work around (unrelated) PR3997 it even works.<br>
<br>
---<br>
 include/clang/Driver/Options.td |  1 +<br>
 lib/Driver/Driver.cpp           | 12 ++++++++++--<br>
 2 files changed, 11 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td<br>
index 6682039..5e8a3b8 100644<br>
--- a/include/clang/Driver/Options.td<br>
+++ b/include/clang/Driver/Options.td<br>
@@ -951,6 +951,7 @@ def lazy__framework : Separate<["-"], "lazy_framework">, Flags<[LinkerInput]>;<br>
 def lazy__library : Separate<["-"], "lazy_library">, Flags<[LinkerInput]>;<br>
 def EL : Flag<["-"], "EL">, Flags<[DriverOption]>;<br>
 def EB : Flag<["-"], "EB">, Flags<[DriverOption]>;<br>
+def m16 : Flag<["-"], "m16">, Group<m_Group>, Flags<[DriverOption, CoreOption]>;<br>
 def m32 : Flag<["-"], "m32">, Group<m_Group>, Flags<[DriverOption, CoreOption]>;<br>
 def mqdsp6_compat : Flag<["-"], "mqdsp6-compat">, Group<m_Group>, Flags<[DriverOption,CC1Option]>,<br>
   HelpText<"Enable hexagon-qdsp6 backward compatibility">;<br>
diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp<br>
index ad938b8..b146666 100644<br>
--- a/lib/Driver/Driver.cpp<br>
+++ b/lib/Driver/Driver.cpp<br>
@@ -1901,12 +1901,20 @@ static llvm::Triple computeTargetTriple(StringRef DefaultTargetTriple,<br>
     return Target;<br>
<br>
   // Handle pseudo-target flags '-m32' and '-m64'.<br></blockquote><div><br></div><div>Shouldn't this comment mention -m16?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

-  if (Arg *A = Args.getLastArg(options::OPT_m32, options::OPT_m64)) {<br>
+  if (Arg *A = Args.getLastArg(options::OPT_m32, options::OPT_m64, options::OPT_m16)) {</blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
     llvm::Triple::ArchType AT;<br>
     if (A->getOption().matches(options::OPT_m32))<br>
       AT = Target.get32BitArchVariant().getArch();<br>
-    else<br>
+    else if (A->getOption().matches(options::OPT_m64))<br>
       AT = Target.get64BitArchVariant().getArch();<br>
+    else if (A->getOption().matches(options::OPT_m16)) {<br>
+      AT = Target.get32BitArchVariant().getArch();<br>
+      if (AT == llvm::Triple::x86)<br>
+        Target.setEnvironment(llvm::Triple::CODE16);<br>
+      else<br>
+        AT = llvm::Triple::UnknownArch;<br>
+    }<br>
+<br>
     if (AT != llvm::Triple::UnknownArch)<br>
       Target.setArch(AT);<br>
   }<br>
<span class="HOEnZb"><font color="#888888">--<br>
1.8.4.2<br>
<br>
<br>
--<br>
David Woodhouse                            Open Source Technology Centre<br>
<a href="mailto:David.Woodhouse@intel.com">David.Woodhouse@intel.com</a>                              Intel Corporation<br>
</font></span><br>_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
<br></blockquote></div><br></div></div>