GNU bug report logs -
#68267
[PATCH] maint: add attributes to two functions without side effects
Previous Next
Reported by: Samuel Tardieu <sam <at> rfc1149.net>
Date: Fri, 5 Jan 2024 16:45:01 UTC
Severity: normal
Tags: patch
Done: Pádraig Brady <P <at> draigBrady.com>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your message dated Sat, 6 Jan 2024 15:34:07 +0000
with message-id <8f5a4d0c-4cd7-02ae-e48a-e2a8fa71e3e6 <at> draigBrady.com>
and subject line Re: bug#68267: [PATCH] maint: add attributes to two functions without side effects
has caused the debbugs.gnu.org bug report #68267,
regarding [PATCH] maint: add attributes to two functions without side effects
to be marked as done.
(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)
--
68267: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=68267
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
* src/date.c (res_width): This function computes its result solely
from the value of its parameter and qualifies for the const attribute.
* src/tee.c (get_next_out): This function has no side effect and
qualifies for the pure attribute.
Those two functions were flagged by GCC 12.3.0.
---
Resent here, I sent it to the coreutils@ mailing-list while the hacking
doc says to send it here.
src/date.c | 1 +
src/tee.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/src/date.c b/src/date.c
index 39fc0715d..03bf012e2 100644
--- a/src/date.c
+++ b/src/date.c
@@ -294,6 +294,7 @@ Show the local time for 9AM next Friday on the west coast of the US\n\
/* Yield the number of decimal digits needed to output a time with the
nanosecond resolution RES, without losing information. */
+ATTRIBUTE_CONST
static int
res_width (long int res)
{
diff --git a/src/tee.c b/src/tee.c
index 07d525c95..eb074427c 100644
--- a/src/tee.c
+++ b/src/tee.c
@@ -185,6 +185,7 @@ main (int argc, char **argv)
/* Return the index of the first non-null descriptor after idx,
or -1 if all are null. */
+ATTRIBUTE_PURE
static int
get_next_out (FILE **descriptors, int nfiles, int idx)
{
--
2.42.0
[Message part 3 (message/rfc822, inline)]
On 05/01/2024 16:44, Samuel Tardieu wrote:
> * src/date.c (res_width): This function computes its result solely
> from the value of its parameter and qualifies for the const attribute.
> * src/tee.c (get_next_out): This function has no side effect and
> qualifies for the pure attribute.
>
> Those two functions were flagged by GCC 12.3.0.
I'm guessing GCC 12 needs help here as it can't determine the loops are finite.
(as per: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109914 )
Though I'm not seeing this suggestion with GCC 13.2.1,
so perhaps GCC 12 can determine the loops are finite?
I'll apply this since GCC 13 is less that a year old,
but in general we try to avoid littering code like this.
thanks,
Pádraig
This bug report was last modified 1 year and 137 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.