Modified: trunk/configure.ac (44 => 45)
--- trunk/configure.ac 2009-09-26 18:45:51 UTC (rev 44)
+++ trunk/configure.ac 2009-09-26 19:23:40 UTC (rev 45)
@@ -248,6 +248,15 @@
AC_SUBST([CBLOCKS_FLAGS])
#
+# Temporary: some versions of clang do not mark __builtin_trap() as
+# __attribute__((__noreturn__)). Detect and add if required.
+#
+AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([void __attribute__((__noreturn__)) temp(void) { __builtin_trap(); }], [])], [
+ AC_DEFINE(HAVE_NORETURN_BUILTIN_TRAP,,[Define if __builtin_trap marked noreturn])
+ ], [])
+
+#
# Generate Makefiles.
#
AC_CONFIG_FILES([Makefile dispatch/Makefile man/Makefile src/Makefile])
Modified: trunk/src/queue.c (44 => 45)
--- trunk/src/queue.c 2009-09-26 18:45:51 UTC (rev 44)
+++ trunk/src/queue.c 2009-09-26 19:23:40 UTC (rev 45)
@@ -884,6 +884,15 @@
}
#endif
+/*
+ * XXXRW: Work-around for possible clang bug in which __builtin_trap() is not
+ * marked noreturn, leading to a build error as dispatch_main() *is* marked
+ * noreturn. Mask by marking __builtin_trap() as noreturn locally.
+ */
+#ifndef HAVE_NORETURN_BUILTIN_TRAP
+void __builtin_trap(void) __attribute__((__noreturn__));
+#endif
+
void
dispatch_main(void)
{