[all-commits] [llvm/llvm-project] c78726: [PowerPC] Refactor FinishCall. [NFC]
Sean Fertile via All-commits
all-commits at lists.llvm.org
Mon Dec 9 09:41:11 PST 2019
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: c78726fae0edf28e0556a03b7b44df3c4ec3c94e
https://github.com/llvm/llvm-project/commit/c78726fae0edf28e0556a03b7b44df3c4ec3c94e
Author: Sean Fertile <sd.fertile at gmail.com>
Date: 2019-12-09 (Mon, 09 Dec 2019)
Changed paths:
M llvm/lib/Target/PowerPC/PPCISelLowering.cpp
M llvm/lib/Target/PowerPC/PPCSubtarget.h
Log Message:
-----------
[PowerPC] Refactor FinishCall. [NFC]
Refactor FinishCall to be more easily understandable as a precursor to
implementing indirect calls for AIX. The refactor tries to group similar
code together at the cost of some code duplication. The high level
overview of the refactor:
- Adds a number of helper functions for things like:
* Determining if a call is indirect.
* What the Opcode for a call is.
* Transforming the callee for a direct function call.
* Extracting the Chain operand from a CallSeqStart node.
* Building the operands of the call.
- Adds helpers for building the indirect call DAG nodes
(excluding the call instruction itself which is created in
`FinishCall`).
- Removes PrepareCall, which has been subsumed by the
helpers.
- Rename 'InFlag' to 'Glue'.
- FinishCall has been refactored to:
1) Set TOC pointer usage on the DAG for the TOC based
subtargets.
2) Calculate if a call is indirect.
3) Determine the Opcode to use for the call
instruction.
4) Transform the Callee for direct calls, or build
the DAG nodes for indirect calls.
5) Buildup the call operands.
6) Emit the call instruction.
7) If needed, emit the callSeqEnd Node and
finish lowering by calling `LowerCallResult`
Differential Revision: https://reviews.llvm.org/D70126
More information about the All-commits
mailing list