comparison gcc/tree-pretty-print.c @ 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 /* Pretty formatting of GENERIC trees in C syntax. 1 /* Pretty formatting of GENERIC trees in C syntax.
2 Copyright (C) 2001-2018 Free Software Foundation, Inc. 2 Copyright (C) 2001-2020 Free Software Foundation, Inc.
3 Adapted from c-pretty-print.c by Diego Novillo <dnovillo@redhat.com> 3 Adapted from c-pretty-print.c by Diego Novillo <dnovillo@redhat.com>
4 4
5 This file is part of GCC. 5 This file is part of GCC.
6 6
7 GCC is free software; you can redistribute it and/or modify it under 7 GCC is free software; you can redistribute it and/or modify it under
32 #include "tree-iterator.h" 32 #include "tree-iterator.h"
33 #include "dumpfile.h" 33 #include "dumpfile.h"
34 #include "internal-fn.h" 34 #include "internal-fn.h"
35 #include "gomp-constants.h" 35 #include "gomp-constants.h"
36 #include "gimple.h" 36 #include "gimple.h"
37 #include "fold-const.h"
38
39 /* Disable warnings about quoting issues in the pp_xxx calls below
40 that (intentionally) don't follow GCC diagnostic conventions. */
41 #if __GNUC__ >= 10
42 # pragma GCC diagnostic push
43 # pragma GCC diagnostic ignored "-Wformat-diag"
44 #endif
37 45
38 /* Local functions, macros and variables. */ 46 /* Local functions, macros and variables. */
39 static const char *op_symbol (const_tree); 47 static const char *op_symbol (const_tree);
40 static void pretty_print_string (pretty_printer *, const char*, unsigned); 48 static void pretty_print_string (pretty_printer *, const char*, unsigned);
41 static void newline_and_indent (pretty_printer *, int); 49 static void newline_and_indent (pretty_printer *, int);
390 pp_string (pp, "<unknown>"); 398 pp_string (pp, "<unknown>");
391 pp_right_bracket (pp); 399 pp_right_bracket (pp);
392 } 400 }
393 401
394 402
403 /* Dump OpenMP iterators ITER. */
404
405 static void
406 dump_omp_iterators (pretty_printer *pp, tree iter, int spc, dump_flags_t flags)
407 {
408 pp_string (pp, "iterator(");
409 for (tree it = iter; it; it = TREE_CHAIN (it))
410 {
411 if (it != iter)
412 pp_string (pp, ", ");
413 dump_generic_node (pp, TREE_TYPE (TREE_VEC_ELT (it, 0)), spc, flags,
414 false);
415 pp_space (pp);
416 dump_generic_node (pp, TREE_VEC_ELT (it, 0), spc, flags, false);
417 pp_equal (pp);
418 dump_generic_node (pp, TREE_VEC_ELT (it, 1), spc, flags, false);
419 pp_colon (pp);
420 dump_generic_node (pp, TREE_VEC_ELT (it, 2), spc, flags, false);
421 pp_colon (pp);
422 dump_generic_node (pp, TREE_VEC_ELT (it, 3), spc, flags, false);
423 }
424 pp_right_paren (pp);
425 }
426
427
395 /* Dump OpenMP clause CLAUSE. PP, CLAUSE, SPC and FLAGS are as in 428 /* Dump OpenMP clause CLAUSE. PP, CLAUSE, SPC and FLAGS are as in
396 dump_generic_node. */ 429 dump_generic_node. */
397 430
398 static void 431 static void
399 dump_omp_clause (pretty_printer *pp, tree clause, int spc, dump_flags_t flags) 432 dump_omp_clause (pretty_printer *pp, tree clause, int spc, dump_flags_t flags)
400 { 433 {
401 const char *name; 434 const char *name;
402 435 const char *modifier = NULL;
403 switch (OMP_CLAUSE_CODE (clause)) 436 switch (OMP_CLAUSE_CODE (clause))
404 { 437 {
405 case OMP_CLAUSE_PRIVATE: 438 case OMP_CLAUSE_PRIVATE:
406 name = "private"; 439 name = "private";
407 goto print_remap; 440 goto print_remap;
411 case OMP_CLAUSE_FIRSTPRIVATE: 444 case OMP_CLAUSE_FIRSTPRIVATE:
412 name = "firstprivate"; 445 name = "firstprivate";
413 goto print_remap; 446 goto print_remap;
414 case OMP_CLAUSE_LASTPRIVATE: 447 case OMP_CLAUSE_LASTPRIVATE:
415 name = "lastprivate"; 448 name = "lastprivate";
449 if (OMP_CLAUSE_LASTPRIVATE_CONDITIONAL (clause))
450 modifier = "conditional:";
416 goto print_remap; 451 goto print_remap;
417 case OMP_CLAUSE_COPYIN: 452 case OMP_CLAUSE_COPYIN:
418 name = "copyin"; 453 name = "copyin";
419 goto print_remap; 454 goto print_remap;
420 case OMP_CLAUSE_COPYPRIVATE: 455 case OMP_CLAUSE_COPYPRIVATE:
423 case OMP_CLAUSE_UNIFORM: 458 case OMP_CLAUSE_UNIFORM:
424 name = "uniform"; 459 name = "uniform";
425 goto print_remap; 460 goto print_remap;
426 case OMP_CLAUSE_USE_DEVICE_PTR: 461 case OMP_CLAUSE_USE_DEVICE_PTR:
427 name = "use_device_ptr"; 462 name = "use_device_ptr";
463 if (OMP_CLAUSE_USE_DEVICE_PTR_IF_PRESENT (clause))
464 modifier = "if_present:";
465 goto print_remap;
466 case OMP_CLAUSE_USE_DEVICE_ADDR:
467 name = "use_device_addr";
428 goto print_remap; 468 goto print_remap;
429 case OMP_CLAUSE_IS_DEVICE_PTR: 469 case OMP_CLAUSE_IS_DEVICE_PTR:
430 name = "is_device_ptr"; 470 name = "is_device_ptr";
431 goto print_remap; 471 goto print_remap;
472 case OMP_CLAUSE_INCLUSIVE:
473 name = "inclusive";
474 goto print_remap;
475 case OMP_CLAUSE_EXCLUSIVE:
476 name = "exclusive";
477 goto print_remap;
432 case OMP_CLAUSE__LOOPTEMP_: 478 case OMP_CLAUSE__LOOPTEMP_:
433 name = "_looptemp_"; 479 name = "_looptemp_";
480 goto print_remap;
481 case OMP_CLAUSE__REDUCTEMP_:
482 name = "_reductemp_";
483 goto print_remap;
484 case OMP_CLAUSE__CONDTEMP_:
485 name = "_condtemp_";
486 goto print_remap;
487 case OMP_CLAUSE__SCANTEMP_:
488 name = "_scantemp_";
434 goto print_remap; 489 goto print_remap;
435 case OMP_CLAUSE_TO_DECLARE: 490 case OMP_CLAUSE_TO_DECLARE:
436 name = "to"; 491 name = "to";
437 goto print_remap; 492 goto print_remap;
438 case OMP_CLAUSE_LINK: 493 case OMP_CLAUSE_LINK:
439 name = "link"; 494 name = "link";
440 goto print_remap; 495 goto print_remap;
496 case OMP_CLAUSE_NONTEMPORAL:
497 name = "nontemporal";
498 goto print_remap;
441 print_remap: 499 print_remap:
442 pp_string (pp, name); 500 pp_string (pp, name);
443 pp_left_paren (pp); 501 pp_left_paren (pp);
502 if (modifier)
503 pp_string (pp, modifier);
444 dump_generic_node (pp, OMP_CLAUSE_DECL (clause), 504 dump_generic_node (pp, OMP_CLAUSE_DECL (clause),
445 spc, flags, false); 505 spc, flags, false);
446 pp_right_paren (pp); 506 pp_right_paren (pp);
447 break; 507 break;
448 508
509 case OMP_CLAUSE_TASK_REDUCTION:
510 case OMP_CLAUSE_IN_REDUCTION:
511 pp_string (pp, OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_IN_REDUCTION
512 ? "in_" : "task_");
513 /* FALLTHRU */
449 case OMP_CLAUSE_REDUCTION: 514 case OMP_CLAUSE_REDUCTION:
450 pp_string (pp, "reduction("); 515 pp_string (pp, "reduction(");
516 if (OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_REDUCTION)
517 {
518 if (OMP_CLAUSE_REDUCTION_TASK (clause))
519 pp_string (pp, "task,");
520 else if (OMP_CLAUSE_REDUCTION_INSCAN (clause))
521 pp_string (pp, "inscan,");
522 }
451 if (OMP_CLAUSE_REDUCTION_CODE (clause) != ERROR_MARK) 523 if (OMP_CLAUSE_REDUCTION_CODE (clause) != ERROR_MARK)
452 { 524 {
453 pp_string (pp, 525 pp_string (pp,
454 op_symbol_code (OMP_CLAUSE_REDUCTION_CODE (clause))); 526 op_symbol_code (OMP_CLAUSE_REDUCTION_CODE (clause)));
455 pp_colon (pp); 527 pp_colon (pp);
462 case OMP_CLAUSE_IF: 534 case OMP_CLAUSE_IF:
463 pp_string (pp, "if("); 535 pp_string (pp, "if(");
464 switch (OMP_CLAUSE_IF_MODIFIER (clause)) 536 switch (OMP_CLAUSE_IF_MODIFIER (clause))
465 { 537 {
466 case ERROR_MARK: break; 538 case ERROR_MARK: break;
539 case VOID_CST: pp_string (pp, "cancel:"); break;
467 case OMP_PARALLEL: pp_string (pp, "parallel:"); break; 540 case OMP_PARALLEL: pp_string (pp, "parallel:"); break;
541 case OMP_SIMD: pp_string (pp, "simd:"); break;
468 case OMP_TASK: pp_string (pp, "task:"); break; 542 case OMP_TASK: pp_string (pp, "task:"); break;
469 case OMP_TASKLOOP: pp_string (pp, "taskloop:"); break; 543 case OMP_TASKLOOP: pp_string (pp, "taskloop:"); break;
470 case OMP_TARGET_DATA: pp_string (pp, "target data:"); break; 544 case OMP_TARGET_DATA: pp_string (pp, "target data:"); break;
471 case OMP_TARGET: pp_string (pp, "target:"); break; 545 case OMP_TARGET: pp_string (pp, "target:"); break;
472 case OMP_TARGET_UPDATE: pp_string (pp, "target update:"); break; 546 case OMP_TARGET_UPDATE: pp_string (pp, "target update:"); break;
641 715
642 case OMP_CLAUSE_DEPEND: 716 case OMP_CLAUSE_DEPEND:
643 pp_string (pp, "depend("); 717 pp_string (pp, "depend(");
644 switch (OMP_CLAUSE_DEPEND_KIND (clause)) 718 switch (OMP_CLAUSE_DEPEND_KIND (clause))
645 { 719 {
720 case OMP_CLAUSE_DEPEND_DEPOBJ:
721 name = "depobj";
722 break;
646 case OMP_CLAUSE_DEPEND_IN: 723 case OMP_CLAUSE_DEPEND_IN:
647 pp_string (pp, "in"); 724 name = "in";
648 break; 725 break;
649 case OMP_CLAUSE_DEPEND_OUT: 726 case OMP_CLAUSE_DEPEND_OUT:
650 pp_string (pp, "out"); 727 name = "out";
651 break; 728 break;
652 case OMP_CLAUSE_DEPEND_INOUT: 729 case OMP_CLAUSE_DEPEND_INOUT:
653 pp_string (pp, "inout"); 730 name = "inout";
731 break;
732 case OMP_CLAUSE_DEPEND_MUTEXINOUTSET:
733 name = "mutexinoutset";
654 break; 734 break;
655 case OMP_CLAUSE_DEPEND_SOURCE: 735 case OMP_CLAUSE_DEPEND_SOURCE:
656 pp_string (pp, "source)"); 736 pp_string (pp, "source)");
657 return; 737 return;
738 case OMP_CLAUSE_DEPEND_LAST:
739 name = "__internal__";
740 break;
658 case OMP_CLAUSE_DEPEND_SINK: 741 case OMP_CLAUSE_DEPEND_SINK:
659 pp_string (pp, "sink:"); 742 pp_string (pp, "sink:");
660 for (tree t = OMP_CLAUSE_DECL (clause); t; t = TREE_CHAIN (t)) 743 for (tree t = OMP_CLAUSE_DECL (clause); t; t = TREE_CHAIN (t))
661 if (TREE_CODE (t) == TREE_LIST) 744 if (TREE_CODE (t) == TREE_LIST)
662 { 745 {
678 pp_right_paren (pp); 761 pp_right_paren (pp);
679 return; 762 return;
680 default: 763 default:
681 gcc_unreachable (); 764 gcc_unreachable ();
682 } 765 }
683 pp_colon (pp); 766 {
684 dump_generic_node (pp, OMP_CLAUSE_DECL (clause), 767 tree t = OMP_CLAUSE_DECL (clause);
685 spc, flags, false); 768 if (TREE_CODE (t) == TREE_LIST
686 pp_right_paren (pp); 769 && TREE_PURPOSE (t)
770 && TREE_CODE (TREE_PURPOSE (t)) == TREE_VEC)
771 {
772 dump_omp_iterators (pp, TREE_PURPOSE (t), spc, flags);
773 pp_colon (pp);
774 t = TREE_VALUE (t);
775 }
776 pp_string (pp, name);
777 pp_colon (pp);
778 dump_generic_node (pp, t, spc, flags, false);
779 pp_right_paren (pp);
780 }
687 break; 781 break;
688 782
689 case OMP_CLAUSE_MAP: 783 case OMP_CLAUSE_MAP:
690 pp_string (pp, "map("); 784 pp_string (pp, "map(");
691 switch (OMP_CLAUSE_MAP_KIND (clause)) 785 switch (OMP_CLAUSE_MAP_KIND (clause))
692 { 786 {
693 case GOMP_MAP_ALLOC: 787 case GOMP_MAP_ALLOC:
694 case GOMP_MAP_POINTER: 788 case GOMP_MAP_POINTER:
695 pp_string (pp, "alloc"); 789 pp_string (pp, "alloc");
696 break; 790 break;
791 case GOMP_MAP_IF_PRESENT:
792 pp_string (pp, "no_alloc");
793 break;
697 case GOMP_MAP_TO: 794 case GOMP_MAP_TO:
698 case GOMP_MAP_TO_PSET: 795 case GOMP_MAP_TO_PSET:
699 pp_string (pp, "to"); 796 pp_string (pp, "to");
700 break; 797 break;
701 case GOMP_MAP_FROM: 798 case GOMP_MAP_FROM:
752 case GOMP_MAP_DEVICE_RESIDENT: 849 case GOMP_MAP_DEVICE_RESIDENT:
753 pp_string (pp, "device_resident"); 850 pp_string (pp, "device_resident");
754 break; 851 break;
755 case GOMP_MAP_LINK: 852 case GOMP_MAP_LINK:
756 pp_string (pp, "link"); 853 pp_string (pp, "link");
854 break;
855 case GOMP_MAP_ATTACH:
856 pp_string (pp, "attach");
857 break;
858 case GOMP_MAP_DETACH:
859 pp_string (pp, "detach");
860 break;
861 case GOMP_MAP_FORCE_DETACH:
862 pp_string (pp, "force_detach");
863 break;
864 case GOMP_MAP_ATTACH_DETACH:
865 pp_string (pp, "attach_detach");
757 break; 866 break;
758 default: 867 default:
759 gcc_unreachable (); 868 gcc_unreachable ();
760 } 869 }
761 pp_colon (pp); 870 pp_colon (pp);
774 pp_string (pp, " [pointer assign, bias: "); 883 pp_string (pp, " [pointer assign, bias: ");
775 break; 884 break;
776 case GOMP_MAP_TO_PSET: 885 case GOMP_MAP_TO_PSET:
777 pp_string (pp, " [pointer set, len: "); 886 pp_string (pp, " [pointer set, len: ");
778 break; 887 break;
888 case GOMP_MAP_ATTACH:
889 case GOMP_MAP_DETACH:
890 case GOMP_MAP_FORCE_DETACH:
891 case GOMP_MAP_ATTACH_DETACH:
892 pp_string (pp, " [bias: ");
893 break;
779 default: 894 default:
780 pp_string (pp, " [len: "); 895 pp_string (pp, " [len: ");
781 break; 896 break;
782 } 897 }
783 dump_generic_node (pp, OMP_CLAUSE_SIZE (clause), 898 dump_generic_node (pp, OMP_CLAUSE_SIZE (clause),
855 gcc_unreachable (); 970 gcc_unreachable ();
856 } 971 }
857 pp_right_paren (pp); 972 pp_right_paren (pp);
858 break; 973 break;
859 974
975 case OMP_CLAUSE_DEVICE_TYPE:
976 pp_string (pp, "device_type(");
977 switch (OMP_CLAUSE_DEVICE_TYPE_KIND (clause))
978 {
979 case OMP_CLAUSE_DEVICE_TYPE_HOST:
980 pp_string (pp, "host");
981 break;
982 case OMP_CLAUSE_DEVICE_TYPE_NOHOST:
983 pp_string (pp, "nohost");
984 break;
985 case OMP_CLAUSE_DEVICE_TYPE_ANY:
986 pp_string (pp, "any");
987 break;
988 default:
989 gcc_unreachable ();
990 }
991 pp_right_paren (pp);
992 break;
993
860 case OMP_CLAUSE_SAFELEN: 994 case OMP_CLAUSE_SAFELEN:
861 pp_string (pp, "safelen("); 995 pp_string (pp, "safelen(");
862 dump_generic_node (pp, OMP_CLAUSE_SAFELEN_EXPR (clause), 996 dump_generic_node (pp, OMP_CLAUSE_SAFELEN_EXPR (clause),
863 spc, flags, false); 997 spc, flags, false);
864 pp_right_paren (pp); 998 pp_right_paren (pp);
898 spc, flags, false); 1032 spc, flags, false);
899 pp_right_paren (pp); 1033 pp_right_paren (pp);
900 break; 1034 break;
901 1035
902 case OMP_CLAUSE_DEFAULTMAP: 1036 case OMP_CLAUSE_DEFAULTMAP:
903 pp_string (pp, "defaultmap(tofrom:scalar)"); 1037 pp_string (pp, "defaultmap(");
1038 switch (OMP_CLAUSE_DEFAULTMAP_BEHAVIOR (clause))
1039 {
1040 case OMP_CLAUSE_DEFAULTMAP_ALLOC:
1041 pp_string (pp, "alloc");
1042 break;
1043 case OMP_CLAUSE_DEFAULTMAP_TO:
1044 pp_string (pp, "to");
1045 break;
1046 case OMP_CLAUSE_DEFAULTMAP_FROM:
1047 pp_string (pp, "from");
1048 break;
1049 case OMP_CLAUSE_DEFAULTMAP_TOFROM:
1050 pp_string (pp, "tofrom");
1051 break;
1052 case OMP_CLAUSE_DEFAULTMAP_FIRSTPRIVATE:
1053 pp_string (pp, "firstprivate");
1054 break;
1055 case OMP_CLAUSE_DEFAULTMAP_NONE:
1056 pp_string (pp, "none");
1057 break;
1058 case OMP_CLAUSE_DEFAULTMAP_DEFAULT:
1059 pp_string (pp, "default");
1060 break;
1061 default:
1062 gcc_unreachable ();
1063 }
1064 switch (OMP_CLAUSE_DEFAULTMAP_CATEGORY (clause))
1065 {
1066 case OMP_CLAUSE_DEFAULTMAP_CATEGORY_UNSPECIFIED:
1067 break;
1068 case OMP_CLAUSE_DEFAULTMAP_CATEGORY_SCALAR:
1069 pp_string (pp, ":scalar");
1070 break;
1071 case OMP_CLAUSE_DEFAULTMAP_CATEGORY_AGGREGATE:
1072 pp_string (pp, ":aggregate");
1073 break;
1074 case OMP_CLAUSE_DEFAULTMAP_CATEGORY_ALLOCATABLE:
1075 pp_string (pp, ":allocatable");
1076 break;
1077 case OMP_CLAUSE_DEFAULTMAP_CATEGORY_POINTER:
1078 pp_string (pp, ":pointer");
1079 break;
1080 default:
1081 gcc_unreachable ();
1082 }
1083 pp_right_paren (pp);
1084 break;
1085
1086 case OMP_CLAUSE_ORDER:
1087 pp_string (pp, "order(concurrent)");
1088 break;
1089
1090 case OMP_CLAUSE_BIND:
1091 pp_string (pp, "bind(");
1092 switch (OMP_CLAUSE_BIND_KIND (clause))
1093 {
1094 case OMP_CLAUSE_BIND_TEAMS:
1095 pp_string (pp, "teams");
1096 break;
1097 case OMP_CLAUSE_BIND_PARALLEL:
1098 pp_string (pp, "parallel");
1099 break;
1100 case OMP_CLAUSE_BIND_THREAD:
1101 pp_string (pp, "thread");
1102 break;
1103 default:
1104 gcc_unreachable ();
1105 }
1106 pp_right_paren (pp);
904 break; 1107 break;
905 1108
906 case OMP_CLAUSE__SIMDUID_: 1109 case OMP_CLAUSE__SIMDUID_:
907 pp_string (pp, "_simduid_("); 1110 pp_string (pp, "_simduid_(");
908 dump_generic_node (pp, OMP_CLAUSE__SIMDUID__DECL (clause), 1111 dump_generic_node (pp, OMP_CLAUSE__SIMDUID__DECL (clause),
1061 case OMP_CLAUSE_FINALIZE: 1264 case OMP_CLAUSE_FINALIZE:
1062 pp_string (pp, "finalize"); 1265 pp_string (pp, "finalize");
1063 break; 1266 break;
1064 1267
1065 default: 1268 default:
1066 /* Should never happen. */ 1269 gcc_unreachable ();
1067 dump_generic_node (pp, clause, spc, flags, false);
1068 break;
1069 } 1270 }
1070 } 1271 }
1071 1272
1072 1273
1073 /* Dump the list of OpenMP clauses. PP, SPC and FLAGS are as in 1274 /* Dump the list of OpenMP clauses. PP, SPC and FLAGS are as in
1216 } 1417 }
1217 newline_and_indent (pp, spc + 2); 1418 newline_and_indent (pp, spc + 2);
1218 } 1419 }
1219 } 1420 }
1220 1421
1422 /* Dump #pragma omp atomic memory order clause. */
1423
1424 void
1425 dump_omp_atomic_memory_order (pretty_printer *pp, enum omp_memory_order mo)
1426 {
1427 switch (mo)
1428 {
1429 case OMP_MEMORY_ORDER_RELAXED:
1430 pp_string (pp, " relaxed");
1431 break;
1432 case OMP_MEMORY_ORDER_SEQ_CST:
1433 pp_string (pp, " seq_cst");
1434 break;
1435 case OMP_MEMORY_ORDER_ACQ_REL:
1436 pp_string (pp, " acq_rel");
1437 break;
1438 case OMP_MEMORY_ORDER_ACQUIRE:
1439 pp_string (pp, " acquire");
1440 break;
1441 case OMP_MEMORY_ORDER_RELEASE:
1442 pp_string (pp, " release");
1443 break;
1444 case OMP_MEMORY_ORDER_UNSPECIFIED:
1445 break;
1446 default:
1447 gcc_unreachable ();
1448 }
1449 }
1450
1451 /* Helper to dump a MEM_REF node. */
1452
1453 static void
1454 dump_mem_ref (pretty_printer *pp, tree node, int spc, dump_flags_t flags)
1455 {
1456 if (flags & TDF_GIMPLE)
1457 {
1458 pp_string (pp, "__MEM <");
1459 dump_generic_node (pp, TREE_TYPE (node),
1460 spc, flags | TDF_SLIM, false);
1461 if (TYPE_ALIGN (TREE_TYPE (node))
1462 != TYPE_ALIGN (TYPE_MAIN_VARIANT (TREE_TYPE (node))))
1463 {
1464 pp_string (pp, ", ");
1465 pp_decimal_int (pp, TYPE_ALIGN (TREE_TYPE (node)));
1466 }
1467 pp_greater (pp);
1468 pp_string (pp, " (");
1469 if (TREE_TYPE (TREE_OPERAND (node, 0))
1470 != TREE_TYPE (TREE_OPERAND (node, 1)))
1471 {
1472 pp_left_paren (pp);
1473 dump_generic_node (pp, TREE_TYPE (TREE_OPERAND (node, 1)),
1474 spc, flags | TDF_SLIM, false);
1475 pp_right_paren (pp);
1476 }
1477 dump_generic_node (pp, TREE_OPERAND (node, 0),
1478 spc, flags | TDF_SLIM, false);
1479 if (! integer_zerop (TREE_OPERAND (node, 1)))
1480 {
1481 pp_string (pp, " + ");
1482 dump_generic_node (pp, TREE_OPERAND (node, 1),
1483 spc, flags | TDF_SLIM, false);
1484 }
1485 pp_right_paren (pp);
1486 }
1487 else if (integer_zerop (TREE_OPERAND (node, 1))
1488 /* Dump the types of INTEGER_CSTs explicitly, for we can't
1489 infer them and MEM_ATTR caching will share MEM_REFs
1490 with differently-typed op0s. */
1491 && TREE_CODE (TREE_OPERAND (node, 0)) != INTEGER_CST
1492 /* Released SSA_NAMES have no TREE_TYPE. */
1493 && TREE_TYPE (TREE_OPERAND (node, 0)) != NULL_TREE
1494 /* Same pointer types, but ignoring POINTER_TYPE vs.
1495 REFERENCE_TYPE. */
1496 && (TREE_TYPE (TREE_TYPE (TREE_OPERAND (node, 0)))
1497 == TREE_TYPE (TREE_TYPE (TREE_OPERAND (node, 1))))
1498 && (TYPE_MODE (TREE_TYPE (TREE_OPERAND (node, 0)))
1499 == TYPE_MODE (TREE_TYPE (TREE_OPERAND (node, 1))))
1500 && (TYPE_REF_CAN_ALIAS_ALL (TREE_TYPE (TREE_OPERAND (node, 0)))
1501 == TYPE_REF_CAN_ALIAS_ALL (TREE_TYPE (TREE_OPERAND (node, 1))))
1502 /* Same value types ignoring qualifiers. */
1503 && (TYPE_MAIN_VARIANT (TREE_TYPE (node))
1504 == TYPE_MAIN_VARIANT
1505 (TREE_TYPE (TREE_TYPE (TREE_OPERAND (node, 1)))))
1506 && (!(flags & TDF_ALIAS)
1507 || MR_DEPENDENCE_CLIQUE (node) == 0))
1508 {
1509 if (TREE_CODE (TREE_OPERAND (node, 0)) != ADDR_EXPR)
1510 {
1511 /* Enclose pointers to arrays in parentheses. */
1512 tree op0 = TREE_OPERAND (node, 0);
1513 tree op0type = TREE_TYPE (op0);
1514 if (POINTER_TYPE_P (op0type)
1515 && TREE_CODE (TREE_TYPE (op0type)) == ARRAY_TYPE)
1516 pp_left_paren (pp);
1517 pp_star (pp);
1518 dump_generic_node (pp, op0, spc, flags, false);
1519 if (POINTER_TYPE_P (op0type)
1520 && TREE_CODE (TREE_TYPE (op0type)) == ARRAY_TYPE)
1521 pp_right_paren (pp);
1522 }
1523 else
1524 dump_generic_node (pp,
1525 TREE_OPERAND (TREE_OPERAND (node, 0), 0),
1526 spc, flags, false);
1527 }
1528 else
1529 {
1530 pp_string (pp, "MEM");
1531
1532 tree nodetype = TREE_TYPE (node);
1533 tree op0 = TREE_OPERAND (node, 0);
1534 tree op1 = TREE_OPERAND (node, 1);
1535 tree op1type = TYPE_MAIN_VARIANT (TREE_TYPE (op1));
1536
1537 tree op0size = TYPE_SIZE (nodetype);
1538 tree op1size = TYPE_SIZE (TREE_TYPE (op1type));
1539
1540 if (!op0size || !op1size
1541 || !operand_equal_p (op0size, op1size, 0))
1542 {
1543 pp_string (pp, " <");
1544 /* If the size of the type of the operand is not the same
1545 as the size of the MEM_REF expression include the type
1546 of the latter similar to the TDF_GIMPLE output to make
1547 it clear how many bytes of memory are being accessed. */
1548 dump_generic_node (pp, nodetype, spc, flags | TDF_SLIM, false);
1549 pp_string (pp, "> ");
1550 }
1551
1552 pp_string (pp, "[(");
1553 dump_generic_node (pp, op1type, spc, flags | TDF_SLIM, false);
1554 pp_right_paren (pp);
1555 dump_generic_node (pp, op0, spc, flags, false);
1556 if (!integer_zerop (op1))
1557 if (!integer_zerop (TREE_OPERAND (node, 1)))
1558 {
1559 pp_string (pp, " + ");
1560 dump_generic_node (pp, op1, spc, flags, false);
1561 }
1562 if ((flags & TDF_ALIAS)
1563 && MR_DEPENDENCE_CLIQUE (node) != 0)
1564 {
1565 pp_string (pp, " clique ");
1566 pp_unsigned_wide_integer (pp, MR_DEPENDENCE_CLIQUE (node));
1567 pp_string (pp, " base ");
1568 pp_unsigned_wide_integer (pp, MR_DEPENDENCE_BASE (node));
1569 }
1570 pp_right_bracket (pp);
1571 }
1572 }
1221 1573
1222 /* Dump the node NODE on the pretty_printer PP, SPC spaces of 1574 /* Dump the node NODE on the pretty_printer PP, SPC spaces of
1223 indent. FLAGS specifies details to show in the dump (see TDF_* in 1575 indent. FLAGS specifies details to show in the dump (see TDF_* in
1224 dumpfile.h). If IS_STMT is true, the object printed is considered 1576 dumpfile.h). If IS_STMT is true, the object printed is considered
1225 to be a statement and it is terminated by ';' if appropriate. */ 1577 to be a statement and it is terminated by ';' if appropriate. */
1475 case OFFSET_TYPE: 1827 case OFFSET_TYPE:
1476 NIY; 1828 NIY;
1477 break; 1829 break;
1478 1830
1479 case MEM_REF: 1831 case MEM_REF:
1480 { 1832 dump_mem_ref (pp, node, spc, flags);
1481 if (flags & TDF_GIMPLE) 1833 break;
1482 {
1483 pp_string (pp, "__MEM <");
1484 dump_generic_node (pp, TREE_TYPE (node),
1485 spc, flags | TDF_SLIM, false);
1486 if (TYPE_ALIGN (TREE_TYPE (node))
1487 != TYPE_ALIGN (TYPE_MAIN_VARIANT (TREE_TYPE (node))))
1488 {
1489 pp_string (pp, ", ");
1490 pp_decimal_int (pp, TYPE_ALIGN (TREE_TYPE (node)));
1491 }
1492 pp_greater (pp);
1493 pp_string (pp, " (");
1494 if (TREE_TYPE (TREE_OPERAND (node, 0))
1495 != TREE_TYPE (TREE_OPERAND (node, 1)))
1496 {
1497 pp_left_paren (pp);
1498 dump_generic_node (pp, TREE_TYPE (TREE_OPERAND (node, 1)),
1499 spc, flags | TDF_SLIM, false);
1500 pp_right_paren (pp);
1501 }
1502 dump_generic_node (pp, TREE_OPERAND (node, 0),
1503 spc, flags | TDF_SLIM, false);
1504 if (! integer_zerop (TREE_OPERAND (node, 1)))
1505 {
1506 pp_string (pp, " + ");
1507 dump_generic_node (pp, TREE_OPERAND (node, 1),
1508 spc, flags | TDF_SLIM, false);
1509 }
1510 pp_right_paren (pp);
1511 }
1512 else if (integer_zerop (TREE_OPERAND (node, 1))
1513 /* Dump the types of INTEGER_CSTs explicitly, for we can't
1514 infer them and MEM_ATTR caching will share MEM_REFs
1515 with differently-typed op0s. */
1516 && TREE_CODE (TREE_OPERAND (node, 0)) != INTEGER_CST
1517 /* Released SSA_NAMES have no TREE_TYPE. */
1518 && TREE_TYPE (TREE_OPERAND (node, 0)) != NULL_TREE
1519 /* Same pointer types, but ignoring POINTER_TYPE vs.
1520 REFERENCE_TYPE. */
1521 && (TREE_TYPE (TREE_TYPE (TREE_OPERAND (node, 0)))
1522 == TREE_TYPE (TREE_TYPE (TREE_OPERAND (node, 1))))
1523 && (TYPE_MODE (TREE_TYPE (TREE_OPERAND (node, 0)))
1524 == TYPE_MODE (TREE_TYPE (TREE_OPERAND (node, 1))))
1525 && (TYPE_REF_CAN_ALIAS_ALL (TREE_TYPE (TREE_OPERAND (node, 0)))
1526 == TYPE_REF_CAN_ALIAS_ALL (TREE_TYPE (TREE_OPERAND (node, 1))))
1527 /* Same value types ignoring qualifiers. */
1528 && (TYPE_MAIN_VARIANT (TREE_TYPE (node))
1529 == TYPE_MAIN_VARIANT
1530 (TREE_TYPE (TREE_TYPE (TREE_OPERAND (node, 1)))))
1531 && (!(flags & TDF_ALIAS)
1532 || MR_DEPENDENCE_CLIQUE (node) == 0))
1533 {
1534 if (TREE_CODE (TREE_OPERAND (node, 0)) != ADDR_EXPR)
1535 {
1536 pp_star (pp);
1537 dump_generic_node (pp, TREE_OPERAND (node, 0),
1538 spc, flags, false);
1539 }
1540 else
1541 dump_generic_node (pp,
1542 TREE_OPERAND (TREE_OPERAND (node, 0), 0),
1543 spc, flags, false);
1544 }
1545 else
1546 {
1547 tree ptype;
1548
1549 pp_string (pp, "MEM[");
1550 pp_left_paren (pp);
1551 ptype = TYPE_MAIN_VARIANT (TREE_TYPE (TREE_OPERAND (node, 1)));
1552 dump_generic_node (pp, ptype,
1553 spc, flags | TDF_SLIM, false);
1554 pp_right_paren (pp);
1555 dump_generic_node (pp, TREE_OPERAND (node, 0),
1556 spc, flags, false);
1557 if (!integer_zerop (TREE_OPERAND (node, 1)))
1558 {
1559 pp_string (pp, " + ");
1560 dump_generic_node (pp, TREE_OPERAND (node, 1),
1561 spc, flags, false);
1562 }
1563 if ((flags & TDF_ALIAS)
1564 && MR_DEPENDENCE_CLIQUE (node) != 0)
1565 {
1566 pp_string (pp, " clique ");
1567 pp_unsigned_wide_integer (pp, MR_DEPENDENCE_CLIQUE (node));
1568 pp_string (pp, " base ");
1569 pp_unsigned_wide_integer (pp, MR_DEPENDENCE_BASE (node));
1570 }
1571 pp_right_bracket (pp);
1572 }
1573 break;
1574 }
1575 1834
1576 case TARGET_MEM_REF: 1835 case TARGET_MEM_REF:
1577 { 1836 {
1578 const char *sep = ""; 1837 const char *sep = "";
1579 tree tmp; 1838 tree tmp;
1685 case INTEGER_CST: 1944 case INTEGER_CST:
1686 if (flags & TDF_GIMPLE 1945 if (flags & TDF_GIMPLE
1687 && (POINTER_TYPE_P (TREE_TYPE (node)) 1946 && (POINTER_TYPE_P (TREE_TYPE (node))
1688 || (TYPE_PRECISION (TREE_TYPE (node)) 1947 || (TYPE_PRECISION (TREE_TYPE (node))
1689 < TYPE_PRECISION (integer_type_node)) 1948 < TYPE_PRECISION (integer_type_node))
1690 || exact_log2 (TYPE_PRECISION (TREE_TYPE (node))) == -1)) 1949 || exact_log2 (TYPE_PRECISION (TREE_TYPE (node))) == -1
1950 || tree_int_cst_sgn (node) < 0))
1691 { 1951 {
1692 pp_string (pp, "_Literal ("); 1952 pp_string (pp, "_Literal (");
1693 dump_generic_node (pp, TREE_TYPE (node), spc, flags, false); 1953 dump_generic_node (pp, TREE_TYPE (node), spc, flags, false);
1694 pp_string (pp, ") "); 1954 pp_string (pp, ") ");
1695 } 1955 }
1816 } 2076 }
1817 2077
1818 case VECTOR_CST: 2078 case VECTOR_CST:
1819 { 2079 {
1820 unsigned i; 2080 unsigned i;
2081 if (flags & TDF_GIMPLE)
2082 {
2083 pp_string (pp, "_Literal (");
2084 dump_generic_node (pp, TREE_TYPE (node), spc, flags, false);
2085 pp_string (pp, ") ");
2086 }
1821 pp_string (pp, "{ "); 2087 pp_string (pp, "{ ");
1822 unsigned HOST_WIDE_INT nunits; 2088 unsigned HOST_WIDE_INT nunits;
1823 if (!VECTOR_CST_NELTS (node).is_constant (&nunits)) 2089 if (!VECTOR_CST_NELTS (node).is_constant (&nunits))
1824 nunits = vector_cst_encoded_nelts (node); 2090 nunits = vector_cst_encoded_nelts (node);
1825 for (i = 0; i < nunits; ++i) 2091 for (i = 0; i < nunits; ++i)
1965 pp_right_brace (pp); 2231 pp_right_brace (pp);
1966 } 2232 }
1967 break; 2233 break;
1968 2234
1969 case BIT_FIELD_REF: 2235 case BIT_FIELD_REF:
1970 pp_string (pp, "BIT_FIELD_REF <"); 2236 if (flags & TDF_GIMPLE)
1971 dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false); 2237 {
1972 pp_string (pp, ", "); 2238 pp_string (pp, "__BIT_FIELD_REF <");
1973 dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false); 2239 dump_generic_node (pp, TREE_TYPE (node),
1974 pp_string (pp, ", "); 2240 spc, flags | TDF_SLIM, false);
1975 dump_generic_node (pp, TREE_OPERAND (node, 2), spc, flags, false); 2241 if (TYPE_ALIGN (TREE_TYPE (node))
1976 pp_greater (pp); 2242 != TYPE_ALIGN (TYPE_MAIN_VARIANT (TREE_TYPE (node))))
2243 {
2244 pp_string (pp, ", ");
2245 pp_decimal_int (pp, TYPE_ALIGN (TREE_TYPE (node)));
2246 }
2247 pp_greater (pp);
2248 pp_string (pp, " (");
2249 dump_generic_node (pp, TREE_OPERAND (node, 0), spc,
2250 flags | TDF_SLIM, false);
2251 pp_string (pp, ", ");
2252 dump_generic_node (pp, TREE_OPERAND (node, 1), spc,
2253 flags | TDF_SLIM, false);
2254 pp_string (pp, ", ");
2255 dump_generic_node (pp, TREE_OPERAND (node, 2), spc,
2256 flags | TDF_SLIM, false);
2257 pp_right_paren (pp);
2258 }
2259 else
2260 {
2261 pp_string (pp, "BIT_FIELD_REF <");
2262 dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
2263 pp_string (pp, ", ");
2264 dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
2265 pp_string (pp, ", ");
2266 dump_generic_node (pp, TREE_OPERAND (node, 2), spc, flags, false);
2267 pp_greater (pp);
2268 }
1977 break; 2269 break;
1978 2270
1979 case BIT_INSERT_EXPR: 2271 case BIT_INSERT_EXPR:
1980 pp_string (pp, "BIT_INSERT_EXPR <"); 2272 pp_string (pp, "BIT_INSERT_EXPR <");
1981 dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false); 2273 dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
2027 unsigned HOST_WIDE_INT ix; 2319 unsigned HOST_WIDE_INT ix;
2028 tree field, val; 2320 tree field, val;
2029 bool is_struct_init = false; 2321 bool is_struct_init = false;
2030 bool is_array_init = false; 2322 bool is_array_init = false;
2031 widest_int curidx; 2323 widest_int curidx;
2324 if (flags & TDF_GIMPLE)
2325 {
2326 pp_string (pp, "_Literal (");
2327 dump_generic_node (pp, TREE_TYPE (node), spc, flags, false);
2328 pp_string (pp, ") ");
2329 }
2032 pp_left_brace (pp); 2330 pp_left_brace (pp);
2033 if (TREE_CLOBBER_P (node)) 2331 if (TREE_CLOBBER_P (node))
2034 pp_string (pp, "CLOBBER"); 2332 pp_string (pp, "CLOBBER");
2035 else if (TREE_CODE (TREE_TYPE (node)) == RECORD_TYPE 2333 else if (TREE_CODE (TREE_TYPE (node)) == RECORD_TYPE
2036 || TREE_CODE (TREE_TYPE (node)) == UNION_TYPE) 2334 || TREE_CODE (TREE_TYPE (node)) == UNION_TYPE)
2507 if (op_prio (op0) < op_prio (node)) 2805 if (op_prio (op0) < op_prio (node))
2508 pp_right_paren (pp); 2806 pp_right_paren (pp);
2509 break; 2807 break;
2510 2808
2511 case VIEW_CONVERT_EXPR: 2809 case VIEW_CONVERT_EXPR:
2512 pp_string (pp, "VIEW_CONVERT_EXPR<"); 2810 if (flags & TDF_GIMPLE)
2811 pp_string (pp, "__VIEW_CONVERT <");
2812 else
2813 pp_string (pp, "VIEW_CONVERT_EXPR<");
2513 dump_generic_node (pp, TREE_TYPE (node), spc, flags, false); 2814 dump_generic_node (pp, TREE_TYPE (node), spc, flags, false);
2514 pp_string (pp, ">("); 2815 pp_string (pp, ">(");
2515 dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false); 2816 dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
2516 pp_right_paren (pp); 2817 pp_right_paren (pp);
2517 break; 2818 break;
2590 newline_and_indent (pp, spc+4); 2891 newline_and_indent (pp, spc+4);
2591 dump_generic_node (pp, TREE_OPERAND (node, 0), spc+4, flags, true); 2892 dump_generic_node (pp, TREE_OPERAND (node, 0), spc+4, flags, true);
2592 newline_and_indent (pp, spc+2); 2893 newline_and_indent (pp, spc+2);
2593 pp_right_brace (pp); 2894 pp_right_brace (pp);
2594 newline_and_indent (pp, spc); 2895 newline_and_indent (pp, spc);
2595 pp_string (pp, 2896 if (TREE_CODE (node) == TRY_CATCH_EXPR)
2596 (TREE_CODE (node) == TRY_CATCH_EXPR) ? "catch" : "finally"); 2897 {
2898 node = TREE_OPERAND (node, 1);
2899 pp_string (pp, "catch");
2900 }
2901 else
2902 {
2903 gcc_assert (TREE_CODE (node) == TRY_FINALLY_EXPR);
2904 node = TREE_OPERAND (node, 1);
2905 pp_string (pp, "finally");
2906 if (TREE_CODE (node) == EH_ELSE_EXPR)
2907 {
2908 newline_and_indent (pp, spc+2);
2909 pp_left_brace (pp);
2910 newline_and_indent (pp, spc+4);
2911 dump_generic_node (pp, TREE_OPERAND (node, 0), spc+4,
2912 flags, true);
2913 newline_and_indent (pp, spc+2);
2914 pp_right_brace (pp);
2915 newline_and_indent (pp, spc);
2916 node = TREE_OPERAND (node, 1);
2917 pp_string (pp, "else");
2918 }
2919 }
2597 newline_and_indent (pp, spc+2); 2920 newline_and_indent (pp, spc+2);
2598 pp_left_brace (pp); 2921 pp_left_brace (pp);
2599 newline_and_indent (pp, spc+4); 2922 newline_and_indent (pp, spc+4);
2600 dump_generic_node (pp, TREE_OPERAND (node, 1), spc+4, flags, true); 2923 dump_generic_node (pp, node, spc+4, flags, true);
2601 newline_and_indent (pp, spc+2); 2924 newline_and_indent (pp, spc+2);
2602 pp_right_brace (pp); 2925 pp_right_brace (pp);
2603 is_expr = false; 2926 is_expr = false;
2604 break; 2927 break;
2605 2928
2931 3254
2932 case OACC_KERNELS: 3255 case OACC_KERNELS:
2933 pp_string (pp, "#pragma acc kernels"); 3256 pp_string (pp, "#pragma acc kernels");
2934 goto dump_omp_clauses_body; 3257 goto dump_omp_clauses_body;
2935 3258
3259 case OACC_SERIAL:
3260 pp_string (pp, "#pragma acc serial");
3261 goto dump_omp_clauses_body;
3262
2936 case OACC_DATA: 3263 case OACC_DATA:
2937 pp_string (pp, "#pragma acc data"); 3264 pp_string (pp, "#pragma acc data");
2938 dump_omp_clauses (pp, OACC_DATA_CLAUSES (node), spc, flags); 3265 dump_omp_clauses (pp, OACC_DATA_CLAUSES (node), spc, flags);
2939 goto dump_omp_body; 3266 goto dump_omp_body;
2940 3267
2989 } 3316 }
2990 is_expr = false; 3317 is_expr = false;
2991 break; 3318 break;
2992 3319
2993 case OMP_TASK: 3320 case OMP_TASK:
2994 pp_string (pp, "#pragma omp task"); 3321 pp_string (pp, OMP_TASK_BODY (node) ? "#pragma omp task"
3322 : "#pragma omp taskwait");
2995 dump_omp_clauses (pp, OMP_TASK_CLAUSES (node), spc, flags); 3323 dump_omp_clauses (pp, OMP_TASK_CLAUSES (node), spc, flags);
2996 goto dump_omp_body; 3324 goto dump_omp_body;
2997 3325
2998 case OMP_FOR: 3326 case OMP_FOR:
2999 pp_string (pp, "#pragma omp for"); 3327 pp_string (pp, "#pragma omp for");
3007 pp_string (pp, "#pragma omp distribute"); 3335 pp_string (pp, "#pragma omp distribute");
3008 goto dump_omp_loop; 3336 goto dump_omp_loop;
3009 3337
3010 case OMP_TASKLOOP: 3338 case OMP_TASKLOOP:
3011 pp_string (pp, "#pragma omp taskloop"); 3339 pp_string (pp, "#pragma omp taskloop");
3340 goto dump_omp_loop;
3341
3342 case OMP_LOOP:
3343 pp_string (pp, "#pragma omp loop");
3012 goto dump_omp_loop; 3344 goto dump_omp_loop;
3013 3345
3014 case OACC_LOOP: 3346 case OACC_LOOP:
3015 pp_string (pp, "#pragma acc loop"); 3347 pp_string (pp, "#pragma acc loop");
3016 goto dump_omp_loop; 3348 goto dump_omp_loop;
3114 3446
3115 case OMP_SECTION: 3447 case OMP_SECTION:
3116 pp_string (pp, "#pragma omp section"); 3448 pp_string (pp, "#pragma omp section");
3117 goto dump_omp_body; 3449 goto dump_omp_body;
3118 3450
3451 case OMP_SCAN:
3452 if (OMP_SCAN_CLAUSES (node))
3453 {
3454 pp_string (pp, "#pragma omp scan");
3455 dump_omp_clauses (pp, OMP_SCAN_CLAUSES (node), spc, flags);
3456 }
3457 goto dump_omp_body;
3458
3119 case OMP_MASTER: 3459 case OMP_MASTER:
3120 pp_string (pp, "#pragma omp master"); 3460 pp_string (pp, "#pragma omp master");
3121 goto dump_omp_body; 3461 goto dump_omp_body;
3122 3462
3123 case OMP_TASKGROUP: 3463 case OMP_TASKGROUP:
3124 pp_string (pp, "#pragma omp taskgroup"); 3464 pp_string (pp, "#pragma omp taskgroup");
3465 dump_omp_clauses (pp, OMP_TASKGROUP_CLAUSES (node), spc, flags);
3125 goto dump_omp_body; 3466 goto dump_omp_body;
3126 3467
3127 case OMP_ORDERED: 3468 case OMP_ORDERED:
3128 pp_string (pp, "#pragma omp ordered"); 3469 pp_string (pp, "#pragma omp ordered");
3129 dump_omp_clauses (pp, OMP_ORDERED_CLAUSES (node), spc, flags); 3470 dump_omp_clauses (pp, OMP_ORDERED_CLAUSES (node), spc, flags);
3142 dump_omp_clauses (pp, OMP_CRITICAL_CLAUSES (node), spc, flags); 3483 dump_omp_clauses (pp, OMP_CRITICAL_CLAUSES (node), spc, flags);
3143 goto dump_omp_body; 3484 goto dump_omp_body;
3144 3485
3145 case OMP_ATOMIC: 3486 case OMP_ATOMIC:
3146 pp_string (pp, "#pragma omp atomic"); 3487 pp_string (pp, "#pragma omp atomic");
3147 if (OMP_ATOMIC_SEQ_CST (node)) 3488 dump_omp_atomic_memory_order (pp, OMP_ATOMIC_MEMORY_ORDER (node));
3148 pp_string (pp, " seq_cst");
3149 newline_and_indent (pp, spc + 2); 3489 newline_and_indent (pp, spc + 2);
3150 dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false); 3490 dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
3151 pp_space (pp); 3491 pp_space (pp);
3152 pp_equal (pp); 3492 pp_equal (pp);
3153 pp_space (pp); 3493 pp_space (pp);
3154 dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false); 3494 dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false);
3155 break; 3495 break;
3156 3496
3157 case OMP_ATOMIC_READ: 3497 case OMP_ATOMIC_READ:
3158 pp_string (pp, "#pragma omp atomic read"); 3498 pp_string (pp, "#pragma omp atomic read");
3159 if (OMP_ATOMIC_SEQ_CST (node)) 3499 dump_omp_atomic_memory_order (pp, OMP_ATOMIC_MEMORY_ORDER (node));
3160 pp_string (pp, " seq_cst");
3161 newline_and_indent (pp, spc + 2); 3500 newline_and_indent (pp, spc + 2);
3162 dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false); 3501 dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
3163 pp_space (pp); 3502 pp_space (pp);
3164 break; 3503 break;
3165 3504
3166 case OMP_ATOMIC_CAPTURE_OLD: 3505 case OMP_ATOMIC_CAPTURE_OLD:
3167 case OMP_ATOMIC_CAPTURE_NEW: 3506 case OMP_ATOMIC_CAPTURE_NEW:
3168 pp_string (pp, "#pragma omp atomic capture"); 3507 pp_string (pp, "#pragma omp atomic capture");
3169 if (OMP_ATOMIC_SEQ_CST (node)) 3508 dump_omp_atomic_memory_order (pp, OMP_ATOMIC_MEMORY_ORDER (node));
3170 pp_string (pp, " seq_cst");
3171 newline_and_indent (pp, spc + 2); 3509 newline_and_indent (pp, spc + 2);
3172 dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false); 3510 dump_generic_node (pp, TREE_OPERAND (node, 0), spc, flags, false);
3173 pp_space (pp); 3511 pp_space (pp);
3174 pp_equal (pp); 3512 pp_equal (pp);
3175 pp_space (pp); 3513 pp_space (pp);
4065 HOST_WIDE_INT_PRINT_DOUBLE_HEX, 4403 HOST_WIDE_INT_PRINT_DOUBLE_HEX,
4066 (unsigned HOST_WIDE_INT) high, low); 4404 (unsigned HOST_WIDE_INT) high, low);
4067 pp_string (pp, pp_buffer (pp)->digit_buffer); 4405 pp_string (pp, pp_buffer (pp)->digit_buffer);
4068 } 4406 }
4069 } 4407 }
4408
4409 #if __GNUC__ >= 10
4410 # pragma GCC diagnostic pop
4411 #endif