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

Reply via email to