This is the mail archive of the gcc-cvs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

r242440 - in /trunk/gcc: ChangeLog rtlanal.c


Author: rsandifo
Date: Tue Nov 15 17:54:20 2016
New Revision: 242440

URL: https://gcc.gnu.org/viewcvs?rev=242440&root=gcc&view=rev
Log:
Move misplaced assignment in num_sign_bit_copies1

The old assignment to bitwidth was before we handled VOIDmode with:

      if (mode == VOIDmode)
        mode = GET_MODE (x);

so when VOIDmode was specified we would always use:

      if (bitwidth < GET_MODE_PRECISION (GET_MODE (x)))
        {
          num0 = cached_num_sign_bit_copies (x, GET_MODE (x),
                                             known_x, known_mode, known_ret);
          return MAX (1,
                      num0 - (int) (GET_MODE_PRECISION (GET_MODE (x)) - bitwidth));
        }

For a zero bitwidth this always returns 1 (which is the most
pessimistic result).

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

	* rtlanal.c (num_sign_bit_copies1): Calculate bitwidth after
	handling VOIDmode.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/rtlanal.c


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]