Skip to content
  1. Jul 07, 2011
    • Douglas Gregor's avatar
      Properly implement the scope restriction on the NRVO for · 53e191ed
      Douglas Gregor authored
      throw-expressions, such that we don't consider the NRVO when the
      non-volatile automatic object comes from outside the innermost try
      scope (C++0x [class.copymove]p13). In C++98/03, our ASTs were
      incorrect but it didn't matter because IR generation doesn't actually
      apply the NRVO here. In C++0x, however, we were moving from an object
      when in fact we should have copied from it. Fixes PR10142 /
      <rdar://problem/9714312>.
      
      llvm-svn: 134548
      53e191ed
  2. Jul 06, 2011
    • Fariborz Jahanian's avatar
      Some code cleanup of r134522 · c6ba959a
      Fariborz Jahanian authored
      llvm-svn: 134529
      c6ba959a
    • Fariborz Jahanian's avatar
      objc-arc: Support objc_arc_weak_unavailable on those · 1f626d6f
      Fariborz Jahanian authored
      classes which are incompatible with weak references.
      // rdar://9693477
      
      llvm-svn: 134522
      1f626d6f
    • Douglas Gregor's avatar
      Don't try to type-check a copy construction of an exception · 750734c6
      Douglas Gregor authored
      declaration with dependent type. Fixes PR10232 /
      <rdar://problem/9700653>.
      
      llvm-svn: 134515
      750734c6
    • Chandler Carruth's avatar
      Build up statistics about the work done for analysis based warnings. · b4836ea7
      Chandler Carruth authored
      Special detail is added for uninitialized variable analysis as this has
      serious performance problems than need to be tracked.
      
      Computing some of this data is expensive, for example walking the CFG to
      determine its size. To avoid doing that unless the stats data is going
      to be used, we thread a bit into the Sema object to track whether
      detailed stats should be collected or not. This bit is used to avoid
      computations whereever the computations are likely to be more expensive
      than checking the state of the flag. Thus, counters are in some cases
      unconditionally updated, but the more expensive (and less frequent)
      aggregation steps are skipped.
      
      With this patch, we're able to see that for 'gcc.c':
      *** Analysis Based Warnings Stats:
      232 functions analyzed (0 w/o CFGs).
        7151 CFG blocks built.
        30 average CFG blocks per function.
        1167 max CFG blocks per function.
      163 functions analyzed for uninitialiazed variables
        640 variables analyzed.
        3 average variables per function.
        94 max variables per function.
        96409 block visits.
        591 average block visits per function.
        61546 max block visits per function.
      
      And for the reduced testcase in PR10183:
      *** Analysis Based Warnings Stats:
      98 functions analyzed (0 w/o CFGs).
        8526 CFG blocks built.
        87 average CFG blocks per function.
        7277 max CFG blocks per function.
      68 functions analyzed for uninitialiazed variables
        1359 variables analyzed.
        19 average variables per function.
        1196 max variables per function.
        2540494 block visits.
        37360 average block visits per function.
        2536495 max block visits per function.
      
      That last number is the somewhat scary one that indicates the problem in
      PR10183.
      
      llvm-svn: 134494
      b4836ea7
    • Rafael Espindola's avatar
      Use attributes from the definition (if available) when · ba195cff
      Rafael Espindola authored
      instantiating functions.
      
      Fixes PR10272.
      
      llvm-svn: 134491
      ba195cff
    • John McCall's avatar
      When tree-transforming an expression sequence, always flag expanded · 542e7c6f
      John McCall authored
      variadic argument pack expansions as having changed, rather than doing
      it for each changed expansion, which leaves out zero-argument packs
      with catastrophic consequences.
      
      Fixes PR10260.
      
      llvm-svn: 134483
      542e7c6f
    • John McCall's avatar
      Fixed enum types can be complete without actually being valid to use · 21878760
      John McCall authored
      as scope specifiers;  diagnose the attempt, rather than letting it go
      to an assert.  The rest of PR10264.
      
      llvm-svn: 134479
      21878760
    • John McCall's avatar
      Change the driver's logic about Objective-C runtimes: abstract out a · 24fc0dec
      John McCall authored
      structure to hold inferred information, then propagate each invididual
      bit down to -cc1.  Separate the bits of "supports weak" and "has a native
      ARC runtime";  make the latter a CodeGenOption.
      
      The tool chain is still driving this decision, because it's the place that
      has the required deployment target information on Darwin, but at least it's
      better-factored now.
      
      llvm-svn: 134453
      24fc0dec
    • Fariborz Jahanian's avatar
      objc-arc: enforce performSelector rules in rejecting retaining selectors · b7a77362
      Fariborz Jahanian authored
      passed to it, and unknown selectors causing potential leak.
      // rdar://9659270
      
      llvm-svn: 134449
      b7a77362
  3. Jul 05, 2011
  4. Jul 04, 2011
  5. Jul 02, 2011
  6. Jul 01, 2011
    • Douglas Gregor's avatar
      When adding boolean keywords for typo correction, add either "bool" or · 3b22a884
      Douglas Gregor authored
      "_Bool" (depending on dialect), but not both, since they have the same
      edit distance from "Bool".
      
      llvm-svn: 134263
      3b22a884
    • Richard Trieu's avatar
      Fix for PR7410. Allow functions in a derived class that improperly overwrite a... · 95d88093
      Richard Trieu authored
      Fix for PR7410. Allow functions in a derived class that improperly overwrite a virtual function in the base class to be inserted into the derived class function list to prevent extra errors every time the derived class is used.
      
      llvm-svn: 134251
      95d88093
    • Richard Smith's avatar
      Fix AST representations of alias-declarations which define tag types. Inside... · cd1c0555
      Richard Smith authored
      Fix AST representations of alias-declarations which define tag types. Inside classes, the tag types need to have an associated access specifier, and inside function definitions, they need to be included in the declarations of the DeclStmt. These issues manifested as assertions during template instantiation, and also in a WIP constexpr patch.
      
      llvm-svn: 134250
      cd1c0555
    • Douglas Gregor's avatar
      Introduce the notion of instantiation dependence into Clang's AST. A · 678d76c0
      Douglas Gregor authored
      type/expression/template argument/etc. is instantiation-dependent if
      it somehow involves a template parameter, even if it doesn't meet the
      requirements for the more common kinds of dependence (dependent type,
      type-dependent expression, value-dependent expression).
      
      When we see an instantiation-dependent type, we know we always need to
      perform substitution into that instantiation-dependent type. This
      keeps us from short-circuiting evaluation in places where we
      shouldn't, and lets us properly implement C++0x [temp.type]p2.
      
      In theory, this would also allow us to properly mangle
      instantiation-dependent-but-not-dependent decltype types per the
      Itanium C++ ABI, but we aren't quite there because we still mangle
      based on the canonical type in cases like, e.g.,
      
        template<unsigned> struct A { };
        template<typename T>
          void f(A<sizeof(sizeof(decltype(T() + T())))>) { }
        template void f<int>(A<sizeof(sizeof(int))>);
      
      and therefore get the wrong answer.
      
      llvm-svn: 134225
      678d76c0
  7. Jun 30, 2011
  8. Jun 29, 2011
  9. Jun 28, 2011
Loading