diff options
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/config/m32c/m32c.h | 16 |
2 files changed, 21 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8a7a318..9b4a543 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-02-06 Nick Clifton <nickc@redhat.com> + + * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to + zero. + 2009-02-06 Paolo Bonzini <bonzini@gnu.org> PR tree-optimization/35659 diff --git a/gcc/config/m32c/m32c.h b/gcc/config/m32c/m32c.h index 2292a33..7775bd8 100644 --- a/gcc/config/m32c/m32c.h +++ b/gcc/config/m32c/m32c.h @@ -143,6 +143,17 @@ machine_function; #define UNITS_PER_WORD 2 #define POINTER_SIZE (TARGET_A16 ? 16 : 32) #define POINTERS_EXTEND_UNSIGNED 1 +/* We have a problem with libgcc2. It only defines two versions of + each function, one for "int" and one for "long long". Ie it assumes + that "sizeof (int) == sizeof (long)". For the M32C this is not true + and we need a third set of functions. We explicitly define + LIBGCC2_UNITS_PER_WORD here so that it is clear that we are expecting + to get the SI and DI versions from the libgcc2.c sources, and we + provide our own set of HI functions in m32c-lib2.c, which is why this + definition is surrounded by #ifndef..#endif. */ +#ifndef LIBGCC2_UNITS_PER_WORD +#define LIBGCC2_UNITS_PER_WORD 4 +#endif /* These match the alignment enforced by the two types of stack operations. */ #define PARM_BOUNDARY (TARGET_A16 ? 8 : 16) @@ -154,6 +165,11 @@ machine_function; #define FUNCTION_BOUNDARY 8 #define BIGGEST_ALIGNMENT 8 +/* Since we have a maximum structure alignment of 8 there + is no need to enforce any alignment of bitfield types. */ +#undef PCC_BITFIELD_TYPE_MATTERS +#define PCC_BITFIELD_TYPE_MATTERS 0 + #define STRICT_ALIGNMENT 0 #define SLOW_BYTE_ACCESS 1 |
