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" ); [eric(a)localhost 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)