blob: e189f5dc735a2ff9713831e7b7f5ba29a01f2659 [file] [log] [blame]
Anders Carlsson9234b7f2009-09-17 03:46:43 +00001// RUN: clang-cc -emit-llvm %s -o %t && FileCheck %s --input-file=%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_"
Anders Carlsson9234b7f2009-09-17 03:46:43 +000012 // CHECK: _Z4nextIiiEPT_S0_RKT0_
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_"
Anders Carlsson9234b7f2009-09-17 03:46:43 +000015 // CHECK: _Z4nextIfiEPT_S0_RKT0_
16
Douglas Gregor127102b2009-06-29 20:59:39 +000017 fptr = next(fptr, diff);
18}
19
20template<typename T, typename U>
21T* next(T* ptr, const U& diff);
22
23void test2(int *iptr, double *dptr, int diff) {
24 iptr = next(iptr, diff);
Douglas Gregor1fd2dd12009-06-29 22:39:32 +000025 // FIXME: should be "_Z4nextIdiEPT_S1_RKT0_"
Anders Carlsson9234b7f2009-09-17 03:46:43 +000026 // RUN: grep "_Z4nextIiiEPT_S0_RKT0_" %t
Douglas Gregor127102b2009-06-29 20:59:39 +000027 dptr = next(dptr, diff);
Owen Andersonbc0a2222009-07-27 21:00:51 +000028}