[LLVMdev] Why do X86_32TargetMachine and X86_64TargetMachine classes exist?

David Woodhouse dwmw2 at infradead.org
Mon Jan 6 14:33:05 PST 2014

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

> > @@ -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'...

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 5745 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140106/c5313a98/attachment.bin>

More information about the llvm-dev mailing list