From: Eric Botcazou Date: Tue, 25 Oct 2022 10:20:33 +0000 (+0200) Subject: Relax assertion in profiler X-Git-Tag: release-12.2.mpacbti-rel1~328 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=da1f6e5260dbcce59372cb522e1af763f25eed6b;p=thirdparty%2Fgcc.git Relax assertion in profiler This assertion in branch_prob: if (bb == ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb) { location_t loc = DECL_SOURCE_LOCATION (current_function_decl); gcc_checking_assert (!RESERVED_LOCATION_P (loc)); had been correct until the fix for PR debug/101598 was installed. gcc/ * profile.cc (branch_prob): Be prepared for ignored functions with DECL_SOURCE_LOCATION set to UNKNOWN_LOCATION. gcc/testsuite: * gnat.dg/specs/coverage1.ads: New test. * gnat.dg/specs/variant_part.ads: Minor tweak. * gnat.dg/specs/weak1.ads: Add dg directive. --- diff --git a/gcc/profile.cc b/gcc/profile.cc index a67cce5b1998..40e105258faa 100644 --- a/gcc/profile.cc +++ b/gcc/profile.cc @@ -1457,11 +1457,13 @@ branch_prob (bool thunk) if (bb == ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb) { location_t loc = DECL_SOURCE_LOCATION (current_function_decl); - gcc_checking_assert (!RESERVED_LOCATION_P (loc)); - seen_locations.add (loc); - expanded_location curr_location = expand_location (loc); - output_location (&streamed_locations, curr_location.file, - MAX (1, curr_location.line), &offset, bb); + if (!RESERVED_LOCATION_P (loc)) + { + seen_locations.add (loc); + expanded_location curr_location = expand_location (loc); + output_location (&streamed_locations, curr_location.file, + MAX (1, curr_location.line), &offset, bb); + } } for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) diff --git a/gcc/testsuite/gnat.dg/specs/coverage1.ads b/gcc/testsuite/gnat.dg/specs/coverage1.ads new file mode 100644 index 000000000000..af7b61ce4e6c --- /dev/null +++ b/gcc/testsuite/gnat.dg/specs/coverage1.ads @@ -0,0 +1,10 @@ +-- { dg-do compile } +-- { dg-options "-ftest-coverage" } + +package Coverage1 is + + type Rec is record + I : Integer := 0; + end record; + +end Coverage1; diff --git a/gcc/testsuite/gnat.dg/specs/variant_part.ads b/gcc/testsuite/gnat.dg/specs/variant_part.ads index afc92cde5d70..72da4108588a 100644 --- a/gcc/testsuite/gnat.dg/specs/variant_part.ads +++ b/gcc/testsuite/gnat.dg/specs/variant_part.ads @@ -1,4 +1,5 @@ -- { dg-do compile } + package Variant_Part is type T1(b: boolean) is record case (b) is -- { dg-error "discriminant name may not be parenthesized" } diff --git a/gcc/testsuite/gnat.dg/specs/weak1.ads b/gcc/testsuite/gnat.dg/specs/weak1.ads index 82cddc09ac27..ece05ea68a75 100644 --- a/gcc/testsuite/gnat.dg/specs/weak1.ads +++ b/gcc/testsuite/gnat.dg/specs/weak1.ads @@ -1,3 +1,5 @@ +-- { dg-do compile } + package Weak1 is Myconst : constant Integer := 1234;