GCC is easily confused by the code we generate.
(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)
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))