Skip to content

Revert "Reland "[PGO][GlobalValue][LTO]In GlobalValues::getGlobalIdentifier, use semicolon as delimiter for local-linkage varibles. "" #75888

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Dec 19, 2023

Conversation

mingmingl-llvm
Copy link
Contributor

…tifier, use semicolon as delimiter for local-linkage varibles. " (#75860)"

This reverts commit c587171.
@llvmbot llvmbot added compiler-rt PGO Profile Guided Optimizations LTO Link time optimization (regular/full LTO or ThinLTO) llvm:ir llvm:transforms labels Dec 19, 2023
@llvmbot
Copy link
Member

llvmbot commented Dec 19, 2023

@llvm/pr-subscribers-llvm-transforms
@llvm/pr-subscribers-llvm-ir

@llvm/pr-subscribers-pgo

Author: Mingming Liu (minglotus-6)

Changes

Reverts llvm/llvm-project#75860


Patch is 44.29 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/75888.diff

18 Files Affected:

  • (modified) compiler-rt/test/profile/CMakeLists.txt (+1-1)
  • (removed) compiler-rt/test/profile/instrprof-thinlto-indirect-call-promotion.cpp (-115)
  • (modified) llvm/include/llvm/IR/GlobalValue.h (-4)
  • (modified) llvm/include/llvm/ProfileData/InstrProf.h (+11-15)
  • (modified) llvm/lib/IR/Globals.cpp (+5-7)
  • (modified) llvm/lib/ProfileData/InstrProf.cpp (+9-27)
  • (modified) llvm/lib/ProfileData/InstrProfReader.cpp (+4-5)
  • (modified) llvm/test/Bitcode/thinlto-function-summary-originalnames.ll (+5-5)
  • (modified) llvm/test/ThinLTO/X86/memprof-basic.ll (+13-13)
  • (modified) llvm/test/ThinLTO/X86/memprof-duplicate-context-ids.ll (+5-5)
  • (modified) llvm/test/ThinLTO/X86/memprof-funcassigncloning.ll (+3-3)
  • (modified) llvm/test/ThinLTO/X86/memprof-indirectcall.ll (+16-16)
  • (modified) llvm/test/ThinLTO/X86/memprof-inlined.ll (+7-7)
  • (added) llvm/test/Transforms/PGOProfile/Inputs/thinlto_indirect_call_promotion.ll (+16)
  • (removed) llvm/test/Transforms/PGOProfile/Inputs/thinlto_indirect_call_promotion.profraw ()
  • (removed) llvm/test/Transforms/PGOProfile/Inputs/update_thinlto_indirect_call_promotion_inputs.sh (-62)
  • (modified) llvm/test/Transforms/PGOProfile/thinlto_indirect_call_promotion.ll (+30-75)
  • (modified) llvm/unittests/ProfileData/InstrProfTest.cpp (+2-2)
diff --git a/compiler-rt/test/profile/CMakeLists.txt b/compiler-rt/test/profile/CMakeLists.txt
index eebe0469efebe0..975e4c42f4b640 100644
--- a/compiler-rt/test/profile/CMakeLists.txt
+++ b/compiler-rt/test/profile/CMakeLists.txt
@@ -6,7 +6,7 @@ set(PROFILE_TESTSUITES)
 set(PROFILE_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS} compiler-rt-headers)
 list(APPEND PROFILE_TEST_DEPS profile)
 if(NOT COMPILER_RT_STANDALONE_BUILD)
-  list(APPEND PROFILE_TEST_DEPS llvm-cov llvm-dis llvm-lto llvm-profdata opt)
+  list(APPEND PROFILE_TEST_DEPS llvm-profdata llvm-cov)
   if(NOT APPLE AND COMPILER_RT_HAS_LLD AND "lld" IN_LIST LLVM_ENABLE_PROJECTS)
     list(APPEND PROFILE_TEST_DEPS lld)
   endif()
