<div dir="ltr"><div><div><div><div><div><div>I'm trying to figure out what this error message means:<br><br>error: In RelAddr: Top-level forms in instruction pattern should have void types<br><br></div>The definitions it's complaining about:<br><br><br>//===----------------------------------------------------------------------===//<br>// RELADDR<br>//===----------------------------------------------------------------------===//<br><br>def SDT_RELADDR       : SDTypeProfile<1, 2, [SDTCisInt<0>, SDTCisSameAs<0, 1>]>;<br>def XSTGRELADDR       : SDNode<"XSTGISD::RELADDR", SDT_RELADDR>;<br><br>let Uses= [GRP] in {<br>  def RelAddr           : XSTGPseudo< (outs),<br>                                      (ins GPRC:$spoff, GPRC:$dst),<br>                                      "! RELADDR $spoff, $dst",<br>                                      [(XSTGRELADDR GPRC:$spoff, GPRC: $dst)]>;<br>}<br><br><br></div>(specifically that 'def RelAddr' line)<br><br></div>If I change it to have an empty pattern match like this:<br>let Uses= [GRP] in {<br>  def RelAddr           : XSTGPseudo< (outs),<br>                                      (ins GPRC:$spoff, GPRC:$dst),<br>                                      "! RELADDR $spoff, $dst",<br>                                      []>;<br>}<br><br><br></div>It will compile, but without the pattern it's not a very useful def.<br><br></div>Any suggestions?<br><br></div>I have other XSGTGPseudo definitions in the .td file which are similar which do compile, like this:<br><br>def SDT_XSTGEhRet : SDTypeProfile<0, 2, [SDTCisInt<0>, SDTCisPtrTy<1>]>;<br>def XSTGEhReturn  : SDNode<"XSTGISD::EH_Return", SDT_XSTGEhRet,<br>                             [SDNPHasChain, SDNPOptInGlue]>;<br>//<br>// EhReturn takes the place of regular return instruction<br>// but takes two arguments (R2, R3) which are used for storing<br>// the offset and return address respectively.<br>//<br>let Uses = [R2, R3], isTerminator = 1, isReturn = 1, isBarrier = 1 in {<br>  def EhReturn : XSTGPseudo< (outs),<br>                             (ins GPRC:$spoff, GPRC:$dst),<br>                             "! EH_RETURN $spoff, $dst",<br>                             [(XSTGEhReturn GPRC:$spoff, GPRC:$dst)]>;<br>}<br><br><br><div><div><div><br></div><div>Phil<br></div><div><br></div></div></div></div>