Skip to content
  1. Nov 14, 2013
  2. Nov 13, 2013
    • Rui Ueyama's avatar
      Path: Add tests for existing file magics. · 5e3de7a7
      Rui Ueyama authored
      llvm-svn: 194607
      5e3de7a7
    • Rui Ueyama's avatar
      Whitespace. · 89d1bdb6
      Rui Ueyama authored
      llvm-svn: 194605
      89d1bdb6
    • Chandler Carruth's avatar
      Fix a null pointer dereference when copying a null polymorphic pointer. · ccb19097
      Chandler Carruth authored
      This bug only bit the C++98 build bots because all of the actual uses
      really do move. ;] But not *quite* ready to do the whole C++11 switch
      yet, so clean it up. Also add a unit test that catches this immediately.
      
      llvm-svn: 194548
      ccb19097
    • Chandler Carruth's avatar
      Introduce an AnalysisManager which is like a pass manager but with a lot · 74015a70
      Chandler Carruth authored
      more smarts in it. This is where most of the interesting logic that used
      to live in the implicit-scheduling-hackery of the old pass manager will
      live.
      
      Like the previous commits, note that this is a very early prototype!
      I expect substantial changes before this is ready to use.
      
      The core of the design is the following:
      
      - We have an AnalysisManager which can be used across a series of
        passes over a module.
      - The code setting up a pass pipeline registers the analyses available
        with the manager.
      - Individual transform passes can check than an analysis manager
        provides the analyses they require in order to fail-fast.
      - There is *no* implicit registration or scheduling.
      - Analysis passes are different from other passes: they produce an
        analysis result that is cached and made available via the analysis
        manager.
      - Cached results are invalidated automatically by the pass managers.
      - When a transform pass requests an analysis result, either the analysis
        is run to produce the result or a cached result is provided.
      
      There are a few aspects of this design that I *know* will change in
      subsequent commits:
      - Currently there is no "preservation" system, that needs to be added.
      - All of the analysis management should move up to the analysis library.
      - The analysis management needs to support at least SCC passes. Maybe
        loop passes. Living in the analysis library will facilitate this.
      - Need support for analyses which are *both* module and function passes.
      - Need support for pro-actively running module analyses to have cached
        results within a function pass manager.
      - Need a clear design for "immutable" passes.
      - Need support for requesting cached results when available and not
        re-running the pass even if that would be necessary.
      - Need more thorough testing of all of this infrastructure.
      
      There are other aspects that I view as open questions I'm hoping to
      resolve as I iterate a bit on the infrastructure, and especially as
      I start writing actual passes against this.
      - Should we have separate management layers for function, module, and
        SCC analyses? I think "yes", but I'm not yet ready to switch the code.
        Adding SCC support will likely resolve this definitively.
      - How should the 'require' functionality work? Should *that* be the only
        way to request results to ensure that passes always require things?
      - How should preservation work?
      - Probably some other things I'm forgetting. =]
      
      Look forward to more patches in shorter order now that this is in place.
      
      llvm-svn: 194538
      74015a70
  3. Nov 09, 2013
  4. Nov 07, 2013
  5. Nov 05, 2013
    • Rafael Espindola's avatar
      Simplify ErrorOr. · ca35ffe6
      Rafael Espindola authored
      ErrorOr had quiet a bit of complexity and indirection to be able to hold a user
      type with the error.
      
      That feature is not used anymore. This patch removes it, it will live in svn
      history if we ever need it again.
      
      If we do need it again, IMHO there is one thing that should be done
      differently: Holding extra info in the error is not a property a function also
      returning a value or not. The ability to hold extra info should be in the error
      type and ErrorOr templated over it so that we don't need the funny looking
      ErrorOr<void>.
      
      llvm-svn: 194030
      ca35ffe6
  6. Oct 31, 2013
  7. Oct 30, 2013
    • Rafael Espindola's avatar
      Add calls to doInitialization() and doFinalization() in verifyFunction() · 55fdcff4
      Rafael Espindola authored
      The function verifyFunction() in lib/IR/Verifier.cpp misses some
      calls. It creates a temporary FunctionPassManager that will run a
      single Verifier pass. Unfortunately, FunctionPassManager is no
      PassManager and does not call doInitialization() and doFinalization()
      by itself. Verifier does important tasks in doInitialization() such as
      collecting type information used to check DebugInfo metadata and
      doFinalization() does some additional checks. Therefore these checks
      were missed and debug info couldn't be verified at all, it just
      crashed if the function had some.
      
      verifyFunction() is currently not used in llvm unless -debug option is
      enabled, and in unittests/IR/VerifierTest.cpp
      
      VerifierTest had to be changed to create the function in a module from
      which the type debug info can be collected.
      
      Patch by Michael Kruse.
      
      llvm-svn: 193719
      55fdcff4
    • Rui Ueyama's avatar
      Add {start,end}with_lower methods to StringRef. · 00e24e48
      Rui Ueyama authored
      startswith_lower is ocassionally useful and I think worth adding.
      endwith_lower is added for completeness.
      
      Differential Revision: http://llvm-reviews.chandlerc.com/D2041
      
      llvm-svn: 193706
      00e24e48
    • Nuno Lopes's avatar
      make ConstantRange::signExtend() optimal · 1112eca0
      Nuno Lopes authored
      the case [x, INT_MIN) was not handled optimally
      
      llvm-svn: 193694
      1112eca0
  8. Oct 29, 2013
  9. Oct 28, 2013
  10. Oct 25, 2013
  11. Oct 24, 2013
  12. Oct 22, 2013
Loading