.field public int32 a
.field public int32 b
.field public int32 c
+ .field public int32 d
+ .field public int32 e
}
- .method static valuetype Tests/TailCallStructBig tail1_big (valuetype Tests/TailCallStructBig arg) {
+ .method static valuetype Tests/TailCallStructBig tail_vret_by_addr_inner (valuetype Tests/TailCallStructBig arg) {
ldarga 0
ldarga 0
ldfld int32 Tests/TailCallStructBig::a
ret
}
- .method static valuetype Tests/TailCallStructBig tail2_big (valuetype Tests/TailCallStructBig arg) {
+ .method static valuetype Tests/TailCallStructBig tail_vret_by_addr (valuetype Tests/TailCallStructBig arg) {
ldarg.0
tail.
- call valuetype Tests/TailCallStructBig Tests::tail1_big (valuetype Tests/TailCallStructBig)
+ call valuetype Tests/TailCallStructBig Tests::tail_vret_by_addr_inner (valuetype Tests/TailCallStructBig)
ret
}
- .method static public int32 test_0_tail_calls () il managed {
+ .method static public int32 test_3_tail_call_vret_by_addr () il managed {
.maxstack 16
.locals init (
- valuetype Tests/TailCallStruct arg,
valuetype Tests/TailCallStructBig arg2
)
+
+ ldloca 0
+ ldc.i4.2
+ stfld int32 Tests/TailCallStructBig::a
+ ldloc.0
+ call valuetype Tests/TailCallStructBig Tests::tail_vret_by_addr (valuetype Tests/TailCallStructBig)
+ stloc.0
+
+ ldloca 0
+ ldfld int32 Tests/TailCallStructBig::a
+ ret
+ }
+
+ .method static public int32 test_9_tail_call_vret_by_val () il managed {
+ .maxstack 16
+ .locals init (
+ valuetype Tests/TailCallStruct arg
+ )
ldloca 0
ldc.i4.2
stfld int32 Tests/TailCallStruct::a
call valuetype Tests/TailCallStruct Tests::tail2 (valuetype Tests/TailCallStruct)
stloc.0
- ldloca 1
- ldc.i4.2
- stfld int32 Tests/TailCallStructBig::a
- ldloc.1
- call valuetype Tests/TailCallStructBig Tests::tail2_big (valuetype Tests/TailCallStructBig)
- stloc.1
-
ldloca 0
ldfld int32 Tests/TailCallStruct::a
ldloca 0
ldfld int32 Tests/TailCallStruct::b
add
- ldloca 1
- ldfld int32 Tests/TailCallStructBig::a
- add
- ldc.i4 12
- sub
ret
}
ret
}
-#if !defined(__ppc__) && !defined(__powerpc__)
+#if !defined(__ppc__) && !defined(__powerpc__) && !defined(__arm__)
// PPC handles overflow by clipping, but this test assumes
// no overflow handling. According to ECMA the result of
// float->int conversion is undefined if overflow occurs, so
ret
}
*/
+
+ .field public static int32 shift1
+
+ .method public static int32 regress_497271_helper (int32 i) cil managed
+ {
+ ldarg.0
+ ret
+ }
+
+ .method public static int32 test_0_regalloc_regress_497271 () cil managed
+ {
+ .locals (int32 var)
+
+ ldc.i4 4
+ stsfld int32 Tests::shift1
+ ldsfld int32 Tests::shift1
+ stloc var
+ ldc.i4 4660
+ ldloc var
+ shr.un
+ ldc.i4 4660
+ ldc.i4 32
+ ldloc var
+ sub
+ shl
+ or
+ ldc.i4 1073742115
+ beq ?L10
+?L9:
+ ldc.i4 1
+ call int32 Tests::regress_497271_helper (int32)
+ ret
+?L10:
+ ldc.i4 0
+ call int32 Tests::regress_497271_helper (int32)
+ ret
+ }
+
}