| From 1df7289af66c630480a676e2a5347dca5a3ede15 Mon Sep 17 00:00:00 2001 |
| From: Pirama Arumuga Nainar <pirama@google.com> |
| Date: Tue, 23 Nov 2021 10:03:04 -0800 |
| Subject: [PATCH] [compiler-rt/profile] Include __llvm_profile_get_magic in |
| module signature |
| |
| The INSTR_PROF_RAW_MAGIC_* number in profraw files should match during |
| profile merging. This causes an error with 32-bit and 64-bit variants |
| of the same code. The module signatures for the two binaries are |
| identical but they use different INSTR_PROF_RAW_MAGIC_* causing a |
| failure when profile-merging is used. Including it when computing the |
| module signature yields different signatures for the 32-bit and 64-bit |
| profiles. |
| |
| Differential Revision: https://reviews.llvm.org/D114054 |
| --- |
| compiler-rt/lib/profile/InstrProfilingMerge.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| diff --git a/compiler-rt/lib/profile/InstrProfilingMerge.c b/compiler-rt/lib/profile/InstrProfilingMerge.c |
| index 674b1898b046..80db2527461e 100644 |
| --- a/compiler-rt/lib/profile/InstrProfilingMerge.c |
| +++ b/compiler-rt/lib/profile/InstrProfilingMerge.c |
| @@ -34,7 +34,8 @@ uint64_t lprofGetLoadModuleSignature() { |
| const __llvm_profile_data *FirstD = __llvm_profile_begin_data(); |
| |
| return (NamesSize << 40) + (CounterSize << 30) + (DataSize << 20) + |
| - (NumVnodes << 10) + (DataSize > 0 ? FirstD->NameRef : 0) + Version; |
| + (NumVnodes << 10) + (DataSize > 0 ? FirstD->NameRef : 0) + Version + |
| + __llvm_profile_get_magic(); |
| } |
| |
| /* Returns 1 if profile is not structurally compatible. */ |
| -- |
| 2.34.0.rc2.393.gf8c9666880-goog |
| |