https://bugs.winehq.org/show_bug.cgi?id=50246
--- Comment #4 from Esme Povirk madewokherd@gmail.com --- With varargs pinvoke implemented, I get an invalid IL error with this code: IL_058a: ldloc.3 # [3] valuetype '<CppImplementationDetails>.$ArrayType$$$BY0EAA@_W'*, IL_058b: ldloca.s 26 # [26] valuetype '<CppImplementationDetails>.$ArrayType$$$BY0EAA@_W', IL_058d: sub IL_058e: ldc.i4.1 IL_058f: shr
The shr instruction is considered invalid. Based on ECMA-335 and my reading of Mono's code, the subtraction should result in a native int, which should be valid to shift by an int32.