* obstack.h [!GNUC] (obstack_free): Avoid cast to int.
authorDJ Delorie <dj@redhat.com>
Sat, 22 Oct 2011 01:35:29 +0000 (01:35 +0000)
committerDJ Delorie <dj@redhat.com>
Sat, 22 Oct 2011 01:35:29 +0000 (01:35 +0000)
* ansidecl.h (ENUM_BITFIELD): Always use enum in C++

include/ChangeLog
include/ansidecl.h
include/obstack.h

index b5d2d72..716b43b 100644 (file)
@@ -1,3 +1,11 @@
+2011-10-21  Ulrich Drepper  <drepper@gmail.com>
+
+       * obstack.h [!GNUC] (obstack_free): Avoid cast to int.
+
+2011-10-21  Marc Glisse  <marc.glisse@inria.fr>
+
+       * ansidecl.h (ENUM_BITFIELD): Always use enum in C++
+
 2011-10-19  Alan Modra  <amodra@gmail.com>
 
        PR ld/13254
index c39ce2f..23d85bf 100644 (file)
@@ -416,10 +416,12 @@ So instead we use the macro below and test it against specific values.  */
 #define EXPORTED_CONST const
 #endif
 
-/* Be conservative and only use enum bitfields with GCC.
+/* Be conservative and only use enum bitfields with C++ or GCC.
    FIXME: provide a complete autoconf test for buggy enum bitfields.  */
 
-#if (GCC_VERSION > 2000)
+#ifdef __cplusplus
+#define ENUM_BITFIELD(TYPE) enum TYPE
+#elif (GCC_VERSION > 2000)
 #define ENUM_BITFIELD(TYPE) __extension__ enum TYPE
 #else
 #define ENUM_BITFIELD(TYPE) unsigned int
index 4aec3a4..23487ba 100644 (file)
@@ -532,9 +532,9 @@ __extension__                                                               \
 # define obstack_free(h,obj)                                           \
 ( (h)->temp = (char *) (obj) - (char *) (h)->chunk,                    \
   (((h)->temp > 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
-   ? (int) ((h)->next_free = (h)->object_base                          \
-           = (h)->temp + (char *) (h)->chunk)                          \
-   : (((obstack_free) ((h), (h)->temp + (char *) (h)->chunk), 0), 0)))
+   ? (((h)->next_free = (h)->object_base                               \
+           = (h)->temp + (char *) (h)->chunk), 0)                      \
+   : ((obstack_free) ((h), (h)->temp + (char *) (h)->chunk), 0)))
 
 #endif /* not __GNUC__ or not __STDC__ */