https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92867
Ulrich Drepper <drepper.fsp+rhbz at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |drepper.fsp+rhbz at gmail dot
com
--- Comment #4 from Ulrich Drepper <drepper.fsp+rhbz at gmail dot com> ---
This BZ came out of a discussion around C++ function call chaining along the
line of:
void f1(std::string& s, int a)
{
std::cout << "hello " << s;
if (a != 0)
std::cout << a;
std::cout << '\n';
}
The 'if' prevents one single series of calls through operator<< from being used
and the compiler has reload std::cout from memory every time. There are ugly
work-arounds in the source to get the desired behaviour but this should happen
automatically. The work-arounds are too ugly and there is lots of code out
there.
One way would be to expose a way to specify one of the arguments is returned.
Jakub mentioned that there is already internally a way to use the "fn spec"
attribute. How about exposing this explicitly as a function attribute?
Jakub also raised the point how this should be applied to member functions. I
suggest that the parameter for the attribute is really a number (not parameter
name) and that argument 1 (or 0, if you want the count start at zero) refers to
'this' in case of member functions.
How about this?