https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
Andrew Pinski changed:
What|Removed |Added
Resolution|--- |FIXED
Status|ASSIGNED
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #23 from CVS Commits ---
The trunk branch has been updated by Andrew Pinski :
https://gcc.gnu.org/g:5e4abf4233cd34212680cca700d6438445e6a16a
commit r14-4695-g5e4abf4233cd34212680cca700d6438445e6a16a
Author: Andrew Pinski
Date: F
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
Richard Biener changed:
What|Removed |Added
Priority|P3 |P1
--- Comment #22 from Richard Biener
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #21 from Andrew Pinski ---
*** Bug 111534 has been marked as a duplicate of this bug. ***
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
Andrew Pinski changed:
What|Removed |Added
URL||https://gcc.gnu.org/piperma
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #19 from Andrew Pinski ---
(In reply to Andrew Pinski from comment #14)
> So I suspecting it is this pattern:
> /* -(type)!A -> (type)A - 1. */
> (simplify
> (negate (convert?:s (logical_inverted_value:s @0)))
> (if (INTEGRAL_TYPE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #18 from Andrew Pinski ---
(In reply to Andrew Pinski from comment #17)
> (In reply to Andrew Pinski from comment #16)
> > Or just change ssa_name_has_boolean_range to use gimple_zero_one_valued_p
> > instead:
> >
> > extern bool gi
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #17 from Andrew Pinski ---
(In reply to Andrew Pinski from comment #16)
> Or just change ssa_name_has_boolean_range to use gimple_zero_one_valued_p
> instead:
>
> extern bool gimple_zero_one_valued_p (tree t, tree (*valueize)(tree))
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #16 from Andrew Pinski ---
Or just change ssa_name_has_boolean_range to use gimple_zero_one_valued_p
instead:
extern bool gimple_zero_one_valued_p (tree t, tree (*valueize)(tree));
bool
ssa_name_has_boolean_range (tree op)
{
gcc_a
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #15 from Andrew Pinski ---
(In reply to Andrew Pinski from comment #14)
> Even more:
> bool
> ssa_name_has_boolean_range (tree op)
> {
> gcc_assert (TREE_CODE (op) == SSA_NAME);
>
> /* Boolean types always have a range [0..1].
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
Andrew Pinski changed:
What|Removed |Added
Status|NEW |ASSIGNED
Assignee|unassigned
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #13 from Andrew Pinski ---
(In reply to Zdenek Sojka from comment #12)
> Interesting, all the gcc's starting from gcc-6 up to gcc-13 at -O0 to -O3
> (including 32bit and 64bit targets) seem to "PASS" on this testcase.
>
> ... wait,
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #12 from Zdenek Sojka ---
(In reply to Andrew Pinski from comment #11)
> (In reply to Zdenek Sojka from comment #10)
> > Probably related, even simpler testcase, failing everywhere at -O0:
> >
> > $ cat testcase.c
> > typedef unsign
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #11 from Andrew Pinski ---
(In reply to Zdenek Sojka from comment #10)
> Probably related, even simpler testcase, failing everywhere at -O0:
>
> $ cat testcase.c
> typedef unsigned long __attribute__((__vector_size__ (8))) V;
>
> i
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #10 from Zdenek Sojka ---
Probably related, even simpler testcase, failing everywhere at -O0:
$ cat testcase.c
typedef unsigned long __attribute__((__vector_size__ (8))) V;
int
main (void)
{
V v = ~((V) { } <=0);
if (v[0])
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #9 from Andrew Pinski ---
Here is a reduced testcase that does not need -mno-sse or any other option but
fails everywhere:
```
typedef unsigned __attribute__((__vector_size__ (1*sizeof(unsigned V;
V v;
unsigned char c;
int
main
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #8 from Andrew Pinski ---
The problem is:
_37 = _36 != 0;
is not being used but I can't see how though.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #7 from Andrew Pinski ---
(In reply to Andrew Pinski from comment #6)
> _5 = VEC_COND_EXPR <_9, { 0, 0 }, { -1, -1 }>;
> _6 = VIEW_CONVERT_EXPR(_5);
>
> From that veclower produces:
>_36;
...
> _38 = _36 == 0;
> _40 = (s
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #6 from Andrew Pinski ---
_5 = VEC_COND_EXPR <_9, { 0, 0 }, { -1, -1 }>;
_6 = VIEW_CONVERT_EXPR(_5);
>From that veclower produces:
_36;
_36 = BIT_FIELD_REF <_9, 32, 0>;
_37 = _36 != 0;
_38 = _36 == 0;
_39 = (signed i
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #5 from Andrew Pinski ---
veclower produces:
_36 = BIT_FIELD_REF <_9, 32, 0>;
_37 = _36 != 0;
_38 = _36 == 0;
_39 = (signed int) _38;
_40 = (signed int) _36;
_41 = _40 + -1;
_42 = BIT_FIELD_REF <_9, 32, 32>;
_43 = _42
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #4 from Andrew Pinski ---
>that's v != 0 | v == c, I don't think that's equal to the original expression.
It is.
Here is the proof there:
((v > 0) ? -1 : 0) > ((v != c) ? -1 : 0)
v is unsigned char:
((v != 0) ? -1 : 0) > ((v != c)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
--- Comment #3 from Richard Biener ---
Hmm, we lower from
v.0_1 = v;
_2 = v.0_1 != { 0, 0 };
c.1_8 = c;
_4 = (unsigned int) c.1_8;
_3 = {_4, _4};
_10 = v.0_1 == _3;
_9 = _2 | _10;
_5 = VEC_COND_EXPR <_9, { 0, 0 }, { -1, -1 }>;
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110817
Andrew Pinski changed:
What|Removed |Added
Ever confirmed|0 |1
Last reconfirmed|
23 matches
Mail list logo