Andrew, based on your remarks in our discussion Re: enable ranger
and caching in pass_waccess, I've added some comments to struct
function and get_range_query() and declared the latter with
attribute returns_nonnull to make it explicit both to readers
and to GCC that the x_range_query member is never null.

Tested on x86_64-linux.

Martin
gcc/ChangeLog:
	* function.h (function): Add comments.
	(get_range_query): Same.  Add attribute returns nonnull.

diff --git a/gcc/function.h b/gcc/function.h
index 0db51775e7c..36003e7576a 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -312,7 +312,8 @@ struct GTY(()) function {
 
   /* Range query mechanism for functions.  The default is to pick up
      global ranges.  If a pass wants on-demand ranges OTOH, it must
-     call enable/disable_ranger().  */
+     call enable/disable_ranger().  The pointer is never null.  It
+     should be queried by calling get_range_query().  */
   range_query * GTY ((skip)) x_range_query;
 
   /* Last statement uid.  */
@@ -719,10 +720,10 @@ extern const char *current_function_name (void);
 extern void used_types_insert (tree);
 
 /* Returns the currently active range access class.  When there is no active
-   range class, global ranges are used.  */
+   range class, global ranges are used.  Never returns null.  */
 
-inline range_query *
-get_range_query (struct function *fun)
+ATTRIBUTE_RETURNS_NONNULL inline range_query *
+get_range_query (const struct function *fun)
 {
   return fun->x_range_query;
 }

Reply via email to