[LLVMdev] API Changes: TargetMachine::getSubtarget

Akira Hatanaka ahatanak at gmail.com
Mon Mar 23 15:54:12 PDT 2015

On Fri, Mar 20, 2015 at 9:35 PM, Eric Christopher <echristo at gmail.com>

> Hi all,
> As of r232885 I've removed the argument-less TargetMachine::getSubtarget
> and TargetMachine::getSubtargetImpl. For the targets that aren't completely
> independent of this I've gone ahead and left a non-virtual version of the
> function in the target specific TargetMachine. What this means in practice
> is that those targets can only use a bare getSubtarget call in their target
> specific code, and should probably clean that up as soon as they can.
> They'll definitely be unable to use any of the function multiversioning
> support when it goes in and they'll be unable to LTO binaries that have
> functions with different subtarget features/cpus.

> Updating out of tree ports should be fairly straightforward for now.
> Updating out of tree code otherwise should be ok, but given I've been
> removing this stuff for some time you've probably been working on it
> anyways. Do file bugs if there's anything I've missed or send me a message
> if you run into a problem (I know of a couple off hand that need
> investigating).
I noticed LLVMTargetMachine::addPassesToEmitFile is passing the default
MCSubtargetInfo to createMCInstPrinter. Since there are cases where
AArch64's InstPrinter looks at the target cpu to print an operand (see
AArch64SysReg::SysRegMapper::toString, which is called from
AArch64InstPrinter::printMRSSystemRegister), should we make changes in
AArch64AsmPrinter to pass down the per-function subtarget? You can compile
the attached IR with llc and see it doesn't output cyclone's system
register unless "-mcpu cyclone" is specified on the command line, even
thought the IR has "target-cpu"="cyclone" on the function. I don't think
this affects correctness, but I thought I should point out the difference.

> -eric
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150323/3aa6ce79/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: instrprinter1.ll
Type: application/octet-stream
Size: 587 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150323/3aa6ce79/attachment.obj>

More information about the llvm-dev mailing list