Hi, > From: Rainer Orth > > that's not what I suggested (or at least meant to suggest): having > gettimeofday as an effective-target keyword (like setrlimit, mmap, and > others) is the way to go, just your previous implementation of > check_effective_target_gettimeofday was problematic/unreliable. > > If you go this route, there's no need to modify target-supports-dg.exp > at all. >
I see now. The dg-require-* directives are the predecessors to the dg-require-effective-target directives. I've changed it to be a dg-require-effective-target for gettimeofday instead. Tested it and it works just as well as before. > > Besides: I forget to mention that new effective-target keywords need to > be documented in sourcebuild.texi. > Done. Thanks for pointing this out. There were 2 existing ways of describing this sort of effective-target; I chose the more succinct one. Regards, Toma gcc/ * doc/sourcebuild.texi (Effective-Target Keywords, Environment attributes): Document gettimeofday. gcc/testsuite/ * gcc.dg/lto/pr60449_0.c: Add dg-require-effective-target for gettimeofday. Remove dg-skip-if for AVR. * lib/target-supports.exp (check_effective_target_gettimeofday): New. diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index 0dc4348..da17ff6 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -1914,6 +1914,9 @@ Target is @samp{freestanding} as defined in section 4 of the C99 standard. Effectively, it is a target which supports no extra headers or libraries other than what is considered essential. +@item gettimeofday +Target supports @code{gettimeofday}. + @item init_priority Target supports constructors with initialization priority arguments. diff --git a/gcc/testsuite/gcc.dg/lto/pr60449_0.c b/gcc/testsuite/gcc.dg/lto/pr60449_0.c index 5b878a6..e6c3166 100644 --- a/gcc/testsuite/gcc.dg/lto/pr60449_0.c +++ b/gcc/testsuite/gcc.dg/lto/pr60449_0.c @@ -1,5 +1,5 @@ /* { dg-lto-do link } */ -/* { dg-skip-if "Needs gettimeofday" { "avr-*-*" } } */ +/* { dg-require-effective-target gettimeofday } */ extern int printf (const char *__restrict __format, ...); typedef long int __time_t; diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 2766af4..d1639dc 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -968,6 +968,11 @@ proc check_effective_target_setrlimit {} { return [check_function_available "setrlimit"] } +# Return 1 if the target supports gettimeofday, 0 otherwise. +proc check_effective_target_gettimeofday {} { + return [check_function_available "gettimeofday"] +} + # Return 1 if the target supports swapcontext, 0 otherwise. proc check_effective_target_swapcontext {} { return [check_no_compiler_messages swapcontext executable {