Skip to content
  • Douglas Gregor's avatar
    Code generation support for C99 designated initializers. · 347f7eab
    Douglas Gregor authored
    The approach I've taken in this patch is relatively straightforward,
    although the code itself is non-trivial. Essentially, as we process
    an initializer list we build up a fully-explicit representation of the
    initializer list, where each of the subobject initializations occurs
    in order. Designators serve to "fill in" subobject initializations in
    a non-linear way. The fully-explicit representation makes initializer
    lists (both with and without designators) easy to grok for codegen and
    later semantic analyses. We keep the syntactic form of the initializer
    list linked into the AST for those clients interested in exactly what
    the user wrote.
    
    Known limitations:
      - Designating a member of a union that isn't the first member may
        result in bogus initialization (we warn about this)
      - GNU array-range designators are not supported (we warn about this)
    
    llvm-svn: 63242
    347f7eab
Loading