work_group_reduce function takes built-in data-types (e.g half, int, uint, long, ulong float or double) as input. It receives the input argument as value, not as a pointer. So, you can pass any value pointed by global or local memory pointer as follows.
kernel void (global const int *inData, global int *outData)
{
uint gid = get_global_id(0);
...
outData[gid ] = work_group_reduce_min(inData[gid]);
}
In the above example, the "inData" or "outData" may be a local memory pointer.