Skip to content
  1. Nov 13, 2013
    • Enrico Granata's avatar
      Small typos in previous commit · 6e49c48f
      Enrico Granata authored
      llvm-svn: 194546
      6e49c48f
    • Rui Ueyama's avatar
      [PECOFF] Fix use-after-return. · e653f1d1
      Rui Ueyama authored
      llvm-svn: 194545
      e653f1d1
    • Enrico Granata's avatar
      <rdar://problem/14322677> · 53468437
      Enrico Granata authored
      Implement a "memory find" command for LLDB
      
      This is still fairly rough around the edges but works well enough for simple scenarios where a chunk of text or a number are to be found within a certain range of memory, as in
      mem find `buffer` `buffer+0x1000` -s "me" -c 5 -r
      
      llvm-svn: 194544
      53468437
    • Dmitri Gribenko's avatar
      Fix closing namespace comment to reflect reality · f686ed0e
      Dmitri Gribenko authored
      llvm-svn: 194543
      f686ed0e
    • Juergen Ributzka's avatar
      SelectionDAG: Teach the legalizer to split SETCC if VSELECT needs splitting too. · 34c652d3
      Juergen Ributzka authored
      This patch reapplies r193676 with an additional fix for the Hexagon backend. The
      SystemZ backend has already been fixed by r194148.
      
      The Type Legalizer recognizes that VSELECT needs to be split, because the type
      is to wide for the given target. The same does not always apply to SETCC,
      because less space is required to encode the result of a comparison. As a result
      VSELECT is split and SETCC is unrolled into scalar comparisons.
      
      This commit fixes the issue by checking for VSELECT-SETCC patterns in the DAG
      Combiner. If a matching pattern is found, then the result mask of SETCC is
      promoted to the expected vector mask type for the given target. Now the type
      legalizer will split both VSELECT and SETCC.
      
      This allows the following X86 DAG Combine code to sucessfully detect the MIN/MAX
      pattern. This fixes PR16695, PR17002, and <rdar://problem/14594431>.
      
      Reviewed by Nadav
      
      llvm-svn: 194542
      34c652d3
    • Chandler Carruth's avatar
      Give folks a reference to some material on the fundamental design · a477d2ab
      Chandler Carruth authored
      pattern in use here. Addresses review feedback from Sean (thanks!) and
      others.
      
      llvm-svn: 194541
      a477d2ab
    • Richard Smith's avatar
      PR10837: Warn if a null pointer constant is formed by a zero integer constant · 7309f60b
      Richard Smith authored
      expression that is not a zero literal, in C. Patch by Ivan A. Kosarev!
      
      llvm-svn: 194540
      7309f60b
    • Rui Ueyama's avatar
      [PECOFF] Do not print error if length of .drectve is 0. · 3314f56c
      Rui Ueyama authored
      llvm-svn: 194539
      3314f56c
    • 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