Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gcc.dg/c99-intprom-1.c @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 (2020-05-25) |
parents | 04ced10e8804 |
children |
line wrap: on
line source
/* Test for integer promotion rules: extended to long long by C99. */ /* Origin: Joseph Myers <jsm@polyomino.org.uk> */ /* { dg-do compile } */ /* { dg-options "-std=iso9899:1999 -pedantic-errors" } */ #include <limits.h> #define CHECK(T1, T2, TC) \ do { \ T1 a = 0; \ T2 b = 0; \ TC *c = 0; \ __typeof__(a+b) *d = 0; \ c = d; \ d = c; \ } while (0) void f (void) { /* Same type. */ CHECK(int, int, int); CHECK(unsigned int, unsigned int, unsigned int); CHECK(long, long, long); CHECK(unsigned long, unsigned long, unsigned long); CHECK(long long, long long, long long); CHECK(unsigned long long, unsigned long long, unsigned long long); /* Both signed. */ CHECK(int, long, long); CHECK(int, long long, long long); CHECK(long, int, long); CHECK(long, long long, long long); CHECK(long long, int, long long); CHECK(long long, long, long long); /* Both unsigned. */ CHECK(unsigned int, unsigned long, unsigned long); CHECK(unsigned int, unsigned long long, unsigned long long); CHECK(unsigned long, unsigned int, unsigned long); CHECK(unsigned long, unsigned long long, unsigned long long); CHECK(unsigned long long, unsigned int, unsigned long long); CHECK(unsigned long long, unsigned long, unsigned long long); /* Unsigned of greater or equal rank. */ CHECK(int, unsigned int, unsigned int); CHECK(int, unsigned long, unsigned long); CHECK(int, unsigned long long, unsigned long long); CHECK(unsigned int, int, unsigned int); CHECK(long, unsigned long, unsigned long); CHECK(long, unsigned long long, unsigned long long); CHECK(unsigned long, int, unsigned long); CHECK(unsigned long, long, unsigned long); CHECK(long long, unsigned long long, unsigned long long); CHECK(unsigned long long, int, unsigned long long); CHECK(unsigned long long, long, unsigned long long); CHECK(unsigned long long, long long, unsigned long long); /* Signed of greater rank. */ #if LONG_MAX >= UINT_MAX CHECK(unsigned int, long, long); CHECK(long, unsigned int, long); #else CHECK(unsigned int, long, unsigned long); CHECK(long, unsigned int, unsigned long); #endif #if LLONG_MAX >= UINT_MAX CHECK(unsigned int, long long, long long); CHECK(long long, unsigned int, long long); #else CHECK(unsigned int, long long, unsigned long long); CHECK(long long, unsigned int, unsigned long long); #endif #if LLONG_MAX >= ULONG_MAX CHECK(unsigned long, long long, long long); CHECK(long long, unsigned long, long long); #else CHECK(unsigned long, long long, unsigned long long); CHECK(long long, unsigned long, unsigned long long); #endif }