Skip to content

excessive compile time building linux/lib/zstd/compress.c #1314

Open
@arndb

Description

@arndb

I did a scripted search for files with long compile time. lib/zstd/compress.c is one of the files that came out on top.

$ perf stat clang-11 -c lib/zstd/compress.i -O3 -Wall -Wno-unused  -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE   --target=aarch64-linux -Werror=unknown-warning-option -mgeneral-regs-only -Wno-psabi -fno-asynchronous-unwind-tables -fno-unwind-tables -mbranch-protection=pac-ret+leaf  -fno-delete-null-pointer-checks -Wframe-larger-than=2048 -fno-stack-protector -mno-global-merge -fno-omit-frame-pointer -fno-optimize-sibling-calls -mno-omit-leaf-frame-pointer -pg -fno-strict-overflow -fno-stack-check -Werror=date-time -Werror=incompatible-pointer-types   -fsanitize=kernel-hwaddress -mllvm -hwasan-instrument-stack=0 -mllvm -hwasan-use-short-granules=0 -mllvm -hwasan-mapping-offset=0xefffc00000000000  -fsanitize=array-bounds -fsanitize=unreachable -fsanitize=object-size -fsanitize=bool -fsanitize=enum
          26925.09 msec task-clock                #    0.998 CPUs utilized          
              2738      context-switches          #    0.102 K/sec                  
                22      cpu-migrations            #    0.001 K/sec                  
             50399      page-faults               #    0.002 M/sec                  
       87646286353      cycles                    #    3.255 GHz                      (83.32%)
       10257322275      stalled-cycles-frontend   #   11.70% frontend cycles idle     (83.31%)
        5991572775      stalled-cycles-backend    #    6.84% backend cycles idle      (83.34%)
       59088749914      instructions              #    0.67  insn per cycle         
                                                  #    0.17  stalled cycles per insn  (83.35%)
       11508007401      branches                  #  427.408 M/sec                    (83.35%)
         491383656      branch-misses             #    4.27% of all branches          (83.33%)

      26.972371393 seconds time elapsed

      26.757734000 seconds user
       0.159723000 seconds sys

Attaching the preprocessed version:
compress.i.gz

The profile shows these functions on top:

   3.20%  clang-13  libLLVM-13.so.1      [.] llvm::BasicBlock::getTerminator
   2.95%  clang-13  libLLVM-13.so.1      [.] llvm::LiveRangeCalc::findReachingDefs
   2.46%  clang-13  libLLVM-13.so.1      [.] llvm::LoopBase<llvm::MachineBasicBlock, llvm::MachineLoop>::getExitingBlocks
   2.00%  clang-13  libLLVM-13.so.1      [.] llvm::SmallPtrSetImplBase::FindBucketFor
   1.89%  clang-13  libc-2.33.so         [.] _int_malloc
   1.31%  clang-13  libLLVM-13.so.1      [.] llvm::SmallPtrSetImplBase::insert_imp_big
   1.25%  clang-13  libLLVM-13.so.1      [.] llvm::LiveRange::extendInBlock
   1.18%  clang-13  libLLVM-13.so.1      [.] llvm::SelectionDAG::Combine
   1.18%  clang-13  libLLVM-13.so.1      [.] llvm::ScalarEvolution::forgetLoop
   0.83%  clang-13  libLLVM-13.so.1      [.] llvm::SpillPlacement::activate
   0.73%  clang-13  libc-2.33.so         [.] _int_free
   0.70%  clang-13  libLLVM-13.so.1      [.] llvm::LiveRangeUpdater::add
   0.69%  clang-13  libc-2.33.so         [.] msort_with_tmp.part.0
   0.68%  clang-13  libLLVM-13.so.1      [.] llvm::DominatorTreeBase<llvm::BasicBlock, false>::dominates
   0.66%  clang-13  libLLVM-13.so.1      [.] llvm::LiveIntervals::extendSegmentsToUses
   0.65%  clang-13  libc-2.33.so         [.] malloc
   0.64%  clang-13  libLLVM-13.so.1      [.] llvm::LiveVariables::MarkVirtRegAliveInBlock
   0.62%  clang-13  libLLVM-13.so.1      [.] llvm::ValueHandleBase::AddToUseList
   0.62%  clang-13  libc-2.33.so         [.] unlink_chunk.constprop.0
   0.60%  clang-13  libLLVM-13.so.1      [.] llvm::SpillPlacement::addLinks
   0.60%  clang-13  libc-2.33.so         [.] cfree@GLIBC_2.2.5
   0.58%  clang-13  libc-2.33.so         [.] malloc_consolidate
   0.56%  clang-13  libLLVM-13.so.1      [.] llvm::Value::getMetadata
   0.54%  clang-13  libLLVM-13.so.1      [.] llvm::SmallPtrSetImplBase::Grow
   0.52%  clang-13  libLLVM-13.so.1      [.] llvm::Instruction::getSuccessor
   0.51%  clang-13  libLLVM-13.so.1      [.] 0x0000000001029ad0
   0.50%  clang-13  libLLVM-13.so.1      [.] 0x0000000000e5eb1b

Metadata

Metadata

Assignees

No one assigned

    Labels

    Reported upstreamThis bug was filed on LLVM’s issue tracker, Phabricator, or the kernel mailing list.[BUG] llvmA bug that should be fixed in upstream LLVMcompile timeIssues affecting compile times

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions