1 /* When merging a nonprototype definition of a function with a prior
2 prototype declaration, the composite type of the return types must
3 be formed rather than just copying the function type. */
4 /* Origin: Joseph Myers <jsm@polyomino.org.uk> */
5 /* { dg-do compile } */
6
7 typedef int a[];
8 typedef int a5[5];
9 typedef int a10[10];
10
11 a *f1 ();
f1()12 a5 *f1 () { return 0; }
13
14 a *f2 (void);
f2()15 a5 *f2 () { return 0; }
16
17 a *f3 ();
f3(void)18 a5 *f3 (void) { return 0; }
19
20 a *f4 (void);
f4(void)21 a5 *f4 (void) { return 0; }
22
23 void
g(void)24 g (void)
25 {
26 a10 *x;
27 x = f1 (); /* { dg-error "incompatible" "f1" } */
28 x = f2 (); /* { dg-error "incompatible" "f2" } */
29 x = f3 (); /* { dg-error "incompatible" "f3" } */
30 x = f4 (); /* { dg-error "incompatible" "f4" } */
31 }
32