AbortedChanges

Summary

  1. Merging r310498: ------------------------------------------------------------------------ r310498 | guyblank | 2017-08-09 10:21:01 -0700 (Wed, 09 Aug 2017) | 9 lines [X86][AVX512] Choose correct registers in vpbroadcastb/w Fixes the vpbroadcastb/w instructions which use GPRs as source operands, to use the correct registers. The full GPR should be used, and not the subregister, as it happens before the patch. Fixes pr33795 Differential Revision: https://reviews.llvm.org/D36479 ------------------------------------------------------------------------
  2. Merging r309936: ------------------------------------------------------------------------ r309936 | chapuni | 2017-08-03 06:30:43 -0700 (Thu, 03 Aug 2017) | 1 line ClangdTests: Try to unbreak the case CLANG_DEFAULT_CXX_STDLIB=libc++. ------------------------------------------------------------------------
  3. Merging r310979: ------------------------------------------------------------------------ r310979 | qcolombet | 2017-08-15 17:17:05 -0700 (Tue, 15 Aug 2017) | 38 lines [VirtRegRewriter] Properly model the register liveness on undef subreg definition Undef subreg definition means that the content of the super register doesn't matter at this point. While that's true for virtual registers, this may not hold when replacing them with actual physical registers. Indeed, some part of the physical register may be coalesced with the related virtual register and thus, the values for those parts matter and must be live. The fix consists in checking whether or not subregs of the physical register being assigned to an undef subreg definition are live through that def and insert an implicit use if they are. Doing so, will keep them alive until that point like they should be. E.g., let vreg14 being assigned to R0_R1 then %vreg14:gsub_0<def,read-undef> = COPY %R0 ; <-- R1 is still live here %vreg14:gsub_1<def> = COPY %R1 Before this changes, the rewriter would change the code into: %R0<def> = KILL %R0, %R0_R1<imp-def> ; <-- this tells R1 is redefined %R1<def> = KILL %R1, %R0_R1<imp-def>, %R0_R1<imp-use> ; this value of this R1 ; is believed to come ; from the previous ; instruction Because of this invalid liveness, later pass could make wrong choices and in particular clobber live register as it happened with the register scavenger in llvm.org/PR34107 Now we would generate: %R0<def> = KILL %R0, %R0_R1<imp-def>, %R0_R1<imp-use> ; This tells R1 needs to ; reach this point %R1<def> = KILL %R1, %R0_R1<imp-def>, %R0_R1<imp-use> The bug has been here forever, it got exposed recently because the register scavenger got smarter. Fixes llvm.org/PR34107 ------------------------------------------------------------------------
  4. Merging r310906: ------------------------------------------------------------------------ r310906 | marsupial | 2017-08-14 19:25:36 -0700 (Mon, 14 Aug 2017) | 12 lines Propagate error in LazyEmittingLayer::removeModule. Summary: Besides being the better thing to do, not doing so will triggers an assert with LLVM_ENABLE_ABI_BREAKING_CHECKS. Reviewers: lhames Reviewed By: lhames Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D36700 ------------------------------------------------------------------------
Revision 311110 by hans:
Merging r310498:
------------------------------------------------------------------------
r310498 | guyblank | 2017-08-09 10:21:01 -0700 (Wed, 09 Aug 2017) | 9 lines

[X86][AVX512] Choose correct registers in vpbroadcastb/w

Fixes the vpbroadcastb/w instructions which use GPRs as source operands, to use the correct registers.
The full GPR should be used, and not the subregister, as it happens before the patch.

Fixes pr33795

