[Bug objc/36610] objc_msg_sendv is broken for targets which pass argument via registers

2009-03-31 Thread ghazi at gcc dot gnu dot org


--- Comment #10 from ghazi at gcc dot gnu dot org  2009-03-31 19:12 ---
(In reply to comment #9)
  I think there's plenty of data now to see where it fails.  You should XFAIL 
  it
  until a fix is installed to avoid noise in the testsuite results.
 I tried but .x files don't seem to work in this directory.
 Dave

I can't get dg- style to work either.  What I'd like to do is something like
this:

/* { dg-xfail-run-if PR36610 { lp64 } *  } */

Janis, can you please help?  Thanks.


-- 

ghazi at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||janis at gcc dot gnu dot org
   Last reconfirmed|2009-03-27 16:51:48 |2009-03-31 19:12:03
   date||


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36610



[Bug objc/36610] objc_msg_sendv is broken for targets which pass argument via registers

2009-03-27 Thread ghazi at gcc dot gnu dot org


--- Comment #7 from ghazi at gcc dot gnu dot org  2009-03-27 16:51 ---
Andrew - You added the testcase for this PR back in December to see which lp64
targets failed:
http://gcc.gnu.org/ml/gcc-patches/2008-12/msg01199.html

It's still failing several months later.
x86_64: http://gcc.gnu.org/ml/gcc-patches/2008-12/msg01199.html
ppc64: http://gcc.gnu.org/ml/gcc-testresults/2009-03/msg02732.html
ia64: http://gcc.gnu.org/ml/gcc-testresults/2009-03/msg02716.html
s390: http://gcc.gnu.org/ml/gcc-testresults/2009-03/msg02491.html
sh4: http://gcc.gnu.org/ml/gcc-testresults/2009-03/msg02437.html

etc.

I think there's plenty of data now to see where it fails.  You should XFAIL it
until a fix is installed to avoid noise in the testsuite results.

Thanks.


-- 

ghazi at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||ghazi at gcc dot gnu dot
   ||org, pinskia at gcc dot gnu
   ||dot org
   Last reconfirmed|2009-01-01 16:23:10 |2009-03-27 16:51:48
   date||


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36610



[Bug objc/36610] objc_msg_sendv is broken for targets which pass argument via registers

2009-03-27 Thread ghazi at gcc dot gnu dot org


--- Comment #8 from ghazi at gcc dot gnu dot org  2009-03-27 16:55 ---
(In reply to comment #7)
 It's still failing several months later.
 x86_64: http://gcc.gnu.org/ml/gcc-patches/2008-12/msg01199.html

The x86_64 link should be:
http://gcc.gnu.org/ml/gcc-testresults/2009-03/msg02744.html


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36610



[Bug objc/36610] objc_msg_sendv is broken for targets which pass argument via registers

2009-03-27 Thread dave at hiauly1 dot hia dot nrc dot ca


--- Comment #9 from dave at hiauly1 dot hia dot nrc dot ca  2009-03-27 
17:38 ---
Subject: Re:  objc_msg_sendv is broken for targets which pass argument via
registers

 It's still failing several months later.
 x86_64: http://gcc.gnu.org/ml/gcc-patches/2008-12/msg01199.html
 ppc64: http://gcc.gnu.org/ml/gcc-testresults/2009-03/msg02732.html
 ia64: http://gcc.gnu.org/ml/gcc-testresults/2009-03/msg02716.html
 s390: http://gcc.gnu.org/ml/gcc-testresults/2009-03/msg02491.html
 sh4: http://gcc.gnu.org/ml/gcc-testresults/2009-03/msg02437.html

Also, hppa.

 I think there's plenty of data now to see where it fails.  You should XFAIL it
 until a fix is installed to avoid noise in the testsuite results.

I tried but .x files don't seem to work in this directory.

Dave


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36610



[Bug objc/36610] objc_msg_sendv is broken for targets which pass argument via registers

2009-02-12 Thread matz at gcc dot gnu dot org


--- Comment #6 from matz at gcc dot gnu dot org  2009-02-12 11:32 ---
I don't think it's __builtin_apply which is wrong.  It's rather how it is
used in libobjc.  In particular register parameters are handled wrongly.
libobjc objc_msg_sendv() simply tries to overwrite the first two argument
slots returned by __builtin_apply_args (called in a different routine) with
those it really wants in there.  It uses method_get_{first,next}_argument
for that which tries to use the argument pointer in that memory block.

But memory pointed to by that arg pointer only contains the args passed on 
stack.  Those passed in registers lie somewhere else (in the block returned
by builtin_apply_args, but behind the arg pointer), in register order (not
in argument order!).

So, overwriting the argument slots doesn't actually overwrite the data which
later is used in __builtin_apply -- boom.

Accordingly changing the summary.


-- 

matz at gcc dot gnu dot org changed:

   What|Removed |Added

  Component|middle-end  |objc
Summary|__builtin_apply is broken   |objc_msg_sendv is broken for
   |for targets which pass  |targets which pass argument
   |argument via registers  |via registers


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36610