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 {

Reply via email to