diff options
author | Jason Liu <jasonliu.development@gmail.com> | 2019-06-06 19:13:36 +0000 |
---|---|---|
committer | Jason Liu <jasonliu.development@gmail.com> | 2019-06-06 19:13:36 +0000 |
commit | 60ec248148c52a47cecf8b660c32a0e7568a8a00 (patch) | |
tree | 76cad463d64a536c8379b7029e45c16cc4773fd8 /llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp | |
parent | f288a0685f874d2b965db25a16b9c44f78c55b12 (diff) | |
download | bcm5719-llvm-60ec248148c52a47cecf8b660c32a0e7568a8a00.tar.gz bcm5719-llvm-60ec248148c52a47cecf8b660c32a0e7568a8a00.zip |
[AIX] Implement function descriptor on SDAG
Summary:
(1) Function descriptor on AIX
On AIX, a called routine may have 2 distinct symbols associated with it:
* A function descriptor (Name)
* A function entry point (.Name)
The descriptor structure on AIX is the same as those in the ELF V1 ABI:
* The address of the entry point of the function.
* The TOC base address for the function.
* The environment pointer.
The descriptor symbol uses the same name as the source level function in C.
The function entry point is analogous to the symbol we would generate for a
function in a non-descriptor-based ABI, except that it is renamed by
prepending a ".".
Which symbol gets referenced depends on the context:
* Taking the address of the function references the descriptor symbol.
* Calling the function references the entry point symbol.
(2) Speaking of implementation on AIX, for direct function call target, we
create proper MCSymbol SDNode(e.g . ".foo") while constructing SDAG to
replace original TargetGlobalAddress SDNode. Then down the path, we can
take advantage of this MCSymbol.
Patch by: Xiangling_L
Reviewed by: sfertile, hubert.reinterpretcast, jasonliu, syzaara
Differential Revision: https://reviews.llvm.org/D62532
llvm-svn: 362735
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp')
0 files changed, 0 insertions, 0 deletions