[LLVMdev] Why do X86_32TargetMachine and X86_64TargetMachine classes exist?

Jim Grosbach grosbach at apple.com
Mon Jan 6 15:00:28 PST 2014

On Jan 6, 2014, at 2:33 PM, David Woodhouse <dwmw2 at infradead.org> wrote:

> On Mon, 2014-01-06 at 14:23 -0800, Jim Grosbach wrote:
>> Hi David,
>> AFAIK, the answer is basically “because it’s always been that way.” I
>> seem to recall there were some things that were different (data layout
>> string and such), but that could also be parameterized if it hasn’t
>> been already by the recent refactorings, I suppose.
> It is *all* now parameterized. The classes are identical apart from that
> one true/false…

Cool. I have no objection to merging them. Seems the right thing to do IMO.

>>> @@ -74,7 +75,7 @@ X86_32TargetMachine::X86_32TargetMachine(const Target &T, Stri
>>>                                         const TargetOptions &Options,
>>>                                         Reloc::Model RM, CodeModel::Model CM,
>>>                                         CodeGenOpt::Level OL)
>>> -  : X86TargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, false),
>>> +  : X86TargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, Triple(TT).getArch())
>> Think this is missing a "==Triple::x86_64” at the end, yes?
> Nah, I turned that parameter into a Triple::ArchType so that I can pass
> x86_16 as an option too. See the patch on llvm-commits which adds the
> x86_16 target.
> Currently working on a few codegen bugs with building the Linux kernel's
> 16-bit startup code with 'clang -m16'...
> -- 
> dwmw2

More information about the llvm-dev mailing list