@@ -574,31 +574,7 @@ const char *clang::getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind,
574
574
}
575
575
576
576
bool clang::isOpenMPLoopDirective (OpenMPDirectiveKind DKind) {
577
- return DKind == OMPD_simd || DKind == OMPD_for || DKind == OMPD_for_simd ||
578
- DKind == OMPD_parallel_for || DKind == OMPD_parallel_for_simd ||
579
- DKind == OMPD_taskloop || DKind == OMPD_taskloop_simd ||
580
- DKind == OMPD_master_taskloop || DKind == OMPD_master_taskloop_simd ||
581
- DKind == OMPD_parallel_master_taskloop ||
582
- DKind == OMPD_parallel_master_taskloop_simd ||
583
- DKind == OMPD_masked_taskloop || DKind == OMPD_masked_taskloop_simd ||
584
- DKind == OMPD_parallel_masked_taskloop || DKind == OMPD_distribute ||
585
- DKind == OMPD_parallel_masked_taskloop_simd ||
586
- DKind == OMPD_target_parallel_for ||
587
- DKind == OMPD_distribute_parallel_for ||
588
- DKind == OMPD_distribute_parallel_for_simd ||
589
- DKind == OMPD_distribute_simd ||
590
- DKind == OMPD_target_parallel_for_simd || DKind == OMPD_target_simd ||
591
- DKind == OMPD_teams_distribute ||
592
- DKind == OMPD_teams_distribute_simd ||
593
- DKind == OMPD_teams_distribute_parallel_for_simd ||
594
- DKind == OMPD_teams_distribute_parallel_for ||
595
- DKind == OMPD_target_teams_distribute ||
596
- DKind == OMPD_target_teams_distribute_parallel_for ||
597
- DKind == OMPD_target_teams_distribute_parallel_for_simd ||
598
- DKind == OMPD_target_teams_distribute_simd || DKind == OMPD_tile ||
599
- DKind == OMPD_unroll || DKind == OMPD_loop ||
600
- DKind == OMPD_teams_loop || DKind == OMPD_target_teams_loop ||
601
- DKind == OMPD_parallel_loop || DKind == OMPD_target_parallel_loop;
577
+ return getDirectiveAssociation (DKind) == Association::Loop;
602
578
}
603
579
604
580
bool clang::isOpenMPWorksharingDirective (OpenMPDirectiveKind DKind) {
@@ -619,44 +595,22 @@ bool clang::isOpenMPWorksharingDirective(OpenMPDirectiveKind DKind) {
619
595
}
620
596
621
597
bool clang::isOpenMPTaskLoopDirective (OpenMPDirectiveKind DKind) {
622
- return DKind == OMPD_taskloop || DKind == OMPD_taskloop_simd ||
623
- DKind == OMPD_master_taskloop || DKind == OMPD_master_taskloop_simd ||
624
- DKind == OMPD_parallel_master_taskloop ||
625
- DKind == OMPD_masked_taskloop || DKind == OMPD_masked_taskloop_simd ||
626
- DKind == OMPD_parallel_masked_taskloop ||
627
- DKind == OMPD_parallel_masked_taskloop_simd ||
628
- DKind == OMPD_parallel_master_taskloop_simd;
598
+ return DKind == OMPD_taskloop ||
599
+ llvm::is_contained (getLeafConstructs (DKind), OMPD_taskloop);
629
600
}
630
601
631
602
bool clang::isOpenMPParallelDirective (OpenMPDirectiveKind DKind) {
632
- return DKind == OMPD_parallel || DKind == OMPD_parallel_for ||
633
- DKind == OMPD_parallel_for_simd || DKind == OMPD_parallel_sections ||
634
- DKind == OMPD_target_parallel || DKind == OMPD_target_parallel_for ||
635
- DKind == OMPD_distribute_parallel_for ||
636
- DKind == OMPD_distribute_parallel_for_simd ||
637
- DKind == OMPD_target_parallel_for_simd ||
638
- DKind == OMPD_teams_distribute_parallel_for ||
639
- DKind == OMPD_teams_distribute_parallel_for_simd ||
640
- DKind == OMPD_target_teams_distribute_parallel_for ||
641
- DKind == OMPD_target_teams_distribute_parallel_for_simd ||
642
- DKind == OMPD_parallel_master || DKind == OMPD_parallel_masked ||
643
- DKind == OMPD_parallel_master_taskloop ||
644
- DKind == OMPD_parallel_master_taskloop_simd ||
645
- DKind == OMPD_parallel_masked_taskloop ||
646
- DKind == OMPD_parallel_masked_taskloop_simd ||
647
- DKind == OMPD_parallel_loop || DKind == OMPD_target_parallel_loop ||
648
- DKind == OMPD_teams_loop;
603
+ if (DKind == OMPD_parallel_workshare)
604
+ return false ;
605
+ if (DKind == OMPD_teams_loop)
606
+ return true ;
607
+ return DKind == OMPD_parallel ||
608
+ llvm::is_contained (getLeafConstructs (DKind), OMPD_parallel);
649
609
}
650
610
651
611
bool clang::isOpenMPTargetExecutionDirective (OpenMPDirectiveKind DKind) {
652
- return DKind == OMPD_target || DKind == OMPD_target_parallel ||
653
- DKind == OMPD_target_parallel_for ||
654
- DKind == OMPD_target_parallel_for_simd || DKind == OMPD_target_simd ||
655
- DKind == OMPD_target_teams || DKind == OMPD_target_teams_distribute ||
656
- DKind == OMPD_target_teams_distribute_parallel_for ||
657
- DKind == OMPD_target_teams_distribute_parallel_for_simd ||
658
- DKind == OMPD_target_teams_distribute_simd ||
659
- DKind == OMPD_target_teams_loop || DKind == OMPD_target_parallel_loop;
612
+ return DKind == OMPD_target ||
613
+ llvm::is_contained (getLeafConstructs (DKind), OMPD_target);
660
614
}
661
615
662
616
bool clang::isOpenMPTargetDataManagementDirective (OpenMPDirectiveKind DKind) {
@@ -665,60 +619,44 @@ bool clang::isOpenMPTargetDataManagementDirective(OpenMPDirectiveKind DKind) {
665
619
}
666
620
667
621
bool clang::isOpenMPNestingTeamsDirective (OpenMPDirectiveKind DKind) {
668
- return DKind == OMPD_teams || DKind == OMPD_teams_distribute ||
669
- DKind == OMPD_teams_distribute_simd ||
670
- DKind == OMPD_teams_distribute_parallel_for_simd ||
671
- DKind == OMPD_teams_distribute_parallel_for ||
672
- DKind == OMPD_teams_loop;
622
+ if (DKind == OMPD_teams)
623
+ return true ;
624
+ auto leafs = getLeafConstructs (DKind);
625
+ return !leafs.empty () && leafs.front () == OMPD_teams;
673
626
}
674
627
675
628
bool clang::isOpenMPTeamsDirective (OpenMPDirectiveKind DKind) {
676
- return isOpenMPNestingTeamsDirective (DKind) || DKind == OMPD_target_teams ||
677
- DKind == OMPD_target_teams_distribute ||
678
- DKind == OMPD_target_teams_distribute_parallel_for ||
679
- DKind == OMPD_target_teams_distribute_parallel_for_simd ||
680
- DKind == OMPD_target_teams_distribute_simd ||
681
- DKind == OMPD_target_teams_loop;
629
+ return DKind == OMPD_teams ||
630
+ llvm::is_contained (getLeafConstructs (DKind), OMPD_teams);
682
631
}
683
632
684
633
bool clang::isOpenMPSimdDirective (OpenMPDirectiveKind DKind) {
685
- return DKind == OMPD_simd || DKind == OMPD_for_simd ||
686
- DKind == OMPD_parallel_for_simd || DKind == OMPD_taskloop_simd ||
687
- DKind == OMPD_master_taskloop_simd ||
688
- DKind == OMPD_masked_taskloop_simd ||
689
- DKind == OMPD_parallel_master_taskloop_simd ||
690
- DKind == OMPD_parallel_masked_taskloop_simd ||
691
- DKind == OMPD_distribute_parallel_for_simd ||
692
- DKind == OMPD_distribute_simd || DKind == OMPD_target_simd ||
693
- DKind == OMPD_teams_distribute_simd ||
694
- DKind == OMPD_teams_distribute_parallel_for_simd ||
695
- DKind == OMPD_target_teams_distribute_parallel_for_simd ||
696
- DKind == OMPD_target_teams_distribute_simd ||
697
- DKind == OMPD_target_parallel_for_simd;
634
+ // Avoid OMPD_declare_simd
635
+ if (DKind == OMPD_end_do_simd ||
636
+ getDirectiveAssociation (DKind) != Association::Loop)
637
+ return false ;
638
+
639
+ return DKind == OMPD_simd ||
640
+ llvm::is_contained (getLeafConstructs (DKind), OMPD_simd);
698
641
}
699
642
700
643
bool clang::isOpenMPNestingDistributeDirective (OpenMPDirectiveKind Kind) {
701
- return Kind == OMPD_distribute || Kind == OMPD_distribute_parallel_for ||
702
- Kind == OMPD_distribute_parallel_for_simd ||
703
- Kind == OMPD_distribute_simd ;
704
- // TODO add next directives.
644
+ if ( Kind == OMPD_distribute)
645
+ return true ;
646
+ auto leafs = getLeafConstructs (Kind) ;
647
+ return !leafs. empty () && leafs. front () == OMPD_distribute;
705
648
}
706
649
707
650
bool clang::isOpenMPDistributeDirective (OpenMPDirectiveKind Kind) {
708
- return isOpenMPNestingDistributeDirective (Kind) ||
709
- Kind == OMPD_teams_distribute || Kind == OMPD_teams_distribute_simd ||
710
- Kind == OMPD_teams_distribute_parallel_for_simd ||
711
- Kind == OMPD_teams_distribute_parallel_for ||
712
- Kind == OMPD_target_teams_distribute ||
713
- Kind == OMPD_target_teams_distribute_parallel_for ||
714
- Kind == OMPD_target_teams_distribute_parallel_for_simd ||
715
- Kind == OMPD_target_teams_distribute_simd;
651
+ return Kind == OMPD_distribute ||
652
+ llvm::is_contained (getLeafConstructs (Kind), OMPD_distribute);
716
653
}
717
654
718
655
bool clang::isOpenMPGenericLoopDirective (OpenMPDirectiveKind Kind) {
719
- return Kind == OMPD_loop || Kind == OMPD_teams_loop ||
720
- Kind == OMPD_target_teams_loop || Kind == OMPD_parallel_loop ||
721
- Kind == OMPD_target_parallel_loop;
656
+ if (Kind == OMPD_loop)
657
+ return true ;
658
+ auto leafs = getLeafConstructs (Kind);
659
+ return !leafs.empty () && leafs.back () == OMPD_loop;
722
660
}
723
661
724
662
bool clang::isOpenMPPrivate (OpenMPClauseKind Kind) {
0 commit comments