-/* Use this to suppress gcc's `...may be used before initialized' warnings. */
-#ifdef lint
-/* Use CODE only if lint checking is in effect. */
-# define IF_LINT(Code) Code
+/* When used in place of 'volatile', 'NONVOLATILE' is equivalent to nothing,
+ except it cajoles GCC into not warning incorrectly that a variable needs to
+ be volatile. This works around GCC bug 54561. */
+#if defined GCC_LINT || defined lint
+# define NONVOLATILE volatile
+#else
+# define NONVOLATILE /* empty */
+#endif
+
+/* 'int x UNINIT;' is equivalent to 'int x;', except it cajoles GCC
+ into not warning incorrectly about use of an uninitialized variable. */
+#if defined GCC_LINT || defined lint
+# define UNINIT = {0,}