[PATCH] D63630: [GlobalISel][Localizer] Allow localization of G_INTTOPTR and chains of instructions

Amara Emerson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 20 16:25:04 PDT 2019


aemerson created this revision.
aemerson added reviewers: paquette, qcolombet.
Herald added subscribers: Petar.Avramovic, volkan, hiraditya, kristof.beyls, javed.absar, rovka.
Herald added a project: LLVM.

G_INTTOPTR can prevent the localizer from moving G_CONSTANTs, but since it's essentially a side effect free cast instruction we can remat both instructions. This patch changes the localizer to enable localization of the chains by iterating over the entry block instructions in reverse order. That way, uses will localized first, and then the defs are free to be localized as well.

This also changes the previous SmallPtrSet of localized instructions to use a SetVector instead. We're dealing with pointers and need deterministic iteration order.

Overall, this change improves ARM64 -O0 CTMark code size by around 0.7% geomean.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D63630

Files:
  llvm/include/llvm/CodeGen/GlobalISel/Localizer.h
  llvm/lib/CodeGen/GlobalISel/Localizer.cpp
  llvm/test/CodeGen/AArch64/GlobalISel/localizer.mir

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D63630.205919.patch
Type: text/x-patch
Size: 7369 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190620/d29a579c/attachment.bin>


More information about the llvm-commits mailing list