On Wed, Apr 28, 2021 at 03:36:02PM +0000, Liam Howlett wrote: > +enum maple_type { > + maple_dense, > + maple_leaf_64, > + maple_range_64, > + maple_arange_64, > +}; > +static inline unsigned long *ma_pivots(struct maple_node *node, > + enum maple_type type) > +{ > + switch (type) { > + case maple_arange_64: > + return node->ma64.pivot; > + case maple_range_64: > + case maple_leaf_64: > + return node->mr64.pivot; > + case maple_dense: > + default: > + return NULL; > + } > +} > +static inline unsigned long *ma_gaps(struct maple_node *node, > + enum maple_type type) > +{ > + switch (type) { > + case maple_arange_64: > + return node->ma64.gap; > + case maple_range_64: > + case maple_leaf_64: > + case maple_dense: > + default: > + return NULL; > + } > +} > +static inline unsigned long mte_pivot(const struct maple_enode *mn, > + unsigned char piv) > +{ > + struct maple_node *node = mte_to_node(mn); > + > + switch (mte_node_type(mn)) { > + case maple_arange_64: > + return node->ma64.pivot[piv]; > + case maple_range_64: > + case maple_leaf_64: > + return node->mr64.pivot[piv]; > + case maple_dense: > + default: > + return 0; > + } > +} I would suggest removing the default: case. Without it the cases are complete and the compiler should not complain. Then if you extend the enum and forget to add a case, the switch is no longer complete and will trigger a warning, forcing you to update it (hopefully correct). If you have the default, you'll not get a warning and it'll do whatever.