SuccessChanges

Summary

  1. LoopDistribute: Add testcase where SCEV wants to insert a runtime check. Only the memory based checks were being tested. Prepare for fix in convergent handling.
  2. [GVN] non-functional code movement Summary: Move some code around, in preparation for later fixes to the non-integral addrspace handling (D59661) Patch By Jameson Nash <jameson@juliacomputing.com> Reviewed By: reames, loladiro Differential Revision: https://reviews.llvm.org/D59729
  3. AMDGPU: Force skips around traps
  4. [COFF] Fix /export:foo=bar when bar is a weak alias Summary: When handling exports from the command line or from .def files, the linker does a "fuzzy" string lookup to allow finding mangled symbols. However, when the symbol is re-exported under a new name, the linker has to transfer the decorations from the exported symbol over to the new name. This is implemented by taking the mangled symbol that was found in the object and replacing the original symbol name with the export name. Before this patch, LLD implemented the fuzzy search by adding an undefined symbol with the unmangled name, and then during symbol resolution, checking if similar mangled symbols had been added after the last round of symbol resolution. If so, LLD makes the original symbol a weak alias of the mangled symbol. Later, to get the original symbol name, LLD would look through the weak alias and forward it on to the import library writer, which copies the symbol decorations. This approach doesn't work when bar is itself a weak alias, as is the case in asan. It's especially bad when the aliasee of bar contains the string "bar", consider "bar_default". In this case, we would end up exporting the symbol "foo_default" when we should've exported just "foo". To fix this, don't look through weak aliases to find the mangled name. Save the mangled name earlier during fuzzy symbol lookup. Fixes PR42074 Reviewers: mstorsjo, ruiu Subscribers: thakis, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D62984
Revision 362854 by arsenm:
LoopDistribute: Add testcase where SCEV wants to insert a runtime
check.

Only the memory based checks were being tested. Prepare for fix in
convergent handling.
Change TypePath in RepositoryPath in Workspace
The file was added/llvm/trunk/test/Transforms/LoopDistribute/scev-inserted-runtime-check.lltrunk/test/Transforms/LoopDistribute/scev-inserted-runtime-check.ll
Revision 362853 by kfischer:
[GVN] non-functional code movement

Summary: Move some code around, in preparation for later fixes
to the non-integral addrspace handling (D59661)

Patch By Jameson Nash <jameson@juliacomputing.com>

Reviewed By: reames, loladiro
Differential Revision: https://reviews.llvm.org/D59729
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Transforms/Scalar/GVN.cpptrunk/lib/Transforms/Scalar/GVN.cpp
The file was modified/llvm/trunk/lib/Transforms/Utils/VNCoercion.cpptrunk/lib/Transforms/Utils/VNCoercion.cpp
Revision 362852 by arsenm:
AMDGPU: Force skips around traps
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/lib/Target/AMDGPU/SIInstrInfo.cpptrunk/lib/Target/AMDGPU/SIInstrInfo.cpp
The file was added/llvm/trunk/test/CodeGen/AMDGPU/skip-branch-trap.lltrunk/test/CodeGen/AMDGPU/skip-branch-trap.ll
Revision 362849 by rnk:
[COFF] Fix /export:foo=bar when bar is a weak alias

Summary:
When handling exports from the command line or from .def files, the
linker does a "fuzzy" string lookup to allow finding mangled symbols.
However, when the symbol is re-exported under a new name, the linker has
to transfer the decorations from the exported symbol over to the new
name. This is implemented by taking the mangled symbol that was found in
the object and replacing the original symbol name with the export name.

Before this patch, LLD implemented the fuzzy search by adding an
undefined symbol with the unmangled name, and then during symbol
resolution, checking if similar mangled symbols had been added after the
last round of symbol resolution. If so, LLD makes the original symbol a
weak alias of the mangled symbol. Later, to get the original symbol
name, LLD would look through the weak alias and forward it on to the
import library writer, which copies the symbol decorations. This
approach doesn't work when bar is itself a weak alias, as is the case in
asan. It's especially bad when the aliasee of bar contains the string
"bar", consider "bar_default". In this case, we would end up exporting
the symbol "foo_default" when we should've exported just "foo".

To fix this, don't look through weak aliases to find the mangled name.
Save the mangled name earlier during fuzzy symbol lookup.

Fixes PR42074

Reviewers: mstorsjo, ruiu

Subscribers: thakis, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D62984
Change TypePath in RepositoryPath in Workspace
The file was modified/lld/trunk/COFF/Driver.cppN/A
The file was modified/lld/trunk/COFF/Driver.hN/A
The file was modified/lld/trunk/COFF/DriverUtils.cppN/A
The file was modified/lld/trunk/COFF/SymbolTable.cppN/A
The file was modified/lld/trunk/COFF/SymbolTable.hN/A
The file was added/lld/trunk/test/COFF/export-stdcall.sN/A
The file was added/lld/trunk/test/COFF/export-weak-alias.sN/A
The file was modified/llvm/trunk/include/llvm/Object/COFFImportFile.htrunk/include/llvm/Object/COFFImportFile.h