brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 31c7835 Raw
63 lines · cpp
1// RUN: %clang_cc1 -emit-llvm -Wundefined-func-template -verify -triple %itanium_abi_triple %s -o - | FileCheck %s2// expected-no-diagnostics3 4// CHECK-DAG: _ZZN7PR219047GetDataIiEERKibE1i = internal global i32 45// CHECK-DAG: _ZZN7PR219047GetDataIiEERKibE1i_0 = internal global i32 26 7template<typename T, typename U>8T* next(T* ptr, const U& diff);9 10template<typename T, typename U>11T* next(T* ptr, const U& diff) { 12  return ptr + diff; 13}14 15void test(int *iptr, float *fptr, int diff) {16  // CHECK: _Z4nextIiiEPT_S1_RKT0_17  iptr = next(iptr, diff);18 19  // CHECK: _Z4nextIfiEPT_S1_RKT0_20  fptr = next(fptr, diff);21}22 23template<typename T, typename U>24T* next(T* ptr, const U& diff);25 26void test2(int *iptr, double *dptr, int diff) {27  iptr = next(iptr, diff);28 29  // CHECK: _Z4nextIdiEPT_S1_RKT0_30  dptr = next(dptr, diff);31}32 33namespace PR21904 {34template <typename>35const int &GetData(bool);36 37template <>38const int &GetData<int>(bool b) {39  static int i = 4;40  if (b) {41    static int i = 2;42    return i;43  }44  return i;45}46}47 48namespace GH125747 {49 50template<typename F> constexpr int visit(F f) { return f(0); }51    52template <class T> int G(T t);53    54int main() { return visit([](auto s) -> int { return G(s); }); }55    56template <class T> int G(T t) {57  return 0;58}59 60// CHECK: define {{.*}} @_ZN8GH1257471GIiEEiT_61 62}63