[LLVMdev] how to identify basic blocks added for switch instruction without default?

Jingyue Wu jingyue at google.com
Mon Apr 28 20:12:55 PDT 2014


I suspect pattern matching "sw.default" will identify these blocks with a
reasonable accuracy. The code in clang adding these blocks is in
lib/CodeGen/CGStmt.cpp.

Jingyue


On Mon, Apr 28, 2014 at 8:06 PM, songlh <songlh at cs.wisc.edu> wrote:

> Hi,
>
>    I just notice that front-end will add an extra block for switch
> instruction without default. How could I identify basic blocks added due to
> this reason?
>
>    The added codes looks like:
>
> sw.default.i625:                                  ; preds = %if.end512
>   tail call void @fancy_abort(i8* getelementptr inbounds ([38 x i8]*
> @.str, i64 0, i64 0), i32 3045, i8* getelementptr inbounds ([23 x i8]*
> @__FUNCTION__.compcode_to_comparison, i64 0, i64 0)) #7, !dbg !8046
>   unreachable, !dbg !8046
>
>    Could I get "unreachable" information from metadata?
>
>    Thanks a lot!
>
>    Best,
>
>
>               Linhai
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140428/695aa901/attachment.html>


More information about the llvm-dev mailing list