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)




Reply via email to