Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/c99-intprom-1.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 (2017-10-27) |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* Test for integer promotion rules: extended to long long by C99. */ | |
2 /* Origin: Joseph Myers <jsm@polyomino.org.uk> */ | |
3 /* { dg-do compile } */ | |
4 /* { dg-options "-std=iso9899:1999 -pedantic-errors" } */ | |
5 | |
6 #include <limits.h> | |
7 | |
8 #define CHECK(T1, T2, TC) \ | |
9 do { \ | |
10 T1 a = 0; \ | |
11 T2 b = 0; \ | |
12 TC *c = 0; \ | |
13 __typeof__(a+b) *d = 0; \ | |
14 c = d; \ | |
15 d = c; \ | |
16 } while (0) | |
17 | |
18 void | |
19 f (void) | |
20 { | |
21 /* Same type. */ | |
22 CHECK(int, int, int); | |
23 CHECK(unsigned int, unsigned int, unsigned int); | |
24 CHECK(long, long, long); | |
25 CHECK(unsigned long, unsigned long, unsigned long); | |
26 CHECK(long long, long long, long long); | |
27 CHECK(unsigned long long, unsigned long long, unsigned long long); | |
28 /* Both signed. */ | |
29 CHECK(int, long, long); | |
30 CHECK(int, long long, long long); | |
31 CHECK(long, int, long); | |
32 CHECK(long, long long, long long); | |
33 CHECK(long long, int, long long); | |
34 CHECK(long long, long, long long); | |
35 /* Both unsigned. */ | |
36 CHECK(unsigned int, unsigned long, unsigned long); | |
37 CHECK(unsigned int, unsigned long long, unsigned long long); | |
38 CHECK(unsigned long, unsigned int, unsigned long); | |
39 CHECK(unsigned long, unsigned long long, unsigned long long); | |
40 CHECK(unsigned long long, unsigned int, unsigned long long); | |
41 CHECK(unsigned long long, unsigned long, unsigned long long); | |
42 /* Unsigned of greater or equal rank. */ | |
43 CHECK(int, unsigned int, unsigned int); | |
44 CHECK(int, unsigned long, unsigned long); | |
45 CHECK(int, unsigned long long, unsigned long long); | |
46 CHECK(unsigned int, int, unsigned int); | |
47 CHECK(long, unsigned long, unsigned long); | |
48 CHECK(long, unsigned long long, unsigned long long); | |
49 CHECK(unsigned long, int, unsigned long); | |
50 CHECK(unsigned long, long, unsigned long); | |
51 CHECK(long long, unsigned long long, unsigned long long); | |
52 CHECK(unsigned long long, int, unsigned long long); | |
53 CHECK(unsigned long long, long, unsigned long long); | |
54 CHECK(unsigned long long, long long, unsigned long long); | |
55 /* Signed of greater rank. */ | |
56 #if LONG_MAX >= UINT_MAX | |
57 CHECK(unsigned int, long, long); | |
58 CHECK(long, unsigned int, long); | |
59 #else | |
60 CHECK(unsigned int, long, unsigned long); | |
61 CHECK(long, unsigned int, unsigned long); | |
62 #endif | |
63 #if LLONG_MAX >= UINT_MAX | |
64 CHECK(unsigned int, long long, long long); | |
65 CHECK(long long, unsigned int, long long); | |
66 #else | |
67 CHECK(unsigned int, long long, unsigned long long); | |
68 CHECK(long long, unsigned int, unsigned long long); | |
69 #endif | |
70 #if LLONG_MAX >= ULONG_MAX | |
71 CHECK(unsigned long, long long, long long); | |
72 CHECK(long long, unsigned long, long long); | |
73 #else | |
74 CHECK(unsigned long, long long, unsigned long long); | |
75 CHECK(long long, unsigned long, unsigned long long); | |
76 #endif | |
77 } |