diff options
Diffstat (limited to 'src/cpu/o3')
-rw-r--r-- | src/cpu/o3/iew_impl.hh | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/cpu/o3/iew_impl.hh b/src/cpu/o3/iew_impl.hh index 29c6786c0..ce58868ba 100644 --- a/src/cpu/o3/iew_impl.hh +++ b/src/cpu/o3/iew_impl.hh @@ -1297,7 +1297,11 @@ DefaultIEW<Impl>::executeInsts() !toCommit->squash[tid] || toCommit->squashedSeqNum[tid] > inst->seqNum) { - if (inst->mispredicted()) { + // Prevent testing for misprediction on load instructions, + // that have not been executed. + bool loadNotExecuted = !inst->isExecuted() && inst->isLoad(); + + if (inst->mispredicted() && !loadNotExecuted) { fetchRedirect[tid] = true; DPRINTF(IEW, "Execute: Branch mispredict detected.\n"); |