middle-end/100672 - fix bogus right shift folding
authorRichard Biener <rguenther@suse.de>
Wed, 19 May 2021 11:35:07 +0000 (13:35 +0200)
committerRichard Biener <rguenther@suse.de>
Wed, 19 May 2021 13:41:19 +0000 (15:41 +0200)
commit8d51039cb7c807ed84ff7df5416a1e3ba07a5e63
tree4db5ca7df36f333472033131dd2b72e26b40ded2
parent32bd0353db37af2cb023e575ed4ce8c944fd9dba
middle-end/100672 - fix bogus right shift folding

This fixes the bogus use of TYPE_PRECISION on vector types
from optimizing -((int)x >> 31) into (unsigned)x >> 31.

2021-05-19  Richard Biener  <rguenther@suse.de>

PR middle-end/100672
* fold-const.c (fold_negate_expr_1): Use element_precision.
(negate_expr_p): Likewise.

* gcc.dg/torture/pr100672.c: New testcase.
gcc/fold-const.c
gcc/testsuite/gcc.dg/torture/pr100672.c [new file with mode: 0644]