diff options
author | Dan Gohman <gohman@apple.com> | 2010-04-30 19:05:00 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-04-30 19:05:00 +0000 |
commit | 5b61b3818a3aadb928485571d69e5bccc52e1d5b (patch) | |
tree | 15c28546381aa9892a3b4ea5219b62a9608aead3 /test/Other | |
parent | 5cc6f9ba4777a460d7036edbbb3e8f01fb0a3d32 (diff) | |
download | llvm-5b61b3818a3aadb928485571d69e5bccc52e1d5b.tar.gz llvm-5b61b3818a3aadb928485571d69e5bccc52e1d5b.tar.bz2 llvm-5b61b3818a3aadb928485571d69e5bccc52e1d5b.tar.xz |
Add lint checks for invalid uses of memory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102733 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Other')
-rw-r--r-- | test/Other/lint.ll | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/test/Other/lint.ll b/test/Other/lint.ll index 8658495c97..d0db5e46c6 100644 --- a/test/Other/lint.ll +++ b/test/Other/lint.ll @@ -3,6 +3,8 @@ target datalayout = "e-p:64:64:64" declare fastcc void @bar() +@CG = constant i32 7 + define i32 @foo() noreturn { ; CHECK: Caller and callee calling convention differ call void @bar() @@ -39,6 +41,16 @@ define i32 @foo() noreturn { %xx = xor i32 undef, undef ; CHECK: sub(undef, undef) %xs = sub i32 undef, undef + +; CHECK: Write to read-only memory + store i32 8, i32* @CG +; CHECK: Write to text section + store i32 8, i32* bitcast (i32()* @foo to i32*) +; CHECK: Load from block address + %lb = load i32* bitcast (i8* blockaddress(@foo, %next) to i32*) +; CHECK: Call to block address + call void()* bitcast (i8* blockaddress(@foo, %next) to void()*)() + br label %next next: @@ -64,3 +76,9 @@ define void @not_vararg(i8* %p) nounwind { call void @llvm.va_start(i8* %p) ret void } + +define void @use_indbr() { + indirectbr i8* bitcast (i32()* @foo to i8*), [label %block] +block: + unreachable +} |