[Bug target/20094] gcc.dg/transparent-union-* fail on ia64-hpux

2005-08-16 Thread wilson at gcc dot gnu dot org

--- Additional Comments From wilson at gcc dot gnu dot org  2005-08-16 
21:32 ---
The MEMBER_TYPE_FORCES_BLK definition was changed Aug 3.
http://gcc.gnu.org/ml/gcc-patches/2005-08/msg00166.html

The Aug 4 ia64-hp-hpux11 testsuite reports no longer show any transparent union
failures.
http://gcc.gnu.org/ml/gcc-testresults/2005-08/msg00223.html

Since MEMBER_TYPE_FORCES_BLK is still defined for TFmode, one can still
reproduce this problem if you use a transparent union whose first member is a
long double.

It is believed that defining MEMBER_TYPE_FORCES_BLK is also not needed for
TFmode anymore, but someone needs to do rigorous testing to verify that this
change does not introduce any ABI changes.  Eric Botcazou didn't need this fixed
for Ada, so he didn't do this testing.

-- 


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


[Bug target/20094] gcc.dg/transparent-union-* fail on ia64-hpux

2005-07-30 Thread jsm28 at gcc dot gnu dot org

--- Additional Comments From jsm28 at gcc dot gnu dot org  2005-07-30 19:19 
---
My newly added test transparent-union-4.c fails on ia64-hpux for the same 
reason.


-- 


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


[Bug target/20094] gcc.dg/transparent-union-* fail on ia64-hpux

2005-05-21 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-05-22 
05:49 ---
Confirmed.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-05-22 05:49:15
   date||


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


[Bug target/20094] gcc.dg/transparent-union-* fail on ia64-hpux

2005-02-21 Thread wilson at specifixinc dot com

--- Additional Comments From wilson at specifixinc dot com  2005-02-21 
23:11 ---
Subject: Re:  gcc.dg/transparent-union-* fail on ia64-hpux

giovannibajo at libero dot it wrote:
 --- Additional Comments From giovannibajo at libero dot it  2005-02-20 
 13:03 ---
 Jim, these are transparent unions, I thought that they were passed using the 
 convention of the first element in the union.

Yes, they are.  And yes, MEMBER_TYPE_FORCES_BLK is causing the problem. 
  Look at handle_transparent_union_attribute, and note the mode checks 
it is performing.


-- 


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


[Bug target/20094] gcc.dg/transparent-union-* fail on ia64-hpux

2005-02-21 Thread wilson at specifixinc dot com

--- Additional Comments From wilson at specifixinc dot com  2005-02-21 
23:19 ---
Subject: Re:  gcc.dg/transparent-union-* fail on ia64-hpux

giovannibajo at libero dot it wrote:
 --- Additional Comments From giovannibajo at libero dot it  2005-02-20 
 13:03 ---
 Jim, these are transparent unions, I thought that they were passed using the 
 convention of the first element in the union.

By the way, I probably wasn't clear about this, but I haven't made any 
attempt to debug or analyze the problem.  I'm just trying to point 
people at the cause of the first error, which was obvious to me just 
from reading the bug report.  And that is MEMBER_TYPE_FORCES_BLK.  There 
may also be other problems here.


-- 


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


[Bug target/20094] gcc.dg/transparent-union-* fail on ia64-hpux

2005-02-20 Thread giovannibajo at libero dot it

--- Additional Comments From giovannibajo at libero dot it  2005-02-20 
13:03 ---
Jim, these are transparent unions, I thought that they were passed using the 
convention of the first element in the union.

-- 


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


[Bug target/20094] gcc.dg/transparent-union-* fail on ia64-hpux

2005-02-19 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-02-19 
21:24 ---
Hmm, Does anyone know how these union are supposed to be passed on ia64-*-hpux, 
if by referrence 
then the warning is correct and the testcase should not be tested on this 
target.  This is an ABI Issue.

-- 
   What|Removed |Added

   Keywords||ABI


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


[Bug target/20094] gcc.dg/transparent-union-* fail on ia64-hpux

2005-02-19 Thread wilson at specifixinc dot com

--- Additional Comments From wilson at specifixinc dot com  2005-02-19 
23:15 ---
Subject: Re:  gcc.dg/transparent-union-* fail on ia64-hpux

pinskia at gcc dot gnu dot org wrote:
 --- Additional Comments From pinskia at gcc dot gnu dot org  2005-02-19 
 21:24 ---
 Hmm, Does anyone know how these union are supposed to be passed on 
 ia64-*-hpux, if by referrence 
 then the warning is correct and the testcase should not be tested on this 
 target.  This is an ABI Issue.

unions get passed right-aligned little-endian and left-aligned 
big-endian.  Since linux is little-endian, and HPUX is big-endian, only 
HPUX has a problem here.  HPUX defines MEMBER_TYPE_FORCES_BLK to make 
this work.  There are other ways to solve this problem used by other 
targets, for instance, defining BLOCK_REG_PADDING for HPUX.  Getting 
BLOCK_REG_PADDING to work can be tricky though.

It looks like the ia64/hpux.h is the only one that defines 
MEMBER_TYPE_FORCES_BLK that can trigger this problem, since the others 
don't trigger on pointer or integer types.

It appears that MEMBER_TYPE_FORCES_BLK should not be used for a 
transparent union, or should be used differently.  This check could 
perhaps be done unconditionally in stor-layout.c.  This might be a 
simple solution.

Or maybe we can pass the union/structure type to MEMBER_TYPE_FORCES_BLK 
and modify the ia64/hpux.h version of the macro to check for the 
transparent_union attribute.


-- 


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