https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117391
Bug ID: 117391
Summary: wrong composite for unspecified sizes
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: minor
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: uecker at gcc dot gnu.org
Target Milestone: ---
In the following example, the composite type is always the first in the
conditional operator while it should be the one without the unspecified size.
This can only be seen in the type used for the error but should otherwise have
no consequence.
int foo(int n, char (*buf)[*]);
int bar(int n, char (*buf)[n]);
void test()
{
(1 ? foo : bar)(0);
(0 ? bar : foo)(0);
}
c.c: In function ‘test’:
c.c:7:18: error: too few arguments to function ‘foo’
7 | (1 ? foo : bar)(0);
| ~~~~~~~~~^~~~~~
c.c:8:18: error: too few arguments to function ‘(int (*)(int, char
(*)[n]))&foo’
8 | (0 ? bar : foo)(0);
| ~~~~~~~~~^~~~~~