File tree 2 files changed +20
-6
lines changed
2 files changed +20
-6
lines changed Original file line number Diff line number Diff line change @@ -518,12 +518,12 @@ struct GTY(()) lang_identifier
518
518
/* The resulting tree type. */
519
519
520
520
union GTY ((desc (" TREE_CODE (&%h.generic) == IDENTIFIER_NODE" ),
521
- chain_next ( " CODE_CONTAINS_STRUCT (TREE_CODE (&%h.generic), TS_COMMON) ? ( (union lang_tree_node *) TREE_CHAIN (&%h.generic)) : NULL " )))
522
- lang_tree_node
523
- {
524
- union tree_node GTY (( tag ( " 0 " ),
525
- desc ( " tree_node_structure (&%h) " ))) generic;
526
- struct lang_identifier GTY ((tag (" 1" ))) identifier;
521
+ chain_next ( " (union lang_tree_node *) jit_tree_chain_next (&%h.generic)" ))) lang_tree_node
522
+ {
523
+ union tree_node GTY (( tag ( " 0 " ),
524
+ desc ( " tree_node_structure (&%h) " )))
525
+ generic;
526
+ struct lang_identifier GTY ((tag (" 1" ))) identifier;
527
527
};
528
528
529
529
/* We don't use language_function. */
Original file line number Diff line number Diff line change @@ -93,6 +93,20 @@ const int NUM_GCC_JIT_TYPES = GCC_JIT_TYPE_INT128_T + 1;
93
93
94
94
End of comment for inclusion in the docs. */
95
95
96
+ static inline tree
97
+ jit_tree_chain_next (tree t)
98
+ {
99
+ /* TREE_CHAIN of a type is TYPE_STUB_DECL, which is different
100
+ kind of object, never a long chain of nodes. Prefer
101
+ TYPE_NEXT_VARIANT for types. */
102
+ if (CODE_CONTAINS_STRUCT (TREE_CODE (t), TS_TYPE_COMMON))
103
+ return TYPE_NEXT_VARIANT (t);
104
+ /* Otherwise, if there is TREE_CHAIN, return it. */
105
+ if (CODE_CONTAINS_STRUCT (TREE_CODE (t), TS_COMMON))
106
+ return TREE_CHAIN (t);
107
+ return NULL ;
108
+ }
109
+
96
110
namespace gcc {
97
111
98
112
namespace jit {
You can’t perform that action at this time.
0 commit comments