]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR rtl-optimization/59649 (BImode miscompiled)
authorJakub Jelinek <jakub@redhat.com>
Wed, 8 Jan 2014 10:01:29 +0000 (11:01 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 8 Jan 2014 10:01:29 +0000 (11:01 +0100)
PR rtl-optimization/59649
* stor-layout.c (get_mode_bounds): For BImode return
0 and STORE_FLAG_VALUE.

From-SVN: r206422

gcc/ChangeLog
gcc/stor-layout.c

index 78a5da489a1f4e159e890e2d34ee1d2eac2be0c0..8888a79ae5b8c8a695f2ba23c043c42d7cf6e00c 100644 (file)
@@ -1,3 +1,9 @@
+2014-01-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR rtl-optimization/59649
+       * stor-layout.c (get_mode_bounds): For BImode return
+       0 and STORE_FLAG_VALUE.
+
 2014-01-08  Richard Biener  <rguenther@suse.de>
 
        PR middle-end/59630
index 98219b4f010d045241e637a1474744d314459ca5..084d195cd488ea2cb6e9694bdd18ebbd40952b44 100644 (file)
@@ -2821,7 +2821,21 @@ get_mode_bounds (enum machine_mode mode, int sign,
 
   gcc_assert (size <= HOST_BITS_PER_WIDE_INT);
 
-  if (sign)
+  /* Special case BImode, which has values 0 and STORE_FLAG_VALUE.  */
+  if (mode == BImode)
+    {
+      if (STORE_FLAG_VALUE < 0)
+       {
+         min_val = STORE_FLAG_VALUE;
+         max_val = 0;
+       }
+      else
+       {
+         min_val = 0;
+         max_val = STORE_FLAG_VALUE;
+       }
+    }
+  else if (sign)
     {
       min_val = -((unsigned HOST_WIDE_INT) 1 << (size - 1));
       max_val = ((unsigned HOST_WIDE_INT) 1 << (size - 1)) - 1;