aboutsummaryrefslogtreecommitdiffstats
path: root/test/Analysis/BasicAA
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2008-12-19 06:39:12 +0000
committerNick Lewycky <nicholas@mxc.ca>2008-12-19 06:39:12 +0000
commit40fb6f2871aa68ff706156328e48eddd121b9722 (patch)
treef7b614552c1261a2700e9e1ae056dab091dfffa3 /test/Analysis/BasicAA
parent559ca0b1ba84b7943a7c72b0ef4c00a1a09334a7 (diff)
downloadexternal_llvm-40fb6f2871aa68ff706156328e48eddd121b9722.zip
external_llvm-40fb6f2871aa68ff706156328e48eddd121b9722.tar.gz
external_llvm-40fb6f2871aa68ff706156328e48eddd121b9722.tar.bz2
Resubmit support for the 'nocapture' attribute.
The problematic part of this patch is that we were out of attribute bits, requiring some fancy bit hacking to make it fit (by shrinking alignment) without breaking existing users or the file format. This change will require users to rebuild llvm-gcc to match llvm. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61239 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Analysis/BasicAA')
-rw-r--r--test/Analysis/BasicAA/nocapture.ll14
1 files changed, 14 insertions, 0 deletions
diff --git a/test/Analysis/BasicAA/nocapture.ll b/test/Analysis/BasicAA/nocapture.ll
new file mode 100644
index 0000000..0ca444c
--- /dev/null
+++ b/test/Analysis/BasicAA/nocapture.ll
@@ -0,0 +1,14 @@
+; RUN: llvm-as < %s | opt -basicaa -gvn -instcombine | llvm-dis | grep {ret i32 0}
+
+declare i32* @test(i32* nocapture)
+
+define i32 @test2() {
+ %P = alloca i32
+ %Q = call i32* @test(i32* %P)
+ %a = load i32* %P
+ store i32 4, i32* %Q ;; cannot clobber P since it is nocapture.
+ %b = load i32* %P
+ %c = sub i32 %a, %b
+ ret i32 %c
+}
+