Volatile declarations eliminate performance benefits. Ordinary aliasing
rules should be enough to guarantee consistency though. 'curr_pc' becomes
an escaped variable when its address is assigned to 'thr->ptr_curr_pc'.
As a result, any operations that may potentially read it (such as some
function calls) should cause it to be written back to the stack frame
before doing the operation. The compiler is required to use a conservative
estimate of when it's safe *not* to write the variable back. Even if that
were not the case it's unlikely there would be practical problems.