3838#ifndef HEADER
3939#define HEADER
4040
41- void foo_v1 (float *AAA, float *BBB, int *I) {return ;}
42- void foo_v2 (float *AAA, float *BBB, int *I) {return ;}
43- void foo_v3 (float *AAA, float *BBB, int *I) {return ;}
41+ void foo_v1 (float *AAA, float *BBB, int &CCC, int *I) {return ;}
42+ void foo_v2 (float *AAA, float *BBB, int &CCC, int *I) {return ;}
43+ void foo_v3 (float *AAA, float *BBB, int &CCC, int *I) {return ;}
4444
45- // DUMP: FunctionDecl{{.*}} foo 'void (float *, float *, int *)'
45+ // DUMP: FunctionDecl{{.*}} foo 'void (float *, float *, int &, int *)'
4646// DUMP: OMPDeclareVariantAttr{{.*}}device={arch(x86, x86_64)}
4747// DUMP: DeclRefExpr{{.*}}Function{{.*}}foo_v3
4848// DUMP: DeclRefExpr{{.*}}ParmVar{{.*}}'I'
@@ -54,9 +54,9 @@ void foo_v3(float *AAA, float *BBB, int *I) {return;}
5454// DUMP: DeclRefExpr{{.*}}Function{{.*}}foo_v1
5555// DUMP: DeclRefExpr{{.*}}ParmVar{{.*}}'AAA'
5656// DUMP: DeclRefExpr{{.*}}ParmVar{{.*}}'BBB'
57- // PRINT: #pragma omp declare variant(foo_v3) match(construct={dispatch}, device={arch(x86, x86_64)}) adjust_args(nothing:I) adjust_args(need_device_ptr:BBB) adjust_args(need_device_addr:AAA )
57+ // PRINT: #pragma omp declare variant(foo_v3) match(construct={dispatch}, device={arch(x86, x86_64)}) adjust_args(nothing:I) adjust_args(need_device_ptr:BBB) adjust_args(need_device_addr:CCC )
5858
59- // PRINT: #pragma omp declare variant(foo_v2) match(construct={dispatch}, device={arch(ppc)}) adjust_args(need_device_ptr:AAA) adjust_args(need_device_addr:BBB )
59+ // PRINT: #pragma omp declare variant(foo_v2) match(construct={dispatch}, device={arch(ppc)}) adjust_args(need_device_ptr:AAA) adjust_args(need_device_addr:CCC )
6060
6161// PRINT: omp declare variant(foo_v1) match(construct={dispatch}, device={arch(arm)}) adjust_args(need_device_ptr:AAA,BBB)
6262
@@ -67,33 +67,33 @@ void foo_v3(float *AAA, float *BBB, int *I) {return;}
6767#pragma omp declare variant(foo_v2) \
6868 match (construct={dispatch}, device={arch (ppc)}), \
6969 adjust_args(need_device_ptr:AAA) \
70- adjust_args(need_device_addr:BBB )
70+ adjust_args(need_device_addr:CCC )
7171
7272#pragma omp declare variant(foo_v3) \
7373 adjust_args (need_device_ptr:BBB) adjust_args(nothing:I) \
74- adjust_args(need_device_addr:AAA) \
74+ adjust_args(need_device_addr:CCC) \
7575 match(construct={dispatch}, device={arch (x86,x86_64)})
7676
77- void foo(float *AAA, float *BBB, int *I) {return ;}
77+ void foo(float *AAA, float *BBB, int &CCC, int *I) {return ;}
7878
79- void Foo_Var (float *AAA, float *BBB, float *CCC) {return ;}
79+ void Foo_Var (float *AAA, float *BBB, float *& CCC) {return ;}
8080
8181#pragma omp declare variant(Foo_Var) \
8282 match (construct={dispatch}, device={arch (x86_64)}) \
8383 adjust_args(need_device_ptr:AAA) adjust_args(nothing:BBB) \
8484 adjust_args(need_device_addr:CCC)
8585template<typename T>
86- void Foo(T *AAA, T *BBB, T *CCC) {return ;}
86+ void Foo(T *AAA, T *BBB, T *& CCC) {return ;}
8787
8888// PRINT: #pragma omp declare variant(Foo_Var) match(construct={dispatch}, device={arch(x86_64)}) adjust_args(nothing:BBB) adjust_args(need_device_ptr:AAA) adjust_args(need_device_addr:CCC)
89- // DUMP: FunctionDecl{{.*}} Foo 'void (T *, T *, T *)'
89+ // DUMP: FunctionDecl{{.*}} Foo 'void (T *, T *, T *& )'
9090// DUMP: OMPDeclareVariantAttr{{.*}}device={arch(x86_64)}
9191// DUMP: DeclRefExpr{{.*}}Function{{.*}}Foo_Var
9292// DUMP: DeclRefExpr{{.*}}ParmVar{{.*}}'BBB'
9393// DUMP: DeclRefExpr{{.*}}ParmVar{{.*}}'AAA'
9494// DUMP: DeclRefExpr{{.*}}ParmVar{{.*}}'CCC'
9595//
96- // DUMP: FunctionDecl{{.*}} Foo 'void (float *, float *, float *)'
96+ // DUMP: FunctionDecl{{.*}} Foo 'void (float *, float *, float *& )'
9797// DUMP: OMPDeclareVariantAttr{{.*}}device={arch(x86_64)}
9898// DUMP: DeclRefExpr{{.*}}Function{{.*}}Foo_Var
9999// DUMP: DeclRefExpr{{.*}}ParmVar{{.*}}'BBB'
0 commit comments