SuccessChanges

Summary

  1. [NFCI] Always initialize const members of AttributeCommonInfo Some compilers require that const fields of an object must be explicitly initialized by the constructor. I ran into this issue building with clang 3.8 on Ubuntu 16.04.
  2. MachineScheduler: Fix missing dependency with multiple subreg defs If an instruction had multiple subregister defs, and one of them was undef, this would improperly conclude all other lanes are killed. There could still be other defs of those read-undef lanes in other operands. This would improperly remove register uses from CurrentVRegUses, so the visitation of later operands would not find the necessary register dependency. This would also mean this would fail or not depending on how different subregister def operands were ordered. On an undef subregister def, scan the instruction for other subregister defs and avoid killing those. This possibly should be deferring removing anything from CurrentVRegUses until the entire instruction has been processed instead.
Revision 372363 by xiaobai:
[NFCI] Always initialize const members of AttributeCommonInfo

Some compilers require that const fields of an object must be explicitly
initialized by the constructor. I ran into this issue building with
clang 3.8 on Ubuntu 16.04.
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/include/clang/Basic/AttributeCommonInfo.h (diff)clang.src/include/clang/Basic/AttributeCommonInfo.h
Revision 372362 by arsenm:
MachineScheduler: Fix missing dependency with multiple subreg defs

If an instruction had multiple subregister defs, and one of them was
undef, this would improperly conclude all other lanes are
killed. There could still be other defs of those read-undef lanes in
other operands. This would improperly remove register uses from
CurrentVRegUses, so the visitation of later operands would not find
the necessary register dependency. This would also mean this would
fail or not depending on how different subregister def operands were
ordered.

On an undef subregister def, scan the instruction for other
subregister defs and avoid killing those.

This possibly should be deferring removing anything from
CurrentVRegUses until the entire instruction has been processed
instead.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/CodeGen/ScheduleDAGInstrs.cpp (diff)llvm.src/lib/CodeGen/ScheduleDAGInstrs.cpp
The file was added/llvm/trunk/test/CodeGen/AMDGPU/subreg-undef-def-with-other-subreg-defs.mirllvm.src/test/CodeGen/AMDGPU/subreg-undef-def-with-other-subreg-defs.mir