1  /* Language-dependent trees for LTO.
       2     Copyright (C) 2009-2023 Free Software Foundation, Inc.
       3     Contributed by CodeSourcery, Inc.
       4  
       5  This file is part of GCC.
       6  
       7  GCC is free software; you can redistribute it and/or modify it under
       8  the terms of the GNU General Public License as published by the Free
       9  Software Foundation; either version 3, or (at your option) any later
      10  version.
      11  
      12  GCC is distributed in the hope that it will be useful, but WITHOUT ANY
      13  WARRANTY; without even the implied warranty of MERCHANTABILITY or
      14  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
      15  for more details.
      16  
      17  You should have received a copy of the GNU General Public License
      18  along with GCC; see the file COPYING3.  If not see
      19  <http://www.gnu.org/licenses/>.  */
      20  
      21  #ifndef GCC_LTO_TREE_H
      22  #define GCC_LTO_TREE_H
      23  
      24  struct GTY(()) lang_identifier
      25  {
      26    struct tree_identifier base;
      27  };
      28  
      29  struct GTY(()) lang_decl
      30  {
      31    int dummy;  /* Added because ggc does not like empty structs.  */
      32  };
      33  
      34  struct GTY(()) lang_type
      35  {
      36    int dummy;  /* Added because ggc does not like empty structs.  */
      37  };
      38  
      39  struct GTY(()) language_function
      40  {
      41    int dummy;  /* Added because ggc does not like empty structs.  */
      42  };
      43  
      44  enum lto_tree_node_structure_enum {
      45    TS_LTO_GENERIC
      46  };
      47  
      48  union GTY((desc ("lto_tree_node_structure (&%h)"),
      49  	  chain_next ("CODE_CONTAINS_STRUCT (TREE_CODE (&%h.generic), TS_TYPE_COMMON) ? ((union lang_tree_node *) %h.generic.type_common.next_variant) : CODE_CONTAINS_STRUCT (TREE_CODE (&%h.generic), TS_COMMON) ? ((union lang_tree_node *) %h.generic.common.chain) : NULL")))
      50      lang_tree_node
      51  {
      52    union tree_node GTY ((tag ("TS_LTO_GENERIC"),
      53  			desc ("tree_node_structure (&%h)"))) generic;
      54  };
      55  
      56  #endif /* GCC_LTO_TREE_H */