forked from OSchip/llvm-project
6983741eaa
VirtualUse of type UseKind::Inter expects the definition of a llvm::Value to be represented in another statement. In the bug report that statement has been removed due to its domain being empty. Scop::InstStmtMap for the llvm::Value's defintion still pointed to the removed statement, which resulted in the use-after-free. The defintion statement was removed by Simplify because it was considered to not be reachable by other uses; trivially because it is never executed due to its empty domain. However, no such thing happend to the using statement using the value altough its domain is also empty. Fix by always removing statements with empty domains in Simplify since these are not properly analyzable. A UseKind::Inter should always have a statement with its defintion due to LLVM's SSA form. Scop::removeStmtNotInDomainMap() also removes statements with empty domains but does so without considering the context as used by Simplify's analyzes. In another angle, InstStmtMap pointing to removed statements should not happen either and ForwardOpTree would have bailed out if the llvm::Value definition was not represented by a statement. This will be corrected in a followup-commit. This fixes llvm.org/PR47098 |
||
---|---|---|
.. | ||
CodeGen | ||
DeLICM | ||
DeadCodeElimination | ||
DependenceInfo | ||
FlattenSchedule | ||
ForwardOpTree | ||
GPGPU | ||
Isl | ||
JSONExporter | ||
MaximalStaticExpansion | ||
PruneUnprofitable | ||
RewriteByReferenceParameters | ||
ScheduleOptimizer | ||
ScopDetect | ||
ScopDetectionDiagnostics | ||
ScopInfo | ||
ScopInliner | ||
Simplify | ||
Support | ||
Unit | ||
UnitIsl | ||
CMakeLists.txt | ||
README | ||
create_ll.sh | ||
lit.cfg | ||
lit.site.cfg.in | ||
polly.ll | ||
update_check.py |
README
place tests here