This is an archive of the discontinued LLVM Phabricator instance.

[LAA] Modify canCheckPtrAtRT to analyze conflicting alias sets only
Needs RevisionPublic

Authored by joesavage on May 26 2020, 8:49 AM.

Details

Summary

Resolves an issue in which some loops cannot be auto-vectorized with
runtime checks despite all relevant alias sets having computable bounds.

Diff Detail

Event Timeline

joesavage created this revision.May 26 2020, 8:49 AM
Herald added a project: Restricted Project. · View Herald TranscriptMay 26 2020, 8:49 AM

Thanks for illustrating the issue here. I was a bit surprised this happens, as canCheckPtrAtRT already contains code to figure out if runtime checks are needed for a alias set. But it turns out that it sets 'CanDoRT` to false for alias sets with uncomputable bounds, even if no runtime checks are required for the AS.

I've put up D80622 with an alternative fix, that slightly extends the existing logic in canCheckPtrAtRT to correctly handle this case. I think this has a slight advantage of not having 2 different alias set collections, which potentially could lead to confusion down the road (if the wrong one is used).

fhahn requested changes to this revision.Jul 25 2020, 10:27 AM

IIUC this was subsumed by D80622. Marking as changes requested to clear up review queue.

This revision now requires changes to proceed.Jul 25 2020, 10:27 AM
david-arm resigned from this revision.Feb 9 2021, 6:48 AM