About user of bitcast/GEP instruction


In PromoteMemoryToRegister.cpp, it seems to rely on the fact that the only users of bitcast/GEP instruction are lifetime intrinsics (llvm.lifetime.start/end). I did some searching in llvm/test folder, it seems to be true.

However, by reading LLVM IR manual, I don’t see any restriction stated on the possible user of bitcast/GEP instruction. So my question is who impose the restriction ? Is it Clang ?



Use of GEPs and bitcasts is certainly not restricted to lifetime
intrinsics. For example, they're used by loads and stores all the time.

PromoteMemoryToRegister.cpp tries to figure out whether allocas can be
safely promoted to registers, and I assume the reasoning is that if an
instruction is GEP'ing into stack-allocated memory for non-trivial
purposes, it can't be promoted.

- Hans