aboutsummaryrefslogtreecommitdiff
path: root/test/Sema/warn-unreachable.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/Sema/warn-unreachable.c')
-rw-r--r--test/Sema/warn-unreachable.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/test/Sema/warn-unreachable.c b/test/Sema/warn-unreachable.c
index 80f32cd732..8db36b7100 100644
--- a/test/Sema/warn-unreachable.c
+++ b/test/Sema/warn-unreachable.c
@@ -114,3 +114,15 @@ int test_enum_cases(enum Cases C) {
}
}
+// Handle unreachable code triggered by macro expansions.
+void __myassert_rtn(const char *, const char *, int, const char *) __attribute__((__noreturn__));
+
+#define myassert(e) \
+ (__builtin_expect(!(e), 0) ? __myassert_rtn(__func__, __FILE__, __LINE__, #e) : (void)0)
+
+void test_assert() {
+ myassert(0 && "unreachable");
+ return; // no-warning
+}
+
+