Skip to content
  1. Jun 30, 2009
  2. Jun 27, 2009
  3. Jun 26, 2009
  4. Jun 25, 2009
  5. Jun 23, 2009
  6. Jun 22, 2009
  7. Jun 20, 2009
  8. Jun 19, 2009
  9. Jun 12, 2009
  10. Jun 11, 2009
  11. Jun 10, 2009
  12. Jun 03, 2009
  13. May 31, 2009
  14. May 30, 2009
  15. May 29, 2009
    • Douglas Gregor's avatar
      Create a new PrintingPolicy class, which we pass down through the AST · 7de5966d
      Douglas Gregor authored
      printing logic to help customize the output. For now, we use this
      rather than a special flag to suppress the "struct" when printing
      "struct X" and to print the Boolean type as "bool" in C++ but "_Bool"
      in C.
      
      llvm-svn: 72590
      7de5966d
    • Sebastian Redl's avatar
      Reject incomplete types in exception specs. · d643456d
      Sebastian Redl authored
      llvm-svn: 72580
      d643456d
    • Sebastian Redl's avatar
      Disallow exception specifications on multi-level indirections. · 10b9de45
      Sebastian Redl authored
      llvm-svn: 72571
      10b9de45
    • Douglas Gregor's avatar
      When we parse a tag specifier, keep track of whether that tag · d6ab8744
      Douglas Gregor authored
      specifier resulted in the creation of a new TagDecl node, which
      happens either when the tag specifier was a definition or when the tag
      specifier was the first declaration of that tag type. This information
      has several uses, the first of which is implemented in this commit:
      
        1) In C++, one is not allowed to define tag types within a type
        specifier (e.g., static_cast<struct S { int x; } *>(0) is
        ill-formed) or within the result or parameter types of a
        function. We now diagnose this.
      
        2) We can extend DeclGroups to contain information about any tags
        that are declared/defined within the declaration specifiers of a
        variable, e.g.,
      
          struct Point { int x, y, z; } p;
      
        This will help improve AST printing and template instantiation,
        among other things.
      
        3) For C99, we can keep track of whether a tag type is defined
        within the type of a parameter, to properly cope with cases like,
        e.g.,
      
          int bar(struct T2 { int x; } y) {
            struct T2 z;
          }
      
        We can also do similar things wherever there is a type specifier,
        e.g., to keep track of where the definition of S occurs in this
        legal C99 code:
      
          (struct S { int x, y; } *)0
      
        
      
      llvm-svn: 72555
      d6ab8744
  16. May 27, 2009
  17. May 26, 2009
  18. May 21, 2009
  19. May 20, 2009
  20. May 17, 2009
Loading