From 76ca96858d78d15ae4e1ae298db6f7328a54c769 Mon Sep 17 00:00:00 2001 From: Pavel Samolysov Date: Thu, 30 May 2024 06:02:01 +0300 Subject: [PATCH] [PGO] Add tests for modules with only globals and function declarations When a module contains globals and/or function declarations only, the '__llvm_profile_raw_version' variable should not be generated because the module was not instrumented at all. NFC --- .../available_externally_functions.ll | 17 +++++++++++++++++ .../Transforms/PGOProfile/declarations_only.ll | 13 +++++++++++++ .../PGOProfile/global_variables_only.ll | 9 +++++++++ 3 files changed, 39 insertions(+) create mode 100644 llvm/test/Transforms/PGOProfile/available_externally_functions.ll create mode 100644 llvm/test/Transforms/PGOProfile/declarations_only.ll create mode 100644 llvm/test/Transforms/PGOProfile/global_variables_only.ll diff --git a/llvm/test/Transforms/PGOProfile/available_externally_functions.ll b/llvm/test/Transforms/PGOProfile/available_externally_functions.ll new file mode 100644 index 0000000000000..f455ca066aa7a --- /dev/null +++ b/llvm/test/Transforms/PGOProfile/available_externally_functions.ll @@ -0,0 +1,17 @@ +; RUN: opt < %s -passes=pgo-instr-gen -S | FileCheck %s --check-prefix=GEN --check-prefix=GEN-COMDAT + +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +; GEN-COMDAT: $__llvm_profile_raw_version = comdat any +; GEN-COMDAT: @__llvm_profile_raw_version = hidden constant i64 {{[0-9]+}}, comdat +; GEN: @__profn_foo = linkonce_odr hidden constant [3 x i8] c"foo" +; GEN: @__profn_bar = linkonce_odr hidden constant [3 x i8] c"bar" + +define available_externally hidden void @foo() { + ret void +} + +define available_externally i32 @bar() { + ret i32 42 +} diff --git a/llvm/test/Transforms/PGOProfile/declarations_only.ll b/llvm/test/Transforms/PGOProfile/declarations_only.ll new file mode 100644 index 0000000000000..e7208fc264c7c --- /dev/null +++ b/llvm/test/Transforms/PGOProfile/declarations_only.ll @@ -0,0 +1,13 @@ +; RUN: opt < %s -passes=pgo-instr-gen -S | FileCheck %s --check-prefix=GEN --check-prefix=GEN-COMDAT + +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +; GEN-COMDAT: $__llvm_profile_raw_version = comdat any +; GEN-COMDAT: @__llvm_profile_raw_version = hidden constant i64 {{[0-9]+}}, comdat +; GEN-NOT: @__profn_test_1 = private constant [6 x i8] c"test_1" +; GEN-NOT: @__profn_test_2 = private constant [6 x i8] c"test_2" + +declare i32 @test_1(i32 %i) + +declare i32 @test_2(i32 %i) diff --git a/llvm/test/Transforms/PGOProfile/global_variables_only.ll b/llvm/test/Transforms/PGOProfile/global_variables_only.ll new file mode 100644 index 0000000000000..3bfa29af5d34f --- /dev/null +++ b/llvm/test/Transforms/PGOProfile/global_variables_only.ll @@ -0,0 +1,9 @@ +; RUN: opt < %s -passes=pgo-instr-gen -S | FileCheck %s --check-prefix=GEN-COMDAT + +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +; GEN-COMDAT: $__llvm_profile_raw_version = comdat any +; GEN-COMDAT: @__llvm_profile_raw_version = hidden constant i64 {{[0-9]+}}, comdat + +@var = internal unnamed_addr global [35 x ptr] zeroinitializer, align 16