mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
Extend 'readonly' and 'readnone' to work on function arguments as well as
functions. Make the function attributes pass add it to known library functions and when it can deduce it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185735 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1,14 +1,23 @@
|
||||
; RUN: opt < %s -functionattrs -S | not grep "nocapture *%%q"
|
||||
; RUN: opt < %s -functionattrs -S | grep "nocapture *%%p"
|
||||
; RUN: opt < %s -functionattrs -S | FileCheck %s
|
||||
|
||||
; CHECK: define i32* @a(i32** nocapture readonly %p)
|
||||
define i32* @a(i32** %p) {
|
||||
%tmp = load i32** %p
|
||||
ret i32* %tmp
|
||||
}
|
||||
|
||||
; CHECK: define i32* @b(i32* %q)
|
||||
define i32* @b(i32 *%q) {
|
||||
%mem = alloca i32*
|
||||
store i32* %q, i32** %mem
|
||||
%tmp = call i32* @a(i32** %mem)
|
||||
ret i32* %tmp
|
||||
}
|
||||
|
||||
; CHECK: define i32* @c(i32* readnone %r)
|
||||
@g = global i32 0
|
||||
define i32* @c(i32 *%r) {
|
||||
%a = icmp eq i32* %r, null
|
||||
store i32 1, i32* @g
|
||||
ret i32* %r
|
||||
}
|
||||
|
Reference in New Issue
Block a user