From: Joel Hestness Date: Sat, 19 Jan 2013 21:14:54 +0000 (-0600) Subject: O3 IEW: Make incrWb and decrWb clearer X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1429d2124406440946fbe80a6e9dfe1148f3af91;p=gem5.git O3 IEW: Make incrWb and decrWb clearer Move the increment/decrement of wbOutstanding outside of the comparison in incrWb and decrWb in the IEW. This also fixes a compiler bug with gcc 4.4.7, which incorrectly optimizes "-- ==" as "-=". --- diff --git a/src/cpu/o3/iew.hh b/src/cpu/o3/iew.hh index 5adf32752..1213cf12b 100644 --- a/src/cpu/o3/iew.hh +++ b/src/cpu/o3/iew.hh @@ -213,7 +213,8 @@ class DefaultIEW void incrWb(InstSeqNum &sn) { - if (++wbOutstanding == wbMax) + ++wbOutstanding; + if (wbOutstanding == wbMax) ableToIssue = false; DPRINTF(IEW, "wbOutstanding: %i [sn:%lli]\n", wbOutstanding, sn); assert(wbOutstanding <= wbMax); @@ -224,8 +225,9 @@ class DefaultIEW void decrWb(InstSeqNum &sn) { - if (wbOutstanding-- == wbMax) + if (wbOutstanding == wbMax) ableToIssue = true; + wbOutstanding--; DPRINTF(IEW, "wbOutstanding: %i [sn:%lli]\n", wbOutstanding, sn); assert(wbOutstanding >= 0); #ifdef DEBUG