The problem is in sharing DECL_RTL of __stack_chk_guard_decl.
Currently, RTL for __stack_chk_guard_decl can be shared across
functions. The RTL is "(mem (symbol_ref))" and m68k reloads
"(symbol_ref)" into a register to produce a valid memory reference,
hence, it becomes "(mem (reg))".
The problem is that the transformations are applied directly to
DECL_RTL(stack_chk_guard_decl), so all subsequent functions pick up
transformed RTL, which is, in general case, wrong.
The fix is to set RTX_FLAG(used) of DECL_RTL(stack_chk_guard_decl) to
"1". This will make transformations create local copies of DECL_RTL and
apply changes to that.