blob: 8dbaf2fe4d433f3b43a5e218e7132ea5420a5c00 [file] [log] [blame]
Anders Carlsson511ec052009-09-17 03:48:45 +00001// RUN: clang-cc -emit-llvm %s -o - | FileCheck %s
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 Carlsson511ec052009-09-17 03:48:45 +000026 // CHECK: _Z4nextIiiEPT_S0_RKT0_
Douglas Gregor127102b2009-06-29 20:59:39 +000027 dptr = next(dptr, diff);
Owen Andersonbc0a2222009-07-27 21:00:51 +000028}