[LLVMbugs] [Bug 13882] New: Clang should not accept initializer lists that cause arrays to have zero length

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Sep 19 16:00:24 PDT 2012


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: unassignedclangbugs at nondot.org
        ReportedBy: kyle at omnigroup.com
                CC: llvmbugs at cs.uiuc.edu
    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.



More information about the llvm-bugs mailing list