Merge pull request #2780 from alexanderkyte/seq_point_optimize
[mono.git] / mono / tests / verifier / make_field_store_test.sh
1 #! /bin/sh
2
3 SED="sed"
4 if [ `which gsed 2> /dev/null` ] ; then 
5         SED="gsed"
6 fi
7
8 TEST_NAME=$1
9 TEST_VALIDITY=$2
10 TEST_OP=$3
11 TEST_TYPE1=$4
12 TEST_TYPE2=$5
13 TEST_EMIT_CSTOR=$6
14 if [ "${TEST_EMIT_CSTOR}" = "yes" ]; then
15         TEST_CSTOR="newobj instance void ${TEST_TYPE2}::.ctor()";
16 else
17         TEST_CSTOR="ldloc.0";
18 fi
19
20 TEST_NAME=${TEST_VALIDITY}_${TEST_NAME}
21 TEST_FILE=${TEST_NAME}_generated.il
22 echo $TEST_FILE
23 #TEST_TYPE1=`echo $TEST_TYPE1 | $SED -s 's/&/\\\&/'`
24 #TEST_TYPE2=`echo $TEST_TYPE2 | $SED -s 's/&/\\\&/'`
25 $SED -e "s/VALIDITY/${TEST_VALIDITY}/g"  -e "s/CSTOR/${TEST_CSTOR}/g"  -e "s/OPCODE/${TEST_OP}/g" -e "s/TYPE1/${TEST_TYPE1}/g" -e "s/TYPE2/${TEST_TYPE2}/g" > $TEST_FILE <<//EOF
26
27 .assembly '${TEST_NAME}_generated'
28 {
29   .hash algorithm 0x00008004
30   .ver  0:0:0:0
31 }
32
33 // VALIDITY CIL which breaks the ECMA-335 rules. 
34 // this CIL should fail verification by a conforming CLI verifier.
35
36 .assembly extern mscorlib
37 {
38   .ver 1:0:5000:0
39   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
40 }
41
42 .class interface abstract InterfaceA
43 {
44 }
45
46 .class interface abstract InterfaceB
47 {
48 }
49
50 .class sealed MyValueType extends [mscorlib]System.ValueType
51 {
52         .field public int32 fld
53 }
54
55 .class ClassB extends [mscorlib]System.Object
56 {
57     .field public TYPE1 fld
58     .field public static TYPE1 sfld
59
60         .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
61         {
62                 .maxstack 8
63                 ldarg.0 
64                 call instance void object::.ctor()
65                 ret
66         }
67 }
68
69 .class ClassA extends [mscorlib]System.Object
70 {
71     .field public TYPE1 fld
72     .field public static TYPE1 sfld
73     .field public initonly TYPE1 const_field
74     .field public static initonly TYPE1 st_const_field
75
76         .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
77         {
78                 .maxstack 8
79                 ldarg.0 
80                 call instance void object::.ctor()
81                 ret
82         }
83 }
84
85 .class public SubClass extends ClassA
86 {
87     .field public TYPE1 subfld
88     .field public static TYPE1 subsfld
89
90         .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
91         {
92                 .maxstack 8
93                 ldarg.0 
94                 call instance void ClassA::.ctor()
95                 ret
96         }
97 }
98
99 .class public explicit Overlapped extends [mscorlib]System.Object
100 {
101     .field[0] public TYPE1 field1
102     //.field[0] public TYPE1 field2
103     .field[8] public TYPE1 field3
104     //.field[8] public TYPE1 field4
105     .field[16] public TYPE1 field5
106     .field[20] public TYPE1 field10
107     .field[24] public TYPE2 field_ok
108
109         .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
110         {
111                 .maxstack 8
112                 ldarg.0 
113                 call instance void object::.ctor()
114                 ret
115         }
116 }
117
118 .class public explicit SubOverlapped extends Overlapped
119 {
120     .field[16] public TYPE1 field6
121
122         .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
123         {
124                 .maxstack 8
125                 ldarg.0 
126                 call instance void Overlapped::.ctor()
127                 ret
128         }
129 }
130
131 .method public static int32 Main() cil managed
132 {
133         .entrypoint
134         .maxstack 2
135         .locals init (
136                 TYPE2 V_1
137         )
138         CSTOR
139         OPCODE // VALIDITY.
140         pop
141         ldc.i4.0
142         ret
143 }
144 //EOF