Skip to content
  1. Sep 10, 2015
  2. Sep 09, 2015
    • Reid Kleckner's avatar
      [SEH] Emit 32-bit SEH tables for the new EH IR · 94b704c4
      Reid Kleckner authored
      The 32-bit tables don't actually contain PC range data, so emitting them
      is incredibly simple.
      
      The 64-bit tables, on the other hand, use the same table for state
      numbering as well as label ranges. This makes things more difficult, so
      it will be implemented later.
      
      llvm-svn: 247192
      94b704c4
    • Dan Gohman's avatar
      [WebAssembly] Update target datalayout strings. · 5e066842
      Dan Gohman authored
      llvm-svn: 247187
      5e066842
    • Teresa Johnson's avatar
      Change EmitRecordWithAbbrevImpl to take Optional record code. NFC. · 0f251a1c
      Teresa Johnson authored
      This change enables EmitRecord to pass the supplied record Code to
      EmitRecordWithAbbrevImpl, rather than insert it into the Vals array.
      It is an enabler for changing EmitRecord to take an ArrayRef<uintty> instead
      of a SmallVectorImpl<uintty>&
      
      Patch suggested by Duncan P. N. Exon Smith, modified by myself a bit to get
      correct assertion checking.
      
      llvm-svn: 247186
      0f251a1c
    • Piotr Padlewski's avatar
      ScalarEvolution assume hanging bugfix · 0dde00d2
      Piotr Padlewski authored
      http://reviews.llvm.org/D12719
      
      llvm-svn: 247184
      0dde00d2
    • Mehdi Amini's avatar
      Revert "Bitcode Writer: EmitRecordWith* takes an ArrayRef instead of a SmallVector (NFC)" · c9a85abc
      Mehdi Amini authored
      This reverts commit r247178.
      
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 247182
      c9a85abc
    • David Majnemer's avatar
      Revert trunc(lshr (sext A), Cst) to ashr A, Cst · d34dbf07
      David Majnemer authored
      This reverts commit r246997, it introduced a regression (PR24763).
      
      llvm-svn: 247180
      d34dbf07
    • Mehdi Amini's avatar
      Bitcode Writer: EmitRecordWith* takes an ArrayRef instead of a SmallVector (NFC) · 7d2bf53e
      Mehdi Amini authored
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 247178
      7d2bf53e
    • Renato Golin's avatar
      Revert "AVX512: Implemented encoding and intrinsics for vextracti64x4... · db7ea86b
      Renato Golin authored
      Revert "AVX512: Implemented encoding and intrinsics for   vextracti64x4 ,vextracti64x2, vextracti32x8, vextracti32x4, vextractf64x4, vextractf64x2, vextractf32x8, vextractf32x4 Added tests for intrinsics and encoding."
      
      This reverts commit r247149, as it was breaking numerous buildbots of varied architectures.
      
      llvm-svn: 247177
      db7ea86b
    • Sanjay Patel's avatar
      allow unpredictable metadata on switch statements · 66dcafc3
      Sanjay Patel authored
      llvm-svn: 247174
      66dcafc3
    • Matthias Braun's avatar
      Save LaneMask with livein registers · d9da1627
      Matthias Braun authored
      With subregister liveness enabled we can detect the case where only
      parts of a register are live in, this is expressed as a 32bit lanemask.
      The current code only keeps registers in the live-in list and therefore
      enumerated all subregisters affected by the lanemask. This turned out to
      be too conservative as the subregister may also cover additional parts
      of the lanemask which are not live. Expressing a given lanemask by
      enumerating a minimum set of subregisters is computationally expensive
      so the best solution is to simply change the live-in list to store the
      lanemasks as well. This will reduce memory usage for targets using
      subregister liveness and slightly increase it for other targets
      
      Differential Revision: http://reviews.llvm.org/D12442
      
      llvm-svn: 247171
      d9da1627
    • Matthias Braun's avatar
      VirtRegMap: Improve addMBBLiveIns() using SlotIndex::MBBIndexIterator; NFC · cc580058
      Matthias Braun authored
      Now that we have an explicit iterator over the idx2MBBMap in SlotIndices
      we can use the fact that segments and the idx2MBBMap is sorted by
      SlotIndex position so can advance both simultaneously instead of
      starting from the beginning for each segment.
      
      This complicates the code for the subregister case somewhat but should
      be more efficient and has the advantage that we get the final lanemask
      for each block immediately which will be important for a subsequent
      change.
      
      Removes the now unused SlotIndexes::findMBBLiveIns function.
      
      Differential Revision: http://reviews.llvm.org/D12443
      
      llvm-svn: 247170
      cc580058
    • Chandler Carruth's avatar
      [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible · 7b560d40
      Chandler Carruth authored
      with the new pass manager, and no longer relying on analysis groups.
      
      This builds essentially a ground-up new AA infrastructure stack for
      LLVM. The core ideas are the same that are used throughout the new pass
      manager: type erased polymorphism and direct composition. The design is
      as follows:
      
      - FunctionAAResults is a type-erasing alias analysis results aggregation
        interface to walk a single query across a range of results from
        different alias analyses. Currently this is function-specific as we
        always assume that aliasing queries are *within* a function.
      
      - AAResultBase is a CRTP utility providing stub implementations of
        various parts of the alias analysis result concept, notably in several
        cases in terms of other more general parts of the interface. This can
        be used to implement only a narrow part of the interface rather than
        the entire interface. This isn't really ideal, this logic should be
        hoisted into FunctionAAResults as currently it will cause
        a significant amount of redundant work, but it faithfully models the
        behavior of the prior infrastructure.
      
      - All the alias analysis passes are ported to be wrapper passes for the
        legacy PM and new-style analysis passes for the new PM with a shared
        result object. In some cases (most notably CFL), this is an extremely
        naive approach that we should revisit when we can specialize for the
        new pass manager.
      
      - BasicAA has been restructured to reflect that it is much more
        fundamentally a function analysis because it uses dominator trees and
        loop info that need to be constructed for each function.
      
      All of the references to getting alias analysis results have been
      updated to use the new aggregation interface. All the preservation and
      other pass management code has been updated accordingly.
      
      The way the FunctionAAResultsWrapperPass works is to detect the
      available alias analyses when run, and add them to the results object.
      This means that we should be able to continue to respect when various
      passes are added to the pipeline, for example adding CFL or adding TBAA
      passes should just cause their results to be available and to get folded
      into this. The exception to this rule is BasicAA which really needs to
      be a function pass due to using dominator trees and loop info. As
      a consequence, the FunctionAAResultsWrapperPass directly depends on
      BasicAA and always includes it in the aggregation.
      
      This has significant implications for preserving analyses. Generally,
      most passes shouldn't bother preserving FunctionAAResultsWrapperPass
      because rebuilding the results just updates the set of known AA passes.
      The exception to this rule are LoopPass instances which need to preserve
      all the function analyses that the loop pass manager will end up
      needing. This means preserving both BasicAAWrapperPass and the
      aggregating FunctionAAResultsWrapperPass.
      
      Now, when preserving an alias analysis, you do so by directly preserving
      that analysis. This is only necessary for non-immutable-pass-provided
      alias analyses though, and there are only three of interest: BasicAA,
      GlobalsAA (formerly GlobalsModRef), and SCEVAA. Usually BasicAA is
      preserved when needed because it (like DominatorTree and LoopInfo) is
      marked as a CFG-only pass. I've expanded GlobalsAA into the preserved
      set everywhere we previously were preserving all of AliasAnalysis, and
      I've added SCEVAA in the intersection of that with where we preserve
      SCEV itself.
      
      One significant challenge to all of this is that the CGSCC passes were
      actually using the alias analysis implementations by taking advantage of
      a pretty amazing set of loop holes in the old pass manager's analysis
      management code which allowed analysis groups to slide through in many
      cases. Moving away from analysis groups makes this problem much more
      obvious. To fix it, I've leveraged the flexibility the design of the new
      PM components provides to just directly construct the relevant alias
      analyses for the relevant functions in the IPO passes that need them.
      This is a bit hacky, but should go away with the new pass manager, and
      is already in many ways cleaner than the prior state.
      
      Another significant challenge is that various facilities of the old
      alias analysis infrastructure just don't fit any more. The most
      significant of these is the alias analysis 'counter' pass. That pass
      relied on the ability to snoop on AA queries at different points in the
      analysis group chain. Instead, I'm planning to build printing
      functionality directly into the aggregation layer. I've not included
      that in this patch merely to keep it smaller.
      
      Note that all of this needs a nearly complete rewrite of the AA
      documentation. I'm planning to do that, but I'd like to make sure the
      new design settles, and to flesh out a bit more of what it looks like in
      the new pass manager first.
      
      Differential Revision: http://reviews.llvm.org/D12080
      
      llvm-svn: 247167
      7b560d40
    • Matthias Braun's avatar
      MachineVerifier: Check that SlotIndex MBBIndexList is sorted. · 80595460
      Matthias Braun authored
      This introduces a check that the MBBIndexList is sorted as proposed in
      http://reviews.llvm.org/D12443 but split up into a separate commit.
      
      llvm-svn: 247166
      80595460
Loading