This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch i386] Enable attribute based calling convention switching and support vaarg.


Hello Richard,

2008/7/4 Richard Guenther <richard.guenther@gmail.com>:
> On Fri, Jul 4, 2008 at 3:36 PM, Kai Tietz <Kai.Tietz@onevision.com> wrote:
>> Diego,
>>
>> I missed two )'s in the prior patch file.
>> I tested it by adding an assert for canonical_va_list_type in builtins.c:
>> stabilize_va_list() and regression tested it via linux64 cross and for
>> w64.
>
> Doesn't work.
>
> /space/rguenther/obj/./gcc/xgcc -B/space/rguenther/obj/./gcc/
> -B/usr/local/x86_64-unknown-linux-gnu/bin/
> -B/usr/local/x86_64-unknown-linux-gnu/lib/ -isystem
> /usr/local/x86_64-unknown-linux-gnu/include -isystem
> /usr/local/x86_64-unknown-linux-gnu/sys-include -g -O2 -O2  -g -O2
> -DIN_GCC   -W -Wall -Wwrite-strings -Wstrict-prototypes
> -Wmissing-prototypes -Wcast-qual -Wc++-compat -Wold-style-definition
> -isystem ./include  -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2
> -D__GCC_FLOAT_NOT_NEEDED   -I. -I. -I../.././gcc
> -I../../../trunk/libgcc -I../../../trunk/libgcc/.
> -I../../../trunk/libgcc/../gcc -I../../../trunk/libgcc/../include
> -I../../../trunk/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT
> -DHAVE_CC_TLS -DUSE_TLS -o _gcov_execl.o -MT _gcov_execl.o -MD -MP -MF
> _gcov_execl.dep -DL_gcov_execl -c
> ../../../trunk/libgcc/../gcc/libgcov.c
> ../../../trunk/libgcc/../gcc/libgcov.c: In function '__gcov_execl':
> ../../../trunk/libgcc/../gcc/libgcov.c:843: warning: cast discards
> qualifiers from pointer target type
> ../../../trunk/libgcc/../gcc/libgcov.c:838: error: first argument to
> 'va_arg' not of type 'va_list'
> ../../../trunk/libgcc/../gcc/libgcov.c:845: error: first argument to
> 'va_arg' not of type 'va_list'
> make[3]: *** [_gcov_execl.o] Error 1
>

I found the problem. It is related to the fact, that the native
va_list type for x86_64 is a structure. In earlier patches the type
was generated twice by the helper function
x86_build_builtin_va_list_abi. This lead to the problem, that there
are two record types use, which brings the gimple to fail.
Additionally the canonical_va_list_type method needs to handle
va_list_type_node, too. Additionally it has to dereference pointers to
va_list types.

So here is the new version of this patch. I bootstraped it on linux64
and tested the new callabi testcases.

Is this patch ok to apply?

Cheers,
Kai

-- 
| (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination

Attachment: callabi.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]