Rafael Ávila de Espíndola wrote:
DECL_RESULT holds a RESULT_DECL node for the value of a function, or it is 0 for a function that returns no value. (C functions returning void have zero here.)
I looked at gcc-1.42, and even there, a DECL_RESULT always holds a RESULT_DECL. It can never be zero. However, the DECL_RTL of this RESULT_DECL is zero for a function that returns no value. I'm not sure if this is a typo in the tree.def file, or whether perhaps an implementation change was made a very long time ago. Either way, this comment as written is wrong, and has been for a very long time. We could perhaps drop the comment about 0 values, or maybe expand it to say that the DECL_RTL of the RESULT_DECL is 0 for functions that return no value. aggregate_value_p doesn't look at DECL_RTL (DECL_RESULT (...)) so there is no problem there.
-- Jim Wilson, GNU Tools Support, http://www.specifix.com