55
66declare void @bar1 (ptr %p )
77declare void @bar2 (ptr %p , ptr %p2 )
8-
8+ declare void @bar3 ( ptr writable %p )
99define dso_local void @foo1_rdonly (ptr readonly %p ) {
1010; CHECK-LABEL: define {{[^@]+}}@foo1_rdonly
1111; CHECK-SAME: (ptr readonly [[P:%.*]]) {
@@ -26,6 +26,27 @@ define dso_local void @foo1(ptr %p) {
2626 ret void
2727}
2828
29+ define dso_local void @foo1_writable (ptr %p ) {
30+ ; CHECK-LABEL: define {{[^@]+}}@foo1_writable
31+ ; CHECK-SAME: (ptr [[P:%.*]]) {
32+ ; CHECK-NEXT: call void @bar1(ptr writable [[P]])
33+ ; CHECK-NEXT: ret void
34+ ;
35+ call void @bar1 (ptr writable %p )
36+ ret void
37+ }
38+
39+ define dso_local void @foo3_writable (ptr %p ) {
40+ ; CHECK-LABEL: define {{[^@]+}}@foo3_writable
41+ ; CHECK-SAME: (ptr [[P:%.*]]) {
42+ ; CHECK-NEXT: call void @bar3(ptr [[P]])
43+ ; CHECK-NEXT: ret void
44+ ;
45+ call void @bar3 (ptr %p )
46+ ret void
47+ }
48+
49+
2950define dso_local void @foo1_bar_aligned64_deref512 (ptr %p ) {
3051; CHECK-LABEL: define {{[^@]+}}@foo1_bar_aligned64_deref512
3152; CHECK-SAME: (ptr [[P:%.*]]) {
@@ -496,3 +517,25 @@ define void @prop_cb_def_mustprogress(ptr %p) {
496517 call void @foo1 (ptr %p ) mustprogress
497518 ret void
498519}
520+
521+ define void @prop_no_conflict_writable (ptr %p ) {
522+ ; CHECK-LABEL: define {{[^@]+}}@prop_no_conflict_writable
523+ ; CHECK-SAME: (ptr [[P:%.*]]) {
524+ ; CHECK-NEXT: call void @bar1(ptr writable [[P]])
525+ ; CHECK-NEXT: ret void
526+ ;
527+ call void @foo1_writable (ptr readonly %p )
528+ ret void
529+ }
530+
531+
532+ define void @prop_no_conflict_writable2 (ptr %p ) {
533+ ; CHECK-LABEL: define {{[^@]+}}@prop_no_conflict_writable2
534+ ; CHECK-SAME: (ptr [[P:%.*]]) {
535+ ; CHECK-NEXT: call void @bar3(ptr [[P]])
536+ ; CHECK-NEXT: ret void
537+ ;
538+ call void @foo3_writable (ptr readnone %p )
539+ ret void
540+ }
541+
0 commit comments