Skip to content
  1. Oct 30, 2008
  2. Oct 29, 2008
    • Zhongxing Xu's avatar
      Rename: AddDecl => BindDecl · 628ae879
      Zhongxing Xu authored
      BindDecl better describes what the function does:
        - Bind the VarDecl to its memory region
        - Bind the memory region to some initial value.
      
      llvm-svn: 58359
      628ae879
  3. Oct 28, 2008
  4. Oct 27, 2008
    • Ted Kremenek's avatar
      Added preliminary support for CompoundLiterals in the static analyzer: · bf263682
      Ted Kremenek authored
      - GRExprEngine::VisitCompoundLiteral...
         (1) visits the initializer list (generating ExplodedNodes)
         (2) creates a CompoundMemRegion for the literal
         (3) creates a new state with the bound literal values using
             GRStateManager::BindCompoundLiteral
      
      - GRStateManager::BindCompoundLiteral simply calls 
        StoreManager::BindCompoundLiteral to get a new store and returns a persistent
        GRState with that store.
      
      - BasicStore::BindCompoundLiteral simply returns the same store, as it
        doesn't handle field sensitivity
        
      - RegionStore::BindCompoundLiteral currently fires an assert (pending discussion
        of how to best implement mappings for CompoundLiteralRegion).
      
      llvm-svn: 58277
      bf263682
    • Douglas Gregor's avatar
      Refactor the expression class hierarchy for casts. Most importantly: · e200adc5
      Douglas Gregor authored
        - CastExpr is the root of all casts
        - ImplicitCastExpr is (still) used for all explicit casts
        - ExplicitCastExpr is now the root of all *explicit* casts
        - ExplicitCCastExpr (new name needed!?) is a C-style cast in C or C++
        - CXXFunctionalCastExpr inherits from ExplicitCastExpr
        - CXXNamedCastExpr inherits from ExplicitCastExpr and is the root of all
          of the C++ named cast expression types (static_cast, dynamic_cast, etc.)
        - Added classes CXXStaticCastExpr, CXXDynamicCastExpr, 
          CXXReinterpretCastExpr, and CXXConstCastExpr to 
      
      Also, fixed returned-stack-addr.cpp, which broke once when we fixed
      reinterpret_cast to diagnose double->int* conversions and again when
      we eliminated implicit conversions to reference types. The fix is in
      both testcase and SemaChecking.cpp.
      
      Most of this patch is simply support for the renaming. There's very
      little actual change in semantics.
      
      llvm-svn: 58264
      e200adc5
  5. Oct 25, 2008
  6. Oct 24, 2008
  7. Oct 23, 2008
  8. Oct 22, 2008
  9. Oct 21, 2008
  10. Oct 19, 2008
  11. Oct 18, 2008
  12. Oct 17, 2008
  13. Oct 16, 2008
  14. Oct 09, 2008
  15. Oct 07, 2008
  16. Oct 06, 2008
  17. Oct 04, 2008
    • Ted Kremenek's avatar
      This is a big patch, but the functionality change is small and the rest of the... · 5ca90a24
      Ted Kremenek authored
      This is a big patch, but the functionality change is small and the rest of the patch consists of deltas due to API changes.
      
      This patch overhauls the "memory region" abstraction that was prototyped (but never really used) as part of the Store.h.  This patch adds MemRegion.h and MemRegion.cpp, which defines the class MemRegion and its subclasses.  This classes serve to define an abstract representation of memory, with regions being layered on other regions to to capture the relationships between fields and variables, variables and the address space they are allocated in, and so on.  
      
      The main motivation of this patch is that key parts of the analyzer assumed that all value bindings were to VarDecls.  In the future this won't be the case, and this patch removes lval::DeclVal and replaces it with lval::MemRegionVal.  Now all pieces of the analyzer must reason about abstract memory blocks instead of just variables.
      
      There should be no functionality change from this patch, but it opens the door for significant improvements to the analyzer such as field-sensitivity and object-sensitivity, both which were on hold until the memory abstraction got generalized.
      
      The memory region abstraction also allows type-information to literally be affixed to a memory region.  This will allow the some now redundant logic to be removed from the retain/release checker.
      
      llvm-svn: 57042
      5ca90a24
Loading