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