##### 9.5.2.1 Current structure hierarchy

`struct tree_decl_minimal`
  This is the minimal structure to inherit from in order for common `DECL` macros to work. The fields it contains are a unique ID, source location, context, and name.
`struct tree_decl_common`
  This structure inherits from `struct tree_decl_minimal`. It contains fields that most `DECL` nodes need, such as a field to store alignment, machine mode, size, and attributes.
`struct tree_field_decl`
  This structure inherits from `struct tree_decl_common`. It is used to represent `FIELD_DECL`.
`struct tree_label_decl`
  This structure inherits from `struct tree_decl_common`. It is used to represent `LABEL_DECL`.
`struct tree_translation_unit_decl`
  This structure inherits from `struct tree_decl_common`. It is used to represent `TRANSLATION_UNIT_DECL`.
`struct tree_decl_with_rtl`
  This structure inherits from `struct tree_decl_common`. It contains a field to store the low-level RTL associated with a `DECL` node.
`struct tree_result_decl`
  This structure inherits from `struct tree_decl_with_rtl`. It is used to represent `RESULT_DECL`.
`struct tree_const_decl`
  This structure inherits from `struct tree_decl_with_rtl`. It is used to represent `CONST_DECL`.
`struct tree_parm_decl`
  This structure inherits from `struct tree_decl_with_rtl`. It is used to represent `PARM_DECL`.
`struct tree_decl_with_vis`
  This structure inherits from `struct tree_decl_with_rtl`. It contains fields necessary to store visibility information, as well as a section name and assembler name.
`struct tree_var_decl`
  This structure inherits from `struct tree_decl_with_vis`. It is used to represent `VAR_DECL`.
`struct tree_function_decl`
  This structure inherits from `struct tree_decl_with_vis`. It is used to represent `FUNCTION_DECL`.