In the field of compiler implementation in computer science, constructed product result analysis (or CPR analysis) is a static analysis that determines which functions in a given program can return multiple results in an efficient manner. Typically, this means returning multiple results in a register (as opposed to returning a pointer to a tuple allocated on the heap whose components are the function's multiple return values.)
CPR analysis was introduced in the context of compiling Haskell (a lazy functional language) and is implemented in the Glasgow Haskell Compiler. It may be applicable to other programming languages as well.[1]