Differential Revision:
https://reviews.llvm.org/D36479
------------------------------------------------------------------------
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/branches/release_50llvm.src
The file was modified/llvm/branches/release_50/lib/Target/X86/X86InstrAVX512.tdllvm.src/lib/Target/X86/X86InstrAVX512.td
The file was modified/llvm/branches/release_50/test/CodeGen/X86/avx512bw-intrinsics.llllvm.src/test/CodeGen/X86/avx512bw-intrinsics.ll
The file was modified/llvm/branches/release_50/test/CodeGen/X86/avx512bwvl-intrinsics.llllvm.src/test/CodeGen/X86/avx512bwvl-intrinsics.ll
The file was modified/llvm/branches/release_50/test/CodeGen/X86/vector-shuffle-128-v16.llllvm.src/test/CodeGen/X86/vector-shuffle-128-v16.ll
The file was modified/llvm/branches/release_50/test/CodeGen/X86/vector-shuffle-128-v8.llllvm.src/test/CodeGen/X86/vector-shuffle-128-v8.ll
The file was modified/llvm/branches/release_50/test/CodeGen/X86/vector-shuffle-256-v16.llllvm.src/test/CodeGen/X86/vector-shuffle-256-v16.ll
The file was modified/llvm/branches/release_50/test/CodeGen/X86/vector-shuffle-256-v32.llllvm.src/test/CodeGen/X86/vector-shuffle-256-v32.ll
The file was modified/llvm/branches/release_50/test/CodeGen/X86/vector-shuffle-512-v32.llllvm.src/test/CodeGen/X86/vector-shuffle-512-v32.ll
The file was modified/llvm/branches/release_50/test/CodeGen/X86/vector-shuffle-512-v64.llllvm.src/test/CodeGen/X86/vector-shuffle-512-v64.ll
Revision 311109 by hans:
Merging r309936:
------------------------------------------------------------------------
r309936 | chapuni | 2017-08-03 06:30:43 -0700 (Thu, 03 Aug 2017) | 1 line

ClangdTests: Try to unbreak the case CLANG_DEFAULT_CXX_STDLIB=libc++.
------------------------------------------------------------------------
Change TypePath in RepositoryPath in Workspace
The file was modified/clang-tools-extra/branches/release_50clang-tools-extra.src
The file was modified/clang-tools-extra/branches/release_50/unittests/clangd/ClangdTests.cppclang-tools-extra.src/unittests/clangd/ClangdTests.cpp
Revision 311108 by hans:
Merging r310979:
------------------------------------------------------------------------
r310979 | qcolombet | 2017-08-15 17:17:05 -0700 (Tue, 15 Aug 2017) | 38 lines

[VirtRegRewriter] Properly model the register liveness on undef subreg definition

Undef subreg definition means that the content of the super register
doesn't matter at this point. While that's true for virtual registers,
this may not hold when replacing them with actual physical registers.
Indeed, some part of the physical register may be coalesced with the
related virtual register and thus, the values for those parts matter and
must be live.

The fix consists in checking whether or not subregs of the physical register
being assigned to an undef subreg definition are live through that def and
insert an implicit use if they are. Doing so, will keep them alive until
that point like they should be.

E.g., let vreg14 being assigned to R0_R1 then
%vreg14:gsub_0<def,read-undef> = COPY %R0 ; <-- R1 is still live here
%vreg14:gsub_1<def> = COPY %R1

Before this changes, the rewriter would change the code into:
%R0<def> = KILL %R0, %R0_R1<imp-def> ; <-- this tells R1 is redefined
%R1<def> = KILL %R1, %R0_R1<imp-def>, %R0_R1<imp-use> ; this value of this R1
                                                      ; is believed to come
                                                      ; from the previous
                                                      ; instruction

Because of this invalid liveness, later pass could make wrong choices and in
particular clobber live register as it happened with the register scavenger in
llvm.org/PR34107

Now we would generate:
%R0<def> = KILL %R0, %R0_R1<imp-def>, %R0_R1<imp-use> ; This tells R1 needs to
                                                      ; reach this point
%R1<def> = KILL %R1, %R0_R1<imp-def>, %R0_R1<imp-use>

The bug has been here forever, it got exposed recently because the register
scavenger got smarter.

Fixes llvm.org/PR34107
------------------------------------------------------------------------
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/branches/release_50llvm.src
The file was modified/llvm/branches/release_50/lib/CodeGen/VirtRegMap.cppllvm.src/lib/CodeGen/VirtRegMap.cpp
The file was added/llvm/branches/release_50/test/CodeGen/ARM/virtregrewriter-subregliveness.mirllvm.src/test/CodeGen/ARM/virtregrewriter-subregliveness.mir
Revision 311107 by hans:
Merging r310906:
------------------------------------------------------------------------
r310906 | marsupial | 2017-08-14 19:25:36 -0700 (Mon, 14 Aug 2017) | 12 lines

Propagate error in LazyEmittingLayer::removeModule.

Summary:
Besides being the better thing to do, not doing so will triggers an assert with LLVM_ENABLE_ABI_BREAKING_CHECKS.

Reviewers: lhames

Reviewed By: lhames

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D36700
------------------------------------------------------------------------
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/branches/release_50llvm.src
The file was modified/llvm/branches/release_50/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.hllvm.src/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h