Skip to content
  1. Oct 29, 2009
    • Douglas Gregor's avatar
      [llvm up] · f7b87cb5
      Douglas Gregor authored
      Switch a few ugly switch-on-string-literal constructs to use the new
      llvm::StringSwitch.
      
      llvm-svn: 85461
      f7b87cb5
  2. Oct 28, 2009
  3. Oct 26, 2009
  4. Oct 23, 2009
    • Douglas Gregor's avatar
      Eliminate QualifiedDeclRefExpr, which captured the notion of a · 4bd90e53
      Douglas Gregor authored
      qualified reference to a declaration that is not a non-static data
      member or non-static member function, e.g., 
      
        namespace N { int i; }
        int j = N::i;
      
      Instead, extend DeclRefExpr to optionally store the qualifier. Most
      clients won't see or care about the difference (since
      QualifierDeclRefExpr inherited DeclRefExpr). However, this reduces the
      number of top-level expression types that clients need to cope with,
      brings the implementation of DeclRefExpr into line with MemberExpr,
      and simplifies and unifies our handling of declaration references.
      
      Extended DeclRefExpr to (optionally) store explicitly-specified
      template arguments. This occurs when naming a declaration via a
      template-id (which will be stored in a TemplateIdRefExpr) that,
      following template argument deduction and (possibly) overload
      resolution, is replaced with a DeclRefExpr that refers to a template
      specialization but maintains the template arguments as written.
      
      llvm-svn: 84962
      4bd90e53
  5. Oct 22, 2009
  6. Oct 21, 2009
  7. Oct 20, 2009
  8. Oct 18, 2009
  9. Oct 17, 2009
  10. Oct 16, 2009
  11. Oct 15, 2009
    • Ted Kremenek's avatar
      Per an astute observation from Zhongxing Xu, remove a "special case" logic in · 3abc41f4
      Ted Kremenek authored
      RegionStoreManager::Retrieve() that was intended to handle conflated uses of pointers as integers.
      It turns out this isn't needed, and resulted in inconsistent behavior when creating symbolic values on the following test case in 'tests/Analysis/misc-ps.m':
      
        typedef struct _BStruct { void *grue; } BStruct;
        void testB_aux(void *ptr);
        void testB(BStruct *b) {
          {
            int *__gruep__ = ((int *)&((b)->grue));
            int __gruev__ = *__gruep__;
            testB_aux(__gruep__);
          }
          {
            int *__gruep__ = ((int *)&((b)->grue));
            int __gruev__ = *__gruep__;
            if (~0 != __gruev__) {}
          }
        }
      
      When the code was analyzed with '-arch x86_64', the value assigned to '__gruev__' be would be a
      symbolic integer, but for '-arch i386' the value assigned to '__gruev__' would be a symbolic region
      (a blob of memory). With this change the value created is always a symbolic integer.
      
      Since the code being removed was added to support analysis of code calling
      OSAtomicCompareAndSwapXXX(), I also modified 'test/Analysis/NSString.m' to analyze the code in both
      '-arch i386' and '-arch x86_64', and also added some complementary test cases to test the presence
      of leaks when using OSAtomicCompareAndSwap32Barrier()/OSAtomicCompareAndSwap64Barrier() instead of
      just their absence. This code change reveals that previously both RegionStore and BasicStore were
      handling these cases wrong, and would never cause the analyzer to emit a leak in these cases (false
      negatives). Now RegionStore gets it right, but BasicStore still gets it wrong (and hence it has been
      disabled temporarily for this test case).
      
      llvm-svn: 84163
      3abc41f4
    • Ted Kremenek's avatar
      Remove stale comment. · 8070b82d
      Ted Kremenek authored
      llvm-svn: 84157
      8070b82d
  12. Oct 14, 2009
  13. Oct 13, 2009
  14. Oct 12, 2009
  15. Oct 11, 2009
Loading