Skip to content
Snippets Groups Projects
  1. Jul 27, 2016
  2. Jul 18, 2016
  3. May 27, 2016
  4. Apr 04, 2016
  5. Feb 19, 2016
  6. Nov 02, 2015
  7. Oct 20, 2015
  8. Oct 03, 2015
  9. Sep 29, 2015
  10. Sep 22, 2015
  11. Aug 06, 2015
  12. Jun 24, 2015
  13. May 21, 2015
  14. May 14, 2015
  15. May 02, 2015
  16. May 01, 2015
  17. Apr 30, 2015
  18. Apr 28, 2015
  19. Apr 23, 2015
  20. Mar 04, 2015
  21. Dec 10, 2014
    • Sean Callanan's avatar
      Modified the Objective-C lexer and parser (only · fd797b80
      Sean Callanan authored
      in debugger mode) to accept @import declarations
      and pass them to the debugger.  
      
      In the preprocessor, accept import declarations
      if the debugger is enabled, but don't actually
      load the module, just pass the import path on to 
      the preprocessor callbacks.
      
      In the Objective-C parser, if it sees an import
      declaration in statement context (usual for LLDB),
      ignore it and return a NullStmt.
      
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@223855 91177308-0d34-0410-b5e6-96231b3b80d8
      fd797b80
  22. Dec 02, 2014
  23. Oct 18, 2014
  24. Sep 15, 2014
  25. Sep 12, 2014
  26. Sep 10, 2014
  27. Aug 29, 2014
  28. Aug 27, 2014
    • David Blaikie's avatar
      Overload SourceManager::overrideFileContents so that unconditionally passing... · 926a507e
      David Blaikie authored
      Overload SourceManager::overrideFileContents so that unconditionally passing ownership is explicitly done using unique_ptr.
      
      Only those callers who are dynamically passing ownership should need the
      3 argument form. Those accepting the default ("do pass ownership")
      should do so explicitly with a unique_ptr now.
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216614 91177308-0d34-0410-b5e6-96231b3b80d8
      926a507e
    • Rafael Espindola's avatar
      Update for LLVM api change. · d92e74d9
      Rafael Espindola authored
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216585 91177308-0d34-0410-b5e6-96231b3b80d8
      d92e74d9
    • Ted Kremenek's avatar
      Add support for the static analyzer to synthesize function implementations... · fdf0d351
      Ted Kremenek authored
      Add support for the static analyzer to synthesize function implementations from external model files.
      
      Currently the analyzer lazily models some functions using 'BodyFarm',
      which constructs a fake function implementation that the analyzer
      can simulate that approximates the semantics of the function when
      it is called.  BodyFarm does this by constructing the AST for
      such definitions on-the-fly.  One strength of BodyFarm
      is that all symbols and types referenced by synthesized function
      bodies are contextual adapted to the containing translation unit.
      The downside is that these ASTs are hardcoded in Clang's own
      source code.
      
      A more scalable model is to allow these models to be defined as source
      code in separate "model" files and have the analyzer use those
      definitions lazily when a function body is needed.  Among other things,
      it will allow more customization of the analyzer for specific APIs
      and platforms.
      
      This patch provides the initial infrastructure for this feature.
      It extends BodyFarm to use an abstract API 'CodeInjector' that can be
      used to synthesize function bodies.  That 'CodeInjector' is
      implemented using a new 'ModelInjector' in libFrontend, which lazily
      parses a model file and injects the ASTs into the current translation
      unit.  
      
      Models are currently found by specifying a 'model-path' as an
      analyzer option; if no path is specified the CodeInjector is not
      used, thus defaulting to the current behavior in the analyzer.
      
      Models currently contain a single function definition, and can
      be found by finding the file <function name>.model.  This is an
      initial starting point for something more rich, but it bootstraps
      this feature for future evolution.
      
      This patch was contributed by Gábor Horváth as part of his
      Google Summer of Code project.
      
      Some notes:
      
      - This introduces the notion of a "model file" into
        FrontendAction and the Preprocessor.  This nomenclature
        is specific to the static analyzer, but possibly could be
        generalized.  Essentially these are sources pulled in
        exogenously from the principal translation.
      
        Preprocessor gets a 'InitializeForModelFile' and
        'FinalizeForModelFile' which could possibly be hoisted out
        of Preprocessor if Preprocessor exposed a new API to
        change the PragmaHandlers and some other internal pieces.  This
        can be revisited.
      
        FrontendAction gets a 'isModelParsingAction()' predicate function
        used to allow a new FrontendAction to recycle the Preprocessor
        and ASTContext.  This name could probably be made something
        more general (i.e., not tied to 'model files') at the expense
        of losing the intent of why it exists.  This can be revisited.
      
      - This is a moderate sized patch; it has gone through some amount of
        offline code review.  Most of the changes to the non-analyzer
        parts are fairly small, and would make little sense without
        the analyzer changes.
      
      - Most of the analyzer changes are plumbing, with the interesting
        behavior being introduced by ModelInjector.cpp and
        ModelConsumer.cpp.
      
      - The new functionality introduced by this change is off-by-default.
        It requires an analyzer config option to enable.
      
      git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216550 91177308-0d34-0410-b5e6-96231b3b80d8
      fdf0d351
  29. Aug 11, 2014
Loading