Now the next question is can I remove the emitting code without upsetting out of tree targets.<span></span><br><br>On Friday, April 20, 2012, Jim Grosbach  wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word"><div>That makes sense. Given that they're in the header .inc like that, there's nothing that's even potentially taking advantage of forward declaring TargetRegisterClass in this context. Works for me. Thanks!</div>
<div><br></div><div>-Jim</div><br><div><div>On Apr 20, 2012, at 10:51 AM, Craig Topper <<a>craig.topper@gmail.com</a>> wrote:</div><br><blockquote type="cite">We were inconsistently using one or the other. The XXXRegClass is declared "extern" right next to XXXRegisterClass in the generated file so there shouldn't be any problem accessing XXXRegClass. The tablegen source says that XXXRegisterClass should be removed. Though its said that for 6 years.<br>

<br>~Craig<br><br><div>On Fri, Apr 20, 2012 at 9:43 AM, Jim Grosbach <span dir="ltr"><<a>grosbach@apple.com</a>></span> wrote:<br><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Craig,<br>
<br>
What's the motivation here?<br>
<br>
With the previous definitions we could reference and pass around register classes without always needing to have the full definition of the class available until we actually wanted to do something non-trivial with them. This way, anyplace that needs to select a register class will need to have the full class definition included.<br>


<span><font color="#888888"><br>
-Jim<br>
</font></span><div><div><br>
On Apr 20, 2012, at 12:30 AM, Craig Topper <<a>craig.topper@gmail.com</a>> wrote:<br>
<br>
> Author: ctopper<br>
> Date: Fri Apr 20 02:30:17 2012<br>
> New Revision: 155188<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=155188&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=155188&view=rev</a><br>
> Log:<br>
> Convert more uses of XXXRegisterClass to &XXXRegClass. No functional change since they are equivalent.<br>
><br>
> Modified:<br>
>    llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp<br>
>    llvm/trunk/lib/Target/ARM/ARMCodeEmitter.cpp<br>
>    llvm/trunk/lib/Target/ARM/ARMFastISel.cpp<br>
>    llvm/trunk/lib/Target/ARM/ARMFrameLowering.cpp<br>
>    llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp<br>
>    llvm/trunk/lib/Target/ARM/ARMLoadStoreOptimizer.cpp<br>
>    llvm/trunk/lib/Target/ARM/Thumb1InstrInfo.cpp<br>
>    llvm/trunk/lib/Target/ARM/Thumb1RegisterInfo.cpp<br>
>    llvm/trunk/lib/Target/ARM/Thumb2InstrInfo.cpp<br>
>    llvm/trunk/lib/Target/CellSPU/SPUISelLowering.cpp<br>
>    llvm/trunk/lib/Target/CellSPU/SPUInstrInfo.cpp<br>
>    llvm/trunk/lib/Target/Hexagon/HexagonHardwareLoops.cpp<br>
>    llvm/trunk/lib/Target/Hexagon/HexagonISelDAGToDAG.cpp<br>
>    llvm/trunk/lib/Target/Hexagon/HexagonISelLowering.cpp<br>
>    llvm/trunk/lib/Target/Hexagon/HexagonInstrInfo.cpp<br>
>    llvm/trunk/lib/Target/MBlaze/MBlazeAsmPrinter.cpp<br>
>    llvm/trunk/lib/Target/MBlaze/MBlazeISelLowering.cpp<br>
>    llvm/trunk/lib/Target/MBlaze/MBlazeInstrInfo.cpp<br>
>    llvm/trunk/lib/Target/MSP430/MSP430ISelLowering.cpp<br>
>    llvm/trunk/lib/Target/Mips/MipsAsmPrinter.cpp<br>
>    llvm/trunk/lib/Target/Mips/MipsFrameLowering.cpp<br>
>    llvm/trunk/lib/Target/Mips/MipsISelDAGToDAG.cpp<br>
>    llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp<br>
>    llvm/trunk/lib/Target/Mips/MipsInstrInfo.cpp<br>
>    llvm/trunk/lib/Target/Mips/MipsMachineFunction.cpp<br>
>    llvm/trunk/lib/Target/Mips/MipsRegisterInfo.cpp<br>
>    llvm/trunk/lib/Target/PTX/PTXISelLowering.cpp<br>
>    llvm/trunk/lib/Target/PTX/PTXMFInfoExtract.cpp<br>
>    llvm/trunk/lib/Target/XCore/XCoreFrameLowering.cpp<br>
>    llvm/trunk/lib/Target/XCore/XCoreISelLowering.cpp<br>
>    llvm/trunk/lib/Target/XCore/XCoreRegisterInfo.cpp<br>
><br>
> Modified: llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp?rev=155188&r1=155187&r2=155188&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp?rev=155188&r1=155187&r2=155188&view=diff</a><br>


> ==============================================================================<br>
> --- llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp (original)<br>
> +++ llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp Fri Apr 20 02:30:17 2012<br>
> @@ -258,7 +258,7 @@<br>
><br>
> const TargetRegisterClass *<br>
> ARMBaseRegisterInfo::getPointerRegClass(unsigned Kind) const {<br>
> -  return ARM::GPRRegisterClass;<br>
> +  return &ARM::GPRRegClass;<br>
> }<br>
><br>
> const TargetRegisterClass *<br>
> @@ -369,7 +369,7 @@<br>
>   };<br>
><br>
>   // We only support even/odd hints for GPR</div></div></blockquote></div></blockquote></div></div></blockquote><br><br>-- <br>~Craig<br>