Skip to content
  1. Nov 13, 2013
    • 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
    • Nadav Rotem's avatar
      Update the docs to match the function name. · ea186b95
      Nadav Rotem authored
      llvm-svn: 194537
      ea186b95
    • Howard Hinnant's avatar
      This fixes a very subtle ABI problem concerning the copy constructor of · ccad8c32
      Howard Hinnant authored
      pair, and a couple of pair-like implementation detail types.  The
      C++98/03 and 11 standards all specify that the copy constructor of
      pair<int, int> is trivial. However as libc++ tracked the draft C++11
      standard over the years, this copy constructor became non-trivial, and
      then just recently was corrected back to trivial for C++11.
      
      Unfortunately (for libc++1) the Itanium ABI specifies different calling
      conventions for trivial and non-trivial copy constructors.  Therefore
      currently the C++03 libc++ copy constructor for pair<int, int> is ABI
      incompatible with the C++11 libc++ copy constructor for pair<int, int>.
      This is Bad(tm).   This patch corrects the situation by making this copy
      constructor trivial in C++03 mode as well.
      
      Just in case it is needed for an incomplete C++11 compiler, libc++
      retains the ability to support pair with rvalue references, but without
      defaulted special members.  However the pair needs non-trivial special
      members to implement this special case, (as it did when clang was in
      this place a couple of years ago).
      
      During this work a bug was also found and fixed in
      is_trivially_constructible.
      
      And there is a minor drive-by fix in <__config> regarding
      __type_visibility__.
      
      A test is updated to ensure that the copy constructor of pair<int, int>
      is trivial in both C++03 and C++11.  This test will necessarily fail for
      a compiler that implements rvalue references but not defaulted special
      members.
      
      llvm-svn: 194536
      ccad8c32
    • Aaron Ballman's avatar
      Removing llvm::huge_vald and llvm::huge_vall because they are not currently... · 4337e970
      Aaron Ballman authored
      Removing llvm::huge_vald and llvm::huge_vall because they are not currently used, and HUGE_VALD does not appear to be supported everywhere anyways.
      
      llvm-svn: 194535
      4337e970
    • NAKAMURA Takumi's avatar
      unittests/Tooling/ToolingTest.cpp: Suppress new tests on win32, due to... · d3b07c65
      NAKAMURA Takumi authored
      unittests/Tooling/ToolingTest.cpp: Suppress new tests on win32, due to handling of virtual file, such "/a.cc".
      
      llvm-svn: 194534
      d3b07c65
    • Aaron Ballman's avatar
      Replacing HUGE_VALF with llvm::huge_valf in order to work around a warning triggered in MSVC 12. · 04999041
      Aaron Ballman authored
      Patch reviewed by Reid Kleckner and Jim Grosbach.
      
      llvm-svn: 194533
      04999041
    • Fariborz Jahanian's avatar
      ObjectiveC migrator. Place use of NS_NONATOMIC_IOSONLY · 2e793d61
      Fariborz Jahanian authored
      on inferred property attribute under
       -objcmt-ns-nonatomic-iosonly  option.
      // rdar://15442742
      
      llvm-svn: 194532
      2e793d61
    • Jason Molenda's avatar
      Change SBThread::GetExtendedBacktrace to · 008c45f1
      Jason Molenda authored
      SBThread::GetExtendedBacktraceThread to make it more clear what is
      being returned.
      
      llvm-svn: 194531
      008c45f1
    • Rafael Espindola's avatar
      Remove always true flag. · 6cd1b9ae
      Rafael Espindola authored
      llvm-svn: 194530
      6cd1b9ae
  2. Nov 12, 2013
Loading