SuccessChanges

Summary

  1. [SelectionDAG] Avoid repeated calls to getNumOperands in for loop. NFCI.
  2. Make new PM honor -fdebug-info-for-profiling (clang side) Summary: The new PM needs to invoke add-discriminator pass when building with -fdebug-info-for-profiling. Reviewers: chandlerc, davidxl Reviewed By: chandlerc Subscribers: sanjoy, cfe-commits Differential Revision: https://reviews.llvm.org/D35746
  3. Fix assert from r309278
  4. remove redundant check
  5. [Polly bot] Add -polly-enable-optree -polly-enable-simplify to before-vectorizer buildbots. This is intended to become the new default configuration. Make the buildbots test it.
  6. ThinLTO: Don't import aliases of any kind (even linkonce_odr) Summary: Until a more advanced version of importing can be implemented for aliases (one that imports an alias as an available_externally definition of the aliasee), skip the narrow subset of cases that was possible but came at a cost: aliases of linkonce_odr functions could be imported because the linkonce_odr function could be safely duplicated from the source module. This came/comes at the cost of not being able to 'home' imported linkonce functions (they had to be emitted linkonce_odr in all the destination modules (even if they weren't used by an alias) rather than as available_externally - causing extra object size). Tangentially, this also was the only reason ThinLTO would emit multiple CUs in to the resulting DWARF - which happens to be a problem for Fission (there's a fix for this in GDB but not released yet, etc). (actually it's not the only reason - but I'm sending a patch to fix the other reason shortly) There's no reason to believe this particularly narrow alias importing was especially/meaningfully important, only that it was /possible/ to implement in this way. When a more general solution is done, it should still satisfy the DWARF concerns above, since the import will still be available_externally, and thus not create extra CUs. Since now all aliases are treated the same, I removed/simplified some test cases since they were testing corner cases where there are no longer any corners. Reviewers: tejohnson, mehdi_amini Differential Revision: https://reviews.llvm.org/D35875
  7. [SelectionDAG] Tidyup mask creation. NFCI. Assign all concat elements to UNDEF and then just replace the first element, instead of copying everything individually.
  8. [clang-diff] Rename, NFC
  9. Add an X86-64 AVX2 LNT perf builder. This builder should run the llvm test-suite in benchmarking mode and submit results to http://lnt.llvm.org Differential revision: https://reviews.llvm.org/D35939
  10. [ARM] Mark labels in skipAlignedDPRCS2Spills as fallthrough (NFC). The comment at the top of the switch statement indicates that the fall-through behavior is intentional. By using LLVM_FALLTHROUGH, -Wimplicit-fallthrough are silenced, which is enabled by default in GCC 7.
  11. [OPENMP] Codegen for 'in_reduction' clause. Added codegen for task-based directive with in_reduction clause. ``` <body> ``` The next code is emitted: ``` void *td; ... td = call i8* @__kmpc_task_reduction_init(); ... <type> *priv = (<type> *)call i8* @__kmpc_task_reduction_get_th_data(i32 GTID, i8* td, i8* <orig>) ```
  12. Added cost of ZEROALL and ZEROUPPER instrs in btver2 cpu. Differential Revision https://reviews.llvm.org/D35834
  13. [InlineCost, NFC] Change CallAnalyzer::isGEPFree to use TTI::getUserCost instead of TTI::getGEPCost Currently CallAnalyzer::isGEPFree uses TTI::getGEPCost to check if GEP is free. TTI::getGEPCost cannot handle cases when GEPs participate in Def-Use dependencies (see https://reviews.llvm.org/D31186 for example). There is TTI::getUserCost which can calculate the cost more accurately by taking dependencies into account. Differential Revision: https://reviews.llvm.org/D33685
  14. [globalisel][tablegen] Ensure MatchTable's are compile-time constants with constexpr. NFC. This should prevent any re-occurence of the problem where the table was initialized at run-time.
  15. [X86][AVX] Regenerate shuffle tests with broadcast comments.
Revision 309283 by rksimon:
[SelectionDAG] Avoid repeated calls to getNumOperands in for loop. NFCI.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cppllvm.src/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
Revision 309282 by dehao:
Make new PM honor -fdebug-info-for-profiling (clang side)

Summary: The new PM needs to invoke add-discriminator pass when building with -fdebug-info-for-profiling.

Reviewers: chandlerc, davidxl

Reviewed By: chandlerc

Subscribers: sanjoy, cfe-commits

Differential Revision: https://reviews.llvm.org/D35746
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/CodeGen/BackendUtil.cppclang.src/lib/CodeGen/BackendUtil.cpp
Revision 309281 by dblaikie:
Fix assert from r309278
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Utils/FunctionImportUtils.cppllvm.src/lib/Transforms/Utils/FunctionImportUtils.cpp
Revision 309280 by Adrian Prantl:
remove redundant check
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cppllvm.src/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
Revision 309279 by meinersbur:
[Polly bot] Add -polly-enable-optree -polly-enable-simplify to before-vectorizer buildbots.

This is intended to become the new default configuration.
Make the buildbots test it.
Change TypePath in RepositoryPath in Workspace
The file was modified/zorg/trunk/buildbot/osuosl/master/config/builders.pyzorg/buildbot/osuosl/master/config/builders.py
Revision 309278 by dblaikie:
ThinLTO: Don't import aliases of any kind (even linkonce_odr)

Summary:
Until a more advanced version of importing can be implemented for
aliases (one that imports an alias as an available_externally definition
of the aliasee), skip the narrow subset of cases that was possible but
came at a cost: aliases of linkonce_odr functions could be imported
because the linkonce_odr function could be safely duplicated from the
source module. This came/comes at the cost of not being able to 'home'
imported linkonce functions (they had to be emitted linkonce_odr in all
the destination modules (even if they weren't used by an alias) rather
than as available_externally - causing extra object size).

Tangentially, this also was the only reason ThinLTO would emit multiple
CUs in to the resulting DWARF - which happens to be a problem for
Fission (there's a fix for this in GDB but not released yet, etc).
(actually it's not the only reason - but I'm sending a patch to fix the
other reason shortly)

There's no reason to believe this particularly narrow alias importing
was especially/meaningfully important, only that it was /possible/ to
implement in this way. When a more general solution is done, it should
still satisfy the DWARF concerns above, since the import will still be
available_externally, and thus not create extra CUs.

Since now all aliases are treated the same, I removed/simplified some
test cases since they were testing corner cases where there are no
longer any corners.

Reviewers: tejohnson, mehdi_amini

Differential Revision: https://reviews.llvm.org/D35875
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/IPO/FunctionImport.cppllvm.src/lib/Transforms/IPO/FunctionImport.cpp
The file was modified/llvm/trunk/lib/Transforms/Utils/FunctionImportUtils.cppllvm.src/lib/Transforms/Utils/FunctionImportUtils.cpp
The file was modified/llvm/trunk/test/Linker/funcimport.llllvm.src/test/Linker/funcimport.ll
The file was modified/llvm/trunk/test/ThinLTO/X86/alias_import.llllvm.src/test/ThinLTO/X86/alias_import.ll
The file was removed/llvm/trunk/test/ThinLTO/X86/select_right_alias_definition.llllvm.src/test/ThinLTO/X86/select_right_alias_definition.ll
The file was modified/llvm/trunk/test/Transforms/FunctionImport/funcimport.llllvm.src/test/Transforms/FunctionImport/funcimport.ll
Revision 309277 by rksimon:
[SelectionDAG] Tidyup mask creation. NFCI.

Assign all concat elements to UNDEF and then just replace the first element, instead of copying everything individually.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cppllvm.src/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
Revision 309276 by krobelus:
[clang-diff] Rename, NFC
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/tools/clang-diff/ClangDiff.cppclang.src/tools/clang-diff/ClangDiff.cpp
Revision 309275 by eladcohen:
Add an X86-64 AVX2 LNT perf builder.
This builder should run the llvm test-suite in benchmarking mode
and submit results to http://lnt.llvm.org

Differential revision: https://reviews.llvm.org/D35939
Change TypePath in RepositoryPath in Workspace
The file was modified/zorg/trunk/buildbot/osuosl/master/config/builders.pyzorg/buildbot/osuosl/master/config/builders.py
Revision 309272 by fhahn:
[ARM] Mark labels in skipAlignedDPRCS2Spills as fallthrough (NFC).

The comment at the top of the switch statement indicates that the
fall-through behavior is intentional. By using LLVM_FALLTHROUGH,
-Wimplicit-fallthrough are silenced, which is enabled by default in GCC
7.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/ARM/ARMFrameLowering.cppllvm.src/lib/Target/ARM/ARMFrameLowering.cpp
Revision 309270 by abataev:
[OPENMP] Codegen for 'in_reduction' clause.

Added codegen for task-based directive with in_reduction clause.
```
<body>
```
The next code is emitted:
```
void *td;
...
td = call i8* @__kmpc_task_reduction_init();
...
<type> *priv = (<type> *)call i8* @__kmpc_task_reduction_get_th_data(i32
GTID, i8* td, i8* <orig>)
```
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/AST/OpenMPClause.hclang.src/include/clang/AST/OpenMPClause.h
The file was modified/cfe/trunk/include/clang/AST/RecursiveASTVisitor.hclang.src/include/clang/AST/RecursiveASTVisitor.h
The file was modified/cfe/trunk/lib/AST/OpenMPClause.cppclang.src/lib/AST/OpenMPClause.cpp
The file was modified/cfe/trunk/lib/AST/StmtProfile.cppclang.src/lib/AST/StmtProfile.cpp
The file was modified/cfe/trunk/lib/CodeGen/CGStmtOpenMP.cppclang.src/lib/CodeGen/CGStmtOpenMP.cpp
The file was modified/cfe/trunk/lib/Sema/SemaOpenMP.cppclang.src/lib/Sema/SemaOpenMP.cpp
The file was modified/cfe/trunk/lib/Serialization/ASTReaderStmt.cppclang.src/lib/Serialization/ASTReaderStmt.cpp
The file was modified/cfe/trunk/lib/Serialization/ASTWriterStmt.cppclang.src/lib/Serialization/ASTWriterStmt.cpp
The file was added/cfe/trunk/test/OpenMP/task_in_reduction_codegen.cppclang.src/test/OpenMP/task_in_reduction_codegen.cpp
The file was added/cfe/trunk/test/OpenMP/taskloop_in_reduction_codegen.cppclang.src/test/OpenMP/taskloop_in_reduction_codegen.cpp
The file was added/cfe/trunk/test/OpenMP/taskloop_simd_in_reduction_codegen.cppclang.src/test/OpenMP/taskloop_simd_in_reduction_codegen.cpp
The file was modified/cfe/trunk/tools/libclang/CIndex.cppclang.src/tools/libclang/CIndex.cpp
Revision 309269 by avt77:
Added cost of ZEROALL and ZEROUPPER instrs in btver2 cpu.
Differential Revision https://reviews.llvm.org/D35834
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86ScheduleBtVer2.tdllvm.src/lib/Target/X86/X86ScheduleBtVer2.td
The file was modified/llvm/trunk/test/CodeGen/X86/avx-schedule.llllvm.src/test/CodeGen/X86/avx-schedule.ll
Revision 309268 by eastig:
[InlineCost, NFC] Change CallAnalyzer::isGEPFree to use TTI::getUserCost instead of TTI::getGEPCost

Currently CallAnalyzer::isGEPFree uses TTI::getGEPCost to check if GEP is free.
TTI::getGEPCost cannot handle cases when GEPs participate in Def-Use dependencies
(see https://reviews.llvm.org/D31186 for example).
There is TTI::getUserCost which can calculate the cost more accurately by
taking dependencies into account.

Differential Revision: https://reviews.llvm.org/D33685
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Analysis/InlineCost.cppllvm.src/lib/Analysis/InlineCost.cpp
Revision 309267 by dsanders:
[globalisel][tablegen] Ensure MatchTable's are compile-time constants with constexpr. NFC.

This should prevent any re-occurence of the problem where the table was
initialized at run-time.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/utils/TableGen/GlobalISelEmitter.cppllvm.src/utils/TableGen/GlobalISelEmitter.cpp
Revision 309266 by rksimon:
[X86][AVX] Regenerate shuffle tests with broadcast comments.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/test/CodeGen/X86/avx-logic.llllvm.src/test/CodeGen/X86/avx-logic.ll