IPA-SRA can do unused function parameter removal but misses unused return
value elimination.  This can be useful for a function like

int
quantum_gate_counter(int inc)
{
  static int counter = 0;

  if(inc > 0)
    counter += inc;
  else if(inc < 0)
    counter = 0;

  return counter;
}

which is only used in places that do not use the returned value in which
case the function should be optimized away completely, eliminating
the counter updates.  Note that this has to be done before inlining
into the callers to be effective.

The above missed-optimization blocks partial inlining of a function like

int flag;
int foo (void)
{
  quantum_gate_counter (1);
  if (!flag)
    return 0;

  ...
}


-- 
           Summary: Missed unused function return value elimination
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: enhancement
          Priority: P3
         Component: tree-optimization
        AssignedTo: jamborm at gcc dot gnu dot org
        ReportedBy: rguenth at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42970

Reply via email to