[llvm-bugs] [Bug 50211] New: ThinLTO + lld taking much longer linking Android libqcrilNr.so, comparing against full LTO + lld

via llvm-bugs llvm-bugs at lists.llvm.org
Mon May 3 15:30:15 PDT 2021


https://bugs.llvm.org/show_bug.cgi?id=50211

            Bug ID: 50211
           Summary: ThinLTO + lld taking much longer linking Android
                    libqcrilNr.so, comparing against full LTO + lld
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Backend: AArch64
          Assignee: unassignedbugs at nondot.org
          Reporter: huihuiz at quicinc.com
                CC: arnaud.degrandmaison at arm.com,
                    llvm-bugs at lists.llvm.org, smithp352 at googlemail.com,
                    Ties.Stuij at arm.com

When linking 64bit Android library libqcrilNr.so, using in house llvm compiler,
code base similar to community release/12.X. Observing ThinLTO link time taking
much longer than full lto.

When link with full lto, takes around 5 minutes.
When link with thin lto, takes around 17 minutes.

I can't really figure out why thin lto is taking much longer. Seeking help
here, see if anyone more familiar with this issue, or knowing which part of
llvm could possibly contribute to this slow down?

Can't really share any object file here. But sharing the time reports, hope
this can help.

Time report for full lto:
===-------------------------------------------------------------------------===
                      ... Pass execution timing report ...
===-------------------------------------------------------------------------===
  Total Execution Time: 444.9100 seconds (444.2988 wall clock)

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  ---
Name ---
  69.7080 ( 22.6%)  28.3786 ( 20.8%)  98.0866 ( 22.0%)  98.0891 ( 22.1%) 
AArch64 Assembly Printer
  33.5838 ( 10.9%)  13.1880 (  9.7%)  46.7717 ( 10.5%)  46.6892 ( 10.5%) 
AArch64 Instruction Selection
  14.8625 (  4.8%)   7.5726 (  5.6%)  22.4351 (  5.0%)  22.4490 (  5.1%) 
Machine Module Information
  13.1707 (  4.3%)   6.7261 (  4.9%)  19.8967 (  4.5%)  19.9138 (  4.5%) 
Dominator Tree Construction #7
  12.8369 (  4.2%)   6.6886 (  4.9%)  19.5255 (  4.4%)  19.5272 (  4.4%) 
Function Alias Analysis Results #4
  12.8099 (  4.2%)   6.6547 (  4.9%)  19.4646 (  4.4%)  19.4668 (  4.4%)  Basic
Alias Analysis (stateless AA impl) #4
   6.9480 (  2.3%)   3.2763 (  2.4%)  10.2243 (  2.3%)  10.2027 (  2.3%) 
Greedy Register Allocator
   6.2687 (  2.0%)   3.1288 (  2.3%)   9.3975 (  2.1%)   9.3346 (  2.1%) 
Prologue/Epilogue Insertion & Frame Finalization
   5.1671 (  1.7%)   2.3538 (  1.7%)   7.5209 (  1.7%)   7.4856 (  1.7%)  Live
DEBUG_VALUE analysis
   4.7978 (  1.6%)   2.1008 (  1.5%)   6.8986 (  1.6%)   6.8701 (  1.5%)  Live
Variable Analysis
   5.3652 (  1.7%)   0.9511 (  0.7%)   6.3163 (  1.4%)   6.2932 (  1.4%) 
Module Verifier #2
   5.1952 (  1.7%)   0.5094 (  0.4%)   5.7046 (  1.3%)   5.6843 (  1.3%) 
Module Verifier
   3.6007 (  1.2%)   1.5525 (  1.1%)   5.1533 (  1.2%)   5.1344 (  1.2%)  Live
Interval Analysis
   3.4184 (  1.1%)   1.5104 (  1.1%)   4.9288 (  1.1%)   4.8973 (  1.1%) 
Simple Register Coalescing
   3.2224 (  1.0%)   1.6417 (  1.2%)   4.8641 (  1.1%)   4.8603 (  1.1%) 
Machine Natural Loop Construction #2
   2.8867 (  0.9%)   1.4917 (  1.1%)   4.3784 (  1.0%)   4.3753 (  1.0%) 
MachineDominator Tree Construction #5
   3.0209 (  1.0%)   1.0482 (  0.8%)   4.0691 (  0.9%)   4.0510 (  0.9%) 
Memory SSA
   2.8420 (  0.9%)   1.1124 (  0.8%)   3.9544 (  0.9%)   3.9477 (  0.9%)  Free
MachineFunction
   2.0593 (  0.7%)   1.0078 (  0.7%)   3.0671 (  0.7%)   3.0524 (  0.7%) 
Insert stack protectors
   1.8488 (  0.6%)   0.8942 (  0.7%)   2.7430 (  0.6%)   2.7401 (  0.6%)  Slot
index numbering #2
   1.5921 (  0.5%)   0.7925 (  0.6%)   2.3846 (  0.5%)   2.3749 (  0.5%) 
