Elmar Stellnberger
2010-Mar-03 17:51 UTC
[LLVMdev] llvm hangs: fibonacci numbers, recursive
Having tried out llvm I had to notice that the fibonacci example program hangs after short:> ./run fib1 1 2 3 5 8 ^C For the next number it would be supposed to last twice as long as for 8. However it hangs forever instead. using llvm-2.5-0.pm.1.1.x86_64 Does not matter whether I compile it with gcc or interprete it with lli. -------------------------------------------------------------------------- pasted attachement of sources: @str = internal constant [4 x i8] c"%d\0A\00" define void @main() nounwind { init: br label %loop loop: %i = phi i32 [0, %init], [%i.next, %loop] %fib = call i32 @fib(i32 %i) call i32 @printf( i8* getelementptr ([4 x i8]* @str, i32 0,i32 0), i32 %fib) %i.next = add i32 %i, 1 %cond = icmp ult i32 %i.next, 7 br i1 %cond, label %loop, label %exit exit: ret void } define i32 @fib(i32 %n) nounwind { %cond = icmp ult i32 %n, 2 br i1 %cond, label %c1, label %c2 c1: ret i32 1 c2: %n1 = sub i32 %n, 1 %n2 = sub i32 %n, 2 %fib1 = call i32 @fib(i32 %n1) %fib2 = call i32 @fib(i32 %n2) %r = add i32 %fib1, %fib2 ret i32 %r } declare i32 @printf(i8*, ...) nounwind -------------- next part -------------- A non-text attachment was scrubbed... Name: fib.bc Type: application/octet-stream Size: 496 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100303/41321f5c/attachment.obj> -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: fib.ll URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100303/41321f5c/attachment.ksh>
On Wed, Mar 3, 2010 at 9:51 AM, Elmar Stellnberger <elmstel at gmail.com> wrote:> Having tried out llvm I had to notice that the fibonacci example > program hangs after short: >> ./run fib > 1 > 1 > 2 > 3 > 5 > 8 > ^C > > For the next number it would be supposed to last twice as long as for 8. > However it hangs forever instead. > > using llvm-2.5-0.pm.1.1.x86_64This program works for me with LLVM at trunk. You probably need to upgrade, at least to 2.6, and maybe to trunk (http://llvm.org/releases/).