Skip to content
  1. Jun 26, 2009
    • Douglas Gregor's avatar
      Implicit instantiation for function template specializations. · 4adbc6d9
      Douglas Gregor authored
      For a FunctionDecl that has been instantiated due to template argument
      deduction, we now store the primary template from which it was
      instantiated and the deduced template arguments. From this
      information, we can instantiate the body of the function template.
      
      llvm-svn: 74232
      4adbc6d9
    • Ted Kremenek's avatar
      Remove orphaned header file. · 4ac764d7
      Ted Kremenek authored
      llvm-svn: 74231
      4ac764d7
    • Ted Kremenek's avatar
      Introduce a new concept to the static analyzer: SValuator. · 1642bdaa
      Ted Kremenek authored
      GRTransferFuncs had the conflated role of both constructing SVals (symbolic
      expressions) as well as handling checker-specific logic. Now SValuator has the
      role of constructing SVals from expressions and GRTransferFuncs just handles
      checker-specific logic. The motivation is by separating these two concepts we
      will be able to much more easily create richer constraint-generating logic
      without coupling it to the main checker transfer function logic.
      
      We now have one implementation of SValuator: SimpleSValuator.
      
      SimpleSValuator is essentially the SVal-related logic that was in GRSimpleVals
      (which is removed in this patch). This includes the logic for EvalBinOp,
      EvalCast, etc. Because SValuator has a narrower role than the old
      GRTransferFuncs, the interfaces are much simpler, and so is the implementation
      of SimpleSValuator compared to GRSimpleVals. I also did a line-by-line review of
      SVal-related logic in GRSimpleVals and cleaned it up while moving it over to
      SimpleSValuator.
      
      As a consequence of removing GRSimpleVals, there is no longer a
      '-checker-simple' option. The '-checker-cfref' did everything that option did
      but also ran the retain/release checker. Of course a user may not always wish to
      run the retain/release checker, nor do we wish core analysis logic buried in the
      checker-specific logic. The next step is to refactor the logic in CFRefCount.cpp
      to separate out these pieces into the core analysis engine.
      
      llvm-svn: 74229
      1642bdaa
    • Nate Begeman's avatar
    • Nate Begeman's avatar
      Write/Read new Language Options · f2911667
      Nate Begeman authored
      llvm-svn: 74221
      f2911667
    • Nate Begeman's avatar
      PCH support for OpenCL language options · 9d90579b
      Nate Begeman authored
      llvm-svn: 74220
      9d90579b
    • Douglas Gregor's avatar
      Improved semantic analysis and AST respresentation for function · ad3f2fcf
      Douglas Gregor authored
      templates.
      
      For example, this now type-checks (but does not instantiate the body
      of deref<int>):
      
        template<typename T> T& deref(T* t) { return *t; }
      
        void test(int *ip) {
          int &ir = deref(ip);
        }
      
      Specific changes/additions:
        * Template argument deduction from a call to a function template.
        * Instantiation of a function template specializations (just the
        declarations) from the template arguments deduced from a call.
        * FunctionTemplateDecls are stored directly in declaration contexts
        and found via name lookup (all forms), rather than finding the
        FunctionDecl and then realizing it is a template. This is
        responsible for most of the churn, since some of the core
        declaration matching and lookup code assumes that all functions are
        FunctionDecls.
      
      llvm-svn: 74213
      ad3f2fcf
  2. Jun 25, 2009
  3. Jun 24, 2009
Loading