| /* Test qualifier preservation of typeof and discarded for __auto_type. */ |
| /* { dg-do compile } */ |
| /* { dg-options "-std=c11" } */ |
| |
| /* Check that the qualifiers are preserved for atomic types. */ |
| |
| extern int i; |
| |
| extern int * p; |
| |
| extern int _Atomic const ci; |
| extern __typeof (ci) ci; |
| |
| extern int _Atomic volatile vi; |
| extern __typeof (vi) vi; |
| |
| extern int * _Atomic restrict ri; |
| extern __typeof (ri) ri; |
| |
| /* Check that the qualifiers are discarded for atomic types. */ |
| |
| void f(void) |
| { |
| __auto_type aci = ci; |
| int *paci = &aci; |
| |
| __auto_type avi = vi; |
| int *pavi = &avi; |
| |
| __auto_type ari = ri; |
| int **pari = &ari; |
| } |
| |
| /* Check that the qualifiers are preserved for non-atomic types. */ |
| |
| extern int const j; |
| |
| extern int volatile k; |
| |
| extern int * restrict q; |
| |
| extern int const nci; |
| extern __typeof (nci) j; |
| |
| extern int volatile nvi; |
| extern __typeof (nvi) k; |
| |
| extern int * restrict nri; |
| extern __typeof (nri) q; |
| |
| /* Check that the qualifiers are discarded for non-atomic types. */ |
| |
| void g(void) |
| { |
| __auto_type aci = nci; |
| int *paci = &aci; |
| |
| __auto_type avi = nvi; |
| int *pavi = &avi; |
| |
| __auto_type ari = nri; |
| int **pari = &ari; |
| } |