Skip to content
  1. Dec 15, 2010
    • Douglas Gregor's avatar
      Variadic templates: extend the Expr class with a bit that specifies · a6e053e6
      Douglas Gregor authored
      whether the expression contains an unexpanded parameter pack, in the
      same vein as the changes to the Type hierarchy. Compute this bit
      within all of the Expr subclasses.
      
      This change required a bunch of reshuffling of dependency
      calculations, mainly to consolidate them inside the constructors and
      to fuse multiple loops that iterate over arguments to determine type
      dependence, value dependence, and (now) containment of unexpanded
      parameter packs.
      
      Again, testing is painfully sparse, because all of the diagnostics
      will change and it is more important to test the to-be-written visitor
      that collects unexpanded parameter packs.
      
      llvm-svn: 121831
      a6e053e6
    • John McCall's avatar
      8c6b56f3
  2. Dec 14, 2010
  3. Dec 13, 2010
    • Douglas Gregor's avatar
      Variadic templates: extend Type, NestedNameSpecifier, TemplateName, · 506bd564
      Douglas Gregor authored
      and TemplateArgument with an operation that determines whether there
      are any unexpanded parameter packs within that construct. Use this
      information to diagnose the appearance of the names of parameter packs
      that have not been expanded (C++ [temp.variadic]p5). Since this
      property is checked often (every declaration, ever expression
      statement, etc.), we extend Type and Expr with a bit storing the
      result of this computation, rather than walking the AST each time to
      determine whether any unexpanded parameter packs occur.
      
      This commit is deficient in several ways, which will be remedied with
      future commits:
        - Expr has a bit to store the presence of an unexpanded parameter
        pack, but it is never set.
        - The error messages don't point out where the unexpanded parameter
        packs were named in the type/expression, but they should. 
        - We don't check for unexpanded parameter packs in all of the places
        where we should.
        - Testing is sparse, pending the resolution of the above three
        issues.
      
      llvm-svn: 121724
      506bd564
    • Abramo Bagnara's avatar
      Skip ParenType on function instantiations. · a44c902d
      Abramo Bagnara authored
      llvm-svn: 121720
      a44c902d
    • Chandler Carruth's avatar
      Reduce the number of builtin operator overload candidates added in certain · 00a38336
      Chandler Carruth authored
      cases. First, omit all builtin overloads when no non-record type is in the set
      of candidate types. Second, avoid arithmetic type overloads for non-arithmetic
      or enumeral types (counting vector types as arithmetic due to Clang
      extensions). When heavily using constructs such as STL's '<<' based stream
      logging, this can have a significant impact. One logging-heavy test case's
      compile time dropped by 10% with this. Self-host shows 1-2% improvement in
      compile time, but that's likely in the noise.
      
      llvm-svn: 121665
      00a38336
    • Peter Collingbourne's avatar
      Basic, Sema: add support for CUDA launch_bounds attribute · 827301e6
      Peter Collingbourne authored
      llvm-svn: 121654
      827301e6
    • Peter Collingbourne's avatar
      Sema: diagnose kernel functions with non-void return type · e8cfaf42
      Peter Collingbourne authored
      llvm-svn: 121653
      e8cfaf42
  4. Dec 12, 2010
  5. Dec 11, 2010
  6. Dec 10, 2010
Loading