[PATCH] D123964: CodeGen: Replace some uses of LLVMTargetMachine with TargetMachine

Matt Arsenault via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 27 10:14:12 PDT 2022


arsenm added a comment.

In D123964#3476294 <https://reviews.llvm.org/D123964#3476294>, @MatzeB wrote:

>> All target knowledge should be in the TargetMachine base class. LLVMTargetMachine extends with pass machinery, which most code should not have access to.
>
> My understanding was that `TargetMachine` is the public/outside interface (for frontends etc.). And that `LLVMTargetMachine` is a concrete subclass for all targets implemented using `lib/CodeGen`

This sounds backwards to me. LLVMTargetMachine extends with pieces frontends need to use the target (e.g. createMCStreamer). TargetMachine is the base target info class codegen does use. What you're saying would make more sense if the relationship was inverted?

The current situation is that I'm not sure any code makes a practical distinction here. For example to construct a MachineModuleInfo, the existing users downcast from TargetMachine to LLVMTargetMachine


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D123964/new/

https://reviews.llvm.org/D123964



More information about the llvm-commits mailing list