I had another fix for the same problem by declaring two more variable (parameters for the assembler routine) volatile. This has to do with compiler internals. The compiler keeps care that processor registers are used where appropriate but variables are stored in memory if a register is not suitable. It's feasible that the register allocation changes if there are code changes. If everything is coded correctly this doesn't change anything but it's possible that the declarations in the code are ambiguous and the code compiles anyway. If you then change only a small part of the code you may end in a non-compilable program.
The problem here arises from the combination of machine code (assembler) with C++ code.