Message ID | yddef1sovkt.fsf@CeBiTec.Uni-Bielefeld.DE |
---|---|
State | New |
Headers | show |
Series | Fix Ada comparison failure on SPARC | expand |
On Sun, Aug 11, 2019 at 12:17:06PM +0200, Rainer Orth wrote: > 2019-08-07 Richard Sandiford <richard.sandiford@arm.com> > > * data-streamer.h (streamer_write_poly_uint64): Declare. > (streamer_read_poly_uint64): Likewise. > * data-streamer-in.c (streamer_read_poly_uint64): New function. > * data-streamer-out.c (streamer_write_poly_uint64): Likewise. > * ipa-predicate.h (condition::size): Turn into a poly_int64. > (add_condition): Take a poly_int64 size. > * ipa-predicate.c (add_condition): Likewise. > [...] > > Looking through it, I noticed this snippet > > diff --git a/gcc/ipa-predicate.c b/gcc/ipa-predicate.c > --- a/gcc/ipa-predicate.c > +++ b/gcc/ipa-predicate.c > @@ -549,7 +549,7 @@ add_condition (class ipa_fn_summary *sum > for (i = 0; vec_safe_iterate (summary->conds, i, &c); i++) > { > if (c->operand_num == operand_num > - && c->size == size > + && maybe_ne (c->size, size) > > > where changing == to maybe_ne didn't seem right. And indeed changing it > to maybe_eq as in the following patch fixed the comparison failure. Shouldn't that be known_eq instead? Of course, it could make a difference right now solely on aarch64 SVE. Jakub
On August 11, 2019 12:20:31 PM GMT+02:00, Jakub Jelinek <jakub@redhat.com> wrote: >On Sun, Aug 11, 2019 at 12:17:06PM +0200, Rainer Orth wrote: >> 2019-08-07 Richard Sandiford <richard.sandiford@arm.com> >> >> * data-streamer.h (streamer_write_poly_uint64): Declare. >> (streamer_read_poly_uint64): Likewise. >> * data-streamer-in.c (streamer_read_poly_uint64): New function. >> * data-streamer-out.c (streamer_write_poly_uint64): Likewise. >> * ipa-predicate.h (condition::size): Turn into a poly_int64. >> (add_condition): Take a poly_int64 size. >> * ipa-predicate.c (add_condition): Likewise. >> [...] >> >> Looking through it, I noticed this snippet >> >> diff --git a/gcc/ipa-predicate.c b/gcc/ipa-predicate.c >> --- a/gcc/ipa-predicate.c >> +++ b/gcc/ipa-predicate.c >> @@ -549,7 +549,7 @@ add_condition (class ipa_fn_summary *sum >> for (i = 0; vec_safe_iterate (summary->conds, i, &c); i++) >> { >> if (c->operand_num == operand_num >> - && c->size == size >> + && maybe_ne (c->size, size) >> >> >> where changing == to maybe_ne didn't seem right. And indeed changing >it >> to maybe_eq as in the following patch fixed the comparison failure. > >Shouldn't that be known_eq instead? Of course, it could make a >difference >right now solely on aarch64 SVE. OK with using known_eq. Richard. > Jakub
# HG changeset patch # Parent 2ca1e7660c8c156605bb706a911e971840fca6d4 Fix Ada comparison failure on SPARC diff --git a/gcc/ipa-predicate.c b/gcc/ipa-predicate.c --- a/gcc/ipa-predicate.c +++ b/gcc/ipa-predicate.c @@ -549,7 +549,7 @@ add_condition (class ipa_fn_summary *sum for (i = 0; vec_safe_iterate (summary->conds, i, &c); i++) { if (c->operand_num == operand_num - && maybe_ne (c->size, size) + && maybe_eq (c->size, size) && c->code == code && c->val == val && c->agg_contents == agg_contents