On Tue, May 7, 2013 at 4:07 PM, John McCall <span dir="ltr"><<a href="mailto:rjmccall@apple.com" target="_blank">rjmccall@apple.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On May 7, 2013, at 2:53 PM, Richard Smith <<a href="mailto:richard-llvm@metafoo.co.uk">richard-llvm@metafoo.co.uk</a>> wrote:<br>
> Author: rsmith<br>
> Date: Tue May  7 16:53:22 2013<br>
> New Revision: 181368<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=181368&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=181368&view=rev</a><br>
> Log:<br>
> Don't crash in IRGen if a conditional with 'throw' in one of its branches is<br>
> used as a branch condition.<br>
<br>
</div>Hmm.  Maybe we should have some sort of CK_BottomToAnything implicit<br>
conversion node here instead of forcing all the clients to explicitly deal with<br>
the vanishingly-uncommon operand-is-a-throw case all over the place.<br>
<br>
Did you audit everything else that generates code for conditional operators<br>
to ensure that they deal with it?</blockquote><div><br></div><div> I have now. There are (at least) two more bugs:</div><div><br></div><div>1) A conditional between _Complex int and a throw-expression asserts in IRGen.</div>
<div>2) Per core issue 1550, a conditional between a throw-expression and a glvalue produces a glvalue. We don't support that in Sema nor in IRGen.</div></div>