<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Jan 10, 2012, at 12:20 AM, David Blaikie wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div><blockquote type="cite"><blockquote type="cite">If it is, my main concern then comes down to the following:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">(1) Are there are other issues that we are not considering where the<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">uninstantiated template doesn't faithfully provide an under approximation of<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">the reachable code?<br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I've tested the exception case above & that seems to be always<br></blockquote><blockquote type="cite">reachable anyway. I'll try my hand at looking through the template<br></blockquote><blockquote type="cite">instnantiation code to see if there's any cases where we might end up<br></blockquote><blockquote type="cite">adding edges rather than removing them.<br></blockquote><br>I haven't really delved into this further - is there a particular<br>form/approach you'd like to see to prove this property? (that new<br>edges are never added when instantiating a template (except when<br>splitting an existing block in the CFG (eg: by a dependent call<br>becoming noreturn - splitting the block at the call site)))</div></span></blockquote></div><br><div>I've thought about this more, and I'm pretty sure that analyzing the uninstantiated template will be a conservative superset of the reachable control-flow of any instantiated template.</div></body></html>