ust-compiler.h: Allocate compound literals on heap with gcc <= 4.8
[lttng-ust.git] / include / lttng / ust-compiler.h
index 799bca4291d2802ee590ab628dadc4e956fc1ddf..c289628580ee420346a24e6e72bc9f7fa9299ebd 100644 (file)
 #  define __lttng_ust_variable_attribute_no_sanitize_address
 #endif
 
+/*
+ * g++ 4.8 and prior do not support C99 compound literals. Therefore,
+ * force allocating those on the heap with these C++ compilers.
+ */
+#if defined (__cplusplus) && defined (__GNUC__) && \
+       (__GNUC__ < 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ <= 8))
+# ifndef LTTNG_ALLOCATE_COMPOUND_LITERAL_ON_HEAP
+#  define LTTNG_ALLOCATE_COMPOUND_LITERAL_ON_HEAP
+# endif
+#endif
+
 /*
  * Compound literals with static storage are needed by LTTng.
  * Compound literals are part of the C99 and C11 standards, but not
This page took 0.023765 seconds and 4 git commands to generate.