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

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #5)
> [E]VRP testcase which shows the odd 'off' range on the false edge:
> 
> void bar(char *);
> 
> void foo (char *p, char *pp, int off)
> {
>   char *q = p + off;
>   if (q != p)
>     bar (q);
>   char *qq = pp + off;
>   if (qq != pp)
>     bar (qq);
>   bar (p);
>   bar (pp);
> }

In the old VRP code the register_edge_assert_for_* routines would be
the ones to add pattern matching for this.  I can't find where such
code exists in ranger now - I suspected it might be in range-op
when solving q = p + off; with q == p, but that operates on ranges
and not equivalences only?

Reply via email to