[PATCH] D74935: [LangRef][AliasAnalysis] Clarify `noalias` affects only modified objects

Jeroen Dobbelaere via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 6 01:08:00 PST 2020


jeroen.dobbelaere added a comment.

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.

> 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 ?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D74935/new/

https://reviews.llvm.org/D74935





More information about the llvm-commits mailing list