[Bug tree-optimization/103161] [12 Regression] Better ranges cause builtin-sprintf-warn-16.c failure

msebor at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Nov 10 04:38:10 GMT 2021


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103161

Martin Sebor <msebor at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=102831
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |msebor at gcc dot gnu.org

--- Comment #3 from Martin Sebor <msebor at gcc dot gnu.org> ---
Confirmed.  It's a failure in what looks like a paranoia test that tries to
verify that the sprintf pass isn't making overly aggressive assumptions about
the width field.  The sprintf pass calls get_range_expr() to determine the
range.  It runs as part of the strlen pass which still uses EVRP for ranges. 
It's strange that the range is different for some targets than others (the IL
is otherwise identical).  Since the code is using the same EVRP analyzer as
before I'd expect the GIMPLE statement passed to get_range_expr() to be ignored
and the range to be "global" for the whole function body.  I haven't looked
into this in enough detail to understand what's different.  As of now this is
just as puzzling to me as the false positive reported in pr102831.  I'd expect
converting the strlen pass to use ranger to fix this.  I plan to work on it
sometime soon.


More information about the Gcc-bugs mailing list