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; }