File1: #include <stdlib.h>\ntypedef double real8;\n\nvoid foo(real8 * restrict newSxx, real8 * restrict newSyy, int length)\n{\n  int i;\n\n#pragma omp parallel for private (i) firstprivate (length)\n  for (i = 0; i <= length - 1; i += 1) {\n    newSxx[i] = 0.0;\n    newSyy[i] = 0.0;\n  }\n}\n\nint main()\n{\n  int length=1000;\n  real8* newSxx = malloc (length* sizeof (real8));\n  real8* newSyy = malloc (length* sizeof (real8));\n\n  foo(newSxx, newSyy, length);\n\n  free (newSxx);\n  free (newSyy);\n  return 0;\n}\n\n
File2: program DRB067_restrictpointer1_orig_no\n    use omp_lib\n    use DRB067\n    implicit none\n\n    integer :: len = 1000\n    integer, parameter :: dp = kind(1.0d0)\n    real(dp),dimension(:), pointer :: newSxx, newSyy\n\n    allocate (newSxx(len))\n    allocate (newSyy(len))\n\n    call foo(newSxx, newSyy, len)\n\n    if(associated(newSxx))nullify(newSxx)\n    if(associated(newSyy))nullify(newSyy)\nend program