* Peter Zijlstra <peterz@xxxxxxxxxxxxx> [210514 11:32]: > 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. Thanks, I will do this.