On 11/15/2021 3:05 PM, Martin Sebor via Gcc-patches wrote:
The deeply nested PHI handling in get_range_strlen_dynamic makes
the code bigger and harder to follow than it would be if done in
its own function. The attached patch does that.
In addition, the get_range_strlen family of functions use a bitmap
to avoid infinite recursion. Rather than dynamically allocating
and freeing it on demand the attached patch simplifies the code
by using an instance of auto_bitmap. This avoids the risk of
neglecting to deallocate the bitmap.
Tested on x86_64-linux.
Martin
gcc-get_range_strlen_dynamic.diff
Slightly simplify get_range_strlen interface.
gcc/ChangeLog:
* gimple-fold.c (get_range_strlen): Take bitmap as an argument rather
than a pointer to it.
(get_range_strlen_tree): Same. Remove bitmap allocation. Use
an auto_bitmap.
(get_maxval_strlen): Use an auto_bitmap.
* tree-ssa-strlen.c (get_range_strlen_dynamic): Factor out PHI
handling...
(get_range_strlen_phi): ...into this function.
(printf_strlen_execute): Dump pointer query cache contents when
details are requisted.
No really a bugfix, but I'll go ahead and ACK for the trunk. Obviously
the bar is going to be going up now that we're in stage3 :-)
jeff