SuccessChanges

Summary

  1. [X86] Improved X86::CMOV to Branch heuristic. Resolved PR33954. This patch contains two more constraints that aim to reduce the noise cases where we convert CMOV into branch for small gain, and end up spending more cycles due to overhead. Differential Revision: https://reviews.llvm.org/D36081
  2. Reuse interception_linux for NetBSD Summary: Part of the code inspired by the original work on libsanitizer in GCC 5.4 by Christos Zoulas. Sponsored by <The NetBSD Foundation> Reviewers: joerg, kcc, vitalybuka, filcab Reviewed By: vitalybuka Subscribers: llvm-commits, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D36321
  3. Define OFF_T as 64-bit integer on NetBSD Summary: All 32 and 64 bit NetBSD platforms define off_t as 64-bit integer. Part of the code inspired by the original work on libsanitizer in GCC 5.4 by Christos Zoulas. Sponsored by <The NetBSD Foundation> Reviewers: joerg, filcab, kcc, vitalybuka Reviewed By: vitalybuka Subscribers: emaste, kubamracek, llvm-commits Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D35553
  4. Darwin's toolchain should be initialized before openmp offloading is processed This fixes an 'openmp-offload.c' test failure introduced by r310263.
  5. [PowerPC] Eliminate compares - add i32 sext/zext handling for SETLE/SETGE Adds handling for SETLE/SETGE comparisons on i32 values. Furthermore, it adds the handling for the special case where RHS == 0. Differential Revision: https://reviews.llvm.org/D34048
  6. Revert r310291, r310300 and r310332 because of test failure on Darwin The commit r310291 introduced the failure. r310332 was a test fix commit and r310300 was a followup commit. I reverted these two to avoid merge conflicts when reverting. The 'openmp-offload.c' test is failing on Darwin because the following run lines: // RUN: touch %t1.o // RUN: touch %t2.o // RUN: %clang -### -no-canonical-prefixes -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -save-temps -no-canonical-prefixes %t1.o %t2.o 2>&1 \ // RUN: | FileCheck -check-prefix=CHK-TWOCUBIN %s trigger the following assertion: Driver.cpp:3418: assert(CachedResults.find(ActionTC) != CachedResults.end() && "Result does not exist??");
  7. [DAGCombiner] Simplify shuffle mask index if the referenced input element is UNDEF Fixes one of the cases in PR34041. Differential Revision: https://reviews.llvm.org/D36393
  8. [globalisel][tablegen] Add support for importing 'imm' operands. Summary: This patch enables the import of rules containing 'imm' operands that do not constrain the acceptable values using predicates. Support for ImmLeaf will arrive in a later patch. Depends on D35681 Reviewers: ab, t.p.northover, qcolombet, rovka, aditya_nandakumar Reviewed By: rovka Subscribers: kristof.beyls, javed.absar, igorb, llvm-commits Differential Revision: https://reviews.llvm.org/D35833
  9. [PM] Fix a likely more critical infloop bug in the CGSCC pass manager. This was just a bad oversight on my part. The code in question should never have worked without this fix. But it turns out, there are relatively few places that involve libfunctions that participate in a single SCC, and unless they do, this happens to not matter. The effect of not having this correct is that each time through this routine, the edge from write_wrapper to write was toggled between a call edge and a ref edge. First time through, it becomes a demoted call edge and is turned into a ref edge. Next time it is a promoted call edge from a ref edge. On, and on it goes forever. I've added the asserts which should have always been here to catch silly mistakes like this in the future as well as a test case that will actually infloop without the fix. The other (much scarier) infinite-inlining issue I think didn't actually occur in practice, and I simply misdiagnosed this minor issue as that much more scary issue. The other issue *is* still a real issue, but I'm somewhat relieved that so far it hasn't happened in real-world code yet...
Revision 310352 by aaboud:
[X86] Improved X86::CMOV to Branch heuristic.
Resolved PR33954.
This patch contains two more constraints that aim to reduce the noise cases where we convert CMOV into branch for small gain, and end up spending more cycles due to overhead.

Differential Revision: https://reviews.llvm.org/D36081
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/X86/X86CmovConversion.cppllvm.src/lib/Target/X86/X86CmovConversion.cpp
The file was added/llvm/trunk/test/CodeGen/X86/pr33954.llllvm.src/test/CodeGen/X86/pr33954.ll
The file was modified/llvm/trunk/test/CodeGen/X86/x86-cmov-converter.llllvm.src/test/CodeGen/X86/x86-cmov-converter.ll
Revision 310351 by kamil:
Reuse interception_linux for NetBSD

Summary:
Part of the code inspired by the original work on libsanitizer in GCC 5.4 by Christos Zoulas.

