https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87373
--- Comment #11 from Murat Ursavaş <murat.ursavas at gmail dot com> --- Richard, I don't know about the standards as you are and please accept me as a newbie. The peripheral parameters of the manufacturer library are all defined as volatile structs and accessed with pointers. This is working till 4.9 but not after 5.2. So point me to the right direction, who should fix what and how? I can't fix my software or use a workaround because I need packed structs. I tried many other options but none of them worked. To understand the matter I'd like to ask, the trunk is creating the code Umesh just sent and this doesn't look like I expect. Is the code correct? As far as I know I should see a shorter one with enabled unaligned access, which looks default on Cortex-M3 architecture. Of course I would like to have shorter image but longer image was not helping and assigning wrong values to the variables. Minimum test case has been written to show that.