Make sure you only handle branch delay slots specially when there actually was a...
authorGabe Black <gblack@eecs.umich.edu>
Mon, 18 Dec 2006 23:18:37 +0000 (18:18 -0500)
committerGabe Black <gblack@eecs.umich.edu>
Mon, 18 Dec 2006 23:18:37 +0000 (18:18 -0500)
--HG--
extra : convert_revision : ea6d33b1b9c2ba5c24225af4b10a9bd25558f1dd

src/cpu/o3/commit_impl.hh

index 194138efc218b06af8b45d3a2df20a1be793688b..07aadbfb071140eb7eb12c80ef3f5b9f997a7a9a 100644 (file)
@@ -731,9 +731,14 @@ DefaultCommit<Impl>::commit()
 #if ISA_HAS_DELAY_SLOT
             InstSeqNum bdelay_done_seq_num = squashed_inst;
             bool squash_bdelay_slot = fromIEW->squashDelaySlot[tid];
+            bool branchMispredict = fromIEW->branchMispredict[tid];
 
-            if (!squash_bdelay_slot)
+            // Squashing/not squashing the branch delay slot only makes
+            // sense when you're squashing from a branch, ie from a branch
+            // mispredict.
+            if (branchMispredict && !squash_bdelay_slot) {
                 bdelay_done_seq_num++;
+            }
 #endif
 
             if (fromIEW->includeSquashInst[tid] == true) {