Eric Pouech eric.pouech@wanadoo.fr writes:
it's fixed for C functions, but not when the function is declared in assembly extern inline int foo(int a); extern inline int foo(int a) {return a + 1;} int foo(int a) {return a+1;} extern inline int ffo(int a); extern inline int ffo(int a) {return a + 1;} int ffo(int a) {return a+1;} __asm__( ".text\n\t" ".align 4\n\t" ".globl ffo\n\t" ".type ffo,@function\n" "ffo:\n\tret\n" "\n\t.previous" );
[eric@localhost wine-git]$ /opt2/intel/cc/9.1.047/bin/icc -c ~/icc2.c /home/eric/icc2.c(3): warning #290: function "foo" has already been defined int foo(int a) {return a+1;} ^
/home/eric/icc2.c(6): warning #290: function "ffo" has already been defined int ffo(int a) {return a+1;} ^
IPO: WARNING: File scope asm disables -ipo /home/eric/tmp/icc5IgzlBas_.s: Assembler messages: /home/eric/tmp/icc5IgzlBas_.s:40: Error: symbol `ffo' is already defined
(and embedding the asm code into a dummy function doesn't help either)
But here you really have two non-inline definitions, one in C and one in assembly. What happens if you remove the C version?