[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