History log of /llvm-project/llvm/lib/MC/StringTableBuilder.cpp (Results 26 – 45 of 45)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 9ddfb04d 03-Oct-2016 Rafael Espindola <rafael.espindola@gmail.com>

Revert "Use getSize instead of data().size(). NFC."

This reverts commit r283125.

lld needs to be updated.

llvm-svn: 283127


# 4bb425e8 03-Oct-2016 Rafael Espindola <rafael.espindola@gmail.com>

Use getSize instead of data().size(). NFC.

Also assert isFinalized in getSize(). This just reduces the noise from
another patch.

llvm-svn: 283125


Revision tags: llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2, llvmorg-3.9.0-rc1, llvmorg-3.8.1, llvmorg-3.8.1-rc1
# 02d71ade 06-May-2016 Rui Ueyama <ruiu@google.com>

Make StringTableBuilder to cache hash values.

This change seems to speed up LLD a bit if it has a lot of mergeable
sections. The number is below. It's not too bad for a small patch.

Time to link Cl

Make StringTableBuilder to cache hash values.

This change seems to speed up LLD a bit if it has a lot of mergeable
sections. The number is below. It's not too bad for a small patch.

Time to link Clang (debug build):

w/o patch 6.3696 seconds
w/patch 6.2746 seconds (-1.5%)

Differential Revision: http://reviews.llvm.org/D19933

llvm-svn: 268698

show more ...


Revision tags: llvmorg-3.8.0, llvmorg-3.8.0-rc3
# 758de9ca 19-Feb-2016 Rafael Espindola <rafael.espindola@gmail.com>

Add support for merging strings with alignment larger than one char.

This will be used in a lld patch.

llvm-svn: 261326


Revision tags: llvmorg-3.8.0-rc2
# 2214ed89 29-Jan-2016 Reid Kleckner <rnk@google.com>

Reland "[CodeView] Use assembler directives for line tables"

This reverts commit r259126 and relands r259117.

This time with updated library dependencies.

llvm-svn: 259130


# 00d9639c 29-Jan-2016 Reid Kleckner <rnk@google.com>

Revert "[CodeView] Use assembler directives for line tables"

This reverts commit r259117.

The LineInfo constructor is defined in the codeview library and we have
to link against it now. Doing that

Revert "[CodeView] Use assembler directives for line tables"

This reverts commit r259117.

The LineInfo constructor is defined in the codeview library and we have
to link against it now. Doing that isn't trivial, so reverting for now.

llvm-svn: 259126

show more ...


# c62e379d 28-Jan-2016 Reid Kleckner <rnk@google.com>

[CodeView] Use assembler directives for line tables

Adds a new family of .cv_* directives to LLVM's variant of GAS syntax:

- .cv_file: Similar to DWARF .file directives

- .cv_loc: Similar to the D

[CodeView] Use assembler directives for line tables

Adds a new family of .cv_* directives to LLVM's variant of GAS syntax:

- .cv_file: Similar to DWARF .file directives

- .cv_loc: Similar to the DWARF .loc directive, but starts with a
function id. CodeView line tables are emitted by function instead of
by compilation unit, so we needed an extra field to communicate this.
Rather than overloading the .loc direction further, we decided it was
better to have our own directive.

- .cv_stringtable: Emits the codeview string table at the current
position. Currently this just contains the filenames as
null-terminated strings.

- .cv_filechecksums: Emits the file checksum table for all files used
with .cv_file so far. There is currently no support for emitting
actual checksums, just filenames.

This moves the line table emission code down into the assembler. This
is in preparation for implementing the inlined call site line table
format. The inline line table format encoding algorithm requires knowing
the absolute code offsets, so it must run after the assembler has laid
out the code.

David Majnemer collaborated on this patch.

llvm-svn: 259117

show more ...


Revision tags: llvmorg-3.8.0-rc1, llvmorg-3.7.1, llvmorg-3.7.1-rc2, llvmorg-3.7.1-rc1
# 5579e0b8 27-Oct-2015 Rui Ueyama <ruiu@google.com>

Rename qsort -> multikey_qsort. NFC.

`qsort` as a file-scope local function name was confusing.

llvm-svn: 251414


# df94852a 26-Oct-2015 Rui Ueyama <ruiu@google.com>

Optimize StringTableBuilder.

This is a patch to improve StringTableBuilder's performance. That class'
finalize function is very hot particularly in LLD because the function
does tail-merge strings i

Optimize StringTableBuilder.

This is a patch to improve StringTableBuilder's performance. That class'
finalize function is very hot particularly in LLD because the function
does tail-merge strings in string tables or SHF_MERGE sections.

