Skip to content
  1. Sep 29, 2012
    • Jordan Rose's avatar
      Use a custom DenseMapInfo for WeakObjectProfileTy. · 8d17c197
      Jordan Rose authored
      We can't specialize the usual llvm::DenseMapInfo at the end of the file
      because by that point the DenseMap in FunctionScopeInfo has already been
      instantiated.
      
      No functionality change.
      
      llvm-svn: 164862
      8d17c197
    • Fariborz Jahanian's avatar
      [Doc parsing] Add availability information to generated Comment XML. · 35760a89
      Fariborz Jahanian authored
      (I still need to add a test once I figure it out).
      Reviewed off-line by Doug. // rdar://12378879
      
      llvm-svn: 164861
      35760a89
    • Jordan Rose's avatar
      Fix buildbots by not using a template from another namespace. · d61f3b4d
      Jordan Rose authored
      No need to specialize BeforeThanCompare for a comparator that's only
      going to be used once.
      
      llvm-svn: 164859
      d61f3b4d
    • Alexander Kornienko's avatar
      Compatibility macro detection for the -Wimplicit-fallthrough diagnostic. · e61e5625
      Alexander Kornienko authored
      Summary:
      When issuing a diagnostic message for the -Wimplicit-fallthrough diagnostics, always try to find the latest macro, defined at the point of fallthrough, which is immediately expanded to "[[clang::fallthrough]]", and use it's name instead of the actual sequence.
      
      Known issues: 
        * uses PP.getSpelling() to compare macro definition with a string (anyone can suggest a convenient way to fill a token array, or maybe lex it in runtime?);
        * this can be generalized and used in other similar cases, any ideas where it should reside then?
      
      Reviewers: doug.gregor, rsmith
      
      Reviewed By: rsmith
      
      CC: cfe-commits
      
      Differential Revision: http://llvm-reviews.chandlerc.com/D50
      
      llvm-svn: 164858
      e61e5625
    • Jordan Rose's avatar
      -Wreceiver-is-weak: rephrase warning text and add a suggestion Note. · 13d6b719
      Jordan Rose authored
      New output:
        warning: weak property may be unpredictably set to nil
        note: property declared here
        note: assign the value to a strong variable to keep the object alive
              during use
      
      <rdar://problem/12277204>
      
      llvm-svn: 164857
      13d6b719
    • Jordan Rose's avatar
      Pull ScopeInfo implementation into its own file. · 62b37987
      Jordan Rose authored
      The infrastructure for -Warc-repeated-use-of-weak got a little too heavy
      to leave sitting at the top of Sema.cpp.
      
      No functionality change.
      
      llvm-svn: 164856
      62b37987
    • Jordan Rose's avatar
      -Warc-repeated-use-of-weak: check ivars and variables as well. · 657b5f46
      Jordan Rose authored
      Like properties, loading from a weak ivar twice in the same function can
      give you inconsistent results if the object is deallocated between the
      two loads. It is safer to assign to a strong local variable and use that.
      
      Second half of <rdar://problem/12280249>.
      
      llvm-svn: 164855
      657b5f46
    • Jordan Rose's avatar
      Add a warning (off by default) for repeated use of the same weak property. · d393458c
      Jordan Rose authored
      The motivating example:
      
      if (self.weakProp)
        use(self.weakProp);
      
      As with any non-atomic test-then-use, it is possible a weak property to be
      non-nil at the 'if', but be deallocated by the time it is used. The correct
      way to write this example is as follows:
      
      id tmp = self.weakProp;
      if (tmp)
        use(tmp);
      
      The warning is controlled by -Warc-repeated-use-of-receiver, and uses the
      property name and base to determine if the same property on the same object
      is being accessed multiple times. In cases where the base is more
      complicated than just a single Decl (e.g. 'foo.bar.weakProp'), it picks a
      Decl for some degree of uniquing and reports the problem under a subflag,
      -Warc-maybe-repeated-use-of-receiver. This gives a way to tune the
      aggressiveness of the warning for a particular project.
      
      The warning is not on by default because it is not flow-sensitive and thus
      may have a higher-than-acceptable rate of false positives, though it is
      less noisy than -Wreceiver-is-weak. On the other hand, it will not warn
      about some cases that may be legitimate issues that -Wreceiver-is-weak
      will catch, and it does not attempt to reason about methods returning weak
      values.
      
      Even though this is not a real "analysis-based" check I've put the bug
      emission code in AnalysisBasedWarnings for two reasons: (1) to run on
      every kind of code body (function, method, block, or lambda), and (2) to
      suggest that it may be enhanced by flow-sensitive analysis in the future.
      
      The second (smaller) half of this work is to extend it to weak locals
      and weak ivars. This should use most of the same infrastructure.
      
      Part of <rdar://problem/12280249>
      
      llvm-svn: 164854
      d393458c
  2. Sep 28, 2012
  3. Sep 27, 2012
  4. Sep 26, 2012
Loading