/* REQUIRED_ARGS: -O -inline */ // https://issues.dlang.org/show_bug.cgi?id=23076 struct S { int depthLow = 0; int depthHigh = 30000; void fun(int* pixels) { float b = depthLow; int depthA = cast(int)(b); int depthB = cast(short)(cast(float)depthHigh * cast(float)depthLow); pixels[depthA] = depthB; } } /**********************/ float mul3(float a, float b, float t) { return t * b * a; } class A { ushort depthLow = 0; ushort depthHigh = 30000; void fun(short* pixels) { short depthA = (cast(short)(mul3(depthHigh, depthLow, 0))); short depthB = (cast(short)(mul3(depthLow, depthHigh, 0))); pixels[depthA] = depthB; } }