S/390: Remove mode size check in encode_section_info.
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>
Wed, 20 Jul 2016 18:33:30 +0000 (18:33 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Wed, 20 Jul 2016 18:33:30 +0000 (18:33 +0000)
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.

From-SVN: r238536

gcc/ChangeLog
gcc/config/s390/s390.c

index 2763af1d4e78fe7e0eb8e304a6515e8bb8201816..8016ac1f6318a576dc2606d47a8d36f29788163a 100644 (file)
@@ -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.
index 318c021290ffda23f55f16c81f7aba196cc4f35f..23d758c35d6d366520eb2fd87749e03721150e38 100644 (file)
@@ -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));