[Bug c/91922] #pragma pack(push,4) does not align element on 32 bit boundary properly

2020-01-31 Thread slightbody at ledroadwaylighting dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91922

--- Comment #2 from slightbody at ledroadwaylighting dot com ---
I'm not a regular gcc contributor, but I am a user of the compiler. Just
wondering if this issue will ever be addressed?

[Bug c/91922] New: #pragma pack(push,4) does not align element on 32 bit boundary properly

2019-09-26 Thread slightbody at ledroadwaylighting dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91922

Bug ID: 91922
   Summary: #pragma pack(push,4) does not align element on 32 bit
boundary properly
   Product: gcc
   Version: 6.3.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: slightbody at ledroadwaylighting dot com
  Target Milestone: ---

Created attachment 46958
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46958=edit
c source

The attached small main.c results in a Hard Fault on the line *p=x; when
compiled for the Cortex M0+ processor. The u32thing element of the structure
should be aligned on a 32bit boundary in memory due to the #pragma pack(push,4)
statement, but it is not.

It appears the compiler may be being confused by the pack(1) directive later in
the structure.

Compile line:
"D:\Atmel\Studio\7.0\toolchain\arm\arm-gnu-toolchain\bin\arm-none-eabi-gcc.exe"
 -x c -mthumb -D__SAMD21G18A__ -DNDEBUG 
-I"D:\Atmel\Studio\7.0\Packs\arm\cmsis\5.0.1\CMSIS\Include"
-I"D:\Atmel\Studio\7.0\Packs\atmel\SAMD21_DFP\1.3.304\samd21a\include"  -Os
-ffunction-sections -mlong-calls -Wall -mcpu=cortex-m0plus -c -std=gnu99 -MD
-MP -MF "main.d" -MT"main.d" -MT"main.o"   -o "main.o" ".././main.c" 

Snip of .map file (one_v) should be on a 32 bit aligned address:
 *(COMMON)
 COMMON 0x24500xa main.o
0x2450two
0x2454abc
0x2455one_v