Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
test/Analysis/TypeBasedAliasAnalysis/functionattrs.ll
Show First 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | define i32 @test3_no(i8* %p) nounwind { | ||||
%t = va_arg i8* %p, i32, !tbaa !2 | %t = va_arg i8* %p, i32, !tbaa !2 | ||||
ret i32 %t | ret i32 %t | ||||
} | } | ||||
declare void @callee(i32* %p) nounwind | declare void @callee(i32* %p) nounwind | ||||
declare void @llvm.memcpy.p0i8.p0i8.i64(i8*, i8*, i64, i1) nounwind | declare void @llvm.memcpy.p0i8.p0i8.i64(i8*, i8*, i64, i1) nounwind | ||||
; CHECK: attributes #0 = { norecurse nounwind readnone } | ; CHECK: attributes #0 = { norecurse nounwind readnone } | ||||
; CHECK: attributes #1 = { norecurse nounwind writeonly } | ; CHECK: attributes #1 = { nofree norecurse nounwind writeonly } | ||||
; CHECK: attributes #2 = { nounwind readonly } | ; CHECK: attributes #2 = { nounwind readonly } | ||||
; CHECK: attributes #3 = { nounwind } | ; CHECK: attributes #3 = { nounwind } | ||||
; CHECK: attributes #4 = { nounwind readnone } | ; CHECK: attributes #4 = { nounwind readnone } | ||||
; CHECK: attributes #5 = { norecurse nounwind } | ; CHECK: attributes #5 = { nofree norecurse nounwind } | ||||
; CHECK: attributes #6 = { argmemonly nounwind } | ; CHECK: attributes #6 = { argmemonly nounwind } | ||||
; Root note. | ; Root note. | ||||
!0 = !{ } | !0 = !{ } | ||||
; Invariant memory. | ; Invariant memory. | ||||
!1 = !{!3, !3, i64 0, i1 1 } | !1 = !{!3, !3, i64 0, i1 1 } | ||||
; Not invariant memory. | ; Not invariant memory. | ||||
!2 = !{!3, !3, i64 0, i1 0 } | !2 = !{!3, !3, i64 0, i1 0 } | ||||
!3 = !{ !"foo", !0 } | !3 = !{ !"foo", !0 } |