<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi,<div><br></div><div>during the hunt for a bug causing strange behavior of our automatic parallelization framework, </div><div>I found some, at least for me, unexpected behavior of the DataStructureAnalysis in Poolalloc.</div><div><br></div><div>Consider the following simplified program:</div><div><br></div><div>====================</div><div><div>int ARR[4] = {1, 2, 3, 4};</div><div><br></div><div>int a(int pos) {</div><div> return ARR[pos];</div><div>}</div><div><br></div><div>int sum(int op_a, int op_b) {</div><div> return a(op_a) + a(op_b);</div><div>}</div><div><br></div><div>int main(int argc, const char *argv[]) {</div><div> return sum(1, 3);</div><div>}</div></div><div>====================</div><div><br></div><div>The unexpected behavior is that the bottum-up-graphs (and consequently the top-down-graphs)</div><div>of methods sum and main do not contain any hint on the read of the global variable ARR. These </div><div>graphs thus do not reflect the full effects of the methods, which I expected them to do. (Screenshots attached)</div><div><br></div><div>This seems to be deliberate as the code states that "[...] we don't care about merging globals [...] here" </div><div>(BottomUpClosure.cpp:641 in the release_32 version from the poolalloc SVN).</div><div><br></div><div>The "here" in the comment suggests that this should happen at some later point, which it doesn't.</div><div><br></div><div>This behavior is also not in line with the PLDI Paper.</div><div>Is it intended? And if so, why?</div><div><br></div><div>Thanks for your efforts,</div><div>Kevin</div><div><br></div><div><img id="9004dcf0-a9ff-49fc-9a19-e542fe9e7e51" height="679" width="703" apple-width="yes" apple-height="yes" src="cid:485757C0-5A1A-463F-B32B-50CC0D956626@cs.uni-saarland.de"></div><div apple-content-edited="true"><br></div>
<br></body></html>