MachineDominator Tree Construction
   1.4949 (  0.5%)   0.7285 (  0.5%)   2.2234 (  0.5%)   2.2182 (  0.5%) 
Machine Block Frequency Analysis #3
   1.5021 (  0.5%)   0.7089 (  0.5%)   2.2110 (  0.5%)   2.2009 (  0.5%) 
Branch Probability Analysis #2
   1.3685 (  0.4%)   0.7354 (  0.5%)   2.1039 (  0.5%)   2.0826 (  0.5%) 
Scalar Evolution Analysis
   1.3959 (  0.5%)   0.6686 (  0.5%)   2.0645 (  0.5%)   2.0621 (  0.5%) 
MachineDominator Tree Construction #2


For thin lto, observing single cpu running for the first 13 minutes, the later
4 minutes are multi-threaded.

===-------------------------------------------------------------------------===
                      ... Pass execution timing report ...
===-------------------------------------------------------------------------===
  Total Execution Time: 122903.7639 seconds (7749.4743 wall clock)

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  ---
Name ---
  304.7405 (  3.8%)   2.1033 (  0.0%)  306.8439 (  0.2%)  306.8722 (  4.0%) 
Lower type metadata
  289.0256 (  3.6%)   0.8153 (  0.0%)  289.8409 (  0.2%)  289.8686 (  3.7%) 
Branch Probability Basic Block Placement
  190.9626 (  2.4%)   0.4888 (  0.0%)  191.4514 (  0.2%)  191.4685 (  2.5%) 
Branch relaxation pass
  76.6860 (  0.9%)  1136.7987 (  1.0%)  1213.4848 (  1.0%)  62.8574 (  0.8%) 
AArch64 Assembly Printer #116
  42.9683 (  0.5%)   2.5747 (  0.0%)  45.5430 (  0.0%)  45.5567 (  0.6%) 
AArch64 Instruction Selection
  42.5507 (  0.5%)   0.1631 (  0.0%)  42.7139 (  0.0%)  42.7174 (  0.6%) 
Control Flow Optimizer
  52.7947 (  0.7%)  782.3718 (  0.7%)  835.1665 (  0.7%)  41.8995 (  0.5%) 
AArch64 Assembly Printer #7
  47.6952 (  0.6%)  704.5987 (  0.6%)  752.2939 (  0.6%)  37.7206 (  0.5%) 
AArch64 Assembly Printer #40
  30.7870 (  0.4%)  504.1012 (  0.4%)  534.8883 (  0.4%)  36.6904 (  0.5%) 
AArch64 Assembly Printer #23
  26.1035 (  0.3%)  449.4197 (  0.4%)  475.5232 (  0.4%)  33.7455 (  0.4%) 
AArch64 Assembly Printer #137
  32.0621 (  0.4%)  261.0043 (  0.2%)  293.0665 (  0.2%)  33.0863 (  0.4%) 
AArch64 Assembly Printer #11
  36.7061 (  0.5%)  575.6889 (  0.5%)  612.3949 (  0.5%)  31.3014 (  0.4%) 
AArch64 Assembly Printer #121
  40.1155 (  0.5%)  522.4378 (  0.5%)  562.5532 (  0.5%)  28.2140 (  0.4%) 
AArch64 Assembly Printer #114
  25.4224 (  0.3%)  216.7932 (  0.2%)  242.2156 (  0.2%)  27.9494 (  0.4%) 
AArch64 Assembly Printer #139
  34.6752 (  0.4%)  490.1866 (  0.4%)  524.8617 (  0.4%)  26.3398 (  0.3%) 
Branch Probability Analysis #231
  34.2679 (  0.4%)  441.6632 (  0.4%)  475.9312 (  0.4%)  23.8663 (  0.3%) 
AArch64 Assembly Printer #106
  35.0161 (  0.4%)  427.0860 (  0.4%)  462.1021 (  0.4%)  23.2253 (  0.3%) 
AArch64 Assembly Printer #107
  22.1234 (  0.3%)  128.0110 (  0.1%)  150.1344 (  0.1%)  22.4227 (  0.3%) 
AArch64 Assembly Printer #92
  20.8856 (  0.3%)  138.7600 (  0.1%)  159.6456 (  0.1%)  22.3985 (  0.3%) 
AArch64 Assembly Printer #95
  18.4032 (  0.2%)  189.8183 (  0.2%)  208.2215 (  0.2%)  21.9948 (  0.3%) 
AArch64 Assembly Printer #100
  16.5243 (  0.2%)  387.3604 (  0.3%)  403.8847 (  0.3%)  20.2050 (  0.3%) 
AArch64 Assembly Printer #28
  18.5907 (  0.2%)  90.6694 (  0.1%)  109.2601 (  0.1%)  20.0015 (  0.3%) 
AArch64 Assembly Printer #140
  19.3601 (  0.2%)  72.3643 (  0.1%)  91.7244 (  0.1%)  17.7730 (  0.2%) 
AArch64 Assembly Printer #141

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20210503/9ea4d2e9/attachment.html>


More information about the llvm-bugs mailing list