re PR rtl-optimization/80358 (ICE (cc1 killed) building glib with -O3 on powerpc64le...
authorAaron Sawdey <acsawdey@linux.vnet.ibm.com>
Sat, 8 Apr 2017 16:10:26 +0000 (16:10 +0000)
committerAaron Sawdey <acsawdey@gcc.gnu.org>
Sat, 8 Apr 2017 16:10:26 +0000 (11:10 -0500)
2017-04-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>

PR target/80358
* config/rs6000/rs6000.c (expand_block_compare): Fix boundary check.

From-SVN: r246784

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 99d78b459a90cb5910a6f3e28618b98474da6f5c..b1e034596dad4df4d06a305b953454ea708d081a 100644 (file)
@@ -1,3 +1,8 @@
+2017-04-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+
+       PR target/80358
+       * config/rs6000/rs6000.c (expand_block_compare): Fix boundary check.
+
 2017-04-07  Pat Haugen  <pthaugen@us.ibm.com>
 
        * rs6000/rs6000.c (vec_load_pendulum): Rename...
index b3a3a7ec6e9fd4c17bd11971ccf5b7ef8462b622..880c3eea1d8cae4bacf5505cf7f7c9fd2a636d06 100644 (file)
@@ -19672,8 +19672,9 @@ expand_block_compare (rtx operands[])
   unsigned int load_mode_size = GET_MODE_SIZE (load_mode);
 
   /* We don't want to generate too much code.  */
-  if (ROUND_UP (bytes, load_mode_size) / load_mode_size
-      > (unsigned HOST_WIDE_INT) rs6000_block_compare_inline_limit)
+  unsigned HOST_WIDE_INT max_bytes =
+    load_mode_size * (unsigned HOST_WIDE_INT) rs6000_block_compare_inline_limit;
+  if (!IN_RANGE (bytes, 1, max_bytes))
     return false;
 
   bool generate_6432_conversion = false;