[LLVMdev] GVN Infinite loop

Arushi Aggarwal arushi987 at gmail.com
Tue May 3 15:25:47 PDT 2011


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.

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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110503/ca229ea6/attachment.html>


More information about the llvm-dev mailing list