SuccessChanges

Summary

  1. [Core] Make parallel algorithms match C++ Parallelism TS. Differential Revision: https://reviews.llvm.org/D33016
  2. [CodeGen] Don't require AA in TwoAddress at -O0. This is a follow-up to r302611, which moved an -O0 computation of DT from SDAGISel to TwoAddress. Don't use it here either, and avoid computing it completely. The only use was forwarding the analysis as an optional argument to utility functions. Differential Revision: https://reviews.llvm.org/D32766
  3. [CodeGen] Don't require AA in SDAGISel at -O0. Before r247167, the pass manager builder controlled which AA implementations were used, exporting them all in the AliasAnalysis analysis group. Now, AAResultsWrapperPass always uses BasicAA, but still uses other AA implementations if made available in the pass pipeline. But regardless, SDAGISel is required at O0, and really doesn't need to be doing fancy optimizations based on useful AA results. Don't require AA at CodeGenOpt::None, and only use it otherwise. This does have a functional impact (and one testcase is pessimized because we can't reuse a load). But I think that's desirable no matter what. Note that this alone doesn't result in less DT computations: TwoAddress was previously able to reuse the DT we computed for SDAG. That will be fixed separately. Differential Revision: https://reviews.llvm.org/D32766
  4. [CodeGen] Compute DT/LI lazily in SafeStackLegacyPass. NFC. We currently require SCEV, which requires DT/LI. Those are expensive to compute, but the pass only runs for functions that have the safestack attribute. Compute DT/LI to build SCEV lazily, only when the pass is actually going to transform the function. Differential Revision: https://reviews.llvm.org/D31302
  5. [CodeGen] Split SafeStack into a LegacyPass and a utility. NFC. This lets the pass focus on gathering the required analyzes, and the utility class focus on the transformation. Differential Revision: https://reviews.llvm.org/D31303
  6. [CodeGen] Add an -O0 backend pipeline test. NFC. This should hopefully makes changes to the O0 pipeline obvious; it's easy to require expensive passes, and this helps make informed decisions. Case in point: in the few weeks separating the time when I initially wrote this patch to the time when I committed, the test regressed as r302103 added another use of DT!
  7. Improve how LIT reports the added environment variables
Revision 302613 by zturner:
[Core] Make parallel algorithms match C++ Parallelism TS.

Differential Revision: https://reviews.llvm.org/D33016
Change TypePath in RepositoryPath in Workspace
The file was modified/lld/trunk/COFF/ICF.cpp (diff)llvm-revision.src/lld/trunk/COFF/ICF.cpp
The file was modified/lld/trunk/COFF/MapFile.cpp (diff)llvm-revision.src/lld/trunk/COFF/MapFile.cpp
The file was modified/lld/trunk/COFF/Writer.cpp (diff)llvm-revision.src/lld/trunk/COFF/Writer.cpp
The file was modified/lld/trunk/ELF/Threads.h (diff)llvm-revision.src/lld/trunk/ELF/Threads.h
The file was modified/lld/trunk/include/lld/Core/Parallel.h (diff)llvm-revision.src/lld/trunk/include/lld/Core/Parallel.h
The file was modified/lld/trunk/lib/ReaderWriter/MachO/LayoutPass.cpp (diff)llvm-revision.src/lld/trunk/lib/ReaderWriter/MachO/LayoutPass.cpp
The file was modified/lld/trunk/unittests/CoreTests/ParallelTest.cpp (diff)llvm-revision.src/lld/trunk/unittests/CoreTests/ParallelTest.cpp
Revision 302612 by Ahmed Bougacha:
[CodeGen] Don't require AA in TwoAddress at -O0.

This is a follow-up to r302611, which moved an -O0 computation of DT
from SDAGISel to TwoAddress.

Don't use it here either, and avoid computing it completely.  The only
use was forwarding the analysis as an optional argument to utility
functions.

