1*23419bfdSJoachim Protze /* 2*23419bfdSJoachim Protze * parallel-nosuppression.c -- Archer testcase 3*23419bfdSJoachim Protze */ 4*23419bfdSJoachim Protze 5*23419bfdSJoachim Protze //===----------------------------------------------------------------------===// 6*23419bfdSJoachim Protze // 7*23419bfdSJoachim Protze // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 8*23419bfdSJoachim Protze // 9*23419bfdSJoachim Protze // See tools/archer/LICENSE.txt for details. 10*23419bfdSJoachim Protze // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 11*23419bfdSJoachim Protze // 12*23419bfdSJoachim Protze //===----------------------------------------------------------------------===// 13*23419bfdSJoachim Protze 14*23419bfdSJoachim Protze 15*23419bfdSJoachim Protze // RUN: %libarcher-compile-and-run-nosuppression | FileCheck %s 16*23419bfdSJoachim Protze // REQUIRES: tsan 17*23419bfdSJoachim Protze #include <omp.h> 18*23419bfdSJoachim Protze #include <stdio.h> 19*23419bfdSJoachim Protze main(int argc,char * argv[])20*23419bfdSJoachim Protzeint main(int argc, char *argv[]) { 21*23419bfdSJoachim Protze int var = 0; 22*23419bfdSJoachim Protze 23*23419bfdSJoachim Protze #pragma omp parallel num_threads(2) shared(var) 24*23419bfdSJoachim Protze { 25*23419bfdSJoachim Protze if (omp_get_thread_num() == 1) { 26*23419bfdSJoachim Protze var++; 27*23419bfdSJoachim Protze } 28*23419bfdSJoachim Protze } // implicit barrier 29*23419bfdSJoachim Protze 30*23419bfdSJoachim Protze var++; 31*23419bfdSJoachim Protze 32*23419bfdSJoachim Protze fprintf(stderr, "DONE\n"); 33*23419bfdSJoachim Protze int error = (var != 2); 34*23419bfdSJoachim Protze return error; 35*23419bfdSJoachim Protze } 36*23419bfdSJoachim Protze 37*23419bfdSJoachim Protze // CHECK: Warning: please export TSAN_OPTIONS 38*23419bfdSJoachim Protze // CHECK: DONE 39