More is_a <scalar_int_mode>
authorRichard Sandiford <richard.sandiford@linaro.org>
Wed, 1 Nov 2017 13:33:18 +0000 (13:33 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 1 Nov 2017 13:33:18 +0000 (13:33 +0000)
commit6645d84173dfc7a7bfa389db1e2359cd78fe7182
treeda0bcaa1c94b726da065df4b322e2369ee72ddfe
parent7aaba298fe122dfd40bb612623df89db08499f8b
More is_a <scalar_int_mode>

alias.c:find_base_term and find_base_value checked:

      if (GET_MODE_SIZE (GET_MODE (src)) < GET_MODE_SIZE (Pmode))

but (a) comparing the precision seems more correct, since it's possible
for modes to have the same memory size as Pmode but fewer bits and
(b) the functions are called on arbitrary rtl, so there's no guarantee
that we're handling an integer truncation.

Since there's no point processing truncations of anything other than an
integer, this patch checks that first.

2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* alias.c (find_base_value, find_base_term): Only process integer
truncations.  Check the precision rather than the size.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r254306
gcc/ChangeLog
gcc/alias.c