Discussion:
gf128_add can be marked as __pure2
(too old to reply)
Eitan Adler
2018-02-20 03:15:57 UTC
Permalink
Is there any reason not to apply this patch?

__pure2 means __attribute__((const)) which is correct in this case as
gf128_add read no global memory:


Index: gfmult.h
===================================================================
--- gfmult.h (revision 329611)
+++ gfmult.h (working copy)
@@ -108,7 +108,7 @@ gf128_write(struct gf128 v, uint8_t *buf)
be64enc(buf, v.v[1]);
}

-static inline struct gf128 __pure /* XXX - __pure2 instead */
+static inline struct gf128 __pure2
gf128_add(struct gf128 a, struct gf128 b)
{
a.v[0] ^= b.v[0];
--
Eitan Adler
John-Mark Gurney
2018-03-17 17:38:15 UTC
Permalink
Post by Eitan Adler
Is there any reason not to apply this patch?
I don't see why there wouldn't be..
Post by Eitan Adler
__pure2 means __attribute__((const)) which is correct in this case as
Are these documented some where? Looksl ike __pure2 was created instead
of using __pure for some reason... I wish these things were documented
properly so others could know the correct usage...
Post by Eitan Adler
Index: gfmult.h
===================================================================
--- gfmult.h (revision 329611)
+++ gfmult.h (working copy)
@@ -108,7 +108,7 @@ gf128_write(struct gf128 v, uint8_t *buf)
be64enc(buf, v.v[1]);
}
-static inline struct gf128 __pure /* XXX - __pure2 instead */
+static inline struct gf128 __pure2
gf128_add(struct gf128 a, struct gf128 b)
{
a.v[0] ^= b.v[0];
--
John-Mark Gurney Voice: +1 415 225 5579

"All that I will do, has been done, All that I have, has not."
Eitan Adler
2018-03-17 18:38:29 UTC
Permalink
Post by John-Mark Gurney
Post by Eitan Adler
Is there any reason not to apply this patch?
I don't see why there wouldn't be..
Post by Eitan Adler
__pure2 means __attribute__((const)) which is correct in this case as
Are these documented some where? Looksl ike __pure2 was created instead
of using __pure for some reason... I wish these things were documented
properly so others could know the correct usage...
I don't know where the FreeBSD macros are documented (they are
implementedi cdefs.h).
https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes
documents the attributes

__pure2 is const
__pure is pure
--
Eitan Adler
Eitan Adler
2018-06-13 10:29:07 UTC
Permalink
Post by John-Mark Gurney
Post by Eitan Adler
Is there any reason not to apply this patch?
I don't see why there wouldn't be..
Post by Eitan Adler
__pure2 means __attribute__((const)) which is correct in this case as
For extra clarity, since this is crypto related, can you please accept
here: https://reviews.freebsd.org/D15786
--
Eitan Adler
Loading...