https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563
--- Comment #16 from Marc Glisse ---
(In reply to Jakub Jelinek from comment #15)
> I certainly do see that.
Uh, indeed. I don't remember what I may have tested where we failed to set a
range, or maybe I just got confused, better ignore my
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563
--- Comment #15 from Jakub Jelinek ---
(In reply to Marc Glisse from comment #12)
> > Canonical example would be if (int_arg + 32U <= 64U) __builtin_unreachable
> > (),
>
> We don't quite seem to put a range on int_arg with this. We have one
>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563
Jakub Jelinek changed:
What|Removed |Added
Target Milestone|8.3 |8.4
--- Comment #14 from Jakub Jelinek
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563
--- Comment #13 from eggert at cs dot ucla.edu ---
(In reply to Jakub Jelinek from comment #10)
> I don't understand that. You had:
> ((CONSP (Vframe_list)) ? (void) 0 : __builtin_unreachable ());
> for ((tail) = Vframe_list; (CONSP (tail)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563
--- Comment #12 from Marc Glisse ---
(In reply to Jakub Jelinek from comment #11)
> I think there are cases where we set useful range even on other SSA_NAMEs
> than the single one used in the condition, and in some cases it should be
> good
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563
--- Comment #11 from Jakub Jelinek ---
(In reply to Marc Glisse from comment #9)
> --- gimple-ssa-evrp-analyze.c (revision 268474)
> +++ gimple-ssa-evrp-analyze.c (working copy)
> @@ -217,7 +217,8 @@ evrp_range_analyzer::record_ranges_from_
>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563
--- Comment #10 from Jakub Jelinek ---
(In reply to Paul Eggert from comment #8)
> (In reply to Jakub Jelinek from comment #7)
>
> > Or just rewrite whatever you are doing to something that doesn't suffer from
> > this. Say:
> > (tail) =
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563
--- Comment #9 from Marc Glisse ---
--- gimple-ssa-evrp-analyze.c (revision 268474)
+++ gimple-ssa-evrp-analyze.c (working copy)
@@ -217,7 +217,8 @@ evrp_range_analyzer::record_ranges_from_
push_value_range (vrs[i].first,
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563
Paul Eggert changed:
What|Removed |Added
CC||eggert at gnu dot org
--- Comment #8 from
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563
--- Comment #7 from Jakub Jelinek ---
Before doing manual reduction, I've tried:
struct S { void *a, *b; int c; };
static inline int foo (void *p)
{
return ((unsigned) ((__INTPTR_TYPE__) p) & 7) == 3;
}
static inline void *bar (void *p)
{
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563
--- Comment #6 from Jakub Jelinek ---
Reduced testcase:
typedef void *Lisp_Word;
typedef Lisp_Word Lisp_Object;
struct Lisp_Cons
{
union
{
struct { Lisp_Object car; union { Lisp_Object cdr; struct Lisp_Cons *chain;
} u; } s;
char
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563
--- Comment #5 from Marc Glisse ---
IIUC, EVRP sees if(x!=3)__builtin_unreachable() and adds a range [3,3] on x.
The condition thus gets cleaned up and __builtin_unreachable disappears. This
could be fine, except that x has a single use, the
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563
Jakub Jelinek changed:
What|Removed |Added
CC||jakub at gcc dot gnu.org
--- Comment #4
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563
Jakub Jelinek changed:
What|Removed |Added
Target Milestone|8.2 |8.3
--- Comment #3 from Jakub Jelinek
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85563
Richard Biener changed:
What|Removed |Added
Priority|P3 |P2
Component|c
15 matches
Mail list logo