<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<div>
<div>
<div>Hi Matt,</div>
<div><br>
</div>
<div>Thanks for pointing this out. Unfortunately, it looks like we'll need to do some cleanup here. The class hierarchy is what it is, and the debug code like this is going to need to be changed to not unconditionally dereference the MMO.</div>
<div><br>
</div>
<div>I'll fix it this weekend or early next week.</div>
<div><br>
</div>
<div>-Hal</div>
<div><br>
</div>
<div><font style="color:#333333"><i>Sent from my Verizon Wireless 4G LTE DROID</i></font></div>
</div>
<br>
<br>
Matt Arsenault <arsenm2@gmail.com> wrote:<br>
<br>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText"><br>
On Jul 31, 2014, at 3:31 PM, Hal Finkel <hfinkel@anl.gov> wrote:<br>
<br>
> Author: hfinkel<br>
> Date: Thu Jul 31 17:31:33 2014<br>
> New Revision: 214452<br>
> <br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=214452&view=rev">http://llvm.org/viewvc/llvm-project?rev=214452&view=rev</a><br>
> Log:<br>
> Make classof in MemSDNode consistent with MemIntrinsicSDNode<br>
> <br>
> If INTRINSIC_W_CHAIN and INTRINSIC_VOID are MemIntrinsicSDNodes, and a<br>
> MemIntrinsicSDNode is a MemSDNode, then INTRINSIC_W_CHAIN and INTRINSIC_VOID<br>
> must be MemSDNodes too.<br>
> <br>
> Noticed by inspection.<br>
> <br>
> Modified:<br>
>    llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h<br>
> <br>
> Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h?rev=214452&r1=214451&r2=214452&view=diff">
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h?rev=214452&r1=214451&r2=214452&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h (original)<br>
> +++ llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h Thu Jul 31 17:31:33 2014<br>
> @@ -1158,6 +1158,8 @@ public:<br>
>            N->getOpcode() == ISD::ATOMIC_LOAD_UMAX    ||<br>
>            N->getOpcode() == ISD::ATOMIC_LOAD         ||<br>
>            N->getOpcode() == ISD::ATOMIC_STORE        ||<br>
> +           N->getOpcode() == ISD::INTRINSIC_W_CHAIN   ||<br>
> +           N->getOpcode() == ISD::INTRINSIC_VOID      ||<br>
>            N->isTargetMemoryOpcode();<br>
>   }<br>
> };<br>
> <br>
<br>
<br>
This is breaking SI with -debug, trying to access a nonexistent memoperand:<br>
<br>
  } else if (const MemSDNode* M = dyn_cast<MemSDNode>(this)) {<br>
    OS << "<" << *M->getMemOperand() << ">";<br>
<br>
If you run any test that uses some of the control flow intrinsics, this crashes when calling dump() on the node. These intrinsics have chains, but do not have any specific memory operand to be associated with. Is there something wrong with the current definitions
 for these? (e.g. int_SI_if)<br>
<br>
To reproduce, run llc -debug -march=r600 -mcpu=tahiti test/CodeGen/R600/add.ll</div>
</span></font>
</body>
</html>