Skip to content
  1. Feb 24, 2009
  2. Feb 18, 2009
  3. Feb 12, 2009
  4. Feb 09, 2009
  5. Feb 04, 2009
  6. Feb 02, 2009
  7. Jan 30, 2009
    • Douglas Gregor's avatar
      Upgrade the "excess elements in array initializer" warning to an · d42a0fb4
      Douglas Gregor authored
      error, since both C99 and C++ consider it an error. For reference, GCC
      makes this a warning while G++ makes it an error.
      
      llvm-svn: 63435
      d42a0fb4
    • Douglas Gregor's avatar
      Implement and test aggregate initialization in C++. Major changes: · d14247a9
      Douglas Gregor authored
        - Support initialization of reference members; complain if any
        reference members are left uninitialized.
        - Use C++ copy-initialization for initializing each element (falls
        back to constraint checking in C)
        - Make sure we diagnose when one tries to provide an initializer
        list for a non-aggregate.
        - Don't complain about empty initializers in C++ (they are permitted)
        - Unrelated but necessary: don't bother trying to convert the
        decl-specifier-seq to a type when we're dealing with a C++
        constructor, destructor, or conversion operator; it results in
        spurious warnings.
      
      llvm-svn: 63431
      d14247a9
    • Douglas Gregor's avatar
      Switch Type::isAggregateType to use the C++ definition of "aggregate · ddb2485e
      Douglas Gregor authored
      type" rather than the C definition. We do this because both C99 and
      Clang always use "aggregate type" as "aggregate or union type", and
      the C++ definition includes union types.
      
      llvm-svn: 63395
      ddb2485e
  8. Jan 29, 2009
  9. Jan 28, 2009
    • 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
  10. Jan 27, 2009
  11. Jan 23, 2009
  12. Jan 22, 2009
    • Douglas Gregor's avatar
      Initial implementation of semantic analysis and ASTs for C99 · e4a0bb7a
      Douglas Gregor authored
      designated initializers. This implementation should cover all of the
      constraints in C99 6.7.8, including long, complex designations and
      computing the size of incomplete array types initialized with a
      designated initializer. Please see the new test-case and holler if you
      find cases where this doesn't work.
      
      There are still some wrinkles with GNU's anonymous structs and
      anonymous unions (it isn't clear how these should work; we'll just
      follow GCC's lead) and with designated initializers for the members of a
      union. I'll tackle those very soon.
      
      CodeGen is still nonexistent, and there's some leftover code in the
      parser's representation of designators that I'll also need to clean up.
      
      llvm-svn: 62737
      e4a0bb7a
  13. Jan 14, 2009
    • Douglas Gregor's avatar
      Introduce support for C++0x explicit conversion operators (N2437) · 5fb53972
      Douglas Gregor authored
      Small cleanup in the handling of user-defined conversions. 
      
      Also, implement an optimization when constructing a call. We avoid
      recomputing implicit conversion sequences and instead use those
      conversion sequences that we computed as part of overload resolution.
      
      llvm-svn: 62231
      5fb53972
  14. Jan 08, 2009
  15. Jan 07, 2009
  16. Dec 11, 2008
    • Douglas Gregor's avatar
      7a4fad1b
    • Douglas Gregor's avatar
      Unifies the name-lookup mechanisms used in various parts of the AST · 91f84216
      Douglas Gregor authored
      and separates lexical name lookup from qualified name lookup. In
      particular:
        * Make DeclContext the central data structure for storing and
          looking up declarations within existing declarations, e.g., members
          of structs/unions/classes, enumerators in C++0x enums, members of
          C++ namespaces, and (later) members of Objective-C
          interfaces/implementations. DeclContext uses a lazily-constructed
          data structure optimized for fast lookup (array for small contexts,
          hash table for larger contexts). 
      
        * Implement C++ qualified name lookup in terms of lookup into
          DeclContext.
      
        * Implement C++ unqualified name lookup in terms of
          qualified+unqualified name lookup (since unqualified lookup is not
          purely lexical in C++!)
      
        * Limit the use of the chains of declarations stored in
          IdentifierInfo to those names declared lexically.
      
        * Eliminate CXXFieldDecl, collapsing its behavior into
          FieldDecl. (FieldDecl is now a ScopedDecl).
      
        * Make RecordDecl into a DeclContext and eliminates its
          Members/NumMembers fields (since one can just iterate through the
          DeclContext to get the fields).
      
      llvm-svn: 60878
      91f84216
  17. Nov 24, 2008
  18. Nov 20, 2008
  19. Nov 19, 2008
  20. Oct 27, 2008
  21. Aug 18, 2008
  22. Aug 11, 2008
    • Daniel Dunbar's avatar
      More #include cleaning · 56fdb6ae
      Daniel Dunbar authored
       - Kill unnecessary #includes in .cpp files. This is an automatic
         sweep so some things removed are actually used, but happen to be
         included by a previous header. I tried to get rid of the obvious
         examples and this was the easiest way to trim the #includes in one
         fell swoop.
       - We now return to regularly scheduled development.
      
      llvm-svn: 54632
      56fdb6ae
Loading