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, !dbg !2270
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,
%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]
http://keeda.Stanford.EDU/mailman/listinfo/klee-dev