diff options
Diffstat (limited to 'mcs/ilasm/tests/test-seh-c.il')
-rw-r--r-- | mcs/ilasm/tests/test-seh-c.il | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/mcs/ilasm/tests/test-seh-c.il b/mcs/ilasm/tests/test-seh-c.il new file mode 100644 index 00000000000..aeb7262ff31 --- /dev/null +++ b/mcs/ilasm/tests/test-seh-c.il @@ -0,0 +1,76 @@ +// +// Test catch and filter blocks +// +// Author(s): +// Jackson Harper (Jackson@LatitudeGeo.com) +// +// (C) 2003 Jackson Harper, All rights reserved +// + +.assembly extern mscorlib { } +.assembly 'test-seh-b' { } + + +.class public T { + + .field private static int32 exc_not_thrown + .field private static int32 flt_caught + + .method public static specialname void .cctor () + { + ldc.i4.0 + stsfld int32 T::exc_not_thrown + + ldc.i4.0 + stsfld int32 T::flt_caught + + ret + } + + .method public static int32 Main () + { + .entrypoint + + .try { + ldc.i4.0 + ldc.i4.0 + div + + ldc.i4.1 + stsfld int32 T::exc_not_thrown + + leave outer + } filter { + pop + ldc.i4.1 + endfilter + } { + ldc.i4.1 + stsfld int32 T::flt_caught + leave outer + } + + outer: + ldsfld int32 T::exc_not_thrown + brtrue fail + + ldsfld int32 T::flt_caught + brfalse fail + + pass: + ldstr "PASS" + call void [mscorlib]System.Console::WriteLine (string) + ldc.i4.0 + ret + + fail: + ldstr "FAIL" + call void [mscorlib]System.Console::WriteLine (string) + ldc.i4.1 + ret + + } + +} + + |