aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/VMCore/Pass.cpp11
-rw-r--r--lib/VMCore/PassManagerT.h4
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;
};