#### 11.4.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`.