https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117573
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- >Be careful, this instruction is first executed without making any misalignment >exceptions, only the second time does it introduce a misalignment issue. The generated code looks correct. Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp; *Ptr_Val_Par->Ptr_Comp = *Ptr_Glob; Is the "copy" which is causing the issue. Maybe Ptr_Val_Par->Ptr_Comp is getting corrupted somewhere.