#
e5062a6c |
| 06-Aug-2020 |
jasonliu <jasonliu.development@gmail.com> |
[XCOFF][AIX] Put each jump table in an independent section if -ffunction-sections is specified
If a function is in a unique section, putting all jump tables in .rodata will prevent functions that h
[XCOFF][AIX] Put each jump table in an independent section if -ffunction-sections is specified
If a function is in a unique section, putting all jump tables in .rodata will prevent functions that have a jump table to get garbage collect by the linker. Therefore, we need to put jump table into a unique section as well.
Reviewed By: Xiangling_L
Differential Revision: https://reviews.llvm.org/D84761
show more ...
|
#
11bb7c22 |
| 03-Aug-2020 |
Fangrui Song <maskray@google.com> |
[MC] Set sh_link to 0 if the associated symbol is undefined
Part of https://bugs.llvm.org/show_bug.cgi?id=41734
LTO can drop externally available definitions. Such AssociatedSymbol is not associate
[MC] Set sh_link to 0 if the associated symbol is undefined
Part of https://bugs.llvm.org/show_bug.cgi?id=41734
LTO can drop externally available definitions. Such AssociatedSymbol is not associated with a symbol. ELFWriter::writeSection() will assert.
Allow a SHF_LINK_ORDER section to have sh_link=0.
We need to give sh_link a syntax, a literal zero in the linked-to symbol position, e.g. `.section name,"ao",@progbits,0`
Reviewed By: pcc
Differential Revision: https://reviews.llvm.org/D72899
show more ...
|
#
04dc9691 |
| 29-Jul-2020 |
jasonliu <jasonliu.development@gmail.com> |
[XCOFF][AIX] Enable -ffunction-sections
Summary: This patch implements -ffunction-sections on AIX. This patch focuses on assembly generation. Follow-on patch needs to handle: 1. -ffunction-sections
[XCOFF][AIX] Enable -ffunction-sections
Summary: This patch implements -ffunction-sections on AIX. This patch focuses on assembly generation. Follow-on patch needs to handle: 1. -ffunction-sections implication for jump table. 2. Object file generation path and associated testing.
Differential Revision: https://reviews.llvm.org/D83875
show more ...
|
#
1003113e |
| 23-Jul-2020 |
Simon Pilgrim <llvm-dev@redking.me.uk> |
Fix -Wparentheses warning - add missing brackets around the entire assertion condition
|
#
b98b1700 |
| 17-Jul-2020 |
jasonliu <jasonliu.development@gmail.com> |
[XCOFF] Enable symbol alias for AIX
Summary: AIX assembly's .set directive is not usable for aliasing purpose. We need to use extra-label-at-defintion strategy to generate symbol aliasing on AIX.
R
[XCOFF] Enable symbol alias for AIX
Summary: AIX assembly's .set directive is not usable for aliasing purpose. We need to use extra-label-at-defintion strategy to generate symbol aliasing on AIX.
Reviewed By: DiggerLin, Xiangling_L
Differential Revision: https://reviews.llvm.org/D83252
show more ...
|
#
ff5b9a7b |
| 09-Jul-2020 |
Christopher Tetreault <ctetreau@quicinc.com> |
[SVE] Remove calls to VectorType::getNumElements from CodeGen
Reviewers: efriedma, fpetrogalli, sdesmalen, RKSimon, arsenm
Reviewed By: RKSimon
Subscribers: wdng, tschuett, hiraditya, rkruppe, psn
[SVE] Remove calls to VectorType::getNumElements from CodeGen
Reviewers: efriedma, fpetrogalli, sdesmalen, RKSimon, arsenm
Reviewed By: RKSimon
Subscribers: wdng, tschuett, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D82210
show more ...
|
#
6d3ae365 |
| 06-Jul-2020 |
jasonliu <jasonliu.development@gmail.com> |
[XCOFF][AIX] Give symbol an internal name when desired symbol name contains invalid character(s)
Summary:
When a desired symbol name contains invalid character that the system assembler could not p
[XCOFF][AIX] Give symbol an internal name when desired symbol name contains invalid character(s)
Summary:
When a desired symbol name contains invalid character that the system assembler could not process, we need to emit .rename directive in assembly path in order for that desired symbol name to appear in the symbol table.
Reviewed By: hubert.reinterpretcast, DiggerLin, daltenty, Xiangling_L
Differential Revision: https://reviews.llvm.org/D82481
show more ...
|
#
368a5e3a |
| 29-Jun-2020 |
Guillaume Chatelet <gchatelet@google.com> |
[Alignment][NFC] migrate DataLayout::getPreferredAlignment
This patch is part of a series to introduce an Alignment type. See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-J
[Alignment][NFC] migrate DataLayout::getPreferredAlignment
This patch is part of a series to introduce an Alignment type. See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html See this patch for the introduction of the type: https://reviews.llvm.org/D64790
Differential Revision: https://reviews.llvm.org/D82752
show more ...
|
#
e0bca46b |
| 02-Jun-2020 |
Sriraman Tallam <tmsriram@google.com> |
Options for Basic Block Sections, enabled in D68063 and D73674.
This patch adds clang options: -fbasic-block-sections={all,<filename>,labels,none} and -funique-basic-block-section-names. LLVM Suppor
Options for Basic Block Sections, enabled in D68063 and D73674.
This patch adds clang options: -fbasic-block-sections={all,<filename>,labels,none} and -funique-basic-block-section-names. LLVM Support for basic block sections is already enabled.
+ -fbasic-block-sections={all, <file>, labels, none} : Enables/Disables basic block sections for all or a subset of basic blocks. "labels" only enables basic block symbols. + -funique-basic-block-section-names: Enables unique section names for basic block sections, disabled by default.
Differential Revision: https://reviews.llvm.org/D68049
show more ...
|
#
26604d06 |
| 29-May-2020 |
Xiangling Liao <Xiangling.Liao@ibm.com> |
[AIX] Emit AvailableExternally Linkage on AIX
Since on AIX, our strategy is to not use -u to suppress any undefined symbols, we need to emit .extern for the symbols with AvailableExternally linkage.
[AIX] Emit AvailableExternally Linkage on AIX
Since on AIX, our strategy is to not use -u to suppress any undefined symbols, we need to emit .extern for the symbols with AvailableExternally linkage.
Differential Revision: https://reviews.llvm.org/D80642
show more ...
|
#
8d9ff231 |
| 27-May-2020 |
jasonliu <jasonliu.development@gmail.com> |
[NFC][XCOFF][AIX] Return function entry point symbol with dedicate function
Use getFunctionEntryPointSymbol whenever possible to enclose the implementation detail and reduce duplicate logic.
Differ
[NFC][XCOFF][AIX] Return function entry point symbol with dedicate function
Use getFunctionEntryPointSymbol whenever possible to enclose the implementation detail and reduce duplicate logic.
Differential Revision: https://reviews.llvm.org/D80402
show more ...
|
#
838d1220 |
| 25-May-2020 |
Orivej Desh <orivej@gmx.fr> |
[TargetLoweringObjectFileImpl] Use llvm::transform
Fixes a build issue with libc++ configured with _LIBCPP_RAW_ITERATORS (ADL not effective)
``` llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp:16
[TargetLoweringObjectFileImpl] Use llvm::transform
Fixes a build issue with libc++ configured with _LIBCPP_RAW_ITERATORS (ADL not effective)
``` llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp:1602:3: error: no matching function for call to 'transform' transform(HexString.begin(), HexString.end(), HexString.begin(), tolower); ^~~~~~~~~ ```
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D80475
show more ...
|
#
f96a7706 |
| 21-May-2020 |
Craig Topper <craig.topper@intel.com> |
[Target] Use Align in TargetLoweringObjectFile::getSectionForConstant.
Differential Revision: https://reviews.llvm.org/D80363
|
#
66055230 |
| 07-May-2020 |
Fangrui Song <maskray@google.com> |
[TargetLoweringObjectFileImpl] Produce .text.hot. instead of .text.hot for -fno-unique-section-names
GNU ld's internal linker script uses (https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=a
[TargetLoweringObjectFileImpl] Produce .text.hot. instead of .text.hot for -fno-unique-section-names
GNU ld's internal linker script uses (https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=add44f8d5c5c05e08b11e033127a744d61c26aee)
.text : { *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf.em. */ *(.gnu.warning) }
Because `*(.text.exit .text.exit.*)` is ordered before `*(.text .text.*)`, in a -ffunction-sections build, the C library function `exit` will be placed before other functions. gold's `-z keep-text-section-prefix` has the same problem.
In lld, `-z keep-text-section-prefix` recognizes `.text.{exit,hot,startup,unlikely,unknown}.*`, but not `.text.{exit,hot,startup,unlikely,unknown}`, to avoid the strange placement problem.
In -fno-function-sections or -fno-unique-section-names mode, a function whose `function_section_prefix` is set to `.exit"` will go to the output section `.text` instead of `.text.exit` when linked by lld. To address the problem, append a dot to become `.text.exit.`
Reviewed By: grimar
Differential Revision: https://reviews.llvm.org/D79600
show more ...
|
#
a2c8cd18 |
| 30-Apr-2020 |
diggerlin <digger.llvm@gmail.com> |
[AIX] emit .extern and .weak directive linkage
SUMMARY:
emit .extern and .weak directive linkage
Reviewers: hubert.reinterpretcast, Jason Liu Subscribers: wuzish, nemanjai, hiraditya
Differential
[AIX] emit .extern and .weak directive linkage
SUMMARY:
emit .extern and .weak directive linkage
Reviewers: hubert.reinterpretcast, Jason Liu Subscribers: wuzish, nemanjai, hiraditya
Differential Revision: https://reviews.llvm.org/D76932
show more ...
|
#
0cc063a8 |
| 24-Apr-2020 |
Snehasish Kumar <snehasishk@google.com> |
Use .text.unlikely and .text.eh prefixes for MachineBasicBlock sections.
Summary: Instead of adding a ".unlikely" or ".eh" suffix for machine basic blocks, this change updates the behaviour to use a
Use .text.unlikely and .text.eh prefixes for MachineBasicBlock sections.
Summary: Instead of adding a ".unlikely" or ".eh" suffix for machine basic blocks, this change updates the behaviour to use an appropriate prefix instead. This allows lld to group basic block sections together when -z,keep-text-section-prefix is specified and matches the behaviour observed in gcc.
Reviewers: tmsriram, mtrofin, efriedma
Reviewed By: tmsriram, efriedma
Subscribers: eli.friedman, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D78742
show more ...
|
#
77618cc2 |
| 16-Apr-2020 |
jasonliu <jasonliu.development@gmail.com> |
[XCOFF][AIX] Fix getSymbol to return the correct qualname when necessary
Summary: AIX symbol have qualname and unqualified name. The stock getSymbol could only return unqualified name, which leads u
[XCOFF][AIX] Fix getSymbol to return the correct qualname when necessary
Summary: AIX symbol have qualname and unqualified name. The stock getSymbol could only return unqualified name, which leads us to patch many caller side(lowerConstant, getMCSymbolForTOCPseudoMO). So we should try to address this problem in the callee side(getSymbol) and clean up the caller side instead.
Note: this is a "mostly" NFC patch, with a fix for the original lowerConstant behavior.
Differential Revision: https://reviews.llvm.org/D78045
show more ...
|
#
86478d3d |
| 16-Apr-2020 |
bd1976llvm <Ben.Dunbobbin@sony.com> |
[MC][ELF] Put explicit section name symbols into entry size compatible sections
Ensure that symbols explicitly* assigned a section name are placed into a section with a compatible entry size.
This
[MC][ELF] Put explicit section name symbols into entry size compatible sections
Ensure that symbols explicitly* assigned a section name are placed into a section with a compatible entry size.
This is done by creating multiple sections with the same name** if incompatible symbols are explicitly given the name of an incompatible section, whilst:
- Avoiding using uniqued sections where possible (for readability and to maximize compatibly with assemblers).
- Creating as few SHF_MERGE sections as possible (for efficiency).
Given that each symbol is assigned to a section in a single pass, we must decide which section each symbol is assigned to without seeing the properties of all symbols. A stable and easy to understand assignment is desirable. The following rules facilitate this: The "generic" section for a given section name will be mergeable if the name is a mergeable "default" section name (such as .debug_str), a mergeable "implicit" section name (such as .rodata.str2.2), or MC has already created a mergeable "generic" section for the given section name (e.g. in response to a section directive in inline assembly). Otherwise, the "generic" section for a given name is non-mergeable; and, non-mergeable symbols are assigned to the "generic" section, while mergeable symbols are assigned to uniqued sections.
Terminology: "default" sections are those always created by MC initially, e.g. .text or .debug_str.
"implicit" sections are those created normally by MC in response to the symbols that it encounters, i.e. in the absence of an explicit section name assignment on the symbol, e.g. a function foo might be placed into a .text.foo section.
"generic" sections are those that are referred to when a unique section ID is not supplied, e.g. if there are multiple unique .bob sections then ".quad .bob" will reference the generic .bob section. Typically, the generic section is just the first section of a given name to be created. Default sections are always generic.
* Typically, section names might be explicitly assigned in source code using a language extension e.g. a section attribute: _attribute_ ((section ("section-name"))) - https://clang.llvm.org/docs/AttributeReference.html
** I refer to such sections as unique/uniqued sections. In assembly the ", unique," assembly syntax is used to express such sections.
Fixes https://bugs.llvm.org/show_bug.cgi?id=43457.
See https://reviews.llvm.org/D68101 for previous discussions leading to this patch.
Some minor fixes were required to LLVM's tests, for tests had been using the old behavior - which allowed for explicitly assigning globals with incompatible entry sizes to a section.
This fix relies on the ",unique ," assembly feature. This feature is not available until bintuils version 2.35 (https://sourceware.org/bugzilla/show_bug.cgi?id=25380). If the integrated assembler is not being used then we avoid using this feature for compatibility and instead try to place mergeable symbols into non-mergeable sections or issue an error otherwise.
Differential Revision: https://reviews.llvm.org/D72194
show more ...
|
#
7d1ff446 |
| 15-Apr-2020 |
Fangrui Song <maskray@google.com> |
[MC] Rename MCSection*::getSectionName() to getName(). NFC
A pending change will merge MCSection*::getName() to MCSection::getName().
|
#
5a0d8c31 |
| 15-Apr-2020 |
Josh Stone <jistone@redhat.com> |
[NFC] correct "thier" to "their"
|
#
3ea1c62c |
| 31-Mar-2020 |
Sam Clegg <sbc@chromium.org> |
[WebAssembly] Emit .llvmcmd and .llvmbc as custom sections
Fixes: https://bugs.llvm.org/show_bug.cgi?id=45362
Differential Revision: https://reviews.llvm.org/D77115
|
#
05192e58 |
| 13-Apr-2020 |
Rahman Lavaee <rahmanl@google.com> |
Extend BasicBlock sections to allow specifying clusters of basic blocks in the same section.
Differential Revision: https://reviews.llvm.org/D76954
|
#
4ddf7ab4 |
| 13-Apr-2020 |
Rahman Lavaee <rahmanl@google.com> |
Revert "Extend BasicBlock sections to allow specifying clusters of basic blocks"
This reverts commit 0d4ec16d3db3a92514e14101f635e8536c208c4f Because tests were not added to the commit.
|
#
0d4ec16d |
| 13-Apr-2020 |
Rahman Lavaee <rahmanl@google.com> |
Extend BasicBlock sections to allow specifying clusters of basic blocks in the same section.
This allows specifying BasicBlock clusters like the following example: !foo !!0 1 2 !!4 This places basic
Extend BasicBlock sections to allow specifying clusters of basic blocks in the same section.
This allows specifying BasicBlock clusters like the following example: !foo !!0 1 2 !!4 This places basic blocks 0, 1, and 2 in one section in this order, and places basic block #4 in a single section of its own.
show more ...
|
#
889f6606 |
| 10-Apr-2020 |
Christopher Tetreault <ctetreau@quicinc.com> |
Clean up usages of asserting vector getters in Type
Summary: Remove usages of asserting vector getters in Type in preparation for the VectorType refactor. The existence of these functions complicate
Clean up usages of asserting vector getters in Type
Summary: Remove usages of asserting vector getters in Type in preparation for the VectorType refactor. The existence of these functions complicates the refactor while adding little value.
Reviewers: stoklund, sdesmalen, efriedma
Reviewed By: sdesmalen
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77272
show more ...
|