[Bug rtl-optimization/79059] Information from CCmode is not propagated across basic blocks

2021-08-16 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79059

Andrew Pinski  changed:

   What|Removed |Added

   Keywords||internal-improvement,
   ||missed-optimization
   Severity|normal  |enhancement

[Bug rtl-optimization/79059] Information from CCmode is not propagated across basic blocks

2017-01-11 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79059

--- Comment #5 from Andrew Pinski  ---
I can't remember if this is the same but 

I don't know how to describe this optimization right now but take the following
two functions:
struct arc
{
  int ident;
};
int bea_is_dual_infeasible( struct arc *arc, int red_cost )
{
return( (red_cost < 0 && arc->ident == 1)
|| (red_cost > 0 && arc->ident == 2) );
}

int bea_is_dual_infeasible1( struct arc *arc, int red_cost )
{
  int t;
  if (red_cost == 0)
return 0;
  return arc->ident == ((red_cost > 0) ? 2 : 1);
}
They both do the same thing but bea_is_dual_infeasible1 has only one branch (no
conditional move either) while bea_is_dual_infeasible has many branches.  This
is true on x86 (have not checked arm though).

[Bug rtl-optimization/79059] Information from CCmode is not propagated across basic blocks

2017-01-11 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79059

Andrew Pinski  changed:

   What|Removed |Added

 CC||pinskia at gcc dot gnu.org

--- Comment #4 from Andrew Pinski  ---
Iirc there is even better way of doing these branches that is arch independent.

[Bug rtl-optimization/79059] Information from CCmode is not propagated across basic blocks

2017-01-11 Thread mkuvyrkov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79059

--- Comment #3 from Maxim Kuvyrkov  ---
(In reply to Richard Biener from comment #2)
> Somewhat related to PR78200 (x86 has the CCmodes nicely combined but the
> branches are the wrong order).

Indeed it is related.  It is [expectedly] mcf's primal_bea_mpp where this is
triggered.

[Bug rtl-optimization/79059] Information from CCmode is not propagated across basic blocks

2017-01-11 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79059

--- Comment #2 from Richard Biener  ---
Somewhat related to PR78200 (x86 has the CCmodes nicely combined but the
branches are the wrong order).

[Bug rtl-optimization/79059] Information from CCmode is not propagated across basic blocks

2017-01-11 Thread mkuvyrkov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79059

Maxim Kuvyrkov  changed:

   What|Removed |Added

 CC||bernds at gcc dot gnu.org,
   ||ramana.radhakrishnan@gmail.
   ||com, rearnsha at arm dot com

--- Comment #1 from Maxim Kuvyrkov  ---
Adding people who might be interested.