[cfe-commits] r55609 - in /cfe/trunk: lib/Sema/SemaDecl.cpp test/Sema/array-init.c

Nuno Lopes nunoplopes at sapo.pt
Mon Sep 1 15:21:43 PDT 2008

>> @@ -1269,6 +1269,9 @@
>>   if (Init->getType()->isArrayType())
>>     return false;
>> +  if (Init->getType()->isFunctionType())
>> +    return false;
>> +
> I'm not sure this fix makes sense; it seems a little messy to me,
> although I hadn't really considered this case when I wrote the code.
> Maybe we should do unary promotions as part of error recovery for
> excess initializer elements?  Or maybe we shouldn't be trying to check
> elements that we aren't going to use?  Or maybe we should just make
> the excess elements warning into an error, because it most likely
> indicates something seriously screwed up with either the code in
> question or the way it's being parsed.

I'll revert this anyway. I didn't really understand why the execution flow 
gets here. It seems there's a little code duplication on this constant 
initializer checking..

>> +static void sppp_ipv6cp_up();
>> +const struct {} ipcp = { sppp_ipv6cp_up }; //expected-warning{{empty 
>> struct extension}} expected-warning{{excess elements in array 
>> initializer}}
> Is there really any point to accepting this code?  Nobody would ever
> write something like this intentionally.

GCC accepts it and I it would be great if clang would accept it as well. I 
got this test case when I was doing some delta reducing and I still have 
many test cases that stop in stupid things like these one.


More information about the cfe-commits mailing list