diff --git a/test/Gradient/Pointers.C b/test/Gradient/Pointers.C index 294325ac6..e37400d2b 100644 --- a/test/Gradient/Pointers.C +++ b/test/Gradient/Pointers.C @@ -512,6 +512,24 @@ double cStyleMemoryAlloc(double x, size_t n) { // CHECK-NEXT: free(_d_t); // CHECK-NEXT: } +void pointerArgOut(double* p) { + *p *= *p; +} + +// CHECK: void pointerArgOut_grad(double *p, clad::array_ref _d_p) { +// CHECK-NEXT: * _d_p = 1; +// CHECK-NEXT: double _t0; +// CHECK-NEXT: _t0 = *p; +// CHECK-NEXT: *p *= *p; +// CHECK-NEXT: { +// CHECK-NEXT: *p = _t0; +// CHECK-NEXT: double _r_d0 = * _d_p; +// CHECK-NEXT: * _d_p -= _r_d0; +// CHECK-NEXT: * _d_p += _r_d0 * *p; +// CHECK-NEXT: * _d_p += *p * _r_d0; +// CHECK-NEXT: } +// CHECK-NEXT:} + #define NON_MEM_FN_TEST(var)\ res[0]=0;\ var.execute(5,res);\ @@ -621,4 +639,10 @@ int main() { d_x = 0; d_cStyleMemoryAlloc.execute(5, 7, &d_x); printf("%.2f\n", d_x); // CHECK-EXEC: 4.00 + + auto d_pointerArgOut = clad::gradient(pointerArgOut); + double *p = new double(5); + double d_p; + d_pointerArgOut.execute(p, &d_p); + printf("%.2f\n", d_p); // CHECK-EXEC: 10.00 } \ No newline at end of file