Skip to content

Commit

Permalink
[GCDAProfiling] Suppress -Wprio-ctor-dtor for GCC>=9 and remove unuse… (
Browse files Browse the repository at this point in the history
#73)

…d write_string/length_of_string

The `__attribute__((destructor(100)))` diagnostic does not have a
warning option in GCC 8 (before r264853) and thus cannot be suppressed.

--

ported from llvm/llvm-project fix:

llvm@1cfde14

https://bugs.llvm.org/show_bug.cgi?id=47399

(Fixes problem behind rust-lang/rust#76224)
  • Loading branch information
richkadel authored Sep 4, 2020
1 parent 4d40ae5 commit 833dd1e
Showing 1 changed file with 3 additions and 16 deletions.
19 changes: 3 additions & 16 deletions compiler-rt/lib/profile/GCDAProfiling.c
Original file line number Diff line number Diff line change
Expand Up @@ -210,22 +210,6 @@ static void write_64bit_value(uint64_t i) {
write_32bit_value(hi);
}

static uint32_t length_of_string(const char *s) {
return (strlen(s) / 4) + 1;
}

// Remove when we support libgcov 9 current_working_directory.
#if !defined(_MSC_VER) && defined(__clang__)
__attribute__((unused))
#endif
static void
write_string(const char *s) {
uint32_t len = length_of_string(s);
write_32bit_value(len);
write_bytes(s, strlen(s));
write_bytes("\0\0\0\0", 4 - (strlen(s) % 4));
}

static uint32_t read_32bit_value() {
uint32_t val;

Expand Down Expand Up @@ -632,6 +616,9 @@ void llvm_writeout_files(void) {
// __attribute__((destructor)) and destructors whose priorities are greater than
// 100 run before this function and can thus be tracked. The priority is
// compatible with GCC 7 onwards.
#if __GNUC__ >= 9
#pragma GCC diagnostic ignored "-Wprio-ctor-dtor"
#endif
__attribute__((destructor(100)))
#endif
static void llvm_writeout_and_clear(void) {
Expand Down

0 comments on commit 833dd1e

Please sign in to comment.