llvm-project/llvm/test/Transforms/CodeGenPrepare
Krzysztof Pszeniczny 2bfe759a8d Fix a use-after-RAUW bug in large GEP splitting
Summary:
Large GEP splitting, introduced in rL332015, uses a `DenseMap<AssertingVH<Value>, ...>`. This causes an assertion to fail (in debug builds) or undefined behaviour to occur (in release builds) when a value is RAUWed.

This manifested itself in the 7zip benchmark from the llvm test suite built on ARM with `-fstrict-vtable-pointers` enabled while RAUWing invariant group launders and splits in CodeGenPrepare.

This patch merges the large offsets of the argument and the result of an invariant.group strip/launder intrinsic before RAUWing.

Reviewers: Prazek, javed.absar, haicheng, efriedma

Reviewed By: Prazek, efriedma

Subscribers: kristof.beyls, hiraditya, llvm-commits

Differential Revision: https://reviews.llvm.org/D51936

llvm-svn: 344802
2018-10-19 19:02:16 +00:00
..
AArch64 Fix a use-after-RAUW bug in large GEP splitting 2018-10-19 19:02:16 +00:00
AMDGPU AMDGPU: Fix tests using old number for constant address space 2018-09-10 02:54:25 +00:00
ARM [CodeGen] Enable tail calls for functions with NonNull attributes. 2018-09-26 10:46:18 +00:00
Mips [CodeGenPrepare] Check that erased sunken address are not reused 2017-11-24 16:45:28 +00:00
NVPTX [BypassSlowDivision] Improve our handling of divisions by constants 2017-12-04 19:21:58 +00:00
X86 [CodeGenPrepare] Set debug loc when widening a switch condition 2018-08-22 01:23:31 +00:00
2008-11-24-RAUW-Self.ll
basic.ll Make llvm.objectsize more conservative with null 2018-07-09 22:21:16 +00:00
bitreverse-hang.ll
builtin-condition.ll
crash-on-large-allocas.ll
dom-tree.ll
gep-unmerging.ll Unmerge GEPs to reduce register pressure on IndirectBr edges. 2017-09-11 17:52:08 +00:00
invariant.group.ll Implement strip.invariant.group 2018-07-02 04:49:30 +00:00
nonintegral.ll
overflow-intrinsics.ll [CodeGenPrepare] Set debug locs when folding a comparison into a uadd.with.overflow 2018-08-22 18:15:03 +00:00
section-samplepgo.ll
section.ll [PGO] Function section hotness prefix should look at all blocks 2017-12-20 17:53:10 +00:00
sink-shift-and-trunc.ll [CodeGenPrepare] Preserve debug locs in OptimizeExtractBits 2018-09-15 04:08:52 +00:00
skip-merging-case-block.ll Revert "[CGP] Merge empty case blocks if no extra moves are added." 2017-10-27 00:35:18 +00:00
split-indirect-loop.ll
statepoint-relocate.ll