[PATCH] D58982: DAG: allow DAG pointer size different from memory representation.

Tim Northover via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 5 10:18:12 PST 2019


t.p.northover created this revision.
Herald added subscribers: jdoerfert, jfb, hiraditya, kristof.beyls, javed.absar, mcrosier.
Herald added a project: LLVM.

In preparation for supporting ILP32 on AArch64, this modifies the SelectionDAG builder code so that pointers are allowed to have a larger type when "live" in the DAG compared to memory.

Pointers get zero-extended whenever they are loaded, and truncated prior to stores.  In addition, a few not quite so obvious locations need updating:

- A GEP that has not been marked inbounds needs to enforce the IR-documented 2s-complement wrapping at the memory pointer size. Inbounds GEPs are undefined if they overflow the address space, so no additional operations are needed.
- Signed comparisons would give incorrect results if performed on the zero-extended values.

This shouldn't affect CodeGen for now, which unfortunately means tests can't be written, but will become active when the AArch64 ILP32 support is committed. I decided it was better to split the patch off despite that limitation.


Repository:
  rL LLVM

https://reviews.llvm.org/D58982

Files:
  llvm/include/llvm/CodeGen/Analysis.h
  llvm/include/llvm/CodeGen/TargetLowering.h
  llvm/lib/CodeGen/Analysis.cpp
  llvm/lib/CodeGen/AtomicExpandPass.cpp
  llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D58982.189352.patch
Type: text/x-patch
Size: 20057 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190305/5637a8e9/attachment-0001.bin>


More information about the llvm-commits mailing list