[Openmp-commits] [openmp] [OpenMP][test] Regression tests for OpenMPIRBuilder. (PR #114671)

Michael Kruse via Openmp-commits openmp-commits at lists.llvm.org
Sat Nov 2 07:28:03 PDT 2024


https://github.com/Meinersbur created https://github.com/llvm/llvm-project/pull/114671

Categorize libomp regression tests according to whether they currently work with -fopenmp-enable-irbuilder. Tests marked with XFAIL are reliably failing. Tests with UNSUPPORTED fail or succeed occasionally. Add some additional tests that currently fail using the OpenMPIRBuilder.

Originally submitted as https://reviews.llvm.org/D114501 but never merged because reviews that were supposed to address these failures never progressed.

>From e6fde4c82870e6d8289faffe12a7f4c455d38bb2 Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Tue, 7 Dec 2021 10:05:10 -0600
Subject: [PATCH 1/2] [OpenMP][test] Regression tests for OpenMPIRBuilder.

Categorize libomp regression tests according to whether they currently work with `-fopenmp-enable-irbuilder`. Tests marked with `XFAIL` are reliably failing. Tests with `UNSUPPORTED` fail or succeed occasionally. Add some additional tests that currently fail using the OpenMPIRBuilder.

Differential Revision: https://reviews.llvm.org/D114501
---
 openmp/runtime/test/atomic/kmp_atomic_cas.c   |  1 +
 .../runtime/test/atomic/kmp_atomic_cas_cpt.c  |  1 +
 openmp/runtime/test/atomic/omp_atomic.c       |  2 ++
 openmp/runtime/test/lit.cfg                   |  4 +++
 openmp/runtime/test/lock/omp_lock.c           |  2 ++
 openmp/runtime/test/lock/omp_nest_lock.c      |  1 +
 openmp/runtime/test/lock/omp_test_lock.c      |  2 ++
 openmp/runtime/test/lock/omp_test_nest_lock.c |  2 ++
 openmp/runtime/test/master/omp_master.c       |  1 +
 .../misc_bugs/cancellation_for_sections.c     |  1 +
 .../misc_bugs/omp_foreign_thread_team_reuse.c |  1 +
 .../test/ompt/cancel/cancel_parallel.c        |  2 +-
 .../test/ompt/cancel/cancel_taskgroup.c       |  2 +-
 .../test/ompt/cancel/cancel_worksharing.c     |  2 +-
 openmp/runtime/test/ompt/misc/control_tool.c  |  2 ++
 .../parallel/max_active_levels_serialized.c   |  2 ++
 openmp/runtime/test/ompt/parallel/nested.c    |  2 ++
 .../runtime/test/ompt/parallel/nested_lwt.c   |  2 ++
 .../test/ompt/parallel/nested_serialized.c    |  2 ++
 .../test/ompt/parallel/nested_thread_num.c    |  2 ++
 .../runtime/test/ompt/parallel/parallel_if0.c |  2 ++
 .../runtime/test/ompt/parallel/serialized.c   |  2 ++
 .../ompt/synchronization/barrier/explicit.c   |  2 ++
 .../ompt/synchronization/barrier/for_loop.c   |  2 ++
 .../ompt/synchronization/barrier/single.c     |  2 ++
 .../runtime/test/ompt/synchronization/flush.c |  2 +-
 .../test/ompt/synchronization/masked.c        |  2 +-
 .../test/ompt/synchronization/master.c        |  2 +-
 .../test/ompt/synchronization/taskgroup.c     |  1 +
 .../test/ompt/synchronization/taskwait.c      |  2 ++
 .../synchronization/test_nest_lock_parallel.c |  2 ++
 openmp/runtime/test/ompt/tasks/dependences.c  |  1 +
 .../ompt/tasks/dependences_mutexinoutset.c    |  1 +
 .../runtime/test/ompt/tasks/explicit_task.c   |  2 ++
 openmp/runtime/test/ompt/tasks/serialized.c   |  2 ++
 .../runtime/test/ompt/tasks/task_if0-depend.c |  1 +
 .../test/ompt/tasks/task_late_fulfill.c       |  1 +
 openmp/runtime/test/ompt/tasks/task_memory.c  |  2 ++
 openmp/runtime/test/ompt/tasks/task_types.c   |  2 ++
 .../test/ompt/tasks/task_types_serialized.c   |  1 +
 openmp/runtime/test/ompt/tasks/taskyield.c    |  2 +-
 .../test/ompt/worksharing/for/auto_split.c    |  1 +
 .../test/ompt/worksharing/for/dynamic_split.c |  1 +
 .../test/ompt/worksharing/for/guided_split.c  |  1 +
 .../test/ompt/worksharing/for/runtime_split.c |  1 +
 .../test/ompt/worksharing/for/static_split.c  |  1 +
 .../test/parallel/omp_dtor_parallel_dtor.cpp  | 35 +++++++++++++++++++
 .../test/parallel/omp_parallel_copyin.c       |  2 ++
 .../test/parallel/omp_parallel_default.c      |  2 ++
 .../test/parallel/omp_parallel_firstprivate.c |  2 ++
 .../runtime/test/parallel/omp_parallel_goto.c | 34 ++++++++++++++++++
 .../runtime/test/parallel/omp_parallel_if.c   |  2 ++
 .../test/parallel/omp_parallel_private.c      |  2 ++
 .../test/parallel/omp_parallel_shared.c       |  2 ++
 .../test/tasking/bug_taskwait_detach.cpp      |  1 +
 .../test/tasking/hidden_helper_task/gtid.cpp  |  1 +
 .../test/tasking/kmp_detach_tasks_t1.c        |  1 +
 .../test/tasking/kmp_detach_tasks_t2.c        |  1 +
 .../test/tasking/kmp_detach_tasks_t3.c        |  1 +
 .../test/tasking/kmp_task_depend_all.c        |  1 +
 .../kmp_task_modifier_simple_par_new.cpp      |  1 +
 .../kmp_task_modifier_simple_par_old.cpp      |  1 +
 .../kmp_task_modifier_simple_ws_new.cpp       |  1 +
 .../kmp_task_modifier_simple_ws_old.cpp       |  1 +
 .../test/tasking/kmp_task_reduction_nest.cpp  |  3 +-
 openmp/runtime/test/tasking/kmp_taskloop.c    |  2 ++
 openmp/runtime/test/tasking/kmp_taskloop_5.c  |  1 +
 .../test/tasking/kmp_taskwait_depend_all.c    |  1 +
 .../test/tasking/kmp_taskwait_depend_in.c     |  1 +
 .../test/tasking/kmp_taskwait_nowait.c        |  1 +
 .../test/tasking/omp50_task_depend_mtx.c      |  1 +
 .../test/tasking/omp50_task_depend_mtx2.c     |  1 +
 .../test/tasking/omp50_task_depend_mtx3.c     |  2 +-
 .../test/tasking/omp50_taskdep_depobj.c       |  1 +
 .../test/tasking/omp50_taskwait_depend.c      |  1 +
 .../test/tasking/omp51_task_dep_inoutset.c    |  1 +
 .../test/tasking/omp_detach_taskwait.c        |  1 +
 .../test/tasking/omp_task_imp_firstprivate.c  |  2 ++
 openmp/runtime/test/tasking/omp_taskwait.c    |  1 +
 openmp/runtime/test/tasking/task_reduction3.c |  2 +-
 openmp/runtime/test/tasking/task_reduction4.c |  2 +-
 openmp/runtime/test/tasking/taskdep_if0_2.c   |  1 +
 openmp/runtime/test/teams/kmp_num_teams.c     |  1 +
 .../test/threadprivate/omp_threadprivate.c    |  2 ++
 .../for/kmp_sch_simd_runtime_api.c            |  1 +
 .../for/kmp_sch_simd_runtime_guided.c         |  1 +
 .../for/kmp_sch_simd_runtime_static.c         |  1 +
 .../test/worksharing/for/omp_for_collapse.c   |  2 ++
 .../worksharing/for/omp_parallel_for_static.c | 25 +++++++++++++
 .../for/omp_parallel_for_static_chunked.c     | 26 ++++++++++++++
 .../sections/omp_section_lastprivate.c        |  2 ++
 .../sections/omp_section_private.c            |  2 ++
 .../sections/omp_sections_nowait.c            |  2 ++
 .../sections/omp_sections_reduction.c         |  2 ++
 .../test/worksharing/single/omp_single.c      |  2 ++
 .../worksharing/single/omp_single_private.c   |  2 ++
 openmp/tools/archer/tests/lit.cfg             |  4 +++
 .../tests/parallel/parallel-firstprivate.c    |  2 ++
 .../archer/tests/races/task-dependency.c      |  2 ++
 .../tests/races/task-taskgroup-unrelated.c    |  2 ++
 .../archer/tests/races/task-taskwait-nested.c |  2 ++
 .../reduction/parallel-reduction-nowait.c     |  2 ++
 .../tests/reduction/parallel-reduction.c      |  2 ++
 .../tools/archer/tests/task/task-dependency.c |  2 ++
 .../archer/tests/task/task-taskwait-nested.c  |  2 ++
 .../tools/archer/tests/task/task-taskwait.c   |  2 ++
 .../archer/tests/task/task_late_fulfill.c     |  1 +
 107 files changed, 276 insertions(+), 11 deletions(-)
 create mode 100644 openmp/runtime/test/parallel/omp_dtor_parallel_dtor.cpp
 create mode 100644 openmp/runtime/test/parallel/omp_parallel_goto.c
 create mode 100644 openmp/runtime/test/worksharing/for/omp_parallel_for_static.c
 create mode 100644 openmp/runtime/test/worksharing/for/omp_parallel_for_static_chunked.c

diff --git a/openmp/runtime/test/atomic/kmp_atomic_cas.c b/openmp/runtime/test/atomic/kmp_atomic_cas.c
index 5706701e4a46ac..5e66a4896cdcd0 100644
--- a/openmp/runtime/test/atomic/kmp_atomic_cas.c
+++ b/openmp/runtime/test/atomic/kmp_atomic_cas.c
@@ -1,4 +1,5 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
 
 #include <stdio.h>
 #include <stdbool.h>
diff --git a/openmp/runtime/test/atomic/kmp_atomic_cas_cpt.c b/openmp/runtime/test/atomic/kmp_atomic_cas_cpt.c
index 676ecb89d822ba..7f4db7e595665b 100644
--- a/openmp/runtime/test/atomic/kmp_atomic_cas_cpt.c
+++ b/openmp/runtime/test/atomic/kmp_atomic_cas_cpt.c
@@ -1,4 +1,5 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
 
 #include <stdio.h>
 #include <stdbool.h>
diff --git a/openmp/runtime/test/atomic/omp_atomic.c b/openmp/runtime/test/atomic/omp_atomic.c
index 7cdd30d932434c..d5211806495354 100644
--- a/openmp/runtime/test/atomic/omp_atomic.c
+++ b/openmp/runtime/test/atomic/omp_atomic.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
+
 #include <stdio.h>
 #include <math.h>
 #include "omp_testsuite.h"
diff --git a/openmp/runtime/test/lit.cfg b/openmp/runtime/test/lit.cfg
index c1d240eaa80a58..1de77f9ad4d60a 100644
--- a/openmp/runtime/test/lit.cfg
+++ b/openmp/runtime/test/lit.cfg
@@ -5,6 +5,7 @@ import os
 import re
 import subprocess
 import lit.formats
+import shlex
 
 # Tell pylint that we know config and lit_config exist somewhere.
 if 'PYLINT_IMPORT' in os.environ:
@@ -48,6 +49,9 @@ flags = " -I " + config.test_source_root + \
 config.test_flags = " -I " + config.omp_header_directory + flags
 config.test_flags_use_compiler_omp_h = flags
 
+if "-fopenmp-enable-irbuilder" in (shlex.split(config.test_openmp_flags) + shlex.split(config.test_flags)):
+    config.available_features.add("irbuilder")
+
 # extra libraries
 libs = ""
 if config.has_libm:
diff --git a/openmp/runtime/test/lock/omp_lock.c b/openmp/runtime/test/lock/omp_lock.c
index 1301f27c4417f1..4ba6d498c312c9 100644
--- a/openmp/runtime/test/lock/omp_lock.c
+++ b/openmp/runtime/test/lock/omp_lock.c
@@ -1,6 +1,8 @@
 // RUN: %libomp-compile-and-run
 // RUN: env KMP_LOCK_KIND=tas KMP_SPIN_BACKOFF_PARAMS=2048,200 %libomp-run
 // RUN: env KMP_LOCK_KIND=futex %libomp-run
+// UNSUPPORTED: irbuilder
+
 #include <stdio.h>
 #include "omp_testsuite.h"
 
diff --git a/openmp/runtime/test/lock/omp_nest_lock.c b/openmp/runtime/test/lock/omp_nest_lock.c
index 33d7c6a9b8e2bc..81c21fb0a95ecc 100644
--- a/openmp/runtime/test/lock/omp_nest_lock.c
+++ b/openmp/runtime/test/lock/omp_nest_lock.c
@@ -1,4 +1,5 @@
 // RUN: %libomp-compile-and-run
+
 #include <stdio.h>
 #include "omp_testsuite.h"
 
diff --git a/openmp/runtime/test/lock/omp_test_lock.c b/openmp/runtime/test/lock/omp_test_lock.c
index c5120552702fef..d1b59201073f6a 100644
--- a/openmp/runtime/test/lock/omp_test_lock.c
+++ b/openmp/runtime/test/lock/omp_test_lock.c
@@ -1,6 +1,8 @@
 // RUN: %libomp-compile-and-run
 // RUN: env KMP_LOCK_KIND=tas %libomp-run
 // RUN: env KMP_LOCK_KIND=futex %libomp-run
+// XFAIL: irbuilder
+
 #include <stdio.h>
 #include "omp_testsuite.h"
 
diff --git a/openmp/runtime/test/lock/omp_test_nest_lock.c b/openmp/runtime/test/lock/omp_test_nest_lock.c
index 2fa6fd27b0f16f..78565d09c8a02d 100644
--- a/openmp/runtime/test/lock/omp_test_nest_lock.c
+++ b/openmp/runtime/test/lock/omp_test_nest_lock.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
+
 #include <stdio.h>
 #include "omp_testsuite.h"
 
diff --git a/openmp/runtime/test/master/omp_master.c b/openmp/runtime/test/master/omp_master.c
index 1cc7f9e83f4881..39fa2f32b8d936 100644
--- a/openmp/runtime/test/master/omp_master.c
+++ b/openmp/runtime/test/master/omp_master.c
@@ -1,4 +1,5 @@
 // RUN: %libomp-compile-and-run
+
 #include <stdio.h>
 #include "omp_testsuite.h"
 
diff --git a/openmp/runtime/test/misc_bugs/cancellation_for_sections.c b/openmp/runtime/test/misc_bugs/cancellation_for_sections.c
index 7cdaa1f3c5c3b0..20064acb2b5cc1 100644
--- a/openmp/runtime/test/misc_bugs/cancellation_for_sections.c
+++ b/openmp/runtime/test/misc_bugs/cancellation_for_sections.c
@@ -1,6 +1,7 @@
 // RUN: %libomp-compile && env OMP_CANCELLATION=true %libomp-run
 // Clang had a bug until version 4.0.1 which resulted in a hang.
 // UNSUPPORTED: clang-3, clang-4.0.0
+// XFAIL: irbuilder
 
 // Regression test for a bug in cancellation to cover effect of `#pragma omp cancel`
 // in a loop construct, on sections construct.
diff --git a/openmp/runtime/test/misc_bugs/omp_foreign_thread_team_reuse.c b/openmp/runtime/test/misc_bugs/omp_foreign_thread_team_reuse.c
index ec85f890b3b7b1..2403878462bd54 100644
--- a/openmp/runtime/test/misc_bugs/omp_foreign_thread_team_reuse.c
+++ b/openmp/runtime/test/misc_bugs/omp_foreign_thread_team_reuse.c
@@ -1,4 +1,5 @@
 // RUN: %libomp-compile-and-run
+
 #include <stdio.h>
 #include "omp_testsuite.h"
 
diff --git a/openmp/runtime/test/ompt/cancel/cancel_parallel.c b/openmp/runtime/test/ompt/cancel/cancel_parallel.c
index 9456b672e2e815..76cc61d8c7034c 100644
--- a/openmp/runtime/test/ompt/cancel/cancel_parallel.c
+++ b/openmp/runtime/test/ompt/cancel/cancel_parallel.c
@@ -1,7 +1,7 @@
 // RUN: %libomp-compile && env OMP_CANCELLATION=true %libomp-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
 // Current GOMP interface implementation does not support cancellation
-// XFAIL: gcc
+// XFAIL: gcc, irbuilder
 
 #include "callback.h"
 #include "omp.h"
diff --git a/openmp/runtime/test/ompt/cancel/cancel_taskgroup.c b/openmp/runtime/test/ompt/cancel/cancel_taskgroup.c
index 23e5de7ccfd639..e5b10373e871bb 100644
--- a/openmp/runtime/test/ompt/cancel/cancel_taskgroup.c
+++ b/openmp/runtime/test/ompt/cancel/cancel_taskgroup.c
@@ -2,7 +2,7 @@
 // REQUIRES: ompt
 // UNSUPPORTED: clang-3, clang-4.0.0
 // Current GOMP interface implementation does not support cancellation; icc 16 has a bug
-// XFAIL: gcc, icc-16
+// XFAIL: gcc, icc-16, irbuilder
 
 #include "callback.h"
 #include <unistd.h>  
diff --git a/openmp/runtime/test/ompt/cancel/cancel_worksharing.c b/openmp/runtime/test/ompt/cancel/cancel_worksharing.c
index 8576f96580b09a..6da9f2e1ad460b 100644
--- a/openmp/runtime/test/ompt/cancel/cancel_worksharing.c
+++ b/openmp/runtime/test/ompt/cancel/cancel_worksharing.c
@@ -1,7 +1,7 @@
 // RUN: %libomp-compile && env OMP_CANCELLATION=true %libomp-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
 // Current GOMP interface implementation does not support cancellation; icc 16 does not distinguish between sections and loops
-// XFAIL: icc-16
+// XFAIL: icc-16, irbuilder
 
 #include "callback.h"
 #include <unistd.h>
diff --git a/openmp/runtime/test/ompt/misc/control_tool.c b/openmp/runtime/test/ompt/misc/control_tool.c
index 0c3c1b0e7082d2..2fd82af672dde6 100644
--- a/openmp/runtime/test/ompt/misc/control_tool.c
+++ b/openmp/runtime/test/ompt/misc/control_tool.c
@@ -1,6 +1,8 @@
 // RUN: %libomp-compile-and-run | FileCheck %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
+
 #define TEST_NEED_PRINT_FRAME_FROM_OUTLINED_FN
 #include "callback.h"
 #include <omp.h>
diff --git a/openmp/runtime/test/ompt/parallel/max_active_levels_serialized.c b/openmp/runtime/test/ompt/parallel/max_active_levels_serialized.c
index bbe73efa76fab4..297706685e55df 100644
--- a/openmp/runtime/test/ompt/parallel/max_active_levels_serialized.c
+++ b/openmp/runtime/test/ompt/parallel/max_active_levels_serialized.c
@@ -2,6 +2,8 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck --check-prefix=THREADS %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
+
 #include "callback.h"
 #include <omp.h>
 
diff --git a/openmp/runtime/test/ompt/parallel/nested.c b/openmp/runtime/test/ompt/parallel/nested.c
index d91597b66da77d..9b2249204ed77d 100644
--- a/openmp/runtime/test/ompt/parallel/nested.c
+++ b/openmp/runtime/test/ompt/parallel/nested.c
@@ -2,6 +2,8 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck --check-prefix=THREADS %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
+
 #define TEST_NEED_PRINT_FRAME_FROM_OUTLINED_FN
 #include "callback.h"
 #include <omp.h>
diff --git a/openmp/runtime/test/ompt/parallel/nested_lwt.c b/openmp/runtime/test/ompt/parallel/nested_lwt.c
index 83483767bda1fd..1d47c4e5849bd4 100644
--- a/openmp/runtime/test/ompt/parallel/nested_lwt.c
+++ b/openmp/runtime/test/ompt/parallel/nested_lwt.c
@@ -2,6 +2,8 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck --check-prefix=THREADS %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
+
 #include "callback.h"
 #include <omp.h>
 #include <unistd.h>
diff --git a/openmp/runtime/test/ompt/parallel/nested_serialized.c b/openmp/runtime/test/ompt/parallel/nested_serialized.c
index f87b8f48aa5241..1cbf03dced229e 100644
--- a/openmp/runtime/test/ompt/parallel/nested_serialized.c
+++ b/openmp/runtime/test/ompt/parallel/nested_serialized.c
@@ -2,6 +2,8 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck --check-prefix=THREADS %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
+
 #include "callback.h"
 #include <omp.h>
 
diff --git a/openmp/runtime/test/ompt/parallel/nested_thread_num.c b/openmp/runtime/test/ompt/parallel/nested_thread_num.c
index f14f87ab9a57e7..271246705b1a6a 100644
--- a/openmp/runtime/test/ompt/parallel/nested_thread_num.c
+++ b/openmp/runtime/test/ompt/parallel/nested_thread_num.c
@@ -2,6 +2,8 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck --check-prefix=THREADS %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
+
 #define TEST_NEED_PRINT_FRAME_FROM_OUTLINED_FN
 #include "callback.h"
 #include <omp.h>
diff --git a/openmp/runtime/test/ompt/parallel/parallel_if0.c b/openmp/runtime/test/ompt/parallel/parallel_if0.c
index 63d670107f87bd..db59895b04a212 100644
--- a/openmp/runtime/test/ompt/parallel/parallel_if0.c
+++ b/openmp/runtime/test/ompt/parallel/parallel_if0.c
@@ -1,6 +1,8 @@
 // RUN: %libomp-compile-and-run | FileCheck %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
+
 #include "callback.h"
 
 int main()
diff --git a/openmp/runtime/test/ompt/parallel/serialized.c b/openmp/runtime/test/ompt/parallel/serialized.c
index 2be17dcafb0e22..5546cf19be399d 100644
--- a/openmp/runtime/test/ompt/parallel/serialized.c
+++ b/openmp/runtime/test/ompt/parallel/serialized.c
@@ -1,6 +1,8 @@
 // RUN: %libomp-compile-and-run | FileCheck %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
+
 #include "callback.h"
 
 int main()
diff --git a/openmp/runtime/test/ompt/synchronization/barrier/explicit.c b/openmp/runtime/test/ompt/synchronization/barrier/explicit.c
index d60acd62311ea0..f4b1a80112df52 100644
--- a/openmp/runtime/test/ompt/synchronization/barrier/explicit.c
+++ b/openmp/runtime/test/ompt/synchronization/barrier/explicit.c
@@ -1,6 +1,8 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
+
 #include "callback.h"
 #include <omp.h>
 
diff --git a/openmp/runtime/test/ompt/synchronization/barrier/for_loop.c b/openmp/runtime/test/ompt/synchronization/barrier/for_loop.c
index 52594478e1f04e..78d37511b41e71 100644
--- a/openmp/runtime/test/ompt/synchronization/barrier/for_loop.c
+++ b/openmp/runtime/test/ompt/synchronization/barrier/for_loop.c
@@ -1,6 +1,8 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
+
 #include "callback.h"
 #include <omp.h>
 
diff --git a/openmp/runtime/test/ompt/synchronization/barrier/single.c b/openmp/runtime/test/ompt/synchronization/barrier/single.c
index 8ba8b5211b1f24..30a0a671123b97 100644
--- a/openmp/runtime/test/ompt/synchronization/barrier/single.c
+++ b/openmp/runtime/test/ompt/synchronization/barrier/single.c
@@ -1,6 +1,8 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
+
 #include "callback.h"
 #include <omp.h>
 
diff --git a/openmp/runtime/test/ompt/synchronization/flush.c b/openmp/runtime/test/ompt/synchronization/flush.c
index 287d035ff85117..b26613cf5cfb5c 100644
--- a/openmp/runtime/test/ompt/synchronization/flush.c
+++ b/openmp/runtime/test/ompt/synchronization/flush.c
@@ -1,7 +1,7 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
 // GCC generates code that does not call the runtime for the flush construct
-// XFAIL: gcc
+// XFAIL: gcc,irbuilder
 
 #include "callback.h"
 #include <omp.h>
diff --git a/openmp/runtime/test/ompt/synchronization/masked.c b/openmp/runtime/test/ompt/synchronization/masked.c
index 3eb45d9592d802..b6928de4ced8a2 100644
--- a/openmp/runtime/test/ompt/synchronization/masked.c
+++ b/openmp/runtime/test/ompt/synchronization/masked.c
@@ -1,7 +1,7 @@
 // RUN: %libomp-compile-and-run | FileCheck %s
 // REQUIRES: ompt
 // GCC generates code that does not call the runtime for the master construct
-// XFAIL: gcc
+// XFAIL: gcc,irbuilder
 
 #include "callback.h"
 #include <omp.h>
diff --git a/openmp/runtime/test/ompt/synchronization/master.c b/openmp/runtime/test/ompt/synchronization/master.c
index 34ecc522b85ffd..7cd8bc1cc1cdbc 100644
--- a/openmp/runtime/test/ompt/synchronization/master.c
+++ b/openmp/runtime/test/ompt/synchronization/master.c
@@ -1,7 +1,7 @@
 // RUN: %libomp-compile-and-run | FileCheck %s
 // REQUIRES: ompt
 // GCC generates code that does not call the runtime for the master construct
-// XFAIL: gcc
+// XFAIL: gcc,irbuilder
 
 #define USE_PRIVATE_TOOL 1
 #include "callback.h"
diff --git a/openmp/runtime/test/ompt/synchronization/taskgroup.c b/openmp/runtime/test/ompt/synchronization/taskgroup.c
index 822fde027359f3..57315969d04147 100644
--- a/openmp/runtime/test/ompt/synchronization/taskgroup.c
+++ b/openmp/runtime/test/ompt/synchronization/taskgroup.c
@@ -1,6 +1,7 @@
 // RUN:  %libomp-compile-and-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
 
 #include "callback.h"
 #include <unistd.h>  
diff --git a/openmp/runtime/test/ompt/synchronization/taskwait.c b/openmp/runtime/test/ompt/synchronization/taskwait.c
index c4310246b7ea1f..411f8bd3e5a7cd 100644
--- a/openmp/runtime/test/ompt/synchronization/taskwait.c
+++ b/openmp/runtime/test/ompt/synchronization/taskwait.c
@@ -1,6 +1,8 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
+
 #include "callback.h"
 #include <omp.h>
 
diff --git a/openmp/runtime/test/ompt/synchronization/test_nest_lock_parallel.c b/openmp/runtime/test/ompt/synchronization/test_nest_lock_parallel.c
index e9240f7bece59a..bb8d103a6a16ee 100644
--- a/openmp/runtime/test/ompt/synchronization/test_nest_lock_parallel.c
+++ b/openmp/runtime/test/ompt/synchronization/test_nest_lock_parallel.c
@@ -1,6 +1,8 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
+
 #include "callback.h"
 #include <omp.h>
 
diff --git a/openmp/runtime/test/ompt/tasks/dependences.c b/openmp/runtime/test/ompt/tasks/dependences.c
index 16732e3fe1f0b1..84c9cb0f781586 100644
--- a/openmp/runtime/test/ompt/tasks/dependences.c
+++ b/openmp/runtime/test/ompt/tasks/dependences.c
@@ -1,6 +1,7 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
 
 #include "callback.h"
 #include <omp.h>
diff --git a/openmp/runtime/test/ompt/tasks/dependences_mutexinoutset.c b/openmp/runtime/test/ompt/tasks/dependences_mutexinoutset.c
index 50385b69d44b11..67f68a4a4c13b0 100644
--- a/openmp/runtime/test/ompt/tasks/dependences_mutexinoutset.c
+++ b/openmp/runtime/test/ompt/tasks/dependences_mutexinoutset.c
@@ -1,5 +1,6 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
+// XFAIL: irbuilder
 
 // GCC 9 introduced codegen for mutexinoutset
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7, gcc-8
diff --git a/openmp/runtime/test/ompt/tasks/explicit_task.c b/openmp/runtime/test/ompt/tasks/explicit_task.c
index a986c48ee895ae..85be41c4d626fe 100644
--- a/openmp/runtime/test/ompt/tasks/explicit_task.c
+++ b/openmp/runtime/test/ompt/tasks/explicit_task.c
@@ -1,6 +1,8 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
+
 #define TEST_NEED_PRINT_FRAME_FROM_OUTLINED_FN
 #include "callback.h"
 #include <omp.h> 
diff --git a/openmp/runtime/test/ompt/tasks/serialized.c b/openmp/runtime/test/ompt/tasks/serialized.c
index 1ce0b17a395ce0..a7c9b415d39643 100644
--- a/openmp/runtime/test/ompt/tasks/serialized.c
+++ b/openmp/runtime/test/ompt/tasks/serialized.c
@@ -1,6 +1,8 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
+
 #define TEST_NEED_PRINT_FRAME_FROM_OUTLINED_FN
 #include "callback.h"
 #include <omp.h>
diff --git a/openmp/runtime/test/ompt/tasks/task_if0-depend.c b/openmp/runtime/test/ompt/tasks/task_if0-depend.c
index f7fb6ef1069da5..7971b446ed885b 100644
--- a/openmp/runtime/test/ompt/tasks/task_if0-depend.c
+++ b/openmp/runtime/test/ompt/tasks/task_if0-depend.c
@@ -1,5 +1,6 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
+// XFAIL: irbuilder
 
 #include "callback.h"
 #include <omp.h>
diff --git a/openmp/runtime/test/ompt/tasks/task_late_fulfill.c b/openmp/runtime/test/ompt/tasks/task_late_fulfill.c
index d14b78d9c88f3c..0edf8f9a18df2b 100644
--- a/openmp/runtime/test/ompt/tasks/task_late_fulfill.c
+++ b/openmp/runtime/test/ompt/tasks/task_late_fulfill.c
@@ -1,6 +1,7 @@
 // RUN: %libomp-compile && env OMP_NUM_THREADS='3' \
 // RUN:    %libomp-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
+// XFAIL: irbuilder
 
 // Checked gcc 10.1 still does not support detach clause on task construct.
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7, gcc-8, gcc-9, gcc-10
diff --git a/openmp/runtime/test/ompt/tasks/task_memory.c b/openmp/runtime/test/ompt/tasks/task_memory.c
index 0be157437d57fb..a1c1fdd12520a9 100644
--- a/openmp/runtime/test/ompt/tasks/task_memory.c
+++ b/openmp/runtime/test/ompt/tasks/task_memory.c
@@ -1,6 +1,8 @@
 // RUN: %libomp-compile-and-run | FileCheck %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
+
 #define USE_PRIVATE_TOOL 1
 #include "callback.h"
 #include <omp.h>
diff --git a/openmp/runtime/test/ompt/tasks/task_types.c b/openmp/runtime/test/ompt/tasks/task_types.c
index 15226354d1f034..97ae57dd08f2bc 100644
--- a/openmp/runtime/test/ompt/tasks/task_types.c
+++ b/openmp/runtime/test/ompt/tasks/task_types.c
@@ -1,5 +1,7 @@
 // RUN: %libomp-compile-and-run | FileCheck %s
 // REQUIRES: ompt
+// XFAIL: irbuilder
+
 #include "callback.h"
 #include <omp.h>
 #include <math.h>
diff --git a/openmp/runtime/test/ompt/tasks/task_types_serialized.c b/openmp/runtime/test/ompt/tasks/task_types_serialized.c
index 3fe163e1c9689b..5765a6b716125e 100644
--- a/openmp/runtime/test/ompt/tasks/task_types_serialized.c
+++ b/openmp/runtime/test/ompt/tasks/task_types_serialized.c
@@ -1,5 +1,6 @@
 // RUN: %libomp-compile-and-run | FileCheck %s
 // REQUIRES: ompt
+// XFAIL: irbuilder
 
 #include "callback.h"
 #include <omp.h>
diff --git a/openmp/runtime/test/ompt/tasks/taskyield.c b/openmp/runtime/test/ompt/tasks/taskyield.c
index 2dd0fa1ae49a93..0bf3bbcc2b0caa 100644
--- a/openmp/runtime/test/ompt/tasks/taskyield.c
+++ b/openmp/runtime/test/ompt/tasks/taskyield.c
@@ -1,7 +1,7 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
 // Current GOMP interface implements taskyield as stub
-// XFAIL: gcc
+// XFAIL: gcc,irbuilder
 
 #include "callback.h"
 #include <omp.h>   
diff --git a/openmp/runtime/test/ompt/worksharing/for/auto_split.c b/openmp/runtime/test/ompt/worksharing/for/auto_split.c
index d82e3fd1ef62ab..b06ad676604ab8 100644
--- a/openmp/runtime/test/ompt/worksharing/for/auto_split.c
+++ b/openmp/runtime/test/ompt/worksharing/for/auto_split.c
@@ -3,6 +3,7 @@
 // REQUIRES: ompt
 // GCC doesn't call runtime for auto = static schedule
 // XFAIL: gcc
+// XFAIL: irbuilder
 
 #define SCHEDULE auto
 #include "base_split.h"
diff --git a/openmp/runtime/test/ompt/worksharing/for/dynamic_split.c b/openmp/runtime/test/ompt/worksharing/for/dynamic_split.c
index cf14971129609c..8f51a12119cbec 100644
--- a/openmp/runtime/test/ompt/worksharing/for/dynamic_split.c
+++ b/openmp/runtime/test/ompt/worksharing/for/dynamic_split.c
@@ -2,6 +2,7 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck --check-prefix=CHECK-LOOP %S/base_split.h
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
 
 #define SCHEDULE dynamic
 #include "base_split.h"
diff --git a/openmp/runtime/test/ompt/worksharing/for/guided_split.c b/openmp/runtime/test/ompt/worksharing/for/guided_split.c
index 7d560c2b3bddfc..a6ecdd982561cb 100644
--- a/openmp/runtime/test/ompt/worksharing/for/guided_split.c
+++ b/openmp/runtime/test/ompt/worksharing/for/guided_split.c
@@ -2,6 +2,7 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck --check-prefix=CHECK-LOOP %S/base_split.h
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
 
 #define SCHEDULE guided
 #include "base_split.h"
diff --git a/openmp/runtime/test/ompt/worksharing/for/runtime_split.c b/openmp/runtime/test/ompt/worksharing/for/runtime_split.c
index 7a677edbfd0e3a..479ac84c6e5d8f 100644
--- a/openmp/runtime/test/ompt/worksharing/for/runtime_split.c
+++ b/openmp/runtime/test/ompt/worksharing/for/runtime_split.c
@@ -2,6 +2,7 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck --check-prefix=CHECK-LOOP %S/base_split.h
 // REQUIRES: ompt
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7
+// XFAIL: irbuilder
 
 #define SCHEDULE runtime
 #include "base_split.h"
diff --git a/openmp/runtime/test/ompt/worksharing/for/static_split.c b/openmp/runtime/test/ompt/worksharing/for/static_split.c
index d8c88dd015f29d..c44442001df5d0 100644
--- a/openmp/runtime/test/ompt/worksharing/for/static_split.c
+++ b/openmp/runtime/test/ompt/worksharing/for/static_split.c
@@ -3,6 +3,7 @@
 // REQUIRES: ompt
 // GCC doesn't call runtime for static schedule
 // XFAIL: gcc
+// XFAIL: irbuilder
 
 #define SCHEDULE static
 #include "base_split.h"
diff --git a/openmp/runtime/test/parallel/omp_dtor_parallel_dtor.cpp b/openmp/runtime/test/parallel/omp_dtor_parallel_dtor.cpp
new file mode 100644
index 00000000000000..011e1089437a02
--- /dev/null
+++ b/openmp/runtime/test/parallel/omp_dtor_parallel_dtor.cpp
@@ -0,0 +1,35 @@
+// RUN: %libomp-cxx-compile
+// RUN: %libomp-run
+
+// XFAIL: irbuilder
+
+#include <stddef.h>
+#include <stdio.h>
+#include <omp.h>
+
+struct Destructible {
+  int &Ref;
+  int Count;
+  Destructible(int &Ref, int Count) : Ref(Ref), Count(Count) {}
+  ~Destructible() { Ref += Count; }
+};
+
+int main() {
+  int common = 0;
+  int result[2] = {0, 0};
+
+  Destructible dtor1{common, 1};
+
+#pragma omp parallel num_threads(2)
+  {
+    int tid = omp_get_thread_num();
+    Destructible dtor2{result[tid], 1};
+  }
+
+  if (common == 1 && result[0] == 1 && result[1] == 1) {
+    printf("SUCCESS\n");
+    return EXIT_SUCCESS;
+  }
+  printf("FAILED\n");
+  return EXIT_FAILURE;
+}
diff --git a/openmp/runtime/test/parallel/omp_parallel_copyin.c b/openmp/runtime/test/parallel/omp_parallel_copyin.c
index 600f9b72c20875..290618b033df4c 100644
--- a/openmp/runtime/test/parallel/omp_parallel_copyin.c
+++ b/openmp/runtime/test/parallel/omp_parallel_copyin.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
+
 #include <stdio.h>
 #include <stdlib.h>
 #include "omp_testsuite.h"
diff --git a/openmp/runtime/test/parallel/omp_parallel_default.c b/openmp/runtime/test/parallel/omp_parallel_default.c
index 0a8e09e66448ea..d4a445f3de5b2b 100644
--- a/openmp/runtime/test/parallel/omp_parallel_default.c
+++ b/openmp/runtime/test/parallel/omp_parallel_default.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
+
 #include <stdio.h>
 #include "omp_testsuite.h"
 
diff --git a/openmp/runtime/test/parallel/omp_parallel_firstprivate.c b/openmp/runtime/test/parallel/omp_parallel_firstprivate.c
index dbee76c639ae8b..b358bcd35d413d 100644
--- a/openmp/runtime/test/parallel/omp_parallel_firstprivate.c
+++ b/openmp/runtime/test/parallel/omp_parallel_firstprivate.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
+
 #include <stdio.h>
 #include <stdlib.h>
 #include "omp_testsuite.h"
diff --git a/openmp/runtime/test/parallel/omp_parallel_goto.c b/openmp/runtime/test/parallel/omp_parallel_goto.c
new file mode 100644
index 00000000000000..b7d58564020fdc
--- /dev/null
+++ b/openmp/runtime/test/parallel/omp_parallel_goto.c
@@ -0,0 +1,34 @@
+// RUN: %libomp-compile
+// RUN: %libomp-run
+
+// XFAIL: irbuilder
+
+#include <stddef.h>
+#include <stdio.h>
+#include <omp.h>
+
+int main() {
+  int result[] = {0, 0};
+
+#pragma omp parallel num_threads(2)
+  {
+    int tid = omp_get_thread_num();
+    result[tid] += 1;
+    goto cont;
+
+  orphaned:
+    result[tid] += 2;
+    printf("Never executed\n");
+
+  cont:
+    result[tid] += 4;
+  }
+
+  if (result[0] == 5 && result[1] == 5) {
+    printf("SUCCESS\n");
+    return EXIT_SUCCESS;
+  }
+
+  printf("FAILED\n");
+  return EXIT_FAILURE;
+}
diff --git a/openmp/runtime/test/parallel/omp_parallel_if.c b/openmp/runtime/test/parallel/omp_parallel_if.c
index abbf3cd48995e0..598ebb69653549 100644
--- a/openmp/runtime/test/parallel/omp_parallel_if.c
+++ b/openmp/runtime/test/parallel/omp_parallel_if.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
+
 #include <stdio.h>
 #include "omp_testsuite.h"
 
diff --git a/openmp/runtime/test/parallel/omp_parallel_private.c b/openmp/runtime/test/parallel/omp_parallel_private.c
index 238e806a83119b..c5ec795d758c29 100644
--- a/openmp/runtime/test/parallel/omp_parallel_private.c
+++ b/openmp/runtime/test/parallel/omp_parallel_private.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
+
 #include <stdio.h>
 #include <stdlib.h>
 #include "omp_testsuite.h"
diff --git a/openmp/runtime/test/parallel/omp_parallel_shared.c b/openmp/runtime/test/parallel/omp_parallel_shared.c
index 3146ca68efe68c..f605bbf774b4a9 100644
--- a/openmp/runtime/test/parallel/omp_parallel_shared.c
+++ b/openmp/runtime/test/parallel/omp_parallel_shared.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// UNSUPPORTED: irbuilder
+
 #include <stdio.h>
 #include "omp_testsuite.h"
 
diff --git a/openmp/runtime/test/tasking/bug_taskwait_detach.cpp b/openmp/runtime/test/tasking/bug_taskwait_detach.cpp
index 7a0ced73e33433..17cbe09e25184d 100644
--- a/openmp/runtime/test/tasking/bug_taskwait_detach.cpp
+++ b/openmp/runtime/test/tasking/bug_taskwait_detach.cpp
@@ -1,4 +1,5 @@
 // RUN: %libomp-cxx-compile-and-run
+// XFAIL: irbuilder
 
 #include <omp.h>
 
diff --git a/openmp/runtime/test/tasking/hidden_helper_task/gtid.cpp b/openmp/runtime/test/tasking/hidden_helper_task/gtid.cpp
index 881e27df723c70..e0bcd541da7d22 100644
--- a/openmp/runtime/test/tasking/hidden_helper_task/gtid.cpp
+++ b/openmp/runtime/test/tasking/hidden_helper_task/gtid.cpp
@@ -1,5 +1,6 @@
 // RUN: %libomp-cxx-compile-and-run
 // RUN: %libomp-cxx-compile && env OMP_NUM_THREADS=1 %libomp-run
+// XFAIL: irbuilder
 
 /*
  * This test aims to check whether hidden helper thread has right gtid. We also
diff --git a/openmp/runtime/test/tasking/kmp_detach_tasks_t1.c b/openmp/runtime/test/tasking/kmp_detach_tasks_t1.c
index f1763ec16c3c59..4bc4019517dd9b 100644
--- a/openmp/runtime/test/tasking/kmp_detach_tasks_t1.c
+++ b/openmp/runtime/test/tasking/kmp_detach_tasks_t1.c
@@ -1,5 +1,6 @@
 // RUN: %libomp-compile && env OMP_NUM_THREADS='3' %libomp-run
 // RUN: %libomp-compile && env OMP_NUM_THREADS='1' %libomp-run
+// XFAIL: irbuilder
 
 #include <stdio.h>
 #include <omp.h>
diff --git a/openmp/runtime/test/tasking/kmp_detach_tasks_t2.c b/openmp/runtime/test/tasking/kmp_detach_tasks_t2.c
index 66fcb8fbb432ab..d8b44a48c6e034 100644
--- a/openmp/runtime/test/tasking/kmp_detach_tasks_t2.c
+++ b/openmp/runtime/test/tasking/kmp_detach_tasks_t2.c
@@ -1,5 +1,6 @@
 // RUN: %libomp-compile && env OMP_NUM_THREADS='3' %libomp-run
 // RUN: %libomp-compile && env OMP_NUM_THREADS='1' %libomp-run
+// XFAIL: irbuilder
 
 #include <stdio.h>
 #include <omp.h>
diff --git a/openmp/runtime/test/tasking/kmp_detach_tasks_t3.c b/openmp/runtime/test/tasking/kmp_detach_tasks_t3.c
index e14bab60b1cfb8..a246389a75a250 100644
--- a/openmp/runtime/test/tasking/kmp_detach_tasks_t3.c
+++ b/openmp/runtime/test/tasking/kmp_detach_tasks_t3.c
@@ -2,6 +2,7 @@
 // RUN: %libomp-compile && env OMP_NUM_THREADS='1' %libomp-run
 // The runtime currently does not get dependency information from GCC.
 // UNSUPPORTED: gcc
+// XFAIL: irbuilder
 
 #include <stdio.h>
 #include <omp.h>
diff --git a/openmp/runtime/test/tasking/kmp_task_depend_all.c b/openmp/runtime/test/tasking/kmp_task_depend_all.c
index 9a2999657abdc2..507d512b0aeaf6 100644
--- a/openmp/runtime/test/tasking/kmp_task_depend_all.c
+++ b/openmp/runtime/test/tasking/kmp_task_depend_all.c
@@ -1,6 +1,7 @@
 // RUN: %libomp-compile-and-run
 // The runtime currently does not get dependency information from GCC.
 // UNSUPPORTED: gcc
+// XFAIL: irbuilder
 
 // Tests OMP 5.x task dependence "omp_all_memory",
 // emulates compiler codegen versions for new dep kind
diff --git a/openmp/runtime/test/tasking/kmp_task_modifier_simple_par_new.cpp b/openmp/runtime/test/tasking/kmp_task_modifier_simple_par_new.cpp
index 9812d602d1329d..40a35da211b942 100644
--- a/openmp/runtime/test/tasking/kmp_task_modifier_simple_par_new.cpp
+++ b/openmp/runtime/test/tasking/kmp_task_modifier_simple_par_new.cpp
@@ -1,4 +1,5 @@
 // RUN: %libomp-cxx-compile-and-run
+// XFAIL: irbuilder
 
 #include <stdio.h>
 #include <omp.h>
diff --git a/openmp/runtime/test/tasking/kmp_task_modifier_simple_par_old.cpp b/openmp/runtime/test/tasking/kmp_task_modifier_simple_par_old.cpp
index 94e9bbca5fe75d..dea90137a02cce 100644
--- a/openmp/runtime/test/tasking/kmp_task_modifier_simple_par_old.cpp
+++ b/openmp/runtime/test/tasking/kmp_task_modifier_simple_par_old.cpp
@@ -1,4 +1,5 @@
 // RUN: %libomp-cxx-compile-and-run
+// XFAIL: irbuilder
 
 #include <stdio.h>
 #include <omp.h>
diff --git a/openmp/runtime/test/tasking/kmp_task_modifier_simple_ws_new.cpp b/openmp/runtime/test/tasking/kmp_task_modifier_simple_ws_new.cpp
index 29d86e30a01668..b42ef39b177684 100644
--- a/openmp/runtime/test/tasking/kmp_task_modifier_simple_ws_new.cpp
+++ b/openmp/runtime/test/tasking/kmp_task_modifier_simple_ws_new.cpp
@@ -1,4 +1,5 @@
 // RUN: %libomp-cxx-compile-and-run
+// XFAIL: irbuilder
 
 #include <stdio.h>
 #include <omp.h>
diff --git a/openmp/runtime/test/tasking/kmp_task_modifier_simple_ws_old.cpp b/openmp/runtime/test/tasking/kmp_task_modifier_simple_ws_old.cpp
index 3e0ce26f3e6b92..b4da150c69437d 100644
--- a/openmp/runtime/test/tasking/kmp_task_modifier_simple_ws_old.cpp
+++ b/openmp/runtime/test/tasking/kmp_task_modifier_simple_ws_old.cpp
@@ -1,4 +1,5 @@
 // RUN: %libomp-cxx-compile-and-run
+// XFAIL: irbuilder
 
 #include <stdio.h>
 #include <omp.h>
diff --git a/openmp/runtime/test/tasking/kmp_task_reduction_nest.cpp b/openmp/runtime/test/tasking/kmp_task_reduction_nest.cpp
index 63dffe44dad5c0..8d4d653252a1f4 100644
--- a/openmp/runtime/test/tasking/kmp_task_reduction_nest.cpp
+++ b/openmp/runtime/test/tasking/kmp_task_reduction_nest.cpp
@@ -1,7 +1,8 @@
 // RUN: %libomp-cxx-compile-and-run
 // RUN: %libomp-cxx-compile -DFLG=1 && %libomp-run
 // GCC-5 is needed for OpenMP 4.0 support (taskgroup)
-// XFAIL: gcc-4
+// XFAIL: gcc-4,irbuilder
+
 #include <cstdio>
 #include <cmath>
 #include <cassert>
diff --git a/openmp/runtime/test/tasking/kmp_taskloop.c b/openmp/runtime/test/tasking/kmp_taskloop.c
index 4b137933bb0140..3be0a725617476 100644
--- a/openmp/runtime/test/tasking/kmp_taskloop.c
+++ b/openmp/runtime/test/tasking/kmp_taskloop.c
@@ -1,5 +1,7 @@
 // RUN: %libomp-compile-and-run
 // RUN: %libomp-compile && env KMP_TASKLOOP_MIN_TASKS=1 %libomp-run
+// XFAIL: irbuilder
+
 #include <stdio.h>
 #include <omp.h>
 #include "omp_my_sleep.h"
diff --git a/openmp/runtime/test/tasking/kmp_taskloop_5.c b/openmp/runtime/test/tasking/kmp_taskloop_5.c
index aca0e7565213e9..430cdce1a9707b 100644
--- a/openmp/runtime/test/tasking/kmp_taskloop_5.c
+++ b/openmp/runtime/test/tasking/kmp_taskloop_5.c
@@ -1,5 +1,6 @@
 // RUN: %libomp-compile-and-run
 // RUN: %libomp-compile && env KMP_TASKLOOP_MIN_TASKS=1 %libomp-run
+// XFAIL: irbuilder
 
 #include <stdio.h>
 #include <omp.h>
diff --git a/openmp/runtime/test/tasking/kmp_taskwait_depend_all.c b/openmp/runtime/test/tasking/kmp_taskwait_depend_all.c
index 98ce1f8347f374..b4fcf26a869c6d 100644
--- a/openmp/runtime/test/tasking/kmp_taskwait_depend_all.c
+++ b/openmp/runtime/test/tasking/kmp_taskwait_depend_all.c
@@ -1,6 +1,7 @@
 // RUN: %libomp-compile-and-run
 // The runtime currently does not get dependency information from GCC.
 // UNSUPPORTED: gcc
+// XFAIL: irbuilder
 
 // Tests OMP 5.x task dependence "omp_all_memory",
 // emulates compiler codegen versions for new dep kind
diff --git a/openmp/runtime/test/tasking/kmp_taskwait_depend_in.c b/openmp/runtime/test/tasking/kmp_taskwait_depend_in.c
index fef29ea60b4876..4f7442129ff590 100644
--- a/openmp/runtime/test/tasking/kmp_taskwait_depend_in.c
+++ b/openmp/runtime/test/tasking/kmp_taskwait_depend_in.c
@@ -1,4 +1,5 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
 
 // test checks IN dep kind in depend clause on taskwait construct
 // uses codegen emulation
diff --git a/openmp/runtime/test/tasking/kmp_taskwait_nowait.c b/openmp/runtime/test/tasking/kmp_taskwait_nowait.c
index 809642aea2c483..cd443a7723c5d4 100644
--- a/openmp/runtime/test/tasking/kmp_taskwait_nowait.c
+++ b/openmp/runtime/test/tasking/kmp_taskwait_nowait.c
@@ -1,4 +1,5 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
 
 // test checks IN dep kind in depend clause on taskwait nowait
 // uses codegen emulation
diff --git a/openmp/runtime/test/tasking/omp50_task_depend_mtx.c b/openmp/runtime/test/tasking/omp50_task_depend_mtx.c
index 79c270e94a7d81..5fe1b1c45349f1 100644
--- a/openmp/runtime/test/tasking/omp50_task_depend_mtx.c
+++ b/openmp/runtime/test/tasking/omp50_task_depend_mtx.c
@@ -1,4 +1,5 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
 
 // Tests OMP 5.0 task dependences "mutexinoutset", emulates compiler codegen
 // Mutually exclusive tasks get same input dependency info array
diff --git a/openmp/runtime/test/tasking/omp50_task_depend_mtx2.c b/openmp/runtime/test/tasking/omp50_task_depend_mtx2.c
index ec8a7d1cab690d..9593d5c301c8db 100644
--- a/openmp/runtime/test/tasking/omp50_task_depend_mtx2.c
+++ b/openmp/runtime/test/tasking/omp50_task_depend_mtx2.c
@@ -1,4 +1,5 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
 
 // Tests OMP 5.0 task dependences "mutexinoutset", emulates compiler codegen
 // Mutually exclusive tasks get input dependency info array sorted differently
diff --git a/openmp/runtime/test/tasking/omp50_task_depend_mtx3.c b/openmp/runtime/test/tasking/omp50_task_depend_mtx3.c
index 167489987ef32e..449bec00e80b62 100644
--- a/openmp/runtime/test/tasking/omp50_task_depend_mtx3.c
+++ b/openmp/runtime/test/tasking/omp50_task_depend_mtx3.c
@@ -2,7 +2,7 @@
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7, gcc-8
 // UNSUPPORTED: clang-3, clang-4, clang-5, clang-6, clang-7, clang-8
 // TODO: update expected result when icc supports mutexinoutset
-// XFAIL: icc
+// XFAIL: icc,irbuilder
 
 // Tests OMP 5.0 task dependences "mutexinoutset", emulates compiler codegen
 // Mutually exclusive tasks get same input dependency info array
diff --git a/openmp/runtime/test/tasking/omp50_taskdep_depobj.c b/openmp/runtime/test/tasking/omp50_taskdep_depobj.c
index 3c7912bfe715d6..a4bee857cf7e59 100644
--- a/openmp/runtime/test/tasking/omp50_taskdep_depobj.c
+++ b/openmp/runtime/test/tasking/omp50_taskdep_depobj.c
@@ -2,6 +2,7 @@
 // UNSUPPORTED: gcc-5, gcc-6, gcc-7, gcc-8
 // UNSUPPORTED: clang-5, clang-6, clang-7, clang-8, clang-9, clang-10
 // UNSUPPORTED: icc
+// XFAIL: irbuilder
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/openmp/runtime/test/tasking/omp50_taskwait_depend.c b/openmp/runtime/test/tasking/omp50_taskwait_depend.c
index 1e2b16616cc1a0..085b29c6719b31 100644
--- a/openmp/runtime/test/tasking/omp50_taskwait_depend.c
+++ b/openmp/runtime/test/tasking/omp50_taskwait_depend.c
@@ -4,6 +4,7 @@
 // support for taskwait with depend clause introduced in clang-14
 // UNSUPPORTED: clang-5, clang-6, clang-6, clang-8, clang-9, clang-10, clang-11,
 // clang-12, clang-13
+// XFAIL: irbuilder
 
 // icc does not yet support taskwait with depend clause
 // XFAIL: icc
diff --git a/openmp/runtime/test/tasking/omp51_task_dep_inoutset.c b/openmp/runtime/test/tasking/omp51_task_dep_inoutset.c
index a7787ff3da53ac..72e3c02265cf94 100644
--- a/openmp/runtime/test/tasking/omp51_task_dep_inoutset.c
+++ b/openmp/runtime/test/tasking/omp51_task_dep_inoutset.c
@@ -1,6 +1,7 @@
 // RUN: %libomp-compile-and-run
 // RUN: %libomp-cxx-compile-and-run
 // UNSUPPORTED: gcc
+// XFAIL: irbuilder
 
 // Tests OMP 5.0 task dependences "mutexinoutset" and 5.1 "inoutset",
 // emulates compiler codegen for new dep kinds
diff --git a/openmp/runtime/test/tasking/omp_detach_taskwait.c b/openmp/runtime/test/tasking/omp_detach_taskwait.c
index 5ac095405ab61e..91f234af404be0 100644
--- a/openmp/runtime/test/tasking/omp_detach_taskwait.c
+++ b/openmp/runtime/test/tasking/omp_detach_taskwait.c
@@ -1,5 +1,6 @@
 // RUN: %libomp-compile && env OMP_NUM_THREADS='3' %libomp-run
 // RUN: %libomp-compile && env OMP_NUM_THREADS='1' %libomp-run
+// XFAIL: irbuilder
 
 // Checked gcc 10.1 still does not support detach clause on task construct.
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7, gcc-8, gcc-9, gcc-10
diff --git a/openmp/runtime/test/tasking/omp_task_imp_firstprivate.c b/openmp/runtime/test/tasking/omp_task_imp_firstprivate.c
index 905ab9ac766fb4..88d05f6ca6b78a 100644
--- a/openmp/runtime/test/tasking/omp_task_imp_firstprivate.c
+++ b/openmp/runtime/test/tasking/omp_task_imp_firstprivate.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
+
 #include <stdio.h>
 #include <math.h>
 #include "omp_testsuite.h"
diff --git a/openmp/runtime/test/tasking/omp_taskwait.c b/openmp/runtime/test/tasking/omp_taskwait.c
index 584eceb58075c0..b93334cff41767 100644
--- a/openmp/runtime/test/tasking/omp_taskwait.c
+++ b/openmp/runtime/test/tasking/omp_taskwait.c
@@ -1,4 +1,5 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
 
 // This test is known to be fragile on NetBSD kernel at the moment,
 // https://bugs.llvm.org/show_bug.cgi?id=42020.
diff --git a/openmp/runtime/test/tasking/task_reduction3.c b/openmp/runtime/test/tasking/task_reduction3.c
index b125e3f6b38536..c9b724fe45d527 100644
--- a/openmp/runtime/test/tasking/task_reduction3.c
+++ b/openmp/runtime/test/tasking/task_reduction3.c
@@ -1,6 +1,6 @@
 // RUN: %libomp-compile-and-run
 
-// XFAIL: icc
+// XFAIL: icc, irbuilder
 // UNSUPPORTED: clang-4, clang-5, clang-6, clang-7, clang-8, clang-9, clang-10
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7, gcc-8
 
diff --git a/openmp/runtime/test/tasking/task_reduction4.c b/openmp/runtime/test/tasking/task_reduction4.c
index 9b686ab9f4b9b0..834d911e4f19d4 100644
--- a/openmp/runtime/test/tasking/task_reduction4.c
+++ b/openmp/runtime/test/tasking/task_reduction4.c
@@ -1,6 +1,6 @@
 // RUN: %libomp-compile-and-run
 
-// XFAIL: icc
+// XFAIL: icc, irbuilder
 // UNSUPPORTED: clang-4, clang-5, clang-6, clang-7, clang-8, clang-9, clang-10
 // UNSUPPORTED: gcc-4, gcc-5, gcc-6, gcc-7, gcc-8
 
diff --git a/openmp/runtime/test/tasking/taskdep_if0_2.c b/openmp/runtime/test/tasking/taskdep_if0_2.c
index 6f0dff4bb75548..7b26f722ab1c3f 100644
--- a/openmp/runtime/test/tasking/taskdep_if0_2.c
+++ b/openmp/runtime/test/tasking/taskdep_if0_2.c
@@ -1,4 +1,5 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/openmp/runtime/test/teams/kmp_num_teams.c b/openmp/runtime/test/teams/kmp_num_teams.c
index 06b0586b83a794..7c0d8651ca6e26 100644
--- a/openmp/runtime/test/teams/kmp_num_teams.c
+++ b/openmp/runtime/test/teams/kmp_num_teams.c
@@ -1,5 +1,6 @@
 // RUN: %libomp-compile-and-run
 // UNSUPPORTED: gcc
+// XFAIL: irbuilder
 // Linking fails for icc 18/19
 // UNSUPPORTED: icc-18, icc-19
 
diff --git a/openmp/runtime/test/threadprivate/omp_threadprivate.c b/openmp/runtime/test/threadprivate/omp_threadprivate.c
index 48ac65877c4178..0de4554e4b9f0c 100644
--- a/openmp/runtime/test/threadprivate/omp_threadprivate.c
+++ b/openmp/runtime/test/threadprivate/omp_threadprivate.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// UNSUPPORTED: irbuilder
+
 /*
  * Threadprivate is tested in 2 ways:
  * 1. The global variable declared as threadprivate should have
diff --git a/openmp/runtime/test/worksharing/for/kmp_sch_simd_runtime_api.c b/openmp/runtime/test/worksharing/for/kmp_sch_simd_runtime_api.c
index 85c9af025bf2d7..9cae24ff347b4a 100644
--- a/openmp/runtime/test/worksharing/for/kmp_sch_simd_runtime_api.c
+++ b/openmp/runtime/test/worksharing/for/kmp_sch_simd_runtime_api.c
@@ -1,4 +1,5 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
 
 // The test checks schedule(simd:runtime)
 // in combination with omp_set_schedule()
diff --git a/openmp/runtime/test/worksharing/for/kmp_sch_simd_runtime_guided.c b/openmp/runtime/test/worksharing/for/kmp_sch_simd_runtime_guided.c
index 99b22ab20d709f..71c853088dd0cf 100644
--- a/openmp/runtime/test/worksharing/for/kmp_sch_simd_runtime_guided.c
+++ b/openmp/runtime/test/worksharing/for/kmp_sch_simd_runtime_guided.c
@@ -6,6 +6,7 @@
 // RUN: env OMP_SCHEDULE=dynamic,1 %libomp-run 1
 // RUN: env OMP_SCHEDULE=dynamic,2 %libomp-run 2
 // RUN: env OMP_SCHEDULE=auto      %libomp-run
+// XFAIL: irbuilder
 
 // The test checks schedule(simd:runtime)
 // in combination with OMP_SCHEDULE=guided[,chunk]
diff --git a/openmp/runtime/test/worksharing/for/kmp_sch_simd_runtime_static.c b/openmp/runtime/test/worksharing/for/kmp_sch_simd_runtime_static.c
index 2048c278e1b7cb..84e1cfe03883ab 100644
--- a/openmp/runtime/test/worksharing/for/kmp_sch_simd_runtime_static.c
+++ b/openmp/runtime/test/worksharing/for/kmp_sch_simd_runtime_static.c
@@ -1,5 +1,6 @@
 // RUN: %libomp-compile && %libomp-run
 // RUN: %libomp-run 1 && %libomp-run 2
+// XFAIL: irbuilder
 
 // The test checks schedule(simd:runtime)
 // in combination with OMP_SCHEDULE=static[,chunk]
diff --git a/openmp/runtime/test/worksharing/for/omp_for_collapse.c b/openmp/runtime/test/worksharing/for/omp_for_collapse.c
index a08086dccefb49..14741cb936f5c1 100644
--- a/openmp/runtime/test/worksharing/for/omp_for_collapse.c
+++ b/openmp/runtime/test/worksharing/for/omp_for_collapse.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// UNSUPPORTED: irbuilder
+
 #include <stdio.h>
 #include <math.h>
 #include "omp_testsuite.h"
diff --git a/openmp/runtime/test/worksharing/for/omp_parallel_for_static.c b/openmp/runtime/test/worksharing/for/omp_parallel_for_static.c
new file mode 100644
index 00000000000000..b048254fb1362c
--- /dev/null
+++ b/openmp/runtime/test/worksharing/for/omp_parallel_for_static.c
@@ -0,0 +1,25 @@
+// RUN: %libomp-compile
+// RUN: %libomp-run
+
+#include <stddef.h>
+#include <stdio.h>
+#include <omp.h>
+
+int main() {
+  int result[2] = {0, 0};
+
+#pragma omp parallel num_threads(2)
+  {
+    int tid = omp_get_thread_num();
+#pragma omp for schedule(static)
+    for (int i = 0; i < 6; i += 1)
+      result[tid] += 1 << i;
+  }
+
+  if (result[0] == 1 + 2 + 4 && result[1] == 8 + 16 + 32) {
+    printf("SUCCESS\n");
+    return EXIT_SUCCESS;
+  }
+  printf("FAILED\n");
+  return EXIT_FAILURE;
+}
diff --git a/openmp/runtime/test/worksharing/for/omp_parallel_for_static_chunked.c b/openmp/runtime/test/worksharing/for/omp_parallel_for_static_chunked.c
new file mode 100644
index 00000000000000..aeca199dc69dea
--- /dev/null
+++ b/openmp/runtime/test/worksharing/for/omp_parallel_for_static_chunked.c
@@ -0,0 +1,26 @@
+// RUN: %libomp-compile
+// RUN: %libomp-run
+
+#include <stddef.h>
+#include <stdio.h>
+#include <omp.h>
+
+int main() {
+  int result[2] = {0, 0};
+
+#pragma omp parallel num_threads(2)
+  {
+    int tid = omp_get_thread_num();
+#pragma omp for schedule(static, 3)
+    for (int i = 0; i < 10; i += 1)
+      result[tid] += 1 << i;
+  }
+
+  if (result[0] == 1 + 2 + 4 + 64 + 128 + 256 &&
+      result[1] == 8 + 16 + 32 + 512) {
+    printf("SUCCESS\n");
+    return EXIT_SUCCESS;
+  }
+  printf("FAILED\n");
+  return EXIT_FAILURE;
+}
diff --git a/openmp/runtime/test/worksharing/sections/omp_section_lastprivate.c b/openmp/runtime/test/worksharing/sections/omp_section_lastprivate.c
index 0dbbea9e19933e..aae9bd770405d4 100644
--- a/openmp/runtime/test/worksharing/sections/omp_section_lastprivate.c
+++ b/openmp/runtime/test/worksharing/sections/omp_section_lastprivate.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
+
 #include <stdio.h>
 #include "omp_testsuite.h"
 
diff --git a/openmp/runtime/test/worksharing/sections/omp_section_private.c b/openmp/runtime/test/worksharing/sections/omp_section_private.c
index bf2a30d50878b9..c26a3683576ce0 100644
--- a/openmp/runtime/test/worksharing/sections/omp_section_private.c
+++ b/openmp/runtime/test/worksharing/sections/omp_section_private.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// UNSUPPORTED: irbuilder
+
 #include <stdio.h>
 #include "omp_testsuite.h"
 
diff --git a/openmp/runtime/test/worksharing/sections/omp_sections_nowait.c b/openmp/runtime/test/worksharing/sections/omp_sections_nowait.c
index caff254f4330b8..207b3c6b7f511d 100644
--- a/openmp/runtime/test/worksharing/sections/omp_sections_nowait.c
+++ b/openmp/runtime/test/worksharing/sections/omp_sections_nowait.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// UNSUPPORTED: irbuilder
+
 #include <stdio.h>
 #include "omp_testsuite.h"
 
diff --git a/openmp/runtime/test/worksharing/sections/omp_sections_reduction.c b/openmp/runtime/test/worksharing/sections/omp_sections_reduction.c
index 1fdb5ecdfeb86d..1970426b62fef4 100644
--- a/openmp/runtime/test/worksharing/sections/omp_sections_reduction.c
+++ b/openmp/runtime/test/worksharing/sections/omp_sections_reduction.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// UNSUPPORTED: irbuilder
+
 #include <stdio.h>
 #include <math.h>
 #include "omp_testsuite.h"
diff --git a/openmp/runtime/test/worksharing/single/omp_single.c b/openmp/runtime/test/worksharing/single/omp_single.c
index 49635798c2d085..2a33f80a347a41 100644
--- a/openmp/runtime/test/worksharing/single/omp_single.c
+++ b/openmp/runtime/test/worksharing/single/omp_single.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// UNSUPPORTED: irbuilder
+
 #include <stdio.h>
 #include "omp_testsuite.h"
 
diff --git a/openmp/runtime/test/worksharing/single/omp_single_private.c b/openmp/runtime/test/worksharing/single/omp_single_private.c
index a27f8de21b89bc..1e8914df47ea08 100644
--- a/openmp/runtime/test/worksharing/single/omp_single_private.c
+++ b/openmp/runtime/test/worksharing/single/omp_single_private.c
@@ -1,4 +1,6 @@
 // RUN: %libomp-compile-and-run
+// XFAIL: irbuilder
+
 #include <stdio.h>
 #include "omp_testsuite.h"
 
diff --git a/openmp/tools/archer/tests/lit.cfg b/openmp/tools/archer/tests/lit.cfg
index 7396e4b0d5d380..c971ccdb18e222 100644
--- a/openmp/tools/archer/tests/lit.cfg
+++ b/openmp/tools/archer/tests/lit.cfg
@@ -5,6 +5,7 @@ import os
 import re
 import subprocess
 import lit.formats
+import shlex
 
 # Tell pylint that we know config and lit_config exist somewhere.
 if 'PYLINT_IMPORT' in os.environ:
@@ -49,6 +50,9 @@ config.test_flags = " -I " + config.test_source_root + \
     " " + config.test_archer_flags + \
     " " + config.test_extra_flags
 
+if "-fopenmp-enable-irbuilder" in (shlex.split(config.test_openmp_flags) + shlex.split(config.test_flags)):
+    config.available_features.add("irbuilder")
+
 config.archer_flags = "-g -O1 -fsanitize=thread"
 
 
diff --git a/openmp/tools/archer/tests/parallel/parallel-firstprivate.c b/openmp/tools/archer/tests/parallel/parallel-firstprivate.c
index 97e8fcb52fae25..0b695768c0776d 100644
--- a/openmp/tools/archer/tests/parallel/parallel-firstprivate.c
+++ b/openmp/tools/archer/tests/parallel/parallel-firstprivate.c
@@ -14,6 +14,8 @@
 
 // RUN: %libarcher-compile-and-run | FileCheck %s
 // REQUIRES: tsan
+// XFAIL: irbuilder
+
 #include <omp.h>
 #include <stdio.h>
 
diff --git a/openmp/tools/archer/tests/races/task-dependency.c b/openmp/tools/archer/tests/races/task-dependency.c
index f6496ac8596d80..7fdc7c5c2a6221 100644
--- a/openmp/tools/archer/tests/races/task-dependency.c
+++ b/openmp/tools/archer/tests/races/task-dependency.c
@@ -13,6 +13,8 @@
 // RUN: %libarcher-compile-and-run-race | FileCheck %s
 // RUN: %libarcher-compile-and-run-race-noserial | FileCheck %s
 // REQUIRES: tsan
+// XFAIL: irbuilder
+
 #include "ompt/ompt-signal.h"
 #include <omp.h>
 #include <stdio.h>
diff --git a/openmp/tools/archer/tests/races/task-taskgroup-unrelated.c b/openmp/tools/archer/tests/races/task-taskgroup-unrelated.c
index 04b2957b48637f..01688f7b696c6e 100644
--- a/openmp/tools/archer/tests/races/task-taskgroup-unrelated.c
+++ b/openmp/tools/archer/tests/races/task-taskgroup-unrelated.c
@@ -13,6 +13,8 @@
 // RUN: %libarcher-compile-and-run-race | FileCheck %s
 // RUN: %libarcher-compile-and-run-race-noserial | FileCheck %s
 // REQUIRES: tsan
+// XFAIL: irbuilder
+
 #include "ompt/ompt-signal.h"
 #include <omp.h>
 #include <stdio.h>
diff --git a/openmp/tools/archer/tests/races/task-taskwait-nested.c b/openmp/tools/archer/tests/races/task-taskwait-nested.c
index 02f1fb576c8706..f01249aa1a5d26 100644
--- a/openmp/tools/archer/tests/races/task-taskwait-nested.c
+++ b/openmp/tools/archer/tests/races/task-taskwait-nested.c
@@ -13,6 +13,8 @@
 // RUN: %libarcher-compile-and-run-race | FileCheck %s
 // RUN: %libarcher-compile-and-run-race-noserial | FileCheck %s
 // REQUIRES: tsan
+// XFAIL: irbuilder
+
 #include "ompt/ompt-signal.h"
 #include <omp.h>
 #include <stdio.h>
diff --git a/openmp/tools/archer/tests/reduction/parallel-reduction-nowait.c b/openmp/tools/archer/tests/reduction/parallel-reduction-nowait.c
index b91579f0b00c20..d00ba1c2a63b4c 100644
--- a/openmp/tools/archer/tests/reduction/parallel-reduction-nowait.c
+++ b/openmp/tools/archer/tests/reduction/parallel-reduction-nowait.c
@@ -14,6 +14,8 @@
 
 // RUN: %libarcher-compile-and-run | FileCheck %s
 // REQUIRES: tsan
+// XFAIL: irbuilder
+
 #include <omp.h>
 #include <stdio.h>
 
diff --git a/openmp/tools/archer/tests/reduction/parallel-reduction.c b/openmp/tools/archer/tests/reduction/parallel-reduction.c
index 6d1a556ac00ed6..e7e10f26e8d82d 100644
--- a/openmp/tools/archer/tests/reduction/parallel-reduction.c
+++ b/openmp/tools/archer/tests/reduction/parallel-reduction.c
@@ -14,6 +14,8 @@
 
 // RUN: %libarcher-compile-and-run| FileCheck %s
 // REQUIRES: tsan
+// XFAIL: irbuilder
+
 #include <omp.h>
 #include <stdio.h>
 
diff --git a/openmp/tools/archer/tests/task/task-dependency.c b/openmp/tools/archer/tests/task/task-dependency.c
index a7a2a669c54b0e..7cb92f8097949e 100644
--- a/openmp/tools/archer/tests/task/task-dependency.c
+++ b/openmp/tools/archer/tests/task/task-dependency.c
@@ -14,6 +14,8 @@
 
 // RUN: %libarcher-compile-and-run | FileCheck %s
 // REQUIRES: tsan
+// XFAIL: irbuilder
+
 #include <omp.h>
 #include <stdio.h>
 #include <unistd.h>
diff --git a/openmp/tools/archer/tests/task/task-taskwait-nested.c b/openmp/tools/archer/tests/task/task-taskwait-nested.c
index fe3fb27874d4f0..76f0155bcf4857 100644
--- a/openmp/tools/archer/tests/task/task-taskwait-nested.c
+++ b/openmp/tools/archer/tests/task/task-taskwait-nested.c
@@ -14,6 +14,8 @@
 
 // RUN: %libarcher-compile-and-run | FileCheck %s
 // REQUIRES: tsan
+// XFAIL: irbuilder
+
 #include <omp.h>
 #include <stdio.h>
 #include <unistd.h>
diff --git a/openmp/tools/archer/tests/task/task-taskwait.c b/openmp/tools/archer/tests/task/task-taskwait.c
index af334dc310afba..37200366793ec8 100644
--- a/openmp/tools/archer/tests/task/task-taskwait.c
+++ b/openmp/tools/archer/tests/task/task-taskwait.c
@@ -14,6 +14,8 @@
 
 // RUN: %libarcher-compile-and-run | FileCheck %s
 // REQUIRES: tsan
+// XFAIL: irbuilder
+
 #include <omp.h>
 #include <stdio.h>
 #include <unistd.h>
diff --git a/openmp/tools/archer/tests/task/task_late_fulfill.c b/openmp/tools/archer/tests/task/task_late_fulfill.c
index 31d096deec7569..47c7cc42ce3ede 100644
--- a/openmp/tools/archer/tests/task/task_late_fulfill.c
+++ b/openmp/tools/archer/tests/task/task_late_fulfill.c
@@ -10,6 +10,7 @@
 // icc compiler does not support detach clause.
 // UNSUPPORTED: icc
 // REQUIRES: tsan
+// XFAIL: irbuilder
 
 #include <omp.h>
 #include <stdio.h>

>From 7b9d5b442d8e5856fb5c7429e2811d5d788802cf Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Tue, 7 Dec 2021 13:30:57 -0600
Subject: [PATCH 2/2] Fix/adapt tests

---
 openmp/runtime/test/ompt/tasks/taskwait-depend.c        | 1 +
 openmp/runtime/test/parallel/omp_dtor_parallel_dtor.cpp | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/openmp/runtime/test/ompt/tasks/taskwait-depend.c b/openmp/runtime/test/ompt/tasks/taskwait-depend.c
index 752486c2f144ae..53cf11b60f9c73 100644
--- a/openmp/runtime/test/ompt/tasks/taskwait-depend.c
+++ b/openmp/runtime/test/ompt/tasks/taskwait-depend.c
@@ -10,6 +10,7 @@
 // support for taskwait with depend clause introduced in clang-14
 // UNSUPPORTED: clang-5, clang-6, clang-6, clang-8, clang-9, clang-10, clang-11,
 // clang-12, clang-13
+// XFAIL: irbuilder
 
 #include "callback.h"
 #include <omp.h>
diff --git a/openmp/runtime/test/parallel/omp_dtor_parallel_dtor.cpp b/openmp/runtime/test/parallel/omp_dtor_parallel_dtor.cpp
index 011e1089437a02..669369bc00aef4 100644
--- a/openmp/runtime/test/parallel/omp_dtor_parallel_dtor.cpp
+++ b/openmp/runtime/test/parallel/omp_dtor_parallel_dtor.cpp
@@ -26,10 +26,10 @@ int main() {
     Destructible dtor2{result[tid], 1};
   }
 
-  if (common == 1 && result[0] == 1 && result[1] == 1) {
+  if (common == 0 && result[0] == 1 && result[1] == 1) {
     printf("SUCCESS\n");
     return EXIT_SUCCESS;
   }
-  printf("FAILED\n");
+  printf("FAILED (%d, %d, %d)\n", common, result[0], result[1]);
   return EXIT_FAILURE;
 }



More information about the Openmp-commits mailing list