Differential Revision: https://reviews.llvm.org/D32766
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp (diff)llvm-revision.src/llvm/trunk/lib/CodeGen/TwoAddressInstructionPass.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/O0-pipeline.ll (diff)llvm-revision.src/llvm/trunk/test/CodeGen/X86/O0-pipeline.ll
Revision 302611 by Ahmed Bougacha:
[CodeGen] Don't require AA in SDAGISel at -O0.

Before r247167, the pass manager builder controlled which AA
implementations were used, exporting them all in the AliasAnalysis
analysis group.

Now, AAResultsWrapperPass always uses BasicAA, but still uses other AA
implementations if made available in the pass pipeline.

But regardless, SDAGISel is required at O0, and really doesn't need to
be doing fancy optimizations based on useful AA results.

Don't require AA at CodeGenOpt::None, and only use it otherwise.

This does have a functional impact (and one testcase is pessimized
because we can't reuse a load).  But I think that's desirable no matter
what.

Note that this alone doesn't result in less DT computations: TwoAddress
was previously able to reuse the DT we computed for SDAG.  That will be
fixed separately.

Differential Revision: https://reviews.llvm.org/D32766
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/SelectionDAG.h (diff)llvm-revision.src/llvm/trunk/include/llvm/CodeGen/SelectionDAG.h
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (diff)llvm-revision.src/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp (diff)llvm-revision.src/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h (diff)llvm-revision.src/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp (diff)llvm-revision.src/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/O0-pipeline.ll (diff)llvm-revision.src/llvm/trunk/test/CodeGen/X86/O0-pipeline.ll
The file was modified/llvm/trunk/test/CodeGen/X86/pr32284.ll (diff)llvm-revision.src/llvm/trunk/test/CodeGen/X86/pr32284.ll
Revision 302610 by Ahmed Bougacha:
[CodeGen] Compute DT/LI lazily in SafeStackLegacyPass. NFC.

We currently require SCEV, which requires DT/LI.  Those are expensive to
compute, but the pass only runs for functions that have the safestack
attribute.

Compute DT/LI to build SCEV lazily, only when the pass is actually going
to transform the function.

Differential Revision: https://reviews.llvm.org/D31302
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SafeStack.cpp (diff)llvm-revision.src/llvm/trunk/lib/CodeGen/SafeStack.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/O0-pipeline.ll (diff)llvm-revision.src/llvm/trunk/test/CodeGen/X86/O0-pipeline.ll
Revision 302609 by Ahmed Bougacha:
[CodeGen] Split SafeStack into a LegacyPass and a utility. NFC.

This lets the pass focus on gathering the required analyzes, and the
utility class focus on the transformation.

Differential Revision: https://reviews.llvm.org/D31303
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/InitializePasses.h (diff)llvm-revision.src/llvm/trunk/include/llvm/InitializePasses.h
The file was modified/llvm/trunk/lib/CodeGen/CodeGen.cpp (diff)llvm-revision.src/llvm/trunk/lib/CodeGen/CodeGen.cpp
The file was modified/llvm/trunk/lib/CodeGen/SafeStack.cpp (diff)llvm-revision.src/llvm/trunk/lib/CodeGen/SafeStack.cpp
The file was modified/llvm/trunk/tools/opt/opt.cpp (diff)llvm-revision.src/llvm/trunk/tools/opt/opt.cpp
Revision 302608 by Ahmed Bougacha:
[CodeGen] Add an -O0 backend pipeline test. NFC.

This should hopefully makes changes to the O0 pipeline obvious; it's
easy to require expensive passes, and this helps make informed
decisions.

Case in point: in the few weeks separating the time when I initially
wrote this patch to the time when I committed, the test regressed as
r302103 added another use of DT!
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/CodeGen/X86/O0-pipeline.llllvm-revision.src/llvm/trunk/test/CodeGen/X86/O0-pipeline.ll
Revision 302607 by ericwf:
Improve how LIT reports the added environment variables
Change TypePath in RepositoryPath in Workspace
The file was modified/libcxx/trunk/utils/libcxx/test/config.py (diff)llvm-revision.src/libcxx/trunk/utils/libcxx/test/config.py