llvm-project/llvm/test/ThinLTO/X86
Fangrui Song 584cb67d2d [IRSymTab] Set FB_used on llvm.compiler.used symbols
IR symbol table does not parse inline asm. A symbol only referenced by inline
asm is not in the IR symbol table, so LTO does not know that the definition (in
another translation unit) is referenced and may internalize it, even if that
definition has `__attribute__((used))` (which lowers to `llvm.compiler.used` on
ELF targets since D97446).

```
// cabac.c
__attribute__((used)) const uint8_t ff_h264_cabac_tables[...] = {...};

// h264_cabac.c
  asm("lea ff_h264_cabac_tables(%rip), %0" : ...);
```

`__attribute__((used))` is the recommended way to tell the compiler there may
be inline asm references, so the usage is perfectly fine. This patch
conservatively sets the `FB_used` bit on `llvm.compiler.used` symbols to work
around the IR symbol table limitation. Note: before D97446, Clang never emitted
symbols in the `llvm.compiler.used` list, so this change does not punish any
Clang emitted global object.

Without the patch, `ff_h264_cabac_tables` may be assigned to a non-external
partition and get internalized. Then we will get a linker error because the
`cabac.c` definition is not exposed.

Differential Revision: https://reviews.llvm.org/D97755
2021-03-03 16:22:30 -08:00
..
Inputs [NFCI] Add missing triple to several LTO tests 2020-12-09 13:13:58 -08:00
alias_import.ll [ThinLTO] Use original alias visibility when importing 2019-05-29 16:50:46 +00:00
alias_internal.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
alias_resolution.ll
asm.ll [IRSymTab] Set FB_used on llvm.compiler.used symbols 2021-03-03 16:22:30 -08:00
autoupgrade.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
builtin-nostrip.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
cache-config.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
cache-icall.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
cache-import-lists.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
cache-typeid-resolutions.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
cache.ll [ThinLTO] [test] cache.ll: Prevent Spotlight indexing of the output dir 2020-07-28 21:21:58 -07:00
callees-metadata.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
cfi-devirt.ll [InstCombine] Always try to invert non-canonical predicate of an icmp 2020-07-04 18:12:04 +03:00
cfi-distributed.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
cfi-icall-only-defuse.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
cfi-icall.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
cfi-unsat.ll Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP" 2020-07-14 12:16:57 -07:00
cfi.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
crash_debuginfo.ll [test] Make ThinLTO/X86/crash_debuginfo.ll work with -enable-new-pm=1 2020-10-27 12:37:19 -07:00
deadstrip.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
debuginfo-compositetype-import.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
debuginfo-cu-import.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
devirt-after-icp.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
devirt.ll [WPD] Provide a way to prevent functions from being devirtualized 2020-03-09 14:05:15 +03:00
devirt2.ll Restore "[ThinLTO] Avoid temporaries when loading global decl attachment metadata" 2020-10-12 10:11:56 -07:00
devirt_alias.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
devirt_available_externally.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
devirt_check.ll [WPD] Add an optional checking mode for debugging devirtualization 2021-02-17 16:46:15 -08:00
devirt_external_comdat_same_guid.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
devirt_local_same_guid.ll [ThinLTO/WPD] Fix index-based WPD for available_externally vtables 2019-10-30 17:59:08 -07:00
devirt_multiple_type_test.ll [WPD] Allow virtual calls to be analyzed with multiple type tests 2020-06-24 10:51:24 -07:00
devirt_promote.ll [test] Fix unused FileCheck prefix in ThinLTO test 2020-11-02 09:06:36 -08:00
devirt_promote_legacy.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
devirt_pure_virtual_base.ll [WPD] Fix handling of pure virtual base class 2021-02-23 16:07:09 -08:00
devirt_single_hybrid.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
devirt_vcall_vis_hidden.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
devirt_vcall_vis_public.ll Restore "[LTO/WPD] Enable aggressive WPD under LTO option" 2020-01-27 07:55:05 -08:00
diagnostic-handler-remarks-with-hotness.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
diagnostic-handler-remarks.ll [Remarks][ThinLTO] Use the correct file extension based on the format 2019-12-02 13:04:43 -08:00
dicompositetype-unique-alias.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
dicompositetype-unique.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
dicompositetype-unique2.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
distributed_import.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
distributed_indexes.ll [ThinLTO] Compute the basic block count across modules. 2020-05-28 10:33:05 -07:00
dot-dumper-full-lto.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
dot-dumper.ll [ThinLTO] Always import constants 2020-01-15 19:29:01 +03:00
dot-dumper2.ll ThinLTO : Import always_inline functions irrespective of the threshold 2019-11-08 17:02:01 -08:00
drop-debug-info.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
dsolocal_dllimport.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
emit_imports.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
empty-module.ll [LTO] Suppress emission of empty combined module by default 2020-05-04 18:31:09 -07:00
empty_module_with_cache.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
export.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
funcimport-debug.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
funcimport-stats.ll [ThinLTO] Make ValueInfo::operator bool() explicit 2019-11-19 12:46:09 +03:00
funcimport-tbaa.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
funcimport.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
funcimport2.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
funcimport_alwaysinline.ll [ThinLTO] Add Visibility bits to GlobalValueSummary::GVFlags 2021-01-27 10:43:51 -08:00
function_entry_count.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
globals-import-blockaddr.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
globals-import-const-fold.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
globals-import.ll [ThinLTO] Import readonly vars with refs 2019-11-07 15:13:35 +03:00
guid_collision.ll Recommit "[ThinLTO] Handle GUID collision in import global processing"" 2019-11-01 13:57:01 -07:00
import-constant.ll [ThinLTO] Import globals recursively 2020-08-20 12:13:43 +03:00
import-metadata.ll [ThinLTO] Fix a metadata lost issue with DICompileUnit import. 2020-09-02 14:40:41 -07:00
import-ro-constant.ll [ThinLTO] Always import constants 2020-01-15 19:29:01 +03:00
import-symver.ll [ThinLTO] Import symver directives for imported symbols (PR48214) 2020-12-02 14:56:43 +01:00
import_opaque_type.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
index-const-prop-O0.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
index-const-prop-alias.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop-cache.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
index-const-prop-comdat.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop-dead.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop-full-lto.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop-gvref-pie.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop-gvref.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop-ldst.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop-linkage.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
index-const-prop.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
index-const-prop2.ll [ThinLTO] Drop dso_local if a GlobalVariable satisfies isDeclarationForLinker() 2020-04-07 15:46:01 -07:00
internalize.ll [ThinLTO][Legacy] Compute PreservedGUID based on IRName in Symtab 2020-08-26 10:15:00 -07:00
lazyload_metadata.ll Make lazyload_metadata.ll resilient to the addition of new metadata kinds 2019-12-26 18:23:08 -05:00
linkonce_aliasee_ref_import.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
linkonce_odr_unnamed_addr.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
linkonce_resolution_comdat.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
lit.local.cfg [lit] Delete empty lines at the end of lit.local.cfg NFC 2019-06-17 09:51:07 +00:00
llvm.used.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
load-store-caching.ll [ThinLTO] Add Visibility bits to GlobalValueSummary::GVFlags 2021-01-27 10:43:51 -08:00
local_name_conflict.ll [ThinLTO] Import readonly vars with refs 2019-11-07 15:13:35 +03:00
local_name_conflict_var.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
mangled_symbol.ll [ThinLTO][Legacy] Compute PreservedGUID based on IRName in Symtab 2020-08-26 10:15:00 -07:00
merge-triple.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
module_asm2.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
module_asm_glob.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
module_summary_graph_traits.ll Fix [ADT][NFC] SCCIterator: Change hasLoop() to hasCycle() 2020-03-01 19:35:58 +02:00
newpm-basic.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
nodevirt-nonpromoted-typeid.ll Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP" 2020-07-14 12:16:57 -07:00
noinline.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
nossp.ll [ThinLTO][test] Fix X86/nossp.ll after D91816 2020-12-02 13:13:58 -08:00
not-internalized.ll [ThinLTO] Don't internalize during promotion 2019-10-22 09:24:12 +00:00
personality-local.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
personality.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
pr35472.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
prefix_replace.ll
printer.ll Revert r370105 - Update two x86 datalayouts for r370083, looks like racing commits 2019-08-28 01:55:06 +00:00
reference_non_importable.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
referenced_by_constant.ll [ThinLTO] Disable "Always import constants" due to compile time issues 2020-01-30 10:12:48 -08:00
save_objects.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
section.ll
strong_non_prevailing.ll Reland "[llvm-nm] Don't report "no symbols" error for files that contain symbols" 2020-01-17 10:08:42 -08:00
thinlto-internalize-doublepromoted.ll [ThinLTO] Handle variable with twice promoted name (Rust) 2020-01-14 10:54:03 -08:00
thinlto-internalize-used.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
tli-nobuiltin.ll Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
type_test_noindircall.ll Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP" 2020-07-14 12:16:57 -07:00
visibility-elf.ll [ThinLTO] Add Visibility bits to GlobalValueSummary::GVFlags 2021-01-27 10:43:51 -08:00
visibility-macho.ll [ThinLTO] Add Visibility bits to GlobalValueSummary::GVFlags 2021-01-27 10:43:51 -08:00
weak_externals.ll [ThinLTO] Don't internalize during promotion 2019-10-22 09:24:12 +00:00
weak_globals_import.ll [ThinLTO] Fix import of multiply defined global variables 2021-02-21 18:34:12 +02:00
weak_resolution.ll [ThinLTO][Legacy] Compute PreservedGUID based on IRName in Symtab 2020-08-26 10:15:00 -07:00
weak_resolution_single.ll [ThinLTO][Legacy] Compute PreservedGUID based on IRName in Symtab 2020-08-26 10:15:00 -07:00
writeonly-with-refs.ll [ThinLTO] Fix importing of writeonly variables in distributed ThinLTO 2019-12-04 14:59:27 -08:00
writeonly.ll [ThinLTO] Add option to disable readonly/writeonly attribute propagation 2019-12-05 16:33:54 -08:00
writeonly2.ll [ThinLTO] Fix importing of writeonly variables in distributed ThinLTO 2019-12-04 14:59:27 -08:00