[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