blob: 77701f7361b12df1bbd098ed62ce453143ff150e [file] [log] [blame]
Chris Lattnerc0feeb52003-06-17 22:21:55 +00001; RUN: if as < %s | opt -deadargelim | dis | grep DEADARG
Chris Lattnerf27aca92003-06-16 12:05:38 +00002; RUN: then exit 1
3; RUN: else exit 0
4; RUN: fi
5
6implementation
7
8; test - an obviously dead argument
9internal int %test(int %v, int %DEADARG1, int* %p) {
10 store int %v, int* %p
11 ret int %v
12}
13
14; hardertest - an argument which is only used by a call of a function with a
15; dead argument.
16internal int %hardertest(int %DEADARG2) {
17 %p = alloca int
18 %V = call int %test(int 5, int %DEADARG2, int* %p)
19 ret int %V
20}
21
22; evenhardertest - recursive dead argument...
23internal void %evenhardertest(int %DEADARG3) {
24 call void %evenhardertest(int %DEADARG3)
25 ret void
26}
27
Chris Lattnerc0feeb52003-06-17 22:21:55 +000028internal void %needarg(int %TEST) {
29 call int %needarg2(int %TEST)
30 ret void
31}
32
33internal int %needarg2(int %TEST) {
34 ret int %TEST
35}
36
37internal void %needarg3(int %TEST3) {
38 call void %needarg(int %TEST3)
39 ret void
40}