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>
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>
On May 3, 2011, at 3: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. > > Any pointers to how to reduce the test case.Bugzilla can reduce testcases that cause infinite loops (it has a -timeout flag), I'd try it. Even if this doesn't help, please do file a bug with whatever you have. This is likely to be a recent regression. -Chris> > 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
That trick worked. Filed as bug 9841. Thanks, Arushi On Wed, May 4, 2011 at 7:12 AM, Chris Lattner <clattner at apple.com> wrote:> > On May 3, 2011, at 3: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. > > > > Any pointers to how to reduce the test case. > > Bugzilla can reduce testcases that cause infinite loops (it has a -timeout > flag), I'd try it. Even if this doesn't help, please do file a bug with > whatever you have. This is likely to be a recent regression. > > -Chris > > > > > 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/20110504/7b42256d/attachment.html>