Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame^] | 1 | ; RUN: llvm-upgrade < %s | llvm-as | opt -deadargelim -die | llvm-dis | not grep DEAD |
| 2 | |
| 3 | %P = external global int |
| 4 | |
| 5 | implementation |
| 6 | |
| 7 | |
| 8 | internal int %test(int %DEADARG) { ; Dead arg only used by dead retval |
| 9 | ret int %DEADARG |
| 10 | } |
| 11 | |
| 12 | internal int %test2(int %DEADARG) { |
| 13 | %DEADRETVAL = call int %test(int %DEADARG) |
| 14 | ret int %DEADRETVAL |
| 15 | } |
| 16 | |
| 17 | void %test3(int %X) { |
| 18 | %DEADRETVAL = call int %test2(int %X) |
| 19 | ret void |
| 20 | } |
| 21 | |
| 22 | internal int %foo() { |
| 23 | %DEAD = load int* %P |
| 24 | ret int %DEAD |
| 25 | } |
| 26 | |
| 27 | internal int %id(int %X) { |
| 28 | ret int %X |
| 29 | } |
| 30 | |
| 31 | void %test4() { |
| 32 | %DEAD = call int %foo() |
| 33 | %DEAD2 = call int %id(int %DEAD) |
| 34 | ret void |
| 35 | } |
| 36 | |