2010-03-12 Jb Evain <jbevain@novell.com>
[mono.git] / mono / tests / verifier / make_endfilter_test.sh
1 #! /bin/sh
2 SED="sed"
3 if [ `which gsed` ] ; then 
4         SED="gsed"
5 fi
6
7 TEST_NAME=$1
8 TEST_VALIDITY=$2
9 TEST_POS=$3
10 TEST_FILTER_EXTRAS=$4
11
12 for I in {2..5};
13 do
14         declare LEAVE_${I}="leave NEXT_${I}"
15 done
16
17 declare OPCODE_${TEST_POS}="endfilter"
18 declare LEAVE_${TEST_POS}="endfilter"
19 declare END_FILTER_${TEST_POS}="endfilter"
20 declare EXTRAS_${TEST_POS}="ldc.i4.0"
21
22
23
24 TEST_NAME=${TEST_VALIDITY}_${TEST_NAME}
25 TEST_FILE=${TEST_NAME}_generated.il
26 echo $TEST_FILE
27 $SED -e "s/VALIDITY/${TEST_VALIDITY}/g" -e "s/FILTER_EXTRAS/${TEST_FILTER_EXTRAS}/g"   > $TEST_FILE <<//EOF
28 // VALIDITY
29
30 .assembly '${TEST_NAME}_generated'
31 {
32   .hash algorithm 0x00008004
33   .ver  0:0:0:0
34 }
35
36 .method public static int32 Main() cil managed
37 {
38         .entrypoint
39         .maxstack 2
40         ${OPCODE_1}
41
42         .try
43         {
44                 nop
45                 nop 
46
47                 ${LEAVE_2}
48         }
49         catch [mscorlib]System.Exception 
50         {
51                 pop
52                 ${LEAVE_3}
53         }
54
55 NEXT_2:
56 NEXT_3:
57
58 TRY_2:
59         .try {
60                 .try
61                 {
62                         nop
63                         nop
64
65                         ${LEAVE_4}
66                 }
67                 finally
68                 {
69                         nop
70                         ${OPCODE_6}
71                         endfinally
72                 }
73
74                 leave END
75
76         } catch [mscorlib]System.Exception 
77         {
78                 pop
79                 leave END
80         }
81
82 NEXT_4:
83         .try 
84         {
85                 nop
86                 nop
87
88
89                 leave END
90         }
91         filter
92         {
93                 ${EXTRAS_7}
94                 ${END_FILTER_7}
95
96                 pop
97
98                 nop
99                 ${EXTRAS_8}
100                 ${END_FILTER_8}
101
102                 ${EXTRAS_9}
103                 FILTER_EXTRAS
104                 ${END_FILTER_9}
105         }
106         {
107                 nop
108                 ${LEAVE_5}
109         }
110
111 NEXT_5:
112
113 END:
114         ldc.i4.0
115         ret
116 }
117 //EOF