Hi Paul, arrowdodger, Thanks for your help diagnosing and fixing this issue. Please see r146350: http://llvm.org/viewvc/llvm-project?view=rev&revision=146350
Best, Cristian On 16/08/2011 10:00, arrowdodger wrote: > On Sun, Aug 14, 2011 at 9:06 PM, Paul Marinescu > <[email protected] <mailto:[email protected]>> > wrote: > > When compiling KLEE (svn head) against LLVM 2.9 on 64bit Ubuntu, the > POSIX tests never terminate. Upon looking at klee-last/assembly.ll (for > FDNumbers) it seems that memset recursively calls itself: > > define i8* @memset(i8* %dst, i32 %s, i64 %count) nounwind { > entry: > %0 = icmp eq i64 %count, 0, !dbg !2270 > br i1 %0, label %bb2, label %bb.lr.ph <http://bb.lr.ph>, !dbg !2270 > > bb.lr.ph <http://bb.lr.ph>: ; preds = %entry > %1 = trunc i32 %s to i8, !dbg !2271 > %2 = zext i8 %1 to i32 > %3 = call i8* @memset(i8* %dst, i32 %2, i64 %count) > br label %bb2 > > bb2: ; preds = %bb.lr.ph <http://bb.lr.ph>, > %entry > ret i8* %dst, !dbg !2272 > } > > The tests pass after changing in runtime/Intrinsic/memset.c > char * a = dst to volatile char * a = dst > > but this does not fix the root cause of the problem. Any ideas? > Compiling memset.c by itself produces correct assembly. > > Thanks, > Paul > _______________________________________________ > klee-dev mailing list > [email protected] <mailto:[email protected]> > http://keeda.Stanford.EDU/mailman/listinfo/klee-dev > > > This have been fixed in LLVM trunk (it was LoopIdiomRecognizer fault). > In your case, you can do this: > https://bitbucket.org/arrowdodger/klee/changeset/3844a221bac8 > > > _______________________________________________ > klee-dev mailing list > [email protected] > http://keeda.Stanford.EDU/mailman/listinfo/klee-dev _______________________________________________ klee-dev mailing list [email protected] http://keeda.Stanford.EDU/mailman/listinfo/klee-dev
