Skip to content
  1. Apr 12, 2009
  2. Apr 11, 2009
  3. Apr 09, 2009
  4. Apr 08, 2009
  5. Apr 07, 2009
  6. Apr 06, 2009
  7. Apr 05, 2009
  8. Apr 03, 2009
  9. Apr 02, 2009
  10. Mar 31, 2009
  11. Mar 28, 2009
    • Chris Lattner's avatar
      Introduce a new OpaquePtr<N> struct type, which is a simple POD wrapper for a · 83f095cc
      Chris Lattner authored
      pointer.  Its purpose in life is to be a glorified void*, but which does not
      implicitly convert to void* or other OpaquePtr's with a different UID.
      
      Introduce Action::DeclPtrTy which is a typedef for OpaquePtr<0>.  Change the 
      entire parser/sema interface to use DeclPtrTy instead of DeclTy*.  This
      makes the C++ compiler enforce that these aren't convertible to other opaque
      types.
      
      We should also convert ExprTy, StmtTy, TypeTy, AttrTy, BaseTy, etc,
      but I don't plan to do that in the short term.
      
      The one outstanding known problem with this patch is that we lose the 
      bitmangling optimization where ActionResult<DeclPtrTy> doesn't know how to
      bitmangle the success bit into the low bit of DeclPtrTy.  I will rectify
      this with a subsequent patch.
      
      llvm-svn: 67952
      83f095cc
    • Eli Friedman's avatar
      Change compound assignment operators to keep track of both the promoted · 8b7b1b1a
      Eli Friedman authored
      LHS type and the computation result type; this encodes information into 
      the AST which is otherwise non-obvious.  Fix Sema to always come up with the 
      right answer for both of these types.  Fix IRGen and the analyzer to 
      account for these changes.  This fixes PR2601.  The approach is inspired 
      by PR2601 comment 2.
      
      Note that this changes real *= complex in CodeGen from a silent 
      miscompilation to an explicit error.
      
      I'm not really sure that the analyzer changes are correct, or how to 
      test them... someone more familiar with the analyzer should check those 
      changes.
      
      llvm-svn: 67889
      8b7b1b1a
  12. Mar 27, 2009
  13. Mar 26, 2009
    • Steve Naroff's avatar
      Fix <rdar://problem/6697053> instance variable is protected. · 389925dc
      Steve Naroff authored
      Treat @package the same as @public. The documentation for @package says it is analogous to private_extern for variables/functions. Fully implementing this requires some kind of linker support (so access is denied to code outside the classes executable image). I don't believe GCC fully implements this semantic. Will discuss with Fariborz offline.
      
      llvm-svn: 67755
      389925dc
  14. Mar 24, 2009
  15. Mar 23, 2009
  16. Mar 22, 2009
  17. Mar 21, 2009
  18. Mar 20, 2009
  19. Mar 19, 2009
    • Fariborz Jahanian's avatar
      When looking for property name (or getter method) in a · d302bbd0
      Fariborz Jahanian authored
      dot-syntax expression after earching the list of protocols
      in the qualified-id, must keep searching the protocol list
      of each of the protocols in the list.
      
      llvm-svn: 67314
      d302bbd0
    • Douglas Gregor's avatar
      Introduce a new expression type, UnresolvedDeclRefExpr, that describes · 90a1a651
      Douglas Gregor authored
      dependent qualified-ids such as
      
        Fibonacci<N - 1>::value
      
      where N is a template parameter. These references are "unresolved"
      because the name is dependent and, therefore, cannot be resolved to a
      declaration node (as we would do for a DeclRefExpr or
      QualifiedDeclRefExpr). UnresolvedDeclRefExprs instantiate to
      DeclRefExprs, QualifiedDeclRefExprs, etc.
      
      Also, be a bit more careful about keeping only a single set of
      specializations for a class template, and instantiating from the
      definition of that template rather than a previous declaration. In
      general, we need a better solution for this for all TagDecls, because
      it's too easy to accidentally look at a declaration that isn't the
      definition.
      
      We can now process a simple Fibonacci computation described as a
      template metaprogram.
      
      llvm-svn: 67308
      90a1a651
    • Douglas Gregor's avatar
      Generalize printing of nested-name-specifier sequences for use in both · 18353910
      Douglas Gregor authored
      QualifiedNameType and QualifiedDeclRefExpr. We now keep track of the
      exact nested-name-specifier spelling for a QualifiedDeclRefExpr, and
      use that spelling when printing ASTs. This fixes PR3493.
      
      llvm-svn: 67283
      18353910
    • Douglas Gregor's avatar
      Introduce a representation for types that we referred to via a · 5253768a
      Douglas Gregor authored
      qualified name, e.g., 
      
        foo::x
      
      so that we retain the nested-name-specifier as written in the source
      code and can reproduce that qualified name when printing the types
      back (e.g., in diagnostics). This is PR3493, which won't be complete
      until finished the other tasks mentioned near the end of this commit.
      
      The parser's representation of nested-name-specifiers, CXXScopeSpec,
      is now a bit fatter, because it needs to contain the scopes that
      precede each '::' and keep track of whether the global scoping
      operator '::' was at the beginning. For example, we need to keep track
      of the leading '::', 'foo', and 'bar' in
       
        ::foo::bar::x
      
      The Action's CXXScopeTy * is no longer a DeclContext *. It's now the
      opaque version of the new NestedNameSpecifier, which contains a single
      component of a nested-name-specifier (either a DeclContext * or a Type
      *, bitmangled). 
      
      The new sugar type QualifiedNameType composes a sequence of
      NestedNameSpecifiers with a representation of the type we're actually
      referring to. At present, we only build QualifiedNameType nodes within
      Sema::getTypeName. This will be extended to other type-constructing
      actions (e.g., ActOnClassTemplateId).
      
      Also on the way: QualifiedDeclRefExprs will also store a sequence of
      NestedNameSpecifiers, so that we can print out the property
      nested-name-specifier. I expect to also use this for handling
      dependent names like Fibonacci<I - 1>::value.
      
      llvm-svn: 67265
      5253768a
  20. Mar 18, 2009
    • Douglas Gregor's avatar
      The scope representation can now be either a DeclContext pointer or a · 6bfde496
      Douglas Gregor authored
      Type pointer. This allows our nested-name-specifiers to retain more
      information about the actual spelling (e.g., which typedef did the
      user name, or what exact template arguments were used in the
      template-id?). It will also allow us to have dependent
      nested-name-specifiers that don't map to any DeclContext.
      
      llvm-svn: 67140
      6bfde496
  21. Mar 15, 2009
Loading