diff options
author | Nick Clifton <nickc@gcc.gnu.org> | 2010-11-16 09:40:02 +0000 |
---|---|---|
committer | Nick Clifton <nickc@gcc.gnu.org> | 2010-11-16 09:40:02 +0000 |
commit | 27128fc317039e1e62de5e70a236ec7c4eaf111e (patch) | |
tree | d85bdb0adb88ca280445194874b38855fb59a9c5 /gcc | |
parent | 180ed1b2bd57ce7f8d537db11242c18703121c78 (diff) | |
download | gcc-27128fc317039e1e62de5e70a236ec7c4eaf111e.zip gcc-27128fc317039e1e62de5e70a236ec7c4eaf111e.tar.gz gcc-27128fc317039e1e62de5e70a236ec7c4eaf111e.tar.bz2 |
rx.c (rx_is_ms_bitfield_layout): Return false if the record is packed.
* config/rx/rx.c (rx_is_ms_bitfield_layout): Return false if the
record is packed.
* gcc.target/rx/pack.c: New test.
From-SVN: r166793
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/rx/rx.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 28 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/rx/pack.c | 25 |
4 files changed, 48 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3dd8203..f55283e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-11-16 Nick Clifton <nickc@redhat.com> + + * config/rx/rx.c (rx_is_ms_bitfield_layout): Return false if the + record is packed. + 2010-11-15 Richard Henderson <rth@redhat.com> * fold-const.c (operand_equal_for_comparison_p): Handle FMA_EXPR, diff --git a/gcc/config/rx/rx.c b/gcc/config/rx/rx.c index 968d65f..771d645 100644 --- a/gcc/config/rx/rx.c +++ b/gcc/config/rx/rx.c @@ -2306,7 +2306,8 @@ rx_file_start (void) static bool rx_is_ms_bitfield_layout (const_tree record_type ATTRIBUTE_UNUSED) { - return TRUE; + /* The packed attribute overrides the MS behaviour. */ + return ! TYPE_PACKED (record_type); } /* Try to generate code for the "isnv" pattern which inserts bits diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f6b4aca..ee1bcce 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2010-11-16 Nick Clifton <nickc@redhat.com> + + * gcc.target/rx/pack.c: New test. + 2010-11-15 Richard Henderson <rth@redhat.com> * gcc.dg/torture/builtin-math-2.c: Split out fma tests... @@ -90,16 +94,16 @@ * objc.dg/property/at-property-21.m: New. * objc.dg/property/at-property-22.m: New. - * objc.dg/property/at-property-23.m: New. + * objc.dg/property/at-property-23.m: New. * objc.dg/property/synthesize-9.m: New. * objc.dg/property/synthesize-10.m: New. - * objc.dg/property/synthesize-11.m: New. + * objc.dg/property/synthesize-11.m: New. * obj-c++.dg/property/at-property-21.mm: New. * obj-c++.dg/property/at-property-22.mm: New. - * obj-c++.dg/property/at-property-23.mm: New. + * obj-c++.dg/property/at-property-23.mm: New. * obj-c++.dg/property/synthesize-9.mm: New. * obj-c++.dg/property/synthesize-10.mm: New. - * obj-c++.dg/property/synthesize-11.mm: New. + * obj-c++.dg/property/synthesize-11.mm: New. * objc.dg/property/at-property-4.m: Updated to match new compiler where some errors have been converted into warnings and vice versa. @@ -110,14 +114,14 @@ * obj-c++.dg/property/at-property-16.mm: Same change. * obj-c++.dg/property/at-property-18.mm: Same change. * obj-c++.dg/property/property-neg-5.mm: Same change. - + * obj-c++.dg/property/dynamic-2.mm: Enable tests that were commented out because of testsuite problems; I found out that using dg-warning instead of dg-message gets them to work. * obj-c++.dg/property/property-neg-3.mm: Same change. * obj-c++.dg/property/synthesize-6.mm: Same change. - * obj-c++.dg/property/at-property-5.mm: Same change. - * obj-c++.dg/property/at-property-14.mm: Same change. + * obj-c++.dg/property/at-property-5.mm: Same change. + * obj-c++.dg/property/at-property-14.mm: Same change. * obj-c++.dg/property/at-property-18.mm: Same change. * obj-c++.dg/property/at-property-16.mm: Same change (in this file, some tests still do not work due to some other testsuite issue). @@ -152,8 +156,8 @@ Test various valid uses of typedef with Objective-C objects and protocols instead. * objc.dg/invalid-type-1.m: New. - * obj-c++.dg/invalid-type-1.m: New. - + * obj-c++.dg/invalid-type-1.m: New. + 2010-11-13 Iain Sandoe <iains@gcc.gnu.org> * gcc.dg/darwin-segaddr.c: New test for multiple argument c/l switch. @@ -263,7 +267,7 @@ Tobias Burnus <burnus@net-b.de> PR fortran/46325 - * gfortran.dg/char_initialiser_actual.f90: Make test case valid. + * gfortran.dg/char_initialiser_actual.f90: Make test case valid. 2010-11-11 Jan Hubicka <jh@suse.cz> @@ -328,10 +332,10 @@ 2010-11-11 Nicola Pero <nicola.pero@meta-innovation.com> * objc.dg/property/at-property-20.m: New. - * objc.dg/property/synthesize-8.m: New. + * objc.dg/property/synthesize-8.m: New. * obj-c++.dg/property/at-property-20.m: New. * obj-c++.dg/property/synthesize-8.mm: New. - + 2010-11-11 Joseph Myers <joseph@codesourcery.com> * gcc.dg/cpp/warn-normalized-3.c: Update expected note text. diff --git a/gcc/testsuite/gcc.target/rx/pack.c b/gcc/testsuite/gcc.target/rx/pack.c new file mode 100644 index 0000000..97c44f0 --- /dev/null +++ b/gcc/testsuite/gcc.target/rx/pack.c @@ -0,0 +1,25 @@ +/* { dg-do run } */ + +typedef unsigned short INT16U; + +typedef struct tst_2 +{ + INT16U f0; // [+0] + INT16U * f1; // [+2] + INT16U f2; // [+6] + INT16U * f3; // [+8] +} __attribute__ ((__packed__)) t2; + +#include <stddef.h> +#include <stdlib.h> + +int main (void) +{ + if (offsetof (t2, f1) != 2) + abort (); + if (offsetof (t2, f2) != 6) + abort (); + if (offsetof (t2, f3) != 8) + abort (); + exit (0); +} |