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

songlh songlh at cs.wisc.edu
Mon Apr 28 22:02:06 PDT 2014


Thanks a lot for the suggestion! Let me try the pattern matching 
firstly.

Best

Linhai


On 2014-04-28 22:12, Jingyue Wu wrote:
> 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 [1]
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev [2]
> 
> 
> 
> Links:
> ------
> [1] http://llvm.cs.uiuc.edu
> [2] http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev



More information about the llvm-dev mailing list