Generic std::sort-style sorter is not efficient for sorting strings.
The function implemented in this patch seems to be more efficient.

Here's a benchmark of LLD to link Clang with or without this patch.
The numbers are medians of 50 runs.

-O0
real 0m0.455s
real 0m0.430s (5.5% faster)

-O3
real 0m0.487s
real 0m0.452s (7.2% faster)

Since that is a benchmark of the whole linker, the speedup of
StringTableBuilder itself is much more than that.

http://reviews.llvm.org/D14053

llvm-svn: 251337

show more ...


# 21956e40 23-Oct-2015 Rafael Espindola <rafael.espindola@gmail.com>

Add a RAW mode to StringTableBuilder.

In this mode it just tries to tail merge the strings without imposing any other
format constrains. It will not, for example, add a null byte between them.

Also

Add a RAW mode to StringTableBuilder.

In this mode it just tries to tail merge the strings without imposing any other
format constrains. It will not, for example, add a null byte between them.

Also add support for keeping a tentative size and offset if we decide to
not optimize after all.

This will be used shortly in lld for merging SHF_STRINGS sections.

llvm-svn: 251153

show more ...


# a9b3944c 23-Oct-2015 Rafael Espindola <rafael.espindola@gmail.com>

Fix the variable names to match the LLVM style.

llvm-svn: 251143


# fc063e8f 22-Oct-2015 Rafael Espindola <rafael.espindola@gmail.com>

Avoid storing a second copy of each string in StringTableBuilder.

This was only use in the extremely uncommon case of @@@ symbols on ELF.

llvm-svn: 251039


# c55a5041 22-Oct-2015 Zachary Turner <zturner@google.com>

Fix broken build under MSVC.

llvm-svn: 251030


# e015f66a 22-Oct-2015 Rafael Espindola <rafael.espindola@gmail.com>

Avoid hash lookups when finalizing StringTableBuilder. NFC.

llvm-svn: 251024


# 0169a45e 22-Oct-2015 Rafael Espindola <rafael.espindola@gmail.com>

Use array_pod_sort. NFC.

llvm-svn: 251023


Revision tags: llvmorg-3.7.0, llvmorg-3.7.0-rc4, llvmorg-3.7.0-rc3, studio-1.4, llvmorg-3.7.0-rc2, llvmorg-3.7.0-rc1, llvmorg-3.6.2, llvmorg-3.6.2-rc1, llvmorg-3.6.1, llvmorg-3.6.1-rc1, llvmorg-3.5.2, llvmorg-3.5.2-rc1, llvmorg-3.6.0, llvmorg-3.6.0-rc4, llvmorg-3.6.0-rc3, llvmorg-3.6.0-rc2, llvmorg-3.6.0-rc1, llvmorg-3.5.1, llvmorg-3.5.1-rc2, llvmorg-3.5.1-rc1
# 1b1a3994 06-Oct-2014 Hans Wennborg <hans@hanshq.net>

MachObjectWriter: optimize the string table for common suffices

This is a follow-up to r207670 (ELF) and r218636 (COFF).

Differential Revision: http://reviews.llvm.org/D5622

llvm-svn: 219126


# f26bfc16 29-Sep-2014 Hans Wennborg <hans@hanshq.net>

WinCOFFObjectWriter: optimize the string table for common suffices

This is a follow-up from r207670 which did the same for ELF.

Differential Revision: http://reviews.llvm.org/D5530

llvm-svn: 218636


# 8e77dbbf 24-Sep-2014 Akira Hatanaka <ahatanaka@apple.com>

Revert r218380. This was breaking Apple internal build bots.

llvm-svn: 218409


# ce246a13 24-Sep-2014 Benjamin Kramer <benny.kra@googlemail.com>

Replace a hand-written suffix compare with std::lexicographical_compare.

No functionality change.

llvm-svn: 218380


Revision tags: llvmorg-3.5.0, llvmorg-3.5.0-rc4, llvmorg-3.5.0-rc3, llvmorg-3.5.0-rc2, llvmorg-3.5.0-rc1
# 97de474a 03-Jul-2014 Rafael Espindola <rafael.espindola@gmail.com>

Invert the MC -> Object dependency.

Now that we have a lib/MC/MCAnalysis, the dependency was there just because
of two helper classes. Move the two over to MC.

This will allow IRObjectFile to parse

Invert the MC -> Object dependency.

Now that we have a lib/MC/MCAnalysis, the dependency was there just because
of two helper classes. Move the two over to MC.

This will allow IRObjectFile to parse inline assembly.

llvm-svn: 212248

show more ...


12