aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/ChangeLog4
-rw-r--r--include/diagnostics.h14
2 files changed, 18 insertions, 0 deletions
diff --git a/include/ChangeLog b/include/ChangeLog
index e7d6d66..035b3ca 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2018-07-06 Alan Modra <amodra@gmail.com>
+
+ * diagnostics.h: Comment on macro usage.
+
2018-07-05 Simon Marchi <simon.marchi@polymtl.ca>
* diagnostics.h (DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS):
diff --git a/include/diagnostics.h b/include/diagnostics.h
index 34fc01b..9e9d1a8 100644
--- a/include/diagnostics.h
+++ b/include/diagnostics.h
@@ -16,6 +16,20 @@
#ifndef DIAGNOSTICS_H
#define DIAGNOSTICS_H
+/* If at all possible, fix the source rather than using these macros
+ to silence warnings. If you do use these macros be aware that
+ you'll need to condition their use on particular compiler versions,
+ which can be done for gcc using ansidecl.h's GCC_VERSION macro.
+
+ gcc versions between 4.2 and 4.6 do not allow pragma control of
+ diagnostics inside functions, giving a hard error if you try to use
+ the finer control available with later versions.
+ gcc prior to 4.2 warns about diagnostic push and pop.
+
+ The other macros have restrictions too, for example gcc-5, gcc-6
+ and gcc-7 warn that -Wstringop-truncation is unknown, unless you
+ also add DIAGNOSTIC_IGNORE ("-Wpragma"). */
+
#ifdef __GNUC__
# define DIAGNOSTIC_PUSH _Pragma ("GCC diagnostic push")
# define DIAGNOSTIC_POP _Pragma ("GCC diagnostic pop")