[PATCH] D74935: [LangRef][AliasAnalysis] Clarify `noalias` affects only modified objects
Johannes Doerfert via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Mar 6 09:19:07 PST 2020
jdoerfert added a comment.
In D74935#1909054 <https://reviews.llvm.org/D74935#1909054>, @jeroen.dobbelaere wrote:
> In D74935#1908665 <https://reviews.llvm.org/D74935#1908665>, @jdoerfert wrote:
>
> > I think we conflate two things here:
> >
> > 1. The modifications to the LangRef which should be in accordance with the C standard (at least I haven't seen you contradict the new wording directly).
>
>
> imho, the proposed wording is still confusing, and does not handle the case with the extra indirections.
> Unless the 'by any means' was meant to also include the '.. Every access that modifies X shall be considered also to modify P,for the purposes of this subclause. .. ' from the restrict specification.
> If that is the idea, we should mention it explicitly.
I would say that once we get modeling for indirect restrict we can adapt the lang ref accordingly. For now there is only have outer level restrict/noalias.
>> 2. The extended `noalias` deduction D73428 <https://reviews.llvm.org/D73428>.
>>
>> If you look at the commit message in D73428 <https://reviews.llvm.org/D73428>, it says that `noalias` is not just derived for all `readonly` arguments. In your example we access `unknown` memory, e.g., `**pA=42`, so case (1) cannot be applied. For case (2) we need to show that the loads of `pA` and `pB` do not alias, which we cannot.
>
> That sounds good. Is there also a testcase (similar to D74935#1907100 <https://reviews.llvm.org/D74935#1907100> or D74935#1907939 <https://reviews.llvm.org/D74935#1907939> ) that explicitly checks that 'noalias' is not deduced ?
I'll add one :)
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D74935/new/
https://reviews.llvm.org/D74935
More information about the cfe-commits
mailing list