problems may arise if the machine code for this macro generated by the compiler used to compile the extension DLL does not address memory as layed out by the compiler(+options) that compiled the perl DLL (for example, op_flags might be aligned differently
Isn't this the sort of thing that would most likely cause a crash, rather than a wrong value being returned ? And it would seem to be a coincidence that such a misalignment actually returns one of the three *meaningful* values (0, 1, 128) instead of a nonsense value.
I guess anything is possible - and the proof probably lies in the debugger (as you've already mentioned).