[PATCH] D62683: [ARM][FIX] Ran out of registers due tail recursion

Diogo N. Sampaio via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 30 08:30:40 PDT 2019


dnsampaio created this revision.
dnsampaio added reviewers: eli.friedman, dmgreen.
Herald added subscribers: llvm-commits, kristof.beyls, javed.absar.
Herald added a project: LLVM.

- pr42062

When compiling for MinSize,
ARMTargetLowering::LowerCall decides to indirect
multiple calls to a same function. However,
it disconsiders the limitation that thumb1
indirect calls require the callee to be in a
register from r0 to r3 (llvm limiation).
If all those registers are used by arguments, the
compiler dies with "error: run out of registers
during register allocation".
This patch tells the function
IsEligibleForTailCallOptimization if we intend to
perform indirect calls, as to avoid tail call
optimization.


Repository:
  rL LLVM

https://reviews.llvm.org/D62683

Files:
  lib/Target/ARM/ARMISelLowering.cpp
  lib/Target/ARM/ARMISelLowering.h
  test/CodeGen/ARM/pr42062.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D62683.202219.patch
Type: text/x-patch
Size: 5545 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190530/3d0e6e72/attachment.bin>


More information about the llvm-commits mailing list