[PATCH] D31114: Refactor `initTargetOptions` out of `EmitAssemblyHelper::CreateTargetMachine` and use it to initialize TargetOptions for ThinLTO Backends

Mehdi AMINI via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Sat Mar 18 11:46:15 PDT 2017

mehdi_amini added a comment.

In https://reviews.llvm.org/D31114#704728, @tejohnson wrote:

> In https://reviews.llvm.org/D31114#704726, @mehdi_amini wrote:
> > In https://reviews.llvm.org/D31114#704649, @tejohnson wrote:
> >
> > > I think you won't get the correct handling of -emit-llvm and -emit-llvm-bc since we don't get the handling for Backend_Emit* in EmitAssemblyHelper::EmitAssembly.
> >
> >
> > I was not trying to achieve this. And your approach of an "OptimizeOnly" or "DisableCodeGen" on the lot::Config for this purpose makes sense.
> I'm confused - are you saying you now think https://reviews.llvm.org/D31100 and https://reviews.llvm.org/D31101 are the right approach?

I believe your patch is the right approach when clang needs to get the optimized IR, which is the case for -emit-llvm/-emit-bc. I believe that it shouldn't do that when it expects an object file.

> Ah, I see that in thinBackend the created TM is used by handleAsmUndefinedRefs and opt(), so this patch is complementary. But in that case, to set up the TM accurately, this code does need to set up the other fields of lto::Config read by createTargetMachine, e.g. RelocModel, CodeModel, etc.

Forcing to use the LTO API for this ensures completeness: there isn't any target flag that clang could use that wouldn't be exposed through LTO.


More information about the cfe-commits mailing list