From c15677b61c637e7dca61eda426c2d7163695dc1d Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 8 Jan 2014 11:01:29 +0100 Subject: 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 --- gcc/stor-layout.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'gcc/stor-layout.c') 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; -- cgit v1.1