Hi, the attached patch fixes the treatment of symbol ref alignments for arrays and structs in S390. Until now, the NOT_NATURALLY_ALIGNED flag was not correctly set for array elements and structs larger than 8 bytes. Therefore, load relative instructions that require a specific alignment would not always be generated. This patch uses separate flags for 2-, 4-, and 8-byte alignment to fix the problem. Bootstrapped, no regressions on s390. Regards Robin gcc/testsuite/ChangeLog: 2015-10-23 Robin Dapp * gcc.target/s390/load-relative-check.c: New test to check generation of load relative instructions. gcc/ChangeLog: 2015-10-23 Robin Dapp * config/s390/s390.h: Add new symref flags, _NOTALIGN2 etc. * config/s390/s390.c (s390_check_symref_alignment): Use new symref flags, early abort on wrong alignment (s390_secondary_reload): Use new symref flags. (s390_encode_section_info): Likewise. * config/s390/predicates.md: Likewise.