https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87978
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Warning: In the above example, be aware that a register (for example r0) can be call-clobbered by subsequent code, including function calls and library calls for arithmetic operators on other variables (for example the initialization of p2). In this case, use temporary variables for expressions between the register assignments: