[LLVMdev] GVN Infinite loop

John Criswell criswell at illinois.edu
Tue May 3 18:34:11 PDT 2011


On 5/3/11 5:25 PM, Arushi Aggarwal wrote:
> Hi,
>
> GVN seems to be running in an infinite loop on my example. I have 
> attached the output of one iteration. I cant seem to reduce the 
> testcase either.

Are you running with LLVM 2.9 or LLVM mainline?

-- John T.

>
> Any pointers to how to reduce the test case.
>
> THanks,
> Arushi
>
> GVN iteration: 8
> GVN WIDENED LOAD:   %0 = load i8* getelementptr inbounds 
> (%struct.CHESS_POSITION* @search, i64 0, i32 23), align 2, !dbg !875
> TO:   %1 = load i16* bitcast (i8* getelementptr inbounds 
> (%struct.CHESS_POSITION* @search, i64 0, i32 23) to i16*), align 2
> GVN COERCED INST:
>   %0 = load i8* getelementptr inbounds (%struct.CHESS_POSITION* 
> @search, i64 0, i32 23), align 2, !dbg !875
>   %1 = load i16* bitcast (i8* getelementptr inbounds 
> (%struct.CHESS_POSITION* @search, i64 0, i32 23) to i16*), align 2
>   %3 = load i16* bitcast (i8* getelementptr inbounds 
> (%struct.CHESS_POSITION* @search, i64 0, i32 23) to i16*), align 2
>
>
> GVN removed:   %3 = load i16* bitcast (i8* getelementptr inbounds 
> (%struct.CHESS_POSITION* @search, i64 0, i32 23) to i16*), align 2
> GVN WIDENED LOAD:   %0 = load i8* getelementptr inbounds 
> (%struct.CHESS_POSITION* @search, i64 0, i32 23), align 2, !dbg !875
> TO:   %1 = load i16* bitcast (i8* getelementptr inbounds 
> (%struct.CHESS_POSITION* @search, i64 0, i32 23) to i16*), align 2
> GVN COERCED INST:
>   %0 = load i8* getelementptr inbounds (%struct.CHESS_POSITION* 
> @search, i64 0, i32 23), align 2, !dbg !875
>   %1 = load i16* bitcast (i8* getelementptr inbounds 
> (%struct.CHESS_POSITION* @search, i64 0, i32 23) to i16*), align 2
>   %6 = load i16* bitcast (i8* getelementptr inbounds 
> (%struct.CHESS_POSITION* @search, i64 0, i32 23) to i16*), align 2
>
>
> GVN removed:   %6 = load i16* bitcast (i8* getelementptr inbounds 
> (%struct.CHESS_POSITION* @search, i64 0, i32 23) to i16*), align 2
> GVN WIDENED LOAD:   %0 = load i8* getelementptr inbounds 
> (%struct.CHESS_POSITION* @search, i64 0, i32 23), align 2, !dbg !875
> TO:   %1 = load i16* bitcast (i8* getelementptr inbounds 
> (%struct.CHESS_POSITION* @search, i64 0, i32 23) to i16*), align 2
> GVN COERCED INST:
>   %0 = load i8* getelementptr inbounds (%struct.CHESS_POSITION* 
> @search, i64 0, i32 23), align 2, !dbg !875
>   %1 = load i16* bitcast (i8* getelementptr inbounds 
> (%struct.CHESS_POSITION* @search, i64 0, i32 23) to i16*), align 2
>   %9 = load i16* bitcast (i8* getelementptr inbounds 
> (%struct.CHESS_POSITION* @search, i64 0, i32 23) to i16*), align 2
>
>
> GVN removed:   %9 = load i16* bitcast (i8* getelementptr inbounds 
> (%struct.CHESS_POSITION* @search, i64 0, i32 23) to i16*), align 2
> GVN removed:   %10 = trunc i16 %1 to i8
> GVN removed:   %10 = trunc i16 %3 to i8
> GVN removed:   %10 = trunc i16 %5 to i8
> GVN iteration: 9
>
>
> _______________________________________________
> 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/20110503/067c2884/attachment.html>


More information about the llvm-dev mailing list