<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>