Motivated by PR 40969. See also PR 40976.

For functions where the result is returned by argument, one should use C++'s
named return value optimization (NRV),
  cf. http://en.wikipedia.org/wiki/Return_value_optimization

That presumably also allows to mark PURE functions which return their result as
NRV to be marked as PURE.

Caveat: Presumably, using  "result, result_" for character strings does not
work with NRV as currently implemented.

See also: CALL_EXPR_RETURN_SLOT_OPT

TODO: Check that the ABI is preserved.


-- 
           Summary: Use named return value (NRV) for functions returning the
                    result as argument
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: burnus at gcc dot gnu dot org


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

Reply via email to