OSDN Git Service

* config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
authornickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 6 Feb 2009 09:02:37 +0000 (09:02 +0000)
committernickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 6 Feb 2009 09:02:37 +0000 (09:02 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143981 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/m32c/m32c.h

index 8a7a318..9b4a543 100644 (file)
@@ -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
index 2292a33..7775bd8 100644 (file)
@@ -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