/* When merging a nonprototype definition of a function with a prior prototype declaration, the composite type of the return types must be formed rather than just copying the function type. */ /* Origin: Joseph Myers */ /* { dg-do compile } */ typedef int a[]; typedef int a5[5]; typedef int a10[10]; a *f1 (); a5 *f1 () { return 0; } a *f2 (void); a5 *f2 () { return 0; } a *f3 (); a5 *f3 (void) { return 0; } a *f4 (void); a5 *f4 (void) { return 0; } void g (void) { a10 *x; x = f1 (); /* { dg-error "incompatible" "f1" } */ x = f2 (); /* { dg-error "incompatible" "f2" } */ x = f3 (); /* { dg-error "incompatible" "f3" } */ x = f4 (); /* { dg-error "incompatible" "f4" } */ }