Hello, guys.
I remember that Jeffrey Poznanovic posted ths issue about 'Implicit def' on Apr. 29 and Chris Lattner mentioned it seemed to be a bug.
I am using ver 1.9 and also found 'Implicit def' while using codegen for the code follows:
Hello, guys.
I remember that Jeffrey Poznanovic posted ths issue about 'Implicit def' on Apr. 29 and Chris Lattner mentioned it seemed to be a bug.
I am using ver 1.9 and also found 'Implicit def' while using codegen for the code follows:
I remember that Jeffrey Poznanovic posted ths issue about 'Implicit def' on Apr. 29 and Chris Lattner mentioned it seemed to be a bug.
Ok, I don't recall the bug but:
I am using ver 1.9 and also found 'Implicit def' while using codegen for the code follows:
The implicit def instruction often comes from use of the 'undef' value. In your case, that comes from this function
int %c_fs() {
entry:
ret int undef
}
So your real question seems to be why the llvm optimizer reduces c_fs to undef. The answer is because your code is not computing a defined value:
int c_fs(){
int i, sum;
for (i=0; i<10; i++)
sum += f(i);
return sum;
}
Try initializing 'sum' to zero.
-Chris
#ifdef LINUX
#include <stdio.h>
#include <stdlib.h>int c_f(int);
int c_fs();int main (int argc, char* argv) {
int j;
j = c_fs();printf ("%i\n",j);
printf ("You got it\n");}
#endif
-------------------------------------------------------------
The code above was converted to LLVM assembly as follows:-------------------------------------------------------------
implementation ; Functions:int %c_f(int %x1) {
entry:
ret int %x1
}-------------------------------------------------------------
You can see 'int undef' at the end of this assembly which is shown as 'Implicit def' in target specific assembly code.
I just wonder if this is fixed in the newer version.
Have a good weekend.Thanks,
Seung J. Lee
_______________________________________________
LLVM Developers mailing list
LLVMdev@cs.uiuc.edu http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
-Chris