If we're compiling with gcc, mark adios() as never returning (better code
authorPeter Maydell <pmaydell@chiark.greenend.org.uk>
Mon, 2 Jun 2008 21:49:07 +0000 (21:49 +0000)
committerPeter Maydell <pmaydell@chiark.greenend.org.uk>
Mon, 2 Jun 2008 21:49:07 +0000 (21:49 +0000)
and fewer spurious 'uninitialized variable) warnings)

ChangeLog
h/prototypes.h

index e08e678..2e7678e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-06-02  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
+
+       * h/prototypes.h: mark adios() as not returning, so gcc
+       can make a better job of avoiding spurious "uninitialized
+       variable" warnings.
+
 2008-06-01  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
 
        * docs/README.developers: update the bits about doing a
index 52fab3a..d559baa 100644 (file)
@@ -5,6 +5,15 @@
  * $Id$
  */
 
+/* If we're using gcc then give it some information about
+ * functions that abort.
+ */
+#if __GNUC__ > 2
+#define NORETURN __attribute__((__noreturn__)
+#else
+#define NORETURN
+#endif
+
 /*
  * missing system prototypes
  */
@@ -25,7 +34,7 @@ char *etcpath(char *);
 /*
  * prototypes from the nmh subroutine library
  */
-void adios (char *, char *, ...);
+void adios (char *, char *, ...) NORETURN;
 void admonish (char *, char *, ...);
 void advertise (char *, char *, char *, va_list);
 void advise (char *, char *, ...);