diff --git a/compiler-rt/test/profile/instrprof-thinlto-indirect-call-promotion.cpp b/compiler-rt/test/profile/instrprof-thinlto-indirect-call-promotion.cpp
deleted file mode 100644
index 82ca1cd7d0a564..00000000000000
--- a/compiler-rt/test/profile/instrprof-thinlto-indirect-call-promotion.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-// This is a regression test for ThinLTO indirect-call-promotion when candidate
-// callees need to be imported from another IR module.  In the C++ test case,
-// `main` calls `global_func` which is defined in another module. `global_func`
-// has two indirect callees, one has external linkage and one has local linkage.
-// All three functions should be imported into the IR module of main.
-
-// What the test does:
-// - Generate raw profiles from executables and convert it to indexed profiles.
-//   During the conversion, a profiled callee address in raw profiles will be
-//   converted to function hash in indexed profiles.
-// - Run IRPGO profile use and ThinTLO prelink pipeline and get LLVM bitcodes
-//   for both cpp files in the C++ test case.
-// - Generate ThinLTO summary file with LLVM bitcodes, and run `function-import` pass.
-// - Run `pgo-icall-prom` pass for the IR module which needs to import callees.
-
-// Use lld as linker for more robust test. We need to REQUIRE LLVMgold.so for
-// LTO if default linker is GNU ld or gold anyway.
-// REQUIRES: lld-available
-
-// Test should fail where linkage-name and mangled-name diverges, see issue https://github.com/llvm/llvm-project/issues/74565).
-// Currently, this name divergence happens on Mach-O object file format, or on
-// many (but not all) 32-bit Windows systems.
-//
-// XFAIL: system-darwin
-//
-// Mark 32-bit Windows as UNSUPPORTED for now as opposed to XFAIL. This test
-// should fail on many (but not all) 32-bit Windows systems and succeed on the
-// rest. The flexibility in triple string parsing makes it tricky to capture
-// both sets accurately. i[3-9]86 specifies arch as Triple::ArchType::x86, (win32|windows)
-// specifies OS as Triple::OS::Win32
-//
-// UNSUPPORTED: target={{i.86.*windows.*}}
-
-// RUN: rm -rf %t && split-file %s %t && cd %t
-
-// Do setup work for all below tests.
-// Generate raw profiles from real programs and convert it into indexed profiles.
-// Use clangxx_pgogen for IR level instrumentation for C++.
-// RUN: %clangxx_pgogen -fuse-ld=lld -O2 lib.cpp main.cpp -o main
-// RUN: env LLVM_PROFILE_FILE=main.profraw %run ./main
-// RUN: llvm-profdata merge main.profraw -o main.profdata
-
-// Use profile on lib and get bitcode, test that local function callee0 has
-// expected !PGOFuncName metadata and external function callee1 doesn't have
-// !PGOFuncName metadata. Explicitly skip ICP pass to test ICP happens as
-// expected in the IR module that imports functions from lib.
-// RUN: %clang -mllvm -disable-icp -fprofile-use=main.profdata -flto=thin -O2 -c lib.cpp -o lib.bc
-// RUN: llvm-dis lib.bc -o - | FileCheck %s --check-prefix=PGOName
-
-// Use profile on main and get bitcode.
-// RUN: %clang -fprofile-use=main.profdata -flto=thin -O2 -c main.cpp -o main.bc
-
-// Run llvm-lto to get summary file.
-// RUN: llvm-lto -thinlto -o summary main.bc lib.bc
-
-// Test the imports of functions. Default import thresholds would work but do
-// explicit override to be more futureproof. Note all functions have one basic
-// block with a function-entry-count of one, so they are actually hot functions
-// per default profile summary hotness cutoff.
-// RUN: opt -passes=function-import -import-instr-limit=100 -import-cold-multiplier=1 -summary-file summary.thinlto.bc main.bc -o main.import.bc -print-imports 2>&1 | FileCheck %s --check-prefix=IMPORTS
-// Test that '_Z11global_funcv' has indirect calls annotated with value profiles.
-// RUN: llvm-dis main.import.bc -o - | FileCheck %s --check-prefix=IR
-
-// Test that both candidates are ICP'ed and there is no `!VP` in the IR.
-// RUN: opt main.import.bc -icp-lto -passes=pgo-icall-prom -S -pass-remarks=pgo-icall-prom 2>&1 | FileCheck %s --check-prefixes=ICP-IR,ICP-REMARK --implicit-check-not="!VP"
-
-// IMPORTS: main.cpp: Import _Z7callee1v
-// IMPORTS: main.cpp: Import _ZL7callee0v.llvm.[[#]]
-// IMPORTS: main.cpp: Import _Z11global_funcv
-
-// PGOName: define {{(dso_local )?}}void @_Z7callee1v() #[[#]] !prof ![[#]] {
-// PGOName: define internal void @_ZL7callee0v() #[[#]] !prof ![[#]] !PGOFuncName ![[#MD:]] {
-// PGOName: ![[#MD]] = !{!"{{.*}}lib.cpp;_ZL7callee0v"}
-
-// IR-LABEL: define available_externally {{.*}} void @_Z11global_funcv() {{.*}} !prof ![[#]] {
-// IR-NEXT: entry:
-// IR-NEXT:  %0 = load ptr, ptr @calleeAddrs
-// IR-NEXT:  tail call void %0(), !prof ![[#PROF1:]]
-// IR-NEXT:  %1 = load ptr, ptr getelementptr inbounds ([2 x ptr], ptr @calleeAddrs,
-// IR-NEXT:  tail call void %1(), !prof ![[#PROF2:]]
-
-// The GUID of indirect callee is the MD5 hash of `/path/to/lib.cpp;_ZL7callee0v`
-// that depends on the directory. Use [[#]] for its MD5 hash.
-// Use {{.*}} for integer types so the test works on 32-bit and 64-bit systems.
-// IR: ![[#PROF1]] = !{!"VP", i32 0, {{.*}} 1, {{.*}} [[#]], {{.*}} 1}
-// IR: ![[#PROF2]] = !{!"VP", i32 0, {{.*}} 1, {{.*}} -3993653843325621743, {{.*}} 1}
-
-// ICP-REMARK: Promote indirect call to _ZL7callee0v.llvm.[[#]] with count 1 out of 1
-// ICP-REMARK: Promote indirect call to _Z7callee1v with count 1 out of 1
-
-// ICP-IR: br i1 %[[#]], label %if.true.direct_targ, label %if.false.orig_indirect, !prof ![[#BRANCH_WEIGHT1:]]
-// ICP-IR: br i1 %[[#]], label %if.true.direct_targ1, label %if.false.orig_indirect2, !prof ![[#BRANCH_WEIGHT1]]
-// ICP-IR: ![[#BRANCH_WEIGHT1]] = !{!"branch_weights", i32 1, i32 0}
-
-//--- lib.h
-void global_func();
-
-//--- lib.cpp
-#include "lib.h"
-static void callee0() {}
-void callee1() {}
-typedef void (*FPT)();
-FPT calleeAddrs[] = {callee0, callee1};
-// `global_func`` might call one of two indirect callees. callee0 has internal
-// linkage and callee1 has external linkage.
-void global_func() {
-  FPT fp = calleeAddrs[0];
-  fp();
-  fp = calleeAddrs[1];
-  fp();
-}
-
-//--- main.cpp
-#include "lib.h"
-int main() { global_func(); }
diff --git a/llvm/include/llvm/IR/GlobalValue.h b/llvm/include/llvm/IR/GlobalValue.h
index e97a7f2b963606..d1891c157099d4 100644
--- a/llvm/include/llvm/IR/GlobalValue.h
+++ b/llvm/include/llvm/IR/GlobalValue.h
@@ -41,10 +41,6 @@ namespace Intrinsic {
 typedef unsigned ID;
 } // end namespace Intrinsic
 
