[restrict] can we assume the pointer address different for two pointers with restrict

All of the clang/gcc/icc don’t return 0 directly, so I’m not sure the assume is true ?

int foo (int * restrict a, int * restrict b) {
  return a == b;
}

You cannot assume that.
restrict has only meaning if you have accesses, among other things.
In your example, restrict is effectively meaningless.