summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/Attributor/readattrs.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Transforms/Attributor/readattrs.ll')
-rw-r--r--llvm/test/Transforms/Attributor/readattrs.ll52
1 files changed, 52 insertions, 0 deletions
diff --git a/llvm/test/Transforms/Attributor/readattrs.ll b/llvm/test/Transforms/Attributor/readattrs.ll
index 9c148ef160b..cfb4f71ce0e 100644
--- a/llvm/test/Transforms/Attributor/readattrs.ll
+++ b/llvm/test/Transforms/Attributor/readattrs.ll
@@ -143,3 +143,55 @@ define void @unsound_readonly(i8* %ignored, i8* %escaped_then_written) {
store i8 0, i8* %addr.ld
ret void
}
+
+; Byval but not readonly/none tests
+;
+;{
+declare void @escape_i8(i8* %ptr)
+
+; ATTRIBUTOR: @byval_not_readonly_1
+; ATTRIBUTOR-SAME: i8* byval %written
+define void @byval_not_readonly_1(i8* byval %written) readonly {
+ call void @escape_i8(i8* %written)
+ ret void
+}
+
+; ATTRIBUTOR: @byval_not_readonly_2
+; ATTRIBUTOR-SAME: i8* nocapture nofree nonnull writeonly byval dereferenceable(1) %written
+define void @byval_not_readonly_2(i8* byval %written) readonly {
+ store i8 0, i8* %written
+ ret void
+}
+
+; ATTRIBUTOR: @byval_not_readnone_1
+; ATTRIBUTOR-SAME: i8* byval %written
+define void @byval_not_readnone_1(i8* byval %written) readnone {
+ call void @escape_i8(i8* %written)
+ ret void
+}
+
+; ATTRIBUTOR: @byval_not_readnone_2
+; ATTRIBUTOR-SAME: i8* nocapture nofree nonnull writeonly byval dereferenceable(1) %written
+define void @byval_not_readnone_2(i8* byval %written) readnone {
+ store i8 0, i8* %written
+ ret void
+}
+
+; ATTRIBUTOR: @byval_no_fnarg
+; ATTRIBUTOR-SAME: i8* nocapture nofree nonnull writeonly byval dereferenceable(1) %written
+define void @byval_no_fnarg(i8* byval %written) {
+ store i8 0, i8* %written
+ ret void
+}
+
+; ATTRIBUTOR: @testbyval
+; ATTRIBUTOR-SAME: i8* nocapture readonly %read_only
+define void @testbyval(i8* %read_only) {
+ call void @byval_not_readonly_1(i8* %read_only)
+ call void @byval_not_readonly_2(i8* %read_only)
+ call void @byval_not_readnone_1(i8* %read_only)
+ call void @byval_not_readnone_2(i8* %read_only)
+ call void @byval_no_fnarg(i8* %read_only)
+ ret void
+}
+;}
OpenPOWER on IntegriCloud