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
This commit is contained in:
gVisor bot
2021-05-21 16:47:49 -07:00
parent 821cec3f1f
commit 7675ccfc1a
2 changed files with 6 additions and 2 deletions
+3 -2
View File
@@ -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",
],
)
+3
View File
@@ -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());