public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r14-9973] Guard longjmp in test to not inf loop [PR114720]
@ 2024-04-15 13:34 J?rgen Kvalsvik
0 siblings, 0 replies; only message in thread
From: J?rgen Kvalsvik @ 2024-04-15 13:34 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:18e881ebd9f4b9429c652a81b8ceee84275bdade
commit r14-9973-g18e881ebd9f4b9429c652a81b8ceee84275bdade
Author: Jørgen Kvalsvik <j@lambda.is>
Date: Mon Apr 15 14:14:26 2024 +0200
Guard longjmp in test to not inf loop [PR114720]
Guard the longjmp to not infinitely loop. The longjmp (jump) function is
called unconditionally to make test flow simpler, but the jump
destination would return to a point in main that would call longjmp
again. The longjmp is really there to exercise the then-branch of
setjmp, to verify coverage is accurately counted in the presence of
complex edges.
PR gcov-profile/114720
gcc/testsuite/ChangeLog:
* gcc.misc-tests/gcov-22.c: Guard longjmp to not loop.
Diff:
---
gcc/testsuite/gcc.misc-tests/gcov-22.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/gcc/testsuite/gcc.misc-tests/gcov-22.c b/gcc/testsuite/gcc.misc-tests/gcov-22.c
index 641791a7223..7ca78467ca3 100644
--- a/gcc/testsuite/gcc.misc-tests/gcov-22.c
+++ b/gcc/testsuite/gcc.misc-tests/gcov-22.c
@@ -87,7 +87,19 @@ setdest ()
void
jump ()
{
- longjmp (dest, 1);
+ /* Protect the longjmp so it will only be done once. The whole purpose of
+ this function is to help test conditions and instrumentation around
+ setjmp and its complex edges, as both branches should count towards
+ coverage, even when one is taken through longjmp. If the jump is not
+ guarded it can cause an infinite loop as setdest returns to a point in
+ main before jump (), leading to an infinite loop. See PR
+ gcov-profile/114720. */
+ static int called_once = 0;
+ if (!called_once) /* conditions(suppress) */
+ {
+ called_once = 1;
+ longjmp (dest, 1);
+ }
}
int
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-04-15 13:34 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-15 13:34 [gcc r14-9973] Guard longjmp in test to not inf loop [PR114720] J?rgen Kvalsvik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).