HomePhabricator

[BasicAA] Fix handling of invariant group launders

Description

[BasicAA] Fix handling of invariant group launders

Summary:
A recent patch (rL331587) to Capture Tracking taught it that the launder_invariant_group intrinsic captures its argument only by returning it. Unfortunately, BasicAA still considered every call instruction as a possible escape source and hence concluded that the result of a launder_invariant_group call cannot alias any local non-escaping value. This led to bug 37458.

This patch updates the relevant check for escape sources in BasicAA.

Reviewers: Prazek, kuhar, rsmith, hfinkel, sanjoy, xbolva00

Reviewed By: hfinkel, xbolva00

Subscribers: JDevlieghere, hiraditya, llvm-commits

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

Details

Committed
kpszenicznyMay 16 2018, 6:16 AM
Reviewer
hfinkel
Differential Revision
D46900: [BasicAA] Fix handling of invariant group launders
Parents
rL332465: Fix an Index test caused by a clang-format change (r332436).
Branches
Unknown
Tags
Unknown