[lttng-modules,2/2] Fix: do not use diagnostic pragma when GCC version is lower than 4.6.0
diff mbox series

Message ID 20190704200213.21186-2-jonathan.rajotte-julien@efficios.com
State Accepted, archived
Headers show
Series
  • [lttng-modules,1/2] Fix: missing define when not building with gcc
Related show

Commit Message

Jonathan Rajotte July 4, 2019, 8:02 p.m. UTC
Officially the diagnostic pragma are supported starting in 4.6. [1]
But they were present before 4.6 with limitation which we cannot
honour easily.

[1] https://gcc.gnu.org/gcc-4.6/changes.html

Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
---
 lib/bitfield.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Patch
diff mbox series

diff --git a/lib/bitfield.h b/lib/bitfield.h
index ebbe754..a9e268b 100644
--- a/lib/bitfield.h
+++ b/lib/bitfield.h
@@ -29,8 +29,10 @@ 
 /*
  * _bt_is_signed_type() willingly generates comparison of unsigned
  * expression < 0, which is always false. Silence compiler warnings.
+ * GCC versions lower than 4.6.0 do not accept diagnostic pragma inside
+ * functions.
  */
-#ifdef __GNUC__
+#if defined(__GNUC__) && (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40600
 # define _BT_DIAG_PUSH			_Pragma("GCC diagnostic push")
 # define _BT_DIAG_POP			_Pragma("GCC diagnostic pop")