-// Choose ';' as the delimiter. ':' was used once but it doesn't work well for
-// Objective-C functions which commonly have :'s in their names.
-inline constexpr char kGlobalIdentifierDelimiter = ';';
-
 class GlobalValue : public Constant {
 public:
   /// An enumeration for the kinds of linkage for global values.
diff --git a/llvm/include/llvm/ProfileData/InstrProf.h b/llvm/include/llvm/ProfileData/InstrProf.h
index 36be2e7d869e7b..288dc71d756aee 100644
--- a/llvm/include/llvm/ProfileData/InstrProf.h
+++ b/llvm/include/llvm/ProfileData/InstrProf.h
@@ -171,8 +171,6 @@ inline StringRef getInstrProfCounterBiasVarName() {
 /// Return the marker used to separate PGO names during serialization.
 inline StringRef getInstrProfNameSeparator() { return "\01"; }
 
-/// Please use getIRPGOFuncName for LLVM IR instrumentation. This function is
-/// for front-end (Clang, etc) instrumentation.
 /// Return the modified name for function \c F suitable to be
 /// used the key for profile lookup. Variable \c InLTO indicates if this
 /// is called in LTO optimization passes.
@@ -198,22 +196,20 @@ std::string getIRPGOFuncName(const Function &F, bool InLTO = false);
 std::pair<StringRef, StringRef> getParsedIRPGOFuncName(StringRef IRPGOFuncName);
 
 /// Return the name of the global variable used to store a function
-/// name in PGO instrumentation. \c FuncName is the IRPGO function name
-/// (returned by \c getIRPGOFuncName) for LLVM IR instrumentation and PGO
-/// function name (returned by \c getPGOFuncName) for front-end instrumentation.
+/// name in PGO instrumentation. \c FuncName is the name of the function
+/// returned by the \c getPGOFuncName call.
 std::string getPGOFuncNameVarName(StringRef FuncName,
                                   GlobalValue::LinkageTypes Linkage);
 
 /// Create and return the global variable for function name used in PGO
-/// instrumentation. \c FuncName is the IRPGO function name (returned by
-/// \c getIRPGOFuncName) for LLVM IR instrumentation and PGO function name
-/// (returned by \c getPGOFuncName) for front-end instrumentation.
+/// instrumentation. \c FuncName is the name of the function returned
+/// by \c getPGOFuncName call.
 GlobalVariable *createPGOFuncNameVar(Function &F, StringRef PGOFuncName);
 
 /// Create and return the global variable for function name used in PGO
-/// instrumentation. \c FuncName is the IRPGO function name (returned by
-/// \c getIRPGOFuncName) for LLVM IR instrumentation and PGO function name
-/// (returned by \c getPGOFuncName) for front-end instrumentation.
+/// instrumentation.  /// \c FuncName is the name of the function
+/// returned by \c getPGOFuncName call, \c M is the owning module,
+/// and \c Linkage is the linkage of the instrumented function.
 GlobalVariable *createPGOFuncNameVar(Module &M,
                                      GlobalValue::LinkageTypes Linkage,
                                      StringRef PGOFuncName);
@@ -421,11 +417,11 @@ uint64_t ComputeHash(StringRef K);
 
 } // end namespace IndexedInstrProf
 
-/// A symbol table used for function [IR]PGO name look-up with keys
+/// A symbol table used for function PGO name look-up with keys
 /// (such as pointers, md5hash values) to the function. A function's
-/// [IR]PGO name or name's md5hash are used in retrieving the profile
-/// data of the function. See \c getIRPGOFuncName() and \c getPGOFuncName
-/// methods for details how [IR]PGO name is formed.
+/// PGO name or name's md5hash are used in retrieving the profile
+/// data of the function. See \c getPGOFuncName() method for details
+/// on how PGO name is formed.
 class InstrProfSymtab {
 public:
   using AddrHashMap = std::vector<std::pair<uint64_t, uint64_t>>;
diff --git a/llvm/lib/IR/Globals.cpp b/llvm/lib/IR/Globals.cpp
index 239acd2181e854..51bdbeb0abf2c4 100644
--- a/llvm/lib/IR/Globals.cpp
+++ b/llvm/lib/IR/Globals.cpp
@@ -144,27 +144,25 @@ void GlobalObject::copyAttributesFrom(const GlobalObject *Src) {
 std::string GlobalValue::getGlobalIdentifier(StringRef Name,
                                              GlobalValue::LinkageTypes Linkage,
                                              StringRef FileName) {
+
   // Value names may be prefixed with a binary '1' to indicate
   // that the backend should not modify the symbols due to any platform
   // naming convention. Do not include that '1' in the PGO profile name.
   if (Name[0] == '\1')
     Name = Name.substr(1);
 
-  std::string GlobalName;
+  std::string NewName = std::string(Name);
   if (llvm::GlobalValue::isLocalLinkage(Linkage)) {
     // For local symbols, prepend the main file name to distinguish them.
     // Do not include the full path in the file name since there's no guarantee
     // that it will stay the same, e.g., if the files are checked out from
     // version control in different locations.
     if (FileName.empty())
-      GlobalName += "<unknown>";
+      NewName = NewName.insert(0, "<unknown>:");
     else
-      GlobalName += FileName;
-
-    GlobalName += kGlobalIdentifierDelimiter;
+      NewName = NewName.insert(0, FileName.str() + ":");
   }
-  GlobalName += Name;
-  return GlobalName;
+  return NewName;
 }
 
 std::string GlobalValue::getGlobalIdentifier() const {
diff --git a/llvm/lib/ProfileData/InstrProf.cpp b/llvm/lib/ProfileData/InstrProf.cpp
index 134a400e639c4b..649d814cfd9de0 100644
--- a/llvm/lib/ProfileData/InstrProf.cpp
+++ b/llvm/lib/ProfileData/InstrProf.cpp
@@ -246,27 +246,11 @@ std::string InstrProfError::message() const {
 
 char InstrProfError::ID = 0;
 
-std::string getPGOFuncName(StringRef Name, GlobalValue::LinkageTypes Linkage,
+std::string getPGOFuncName(StringRef RawFuncName,
+                           GlobalValue::LinkageTypes Linkage,
                            StringRef FileName,
                            uint64_t Version LLVM_ATTRIBUTE_UNUSED) {
-  // Value names may be prefixed with a binary '1' to indicate
-  // that the backend should not modify the symbols due to any platform
-  // naming convention. Do not include that '1' in the PGO profile name.
-  if (Name[0] == '\1')
-    Name = Name.substr(1);
-
-  std::string NewName = std::string(Name);
-  if (llvm::GlobalValue::isLocalLinkage(Linkage)) {
-    // For local symbols, prepend the main file name to distinguish them.
-    // Do not include the full path in the file name since there's no guarantee
-    // that it will stay the same, e.g., if the files are checked out from
-    // version control in different locations.
-    if (FileName.empty())
-      NewName = NewName.insert(0, "<unknown>:");
-    else
-      NewName = NewName.insert(0, FileName.str() + ":");
-  }
-  return NewName;
+  return GlobalValue::getGlobalIdentifier(RawFuncName, Linkage, FileName);
 }
 
 // Strip NumPrefix level of directory name from PathNameStr. If the number of
@@ -316,10 +300,12 @@ getIRPGONameForGlobalObject(const GlobalObject &GO,
                             GlobalValue::LinkageTypes Linkage,
                             StringRef FileName) {
   SmallString<64> Name;
-  // FIXME: Mangler's handling is kept outside of `getGlobalIdentifier` for now.
-  // For more details please check issue #74565.
+  if (llvm::GlobalValue::isLocalLinkage(Linkage)) {
+    Name.append(FileName.empty() ? "<unknown>" : FileName);
+    Name.append(";");
+  }
   Mangler().getNameWithPrefix(Name, &GO, /*CannotUsePrivateLabel=*/true);
-  return GlobalValue::getGlobalIdentifier(Name, Linkage, FileName);
+  return Name.str().str();
 }
 
 static std::optional<std::string> lookupPGONameFromMetadata(MDNode *MD) {
@@ -366,9 +352,6 @@ std::string getIRPGOFuncName(const Function &F, bool InLTO) {
   return getIRPGOObjectName(F, InLTO, getPGOFuncNameMetadata(F));
 }
 
-// Please use getIRPGOFuncName for LLVM IR instrumentation. This function is
-// for front-end (Clang, etc) instrumentation.
-// The implementation is kept for profile matching from older profiles.
 // This is similar to `getIRPGOFuncName` except that this function calls
 // 'getPGOFuncName' to get a name and `getIRPGOFuncName` calls
 // 'getIRPGONameForGlobalObject'. See the difference between two callees in the
@@ -401,8 +384,7 @@ getParsedIRPGOFuncName(StringRef IRPGOFuncName) {
 StringRef getFuncNameWithoutPrefix(StringRef PGOFuncName, StringRef FileName) {
   if (FileName.empty())
     return PGOFuncName;
-  // Drop the file name including ':' or ';'. See getIRPGONameForGlobalObject as
-  // well.
+  // Drop the file name including ':'. See also getPGOFuncName.
   if (PGOFuncName.starts_with(FileName))
     PGOFuncName = PGOFuncName.drop_front(FileName.size() + 1);
   return PGOFuncName;
diff --git a/llvm/lib/ProfileData/InstrProfReader.cpp b/llvm/lib/ProfileData/InstrProfReader.cpp
index 8f62df79d5b7e8..068922d421f8b9 100644
--- a/llvm/lib/ProfileData/InstrProfReader.cpp
+++ b/llvm/lib/ProfileData/InstrProfReader.cpp
@@ -1008,13 +1008,12 @@ class llvm::InstrProfReaderItaniumRemapper
 
   /// Extract the original function name from a PGO function name.
   static StringRef extractName(StringRef Name) {
-    // We can have multiple pieces separated by kGlobalIdentifierDelimiter (
-    // semicolon now and colon in older profiles); there can be pieces both
-    // before and after the mangled name. Find the first part that starts with
-    // '_Z'; we'll assume that's the mangled name we want.
+    // We can have multiple :-separated pieces; there can be pieces both
+    // before and after the mangled name. Find the first part that starts
+    // with '_Z'; we'll assume that's the mangled name we want.
     std::pair<StringRef, StringRef> Parts = {StringRef(), Name};
     while (true) {
-      Parts = Parts.second.split(kGlobalIdentifierDelimiter);
+      Parts = Parts.second.split(':');
       if (Parts.first.starts_with("_Z"))
         return Parts.first;
       if (Parts.second.empty())
diff --git a/llvm/test/Bitcode/thinlto-function-summary-originalnames.ll b/llvm/test/Bitcode/thinlto-function-summary-originalnames.ll
index 0139f00b4aa3f4..7cc9654c8c7b12 100644
--- a/llvm/test/Bitcode/thinlto-function-summary-originalnames.ll
+++ b/llvm/test/Bitcode/thinlto-function-summary-originalnames.ll
@@ -6,13 +6,13 @@
 ; COMBINED:       <GLOBALVAL_SUMMARY_BLOCK
 ; COMBINED-NEXT:    <VERSION
 ; COMBINED-NEXT:    <FLAGS
-; COMBINED-NEXT:    <VALUE_GUID {{.*}} op1=686735765308251824/>
-; COMBINED-NEXT:    <VALUE_GUID {{.*}} op1=4507502870619175775/>
-; COMBINED-NEXT:    <VALUE_GUID {{.*}} op1=-8118561185538785069/>
+; COMBINED-NEXT:    <VALUE_GUID {{.*}} op1=4947176790635855146/>
+; COMBINED-NEXT:    <VALUE_GUID {{.*}} op1=-6591587165810580810/>
+; COMBINED-NEXT:    <VALUE_GUID {{.*}} op1=-4377693495213223786/>
 ; COMBINED-DAG:    <COMBINED_PROFILE{{ }}
-; COMBINED-DAG:    <COMBINED_ORIGINAL_NAME op0=-2012135647395072713/>
-; COMBINED-DAG:    <COMBINED_GLOBALVAR_INIT_REFS
 ; COMBINED-DAG:    <COMBINED_ORIGINAL_NAME op0=6699318081062747564/>
+; COMBINED-DAG:    <COMBINED_GLOBALVAR_INIT_REFS
+; COMBINED-DAG:    <COMBINED_ORIGINAL_NAME op0=-2012135647395072713/>
 ; COMBINED-DAG:    <COMBINED_ALIAS
 ; COMBINED-DAG:    <COMBINED_ORIGINAL_NAME op0=-4170563161550796836/>
 ; COMBINED-NEXT:  </GLOBALVAL_SUMMARY_BLOCK>
diff --git a/llvm/test/ThinLTO/X86/memprof-basic.ll b/llvm/test/ThinLTO/X86/memprof-basic.ll
index 54e01e5fcdf955..0d466830ba57d6 100644
--- a/llvm/test/ThinLTO/X86/memprof-basic.ll
+++ b/llvm/test/ThinLTO/X86/memprof-basic.ll
@@ -148,7 +148,7 @@ attributes #0 = { noinline optnone }
 ; DUMP: 		Edge from Callee [[BAR]] to Caller: [[BAZ:0x[a-z0-9]+]] AllocTypes: NotColdCold ContextIds: 1 2
 
 ; DUMP: Node [[BAZ]]
-; DUMP: 	Callee: 11481133863268513686 (_Z3barv) Clones: 0 StackIds: 2	(clone 0)
+; DUMP: 	Callee: 9832687305761716512 (_Z3barv) Clones: 0 StackIds: 2	(clone 0)
 ; DUMP: 	AllocTypes: NotColdCold
 ; DUMP: 	ContextIds: 1 2
 ; DUMP: 	CalleeEdges:
@@ -157,7 +157,7 @@ attributes #0 = { noinline optnone }
 ; DUMP: 		Edge from Callee [[BAZ]] to Caller: [[FOO:0x[a-z0-9]+]] AllocTypes: NotColdCold ContextIds: 1 2
 
 ; DUMP: Node [[FOO]]
-; DUMP: 	Callee: 1807954217441101578 (_Z3bazv) Clones: 0 StackIds: 3	(clone 0)
+; DUMP: 	Callee: 5878270615442837395 (_Z3bazv) Clones: 0 StackIds: 3	(clone 0)
 ; DUMP: 	AllocTypes: NotColdCold
 ; DUMP: 	ContextIds: 1 2
 ; DUMP: 	CalleeEdges:
@@ -167,7 +167,7 @@ attributes #0 = { noinline optnone }
 ; DUMP: 		Edge from Callee [[FOO]] to Caller: [[MAIN2:0x[a-z0-9]+]] AllocTypes: Cold ContextIds: 2
 
 ; DUMP: Node [[MAIN1]]
-; DUMP: 	Callee: 8107868197919466657 (_Z3foov) Clones: 0 StackIds: 0	(clone 0)
+; DUMP: 	Callee: 6731117468105397038 (_Z3foov) Clones: 0 StackIds: 0	(clone 0)
 ; DUMP: 	AllocTypes: NotCold
 ; DUMP: 	ContextIds: 1
 ; DUMP: 	CalleeEdges:
@@ -175,7 +175,7 @@ attributes #0 = { noinline optnone }
 ; DUMP: 	CallerEdges:
 
 ; DUMP: Node [[MAIN2]]
-; DUMP: 	Callee: 8107868197919466657 (_Z3foov) Clones: 0 StackIds: 1	(clone 0)
+; DUMP: 	Callee: 6731117468105397038 (_Z3foov) Clones: 0 StackIds: 1	(clone 0)
 ; DUMP: 	AllocTypes: Cold
 ; DUMP: 	ContextIds: 2
 ; DUMP: 	CalleeEdges:
@@ -197,7 +197,7 @@ attributes #0 = { noinline optnone }
 ; DUMP:		Clones: [[BAR2:0x[a-z0-9]+]]
 
 ; DUMP: Node [[BAZ]]
-; DUMP: 	Callee: 11481133863268513686 (_Z3barv) Clones: 0 StackIds: 2    (clone 0)
+; DUMP: 	Callee: 9832687305761716512 (_Z3barv) Clones:...
[truncated]

@mingmingl-llvm mingmingl-llvm merged commit 6ce23ea into main Dec 19, 2023
@mingmingl-llvm mingmingl-llvm deleted the revert-75860-icptestfixbotfailure branch December 19, 2023 03:31
mingmingl-llvm added a commit to mingmingl-llvm/llvm-project that referenced this pull request Dec 19, 2023
…ntifier, use semicolon as delimiter for local-linkage varibles. "" (llvm#75888)

This reverts commit 6ce23ea.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compiler-rt llvm:ir llvm:transforms LTO Link time optimization (regular/full LTO or ThinLTO) PGO Profile Guided Optimizations
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants