[PATCH] Fix g++.dg/abi/empty6.C failure on 64-bit targets

Ulrich Weigand uweigand@de.ibm.com
Wed Oct 26 13:21:00 GMT 2005


Hello,

Joern Rennecke fixed the g++.dg/abi/empty6.C failure in
http://gcc.gnu.org/ml/gcc-patches/2003-06/msg00215.html
on some platforms, but -as his patch points out- this fix
isn't enough for some 64-bit platforms.  In fact the test
case has been failing on s390x-ibm-linux.

The following patch generalizes Joern's fix by requiring
alignment of > POINTER_SIZE on all platforms.

Tested on s390-ibm-linux and s390x-ibm-linux, fixes the
FAIL on s390x.  OK for mainline and 4.0?

Bye,
Ulrich

ChangeLog:

	* g++.dg/abi/empty6.C (B): Align to twice pointer size.


Index: gcc/testsuite/g++.dg/abi/empty6.C
===================================================================
RCS file: /cvs/gcc/gcc/gcc/testsuite/g++.dg/abi/empty6.C,v
retrieving revision 1.3
diff -c -p -r1.3 empty6.C
*** gcc/testsuite/g++.dg/abi/empty6.C	28 Nov 2004 23:28:05 -0000	1.3
--- gcc/testsuite/g++.dg/abi/empty6.C	25 Oct 2005 22:29:52 -0000
*************** struct A {};
*** 5,15 ****
  struct B {
    A a; // { dg-warning "empty" "" { xfail mmix-*-* } }
    virtual void f () {}
! } __attribute__((aligned(8)));
  /* The preceding attribute is necessary on targets with
!    BIGGEST_ALIGNMENT <= 32 to trigger the warning, as otherwise a 32 bit
!    offset is split into DECL_FIELD_OFFSET 4 and DECL_FIELD_BIT_OFFSET 0,
     and then there is no discrepancy between DECL_FIELD_OFFSET and
!    byte_position to warn about.
!    On the other hand 64-bit targets for example, generally need a larger
!    requested alignment to get the intended warning.  */
--- 5,14 ----
  struct B {
    A a; // { dg-warning "empty" "" { xfail mmix-*-* } }
    virtual void f () {}
! } __attribute__((aligned(2 * sizeof (void *))));
  /* The preceding attribute is necessary on targets with
!    BIGGEST_ALIGNMENT <= POINTER_SIZE to trigger the warning, as
!    otherwise the offset of 'a' (i.e. POINTER_SIZE) is split into a
!    non-zero DECL_FIELD_OFFSET and a zero DECL_FIELD_BIT_OFFSET,
     and then there is no discrepancy between DECL_FIELD_OFFSET and
!    byte_position to warn about.  */
-- 
  Dr. Ulrich Weigand
  Linux on zSeries Development
  Ulrich.Weigand@de.ibm.com



More information about the Gcc-patches mailing list