brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 7ae5634 Raw
44 lines · plain
1// RUN: %clang_cc1 -std=c++14 %s -emit-llvm -o - -triple nvptx \2// RUN:   -fcuda-is-device | FileCheck --check-prefixes=CXX14 %s3// RUN: %clang_cc1 -std=c++17 %s -emit-llvm -o - -triple nvptx \4// RUN:   -fcuda-is-device | FileCheck --check-prefixes=CXX17 %s5 6#include "Inputs/cuda.h"7 8// COM: @_ZL1a = internal {{.*}}constant i32 79constexpr int a = 7;10__constant__ const int &use_a = a;11 12namespace B {13 // COM: @_ZN1BL1bE = internal {{.*}}constant i32 914  constexpr int b = 9;15}16__constant__ const int &use_B_b = B::b;17 18struct Q {19  // CXX14: @_ZN1Q2k2E = {{.*}}externally_initialized constant i32 620  // CXX17: @_ZN1Q2k2E = internal {{.*}}constant i32 621  // CXX14: @_ZN1Q2k1E = available_externally {{.*}}constant i32 522  // CXX17: @_ZN1Q2k1E = {{.*}} externally_initialized constant i32 523  static constexpr int k1 = 5;24  static constexpr int k2 = 6;25};26constexpr int Q::k2;27 28__constant__ const int &use_Q_k1 = Q::k1;29__constant__ const int &use_Q_k2 = Q::k2;30 31template<typename T> struct X {32  // CXX14: @_ZN1XIiE1aE = available_externally {{.*}}constant i32 12333  // CXX17: @_ZN1XIiE1aE = {{.*}}externally_initialized constant i32 12334  static constexpr int a = 123;35};36__constant__ const int &use_X_a = X<int>::a;37 38template <typename T, T a, T b> struct A {39  // CXX14: @_ZN1AIiLi1ELi2EE1xE = available_externally {{.*}}constant i32 240  // CXX17: @_ZN1AIiLi1ELi2EE1xE = {{.*}}externally_initialized constant i32 241  constexpr static T x = a * b;42};43__constant__ const int &y = A<int, 1, 2>::x;44