From 5502bd66bb97f7cf3888a869b73091c51fdbba4c Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Wed, 3 Jun 2020 09:44:36 +0200 Subject: [PATCH] [profile] Remove useless msync when dumping gcda files Summary: According the mmap man page (https://man7.org/linux/man-pages/man2/mmap.2.html) is only required to precisely control updates, so we can safely remove it. Since gcda files are dumped just before to call exec** functions, dump need to be fast. On my computer, Firefox built with --coverage needs ~1min40 to display something and in removing msync it needs ~8s. Reviewers: void Subscribers: #sanitizers, marco-c, sylvestre.ledru Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D81060 --- compiler-rt/lib/profile/GCDAProfiling.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/compiler-rt/lib/profile/GCDAProfiling.c b/compiler-rt/lib/profile/GCDAProfiling.c index 405568187241..4293e8f7b5bf 100644 --- a/compiler-rt/lib/profile/GCDAProfiling.c +++ b/compiler-rt/lib/profile/GCDAProfiling.c @@ -303,16 +303,11 @@ static void unmap_file() { mmap_handle = NULL; #else - if (msync(write_buffer, file_size, MS_SYNC) == -1) { + if (munmap(write_buffer, file_size) == -1) { int errnum = errno; - fprintf(stderr, "profiling: %s: cannot msync: %s\n", filename, + fprintf(stderr, "profiling: %s: cannot munmap: %s\n", filename, strerror(errnum)); } - - /* We explicitly ignore errors from unmapping because at this point the data - * is written and we don't care. - */ - (void)munmap(write_buffer, file_size); #endif write_buffer = NULL;