1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
llvm-mirror/test/Transforms/GlobalOpt
Alexey Lapshin 5b59e688d3 [Transforms][GlobalSRA] huge array causes long compilation time and huge memory usage.
Summary:
For artificial cases (huge array, few usages), Global SRA optimization creates
a lot of redundant data. It creates an instance of GlobalVariable for each array
element. For huge array, that means huge compilation time and huge memory usage.
Following example compiles for 10 minutes and requires 40GB of memory.

namespace {
  char LargeBuffer[64 * 1024 * 1024];
}

int main ( void ) {

    LargeBuffer[0] = 0;

    printf("\n ");

    return LargeBuffer[0] == 0;
}

The fix is to avoid Global SRA for large arrays.

Reviewers: craig.topper, rnk, efriedma, fhahn

Reviewed By: rnk

Subscribers: xbolva00, lebedev.ri, lkail, merge_guards_bot, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71993
2020-01-04 16:42:38 +03:00
..
PowerPC [lit] Delete empty lines at the end of lit.local.cfg NFC 2019-06-17 09:51:07 +00:00
2004-10-10-CastStoreOnce.ll
2005-06-15-LocalizeConstExprCrash.ll
2005-09-27-Crash.ll
2006-07-07-InlineAsmCrash.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
2006-11-01-ShrinkGlobalPhiCrash.ll
2007-04-05-Crash.ll
2007-05-13-Crash.ll
2007-06-04-PackedStruct.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
2007-11-09-GEP-GEP-Crash.ll
2008-01-03-Crash.ll
2008-01-13-OutOfRangeSROA.ll
2008-01-29-VolatileGlobal.ll
2008-04-26-SROA-Global-Align.ll
2008-07-17-addrspace.ll
2008-12-16-HeapSRACrash-2.ll
2008-12-16-HeapSRACrash.ll
2009-01-13-phi-user.ll
2009-02-15-BitcastAlias.ll
2009-02-15-ResolveAlias.ll
2009-03-05-dbg.ll
2009-03-06-Anonymous.ll
2009-03-07-PromotePtrToBool.ll
2009-06-01-RecursivePHI.ll
2009-11-16-BrokenPerformHeapAllocSRoA.ll
2009-11-16-MallocSingleStoreToGlobalVar.ll
2010-02-25-MallocPromote.ll
2010-02-26-MallocSROA.ll
2010-10-19-WeakOdr.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
2011-04-09-EmptyGlobalCtors.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
2012-05-11-blockaddress.ll
alias-resolve.ll
alias-used-address-space.ll
alias-used-section.ll
alias-used.ll
amdgcn-ctor-alloca.ll
array-elem-refs.ll
assume.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
atexit.ll
atomic.ll remove UB from test by making GV alignment explicit 2019-12-01 15:16:31 +00:00
available_externally_global_ctors.ll
basictest.ll
blockaddress.ll
cleanup-pointer-root-users.ll
coldcc_stress_test.ll
compiler-used.ll
constantexpr-dangle.ll
constantfold-initializers.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
crash-2.ll
crash.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
ctor-list-opt-constexpr.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
ctor-list-opt-inbounds.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
ctor-list-opt.ll
cxx-dtor.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
deaddeclaration.ll
deadfunction.ll
deadglobal-2.ll
deadglobal.ll
evaluate-bitcast-2.ll [Evaluator] Walk initial elements when handling load through bitcast 2019-04-25 17:00:01 +00:00
evaluate-bitcast-3.ll [Evaluator] Walk initial elements when handling load through bitcast 2019-04-25 17:00:01 +00:00
evaluate-bitcast.ll
evaluate-call-errors.ll
evaluate-call.ll
evaluate-constfold-call.ll
externally-initialized-aggregate.ll
externally-initialized-global-ctr.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
externally-initialized.ll
fastcc.ll remove inalloca parameters in globalopt and simplify argpromotion 2019-05-02 00:37:36 +00:00
global-demotion.ll
globalsra-multigep.ll Revert r361460 2019-05-24 01:03:51 +00:00
globalsra-partial.ll
globalsra-unknown-index.ll
globalsra.ll
GSROA-section.ll
heap-sra-1-no-null-opt.ll
heap-sra-1.ll
heap-sra-2-no-null-opt.ll
heap-sra-2.ll
heap-sra-3-no-null-opt.ll
heap-sra-3.ll
heap-sra-4-no-null-opt.ll
heap-sra-4.ll
heap-sra-phi-no-null-opt.ll
heap-sra-phi.ll
int_sideeffect.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
integer-bool-dwarf.ll [DebugInfo] GlobalOpt DW_OP_deref_size instead of DW_OP_deref. 2019-05-06 07:20:56 +00:00
integer-bool.ll
invariant-nodatalayout.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
invariant.group.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
invariant.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
invoke.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
iterate.ll
large-int-crash.ll [GlobalOpt] prevent crashing on large integer types (PR42932) 2019-08-09 12:43:25 +00:00
load-store-global-no-null-opt.ll
load-store-global.ll
localize-constexpr-debuginfo.ll
localize-constexpr.ll
long-compilation-global-sra.ll [Transforms][GlobalSRA] huge array causes long compilation time and huge memory usage. 2020-01-04 16:42:38 +03:00
malloc-promote-1-no-null-opt.ll
malloc-promote-1.ll
malloc-promote-2-no-null-opt.ll
malloc-promote-2.ll
malloc-promote-3.ll
MallocSROA-section-no-null-opt.ll
MallocSROA-section.ll
memcpy.ll
memset-null.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
memset.ll
metadata.ll
musttail_cc.ll
naked_functions.ll IR: print value numbers for unnamed function arguments 2019-08-03 14:28:34 +00:00
phi-select.ll
pr21191.ll
pr33686.ll
preserve-comdats.ll
shrink-address-to-bool.ll
shrink-global-to-bool-check-debug.ll
SROA-section.ll
static-const-bitcast.ll
storepointer-compare-no-null-opt.ll
storepointer-compare.ll
storepointer-no-null-opt.ll
storepointer.ll
tls.ll
trivialstore.ll
undef-init.ll [IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format 2019-05-15 02:35:32 +00:00
unnamed-addr.ll
zeroinitializer-gep-load.ll