libtimeinstate: fix potential optimized variable
Per discussion at aosp/3077312/comment/38f6fa69_f6dee70c, the compiler
may optimize out the busy loop. Change to a volatile variable and
initialize to 1 so the *0 calc will not be optimized away.
Test: treehugger
Change-Id: Ic650b5c1b5ca9dcc1ed5817973f9ab831d944c99
Signed-off-by: Neill Kapron <nkapron@google.com>
diff --git a/libs/cputimeinstate/testtimeinstate.cpp b/libs/cputimeinstate/testtimeinstate.cpp
index 81f6a58..44cdc02 100644
--- a/libs/cputimeinstate/testtimeinstate.cpp
+++ b/libs/cputimeinstate/testtimeinstate.cpp
@@ -41,7 +41,7 @@
static constexpr uint64_t NSEC_PER_YEAR = NSEC_PER_SEC * 60 * 60 * 24 * 365;
// Declare busy loop variable globally to prevent removal during optimization
-static long sum __attribute__((used)) = 0;
+static volatile long sum __attribute__((used)) = 1;
using std::vector;
@@ -579,8 +579,8 @@
// Keeps CPU busy with some number crunching
void useCpu() {
- sum = 0;
- for (int i = 0; i < 100000; i++) {
+ sum = 1;
+ for (int i = 1; i < 100000; i++) {
sum *= i;
}
}