return 0;
}
+ interface ISmallArg {
+ T foo<T> (string s1, string s2, string s3, string s4, string s5, string s6, string s7, string s8,
+ string s9, string s10, string s11, string s12, string s13, T t);
+ }
+
+ class SmallArgClass : ISmallArg {
+ public T foo<T> (string s1, string s2, string s3, string s4, string s5, string s6, string s7, string s8,
+ string s9, string s10, string s11, string s12, string s13, T t) {
+ return t;
+ }
+ }
+
+ public static int test_1_small_gsharedvt_stack_arg_ios () {
+ ISmallArg o = new SmallArgClass ();
+ return o.foo<int> ("", "", "", "", "", "", "", "", "", "", "", "", "", 1);
+ }
+
// Passing vtype normal arguments on the stack
public static int test_0_arm64_vtype_stack_args () {
IFoo3<EmptyStruct> o = (IFoo3<EmptyStruct>)Activator.CreateInstance (typeof (Foo3<>).MakeGenericType (new Type [] { typeof (EmptyStruct) }));
bool success = zz == 0xAAAAAAAAAAAAAAAA;
return success ? 20 : 1;
}
+
+ void gsharedvt_try_at_offset_0<T> (ref T disposable)
+ where T : class, IDisposable {
+ try {
+ disposable.Dispose ();
+ } finally {
+ disposable = null;
+ }
+ }
+
+ [MethodImplAttribute (MethodImplOptions.NoInlining)]
+ static DateTimeOffset gsharedvt_vphi_inner<T> (T t) {
+ return DateTimeOffset.MinValue;
+ }
+
+ static DateTimeOffset gsharedvt_vphi<T> (T t) {
+ int[] arr = new int [10];
+
+ try {
+ DateTimeOffset v;
+ if (arr [0] == 0)
+ v = gsharedvt_vphi_inner (t);
+ else
+ v = gsharedvt_vphi_inner (t);
+ return v;
+ } catch {
+ return DateTimeOffset.MinValue;
+ }
+ }
+
+ static int test_0_gsharedvt_vphi_volatile () {
+ gsharedvt_vphi (0);
+ return 0;
+ }
}
// #13191