llvm-project/llvm/test
Nirav Dave 4b36957243 In visitSTORE, always use FindBetterChain, rather than only when UseAA is enabled.
Retrying after upstream changes.

   Simplify Consecutive Merge Store Candidate Search

   Now that address aliasing is much less conservative, push through
   simplified store merging search which only checks for parallel stores
   through the chain subgraph. This is cleaner as the separation of
   non-interfering loads/stores from the store-merging logic.

   Whem merging stores, search up the chain through a single load, and
   finds all possible stores by looking down from through a load and a
   TokenFactor to all stores visited. This improves the quality of the
   output SelectionDAG and generally the output CodeGen (with some
   exceptions).

   Additional Minor Changes:

       1. Finishes removing unused AliasLoad code
       2. Unifies the the chain aggregation in the merged stores across
       code paths
       3. Re-add the Store node to the worklist after calling
       SimplifyDemandedBits.
       4. Increase GatherAllAliasesMaxDepth from 6 to 18. That number is
       arbitrary, but seemed sufficient to not cause regressions in
       tests.

   This finishes the change Matt Arsenault started in r246307 and
   jyknight's original patch.

   Many tests required some changes as memory operations are now
   reorderable. Some tests relying on the order were changed to use
   volatile memory operations

   Noteworthy tests:

    CodeGen/AArch64/argument-blocks.ll -
      It's not entirely clear what the test_varargs_stackalign test is
      supposed to be asserting, but the new code looks right.

    CodeGen/AArch64/arm64-memset-inline.lli -
    CodeGen/AArch64/arm64-stur.ll -
    CodeGen/ARM/memset-inline.ll -

      The backend now generates *worse* code due to store merging
      succeeding, as we do do a 16-byte constant-zero store efficiently.

    CodeGen/AArch64/merge-store.ll -
      Improved, but there still seems to be an extraneous vector insert
      from an element to itself?

    CodeGen/PowerPC/ppc64-align-long-double.ll -
      Worse code emitted in this case, due to the improved store->load
      forwarding.

    CodeGen/X86/dag-merge-fast-accesses.ll -
    CodeGen/X86/MergeConsecutiveStores.ll -
    CodeGen/X86/stores-merging.ll -
    CodeGen/Mips/load-store-left-right.ll -
      Restored correct merging of non-aligned stores

    CodeGen/AMDGPU/promote-alloca-stored-pointer-value.ll -
      Improved. Correctly merges buffer_store_dword calls

    CodeGen/AMDGPU/si-triv-disjoint-mem-access.ll -
      Improved. Sidesteps loading a stored value and
      merges two stores

    CodeGen/X86/pr18023.ll -
      This test has been removed, as it was asserting incorrect
      behavior. Non-volatile stores *CAN* be moved past volatile loads,
      and now are.

    CodeGen/X86/vector-idiv.ll -
    CodeGen/X86/vector-lzcnt-128.ll -
      It's basically impossible to tell what these tests are actually
      testing. But, looks like the code got better due to the memory
      operations being recognized as non-aliasing.

    CodeGen/X86/win32-eh.ll -
      Both loads of the securitycookie are now merged.

    CodeGen/AMDGPU/vgpr-spill-emergency-stack-slot-compute.ll -
      This test appears to work but no longer exhibits the spill behavior.

Reviewers: arsenm, hfinkel, tstellarAMD, jyknight, nhaehnle

Subscribers: wdng, nhaehnle, nemanjai, arsenm, weimingz, niravd, RKSimon, aemerson, qcolombet, dsanders, resistor, tstellarAMD, t.p.northover, spatel

Differential Revision: https://reviews.llvm.org/D14834

llvm-svn: 284151
2016-10-13 19:20:16 +00:00
..
Analysis [ValueTracking] Fix crash in GetPointerBaseWithConstantOffset() 2016-10-07 14:23:29 +00:00
Assembler Fix IntegerType::MAX_INT_BITS value 2016-10-04 12:43:46 +00:00
Bindings
Bitcode Teach llvm::StripDebugInfo() about global variable !dbg attachments. 2016-10-10 17:53:33 +00:00
BugPoint Revert "Add -strip-nonlinetable-debuginfo capability" 2016-10-06 18:30:26 +00:00
CodeGen In visitSTORE, always use FindBetterChain, rather than only when UseAA is enabled. 2016-10-13 19:20:16 +00:00
DebugInfo Truncate long names in type records 2016-10-13 17:33:22 +00:00
Demangle Add an c++ itanium demangler to llvm. 2016-09-06 19:16:48 +00:00
Examples
ExecutionEngine [ORC] Clone module flags metadata into the globals module in the 2016-09-04 17:53:30 +00:00
Feature
FileCheck
Instrumentation [InstrProf] Add support for dead_strip+live_support functionality 2016-10-11 21:48:16 +00:00
Integer
JitListener
LTO LTO: Use the correct mangler function in LTOCodeGenerator::applyScopeRestrictions(). 2016-10-12 20:12:19 +00:00
LibDriver
Linker Fix autoupgrade logic for Objective-C class properties module flag 2016-09-16 00:38:18 +00:00
MC [mips] Add IAS support for dvp, evp 2016-10-13 12:12:56 +00:00
Object Next set of additional error checks for invalid Mach-O files for the 2016-10-11 21:04:39 +00:00
ObjectYAML
Other [PM] Port CFGViewer and CFGPrinter to the new Pass Manager 2016-09-15 18:35:27 +00:00
SymbolRewriter
TableGen [TableGen] AsmMatcher: Add AsmVariantName to Instruction class. 2016-09-08 15:50:52 +00:00
ThinLTO/X86 [ThinLTO] Don't link module level assembly when importing 2016-10-12 18:39:29 +00:00
Transforms [safestack] Move X86-targeted tests into the X86 subdirectory. 2016-10-13 17:51:59 +00:00
Unit
Verifier Verifier: Reject any unknown named MD nodes in the llvm.dbg namespace. 2016-10-05 22:15:37 +00:00
YAMLParser
tools Fix test on non-x86 hosts 2016-10-11 16:32:37 +00:00
.clang-format
CMakeLists.txt Add an llvm-opt-report tool to generate basic source-annotated optimization summaries 2016-10-05 22:10:35 +00:00
TestRunner.sh
lit.cfg cmake: Install the OCaml libraries into a more correct path 2016-09-30 18:34:23 +00:00
lit.site.cfg.in