<div class="gmail_quote">On 11 January 2011 17:47, Chris Lattner <span dir="ltr"><<a href="mailto:clattner@apple.com">clattner@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im"><br>
On Jan 11, 2011, at 5:42 PM, Matt Beaumont-Gay wrote:<br>
<br>
> Author: matthewbg<br>
> Date: Tue Jan 11 19:42:42 2011<br>
> New Revision: 123297<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=123297&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=123297&view=rev</a><br>
> Log:<br>
> Prefer llvm_unreachable to assert(0)<br>
<br>
</div>Hi Matt,<br>
<br>
Please use assert(0) unless we need the "does not fallthrough" behavior of llvm_unreachable.<br></blockquote><div><br></div><div>The difference is that llvm_unreachable still generates code in a Release build while assert() doesn't, right?</div>

<div><br></div><div>Matt made this commit because we were seeing:</div><div><br></div><div>  llvm/lib/Target/ARM/ARMMCCodeEmitter.cpp:653: error: control reaches end of non-void function [-Wreturn-type]</div><div><div><br>

</div></div><div>so it sounds like llvm_unreachable isn't the right tool, but we'd like to fix this that doesn't generate warnings in release builds.</div><div><br></div><div>Nick</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">


<font color="#888888"><br>
-Chris<br>
</font><div><div></div><div class="h5"><br>
><br>
> Modified:<br>
>    llvm/trunk/lib/Target/ARM/ARMMCCodeEmitter.cpp<br>
><br>
> Modified: llvm/trunk/lib/Target/ARM/ARMMCCodeEmitter.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMMCCodeEmitter.cpp?rev=123297&r1=123296&r2=123297&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMMCCodeEmitter.cpp?rev=123297&r1=123296&r2=123297&view=diff</a><br>


> ==============================================================================<br>
> --- llvm/trunk/lib/Target/ARM/ARMMCCodeEmitter.cpp (original)<br>
> +++ llvm/trunk/lib/Target/ARM/ARMMCCodeEmitter.cpp Tue Jan 11 19:42:42 2011<br>
> @@ -129,7 +129,7 @@<br>
>                                SmallVectorImpl<MCFixup> &Fixups) const {<br>
>     ARM_AM::AMSubMode Mode = (ARM_AM::AMSubMode)MI.getOperand(OpIdx).getImm();<br>
>     switch (Mode) {<br>
> -    default: assert(0 && "Unknown addressing sub-mode!");<br>
> +    default: llvm_unreachable("Unknown addressing sub-mode!");<br>
>     case ARM_AM::da: return 0;<br>
>     case ARM_AM::ia: return 1;<br>
>     case ARM_AM::db: return 2;<br>
> @@ -648,7 +648,7 @@<br>
>   switch (Expr->getKind()) {<br>
>   case MCExpr::SymbolRef: return false;<br>
>   case MCExpr::Binary: return true;<br>
> -  default: assert(0 && "Unexpected expression type");<br>
> +  default: llvm_unreachable("Unexpected expression type");<br>
>   }<br>
> }<br>
><br>
> @@ -669,7 +669,7 @@<br>
>     const MCExpr *OrigExpr = MO.getExpr();<br>
>     MCFixupKind Kind;<br>
>     switch (Expr->getKind()) {<br>
> -    default: assert(0 && "Unsupported ARMFixup");<br>
> +    default: llvm_unreachable("Unsupported ARMFixup");<br>
>     case MCSymbolRefExpr::VK_ARM_HI16:<br>
>       Kind = MCFixupKind(ARM::fixup_arm_movt_hi16);<br>
>       if (EvaluateAsPCRel(OrigExpr))<br>
><br>
><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>
<br>
<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>