<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span style="font-size: 13px;" class="">John,</span><div style="font-size: 13px;" class="">         this is the issue at hand</div><div style="font-size: 13px;" class=""><br class=""></div><div style="font-size: 13px;" class="">[1. this function *always* executes statement S,<br class=""><span class="Apple-tab-span" style="white-space: pre;"> </span>F(a) {<br class=""><span class="Apple-tab-span" style="white-space: pre;">       </span>   If (a == a) S;<br class=""><span class="Apple-tab-span" style="white-space: pre;">     </span>}<br class="">   but in llvm if you inline it and “a” happens to be “undef” then nothing can<br class="">   be said about whether statement S is executed. This is indefensible.]</div><div style="font-size: 13px;" class=""><br class=""></div><div style="font-size: 13px;" class="">I am trying to force this issue because when I challenge folks to question</div><div style="font-size: 13px;" class="">their assumptions regarding CSE’ing and CP’ing of “undef” all I get back</div><div style="font-size: 13px;" class="">is a recitation of the usual catechism on the subject. I can’t get them</div><div style="font-size: 13px;" class="">to think outside the box without this example of the consequences</div><div style="font-size: 13px;" class="">of those assumptions. Unfortunately so far no one has responded to it.</div><div style="font-size: 13px;" class=""><br class=""></div><div style="font-size: 13px;" class=""><br class=""></div><div style="font-size: 13px;" class="">The VP of engineering at my last company had a way of bringing</div><div style="font-size: 13px;" class="">clarity to issues like this, he said now that robotic surgery is</div><div style="font-size: 13px;" class="">becoming a reality do you want the compiler to do this if it is being</div><div style="font-size: 13px;" class="">used to compile the robot software and you are scheduled for</div><div style="font-size: 13px;" class="">surgery.</div><div style="font-size: 13px;" class=""><br class=""></div><div style="font-size: 13px;" class=""><br class="">I also believe that the C-standard is flawed in that it uses the</div><div style="font-size: 13px;" class="">term “undefined behavior” in many place where it should only</div><div style="font-size: 13px;" class="">use “unspecified”, and that reading the letter rather than the spirit </div><div style="font-size: 13px;" class="">of the standard is doing a disservice to our users.  We should not</div><div style="font-size: 13px;" class="">look to the standard for guidance, rather the llvm community</div><div style="font-size: 13px;" class="">needs to take a stand and guide the standard.</div><div style="font-size: 13px;" class=""><br class=""></div><div style="font-size: 13px;" class=""><br class=""></div><div style="font-size: 13px;" class="">Will you help in challenging folks to question their assumptions ?</div><div style="font-size: 13px;" class="">Will you help guide the standard ?<br class="">What say you ?<br class=""><br class=""><br class="">Peter Lawrence.</div><div style="font-size: 13px;" class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jun 19, 2017, at 9:28 PM, John Regehr <<a href="mailto:regehr@cs.utah.edu" class="">regehr@cs.utah.edu</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><blockquote type="cite" class="">... the argument against the function-inlining<br class="">example is so compelling that John decided to drop out of the argument,<br class="">IE he gave up because it is indefensible.<br class=""></blockquote><br class="">Peter, it is extremely impolite to mischaracterize someone else's position.  Up to this point I assumed that you were operating in good faith but what I quoted above looks more like trolling.<br class=""><br class="">John<br class=""><br class=""></div></div></blockquote></div><br class=""></div></body></html>