On 07/07/2011 09:41 AM, Paul Berry wrote: > On 7 July 2011 01:13, Kenneth Graunke <kenn...@whitecape.org> wrote: >>> visit_block(&ir->body); >>> >>> + /* If the body ended in an unconditional return of non-void, >>> + * then we don't need to lower it because an unconditional >>> + * return of non-void at the end of a function is what returns >>> + * get lowered to. >> >> This comment doesn't make sense to me. Are you trying to say that >> unconditional all non-void returns were already lowered to variable >> assignments and void returns? Or...? > > Hmm, let me try again in more words: > > When we are lowering returns in a function whose return type is void, > the goal is to rewrite the function so that it doesn't contain any > return instructions at all. However, when we are lowering returns in > a function whose return type is non-void, the goal is to rewrite the > function so that it contains a single return instruction, in canonical > position. (A return instruction is said to be in "canonical position" > if it is the last instruction in the function, and it's not inside any > ifs or loops). > > If, after calling visit_block(&ir->body), the last instruction in the > function is a return instruction, and the return type of the function > is non-void, then we don't need to do anything, because the return > instruction is already in canonical position. > > Let me know if that makes more sense, and I'll rewrite the comment > accordingly.
Ah, of course. It's the one canonical return. That makes sense. --Kenneth _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev