Compiler projects using llvm
// Test clang driver bails out after one error during CUDA compilation.

// REQUIRES: powerpc-registered-target
// REQUIRES: nvptx-registered-target

#ifdef FORCE_ERROR
#error compilation failed
#endif

// RUN: not %clang -target powerpc64le-ibm-linux-gnu -fsyntax-only -nocudalib \
// RUN:   -nocudainc -DFORCE_ERROR %s 2>&1 | FileCheck %s
// RUN: not %clang -target powerpc64le-ibm-linux-gnu -fsyntax-only -nocudalib \
// RUN:   -nocudainc -DFORCE_ERROR --cuda-gpu-arch=sm_35 --cuda-gpu-arch=sm_60 \
// RUN:   %s 2>&1 | FileCheck %s
// RUN: not %clang -target powerpc64le-ibm-linux-gnu -fsyntax-only -nocudalib \
// RUN:   -nocudainc -DFORCE_ERROR --cuda-gpu-arch=sm_35 --cuda-gpu-arch=sm_60 \
// RUN:   --cuda-device-only %s 2>&1 | FileCheck %s

#if defined(ERROR_HOST) && !defined(__CUDA_ARCH__)
#error compilation failed
#endif

#if defined(ERROR_SM35) && (__CUDA_ARCH__ == 350)
#error compilation failed
#endif

#if defined(ERROR_SM60) && (__CUDA_ARCH__ == 600)
#error compilation failed
#endif

// RUN: not %clang -target powerpc64le-ibm-linux-gnu -fsyntax-only -nocudalib \
// RUN:   -nocudainc -DERROR_HOST --cuda-gpu-arch=sm_35 --cuda-gpu-arch=sm_60 \
// RUN:   %s 2>&1 | FileCheck %s
// RUN: not %clang -target powerpc64le-ibm-linux-gnu -fsyntax-only -nocudalib \
// RUN:   -nocudainc -DERROR_SM35 --cuda-gpu-arch=sm_35 --cuda-gpu-arch=sm_60 \
// RUN:   --cuda-device-only %s 2>&1 | FileCheck %s
// RUN: not %clang -target powerpc64le-ibm-linux-gnu -fsyntax-only -nocudalib \
// RUN:   -nocudainc -DERROR_SM60 --cuda-gpu-arch=sm_35 --cuda-gpu-arch=sm_60 \
// RUN:   --cuda-device-only %s 2>&1 | FileCheck %s

// RUN: not %clang -target powerpc64le-ibm-linux-gnu -fsyntax-only -nocudalib \
// RUN:   -nocudainc -DERROR_HOST -DERROR_SM35 --cuda-gpu-arch=sm_35 \
// RUN:   --cuda-gpu-arch=sm_60 %s 2>&1 | FileCheck %s
// RUN: not %clang -target powerpc64le-ibm-linux-gnu -fsyntax-only -nocudalib \
// RUN:   -nocudainc -DERROR_HOST -DERROR_SM60 --cuda-gpu-arch=sm_35 \
// RUN:   --cuda-gpu-arch=sm_60 %s 2>&1 | FileCheck %s
// RUN: not %clang -target powerpc64le-ibm-linux-gnu -fsyntax-only -nocudalib \
// RUN:   -nocudainc -DERROR_SM35 -DERROR_SM60 --cuda-gpu-arch=sm_35 \
// RUN:   --cuda-gpu-arch=sm_60 %s 2>&1 | FileCheck %s


// CHECK: error: compilation failed
// CHECK-NOT: error: compilation failed