This module flag is used to mark modules which were compiled in hosted
mode. The TargetLibraryInfoImpl class now uses this module flag to initialize
library availability information.
Fixes PR30403.
Paths
| Differential D24688
Introduce "hosted" module flag. AbandonedPublic Authored by mehdi_amini on Sep 16 2016, 3:20 PM.
Details
Summary This module flag is used to mark modules which were compiled in hosted Fixes PR30403.
Diff Detail Event Timelinepcc updated this object. Comment Actions The word "hosted" takes its meaning from the C/C++ standards. It refers to a build environment where the standard library is guaranteed to be available. Note that we've been rethinking this approach on the mailing list, see http://lists.llvm.org/pipermail/llvm-dev/2016-September/105035.html Comment Actions
We did? You wrote in PR30403: "I had a brief look at what it would take to have a per-function TLI, and I'm not convinced that it would be worth the effort." Comment Actions Since this requires everyone generating llvm IR to add this module attribute for optimal codegen, it should be documented in release notes and the LangRef, I think. I mean: it's unfortunate that it's needed at all, but at the very least it should be possible for people to find out about it. Comment Actions
Not sure yet how it'll end up, I'll revamp this.
Thanks, I'll try not to forget. Comment Actions
And, for something like this, here: http://llvm.org/docs/Frontend/PerformanceTips.html
Comment Actions
That was before I figured out (see http://lists.llvm.org/pipermail/llvm-dev/2016-September/105035.html) that it would not be sound to have mixed freestanding/hosted mean hosted. Specifically:
You later wrote that we should try not to default to freestanding: http://lists.llvm.org/pipermail/llvm-dev/2016-September/105083.html And I think I agree with that. To me that all makes it more reasonable to pursue a per-function approach. Later on (I don't think it happened on the mailing list or the bug, maybe on IRC) we had another look at GlobalOpt (referenced in PR30403 comment 6) and figured out that we can in fact find a function context. Comment Actions You may have abandoned this, but marking as needing changes to get this off my queue. This revision now requires changes to proceed.Oct 17 2020, 6:15 AM
Revision Contents
Diff 71707 clang/lib/CodeGen/BackendUtil.cpp
clang/lib/CodeGen/CodeGenModule.cpp
clang/test/CodeGen/nobuiltin.c
clang/test/CodeGenCUDA/flush-denormals.cu
clang/test/CodeGenCXX/strict-vtable-pointers.cpp
lld/ELF/LTO.cpp
lld/test/ELF/lto/undefined-puts.ll
llvm/include/llvm/Analysis/TargetLibraryInfo.h
llvm/lib/Analysis/TargetLibraryInfo.cpp
llvm/lib/LTO/LTOBackend.cpp
llvm/lib/LTO/LTOCodeGenerator.cpp
llvm/lib/LTO/ThinLTOCodeGenerator.cpp
llvm/lib/LTO/UpdateCompilerUsed.cpp
llvm/test/Analysis/GlobalsModRef/indirect-global.ll
llvm/test/Analysis/GlobalsModRef/memset-escape.ll
llvm/test/Analysis/TypeBasedAliasAnalysis/memcpyopt.ll
llvm/test/CodeGen/AArch64/arm64-fcopysign.ll
llvm/test/CodeGen/AArch64/arm64-rounding.ll
llvm/test/CodeGen/AArch64/arm64-sincos.ll
llvm/test/CodeGen/AArch64/floatdp_1source.ll
llvm/test/CodeGen/AArch64/round-conv.ll
llvm/test/CodeGen/AMDGPU/complex-folding.ll
llvm/test/CodeGen/AMDGPU/fabs.f64.ll
llvm/test/CodeGen/AMDGPU/fabs.ll
llvm/test/CodeGen/AMDGPU/floor.ll
llvm/test/CodeGen/AMDGPU/fneg-fabs.f64.ll
llvm/test/CodeGen/AMDGPU/fneg-fabs.ll
llvm/test/CodeGen/AMDGPU/llvm.SI.fs.interp.ll
llvm/test/CodeGen/AMDGPU/r600-infinite-loop-bug-while-reorganizing-vector.ll
llvm/test/CodeGen/AMDGPU/schedule-if-2.ll
llvm/test/CodeGen/AMDGPU/sgpr-copy.ll
llvm/test/CodeGen/AMDGPU/si-sgpr-spill.ll
llvm/test/CodeGen/ARM/apcs-vfp.ll
llvm/test/CodeGen/ARM/arm32-round-conv.ll
llvm/test/CodeGen/ARM/arm32-rounding.ll
llvm/test/CodeGen/ARM/fabs-to-bfc.ll
llvm/test/CodeGen/ARM/fabss.ll
llvm/test/CodeGen/ARM/fcopysign.ll
llvm/test/CodeGen/ARM/floorf.ll
llvm/test/CodeGen/ARM/fparith.ll
llvm/test/CodeGen/ARM/ifcvt10.ll
llvm/test/CodeGen/ARM/sincos.ll
llvm/test/CodeGen/ARM/v7k-libcalls.ll
llvm/test/CodeGen/ARM/v7k-sincos.ll
llvm/test/CodeGen/ARM/vfp.ll
llvm/test/CodeGen/Hexagon/fminmax.ll
llvm/test/CodeGen/Hexagon/opt-fabs.ll
llvm/test/CodeGen/Mips/f16abs.ll
llvm/test/CodeGen/Mips/fabs.ll
llvm/test/CodeGen/Mips/fcopysign-f32-f64.ll
llvm/test/CodeGen/Mips/fcopysign.ll
llvm/test/CodeGen/Mips/llvm-ir/sqrt.ll
llvm/test/CodeGen/Mips/mips64-f128.ll
llvm/test/CodeGen/Mips/optimize-fp-math.ll
llvm/test/CodeGen/PowerPC/copysignl.ll
llvm/test/CodeGen/PowerPC/fabs.ll
llvm/test/CodeGen/PowerPC/fcpsgn.ll
llvm/test/CodeGen/PowerPC/fnabs.ll
llvm/test/CodeGen/PowerPC/rounding-ops.ll
llvm/test/CodeGen/PowerPC/vsx-elementary-arith.ll
llvm/test/CodeGen/SPARC/64abi.ll
llvm/test/CodeGen/SystemZ/fp-copysign-01.ll
llvm/test/CodeGen/SystemZ/fp-sincos-01.ll
llvm/test/CodeGen/SystemZ/fp-sqrt-01.ll
llvm/test/CodeGen/SystemZ/fp-sqrt-02.ll
llvm/test/CodeGen/SystemZ/memchr-01.ll
llvm/test/CodeGen/SystemZ/memchr-02.ll
llvm/test/CodeGen/SystemZ/memcmp-01.ll
llvm/test/CodeGen/SystemZ/memcmp-02.ll
llvm/test/CodeGen/SystemZ/strcmp-01.ll
llvm/test/CodeGen/SystemZ/strcmp-02.ll
llvm/test/CodeGen/SystemZ/strcpy-01.ll
llvm/test/CodeGen/SystemZ/strlen-01.ll
llvm/test/CodeGen/SystemZ/strlen-02.ll
llvm/test/CodeGen/X86/avx-arith.ll
llvm/test/CodeGen/X86/avx512-arith.ll
llvm/test/CodeGen/X86/copysign-constant-magnitude.ll
llvm/test/CodeGen/X86/fabs.ll
llvm/test/CodeGen/X86/fmaxnum.ll
llvm/test/CodeGen/X86/fminnum.ll
llvm/test/CodeGen/X86/fnabs.ll
llvm/test/CodeGen/X86/fp-in-intregs.ll
llvm/test/CodeGen/X86/fp128-cast.ll
llvm/test/CodeGen/X86/fp128-i128.ll
llvm/test/CodeGen/X86/memcmp.ll
llvm/test/CodeGen/X86/mempcpy.ll
llvm/test/CodeGen/X86/negative-sin.ll
llvm/test/CodeGen/X86/pr13577.ll
llvm/test/CodeGen/X86/pr2656.ll
llvm/test/CodeGen/X86/pr26625.ll
llvm/test/CodeGen/X86/rounding-ops.ll
llvm/test/CodeGen/X86/sincos-opt.ll
llvm/test/CodeGen/X86/sincos.ll
llvm/test/CodeGen/X86/sqrt-fastmath.ll
llvm/test/CodeGen/X86/stack-align.ll
llvm/test/Instrumentation/AddressSanitizer/str-nobuiltin.ll
llvm/test/Instrumentation/BoundsChecking/simple.ll
llvm/test/Instrumentation/EfficiencySanitizer/str-nobuiltin.ll
llvm/test/Instrumentation/MemorySanitizer/str-nobuiltin.ll
llvm/test/Instrumentation/ThreadSanitizer/str-nobuiltin.ll
llvm/test/LTO/X86/runtime-library.ll
llvm/test/LTO/X86/triple-init.ll
llvm/test/Transforms/ConstProp/calls.ll
llvm/test/Transforms/Coroutines/ArgAddr.ll
llvm/test/Transforms/Coroutines/ex3.ll
llvm/test/Transforms/DeadStoreElimination/2016-07-17-UseAfterFree.ll
llvm/test/Transforms/DeadStoreElimination/calloc-store.ll
llvm/test/Transforms/DeadStoreElimination/fence.ll
llvm/test/Transforms/DeadStoreElimination/free.ll
llvm/test/Transforms/DeadStoreElimination/libcalls.ll
llvm/test/Transforms/DeadStoreElimination/operand-bundles.ll
llvm/test/Transforms/DeadStoreElimination/simple.ll
llvm/test/Transforms/GVN/calloc-load-removal.ll
llvm/test/Transforms/GVN/malloc-load-removal.ll
llvm/test/Transforms/GVN/no_speculative_loads_with_asan.ll
llvm/test/Transforms/GVN/nonescaping-malloc.ll
llvm/test/Transforms/GlobalOpt/2009-11-16-BrokenPerformHeapAllocSRoA.ll
llvm/test/Transforms/GlobalOpt/MallocSROA-section.ll
llvm/test/Transforms/GlobalOpt/ctor-list-opt.ll
llvm/test/Transforms/GlobalOpt/cxx-dtor.ll
llvm/test/Transforms/GlobalOpt/heap-sra-1.ll
llvm/test/Transforms/GlobalOpt/heap-sra-2.ll
llvm/test/Transforms/GlobalOpt/heap-sra-3.ll
llvm/test/Transforms/GlobalOpt/heap-sra-4.ll
llvm/test/Transforms/GlobalOpt/heap-sra-phi.ll
llvm/test/Transforms/GlobalOpt/malloc-promote-1.ll
llvm/test/Transforms/GlobalOpt/malloc-promote-2.ll
llvm/test/Transforms/InferFunctionAttrs/annotate.ll
llvm/test/Transforms/InstCombine/2010-05-30-memcpy-Struct.ll
llvm/test/Transforms/InstCombine/ARM/strcmp.ll
llvm/test/Transforms/InstCombine/ARM/strcpy.ll
llvm/test/Transforms/InstCombine/abs-1.ll
llvm/test/Transforms/InstCombine/badmalloc.ll
llvm/test/Transforms/InstCombine/compare-unescaped.ll
llvm/test/Transforms/InstCombine/cos-1.ll
llvm/test/Transforms/InstCombine/debug-line.ll
llvm/test/Transforms/InstCombine/double-float-shrink-1.ll
llvm/test/Transforms/InstCombine/double-float-shrink-2.ll
llvm/test/Transforms/InstCombine/err-rep-cold.ll
llvm/test/Transforms/InstCombine/exp2-1.ll
llvm/test/Transforms/InstCombine/fabs.ll
llvm/test/Transforms/InstCombine/fast-math.ll
llvm/test/Transforms/InstCombine/ffs-1.ll
llvm/test/Transforms/InstCombine/float-shrink-compare.ll
llvm/test/Transforms/InstCombine/fold-calls.ll
llvm/test/Transforms/InstCombine/fprintf-1.ll
llvm/test/Transforms/InstCombine/fputs-1.ll
llvm/test/Transforms/InstCombine/fwrite-1.ll
llvm/test/Transforms/InstCombine/inline-intrinsic-assert.ll
llvm/test/Transforms/InstCombine/invoke.ll
llvm/test/Transforms/InstCombine/isascii-1.ll
llvm/test/Transforms/InstCombine/isdigit-1.ll
llvm/test/Transforms/InstCombine/log-pow.ll
llvm/test/Transforms/InstCombine/malloc-free-delete.ll
llvm/test/Transforms/InstCombine/memchr.ll
llvm/test/Transforms/InstCombine/memcmp-1.ll
llvm/test/Transforms/InstCombine/memcpy-1.ll
llvm/test/Transforms/InstCombine/memmove-1.ll
llvm/test/Transforms/InstCombine/memset-1.ll
llvm/test/Transforms/InstCombine/memset_chk-1.ll
llvm/test/Transforms/InstCombine/no_cgscc_assert.ll
llvm/test/Transforms/InstCombine/objsize-64.ll
llvm/test/Transforms/InstCombine/objsize.ll
llvm/test/Transforms/InstCombine/osx-names.ll
llvm/test/Transforms/InstCombine/pow-1.ll
llvm/test/Transforms/InstCombine/pow-exp.ll
llvm/test/Transforms/InstCombine/pow-sqrt.ll
llvm/test/Transforms/InstCombine/printf-1.ll
llvm/test/Transforms/InstCombine/printf-2.ll
llvm/test/Transforms/InstCombine/printf-3.ll
llvm/test/Transforms/InstCombine/puts-1.ll
llvm/test/Transforms/InstCombine/simplify-libcalls.ll
llvm/test/Transforms/InstCombine/sincospi.ll
llvm/test/Transforms/InstCombine/sprintf-1.ll
llvm/test/Transforms/InstCombine/sqrt.ll
llvm/test/Transforms/InstCombine/stpcpy-1.ll
llvm/test/Transforms/InstCombine/stpcpy_chk-1.ll
llvm/test/Transforms/InstCombine/strcat-1.ll
llvm/test/Transforms/InstCombine/strcat-2.ll
llvm/test/Transforms/InstCombine/strchr-1.ll
llvm/test/Transforms/InstCombine/strcmp-1.ll
llvm/test/Transforms/InstCombine/strcpy-1.ll
llvm/test/Transforms/InstCombine/strcpy_chk-1.ll
llvm/test/Transforms/InstCombine/strcspn-1.ll
llvm/test/Transforms/InstCombine/strlen-1.ll
llvm/test/Transforms/InstCombine/strncat-1.ll
llvm/test/Transforms/InstCombine/strncat-2.ll
llvm/test/Transforms/InstCombine/strncmp-1.ll
llvm/test/Transforms/InstCombine/strncpy-1.ll
llvm/test/Transforms/InstCombine/strncpy_chk-1.ll
llvm/test/Transforms/InstCombine/strpbrk-1.ll
llvm/test/Transforms/InstCombine/strrchr-1.ll
llvm/test/Transforms/InstCombine/strspn-1.ll
llvm/test/Transforms/InstCombine/strstr-1.ll
llvm/test/Transforms/InstCombine/strto-1.ll
llvm/test/Transforms/InstCombine/tan.ll
llvm/test/Transforms/InstCombine/toascii-1.ll
llvm/test/Transforms/InstCombine/weak-symbols.ll
llvm/test/Transforms/InstCombine/win-math.ll
llvm/test/Transforms/InstMerge/st_sink_bugfix_22613.ll
llvm/test/Transforms/InstSimplify/call-callconv.ll
llvm/test/Transforms/InstSimplify/call.ll
llvm/test/Transforms/LICM/promote-tls.ll
llvm/test/Transforms/LoopIdiom/basic-address-space.ll
llvm/test/Transforms/LoopIdiom/basic.ll
llvm/test/Transforms/LoopIdiom/debug-line.ll
llvm/test/Transforms/LoopIdiom/lir-heurs-multi-block-loop.ll
llvm/test/Transforms/LoopIdiom/pr28196.ll
llvm/test/Transforms/LoopIdiom/struct.ll
llvm/test/Transforms/LoopIdiom/struct_pattern.ll
llvm/test/Transforms/LoopIdiom/unroll.ll
llvm/test/Transforms/LoopVectorize/X86/svml-calls.ll
llvm/test/Transforms/LoopVectorize/X86/veclib-calls.ll
llvm/test/Transforms/MemCpyOpt/2008-02-24-MultipleUseofSRet.ll
llvm/test/Transforms/MemCpyOpt/2008-03-13-ReturnSlotBitcast.ll
llvm/test/Transforms/MemCpyOpt/align.ll
llvm/test/Transforms/MemCpyOpt/atomic.ll
llvm/test/Transforms/MemCpyOpt/callslot_aa.ll
llvm/test/Transforms/MemCpyOpt/callslot_deref.ll
llvm/test/Transforms/MemCpyOpt/fca2memcpy.ll
llvm/test/Transforms/MemCpyOpt/form-memset.ll
llvm/test/Transforms/MemCpyOpt/invariant.start.ll
llvm/test/Transforms/MemCpyOpt/lifetime.ll
llvm/test/Transforms/MemCpyOpt/loadstore-sret.ll
llvm/test/Transforms/MemCpyOpt/memcpy-to-memset-with-lifetimes.ll
llvm/test/Transforms/MemCpyOpt/memcpy-to-memset.ll
llvm/test/Transforms/MemCpyOpt/memcpy-undef.ll
llvm/test/Transforms/MemCpyOpt/memcpy.ll
llvm/test/Transforms/MemCpyOpt/memmove.ll
llvm/test/Transforms/MemCpyOpt/memset-memcpy-redundant-memset.ll
llvm/test/Transforms/MemCpyOpt/memset-memcpy-to-2x-memset.ll
llvm/test/Transforms/MemCpyOpt/pr29105.ll
llvm/test/Transforms/MemCpyOpt/profitable-memset.ll
llvm/test/Transforms/MemCpyOpt/sret.ll
llvm/test/Transforms/PhaseOrdering/basic.ll
llvm/test/Transforms/SCCP/calltest.ll
llvm/test/Transforms/Util/combine-alias-scope-metadata.ll
llvm/tools/llc/llc.cpp
llvm/tools/opt/opt.cpp
|