tree-optimization/97482 - fix split_constant_offset of nop-conversions
authorRichard Biener <rguenther@suse.de>
Thu, 15 Oct 2020 07:10:40 +0000 (09:10 +0200)
committerRichard Biener <rguenther@suse.de>
Thu, 15 Oct 2020 08:54:24 +0000 (10:54 +0200)
commit28290cb50c7dbf87458befeb3e295b5cb13560b5
tree5ddc99caf2358cf5ec76d0136e54f00256b62430
parentee21a5f3979adab95069f363b078812a54c5b59f
tree-optimization/97482 - fix split_constant_offset of nop-conversions

split_constant_offset is confused about a nop-conversion from
unsigned long to sizetype and tries to prove non-overflowing
of the inner operation.  Obviously the conversion could have been
elided so make sure split_constant_offset handles this properly.

It also makes sure that convert_to_ptrofftype does not introduce
conversions not necessary which in this case is the source for
the unnecessary conversion.

2020-10-15  Richard Biener  <rguenther@suse.de>

PR tree-optimization/97482
* tree-data-ref.c (split_constant_offset_1): Handle
trivial conversions better.
* fold-const.c (convert_to_ptrofftype_loc): Elide conversion
if the offset is already ptrofftype_p.

* gcc.dg/vect/pr97428.c: New testcase.
gcc/fold-const.c
gcc/testsuite/gcc.dg/vect/pr97428.c [new file with mode: 0644]
gcc/tree-data-ref.c