public static int Main(string[] args) { var val = new CanBeReinterpretedAsDouble(); val._0 = 62249; return(Caller(ref val)); }
public static int Caller(ref CanBeReinterpretedAsDouble byRef) { // Since the last parameter // 1. Is passed by value // 2. Has size of power of 2 // 3. Has a single field // morph transforms OBJ(struct<CanBeReinterpretedAsDouble, 8>, byRef) to IND(double, byRef). // However, lower does not expect such transformation and asserts. return(Callee(0, 0, 0, 6, 2, 2, 4, 9, byRef)); }
public static int Callee(double d0, double d1, double d2, double d3, double d4, double d5, double d6, double d7, CanBeReinterpretedAsDouble onStack) { return(onStack._0 == 62249 ? 100 : 0); }