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
This commit is contained in:
Nick Lewycky
2008-12-19 06:39:12 +00:00
parent bebbded574
commit f23d0d392a
4 changed files with 66 additions and 22 deletions

View File

@@ -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
}