From: Jakub Jelinek Date: Wed, 8 Jan 2014 10:01:29 +0000 (+0100) Subject: re PR rtl-optimization/59649 (BImode miscompiled) X-Git-Tag: releases/gcc-4.9.0~1783 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c15677b61c637e7dca61eda426c2d7163695dc1d;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 78a5da489a1f..8888a79ae5b8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-01-08 Jakub Jelinek + + PR rtl-optimization/59649 + * stor-layout.c (get_mode_bounds): For BImode return + 0 and STORE_FLAG_VALUE. + 2014-01-08 Richard Biener PR middle-end/59630 diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index 98219b4f010d..084d195cd488 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;