mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-19 15:13:49 -04:00
Add InaccessibleMemOnly and inaccessibleMemOrArgMemOnly attributes
Summary: This patch introduces two new function attributes InaccessibleMemOnly: This attribute indicates that the function may only access memory that is not accessible by the program/IR being compiled. This is a weaker form of ReadNone. inaccessibleMemOrArgMemOnly: This attribute indicates that the function may only access memory that is either not accessible by the program/IR being compiled, or is pointed to by its pointer arguments. This is a weaker form of ArgMemOnly Test cases have been updated. This revision uses this (https://github.com/llvm-mirror/llvm/commit/d001932f3a8aa1ebd1555162fdce365f011bc292) as reference. Reviewers: jmolloy, hfinkel Subscribers: reames, joker.eph, llvm-commits Differential Revision: http://reviews.llvm.org/D15499 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255778 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -204,7 +204,7 @@ define void @f34()
|
||||
; CHECK: define void @f34()
|
||||
{
|
||||
call void @nobuiltin() nobuiltin
|
||||
; CHECK: call void @nobuiltin() #28
|
||||
; CHECK: call void @nobuiltin() #30
|
||||
ret void;
|
||||
}
|
||||
|
||||
@@ -277,6 +277,16 @@ define void @f47() norecurse {
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: define void @f48() #28
|
||||
define void @f48() inaccessiblememonly {
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: define void @f49() #29
|
||||
define void @f49() inaccessiblemem_or_argmemonly {
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: attributes #0 = { noreturn }
|
||||
; CHECK: attributes #1 = { nounwind }
|
||||
; CHECK: attributes #2 = { readnone }
|
||||
@@ -305,4 +315,6 @@ define void @f47() norecurse {
|
||||
; CHECK: attributes #25 = { convergent }
|
||||
; CHECK: attributes #26 = { argmemonly }
|
||||
; CHECK: attributes #27 = { norecurse }
|
||||
; CHECK: attributes #28 = { nobuiltin }
|
||||
; CHECK: attributes #28 = { inaccessiblememonly }
|
||||
; CHECK: attributes #29 = { inaccessiblemem_or_argmemonly }
|
||||
; CHECK: attributes #30 = { nobuiltin }
|
||||
|
||||
Reference in New Issue
Block a user