| #
86478d3d |
| 16-Apr-2020 |
bd1976llvm <[email protected]> |
[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 <[email protected]> |
[MC] Rename MCSection*::getSectionName() to getName(). NFC
A pending change will merge MCSection*::getName() to MCSection::getName().
|
| #
5a0d8c31 |
| 15-Apr-2020 |
Josh Stone <[email protected]> |
[NFC] correct "thier" to "their"
|
| #
3ea1c62c |
| 31-Mar-2020 |
Sam Clegg <[email protected]> |
[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 <[email protected]> |
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 <[email protected]> |
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 <[email protected]> |
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 <[email protected]> |
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 ...
|
| #
fdfe411e |
| 26-Mar-2020 |
diggerlin <[email protected]> |
[AIX] discard the label in the csect of function description and use qualname for linkage
SUMMARY:
SUMMARY for a source file "test.c"
void foo() {};
llc will generate assembly code as (assembly
[AIX] discard the label in the csect of function description and use qualname for linkage
SUMMARY:
SUMMARY for a source file "test.c"
void foo() {};
llc will generate assembly code as (assembly patch) .globl foo .globl .foo .csect foo[DS] foo:
.long .foo .long TOC[TC0] .long 0
and symbol table as (xcoff object file) [4] m 0x00000004 .data 1 unamex foo [5] a4 0x0000000c 0 0 SD DS 0 0 [6] m 0x00000004 .data 1 extern foo [7] a4 0x00000004 0 0 LD DS 0 0
After first patch, the assembly will be as
.globl foo[DS] # -- Begin function foo .globl .foo .align 2 .csect foo[DS] .long .foo .long TOC[TC0] .long 0
and symbol table will as [6] m 0x00000004 .data 1 extern foo [7] a4 0x00000004 0 0 DS DS 0 0 Change the code for the assembly path and xcoff objectfile patch for llc.
Reviewers: Jason Liu Subscribers: wuzish, nemanjai, hiraditya
Differential Revision: https://reviews.llvm.org/D76162
show more ...
|
|
Revision tags: llvmorg-10.0.0, llvmorg-10.0.0-rc6 |
|
| #
85c30f33 |
| 20-Mar-2020 |
Fangrui Song <[email protected]> |
[X86] Reland D71360 Clean up UseInitArray initialization for X86ELFTargetObjectFile
-fuse-init-array is now the CC1 default but TargetLoweringObjectFileELF::UseInitArray still defaults to false. The
[X86] Reland D71360 Clean up UseInitArray initialization for X86ELFTargetObjectFile
-fuse-init-array is now the CC1 default but TargetLoweringObjectFileELF::UseInitArray still defaults to false. The following two unknown OS target triples continue using .ctors/.dtors because InitializeELF is not called.
clang -target i386 -c a.c clang -target x86_64 -c a.c
This cleanup fixes this as a bonus.
X86SpeculativeLoadHardeningPass::tracePredStateThroughCall can call MCContext::createTempSymbol before TargetLoweringObjectFileELF::Initialize(). We need to call TargetLoweringObjectFileELF::Initialize() ealier.
test/CodeGen/X86/speculative-load-hardening-indirect.ll
Differential Revision: https://reviews.llvm.org/D71360
show more ...
|
| #
fc7233d7 |
| 21-Mar-2020 |
Eric Christopher <[email protected]> |
Temporarily Revert "[X86] Reland D71360 Clean up UseInitArray initialization for X86ELFTargetObjectFile" as it's causing msan failures.
This reverts commit 7899fe9da8d8df6f19ddcbbb877ea124d711c54b.
|
| #
7899fe9d |
| 20-Mar-2020 |
Fangrui Song <[email protected]> |
[X86] Reland D71360 Clean up UseInitArray initialization for X86ELFTargetObjectFile
UseInitArray is now the CC1 default but TargetLoweringObjectFileELF::UseInitArray still defaults to false. The fol
[X86] Reland D71360 Clean up UseInitArray initialization for X86ELFTargetObjectFile
UseInitArray is now the CC1 default but TargetLoweringObjectFileELF::UseInitArray still defaults to false. The following two unknown OS target triples continue using .ctors/.dtors because InitializeELF is not called.
clang -target i386 -c a.c clang -target x86_64 -c a.c
This cleanup fixes this as a bonus.
Differential Revision: https://reviews.llvm.org/D71360
show more ...
|
|
Revision tags: llvmorg-10.0.0-rc5 |
|
| #
df082ac4 |
| 16-Mar-2020 |
Sriraman Tallam <[email protected]> |
Basic Block Sections support in LLVM.
This is the second patch in a series of patches to enable basic block sections support.
This patch adds support for:
* Creating direct jumps at the end of bas
Basic Block Sections support in LLVM.
This is the second patch in a series of patches to enable basic block sections support.
This patch adds support for:
* Creating direct jumps at the end of basic blocks that have fall through instructions. * New pass, bbsections-prepare, that analyzes placement of basic blocks in sections. * Actual placing of a basic block in a unique section with special handling of exception handling blocks. * Supports placing a subset of basic blocks in a unique section. * Support for MIR serialization and deserialization with basic block sections.
Parent patch : D68063 Differential Revision: https://reviews.llvm.org/D73674
show more ...
|
|
Revision tags: llvmorg-10.0.0-rc4 |
|
| #
a0cacb60 |
| 10-Mar-2020 |
Jin Lin <[email protected]> |
Fix conflict value for metadata "Objective-C Garbage Collection" in the mix of swift and Objective-C bitcode
Summary: The change is to fix conflict value for metadata "Objective-C Garbage Collection
Fix conflict value for metadata "Objective-C Garbage Collection" in the mix of swift and Objective-C bitcode
Summary: The change is to fix conflict value for metadata "Objective-C Garbage Collection" in the mix of swift and Objective-C bitcode. The purpose is to provide the support of LTO for swift and Objective-C mixed project.
Reviewers: rjmccall, ahatanak, steven_wu
Reviewed By: rjmccall, steven_wu
Subscribers: manmanren, mehdi_amini, hiraditya, dexonsmith, llvm-commits, jinlin
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71219
show more ...
|
|
Revision tags: llvmorg-10.0.0-rc3 |
|
| #
362456bc |
| 26-Feb-2020 |
Xiangling Liao <[email protected]> |
[AIX] Handle LinkOnceODRLinkage and AppendingLinkage for static init gloabl arrays
Handle LinkOnceODRLinkage; Handle AppendingLinkage type for llvm.global_ctors/dtors static init global arrays;
Dif
[AIX] Handle LinkOnceODRLinkage and AppendingLinkage for static init gloabl arrays
Handle LinkOnceODRLinkage; Handle AppendingLinkage type for llvm.global_ctors/dtors static init global arrays;
Differential Revision: https://reviews.llvm.org/D75305
show more ...
|
| #
692e0c96 |
| 29-Feb-2020 |
Fangrui Song <[email protected]> |
[MC] Add MCStreamer::emitInt{8,16,32,64}
Similar to AsmPrinter::emitInt{8,16,32,64}.
|
|
Revision tags: llvmorg-10.0.0-rc2, llvmorg-10.0.0-rc1, llvmorg-11-init, llvmorg-9.0.1, llvmorg-9.0.1-rc3, llvmorg-9.0.1-rc2, llvmorg-9.0.1-rc1 |
|
| #
dd1ea9de |
| 21-Oct-2019 |
Vedant Kumar <[email protected]> |
Reland: [Coverage] Revise format to reduce binary size
Try again with an up-to-date version of D69471 (99317124 was a stale revision).
---
Revise the coverage mapping format to reduce binary size
Reland: [Coverage] Revise format to reduce binary size
Try again with an up-to-date version of D69471 (99317124 was a stale revision).
---
Revise the coverage mapping format to reduce binary size by:
1. Naming function records and marking them `linkonce_odr`, and 2. Compressing filenames.
This shrinks the size of llc's coverage segment by 82% (334MB -> 62MB) and speeds up end-to-end single-threaded report generation by 10%. For reference the compressed name data in llc is 81MB (__llvm_prf_names).
Rationale for changes to the format:
- With the current format, most coverage function records are discarded. E.g., more than 97% of the records in llc are *duplicate* placeholders for functions visible-but-not-used in TUs. Placeholders *are* used to show under-covered functions, but duplicate placeholders waste space.
- We reached general consensus about giving (1) a try at the 2017 code coverage BoF [1]. The thinking was that using `linkonce_odr` to merge duplicates is simpler than alternatives like teaching build systems about a coverage-aware database/module/etc on the side.
- Revising the format is expensive due to the backwards compatibility requirement, so we might as well compress filenames while we're at it. This shrinks the encoded filenames in llc by 86% (12MB -> 1.6MB).
See CoverageMappingFormat.rst for the details on what exactly has changed.
Fixes PR34533 [2], hopefully.
[1] http://lists.llvm.org/pipermail/llvm-dev/2017-October/118428.html [2] https://bugs.llvm.org/show_bug.cgi?id=34533
Differential Revision: https://reviews.llvm.org/D69471
show more ...
|
| #
33888717 |
| 29-Feb-2020 |
Vedant Kumar <[email protected]> |
Revert "[Coverage] Revise format to reduce binary size"
This reverts commit 99317124e1c772e9a9de41a0cd56e1db049b4ea4. This is still busted on Windows:
http://lab.llvm.org:8011/builders/lld-x86_64-w
Revert "[Coverage] Revise format to reduce binary size"
This reverts commit 99317124e1c772e9a9de41a0cd56e1db049b4ea4. This is still busted on Windows:
http://lab.llvm.org:8011/builders/lld-x86_64-win7/builds/40873
The llvm-cov tests report 'error: Could not load coverage information'.
show more ...
|
| #
99317124 |
| 21-Oct-2019 |
Vedant Kumar <[email protected]> |
[Coverage] Revise format to reduce binary size
Revise the coverage mapping format to reduce binary size by:
1. Naming function records and marking them `linkonce_odr`, and 2. Compressing filenames.
[Coverage] Revise format to reduce binary size
Revise the coverage mapping format to reduce binary size by:
1. Naming function records and marking them `linkonce_odr`, and 2. Compressing filenames.
This shrinks the size of llc's coverage segment by 82% (334MB -> 62MB) and speeds up end-to-end single-threaded report generation by 10%. For reference the compressed name data in llc is 81MB (__llvm_prf_names).
Rationale for changes to the format:
- With the current format, most coverage function records are discarded. E.g., more than 97% of the records in llc are *duplicate* placeholders for functions visible-but-not-used in TUs. Placeholders *are* used to show under-covered functions, but duplicate placeholders waste space.
- We reached general consensus about giving (1) a try at the 2017 code coverage BoF [1]. The thinking was that using `linkonce_odr` to merge duplicates is simpler than alternatives like teaching build systems about a coverage-aware database/module/etc on the side.
- Revising the format is expensive due to the backwards compatibility requirement, so we might as well compress filenames while we're at it. This shrinks the encoded filenames in llc by 86% (12MB -> 1.6MB).
See CoverageMappingFormat.rst for the details on what exactly has changed.
Fixes PR34533 [2], hopefully.
[1] http://lists.llvm.org/pipermail/llvm-dev/2017-October/118428.html [2] https://bugs.llvm.org/show_bug.cgi?id=34533
Differential Revision: https://reviews.llvm.org/D69471
show more ...
|
| #
df74033e |
| 13-Feb-2020 |
Sam Clegg <[email protected]> |
[WebAssembly] Remove unneeded getWasmKindForNamedSection function
I believe this was carried over from getELFKindForNamedSection since the wasm backend originally used ELF object writing as a templa
[WebAssembly] Remove unneeded getWasmKindForNamedSection function
I believe this was carried over from getELFKindForNamedSection since the wasm backend originally used ELF object writing as a template.
Differential Revision: https://reviews.llvm.org/D74565
show more ...
|
| #
77497103 |
| 15-Feb-2020 |
Fangrui Song <[email protected]> |
[MCStreamer] De-capitalize EmitValue EmitIntValue{,InHex}
|
| #
6d2d589b |
| 15-Feb-2020 |
Fangrui Song <[email protected]> |
[MC] De-capitalize another set of MCStreamer::Emit* functions
Emit{ValueTo,Code}Alignment Emit{DTP,TP,GP}* EmitSymbolValue etc
|
| #
a55daa14 |
| 15-Feb-2020 |
Fangrui Song <[email protected]> |
[MC] De-capitalize some MCStreamer::Emit* functions
|
| #
aa86311e |
| 10-Feb-2020 |
diggerlin <[email protected]> |
[AIX][XCOFF] Support Mergeable2ByteCString and Mergeable4ByteCString
SUMMARY: The patch is enable to support Mergeable2ByteCString and Mergeable4ByteCString
Reviewers: daltenty Subscribers: wuzish,
[AIX][XCOFF] Support Mergeable2ByteCString and Mergeable4ByteCString
SUMMARY: The patch is enable to support Mergeable2ByteCString and Mergeable4ByteCString
Reviewers: daltenty Subscribers: wuzish, nemanjai, hiraditya
Differential Revision: https://reviews.llvm.org/D74164
show more ...
|
| #
727362e8 |
| 05-Feb-2020 |
Fangrui Song <[email protected]> |
[MC][ELF] Rename MC related "Associated" to "LinkedToSym"
"linked-to section" is used by the ELF spec. By analogy, "linked-to symbol" is a good name for the signature symbol. The word "linked-to" i
[MC][ELF] Rename MC related "Associated" to "LinkedToSym"
"linked-to section" is used by the ELF spec. By analogy, "linked-to symbol" is a good name for the signature symbol. The word "linked-to" implies a directed edge and makes it clear its relation with "sh_link", while one can argue that "associated" means an undirected edge.
Also, combine tests and add precise SMLoc to improve diagnostics.
Reviewed By: eugenis, grimar, jhenderson
Differential Revision: https://reviews.llvm.org/D74082
show more ...
|