<div dir="ltr">Bumping this just in case it's been missed.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Nov 29, 2019 at 7:01 PM Bill Wendling <<a href="mailto:isanbard@gmail.com">isanbard@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">I'm trying to find the "fallthrough" block in the CFG. The specific instance is a CFG block that ends in an "asm goto"<br><br> [B3]<br>   1: int out2;<br>   T: asm volatile goto ("testl %0, %0; testl %1, %2; jne %l3" : "+S" (out1), "+D" (out2) : "r" (out1) :  : label_true, loop);<br>   Preds (1): B4<br>   Succs (2): B2 B1<br><br>In this case, the "loop" target is also the fallthrough block:<br><br>int test2(int out1) {<br>  int out2;<br> <b> asm volatile goto("testl %0, %0; testl %1, %2; jne %l3" : "+S"(out1), "+D"(out2) : "r"(out1) :: label_true, loop);<br>loop:<br>  return out2;</b><br>label_true:<br>  return -2;<br>}<br><br>From the CFG output above, it's hard to determine which of those successors is supposed to be the fallthrough. I could loop through the blocks in the CFG, but that seems unnecessarily wasteful. Is there a nicer way to figure this out?<br><br>-bw</div>
</blockquote></div>