Suppress uninitialized variable warnings.
authorTaylor R Campbell <campbell@mumble.net>
Tue, 8 Jan 2019 06:06:46 +0000 (06:06 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Wed, 9 Jan 2019 03:56:35 +0000 (03:56 +0000)
GCC is easily confused by the code we generate.

src/compiler/machines/C/cutl.scm
src/microcode/liarc.h

index 6a1d6c1824556968e3c7070a6ab1e06cf934a264..be23d5530da872e3eaa21d8c2b94ea77a12a0517 100644 (file)
@@ -410,7 +410,9 @@ USA.
 
 (define (c:decl type var #!optional val)
   (c:line (c:type type) " " (c:var var)
-         (if (default-object? val) "" (string-append " = " (c:expr val)))
+         (if (default-object? val)
+             (string-append " LIARC_UNINITIALIZED(" (c:var var) ")")
+             (string-append " = " (c:expr val)))
          ";"))
 
 (define (c:decl-unused type var #!optional val)
index e9cd7cd22dec5828a66cf1b998157fbd5e1ba8d3..ad63529f91fd961b3a5c08b4c13ffee74b711ba8 100644 (file)
@@ -64,6 +64,12 @@ union machine_word_u
 typedef union machine_word_u machine_word;
 typedef unsigned long entry_count_t;
 
+#ifdef __GNUC__
+#define LIARC_UNINITIALIZED(name) = name
+#else
+#define LIARC_UNINITIALIZED(name)
+#endif
+
 #define ADDRESS_UNITS_PER_OBJECT SIZEOF_SCHEME_OBJECT
 #define ADDRESS_UNITS_PER_FLOAT (sizeof (double))