1. A data processing apparatus configured to perform data processing operations in response to an ordered sequence of program instructions, wherein said program instructions comprise call instructions, each said call instruction configured to cause said data processing apparatus to depart from said ordered sequence of program instructions and to execute a further sequence of instructions until a return instruction is encountered and said return instruction configured to cause said data processing apparatus to return to said ordered sequence of program instructions at a return address associated with said call instruction, said data processing apparatus comprising: an execution unit configured to execute said program instructions, wherein said execution unit is configured to speculatively execute later program instructions in said ordered sequence in dependence on a predicted outcome of earlier program instructions in said ordered sequence; and a return address prediction unit configured to store return addresses associated with unresolved call instructions, and wherein said predicted outcome is dependent on said return addresses, wherein said return address prediction unit comprises: a stack portion configured to maintain a stack of return addresses associated with said unresolved call instructions, wherein said stack portion is configured to push said return address associated with said call instruction onto said stack when said call instruction is speculatively executed and to pop a stacked return address off said stack when said return instruction is speculatively executed; and a buffer portion configured to maintain a buffered history for said unresolved call instructions, wherein said buffered history comprises entries for unresolved call instructions and entries for unresolved return instructions.