1. A method comprising: generating precise ranges of locations that speculative read or write instructions have accessed, where each precise range of locations is specified based on a first location accessed by a speculative read or write instruction and a second location accessed by a speculative read or write instruction; determining that a speculative write instruction from a first program segment has accessed a first precise range of locations; comparing the first precise range of locations with a second precise range of locations accessed by a speculative read or write instruction from a second program segment; determining that the first precise range of locations overlaps with the second precise range of locations; and identifying a miss-speculation and restoring memory content of locations speculative write instructions have accessed in the first precise range of locations and the second precise range of locations, when the first precise range of locations overlaps with the second precise range of locations.