[llvm-dev] Full restrict support - status update

Jeroen Dobbelaere via llvm-dev
Tue, 29 Oct 2019 01:12:13 -0000

Hi all,

## Status:

During the past weeks I have updated the restrict patches with various
improvements:
- the ScopedNoAliasAA now also works together with the new pass manager
- the SLPVectorizer now works nice with the noalias support.
- there were some issues with some of the options enabling/disabling full
restrict.  These have been fixed.
- various smaller enhancements.

Today, I rebased the patches. [1]
Based on the feedback at the 'full restrict' roundtable, I also created
a single patch containing all changes. [2]

## Request for testing and feedback:

Extra help with the code review would be great [1].
This includes feedback on the design decisions and naming.

It would also be great if you could just try it out and check the effect on your
benchmarks and testcases.
The single patch[2] should make it more convenient to try it out:
- If the full restrict support triggers a problem, I would like to hear about
it.
- But, if it works and improves your benchmarks, I also would like to hear about
it, either through
  phabricator, the llvm mailing list or in private.

## Known issues:

- For now, there is still no llvm-ir bitcode support for the load/store
noalias_sidechannel argument.
- the
'SingleSource/Regression/C/gcc-c-torture/execute/GCC-C-execute-pr38212.test'
in the 'test-suite' fails:
-- the test is wrong as it triggers undefined behavior: it reads and writes the
same object through 2 different
    restrict pointers which have been declared in the same scope.

## Future changes
- Another request that came up during the round table, is to split up the
documentation in two parts:
   a separate document describing the noalias architecture, and the LangRef,
describing the intrinsics.
  I'll be working on that in the coming days.

Thanks,

Jeroen Dobbelaere

[1] https://reviews.llvm.org/D68484  [PATCH 01/38] [noalias] LangRef: noalias
intrinsics and noalias_sidechannel documentation.
[2] https://reviews.llvm.org/D69542 Full Restrict Support - single patch