Skip to content
  1. Jul 27, 2011
  2. Jul 23, 2011
  3. Jul 13, 2011
  4. Jul 08, 2011
  5. Jul 07, 2011
  6. Jul 06, 2011
  7. Jun 28, 2011
  8. Jun 22, 2011
  9. Jun 21, 2011
  10. Jun 20, 2011
  11. Jun 17, 2011
  12. Jun 16, 2011
    • John McCall's avatar
      Automatic Reference Counting. · 31168b07
      John McCall authored
      Language-design credit goes to a lot of people, but I particularly want
      to single out Blaine Garst and Patrick Beard for their contributions.
      
      Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself,
      in no particular order.
      
      llvm-svn: 133103
      31168b07
  13. Jun 11, 2011
    • Douglas Gregor's avatar
      Implement Objective-C Related Result Type semantics. · 33823727
      Douglas Gregor authored
      Related result types apply Cocoa conventions to the type of message
      sends and property accesses to Objective-C methods that are known to
      always return objects whose type is the same as the type of the
      receiving class (or a subclass thereof), such as +alloc and
      -init. This tightens up static type safety for Objective-C, so that we
      now diagnose mistakes like this:
      
      t.m:4:10: warning: incompatible pointer types initializing 'NSSet *'
      with an
            expression of type 'NSArray *' [-Wincompatible-pointer-types]
        NSSet *array = [[NSArray alloc] init];
               ^       ~~~~~~~~~~~~~~~~~~~~~~
      /System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:72:1:
      note: 
            instance method 'init' is assumed to return an instance of its
            receiver
            type ('NSArray *')
      - (id)init;
      ^
      
      It also means that we get decent type inference when writing code in
      Objective-C++0x:
      
        auto array = [[NSMutableArray alloc] initWithObjects:@"one",  @"two",nil];
        //    ^ now infers NSMutableArray* rather than id
      
      llvm-svn: 132868
      33823727
  14. May 14, 2011
  15. Apr 23, 2011
  16. Apr 20, 2011
  17. Apr 16, 2011
  18. Apr 14, 2011
  19. Apr 08, 2011
    • John Wiegley's avatar
      Use ExprResult& instead of Expr *& in Sema · 0129629f
      John Wiegley authored
      This patch authored by Eric Niebler.
      
      Many methods on the Sema class (e.g. ConvertPropertyForRValue) take Expr
      pointers as in/out parameters (Expr *&).  This is especially true for the
      routines that apply implicit conversions to nodes in-place.  This design is
      workable only as long as those conversions cannot fail.  If they are allowed
      to fail, they need a way to report their failures.  The typical way of doing
      this in clang is to use an ExprResult, which has an extra bit to signal a
      valid/invalid state.  Returning ExprResult is de riguour elsewhere in the Sema
      interface.  We suggest changing the Expr *& parameters in the Sema interface
      to ExprResult &.  This increases interface consistency and maintainability.
      
      This interface change is important for work supporting MS-style C++
      properties.  For reasons explained here
      <http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-February/013180.html>,
      seemingly trivial operations like rvalue/lvalue conversions that formerly
      could not fail now can.  (The reason is that given the semantics of the
      feature, getter/setter method lookup cannot happen until the point of use, at
      which point it may be found that the method does not exist, or it may have the
      wrong type, or overload resolution may fail, or it may be inaccessible.)
      
      llvm-svn: 129143
      0129629f
  20. Apr 06, 2011
  21. Mar 29, 2011
  22. Mar 28, 2011
  23. Mar 27, 2011
  24. Mar 09, 2011
  25. Mar 08, 2011
  26. Feb 17, 2011
  27. Feb 08, 2011
  28. Feb 07, 2011
    • John McCall's avatar
      A few more tweaks to the blocks AST representation: · 351762cd
      John McCall authored
        - BlockDeclRefExprs always store VarDecls
        - BDREs no longer store copy expressions
        - BlockDecls now store a list of captured variables, information about
          how they're captured, and a copy expression if necessary
          
      With that in hand, change IR generation to use the captures data in       
      blocks instead of walking the block independently.        
      
      Additionally, optimize block layout by emitting fields in descending
      alignment order, with a heuristic for filling in words when alignment
      of the end of the block header is insufficient for the most aligned
      field.
      
      llvm-svn: 125005
      351762cd
  29. Feb 03, 2011
  30. Jan 23, 2011
    • Ted Kremenek's avatar
      Tweak diagnostic: · 499897b4
      Ted Kremenek authored
        error: no super class declared in @interface for 'XXX'
      
      to be:
      
        error: 'X' cannot use 'super' because it is a root class
      
      The latter explains what the user actually did wrong.
      
      Fixes: <rdar://problem/8904409>
      llvm-svn: 124074
      499897b4
  31. Jan 14, 2011
  32. Jan 11, 2011
  33. Dec 22, 2010
Loading