A push updates the head pointer from Execute, but the instructions between Decode and execute will have an out-of-date head pointer. If a branch in that window mispredicts, it will get the head pointer out of sync by resetting it to ignore the push. By delaying by one branch, we seem to eliminate over 60% of the misses, and reduce the cycle overhead from 0.5% to 0.2% in CoreMark, and still well ahead of the baseline with no fixup.