Following the comments made by @AlokSave, here is a later edit of the answer:
Three are two possible explanations for this compiler flag. Since the documentation about it is scarce, it is somewhat unclear what its original meaning is, but there are, mainly, two possible explanations:
1) Warning the user about returning an aggregate object make him aware that the stack could overflow if the aggregate object (which is allocated on the stack) is returned.
2) Apparently, some old C compiler did not support returning aggrregates (you had to return a pointer).
Which of the two is the best one, it is hard for me to judge. However, more relevant information about this flag may be found at the following links:
http://bytes.com/topic/c/answers/644271-aggregate-return-warnings
https://lists.gnu.org/archive/html/bug-gnulib/2012-09/msg00006.html
Quoting from the latter link:
In the GNU apps I'm familiar with (Emacs, coreutils, ...)
we simply disable -Waggregate-return. It a completely
anachronistic warning, since its motivation was to
support backwards compatibility with C compilers that
did not allow returning structures. Those compilers
are long dead and are no longer of practical concern.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…