[LLVMdev] -instcombine broken with fastcall
Arnaud Bergeron
abergeron at gmail.com
Sun Oct 5 22:55:03 PDT 2008
I found this with LLVM 2.3 and reproduced with svn as of about thirty
minutes ago and they both fail in the same way.
If you run this code through opt -instcombine
define fastcc i64 @fibo(i64) {
switch i64 %0, label %2 [
i64 0, label %8
i64 1, label %8
]
; <label>:2 ; preds = %1
%3 = sub i64 %0, 1 ; <i64> [#uses=1]
%4 = call i64 @fibo(i64 %3) ; <i64> [#uses=1]
%5 = sub i64 %0, 2 ; <i64> [#uses=1]
%6 = call i64 @fibo(i64 %5) ; <i64> [#uses=1]
%7 = add i64 %4, %6 ; <i64> [#uses=1]
ret i64 %7
; <label>:8 ; preds = %1, %1
ret i64 1
}
you get this crap back
define fastcc i64 @fibo(i64) {
switch i64 %0, label %2 [
i64 0, label %4
i64 1, label %4
]
; <label>:2 ; preds = %1
store i1 true, i1* undef
store i1 true, i1* undef
%3 = add i64 undef, undef ; <i64> [#uses=1]
ret i64 %3
; <label>:4 ; preds = %1, %1
ret i64 1
}
(which, called in a program gives an instant bus error)
Arnaud
More information about the llvm-dev
mailing list