http://llvm.org/bugs/show_bug.cgi?id=13882

             Bug #: 13882
           Summary: Clang should not accept initializer lists that cause
                    arrays to have zero length
           Product: clang
           Version: 3.1
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Frontend
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]
    Classification: Unclassified


Created attachment 9238
  --> http://llvm.org/bugs/attachment.cgi?id=9238
Test case showing incorrect creation of zero-length array via initializer lists

Related to #13881 (which deals with explicitly declaring an array with a
zero-valued constant integer expression), but the standard is ambiguous here:

Clang accepts the attached code, which uses an initializer list to define the
length of an array of otherwise unknown size, and uses a compound literal to
declare an array of zero length.

I believe both of these constructs should be illegal, even though the standard
doesn't come right out and say it. §6.7.8 ¶22 says:

"""If an array of unknown size is initialized, its size is determined by the
largest indexed element with an explicit initializer. At the end of its
initializer list, the array no longer has incomplete type."""

And the definition of compound literals at §6.5.2.5 defers to initializer lists
for length semantics.

Since zero-length arrays are generally understood to be invalid outside of
flexible array members, I believe it should be illegal to create a zero-length
array by means of an initializer list.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to