sim: fix overflow check in simulate because Tick is now unsigned
authorAnthony Gutierrez <atgutier@umich.edu>
Tue, 28 Aug 2012 00:53:20 +0000 (20:53 -0400)
committerAnthony Gutierrez <atgutier@umich.edu>
Tue, 28 Aug 2012 00:53:20 +0000 (20:53 -0400)
src/sim/simulate.cc

index 5e69f0ff45590f3e93fa34a33167b3d47f99a2e2..238e68787d0d7256a5bda3bc9fe4bd7e952e7dba 100644 (file)
@@ -49,12 +49,10 @@ simulate(Tick num_cycles)
 {
     inform("Entering event queue @ %d.  Starting simulation...\n", curTick());
 
-    if (num_cycles < 0)
-        fatal("simulate: num_cycles must be >= 0 (was %d)\n", num_cycles);
-    else if (curTick() + num_cycles < 0)  //Overflow
-        num_cycles = MaxTick;
-    else
+    if (num_cycles < MaxTick - curTick())
         num_cycles = curTick() + num_cycles;
+    else // counter would roll over or be set to MaxTick anyhow
+        num_cycles = MaxTick;
 
     Event *limit_event =
         new SimLoopExitEvent("simulate() limit reached", 0);