line-map.c (linemap_init): Use placement new.
authorJason Merrill <jason@redhat.com>
Thu, 17 May 2018 23:28:34 +0000 (19:28 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Thu, 17 May 2018 23:28:34 +0000 (19:28 -0400)
* line-map.c (linemap_init): Use placement new.

* system.h: #include <new>.

From-SVN: r260343

libcpp/ChangeLog
libcpp/line-map.c
libcpp/system.h

index a66948f..88cbe1b 100644 (file)
@@ -1,3 +1,8 @@
+2018-05-17  Jason Merrill  <jason@redhat.com>
+
+       * line-map.c (linemap_init): Use placement new.
+       * system.h: #include <new>.
+
 2018-03-14  David Malcolm  <dmalcolm@redhat.com>
 
        * include/line-map.h (compare): New function on linenum_type.
index a84084c..b2ebfeb 100644 (file)
@@ -348,7 +348,7 @@ linemap_init (struct line_maps *set,
   /* PR33916, needed to fix PR82939.  */
   memset (set, 0, sizeof (struct line_maps));
 #else
-  *set = line_maps ();
+  new (set) line_maps();
 #endif
   set->highest_location = RESERVED_LOCATION_COUNT - 1;
   set->highest_line = RESERVED_LOCATION_COUNT - 1;
index 719435d..76420e1 100644 (file)
@@ -438,6 +438,10 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
 /* Some compilers do not allow the use of unsigned char in bitfields.  */
 #define BOOL_BITFIELD unsigned int
 
+#ifdef __cplusplus
+#include <new>
+#endif
+
 /* Poison identifiers we do not want to use.  */
 #if (GCC_VERSION >= 3000)
 #undef calloc