I think these asserts will be used by gcov-tool. So I prefer to change them to gcov_nonruntime_assert(). I'll merge them in my new gcov-tool patch before submitting (waiting for honaz's ok).
Thanks, -Rong On Thu, May 22, 2014 at 7:09 AM, Teresa Johnson <tejohn...@google.com> wrote: > On Thu, Jan 16, 2014 at 2:41 PM, Jan Hubicka <hubi...@ucw.cz> wrote: >>> On Wed, Jan 15, 2014 at 8:39 PM, Jan Hubicka <hubi...@ucw.cz> wrote: >>> >> >>> >> In that case should we call gcov_error when IN_LIBGCOV? One >>> >> possibility would be to simply make gcov_nonruntime_assert be defined >>> >> as if (!EXPR) gcov_error in the IN_LIBGCOV case. But I think what you >>> >> wanted here was to reduce libgcov bloat by removing calls altogether, >>> >> which this wouldn't solve. But if we want to call gcov_error in some >>> >> cases, I think I need to add another macro that will either do >>> >> gcc_assert when !IN_LIBGCOV and "if (!EXPR) gcov_error" when >>> >> IN_LIBGCOV. Is that what you had in mind? >>> > >>> > I think for errors that can be triggered by data corruption, we ought to >>> > produce resonable error messages in both IN_LIBGCOV or for offline tools. >>> > Just unwound sequence if(...) gcov_error seems fine to me in this case, >>> > but we may also have assert like wrapper. >>> > I see we do not provide gcov_error outside libgcov, we probably ought to >>> > map >>> > it to fatal_error in GCC binary. >>> > >>> > thanks, >>> > Honza >>> >>> Ok, here is the new patch. Bootstrapped and tested on >>> x86_64-unknown-linux-gnu. Ok for trunk? >>> >>> Thanks, Teresa >>> >>> 2014-01-16 Teresa Johnson <tejohn...@google.com> >>> >>> * gcov-io.c (gcov_position): Use gcov_nonruntime_assert. >>> (gcov_is_error): Remove gcc_assert from IN_LIBGCOV code. >>> (gcov_rewrite): Use gcov_nonruntime_assert. >>> (gcov_open): Ditto. >>> (gcov_write_words): Ditto. >>> (gcov_write_length): Ditto. >>> (gcov_read_words): Use gcov_nonruntime_assert, and remove >>> gcc_assert from IN_LIBGCOV code. >>> (gcov_read_summary): Use gcov_error to flag profile corruption. >>> (gcov_sync): Use gcov_nonruntime_assert. >>> (gcov_seek): Remove gcc_assert from IN_LIBGCOV code. >>> (gcov_histo_index): Use gcov_nonruntime_assert. >>> (static void gcov_histogram_merge): Ditto. >>> (compute_working_sets): Ditto. >>> * gcov-io.h (gcov_nonruntime_assert): Define. >>> (gcov_error): Define for !IN_LIBGCOV >> >> OK, thanks! >> Honza > > I just found this old patch sitting in a client! Committed as r210805. > > I also discovered that a couple uses of gcc_assert have snuck into > libgcc/libgcov* files in the meantime. Looks like this got added > during some of Rong's refactoring, cc'ing Rong. They are in > libgcc/libgcov-driver-system.c (allocate_filename_struct) and > libgcov-merge.c (__gcov_merge_single and __gcov_merge_delta). Should I > remove those or change to gcov_error? > > Teresa > > > > -- > Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413