Sponsored by <The NetBSD Foundation>

Reviewers: joerg, kcc, vitalybuka, filcab

Reviewed By: vitalybuka

Subscribers: llvm-commits, #sanitizers

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D36321
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/lib/interception/interception_linux.cccompiler-rt.src/lib/interception/interception_linux.cc
The file was modified/compiler-rt/trunk/lib/interception/interception_linux.hcompiler-rt.src/lib/interception/interception_linux.h
Revision 310349 by kamil:
Define OFF_T as 64-bit integer on NetBSD

Summary:
All 32 and 64 bit NetBSD platforms define off_t as 64-bit integer.

Part of the code inspired by the original work on libsanitizer in GCC 5.4 by Christos Zoulas.

Sponsored by <The NetBSD Foundation>

Reviewers: joerg, filcab, kcc, vitalybuka

Reviewed By: vitalybuka

Subscribers: emaste, kubamracek, llvm-commits

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D35553
Change TypePath in RepositoryPath in Workspace
The file was modified/compiler-rt/trunk/lib/sanitizer_common/sanitizer_internal_defs.hcompiler-rt.src/lib/sanitizer_common/sanitizer_internal_defs.h
Revision 310347 by arphaman:
Darwin's toolchain should be initialized before openmp offloading
is processed

This fixes an 'openmp-offload.c' test failure introduced by r310263.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Driver/Driver.cppclang.src/lib/Driver/Driver.cpp
Revision 310346 by nemanjai:
[PowerPC] Eliminate compares - add i32 sext/zext handling for SETLE/SETGE

Adds handling for SETLE/SETGE comparisons on i32 values. Furthermore, it adds
the handling for the special case where RHS == 0.

Differential Revision: https://reviews.llvm.org/D34048
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/PowerPC/PPCISelDAGToDAG.cppllvm.src/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
The file was added/llvm/trunk/test/CodeGen/PowerPC/testComparesigesc.llllvm.src/test/CodeGen/PowerPC/testComparesigesc.ll
The file was added/llvm/trunk/test/CodeGen/PowerPC/testComparesigesi.llllvm.src/test/CodeGen/PowerPC/testComparesigesi.ll
The file was added/llvm/trunk/test/CodeGen/PowerPC/testComparesigess.llllvm.src/test/CodeGen/PowerPC/testComparesigess.ll
The file was added/llvm/trunk/test/CodeGen/PowerPC/testComparesilesc.llllvm.src/test/CodeGen/PowerPC/testComparesilesc.ll
The file was added/llvm/trunk/test/CodeGen/PowerPC/testComparesilesi.llllvm.src/test/CodeGen/PowerPC/testComparesilesi.ll
The file was added/llvm/trunk/test/CodeGen/PowerPC/testComparesiless.llllvm.src/test/CodeGen/PowerPC/testComparesiless.ll
The file was added/llvm/trunk/test/CodeGen/PowerPC/testComparesllgesc.llllvm.src/test/CodeGen/PowerPC/testComparesllgesc.ll
The file was added/llvm/trunk/test/CodeGen/PowerPC/testComparesllgesi.llllvm.src/test/CodeGen/PowerPC/testComparesllgesi.ll
The file was added/llvm/trunk/test/CodeGen/PowerPC/testComparesllgess.llllvm.src/test/CodeGen/PowerPC/testComparesllgess.ll
The file was added/llvm/trunk/test/CodeGen/PowerPC/testCompareslllesc.llllvm.src/test/CodeGen/PowerPC/testCompareslllesc.ll
The file was added/llvm/trunk/test/CodeGen/PowerPC/testCompareslllesi.llllvm.src/test/CodeGen/PowerPC/testCompareslllesi.ll
The file was added/llvm/trunk/test/CodeGen/PowerPC/testComparesllless.llllvm.src/test/CodeGen/PowerPC/testComparesllless.ll
Revision 310345 by arphaman:
Revert r310291, r310300 and r310332 because of test failure on Darwin

The commit r310291 introduced the failure. r310332 was a test fix commit and
r310300 was a followup commit. I reverted these two to avoid merge conflicts
when reverting.

The 'openmp-offload.c' test is failing on Darwin because the following
run lines:
// RUN:   touch %t1.o
// RUN:   touch %t2.o
// RUN:   %clang -### -no-canonical-prefixes -fopenmp=libomp -fopenmp-targets=nvptx64-nvidia-cuda -save-temps -no-canonical-prefixes %t1.o %t2.o 2>&1 \
// RUN:   | FileCheck -check-prefix=CHK-TWOCUBIN %s

trigger the following assertion:

