llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-llvm-transforms Author: None (llvmbot) <details> <summary>Changes</summary> Backport 3c777f04f065dda5f0c80eaaef2a7f623ccc20ed Requested by: @<!-- -->goldsteinn --- Full diff: https://github.com/llvm/llvm-project/pull/112365.diff 2 Files Affected: - (modified) llvm/lib/Transforms/Utils/InlineFunction.cpp (+1-1) - (modified) llvm/test/Transforms/Inline/access-attributes-prop.ll (+20) ``````````diff diff --git a/llvm/lib/Transforms/Utils/InlineFunction.cpp b/llvm/lib/Transforms/Utils/InlineFunction.cpp index 68696789530f4a..fda1c22cc1fb7d 100644 --- a/llvm/lib/Transforms/Utils/InlineFunction.cpp +++ b/llvm/lib/Transforms/Utils/InlineFunction.cpp @@ -1395,7 +1395,7 @@ static void AddParamAndFnBasicAttributes(const CallBase &CB, if (!Arg) continue; - if (AL.hasParamAttr(I, Attribute::ByVal)) + if (NewInnerCB->paramHasAttr(I, Attribute::ByVal)) // It's unsound to propagate memory attributes to byval arguments. // Even if CalledFunction doesn't e.g. write to the argument, // the call to NewInnerCB may write to its by-value copy. diff --git a/llvm/test/Transforms/Inline/access-attributes-prop.ll b/llvm/test/Transforms/Inline/access-attributes-prop.ll index 2c55f5f3b1f6ca..5051c92345ec75 100644 --- a/llvm/test/Transforms/Inline/access-attributes-prop.ll +++ b/llvm/test/Transforms/Inline/access-attributes-prop.ll @@ -580,3 +580,23 @@ define ptr @callee_bad_param_prop(ptr readonly %x) { %r = tail call ptr @llvm.ptrmask(ptr %x, i64 -1) ret ptr %r } + +define dso_local void @foo_byval_readonly2(ptr readonly %p) { +; CHECK-LABEL: define {{[^@]+}}@foo_byval_readonly2 +; CHECK-SAME: (ptr readonly [[P:%.*]]) { +; CHECK-NEXT: call void @bar4(ptr [[P]]) +; CHECK-NEXT: ret void +; + call void @bar4(ptr %p) + ret void +} + +define void @prop_byval_readonly2(ptr %p) { +; CHECK-LABEL: define {{[^@]+}}@prop_byval_readonly2 +; CHECK-SAME: (ptr [[P:%.*]]) { +; CHECK-NEXT: call void @bar4(ptr [[P]]) +; CHECK-NEXT: ret void +; + call void @foo_byval_readonly2(ptr %p) + ret void +} `````````` </details> https://github.com/llvm/llvm-project/pull/112365 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits