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 recording failure information indicating why the transactional execution failed.