[PATCH] D90637: [ValueTracking] Inbounds does not imply nsw

Nikita Popov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 2 15:16:41 PST 2020


nikic added a comment.

Hm, I think we need to clarify this in LangRef. We definitely assume this interpretation (unsigned base and signed offset) in some places (e.g. https://github.com/llvm/llvm-project/blob/c938b4a1ed43f3075155e16a7c2792ca8c122258/llvm/lib/Analysis/ScalarEvolution.cpp#L5061-L5072 and I'm pretty sure I've seen it elsewhere as well), but LangRef is really not clear on this point. It's also not completely obvious where the assumption that the pointer address space is unsigned comes from. E.g. on x86-64 the canonical address space is signed (but I don't know about other architectures). We need to clarify whether having an allocated object at `[0xffffffff, 0x00000001]` is legal (signed address space), `[0x7fffffff, 0x80000001]` is legal (unsigned address space) or both.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D90637/new/

https://reviews.llvm.org/D90637



More information about the llvm-commits mailing list