Alexandre Julliard a écrit :
But here you really have two non-inline definitions, one in C and one
in assembly. What happens if you remove the C version?
sorry, I redid my week end tests and went too fast
the real "bad" case is:
/* case with 2 C declarations */
extern inline int foo(int a);
extern inline int foo(int a) {return a + 1;}
int tfoo(int b)
{
return foo(b) * b;
}
int foo(int a) {return a+1;}
/* case with C & ASM declarations */
extern inline int ffo(int a);
extern inline int ffo(int a) {return a + 1;}
int tffo(int f)
{
return ffo(f) * f;
}
__asm__( ".text\n\t"
".align 4\n\t"
".globl ffo\n\t"
".type ffo,@function\n"
"ffo:\n\tret\n"
"\n\t.previous" );
[EMAIL PROTECTED] wine-git]$ /opt2/intel/cc/9.1.047/bin/icc -c -O2 ~/icc2.c
/home/eric/icc2.c(7): warning #290: function "foo" has already been defined
int foo(int a) {return a+1;}
^
IPO: WARNING: File scope asm disables -ipo
/home/eric/tmp/iccTSWeMaas_.s: Assembler messages:
/home/eric/tmp/iccTSWeMaas_.s:86: Error: symbol `ffo' is already defined
we don't get the error if the inline function is not inlined
changing the order of asm def & inline usage doesn't change the output
either
A+
--
Eric Pouech
"The problem with designing something completely foolproof is to underestimate the
ingenuity of a complete idiot." (Douglas Adams)