summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Neill Kapron <nkapron@google.com> 2024-07-25 01:52:22 +0000
committer Neill Kapron <nkapron@google.com> 2024-07-25 01:58:31 +0000
commit543eee65cb7fb05ec46c5948e233d05e9eb78889 (patch)
treec6e9291b476c9cb7186e43457d337c43d808dc34
parentb310760b09dccdccb76683a79b3cb2b88f0bbddc (diff)
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>
-rw-r--r--libs/cputimeinstate/testtimeinstate.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/libs/cputimeinstate/testtimeinstate.cpp b/libs/cputimeinstate/testtimeinstate.cpp
index 81f6a585ab..44cdc02c0e 100644
--- a/libs/cputimeinstate/testtimeinstate.cpp
+++ b/libs/cputimeinstate/testtimeinstate.cpp
@@ -41,7 +41,7 @@ static constexpr uint64_t NSEC_PER_SEC = 1000000000;
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 @@ uint64_t timeNanos() {
// 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;
}
}