This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RE: [cft] rewrite i386 dllimport/dllexport
- From: Danny Smith <dannysmith at clear dot net dot nz>
- To: 'Richard Henderson' <rth at redhat dot com>, gcc-patches at gcc dot gnu dot org
- Date: Sun, 25 Mar 2007 22:18:03 +1200
- Subject: RE: [cft] rewrite i386 dllimport/dllexport
Richard Henderson
Saturday, 24 March 2007 12:51 p.m.
> Anyway, testing this properly is beyond what I'm set up to do
> at present, so assistance is greatly appreciated.
Hello Richard
Thanks for doing this.
Unfortunately the changes appear to force all local functions to be
called as indirect refs.
eg:
With your patch, this:
static int bar (void) __attribute__((noinline)) ;
static int bar () {return 0;}
int foo () { return bar( );}
foo gets compiled as
pushl %ebp
movl %esp, %ebp
movl $_bar, %eax
call *%eax
popl %ebp
ret
rather than (without your patch) as:
_foo:
pushl %ebp
movl %esp, %ebp
call _bar
popl %ebp
ret
This causes failure of libgcc build in unwind-dw2.c where, with
optimization, we get invalid assembly code like this:
...
call *$_read_uleb128
Danny
>
>
> r~