Enable more WITH_SIZE_EXPR processing
authorRichard Biener <rguenther@suse.de>
Wed, 19 May 2021 08:20:37 +0000 (10:20 +0200)
committerRichard Biener <rguenther@suse.de>
Wed, 19 May 2021 12:53:50 +0000 (14:53 +0200)
commit2e6ad1ba532fe684633edac766c598be19ad3b59
tree5bd49ea00c2490aa6e960bbaa72cb1afa54cec1b
parent1467100fc72562a59f70cdd4e05f6c810d1fadcc
Enable more WITH_SIZE_EXPR processing

This enables the alias machinery for WITH_SIZE_EXPR which can appear
in call LHS and arguments.  In particular this drops the NULL
return from get_base_address and it adjusts get_ref_base_and_extent
and friends to use the size information in WITH_SIZE_EXPR and
look through it for further processing.

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

* builtins.c (get_object_alignment_1): Strip outer
WITH_SIZE_EXPR.
* tree-dfa.c (get_ref_base_and_extent): Handle outer
WITH_SIZE_EXPR for size processing and process the
containing ref.
* tree-ssa-alias.c (ao_ref_base_alias_set): Strip
outer WITH_SIZE_EXPR.
(ao_ref_base_alias_ptr_type): Likewise.
(refs_may_alias_p_2): Allow WITH_SIZE_EXPR in ref->ref
and handle that accordingly, stripping it for the
core alias workers.
* tree.c (get_base_address): Handle WITH_SIZE_EXPR by
looking through it instead of returning NULL.
gcc/builtins.c
gcc/tree-dfa.c
gcc/tree-ssa-alias.c
gcc/tree.c