Two pointers point to the same chunk of memory, preventing the compiler from doing certain optimizations.

Example

void foo(int *array, int *size, int *value) {
    for(int i = 0; i < *size; ++i) {
        array[i] = 2 * (*value);
    }
}

*value could be an alias for an element of the array it could change on any given iteration.