summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>2016-07-20 18:33:30 +0000
committerkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>2016-07-20 18:33:30 +0000
commit09d899d1c260e25cb598476d39877ecd5ea80e3b (patch)
treed1029eb1f7d0073b2b7c9c5fd8a74f00059b2a29
parentd86801688332d159d49bc55b7cd16d24ef3be423 (diff)
downloadgcc-09d899d1c260e25cb598476d39877ecd5ea80e3b.tar.gz
S/390: Remove mode size check in encode_section_info.
With the last change the not-aligned symbol ref markers are always set for modes with size zero. This is wrong since for larl the size of the access does not matter. This patch removes that check entirely from s390_encode_section_info. Modes with a size of 0 get rejected in s390_check_symref_alignment which is used for the load/store relative instructions to check for natural alignment. Bootstrapped and regression tested on s390 and s390x with --with-arch=z900 and --with-arch=z13. gcc/ChangeLog: 2016-07-20 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * config/s390/s390.c (s390_encode_section_info): Remove mode size check. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238536 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/s390/s390.c7
2 files changed, 7 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2763af1d4e7..8016ac1f631 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-07-20 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+
+ * config/s390/s390.c (s390_encode_section_info): Remove mode size
+ check.
+
2016-07-20 Uros Bizjak <ubizjak@gmail.com>
* cse.c: Use HOST_WIDE_INT_M1 instead of ~(HOST_WIDE_INT) 0.
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 318c021290f..23d758c35d6 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -12413,8 +12413,7 @@ s390_encode_section_info (tree decl, rtx rtl, int first)
/* Store the alignment to be able to check if we can use
a larl/load-relative instruction. We only handle the cases
that can go wrong (i.e. no FUNC_DECLs). */
- if (DECL_ALIGN (decl) == 0
- || DECL_ALIGN (decl) % 16)
+ if (DECL_ALIGN (decl) == 0 || DECL_ALIGN (decl) % 16)
SYMBOL_FLAG_SET_NOTALIGN2 (XEXP (rtl, 0));
else if (DECL_ALIGN (decl) % 32)
SYMBOL_FLAG_SET_NOTALIGN4 (XEXP (rtl, 0));
@@ -12429,9 +12428,7 @@ s390_encode_section_info (tree decl, rtx rtl, int first)
&& GET_CODE (XEXP (rtl, 0)) == SYMBOL_REF
&& TREE_CONSTANT_POOL_ADDRESS_P (XEXP (rtl, 0)))
{
- if (MEM_ALIGN (rtl) == 0
- || GET_MODE_SIZE (GET_MODE (rtl)) == 0
- || MEM_ALIGN (rtl) % 16)
+ if (MEM_ALIGN (rtl) == 0 || MEM_ALIGN (rtl) % 16)
SYMBOL_FLAG_SET_NOTALIGN2 (XEXP (rtl, 0));
else if (MEM_ALIGN (rtl) % 32)
SYMBOL_FLAG_SET_NOTALIGN4 (XEXP (rtl, 0));