1. A method for reporting reasons for failure during transactional execution, comprising: while executing a program on a processor, transactionally executing a block of instructions in the program; if the transactional execution of the block of instructions completes successfully, committing changes made during the transactional execution, and resuming normal non-transactional execution of the program past the block of instructions; and if the transactional execution of the block of instructions fails, discarding changes made during the transactional execution, and whenever a pipe clear operation occurs on the processor, recording failure information indicating why the transactional execution failed; wherein the failure information contains an “exogenous flag,” which indicates whether the information was recorded during transactional execution or during execution of “exogenous code” from outside of transactional program execution.