+2020-05-05  Martin Liska  <mliska@suse.cz>
+
+       PR gcov-profile/93623
+       * tree-cfg.c (stmt_can_terminate_bb_p): Update comment to reflect
+       reality.
+
 2020-05-05  Martin Liska  <mliska@suse.cz>
 
        * opt-functions.awk (opt_args_non_empty): New function.
 
       && (call_flags & ECF_NOTHROW)
       && !(call_flags & ECF_RETURNS_TWICE)
       /* fork() doesn't really return twice, but the effect of
-         wrapping it in __gcov_fork() which calls __gcov_flush()
-        and clears the counters before forking has the same
+        wrapping it in __gcov_fork() which calls __gcov_dump() and
+        __gcov_reset() and clears the counters before forking has the same
         effect as returning twice.  Force a fake edge.  */
       && !fndecl_built_in_p (fndecl, BUILT_IN_FORK))
     return false;
 
+2020-05-05  Martin Liska  <mliska@suse.cz>
+
+       PR gcov-profile/93623
+       * Makefile.in: Remove __gcov_flush.
+       * gcov.h (__gcov_flush): Remove.
+       * libgcov-interface.c (__gcov_flush): Remove.
+       (init_mx): Use renamed mutex.
+       (__gcov_lock): Likewise.
+       (__gcov_unlock): Likewise.
+       (__gcov_fork): Likewise.
+       (__gcov_flush): Remove.
+
 2020-05-05  Martin Liska  <mliska@suse.cz>
 
        PR gcov-profile/93623
 
        _gcov_ior_profiler_atomic                                       \
        _gcov_indirect_call_profiler_v4                                 \
        _gcov_time_profiler
-LIBGCOV_INTERFACE = _gcov_dump _gcov_flush _gcov_fork                  \
+LIBGCOV_INTERFACE = _gcov_dump _gcov_fork                              \
        _gcov_execl _gcov_execlp                                        \
        _gcov_execle _gcov_execv _gcov_execvp _gcov_execve _gcov_reset  \
        _gcov_lock_unlock
 
 
 extern void __gcov_dump (void);
 
-/* Write profile information to a file and reset counters to zero.
-   The function does operations under a mutex.  */
-
-extern void __gcov_flush (void);
-
 #endif /* GCC_GCOV_H */
 
 
 #if defined(inhibit_libc)
 
-#ifdef L_gcov_flush
-void __gcov_flush (void) {}
-#endif
-
 #ifdef L_gcov_reset
 void __gcov_reset (void) {}
 #endif
 
 #else
 
-extern __gthread_mutex_t __gcov_flush_mx ATTRIBUTE_HIDDEN;
+extern __gthread_mutex_t __gcov_mx ATTRIBUTE_HIDDEN;
 
 #ifdef L_gcov_lock_unlock
 #ifdef __GTHREAD_MUTEX_INIT
-__gthread_mutex_t __gcov_flush_mx = __GTHREAD_MUTEX_INIT;
+__gthread_mutex_t __gcov_mx = __GTHREAD_MUTEX_INIT;
 #define init_mx_once()
 #else
-__gthread_mutex_t __gcov_flush_mx;
+__gthread_mutex_t __gcov_mx;
 
 static void
 init_mx (void)
 {
-  __GTHREAD_MUTEX_INIT_FUNCTION (&__gcov_flush_mx);
+  __GTHREAD_MUTEX_INIT_FUNCTION (&__gcov_mx);
 }
 
 static void
 __gcov_lock (void)
 {
   init_mx_once ();
-  __gthread_mutex_lock (&__gcov_flush_mx);
+  __gthread_mutex_lock (&__gcov_mx);
 }
 
 /* Unlock critical section for __gcov_dump and __gcov_reset functions.  */
 void
 __gcov_unlock (void)
 {
-  __gthread_mutex_unlock (&__gcov_flush_mx);
+  __gthread_mutex_unlock (&__gcov_mx);
 }
 #endif
 
-#ifdef L_gcov_flush
-/* Called before fork or exec - write out profile information gathered so
-   far and reset it to zero.  This avoids duplication or loss of the
-   profile information gathered so far.  */
-
-void
-__gcov_flush (void)
-{
-  __gcov_lock ();
-
-  __gcov_dump_int ();
-  __gcov_reset_int ();
-
-  __gcov_unlock ();
-}
-
-#endif /* L_gcov_flush */
-
 #ifdef L_gcov_reset
 
 /* Reset all counters to zero.  */
   pid = fork ();
   if (pid == 0)
     {
-      __GTHREAD_MUTEX_INIT_FUNCTION (&__gcov_flush_mx);
+      __GTHREAD_MUTEX_INIT_FUNCTION (&__gcov_mx);
       /* We do not need locking as we are the only thread in the child.  */
       __gcov_reset_int ();
     }