1. A method comprising: generating precise ranges of locations that speculative read or write instructions have accessed; if a speculative write instruction has accessed a first precise range of locations corresponding to a first program segment or a second precise range of locations corresponding to a second program segment, comparing the first precise range of locations with the second precise range of locations; if the first precise range of locations overlaps with the second precise range of locations, identifying a miss-speculation; and if a miss-speculation is identified, restoring memory content of locations speculative write instructions have accessed.