aboutsummaryrefslogtreecommitdiff
path: root/test/Parser/builtin_types_compatible.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/Parser/builtin_types_compatible.c')
-rw-r--r--test/Parser/builtin_types_compatible.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/Parser/builtin_types_compatible.c b/test/Parser/builtin_types_compatible.c
index ac81e7b08dc9..d967a7023a49 100644
--- a/test/Parser/builtin_types_compatible.c
+++ b/test/Parser/builtin_types_compatible.c
@@ -41,3 +41,20 @@ static void test()
}
+enum E1 { E1Foo };
+enum E2 { E2Foo };
+
+static void testGccCompatibility() {
+ _Static_assert(__builtin_types_compatible_p(const volatile int, int), "");
+ _Static_assert(__builtin_types_compatible_p(int[5], int[]), "");
+ _Static_assert(!__builtin_types_compatible_p(int[5], int[4]), "");
+ _Static_assert(!__builtin_types_compatible_p(int *, int **), "");
+ _Static_assert(!__builtin_types_compatible_p(const int *, int *), "");
+ _Static_assert(!__builtin_types_compatible_p(enum E1, enum E2), "");
+
+ // GCC's __builtin_types_compatible_p ignores qualifiers on arrays.
+ _Static_assert(__builtin_types_compatible_p(const int[4], int[4]), "");
+ _Static_assert(__builtin_types_compatible_p(int[4], const int[4]), "");
+ _Static_assert(__builtin_types_compatible_p(const int[5][4], int[][4]), "");
+ _Static_assert(!__builtin_types_compatible_p(const int(*)[], int(*)[]), "");
+}