Mercurial > hg > CbC > CbC_gcc
comparison gcc/tree-core.h @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 84e7813d76e9 |
children |
comparison
equal
deleted
inserted
replaced
131:84e7813d76e9 | 145:1830386684a0 |
---|---|
1 /* Core data structures for the 'tree' type. | 1 /* Core data structures for the 'tree' type. |
2 Copyright (C) 1989-2018 Free Software Foundation, Inc. | 2 Copyright (C) 1989-2020 Free Software Foundation, Inc. |
3 | 3 |
4 This file is part of GCC. | 4 This file is part of GCC. |
5 | 5 |
6 GCC is free software; you can redistribute it and/or modify it under | 6 GCC is free software; you can redistribute it and/or modify it under |
7 the terms of the GNU General Public License as published by the Free | 7 the terms of the GNU General Public License as published by the Free |
154 BUILT_IN_FRONTEND, | 154 BUILT_IN_FRONTEND, |
155 BUILT_IN_MD, | 155 BUILT_IN_MD, |
156 BUILT_IN_NORMAL | 156 BUILT_IN_NORMAL |
157 }; | 157 }; |
158 | 158 |
159 /* Last marker used for LTO stremaing of built_in_class. We can not add it | 159 /* Last marker used for LTO stremaing of built_in_class. We cannot add it |
160 to the enum since we need the enumb to fit in 2 bits. */ | 160 to the enum since we need the enumb to fit in 2 bits. */ |
161 #define BUILT_IN_LAST (BUILT_IN_NORMAL + 1) | 161 #define BUILT_IN_LAST (BUILT_IN_NORMAL + 1) |
162 | 162 |
163 /* Codes that identify the various built in functions | 163 /* Codes that identify the various built in functions |
164 so that expand_call can identify them quickly. */ | 164 so that expand_call can identify them quickly. */ |
256 Operand 4: OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER: Another dummy | 256 Operand 4: OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER: Another dummy |
257 VAR_DECL placeholder, used like the above for C/C++ array | 257 VAR_DECL placeholder, used like the above for C/C++ array |
258 reductions. */ | 258 reductions. */ |
259 OMP_CLAUSE_REDUCTION, | 259 OMP_CLAUSE_REDUCTION, |
260 | 260 |
261 /* OpenMP clause: task_reduction (operator:variable_list). */ | |
262 OMP_CLAUSE_TASK_REDUCTION, | |
263 | |
264 /* OpenMP clause: in_reduction (operator:variable_list). */ | |
265 OMP_CLAUSE_IN_REDUCTION, | |
266 | |
261 /* OpenMP clause: copyin (variable_list). */ | 267 /* OpenMP clause: copyin (variable_list). */ |
262 OMP_CLAUSE_COPYIN, | 268 OMP_CLAUSE_COPYIN, |
263 | 269 |
264 /* OpenMP clause: copyprivate (variable_list). */ | 270 /* OpenMP clause: copyprivate (variable_list). */ |
265 OMP_CLAUSE_COPYPRIVATE, | 271 OMP_CLAUSE_COPYPRIVATE, |
270 /* OpenMP clause: aligned (variable-list[:alignment]). */ | 276 /* OpenMP clause: aligned (variable-list[:alignment]). */ |
271 OMP_CLAUSE_ALIGNED, | 277 OMP_CLAUSE_ALIGNED, |
272 | 278 |
273 /* OpenMP clause: depend ({in,out,inout}:variable-list). */ | 279 /* OpenMP clause: depend ({in,out,inout}:variable-list). */ |
274 OMP_CLAUSE_DEPEND, | 280 OMP_CLAUSE_DEPEND, |
281 | |
282 /* OpenMP clause: nontemporal (variable-list). */ | |
283 OMP_CLAUSE_NONTEMPORAL, | |
275 | 284 |
276 /* OpenMP clause: uniform (argument-list). */ | 285 /* OpenMP clause: uniform (argument-list). */ |
277 OMP_CLAUSE_UNIFORM, | 286 OMP_CLAUSE_UNIFORM, |
278 | 287 |
279 /* OpenMP clause: to (extended-list). | 288 /* OpenMP clause: to (extended-list). |
295 (variable-list). | 304 (variable-list). |
296 | 305 |
297 OpenMP clause: map ({alloc:,to:,from:,tofrom:,}variable-list). */ | 306 OpenMP clause: map ({alloc:,to:,from:,tofrom:,}variable-list). */ |
298 OMP_CLAUSE_MAP, | 307 OMP_CLAUSE_MAP, |
299 | 308 |
300 /* OpenACC clause: use_device (variable_list). | 309 /* OpenACC clause: use_device (variable-list). |
301 OpenMP clause: use_device_ptr (variable-list). */ | 310 OpenMP clause: use_device_ptr (ptr-list). */ |
302 OMP_CLAUSE_USE_DEVICE_PTR, | 311 OMP_CLAUSE_USE_DEVICE_PTR, |
312 | |
313 /* OpenMP clause: use_device_addr (variable-list). */ | |
314 OMP_CLAUSE_USE_DEVICE_ADDR, | |
303 | 315 |
304 /* OpenMP clause: is_device_ptr (variable-list). */ | 316 /* OpenMP clause: is_device_ptr (variable-list). */ |
305 OMP_CLAUSE_IS_DEVICE_PTR, | 317 OMP_CLAUSE_IS_DEVICE_PTR, |
318 | |
319 /* OpenMP clause: inclusive (variable-list). */ | |
320 OMP_CLAUSE_INCLUSIVE, | |
321 | |
322 /* OpenMP clause: exclusive (variable-list). */ | |
323 OMP_CLAUSE_EXCLUSIVE, | |
306 | 324 |
307 /* Internal structure to hold OpenACC cache directive's variable-list. | 325 /* Internal structure to hold OpenACC cache directive's variable-list. |
308 #pragma acc cache (variable-list). */ | 326 #pragma acc cache (variable-list). */ |
309 OMP_CLAUSE__CACHE_, | 327 OMP_CLAUSE__CACHE_, |
310 | 328 |
329 OMP_CLAUSE_SEQ, | 347 OMP_CLAUSE_SEQ, |
330 | 348 |
331 /* Internal clause: temporary for combined loops expansion. */ | 349 /* Internal clause: temporary for combined loops expansion. */ |
332 OMP_CLAUSE__LOOPTEMP_, | 350 OMP_CLAUSE__LOOPTEMP_, |
333 | 351 |
352 /* Internal clause: temporary for task reductions. */ | |
353 OMP_CLAUSE__REDUCTEMP_, | |
354 | |
355 /* Internal clause: temporary for lastprivate(conditional:). */ | |
356 OMP_CLAUSE__CONDTEMP_, | |
357 | |
358 /* Internal clause: temporary for inscan reductions. */ | |
359 OMP_CLAUSE__SCANTEMP_, | |
360 | |
334 /* OpenACC/OpenMP clause: if (scalar-expression). */ | 361 /* OpenACC/OpenMP clause: if (scalar-expression). */ |
335 OMP_CLAUSE_IF, | 362 OMP_CLAUSE_IF, |
336 | 363 |
337 /* OpenMP clause: num_threads (integer-expression). */ | 364 /* OpenMP clause: num_threads (integer-expression). */ |
338 OMP_CLAUSE_NUM_THREADS, | 365 OMP_CLAUSE_NUM_THREADS, |
386 OMP_CLAUSE_SAFELEN, | 413 OMP_CLAUSE_SAFELEN, |
387 | 414 |
388 /* OpenMP clause: simdlen (constant-integer-expression). */ | 415 /* OpenMP clause: simdlen (constant-integer-expression). */ |
389 OMP_CLAUSE_SIMDLEN, | 416 OMP_CLAUSE_SIMDLEN, |
390 | 417 |
418 /* OpenMP clause: device_type ({host,nohost,any}). */ | |
419 OMP_CLAUSE_DEVICE_TYPE, | |
420 | |
391 /* OpenMP clause: for. */ | 421 /* OpenMP clause: for. */ |
392 OMP_CLAUSE_FOR, | 422 OMP_CLAUSE_FOR, |
393 | 423 |
394 /* OpenMP clause: parallel. */ | 424 /* OpenMP clause: parallel. */ |
395 OMP_CLAUSE_PARALLEL, | 425 OMP_CLAUSE_PARALLEL, |
421 /* OpenMP clause: hint (integer-expression). */ | 451 /* OpenMP clause: hint (integer-expression). */ |
422 OMP_CLAUSE_HINT, | 452 OMP_CLAUSE_HINT, |
423 | 453 |
424 /* OpenMP clause: defaultmap (tofrom: scalar). */ | 454 /* OpenMP clause: defaultmap (tofrom: scalar). */ |
425 OMP_CLAUSE_DEFAULTMAP, | 455 OMP_CLAUSE_DEFAULTMAP, |
456 | |
457 /* OpenMP clause: order (concurrent). */ | |
458 OMP_CLAUSE_ORDER, | |
459 | |
460 /* OpenMP clause: bind (binding). */ | |
461 OMP_CLAUSE_BIND, | |
426 | 462 |
427 /* Internally used only clause, holding SIMD uid. */ | 463 /* Internally used only clause, holding SIMD uid. */ |
428 OMP_CLAUSE__SIMDUID_, | 464 OMP_CLAUSE__SIMDUID_, |
429 | 465 |
430 /* Internally used only clause, flag whether this is SIMT simd | 466 /* Internally used only clause, flag whether this is SIMT simd |
489 OMP_CLAUSE_DEFAULT_NONE, | 525 OMP_CLAUSE_DEFAULT_NONE, |
490 OMP_CLAUSE_DEFAULT_PRIVATE, | 526 OMP_CLAUSE_DEFAULT_PRIVATE, |
491 OMP_CLAUSE_DEFAULT_FIRSTPRIVATE, | 527 OMP_CLAUSE_DEFAULT_FIRSTPRIVATE, |
492 OMP_CLAUSE_DEFAULT_PRESENT, | 528 OMP_CLAUSE_DEFAULT_PRESENT, |
493 OMP_CLAUSE_DEFAULT_LAST | 529 OMP_CLAUSE_DEFAULT_LAST |
530 }; | |
531 | |
532 enum omp_clause_defaultmap_kind { | |
533 OMP_CLAUSE_DEFAULTMAP_CATEGORY_UNSPECIFIED, | |
534 OMP_CLAUSE_DEFAULTMAP_CATEGORY_SCALAR, | |
535 OMP_CLAUSE_DEFAULTMAP_CATEGORY_AGGREGATE, | |
536 OMP_CLAUSE_DEFAULTMAP_CATEGORY_ALLOCATABLE, | |
537 OMP_CLAUSE_DEFAULTMAP_CATEGORY_POINTER, | |
538 OMP_CLAUSE_DEFAULTMAP_CATEGORY_MASK = 7, | |
539 OMP_CLAUSE_DEFAULTMAP_ALLOC = 1 * (OMP_CLAUSE_DEFAULTMAP_CATEGORY_MASK + 1), | |
540 OMP_CLAUSE_DEFAULTMAP_TO = 2 * (OMP_CLAUSE_DEFAULTMAP_CATEGORY_MASK + 1), | |
541 OMP_CLAUSE_DEFAULTMAP_FROM = 3 * (OMP_CLAUSE_DEFAULTMAP_CATEGORY_MASK + 1), | |
542 OMP_CLAUSE_DEFAULTMAP_TOFROM = 4 * (OMP_CLAUSE_DEFAULTMAP_CATEGORY_MASK + 1), | |
543 OMP_CLAUSE_DEFAULTMAP_FIRSTPRIVATE | |
544 = 5 * (OMP_CLAUSE_DEFAULTMAP_CATEGORY_MASK + 1), | |
545 OMP_CLAUSE_DEFAULTMAP_NONE = 6 * (OMP_CLAUSE_DEFAULTMAP_CATEGORY_MASK + 1), | |
546 OMP_CLAUSE_DEFAULTMAP_DEFAULT | |
547 = 7 * (OMP_CLAUSE_DEFAULTMAP_CATEGORY_MASK + 1), | |
548 OMP_CLAUSE_DEFAULTMAP_MASK = 7 * (OMP_CLAUSE_DEFAULTMAP_CATEGORY_MASK + 1) | |
549 }; | |
550 | |
551 enum omp_clause_bind_kind { | |
552 OMP_CLAUSE_BIND_TEAMS, | |
553 OMP_CLAUSE_BIND_PARALLEL, | |
554 OMP_CLAUSE_BIND_THREAD | |
555 }; | |
556 | |
557 /* memory-order-clause on OpenMP atomic/flush constructs or | |
558 argument of atomic_default_mem_order clause. */ | |
559 enum omp_memory_order { | |
560 OMP_MEMORY_ORDER_UNSPECIFIED, | |
561 OMP_MEMORY_ORDER_RELAXED, | |
562 OMP_MEMORY_ORDER_ACQUIRE, | |
563 OMP_MEMORY_ORDER_RELEASE, | |
564 OMP_MEMORY_ORDER_ACQ_REL, | |
565 OMP_MEMORY_ORDER_SEQ_CST | |
494 }; | 566 }; |
495 | 567 |
496 /* There is a TYPE_QUAL value for each type qualifier. They can be | 568 /* There is a TYPE_QUAL value for each type qualifier. They can be |
497 combined by bitwise-or to form the complete set of qualifiers for a | 569 combined by bitwise-or to form the complete set of qualifiers for a |
498 type. */ | 570 type. */ |
621 TI_POINTER_SIZED_TYPE, | 693 TI_POINTER_SIZED_TYPE, |
622 | 694 |
623 TI_DFLOAT32_TYPE, | 695 TI_DFLOAT32_TYPE, |
624 TI_DFLOAT64_TYPE, | 696 TI_DFLOAT64_TYPE, |
625 TI_DFLOAT128_TYPE, | 697 TI_DFLOAT128_TYPE, |
626 TI_DFLOAT32_PTR_TYPE, | |
627 TI_DFLOAT64_PTR_TYPE, | |
628 TI_DFLOAT128_PTR_TYPE, | |
629 | 698 |
630 TI_VOID_LIST_NODE, | 699 TI_VOID_LIST_NODE, |
631 | 700 |
632 TI_MAIN_IDENTIFIER, | 701 TI_MAIN_IDENTIFIER, |
633 | 702 |
705 TI_TARGET_OPTION_DEFAULT, | 774 TI_TARGET_OPTION_DEFAULT, |
706 TI_TARGET_OPTION_CURRENT, | 775 TI_TARGET_OPTION_CURRENT, |
707 TI_CURRENT_TARGET_PRAGMA, | 776 TI_CURRENT_TARGET_PRAGMA, |
708 TI_CURRENT_OPTIMIZE_PRAGMA, | 777 TI_CURRENT_OPTIMIZE_PRAGMA, |
709 | 778 |
779 TI_CHREC_DONT_KNOW, | |
780 TI_CHREC_KNOWN, | |
781 | |
710 TI_MAX | 782 TI_MAX |
711 }; | 783 }; |
712 | 784 |
713 /* An enumeration of the standard C integer types. These must be | 785 /* An enumeration of the standard C integer types. These must be |
714 ordered so that shorter types appear before longer ones, and so | 786 ordered so that shorter types appear before longer ones, and so |
807 /* Internal within operand_equal_p: */ | 879 /* Internal within operand_equal_p: */ |
808 OEP_NO_HASH_CHECK = 16, | 880 OEP_NO_HASH_CHECK = 16, |
809 /* Internal within inchash::add_expr: */ | 881 /* Internal within inchash::add_expr: */ |
810 OEP_HASH_CHECK = 32, | 882 OEP_HASH_CHECK = 32, |
811 /* Makes operand_equal_p handle more expressions: */ | 883 /* Makes operand_equal_p handle more expressions: */ |
812 OEP_LEXICOGRAPHIC = 64 | 884 OEP_LEXICOGRAPHIC = 64, |
885 OEP_BITWISE = 128 | |
813 }; | 886 }; |
814 | 887 |
815 /* Enum and arrays used for tree allocation stats. | 888 /* Enum and arrays used for tree allocation stats. |
816 Keep in sync with tree.c:tree_node_kind_names. */ | 889 Keep in sync with tree.c:tree_node_kind_names. */ |
817 enum tree_node_kind { | 890 enum tree_node_kind { |
981 unsigned int chrec_var; | 1054 unsigned int chrec_var; |
982 | 1055 |
983 /* Internal function code. */ | 1056 /* Internal function code. */ |
984 enum internal_fn ifn; | 1057 enum internal_fn ifn; |
985 | 1058 |
1059 /* OMP_ATOMIC* memory order. */ | |
1060 enum omp_memory_order omp_atomic_memory_order; | |
1061 | |
986 /* The following two fields are used for MEM_REF and TARGET_MEM_REF | 1062 /* The following two fields are used for MEM_REF and TARGET_MEM_REF |
987 expression trees and specify known data non-dependences. For | 1063 expression trees and specify known data non-dependences. For |
988 two memory references in a function they are known to not | 1064 two memory references in a function they are known to not |
989 alias if dependence_info.clique are equal and dependence_info.base | 1065 alias if dependence_info.clique are equal and dependence_info.base |
990 are distinct. */ | 1066 are distinct. Clique number zero means there is no information, |
1067 clique number one is populated from function global information | |
1068 and thus needs no remapping on transforms like loop unrolling. */ | |
991 struct { | 1069 struct { |
992 unsigned short clique; | 1070 unsigned short clique; |
993 unsigned short base; | 1071 unsigned short base; |
994 } dependence_info; | 1072 } dependence_info; |
995 } GTY((skip(""))) u; | 1073 } GTY((skip(""))) u; |
1093 | 1171 |
1094 OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION in | 1172 OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION in |
1095 OMP_CLAUSE_MAP | 1173 OMP_CLAUSE_MAP |
1096 | 1174 |
1097 OMP_CLAUSE_REDUCTION_OMP_ORIG_REF in | 1175 OMP_CLAUSE_REDUCTION_OMP_ORIG_REF in |
1098 OMP_CLAUSE_REDUCTION | 1176 OMP_CLAUSE_{,TASK_,IN_}REDUCTION |
1177 | |
1178 OMP_CLAUSE_USE_DEVICE_PTR_IF_PRESENT in | |
1179 OMP_CLAUSE_USE_DEVICE_PTR | |
1099 | 1180 |
1100 TRANSACTION_EXPR_RELAXED in | 1181 TRANSACTION_EXPR_RELAXED in |
1101 TRANSACTION_EXPR | 1182 TRANSACTION_EXPR |
1102 | 1183 |
1103 FALLTHROUGH_LABEL_P in | 1184 FALLTHROUGH_LABEL_P in |
1120 OMP_SECTION_LAST in | 1201 OMP_SECTION_LAST in |
1121 OMP_SECTION | 1202 OMP_SECTION |
1122 | 1203 |
1123 OMP_PARALLEL_COMBINED in | 1204 OMP_PARALLEL_COMBINED in |
1124 OMP_PARALLEL | 1205 OMP_PARALLEL |
1125 | |
1126 OMP_ATOMIC_SEQ_CST in | |
1127 OMP_ATOMIC* | |
1128 | 1206 |
1129 OMP_CLAUSE_PRIVATE_OUTER_REF in | 1207 OMP_CLAUSE_PRIVATE_OUTER_REF in |
1130 OMP_CLAUSE_PRIVATE | 1208 OMP_CLAUSE_PRIVATE |
1131 | 1209 |
1132 OMP_CLAUSE_LINEAR_NO_COPYOUT in | 1210 OMP_CLAUSE_LINEAR_NO_COPYOUT in |
1148 CALL_ALLOCA_FOR_VAR_P in | 1226 CALL_ALLOCA_FOR_VAR_P in |
1149 CALL_EXPR | 1227 CALL_EXPR |
1150 | 1228 |
1151 OMP_CLAUSE_LINEAR_VARIABLE_STRIDE in | 1229 OMP_CLAUSE_LINEAR_VARIABLE_STRIDE in |
1152 OMP_CLAUSE_LINEAR | 1230 OMP_CLAUSE_LINEAR |
1231 | |
1232 ASM_INLINE_P in | |
1233 ASM_EXPR | |
1153 | 1234 |
1154 side_effects_flag: | 1235 side_effects_flag: |
1155 | 1236 |
1156 TREE_SIDE_EFFECTS in | 1237 TREE_SIDE_EFFECTS in |
1157 all expressions | 1238 all expressions |
1371 enum omp_clause_depend_kind | 1452 enum omp_clause_depend_kind |
1372 { | 1453 { |
1373 OMP_CLAUSE_DEPEND_IN, | 1454 OMP_CLAUSE_DEPEND_IN, |
1374 OMP_CLAUSE_DEPEND_OUT, | 1455 OMP_CLAUSE_DEPEND_OUT, |
1375 OMP_CLAUSE_DEPEND_INOUT, | 1456 OMP_CLAUSE_DEPEND_INOUT, |
1457 OMP_CLAUSE_DEPEND_MUTEXINOUTSET, | |
1376 OMP_CLAUSE_DEPEND_SOURCE, | 1458 OMP_CLAUSE_DEPEND_SOURCE, |
1377 OMP_CLAUSE_DEPEND_SINK, | 1459 OMP_CLAUSE_DEPEND_SINK, |
1460 OMP_CLAUSE_DEPEND_DEPOBJ, | |
1378 OMP_CLAUSE_DEPEND_LAST | 1461 OMP_CLAUSE_DEPEND_LAST |
1379 }; | 1462 }; |
1380 | 1463 |
1381 enum omp_clause_proc_bind_kind | 1464 enum omp_clause_proc_bind_kind |
1382 { | 1465 { |
1385 OMP_CLAUSE_PROC_BIND_TRUE = 1, | 1468 OMP_CLAUSE_PROC_BIND_TRUE = 1, |
1386 OMP_CLAUSE_PROC_BIND_MASTER = 2, | 1469 OMP_CLAUSE_PROC_BIND_MASTER = 2, |
1387 OMP_CLAUSE_PROC_BIND_CLOSE = 3, | 1470 OMP_CLAUSE_PROC_BIND_CLOSE = 3, |
1388 OMP_CLAUSE_PROC_BIND_SPREAD = 4, | 1471 OMP_CLAUSE_PROC_BIND_SPREAD = 4, |
1389 OMP_CLAUSE_PROC_BIND_LAST | 1472 OMP_CLAUSE_PROC_BIND_LAST |
1473 }; | |
1474 | |
1475 enum omp_clause_device_type_kind | |
1476 { | |
1477 OMP_CLAUSE_DEVICE_TYPE_HOST = 1, | |
1478 OMP_CLAUSE_DEVICE_TYPE_NOHOST = 2, | |
1479 OMP_CLAUSE_DEVICE_TYPE_ANY = 3 | |
1390 }; | 1480 }; |
1391 | 1481 |
1392 enum omp_clause_linear_kind | 1482 enum omp_clause_linear_kind |
1393 { | 1483 { |
1394 OMP_CLAUSE_LINEAR_DEFAULT, | 1484 OMP_CLAUSE_LINEAR_DEFAULT, |
1461 unsigned int map_kind; | 1551 unsigned int map_kind; |
1462 enum omp_clause_proc_bind_kind proc_bind_kind; | 1552 enum omp_clause_proc_bind_kind proc_bind_kind; |
1463 enum tree_code reduction_code; | 1553 enum tree_code reduction_code; |
1464 enum omp_clause_linear_kind linear_kind; | 1554 enum omp_clause_linear_kind linear_kind; |
1465 enum tree_code if_modifier; | 1555 enum tree_code if_modifier; |
1556 enum omp_clause_defaultmap_kind defaultmap_kind; | |
1557 enum omp_clause_bind_kind bind_kind; | |
1558 enum omp_clause_device_type_kind device_type_kind; | |
1466 /* The dimension a OMP_CLAUSE__GRIDDIM_ clause of a gridified target | 1559 /* The dimension a OMP_CLAUSE__GRIDDIM_ clause of a gridified target |
1467 construct describes. */ | 1560 construct describes. */ |
1468 unsigned int dimension; | 1561 unsigned int dimension; |
1469 } GTY ((skip)) subcode; | 1562 } GTY ((skip)) subcode; |
1470 | 1563 |
1513 unsigned restrict_flag : 1; | 1606 unsigned restrict_flag : 1; |
1514 unsigned contains_placeholder_bits : 2; | 1607 unsigned contains_placeholder_bits : 2; |
1515 | 1608 |
1516 ENUM_BITFIELD(machine_mode) mode : 8; | 1609 ENUM_BITFIELD(machine_mode) mode : 8; |
1517 | 1610 |
1611 /* TYPE_STRING_FLAG for INTEGER_TYPE and ARRAY_TYPE. | |
1612 TYPE_CXX_ODR_P for RECORD_TYPE and UNION_TYPE. */ | |
1518 unsigned string_flag : 1; | 1613 unsigned string_flag : 1; |
1519 unsigned lang_flag_0 : 1; | 1614 unsigned lang_flag_0 : 1; |
1520 unsigned lang_flag_1 : 1; | 1615 unsigned lang_flag_1 : 1; |
1521 unsigned lang_flag_2 : 1; | 1616 unsigned lang_flag_2 : 1; |
1522 unsigned lang_flag_3 : 1; | 1617 unsigned lang_flag_3 : 1; |
1532 as well), hence six bits. */ | 1627 as well), hence six bits. */ |
1533 unsigned align : 6; | 1628 unsigned align : 6; |
1534 unsigned warn_if_not_align : 6; | 1629 unsigned warn_if_not_align : 6; |
1535 unsigned typeless_storage : 1; | 1630 unsigned typeless_storage : 1; |
1536 unsigned empty_flag : 1; | 1631 unsigned empty_flag : 1; |
1537 unsigned spare : 17; | 1632 unsigned indivisible_p : 1; |
1633 unsigned spare : 16; | |
1538 | 1634 |
1539 alias_set_type alias_set; | 1635 alias_set_type alias_set; |
1540 tree pointer_to; | 1636 tree pointer_to; |
1541 tree reference_to; | 1637 tree reference_to; |
1542 union tree_type_symtab { | 1638 union tree_type_symtab { |
1631 /* In VAR_DECL, PARM_DECL and RESULT_DECL, this is DECL_BY_REFERENCE. */ | 1727 /* In VAR_DECL, PARM_DECL and RESULT_DECL, this is DECL_BY_REFERENCE. */ |
1632 unsigned decl_by_reference_flag : 1; | 1728 unsigned decl_by_reference_flag : 1; |
1633 /* In a VAR_DECL and PARM_DECL, this is DECL_READ_P. */ | 1729 /* In a VAR_DECL and PARM_DECL, this is DECL_READ_P. */ |
1634 unsigned decl_read_flag : 1; | 1730 unsigned decl_read_flag : 1; |
1635 /* In a VAR_DECL or RESULT_DECL, this is DECL_NONSHAREABLE. */ | 1731 /* In a VAR_DECL or RESULT_DECL, this is DECL_NONSHAREABLE. */ |
1732 /* In a PARM_DECL, this is DECL_HIDDEN_STRING_LENGTH. */ | |
1636 unsigned decl_nonshareable_flag : 1; | 1733 unsigned decl_nonshareable_flag : 1; |
1637 | 1734 |
1638 /* DECL_OFFSET_ALIGN, used only for FIELD_DECLs. */ | 1735 /* DECL_OFFSET_ALIGN, used only for FIELD_DECLs. */ |
1639 unsigned int off_align : 6; | 1736 unsigned int off_align : 6; |
1640 | 1737 |
1737 struct tree_decl_with_vis common; | 1834 struct tree_decl_with_vis common; |
1738 /* Almost all FE's use this. */ | 1835 /* Almost all FE's use this. */ |
1739 tree result; | 1836 tree result; |
1740 }; | 1837 }; |
1741 | 1838 |
1839 /* Classify a special function declaration type. */ | |
1840 | |
1841 enum function_decl_type | |
1842 { | |
1843 NONE, | |
1844 OPERATOR_NEW, | |
1845 OPERATOR_DELETE, | |
1846 LAMBDA_FUNCTION | |
1847 | |
1848 /* 0 values left */ | |
1849 }; | |
1850 | |
1742 /* FUNCTION_DECL inherits from DECL_NON_COMMON because of the use of the | 1851 /* FUNCTION_DECL inherits from DECL_NON_COMMON because of the use of the |
1743 arguments/result/saved_tree fields by front ends. It was either inherit | 1852 arguments/result/saved_tree fields by front ends. It was either inherit |
1744 FUNCTION_DECL from non_common, or inherit non_common from FUNCTION_DECL, | 1853 FUNCTION_DECL from non_common, or inherit non_common from FUNCTION_DECL, |
1745 which seemed a bit strange. */ | 1854 which seemed a bit strange. */ |
1746 | 1855 |
1761 /* Generic function body. */ | 1870 /* Generic function body. */ |
1762 tree saved_tree; | 1871 tree saved_tree; |
1763 /* Index within a virtual table. */ | 1872 /* Index within a virtual table. */ |
1764 tree vindex; | 1873 tree vindex; |
1765 | 1874 |
1766 /* In a FUNCTION_DECL for which DECL_BUILT_IN holds, this is | 1875 /* In a FUNCTION_DECL this is DECL_UNCHECKED_FUNCTION_CODE. */ |
1767 DECL_FUNCTION_CODE. Otherwise unused. | 1876 unsigned int function_code; |
1768 ??? The bitfield needs to be able to hold all target function | 1877 |
1769 codes as well. */ | |
1770 ENUM_BITFIELD(built_in_function) function_code : 12; | |
1771 ENUM_BITFIELD(built_in_class) built_in_class : 2; | 1878 ENUM_BITFIELD(built_in_class) built_in_class : 2; |
1772 | |
1773 unsigned static_ctor_flag : 1; | 1879 unsigned static_ctor_flag : 1; |
1774 unsigned static_dtor_flag : 1; | 1880 unsigned static_dtor_flag : 1; |
1775 | |
1776 unsigned uninlinable : 1; | 1881 unsigned uninlinable : 1; |
1777 unsigned possibly_inlined : 1; | 1882 unsigned possibly_inlined : 1; |
1778 unsigned novops_flag : 1; | 1883 unsigned novops_flag : 1; |
1779 unsigned returns_twice_flag : 1; | 1884 unsigned returns_twice_flag : 1; |
1885 | |
1780 unsigned malloc_flag : 1; | 1886 unsigned malloc_flag : 1; |
1781 unsigned operator_new_flag : 1; | |
1782 unsigned declared_inline_flag : 1; | 1887 unsigned declared_inline_flag : 1; |
1783 unsigned no_inline_warning_flag : 1; | 1888 unsigned no_inline_warning_flag : 1; |
1784 | |
1785 unsigned no_instrument_function_entry_exit : 1; | 1889 unsigned no_instrument_function_entry_exit : 1; |
1786 unsigned no_limit_stack : 1; | 1890 unsigned no_limit_stack : 1; |
1787 unsigned disregard_inline_limits : 1; | 1891 unsigned disregard_inline_limits : 1; |
1788 unsigned pure_flag : 1; | 1892 unsigned pure_flag : 1; |
1789 unsigned looping_const_or_pure_flag : 1; | 1893 unsigned looping_const_or_pure_flag : 1; |
1894 | |
1895 /* Align the bitfield to boundary of a byte. */ | |
1896 ENUM_BITFIELD(function_decl_type) decl_type: 2; | |
1790 unsigned has_debug_args_flag : 1; | 1897 unsigned has_debug_args_flag : 1; |
1791 unsigned versioned_function : 1; | 1898 unsigned versioned_function : 1; |
1792 unsigned lambda_function: 1; | 1899 |
1793 /* No bits left. */ | 1900 /* 12 bits left for future expansion. */ |
1794 }; | 1901 }; |
1795 | 1902 |
1796 struct GTY(()) tree_translation_unit_decl { | 1903 struct GTY(()) tree_translation_unit_decl { |
1797 struct tree_decl_common common; | 1904 struct tree_decl_common common; |
1798 /* Source language of this translation unit. Used for DWARF output. */ | 1905 /* Source language of this translation unit. Used for DWARF output. */ |
1838 struct target_optabs *GTY ((skip)) base_optabs; | 1945 struct target_optabs *GTY ((skip)) base_optabs; |
1839 }; | 1946 }; |
1840 | 1947 |
1841 /* Forward declaration, defined in target-globals.h. */ | 1948 /* Forward declaration, defined in target-globals.h. */ |
1842 | 1949 |
1843 struct GTY(()) target_globals; | 1950 class GTY(()) target_globals; |
1844 | 1951 |
1845 /* Target options used by a function. */ | 1952 /* Target options used by a function. */ |
1846 | 1953 |
1847 struct GTY(()) tree_target_option { | 1954 struct GTY(()) tree_target_option { |
1848 struct tree_base base; | 1955 struct tree_base base; |
1849 | 1956 |
1850 /* Target globals for the corresponding target option. */ | 1957 /* Target globals for the corresponding target option. */ |
1851 struct target_globals *globals; | 1958 class target_globals *globals; |
1852 | 1959 |
1853 /* The optimization options used by the user. */ | 1960 /* The optimization options used by the user. */ |
1854 struct cl_target_option *opts; | 1961 struct cl_target_option *opts; |
1855 }; | 1962 }; |
1856 | 1963 |