diff options
author | gVisor bot <gvisor-bot@google.com> | 2021-05-21 16:45:30 -0700 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2021-05-21 16:47:49 -0700 |
commit | 7675ccfc1a5509aa2a256dc30cc435d92204c130 (patch) | |
tree | 8e4f452eef8bbbc9e3a26df9000e4736588ab55c | |
parent | 821cec3f1fb628652558d56975345016090a29d3 (diff) |
Prevent infinite loops from being optimized away.
https://github.com/llvm/llvm-project/commit/6c3129549374c0e81e28fd0a21e96f8087b63a78
adds "mustprogress" to loops, which causes empty, side-effect free loops to be
optimized away. These loops are intentionally infinite for purposes of testing,
so add asm statements that prevent them from being removed.
PiperOrigin-RevId: 375188453
-rw-r--r-- | test/syscalls/linux/BUILD | 5 | ||||
-rw-r--r-- | test/syscalls/linux/concurrency.cc | 3 |
2 files changed, 6 insertions, 2 deletions
diff --git a/test/syscalls/linux/BUILD b/test/syscalls/linux/BUILD index cad130358..0f2a6add6 100644 --- a/test/syscalls/linux/BUILD +++ b/test/syscalls/linux/BUILD @@ -520,13 +520,14 @@ cc_binary( srcs = ["concurrency.cc"], linkstatic = 1, deps = [ - "@com_google_absl//absl/strings", - "@com_google_absl//absl/time", + gbenchmark, gtest, "//test/util:platform_util", "//test/util:test_main", "//test/util:test_util", "//test/util:thread_util", + "@com_google_absl//absl/strings", + "@com_google_absl//absl/time", ], ) diff --git a/test/syscalls/linux/concurrency.cc b/test/syscalls/linux/concurrency.cc index 7cd6a75bd..f2daf49ee 100644 --- a/test/syscalls/linux/concurrency.cc +++ b/test/syscalls/linux/concurrency.cc @@ -20,6 +20,7 @@ #include "absl/strings/string_view.h" #include "absl/time/clock.h" #include "absl/time/time.h" +#include "benchmark/benchmark.h" #include "test/util/platform_util.h" #include "test/util/test_util.h" #include "test/util/thread_util.h" @@ -106,6 +107,8 @@ TEST(ConcurrencyTest, MultiProcessConcurrency) { pid_t child_pid = fork(); if (child_pid == 0) { while (true) { + int x = 0; + benchmark::DoNotOptimize(x); // Don't optimize this loop away. } } ASSERT_THAT(child_pid, SyscallSucceeds()); |