llvm.invariant.group.barrier may accept pointers to arbitrary address space.
This patch let it accept pointers to i8 in any address space and returns
pointer to i8 in the same address space.
Corresponding clang change: https://reviews.llvm.org/D40062
I don't understand the I->use_empty() check, or how this is related to the address space change