blob: bea3af2bb5af448c0fd3a82cc008860884c13802 [file] [log] [blame]
Douglas Gregor1fd2dd12009-06-29 22:39:32 +00001// RUN: clang-cc -emit-llvm %s -o %t &&
Douglas Gregor127102b2009-06-29 20:59:39 +00002template<typename T, typename U>
3T* next(T* ptr, const U& diff);
4
5template<typename T, typename U>
6T* next(T* ptr, const U& diff) {
7 return ptr + diff;
8}
9
10void test(int *iptr, float *fptr, int diff) {
Douglas Gregor1fd2dd12009-06-29 22:39:32 +000011 // FIXME: should be "_Z4nextIiiEPT_S1_RKT0_"
12 // RUN: grep "_Z4nextIiiEPiPiRKi" %t &&
Douglas Gregor127102b2009-06-29 20:59:39 +000013 iptr = next(iptr, diff);
Douglas Gregor1fd2dd12009-06-29 22:39:32 +000014 // FIXME: should be "_Z4nextIfiEPT_S1_RKT0_"
15 // RUN: grep "_Z4nextIfiEPfPfRKi" %t &&
Douglas Gregor127102b2009-06-29 20:59:39 +000016 fptr = next(fptr, diff);
17}
18
19template<typename T, typename U>
20T* next(T* ptr, const U& diff);
21
22void test2(int *iptr, double *dptr, int diff) {
23 iptr = next(iptr, diff);
Douglas Gregor1fd2dd12009-06-29 22:39:32 +000024 // FIXME: should be "_Z4nextIdiEPT_S1_RKT0_"
25 // RUN: grep "_Z4nextIdiEPdPdRKi" %t
Douglas Gregor127102b2009-06-29 20:59:39 +000026 dptr = next(dptr, diff);
27}