diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.c-torture/execute/builtin-types-compatible-p.c')
-rw-r--r-- | gcc-4.9/gcc/testsuite/gcc.c-torture/execute/builtin-types-compatible-p.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/builtin-types-compatible-p.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/builtin-types-compatible-p.c new file mode 100644 index 000000000..a998ef776 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/execute/builtin-types-compatible-p.c @@ -0,0 +1,35 @@ +int i; +double d; + +/* Make sure we return a constant. */ +float rootbeer[__builtin_types_compatible_p (int, typeof(i))]; + +typedef enum { hot, dog, poo, bear } dingos; +typedef enum { janette, laura, amanda } cranberry; + +typedef float same1; +typedef float same2; + +int main (void); + +int main (void) +{ + /* Compatible types. */ + if (!(__builtin_types_compatible_p (int, const int) + && __builtin_types_compatible_p (typeof (hot), int) + && __builtin_types_compatible_p (typeof (hot), typeof (laura)) + && __builtin_types_compatible_p (int[5], int[]) + && __builtin_types_compatible_p (same1, same2))) + abort (); + + /* Incompatible types. */ + if (__builtin_types_compatible_p (char *, int) + || __builtin_types_compatible_p (char *, const char *) + || __builtin_types_compatible_p (long double, double) + || __builtin_types_compatible_p (typeof (i), typeof (d)) + || __builtin_types_compatible_p (typeof (dingos), typeof (cranberry)) + || __builtin_types_compatible_p (char, int) + || __builtin_types_compatible_p (char *, char **)) + abort (); + exit (0); +} |