On 10/14/2013 08:23 AM, Marek Polacek wrote:
We were ICEing on the attached testcase, because in check_narrowing, for = {{}}, we wanted to check recursively the CONSTRUCTOR_ELTs, even though init in this case has 0 CONSTRUCTOR_NELTS. So I added the check for CONSTRUCTOR_NELTS > 0. Moreover, since empty scalar initializers are forbidden in C FE, I think we should error out here too. (Complex type is considered as an arithmetic type as a GNU extension and arithmetic types are scalar types.)
Empty scalar initializers are allowed in C++11, so we shouldn't give an error. Your initial patch from bugzilla is OK, with an appropriately adjusted testcase.
Jason