Tanya Lattner | dcd188d | 2008-02-14 06:56:27 +0000 | [diff] [blame] | 1 | ; RUN: llvm-as < %s | opt -basicaa -load-vn -gcse -instcombine | \ |
| 2 | ; RUN: llvm-dis | not grep sub |
Chris Lattner | ffdc4ff | 2004-04-11 16:47:15 +0000 | [diff] [blame] | 3 | |
Tanya Lattner | dcd188d | 2008-02-14 06:56:27 +0000 | [diff] [blame] | 4 | %S = type { i32, i8 } |
Chris Lattner | 4a1f2e3 | 2004-04-11 19:01:35 +0000 | [diff] [blame] | 5 | |
Tanya Lattner | dcd188d | 2008-02-14 06:56:27 +0000 | [diff] [blame] | 6 | define i8 @test(i8** %P) { |
| 7 | %A = load i8** %P ; <i8*> [#uses=1] |
| 8 | %B = load i8* %A ; <i8> [#uses=1] |
| 9 | %X = load i8** %P ; <i8*> [#uses=1] |
| 10 | %Y = load i8* %X ; <i8> [#uses=1] |
| 11 | %R = sub i8 %B, %Y ; <i8> [#uses=1] |
| 12 | ret i8 %R |
Chris Lattner | ffdc4ff | 2004-04-11 16:47:15 +0000 | [diff] [blame] | 13 | } |
Chris Lattner | 4a1f2e3 | 2004-04-11 19:01:35 +0000 | [diff] [blame] | 14 | |
Tanya Lattner | dcd188d | 2008-02-14 06:56:27 +0000 | [diff] [blame] | 15 | define i8 @test1(%S** %P) { |
| 16 | %A = load %S** %P ; <%S*> [#uses=1] |
| 17 | %B = getelementptr %S* %A, i32 0, i32 1 ; <i8*> [#uses=1] |
| 18 | %C = load i8* %B ; <i8> [#uses=1] |
| 19 | %X = load %S** %P ; <%S*> [#uses=1] |
| 20 | %Y = getelementptr %S* %X, i32 0, i32 1 ; <i8*> [#uses=1] |
| 21 | %Z = load i8* %Y ; <i8> [#uses=1] |
| 22 | %R = sub i8 %C, %Z ; <i8> [#uses=1] |
| 23 | ret i8 %R |
Chris Lattner | 4a1f2e3 | 2004-04-11 19:01:35 +0000 | [diff] [blame] | 24 | } |
Tanya Lattner | dcd188d | 2008-02-14 06:56:27 +0000 | [diff] [blame] | 25 | |