diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/VMCore/Pass.cpp | 11 | ||||
-rw-r--r-- | lib/VMCore/PassManagerT.h | 4 |
2 files changed, 12 insertions, 3 deletions
diff --git a/lib/VMCore/Pass.cpp b/lib/VMCore/Pass.cpp index 24f14f804b..1c54a1b2d1 100644 --- a/lib/VMCore/Pass.cpp +++ b/lib/VMCore/Pass.cpp @@ -107,6 +107,17 @@ static TimeRecord getTimeRecord() { return Result; } +bool TimeRecord::operator<(const TimeRecord &TR) const { + // Primary sort key is User+System time + if (UserTime+SystemTime < TR.UserTime+TR.SystemTime) + return true; + if (UserTime+SystemTime > TR.UserTime+TR.SystemTime) + return false; + + // Secondary sort key is Wall Time + return Elapsed < TR.Elapsed; +} + void TimeRecord::passStart(const TimeRecord &T) { Elapsed -= T.Elapsed; UserTime -= T.UserTime; diff --git a/lib/VMCore/PassManagerT.h b/lib/VMCore/PassManagerT.h index 83061deac1..9f34f15cca 100644 --- a/lib/VMCore/PassManagerT.h +++ b/lib/VMCore/PassManagerT.h @@ -85,9 +85,7 @@ struct TimeRecord { // TimeRecord - Data we collect and print for each pass void passStart(const TimeRecord &T); void passEnd(const TimeRecord &T); void sum(const TimeRecord &TR); - bool operator<(const TimeRecord &TR) const { - return UserTime+SystemTime < TR.UserTime+TR.SystemTime; - } + bool operator<(const TimeRecord &TR) const; void print(const char *PassName, const TimeRecord &TotalTime) const; }; |