jdoerfert added a comment.

In D74935#1905026 <https://reviews.llvm.org/D74935#1905026>, @jeroen.dobbelaere 
wrote:

> The reason I bring this up, is that in the full restrict implementation 
> (D68484 <https://reviews.llvm.org/D68484>), the alias analysis will do a 
> recursive analysis, proving that *pA and *pB will never alias, because pA and 
> pB will never alias. But this phrasing will break that assumption.


I don't understand how this will break. It will just mean in the IR below we 
*cannot* assume %0 and %1 are different. Given that the IR below does not 
represent the nested restrict it seems like this is exactly what we want. After 
all, we cannot determine if the IR came from your example or one with a single 
restrict qualifier per argument.

  ; Function Attrs: nofree norecurse nounwind uwtable
  define dso_local void @f(i32** noalias nocapture readonly %0, i32** noalias 
nocapture readonly %1) local_unnamed_addr #0 {
    %3 = load i32*, i32** %1, align 8, !tbaa !2
    %4 = load i32, i32* %3, align 4, !tbaa !6
    %5 = load i32*, i32** %0, align 8, !tbaa !2
    store i32 %4, i32* %5, align 4, !tbaa !6
    ret void
  }


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D74935



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to