<div dir="ltr">Yeah, it is suboptimal, it doesn't take into consideration the fact that the default is unreachable.<div><br></div><div>I'll a look at it later to see if it is easy to also take into consideration this case and add it to the patch + test for the condition.</div>
<div><br></div><div>Marcello</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-06-11 17:13 GMT+01:00 Joerg Sonnenberger <span dir="ltr"><<a href="mailto:joerg@britannica.bec.de" target="_blank">joerg@britannica.bec.de</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On Wed, Jun 11, 2014 at 04:32:52PM +0100, Marcello Maggioni wrote:<br>
> Looks like it gives the same result<br>
<br>
</div>Looks suboptimal?<br>
<div class=""><br>
> 2014-06-11 14:18 GMT+01:00 Joerg Sonnenberger <<a href="mailto:joerg@britannica.bec.de">joerg@britannica.bec.de</a>>:<br>
><br>
> > On Wed, Jun 11, 2014 at 02:05:23AM +0100, Marcello Maggioni wrote:<br>
> > > Hello Joerg,<br>
> > ><br>
> > > by unreachable default you mean something like this?<br>
> > ><br>
> > > int foo(int a) {<br>
> > >   switch (a) {<br>
> > >   case 0:<br>
> > >     return 10;<br>
> > >   case 1:<br>
> > >     return 20;<br>
> > >   case 2:<br>
> > >     return 2;<br>
> > >   case 8:<br>
> > >     return 3;<br>
> > >   case 9:<br>
> > >     return 4;<br>
> > >   case 10:<br>
> > >     return 5;<br>
> > >   default:<br>
> > >     abort();<br>
> > >   }<br>
> > > }<br>
> ><br>
> > More like explicit __builtin_unreachable(), since abort() still has side<br>
> > effects. Practical use case is switching over an enum.<br>
<br>
</div>I would expect something like:<br>
<br>
if (a >= 8) {<br>
  if (a >= 9) {<br>
    if (a >= 10)<br>
      return 5;<br>
    else<br>
      return 4;<br>
  } else {<br>
    return 3;<br>
  }<br>
} else {<br>
  if (a >= 1) {<br>
    if (a >= 2)<br>
      return 20;<br>
    return 2;<br>
  } else {<br>
    return 10;<br>
<div class="HOEnZb"><div class="h5">  }<br>
}<br>
<br>
Joerg<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br></div>