<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">-  llvm::BasicBlock *MonotonicBB, *AcquireBB, *ReleaseBB, *AcqRelBB, *SeqCstBB;<br>
+  llvm::BasicBlock *MonotonicBB = 0, *AcquireBB = 0, *ReleaseBB = 0,<br>
+                   *AcqRelBB = 0, *SeqCstBB = 0;<br></blockquote><div><br></div><div>Just curious -  why were these all declared up-front like this, rather than at the scopes they were used? You don't seem to actually use the null values at all & duplicate the condition basically like:</div>
<div><br></div><div>T *x;<br>stuff1();<br>if (cond)<br>  x = init();<br>stuff2();<br>if (cond)<br>  use(x)<br><br>rather than<br><br>stuff1();<br>stuff2();<br>if (cond) {</div><div>  T *x = init();<br>  use(x);<br>}</div>
<div><br></div><div>seems like excess scope, initialization, etc - or is there a reason the basic blocks need to be constructed in a particular order up front? (I had a patch to move these initializations/declarations down as in my second example but I didn't get around to running the tests on it to see if the block creation order change broke anything)</div>
<div><br></div><div>- David<br>  </div></div>