llvm-project/llvm/test/Analysis/StackSafetyAnalysis
Peter Collingbourne 6f85225ef3 StackLifetime: Remove asserts for multiple lifetime intrinsics.
According to the langref, it is valid to have multiple consecutive
lifetime start or end intrinsics on the same object.

For llvm.lifetime.start:
"If ptr [...] is a stack object that is already alive, it simply
fills all bytes of the object with poison."

For llvm.lifetime.end:
"Calling llvm.lifetime.end on an already dead alloca is no-op."

However, we currently fail an assertion in such cases. I've observed
the assertion failure when the loop vectorization pass duplicates
the intrinsic.

We can conservatively handle these intrinsics by ignoring all but
the first one, which can be implemented by removing the assertions.

Differential Revision: https://reviews.llvm.org/D108337
2021-08-18 18:45:28 -07:00
..
Inputs [NFC][StackSafety] noinline in alias tests 2020-08-08 18:21:52 -07:00
ipa-alias.ll [NPM][StackSafetyAnalysis] Pin uses of -analyze to legacy PM 2020-10-19 21:24:03 -07:00
ipa.ll [NPM][StackSafetyAnalysis] Pin uses of -analyze to legacy PM 2020-10-19 21:24:03 -07:00
lifetime.ll StackLifetime: Remove asserts for multiple lifetime intrinsics. 2021-08-18 18:45:28 -07:00
local.ll Recommit [ScalarEvolution] Make getMinusSCEV() fail for unrelated pointers. 2021-07-06 12:16:05 -07:00
memintrin.ll [SCEV] Use both known bits and sign bits when computing range of SCEV unknowns 2021-02-19 08:29:12 -08:00