[PATCH] Add -m16 option for using x86-*-*-code16 triple
David Majnemer
david.majnemer at gmail.com
Mon Jan 20 15:58:03 PST 2014
On Mon, Jan 20, 2014 at 12:33 PM, David Woodhouse <dwmw2 at infradead.org>wrote:
> This lets me build the 16-bit startup code of the Linux kernel with
> clang. If I work around (unrelated) PR3997 it even works.
>
> ---
> include/clang/Driver/Options.td | 1 +
> lib/Driver/Driver.cpp | 12 ++++++++++--
> 2 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/include/clang/Driver/Options.td
> b/include/clang/Driver/Options.td
> index 6682039..5e8a3b8 100644
> --- a/include/clang/Driver/Options.td
> +++ b/include/clang/Driver/Options.td
> @@ -951,6 +951,7 @@ def lazy__framework : Separate<["-"],
> "lazy_framework">, Flags<[LinkerInput]>;
> def lazy__library : Separate<["-"], "lazy_library">, Flags<[LinkerInput]>;
> def EL : Flag<["-"], "EL">, Flags<[DriverOption]>;
> def EB : Flag<["-"], "EB">, Flags<[DriverOption]>;
> +def m16 : Flag<["-"], "m16">, Group<m_Group>, Flags<[DriverOption,
> CoreOption]>;
> def m32 : Flag<["-"], "m32">, Group<m_Group>, Flags<[DriverOption,
> CoreOption]>;
> def mqdsp6_compat : Flag<["-"], "mqdsp6-compat">, Group<m_Group>,
> Flags<[DriverOption,CC1Option]>,
> HelpText<"Enable hexagon-qdsp6 backward compatibility">;
> diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp
> index ad938b8..b146666 100644
> --- a/lib/Driver/Driver.cpp
> +++ b/lib/Driver/Driver.cpp
> @@ -1901,12 +1901,20 @@ static llvm::Triple computeTargetTriple(StringRef
> DefaultTargetTriple,
> return Target;
>
> // Handle pseudo-target flags '-m32' and '-m64'.
>
Shouldn't this comment mention -m16?
> - if (Arg *A = Args.getLastArg(options::OPT_m32, options::OPT_m64)) {
> + if (Arg *A = Args.getLastArg(options::OPT_m32, options::OPT_m64,
> options::OPT_m16)) {
llvm::Triple::ArchType AT;
> if (A->getOption().matches(options::OPT_m32))
> AT = Target.get32BitArchVariant().getArch();
> - else
> + else if (A->getOption().matches(options::OPT_m64))
> AT = Target.get64BitArchVariant().getArch();
> + else if (A->getOption().matches(options::OPT_m16)) {
> + AT = Target.get32BitArchVariant().getArch();
> + if (AT == llvm::Triple::x86)
> + Target.setEnvironment(llvm::Triple::CODE16);
> + else
> + AT = llvm::Triple::UnknownArch;
> + }
> +
> if (AT != llvm::Triple::UnknownArch)
> Target.setArch(AT);
> }
> --
> 1.8.4.2
>
>
> --
> David Woodhouse Open Source Technology Centre
> David.Woodhouse at intel.com Intel Corporation
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140120/00a9cb98/attachment.html>
More information about the cfe-commits
mailing list