12b8115b1Sprotze@itc.rwth-aachen.de /* 22b8115b1Sprotze@itc.rwth-aachen.de * parallel-simple.c -- Archer testcase 32b8115b1Sprotze@itc.rwth-aachen.de */ 42b8115b1Sprotze@itc.rwth-aachen.de 52b8115b1Sprotze@itc.rwth-aachen.de //===----------------------------------------------------------------------===// 62b8115b1Sprotze@itc.rwth-aachen.de // 72b8115b1Sprotze@itc.rwth-aachen.de // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 82b8115b1Sprotze@itc.rwth-aachen.de // 92b8115b1Sprotze@itc.rwth-aachen.de // See tools/archer/LICENSE.txt for details. 102b8115b1Sprotze@itc.rwth-aachen.de // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 112b8115b1Sprotze@itc.rwth-aachen.de // 122b8115b1Sprotze@itc.rwth-aachen.de //===----------------------------------------------------------------------===// 132b8115b1Sprotze@itc.rwth-aachen.de 142b8115b1Sprotze@itc.rwth-aachen.de 15*b281a05dSIsabel Thärigen // RUN: %libarcher-compile && env OMP_TOOL_VERBOSE_INIT=stderr %libarcher-run 2>&1 | FileCheck %s --check-prefixes CHECK,TSAN_ON 16*b281a05dSIsabel Thärigen // RUN: %clang-archer %openmp_flags %flags %s -o %t && env OMP_TOOL_VERBOSE_INIT=stderr %t 2>&1 | FileCheck %s --check-prefixes CHECK,TSAN_OFF 1777ad98c8Sprotze@itc.rwth-aachen.de // REQUIRES: tsan 182b8115b1Sprotze@itc.rwth-aachen.de #include <omp.h> 192b8115b1Sprotze@itc.rwth-aachen.de #include <stdio.h> 202b8115b1Sprotze@itc.rwth-aachen.de 21*b281a05dSIsabel Thärigen // TSAN_ON: ----- START LOGGING OF TOOL REGISTRATION ----- 22*b281a05dSIsabel Thärigen // TSAN_ON-NEXT: Search for OMP tool in current address space... Failed. 23*b281a05dSIsabel Thärigen // TSAN_ON-NEXT: No OMP_TOOL_LIBRARIES defined. 24*b281a05dSIsabel Thärigen // TSAN_ON-NEXT: ...searching tool libraries failed. Using archer tool. 25*b281a05dSIsabel Thärigen // TSAN_ON-NEXT: Opening libarcher.so... Success. 26*b281a05dSIsabel Thärigen // TSAN_ON-NEXT: Searching for ompt_start_tool in libarcher.so... Success. 27*b281a05dSIsabel Thärigen // TSAN_ON-NEXT: Tool was started and is using the OMPT interface. 28*b281a05dSIsabel Thärigen // TSAN_ON-NEXT: ----- END LOGGING OF TOOL REGISTRATION ----- 29*b281a05dSIsabel Thärigen 30*b281a05dSIsabel Thärigen // TSAN_OFF: ----- START LOGGING OF TOOL REGISTRATION ----- 31*b281a05dSIsabel Thärigen // TSAN_OFF-NEXT: Search for OMP tool in current address space... Failed. 32*b281a05dSIsabel Thärigen // TSAN_OFF-NEXT: No OMP_TOOL_LIBRARIES defined. 33*b281a05dSIsabel Thärigen // TSAN_OFF-NEXT: ...searching tool libraries failed. Using archer tool. 34*b281a05dSIsabel Thärigen // TSAN_OFF-NEXT: Opening libarcher.so... Success. 35*b281a05dSIsabel Thärigen // TSAN_OFF-NEXT: Searching for ompt_start_tool in libarcher.so... Found but not using the OMPT interface. 36*b281a05dSIsabel Thärigen // TSAN_OFF-NEXT: No OMP tool loaded. 37*b281a05dSIsabel Thärigen // TSAN_OFF-NEXT: ----- END LOGGING OF TOOL REGISTRATION ----- 38*b281a05dSIsabel Thärigen 39*b281a05dSIsabel Thärigen main(int argc,char * argv[])402b8115b1Sprotze@itc.rwth-aachen.deint main(int argc, char *argv[]) { 412b8115b1Sprotze@itc.rwth-aachen.de int var = 0; 422b8115b1Sprotze@itc.rwth-aachen.de 432b8115b1Sprotze@itc.rwth-aachen.de #pragma omp parallel num_threads(2) shared(var) 442b8115b1Sprotze@itc.rwth-aachen.de { 452b8115b1Sprotze@itc.rwth-aachen.de if (omp_get_thread_num() == 1) { 462b8115b1Sprotze@itc.rwth-aachen.de var++; 472b8115b1Sprotze@itc.rwth-aachen.de } 482b8115b1Sprotze@itc.rwth-aachen.de } // implicit barrier 492b8115b1Sprotze@itc.rwth-aachen.de 502b8115b1Sprotze@itc.rwth-aachen.de var++; 512b8115b1Sprotze@itc.rwth-aachen.de 522b8115b1Sprotze@itc.rwth-aachen.de fprintf(stderr, "DONE\n"); 532b8115b1Sprotze@itc.rwth-aachen.de int error = (var != 2); 542b8115b1Sprotze@itc.rwth-aachen.de return error; 552b8115b1Sprotze@itc.rwth-aachen.de } 562b8115b1Sprotze@itc.rwth-aachen.de 572b8115b1Sprotze@itc.rwth-aachen.de // CHECK-NOT: ThreadSanitizer: data race 582b8115b1Sprotze@itc.rwth-aachen.de // CHECK-NOT: ThreadSanitizer: reported 5923419bfdSJoachim Protze // CHECK-NOT: Warning: please export TSAN_OPTIONS 602b8115b1Sprotze@itc.rwth-aachen.de // CHECK: DONE 61