diff options
author | Jakub Jelinek <jakub@redhat.com> | 2014-01-08 11:01:29 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2014-01-08 11:01:29 +0100 |
commit | c15677b61c637e7dca61eda426c2d7163695dc1d (patch) | |
tree | 4437bef406b9703aca6c75765d2c2574dfb038fb /gcc | |
parent | 5c944c6cb8a54f29a394493e48429345f2f8f08d (diff) | |
download | gcc-c15677b61c637e7dca61eda426c2d7163695dc1d.zip gcc-c15677b61c637e7dca61eda426c2d7163695dc1d.tar.gz gcc-c15677b61c637e7dca61eda426c2d7163695dc1d.tar.bz2 |
re PR rtl-optimization/59649 (BImode miscompiled)
PR rtl-optimization/59649
* stor-layout.c (get_mode_bounds): For BImode return
0 and STORE_FLAG_VALUE.
From-SVN: r206422
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/stor-layout.c | 16 |
2 files changed, 21 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 78a5da4..8888a79 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index 98219b4..084d195 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -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; |