svn commit: r316779 - stable/11/sys/sys
Mark Millard
markmi at dsl-only.net
Thu Apr 13 21:02:23 UTC 2017
> Author: pfg
> Date: Thu Apr 13 18:28:40 2017
> New Revision: 316779
> URL:
> https://svnweb.freebsd.org/changeset/base/316779
>
>
> Log:
> Temporarily revert r315602.
> Bring back the definition for the GCC __nonnull() attribute.
>
> Old versions of GCC, including the version installed the latest 11-stable
> snapshot with pkg(8), still carry the old attributes.
>
> The issue is easily fixed by rebuilding GCC but there is no need to cause
> havoc in our user base. The definition by itself is harmless but it should
> be removed again in the near future.
>
> Modified:
> stable/11/sys/sys/cdefs.h
> Directory Properties:
> stable/11/ (props changed)
>
> Modified: stable/11/sys/sys/cdefs.h
> ==============================================================================
> --- stable/11/sys/sys/cdefs.h Thu Apr 13 18:13:10 2017 (r316778)
> +++ stable/11/sys/sys/cdefs.h Thu Apr 13 18:28:40 2017 (r316779)
> @@ -376,6 +376,14 @@
> #define __noinline
> #endif
>
> +#if __GNUC_PREREQ__(3, 3)
> +#define __nonnull(x) __attribute__((__nonnull__(x)))
> +#define __nonnull_all __attribute__((__nonnull__))
> +#else
> +#define __nonnull(x)
> +#define __nonnull_all
> +#endif
> +
> #if __GNUC_PREREQ__(3, 4)
> #define __fastcall __attribute__((__fastcall__))
> #define __result_use_check __attribute__((__warn_unused_result__))
My understanding was that __attribute__((__nonnull__(x))) and
__attribute__((__nonnull__)) were causing some problems
because of optimization consequences (code removal). The goal
of converting to the new technique (involving lack of
__nonnull and lack of __nonnull_all ) was to still have
warning notices but without such removal of code if I
understand right.
If avoiding code removal was the intent behind the removal
of __nonnull (and __nonnull_all) use (and use of the
__nonull__ attributes) then just having the two lines:
+#define __nonnull(x)
+#define __nonnull_all
might be better for maintaining compatibility with existing
older sources that reference __nonnull and/or __nonnull_all .
Of course I could be wrong about why the changes were made
in the first place or in other details about the alternatives.
===
Mark Millard
markmi at dsl-only.net
More information about the svn-src-stable-11
mailing list