Driver.cpp:3418:
    assert(CachedResults.find(ActionTC) != CachedResults.end() &&
           "Result does not exist??");
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Driver/Driver.cppclang.src/lib/Driver/Driver.cpp
The file was modified/cfe/trunk/lib/Driver/ToolChains/Clang.cppclang.src/lib/Driver/ToolChains/Clang.cpp
The file was modified/cfe/trunk/lib/Driver/ToolChains/CommonArgs.cppclang.src/lib/Driver/ToolChains/CommonArgs.cpp
The file was modified/cfe/trunk/lib/Driver/ToolChains/CommonArgs.hclang.src/lib/Driver/ToolChains/CommonArgs.h
The file was modified/cfe/trunk/lib/Driver/ToolChains/Cuda.cppclang.src/lib/Driver/ToolChains/Cuda.cpp
The file was modified/cfe/trunk/lib/Driver/ToolChains/Cuda.hclang.src/lib/Driver/ToolChains/Cuda.h
The file was modified/cfe/trunk/lib/Driver/ToolChains/Gnu.cppclang.src/lib/Driver/ToolChains/Gnu.cpp
The file was modified/cfe/trunk/test/Driver/openmp-offload.cclang.src/test/Driver/openmp-offload.c
Revision 310344 by rksimon:
[DAGCombiner] Simplify shuffle mask index if the referenced input element is UNDEF

Fixes one of the cases in PR34041.

Differential Revision: https://reviews.llvm.org/D36393
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cppllvm.src/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
The file was modified/llvm/trunk/test/CodeGen/X86/avx-vbroadcast.llllvm.src/test/CodeGen/X86/avx-vbroadcast.ll
Revision 310343 by dsanders:
[globalisel][tablegen] Add support for importing 'imm' operands.

Summary:
This patch enables the import of rules containing 'imm' operands that do not
constrain the acceptable values using predicates. Support for ImmLeaf will
arrive in a later patch.

Depends on D35681

Reviewers: ab, t.p.northover, qcolombet, rovka, aditya_nandakumar

Reviewed By: rovka

Subscribers: kristof.beyls, javed.absar, igorb, llvm-commits

Differential Revision: https://reviews.llvm.org/D35833
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/GlobalISel/InstructionSelector.hllvm.src/include/llvm/CodeGen/GlobalISel/InstructionSelector.h
The file was modified/llvm/trunk/include/llvm/CodeGen/GlobalISel/InstructionSelectorImpl.hllvm.src/include/llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h
The file was modified/llvm/trunk/include/llvm/Target/GlobalISel/SelectionDAGCompat.tdllvm.src/include/llvm/Target/GlobalISel/SelectionDAGCompat.td
The file was modified/llvm/trunk/lib/Target/AArch64/AArch64InstructionSelector.cppllvm.src/lib/Target/AArch64/AArch64InstructionSelector.cpp
The file was added/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-imm.mirllvm.src/test/CodeGen/AArch64/GlobalISel/select-imm.mir
The file was modified/llvm/trunk/test/CodeGen/X86/GlobalISel/select-inc.mirllvm.src/test/CodeGen/X86/GlobalISel/select-inc.mir
The file was modified/llvm/trunk/test/TableGen/GlobalISelEmitter.tdllvm.src/test/TableGen/GlobalISelEmitter.td
The file was modified/llvm/trunk/utils/TableGen/GlobalISelEmitter.cppllvm.src/utils/TableGen/GlobalISelEmitter.cpp
Revision 310342 by chandlerc:
[PM] Fix a likely more critical infloop bug in the CGSCC pass manager.

This was just a bad oversight on my part. The code in question should
never have worked without this fix. But it turns out, there are
relatively few places that involve libfunctions that participate in
a single SCC, and unless they do, this happens to not matter.

The effect of not having this correct is that each time through this
routine, the edge from write_wrapper to write was toggled between a call
edge and a ref edge. First time through, it becomes a demoted call edge
and is turned into a ref edge. Next time it is a promoted call edge from
a ref edge. On, and on it goes forever.

I've added the asserts which should have always been here to catch silly
mistakes like this in the future as well as a test case that will
actually infloop without the fix.

The other (much scarier) infinite-inlining issue I think didn't actually
occur in practice, and I simply misdiagnosed this minor issue as that
much more scary issue. The other issue *is* still a real issue, but I'm
somewhat relieved that so far it hasn't happened in real-world code
yet...
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Analysis/CGSCCPassManager.cppllvm.src/lib/Analysis/CGSCCPassManager.cpp
The file was modified/llvm/trunk/test/Other/cgscc-libcall-update.llllvm.src/test/Other/cgscc-libcall-update.ll