Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-124272

QT_TEST_ALL_COMPARISON_OPS & QT_TEST_EQUALITY_OPS cause massive code bloat

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P0: Blocker
    • 6.8.0 FF
    • 6.8
    • Testing: qtestlib
    • None
    • c14f399d2 (dev)
    • Foundation Sprint 106

    Description

      Test is tst_qcborvalue.cpp

      With QT_TEST_ALL_COMPARISON_OPS defined to empty, the compilation time is is 39.62ss. With it as it stands:

      • GCC 13.2: 136.99s
      • GCC 14.0: 100.49 s
      • Clang 18: 104.95 s

      Clang time report:

      ===-------------------------------------------------------------------------===
                                Pass execution timing report
      ===-------------------------------------------------------------------------===
        Total Execution Time: 0.3198 seconds (0.3192 wall clock)
      
         ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
         0.1450 ( 59.3%)   0.0754 (100.0%)   0.2204 ( 68.9%)   0.2197 ( 68.8%)  AnnotationRemarksPass
         0.0994 ( 40.7%)   0.0000 (  0.0%)   0.0994 ( 31.1%)   0.0994 ( 31.2%)  AlwaysInlinerPass
         0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)  CoroConditionalWrapper
         0.2443 (100.0%)   0.0754 (100.0%)   0.3198 (100.0%)   0.3192 (100.0%)  Total
      
      ===-------------------------------------------------------------------------===
                              Analysis execution timing report
      ===-------------------------------------------------------------------------===
        Total Execution Time: 0.0765 seconds (0.0764 wall clock)
      
         ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
         0.0439 ( 82.1%)   0.0231 (100.0%)   0.0669 ( 87.5%)   0.0668 ( 87.4%)  TargetLibraryAnalysis
         0.0028 (  5.2%)   0.0000 (  0.0%)   0.0028 (  3.6%)   0.0028 (  3.7%)  DominatorTreeAnalysis
         0.0024 (  4.6%)   0.0000 (  0.0%)   0.0024 (  3.2%)   0.0025 (  3.2%)  BranchProbabilityAnalysis
         0.0014 (  2.7%)   0.0000 (  0.0%)   0.0014 (  1.9%)   0.0014 (  1.9%)  PostDominatorTreeAnalysis
         0.0012 (  2.2%)   0.0000 (  0.0%)   0.0012 (  1.6%)   0.0012 (  1.6%)  BlockFrequencyAnalysis
         0.0007 (  1.4%)   0.0000 (  0.0%)   0.0007 (  1.0%)   0.0007 (  1.0%)  LoopAnalysis
         0.0006 (  1.2%)   0.0000 (  0.0%)   0.0006 (  0.8%)   0.0006 (  0.8%)  TargetIRAnalysis
         0.0001 (  0.3%)   0.0000 (  0.0%)   0.0001 (  0.2%)   0.0001 (  0.2%)  AAManager
         0.0001 (  0.2%)   0.0000 (  0.0%)   0.0001 (  0.1%)   0.0001 (  0.1%)  AssumptionAnalysis
         0.0000 (  0.1%)   0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.1%)  BasicAA
         0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)  TypeBasedAA
         0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)  ScopedNoAliasAA
         0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)  OuterAnalysisManagerProxy<ModuleAnalysisManager, Function>
         0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)  ProfileSummaryAnalysis
         0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)  InnerAnalysisManagerProxy<FunctionAnalysisManager, Module>
         0.0534 (100.0%)   0.0231 (100.0%)   0.0765 (100.0%)   0.0764 (100.0%)  Total
      
      ===-------------------------------------------------------------------------===
                               Miscellaneous Ungrouped Timers
      ===-------------------------------------------------------------------------===
      
         ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
        26.3375 ( 67.3%)  10.9962 ( 97.3%)  37.3337 ( 74.1%)  37.3367 ( 74.0%)  Code Generation Time
        12.7759 ( 32.7%)   0.3014 (  2.7%)  13.0773 ( 25.9%)  13.1128 ( 26.0%)  LLVM IR Generation Time
        39.1133 (100.0%)  11.2976 (100.0%)  50.4109 (100.0%)  50.4495 (100.0%)  Total
      
      2 warnings generated.
      ===-------------------------------------------------------------------------===
                            Instruction Selection and Scheduling
      ===-------------------------------------------------------------------------===
        Total Execution Time: 1.5796 seconds (1.5793 wall clock)
      
         ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
         0.2385 ( 21.7%)   0.1056 ( 21.9%)   0.3441 ( 21.8%)   0.3437 ( 21.8%)  Instruction Selection
         0.2201 ( 20.0%)   0.0960 ( 19.9%)   0.3161 ( 20.0%)   0.3171 ( 20.1%)  DAG Combining 1
         0.2173 ( 19.8%)   0.0994 ( 20.6%)   0.3167 ( 20.1%)   0.3166 ( 20.0%)  Instruction Scheduling
         0.1438 ( 13.1%)   0.0609 ( 12.6%)   0.2046 ( 13.0%)   0.2044 ( 12.9%)  DAG Combining 2
         0.1386 ( 12.6%)   0.0604 ( 12.5%)   0.1990 ( 12.6%)   0.1984 ( 12.6%)  Instruction Creation
         0.0676 (  6.2%)   0.0288 (  6.0%)   0.0964 (  6.1%)   0.0962 (  6.1%)  DAG Legalization
         0.0393 (  3.6%)   0.0173 (  3.6%)   0.0566 (  3.6%)   0.0567 (  3.6%)  Type Legalization
         0.0185 (  1.7%)   0.0081 (  1.7%)   0.0266 (  1.7%)   0.0265 (  1.7%)  Instruction Scheduling Cleanup
         0.0117 (  1.1%)   0.0049 (  1.0%)   0.0166 (  1.1%)   0.0167 (  1.1%)  Vector Legalization
         0.0025 (  0.2%)   0.0003 (  0.1%)   0.0029 (  0.2%)   0.0029 (  0.2%)  DAG Combining after legalize types
         1.0979 (100.0%)   0.4817 (100.0%)   1.5796 (100.0%)   1.5793 (100.0%)  Total
      
      ===-------------------------------------------------------------------------===
                                Pass execution timing report
      ===-------------------------------------------------------------------------===
        Total Execution Time: 24.6270 seconds (24.6270 wall clock)
      
         ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
         6.5371 ( 40.4%)   3.5875 ( 42.6%)  10.1246 ( 41.1%)  10.1252 ( 41.1%)  X86 Assembly Printer
         3.1187 ( 19.3%)   1.4615 ( 17.3%)   4.5802 ( 18.6%)   4.5763 ( 18.6%)  X86 DAG->DAG Instruction Selection
         0.9465 (  5.8%)   0.4294 (  5.1%)   1.3759 (  5.6%)   1.3730 (  5.6%)  Live DEBUG_VALUE analysis
         0.5647 (  3.5%)   0.2967 (  3.5%)   0.8614 (  3.5%)   0.8599 (  3.5%)  Prologue/Epilogue Insertion & Frame Finalization
         0.4673 (  2.9%)   0.2154 (  2.6%)   0.6827 (  2.8%)   0.6821 (  2.8%)  Fast Register Allocator
         0.2892 (  1.8%)   0.1412 (  1.7%)   0.4303 (  1.7%)   0.4291 (  1.7%)  Two-Address instruction pass
         0.1982 (  1.2%)   0.0944 (  1.1%)   0.2926 (  1.2%)   0.2918 (  1.2%)  MachineDominator Tree Construction
         0.1815 (  1.1%)   0.0981 (  1.2%)   0.2795 (  1.1%)   0.2798 (  1.1%)  Expand large div/rem
         0.1482 (  0.9%)   0.0783 (  0.9%)   0.2265 (  0.9%)   0.2271 (  0.9%)  Free MachineFunction
         0.1347 (  0.8%)   0.0731 (  0.9%)   0.2077 (  0.8%)   0.2071 (  0.8%)  Lower AMX type for load/store
         0.1211 (  0.7%)   0.0526 (  0.6%)   0.1736 (  0.7%)   0.1739 (  0.7%)  Check CFA info and insert CFI instructions if needed
         0.1106 (  0.7%)   0.0611 (  0.7%)   0.1717 (  0.7%)   0.1713 (  0.7%)  Expand vector predication intrinsics
         0.1098 (  0.7%)   0.0609 (  0.7%)   0.1707 (  0.7%)   0.1705 (  0.7%)  Scalarize Masked Memory Intrinsics
         0.1100 (  0.7%)   0.0602 (  0.7%)   0.1702 (  0.7%)   0.1698 (  0.7%)  Lower constant intrinsics
         0.1019 (  0.6%)   0.0505 (  0.6%)   0.1524 (  0.6%)   0.1524 (  0.6%)  X86 EFLAGS copy lowering
         0.0868 (  0.5%)   0.0482 (  0.6%)   0.1350 (  0.5%)   0.1355 (  0.6%)  Exception handling preparation
         0.0869 (  0.5%)   0.0480 (  0.6%)   0.1349 (  0.5%)   0.1350 (  0.5%)  Expand reduction intrinsics
         0.0836 (  0.5%)   0.0438 (  0.5%)   0.1274 (  0.5%)   0.1272 (  0.5%)  Finalize ISel and expand pseudo-instructions
         0.0793 (  0.5%)   0.0441 (  0.5%)   0.1234 (  0.5%)   0.1230 (  0.5%)  Expand Atomic instructions
         0.0762 (  0.5%)   0.0419 (  0.5%)   0.1181 (  0.5%)   0.1180 (  0.5%)  Expand large fp convert
         0.0736 (  0.5%)   0.0386 (  0.5%)   0.1123 (  0.5%)   0.1127 (  0.5%)  Remove Redundant DEBUG_VALUE analysis
         0.0682 (  0.4%)   0.0383 (  0.5%)   0.1065 (  0.4%)   0.1064 (  0.4%)  Expand indirectbr instructions
         0.0689 (  0.4%)   0.0365 (  0.4%)   0.1054 (  0.4%)   0.1056 (  0.4%)  X86 pseudo instruction expansion pass
         0.0683 (  0.4%)   0.0374 (  0.4%)   0.1057 (  0.4%)   0.1056 (  0.4%)  Remove unreachable blocks from the CFG
         0.0686 (  0.4%)   0.0362 (  0.4%)   0.1048 (  0.4%)   0.1046 (  0.4%)  Post-RA pseudo instruction expansion pass
         0.0681 (  0.4%)   0.0337 (  0.4%)   0.1018 (  0.4%)   0.1021 (  0.4%)  Eliminate PHI nodes for register allocation
         0.0625 (  0.4%)   0.0349 (  0.4%)   0.0974 (  0.4%)   0.0978 (  0.4%)  Insert stack protectors
         0.0606 (  0.4%)   0.0337 (  0.4%)   0.0943 (  0.4%)   0.0942 (  0.4%)  Assignment Tracking Analysis
         0.0599 (  0.4%)   0.0331 (  0.4%)   0.0930 (  0.4%)   0.0935 (  0.4%)  Unpack machine instruction bundles
         0.0602 (  0.4%)   0.0313 (  0.4%)   0.0916 (  0.4%)   0.0917 (  0.4%)  Fast Tile Register Configure
         0.0590 (  0.4%)   0.0325 (  0.4%)   0.0915 (  0.4%)   0.0916 (  0.4%)  Insert KCFI indirect call checks
         0.0582 (  0.4%)   0.0324 (  0.4%)   0.0906 (  0.4%)   0.0901 (  0.4%)  X86 Indirect Branch Tracking
         0.0551 (  0.3%)   0.0292 (  0.3%)   0.0844 (  0.3%)   0.0844 (  0.3%)  Compressing EVEX instrs when possible
         0.0535 (  0.3%)   0.0286 (  0.3%)   0.0821 (  0.3%)   0.0827 (  0.3%)  Bundle Machine CFG Edges
         0.0527 (  0.3%)   0.0293 (  0.3%)   0.0820 (  0.3%)   0.0821 (  0.3%)  Insert XRay ops
         0.0514 (  0.3%)   0.0284 (  0.3%)   0.0798 (  0.3%)   0.0802 (  0.3%)  Stack Frame Layout Analysis
         0.0523 (  0.3%)   0.0275 (  0.3%)   0.0798 (  0.3%)   0.0801 (  0.3%)  X86 Lower Tile Copy
         0.0509 (  0.3%)   0.0285 (  0.3%)   0.0794 (  0.3%)   0.0799 (  0.3%)  Shadow Stack GC Lowering
         0.0502 (  0.3%)   0.0279 (  0.3%)   0.0780 (  0.3%)   0.0781 (  0.3%)  X86 vzeroupper inserter
         0.0497 (  0.3%)   0.0276 (  0.3%)   0.0773 (  0.3%)   0.0779 (  0.3%)  X86 Indirect Thunks
         0.0497 (  0.3%)   0.0277 (  0.3%)   0.0774 (  0.3%)   0.0777 (  0.3%)  Contiguously Lay Out Funclets
         0.0490 (  0.3%)   0.0270 (  0.3%)   0.0760 (  0.3%)   0.0760 (  0.3%)  Argument Stack Rebase
         0.0486 (  0.3%)   0.0270 (  0.3%)   0.0756 (  0.3%)   0.0755 (  0.3%)  Local Stack Slot Allocation
         0.0483 (  0.3%)   0.0267 (  0.3%)   0.0750 (  0.3%)   0.0752 (  0.3%)  Fast Tile Register Preconfigure
         0.0474 (  0.3%)   0.0263 (  0.3%)   0.0736 (  0.3%)   0.0750 (  0.3%)  Machine Optimization Remark Emitter
         0.0479 (  0.3%)   0.0265 (  0.3%)   0.0744 (  0.3%)   0.0747 (  0.3%)  Insert fentry calls
         0.0479 (  0.3%)   0.0266 (  0.3%)   0.0744 (  0.3%)   0.0747 (  0.3%)  Implement the 'patchable-function' attribute
         0.0477 (  0.3%)   0.0268 (  0.3%)   0.0745 (  0.3%)   0.0741 (  0.3%)  X86 FP Stackifier
         0.0468 (  0.3%)   0.0261 (  0.3%)   0.0729 (  0.3%)   0.0733 (  0.3%)  X86 PIC Global Base Reg Initialization
         0.0464 (  0.3%)   0.0260 (  0.3%)   0.0724 (  0.3%)   0.0730 (  0.3%)  Machine Optimization Remark Emitter #3
         0.0461 (  0.3%)   0.0257 (  0.3%)   0.0718 (  0.3%)   0.0721 (  0.3%)  Machine Sanitizer Binary Metadata
         0.0460 (  0.3%)   0.0255 (  0.3%)   0.0716 (  0.3%)   0.0720 (  0.3%)  Fixup Statepoint Caller Saved
         0.0465 (  0.3%)   0.0260 (  0.3%)   0.0724 (  0.3%)   0.0720 (  0.3%)  Lazy Machine Block Frequency Analysis
         0.0464 (  0.3%)   0.0255 (  0.3%)   0.0719 (  0.3%)   0.0719 (  0.3%)  StackMap Liveness Analysis
         0.0460 (  0.3%)   0.0256 (  0.3%)   0.0716 (  0.3%)   0.0716 (  0.3%)  X86 speculative load hardening
         0.0456 (  0.3%)   0.0256 (  0.3%)   0.0711 (  0.3%)   0.0716 (  0.3%)  Pseudo Probe Inserter
         0.0455 (  0.3%)   0.0253 (  0.3%)   0.0708 (  0.3%)   0.0711 (  0.3%)  Machine Optimization Remark Emitter #2
         0.0452 (  0.3%)   0.0252 (  0.3%)   0.0704 (  0.3%)   0.0709 (  0.3%)  Analyze Machine Code For Garbage Collection
         0.0452 (  0.3%)   0.0253 (  0.3%)   0.0705 (  0.3%)   0.0708 (  0.3%)  X86 DynAlloca Expander
         0.0453 (  0.3%)   0.0253 (  0.3%)   0.0706 (  0.3%)   0.0705 (  0.3%)  Lazy Machine Block Frequency Analysis #3
         0.0451 (  0.3%)   0.0251 (  0.3%)   0.0702 (  0.3%)   0.0699 (  0.3%)  X86 Speculative Execution Side Effect Suppression
         0.0447 (  0.3%)   0.0251 (  0.3%)   0.0698 (  0.3%)   0.0697 (  0.3%)  X86 Insert Cache Prefetches
         0.0443 (  0.3%)   0.0248 (  0.3%)   0.0691 (  0.3%)   0.0693 (  0.3%)  Lazy Machine Block Frequency Analysis #2
         0.0440 (  0.3%)   0.0246 (  0.3%)   0.0687 (  0.3%)   0.0693 (  0.3%)  X86 Load Value Injection (LVI) Ret-Hardening
         0.0443 (  0.3%)   0.0248 (  0.3%)   0.0691 (  0.3%)   0.0691 (  0.3%)  X86 insert wait instruction
         0.0440 (  0.3%)   0.0245 (  0.3%)   0.0685 (  0.3%)   0.0687 (  0.3%)  X86 Discriminate Memory Operands
         0.0434 (  0.3%)   0.0242 (  0.3%)   0.0676 (  0.3%)   0.0686 (  0.3%)  X86 Return Thunks
         0.0435 (  0.3%)   0.0244 (  0.3%)   0.0679 (  0.3%)   0.0679 (  0.3%)  Prepare callbr
         0.0426 (  0.3%)   0.0238 (  0.3%)   0.0664 (  0.3%)   0.0671 (  0.3%)  Lower AMX intrinsics
         0.0427 (  0.3%)   0.0240 (  0.3%)   0.0668 (  0.3%)   0.0668 (  0.3%)  Lower Garbage Collection Instructions
         0.0417 (  0.3%)   0.0235 (  0.3%)   0.0651 (  0.3%)   0.0652 (  0.3%)  Safe Stack instrumentation pass
         0.0239 (  0.1%)   0.0030 (  0.0%)   0.0269 (  0.1%)   0.0269 (  0.1%)  Assumption Cache Tracker
         0.0155 (  0.1%)   0.0000 (  0.0%)   0.0155 (  0.1%)   0.0155 (  0.1%)  Pre-ISel Intrinsic Lowering
         0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)  Machine Module Information
         0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)  Machine Branch Probability Analysis
         0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)  Profile summary info
         0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)  Target Pass Configuration
         0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)  Target Library Information
         0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)  Create Garbage Collector Module Metadata
         0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)   0.0000 (  0.0%)  Target Transform Information
        16.2009 (100.0%)   8.4260 (100.0%)  24.6270 (100.0%)  24.6270 (100.0%)  Total
      
      ===-------------------------------------------------------------------------===
                                       DWARF Emission
      ===-------------------------------------------------------------------------===
        Total Execution Time: 5.2773 seconds (5.2888 wall clock)
      
         ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
         2.7010 ( 72.9%)   1.0128 ( 64.4%)   3.7139 ( 70.4%)   3.7254 ( 70.4%)  Debug Info Emission
         1.0031 ( 27.1%)   0.5603 ( 35.6%)   1.5634 ( 29.6%)   1.5635 ( 29.6%)  DWARF Exception Writer
         3.7041 (100.0%)   1.5732 (100.0%)   5.2773 (100.0%)   5.2888 (100.0%)  Total
      
      ===-------------------------------------------------------------------------===
                                Clang front-end time report
      ===-------------------------------------------------------------------------===
        Total Execution Time: 97.2432 seconds (97.2709 wall clock)
      
         ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
        85.3971 (100.0%)  11.8461 (100.0%)  97.2432 (100.0%)  97.2709 (100.0%)  Clang front-end timer
        85.3971 (100.0%)  11.8461 (100.0%)  97.2432 (100.0%)  97.2709 (100.0%)  Total
      

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            ivan.solovev Ivan Solovev
            thiago Thiago Macieira
            Vladimir Minenko Vladimir Minenko
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes