mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-30 05:29:47 +00:00
was it not very helpful, it was also wrong! The problem is shown in the testcase: the alloca might be passed to a nocapture callee which dereferences it and returns the original pointer. But because it was a nocapture call we think we don't need to track its uses, but we do. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61876 91177308-0d34-0410-b5e6-96231b3b80d8
15 lines
347 B
LLVM
15 lines
347 B
LLVM
; RUN: llvm-as < %s | opt -functionattrs | llvm-dis | not grep {nocapture *%%q}
|
|
; RUN: llvm-as < %s | opt -functionattrs | llvm-dis | grep {nocapture *%%p}
|
|
|
|
define i32* @a(i32** %p) {
|
|
%tmp = load i32** %p
|
|
ret i32* %tmp
|
|
}
|
|
|
|
define i32* @b(i32 *%q) {
|
|
%mem = alloca i32*
|
|
store i32* %q, i32** %mem
|
|
%tmp = call i32* @a(i32** %mem)
|
|
ret i32* %tmp
|
|
}
|