LCOV - code coverage report
Current view: top level - objdir/gcc - pass-instances.def (source / functions) Hit Total Coverage
Test: gcc.info Lines: 373 373 100.0 %
Date: 2020-03-28 11:57:23 Functions: 0 0 -
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /* This file is auto-generated by gen-pass-instances.awk
       2                 :            :    from passes.def.  */
       3                 :            : /* Description of pass structure
       4                 :            :    Copyright (C) 1987-2020 Free Software Foundation, Inc.
       5                 :            : 
       6                 :            : This file is part of GCC.
       7                 :            : 
       8                 :            : GCC is free software; you can redistribute it and/or modify it under
       9                 :            : the terms of the GNU General Public License as published by the Free
      10                 :            : Software Foundation; either version 3, or (at your option) any later
      11                 :            : version.
      12                 :            : 
      13                 :            : GCC is distributed in the hope that it will be useful, but WITHOUT ANY
      14                 :            : WARRANTY; without even the implied warranty of MERCHANTABILITY or
      15                 :            : FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
      16                 :            : for more details.
      17                 :            : 
      18                 :            : You should have received a copy of the GNU General Public License
      19                 :            : along with GCC; see the file COPYING3.  If not see
      20                 :            : <http://www.gnu.org/licenses/>.  */
      21                 :            : 
      22                 :            : /*
      23                 :            :  Macros that should be defined when using this file:
      24                 :            :    INSERT_PASSES_AFTER (PASS)
      25                 :            :    PUSH_INSERT_PASSES_WITHIN (PASS)
      26                 :            :    POP_INSERT_PASSES ()
      27                 :            :    NEXT_PASS (PASS, 1)
      28                 :            :    TERMINATE_PASS_LIST (PASS)
      29                 :            :  */
      30                 :            : 
      31                 :            :  /* All passes needed to lower the function into shape optimizers can
      32                 :            :     operate on.  These passes are always run first on the function, but
      33                 :            :     backend might produce already lowered functions that are not processed
      34                 :            :     by these passes.  */
      35                 :     200540 :   INSERT_PASSES_AFTER (all_lowering_passes)
      36                 :     200540 :   NEXT_PASS (pass_warn_unused_result, 1);
      37                 :     200540 :   NEXT_PASS (pass_diagnose_omp_blocks, 1);
      38                 :     200540 :   NEXT_PASS (pass_diagnose_tm_blocks, 1);
      39                 :     200540 :   NEXT_PASS (pass_lower_omp, 1);
      40                 :     200540 :   NEXT_PASS (pass_lower_cf, 1);
      41                 :     200540 :   NEXT_PASS (pass_lower_tm, 1);
      42                 :     200540 :   NEXT_PASS (pass_refactor_eh, 1);
      43                 :     200540 :   NEXT_PASS (pass_lower_eh, 1);
      44                 :     200540 :   NEXT_PASS (pass_coroutine_lower_builtins, 1);
      45                 :     200540 :   NEXT_PASS (pass_build_cfg, 1);
      46                 :     200540 :   NEXT_PASS (pass_warn_function_return, 1);
      47                 :     200540 :   NEXT_PASS (pass_coroutine_early_expand_ifns, 1);
      48                 :     200540 :   NEXT_PASS (pass_expand_omp, 1);
      49                 :     200540 :   NEXT_PASS (pass_warn_printf, 1);
      50                 :     200540 :   NEXT_PASS_WITH_ARG (pass_walloca, 1, /*strict_mode_p=*/true);
      51                 :     200540 :   NEXT_PASS (pass_build_cgraph_edges, 1);
      52                 :     200540 :   TERMINATE_PASS_LIST (all_lowering_passes)
      53                 :            : 
      54                 :            :   /* Interprocedural optimization passes.  */
      55                 :     200540 :   INSERT_PASSES_AFTER (all_small_ipa_passes)
      56                 :     200540 :   NEXT_PASS (pass_ipa_free_lang_data, 1);
      57                 :     200540 :   NEXT_PASS (pass_ipa_function_and_variable_visibility, 1);
      58                 :     200540 :   NEXT_PASS (pass_build_ssa_passes, 1);
      59                 :     200540 :   PUSH_INSERT_PASSES_WITHIN (pass_build_ssa_passes)
      60                 :     200540 :       NEXT_PASS (pass_fixup_cfg, 1);
      61                 :     200540 :       NEXT_PASS (pass_build_ssa, 1);
      62                 :     200540 :       NEXT_PASS (pass_warn_nonnull_compare, 1);
      63                 :     200540 :       NEXT_PASS (pass_early_warn_uninitialized, 1);
      64                 :     200540 :       NEXT_PASS (pass_ubsan, 1);
      65                 :     200540 :       NEXT_PASS (pass_nothrow, 1);
      66                 :     200540 :       NEXT_PASS (pass_rebuild_cgraph_edges, 1);
      67                 :            :   POP_INSERT_PASSES ()
      68                 :            : 
      69                 :     200540 :   NEXT_PASS (pass_local_optimization_passes, 1);
      70                 :     200540 :   PUSH_INSERT_PASSES_WITHIN (pass_local_optimization_passes)
      71                 :     200540 :       NEXT_PASS (pass_fixup_cfg, 2);
      72                 :     200540 :       NEXT_PASS (pass_rebuild_cgraph_edges, 2);
      73                 :     200540 :       NEXT_PASS (pass_local_fn_summary, 1);
      74                 :     200540 :       NEXT_PASS (pass_early_inline, 1);
      75                 :     200540 :       NEXT_PASS (pass_all_early_optimizations, 1);
      76                 :     200540 :       PUSH_INSERT_PASSES_WITHIN (pass_all_early_optimizations)
      77                 :     200540 :           NEXT_PASS (pass_remove_cgraph_callee_edges, 1);
      78                 :     200540 :           NEXT_PASS_WITH_ARG (pass_object_sizes, 1, true /* insert_min_max_p */);
      79                 :            :           /* Don't record nonzero bits before IPA to avoid
      80                 :            :              using too much memory.  */
      81                 :     200540 :           NEXT_PASS_WITH_ARG (pass_ccp, 1, false /* nonzero_p */);
      82                 :            :           /* After CCP we rewrite no longer addressed locals into SSA
      83                 :            :              form if possible.  */
      84                 :     200540 :           NEXT_PASS (pass_forwprop, 1);
      85                 :     200540 :           NEXT_PASS (pass_early_thread_jumps, 1);
      86                 :     200540 :           NEXT_PASS (pass_sra_early, 1);
      87                 :            :           /* pass_build_ealias is a dummy pass that ensures that we
      88                 :            :              execute TODO_rebuild_alias at this point.  */
      89                 :     200540 :           NEXT_PASS (pass_build_ealias, 1);
      90                 :     200540 :           NEXT_PASS_WITH_ARG (pass_fre, 1, true /* may_iterate */);
      91                 :     200540 :           NEXT_PASS (pass_early_vrp, 1);
      92                 :     200540 :           NEXT_PASS (pass_merge_phi, 1);
      93                 :     200540 :           NEXT_PASS (pass_dse, 1);
      94                 :     200540 :           NEXT_PASS (pass_cd_dce, 1);
      95                 :     200540 :           NEXT_PASS_WITH_ARG (pass_phiopt, 1, true /* early_p */);
      96                 :     200540 :           NEXT_PASS (pass_tail_recursion, 1);
      97                 :     200540 :           NEXT_PASS (pass_convert_switch, 1);
      98                 :     200540 :           NEXT_PASS (pass_cleanup_eh, 1);
      99                 :     200540 :           NEXT_PASS (pass_profile, 1);
     100                 :     200540 :           NEXT_PASS (pass_local_pure_const, 1);
     101                 :            :           /* Split functions creates parts that are not run through
     102                 :            :              early optimizations again.  It is thus good idea to do this
     103                 :            :               late.  */
     104                 :     200540 :           NEXT_PASS (pass_split_functions, 1);
     105                 :     200540 :           NEXT_PASS_WITH_ARG (pass_strip_predict_hints, 1, true /* early_p */);
     106                 :            :       POP_INSERT_PASSES ()
     107                 :     200540 :       NEXT_PASS (pass_release_ssa_names, 1);
     108                 :     200540 :       NEXT_PASS (pass_rebuild_cgraph_edges, 3);
     109                 :     200540 :       NEXT_PASS (pass_local_fn_summary, 2);
     110                 :            :   POP_INSERT_PASSES ()
     111                 :            : 
     112                 :     200540 :   NEXT_PASS (pass_ipa_remove_symbols, 1);
     113                 :     200540 :   NEXT_PASS (pass_ipa_oacc, 1);
     114                 :     200540 :   PUSH_INSERT_PASSES_WITHIN (pass_ipa_oacc)
     115                 :     200540 :       NEXT_PASS (pass_ipa_pta, 1);
     116                 :            :       /* Pass group that runs when the function is an offloaded function
     117                 :            :          containing oacc kernels loops.  */
     118                 :     200540 :       NEXT_PASS (pass_ipa_oacc_kernels, 1);
     119                 :     200540 :       PUSH_INSERT_PASSES_WITHIN (pass_ipa_oacc_kernels)
     120                 :     200540 :           NEXT_PASS (pass_oacc_kernels, 1);
     121                 :     200540 :           PUSH_INSERT_PASSES_WITHIN (pass_oacc_kernels)
     122                 :     200540 :               NEXT_PASS (pass_ch, 1);
     123                 :     200540 :               NEXT_PASS_WITH_ARG (pass_fre, 2, true /* may_iterate */);
     124                 :            :               /* We use pass_lim to rewrite in-memory iteration and reduction
     125                 :            :                  variable accesses in loops into local variables accesses.  */
     126                 :     200540 :               NEXT_PASS (pass_lim, 1);
     127                 :     200540 :               NEXT_PASS_WITH_ARG (pass_dominator, 1, false /* may_peel_loop_headers_p */);
     128                 :     200540 :               NEXT_PASS (pass_dce, 1);
     129                 :     200540 :               NEXT_PASS_WITH_ARG (pass_parallelize_loops, 1, true /* oacc_kernels_p */);
     130                 :     200540 :               NEXT_PASS (pass_expand_omp_ssa, 1);
     131                 :     200540 :               NEXT_PASS (pass_rebuild_cgraph_edges, 4);
     132                 :            :           POP_INSERT_PASSES ()
     133                 :            :       POP_INSERT_PASSES ()
     134                 :            :   POP_INSERT_PASSES ()
     135                 :            : 
     136                 :     200540 :   NEXT_PASS (pass_target_clone, 1);
     137                 :     200540 :   NEXT_PASS (pass_ipa_auto_profile, 1);
     138                 :     200540 :   NEXT_PASS (pass_ipa_tree_profile, 1);
     139                 :     200540 :   PUSH_INSERT_PASSES_WITHIN (pass_ipa_tree_profile)
     140                 :     200540 :       NEXT_PASS (pass_feedback_split_functions, 1);
     141                 :            :   POP_INSERT_PASSES ()
     142                 :     200540 :   NEXT_PASS_WITH_ARG (pass_ipa_free_fn_summary, 1, true /* small_p */);
     143                 :     200540 :   NEXT_PASS (pass_ipa_increase_alignment, 1);
     144                 :     200540 :   NEXT_PASS (pass_ipa_tm, 1);
     145                 :     200540 :   NEXT_PASS (pass_ipa_lower_emutls, 1);
     146                 :     200540 :   TERMINATE_PASS_LIST (all_small_ipa_passes)
     147                 :            : 
     148                 :     200540 :   INSERT_PASSES_AFTER (all_regular_ipa_passes)
     149                 :     200540 :   NEXT_PASS (pass_analyzer, 1);
     150                 :     200540 :   NEXT_PASS (pass_ipa_whole_program_visibility, 1);
     151                 :     200540 :   NEXT_PASS (pass_ipa_profile, 1);
     152                 :     200540 :   NEXT_PASS (pass_ipa_icf, 1);
     153                 :     200540 :   NEXT_PASS (pass_ipa_devirt, 1);
     154                 :     200540 :   NEXT_PASS (pass_ipa_cp, 1);
     155                 :     200540 :   NEXT_PASS (pass_ipa_sra, 1);
     156                 :     200540 :   NEXT_PASS (pass_ipa_cdtor_merge, 1);
     157                 :     200540 :   NEXT_PASS (pass_ipa_hsa, 1);
     158                 :     200540 :   NEXT_PASS (pass_ipa_fn_summary, 1);
     159                 :     200540 :   NEXT_PASS (pass_ipa_inline, 1);
     160                 :     200540 :   NEXT_PASS (pass_ipa_pure_const, 1);
     161                 :     200540 :   NEXT_PASS_WITH_ARG (pass_ipa_free_fn_summary, 2, false /* small_p */);
     162                 :     200540 :   NEXT_PASS (pass_ipa_reference, 1);
     163                 :            :   /* This pass needs to be scheduled after any IP code duplication.   */
     164                 :     200540 :   NEXT_PASS (pass_ipa_single_use, 1);
     165                 :            :   /* Comdat privatization come last, as direct references to comdat local
     166                 :            :      symbols are not allowed outside of the comdat group.  Privatizing early
     167                 :            :      would result in missed optimizations due to this restriction.  */
     168                 :     200540 :   NEXT_PASS (pass_ipa_comdats, 1);
     169                 :     200540 :   TERMINATE_PASS_LIST (all_regular_ipa_passes)
     170                 :            : 
     171                 :            :   /* Simple IPA passes executed after the regular passes.  In WHOPR mode the
     172                 :            :      passes are executed after partitioning and thus see just parts of the
     173                 :            :      compiled unit.  */
     174                 :     200540 :   INSERT_PASSES_AFTER (all_late_ipa_passes)
     175                 :     200540 :   NEXT_PASS (pass_materialize_all_clones, 1);
     176                 :     200540 :   NEXT_PASS (pass_ipa_pta, 2);
     177                 :     200540 :   NEXT_PASS (pass_omp_simd_clone, 1);
     178                 :     200540 :   TERMINATE_PASS_LIST (all_late_ipa_passes)
     179                 :            : 
     180                 :            :   /* These passes are run after IPA passes on every function that is being
     181                 :            :      output to the assembler file.  */
     182                 :     200540 :   INSERT_PASSES_AFTER (all_passes)
     183                 :     200540 :   NEXT_PASS (pass_fixup_cfg, 3);
     184                 :     200540 :   NEXT_PASS (pass_lower_eh_dispatch, 1);
     185                 :     200540 :   NEXT_PASS (pass_oacc_device_lower, 1);
     186                 :     200540 :   NEXT_PASS (pass_omp_device_lower, 1);
     187                 :     200540 :   NEXT_PASS (pass_omp_target_link, 1);
     188                 :     200540 :   NEXT_PASS (pass_all_optimizations, 1);
     189                 :     200540 :   PUSH_INSERT_PASSES_WITHIN (pass_all_optimizations)
     190                 :     200540 :       NEXT_PASS (pass_remove_cgraph_callee_edges, 2);
     191                 :            :       /* Initial scalar cleanups before alias computation.
     192                 :            :          They ensure memory accesses are not indirect wherever possible.  */
     193                 :     200540 :       NEXT_PASS_WITH_ARG (pass_strip_predict_hints, 2, false /* early_p */);
     194                 :     200540 :       NEXT_PASS_WITH_ARG (pass_ccp, 2, true /* nonzero_p */);
     195                 :     200540 :       NEXT_PASS (pass_post_ipa_warn, 1);
     196                 :            :       /* After CCP we rewrite no longer addressed locals into SSA
     197                 :            :          form if possible.  */
     198                 :     200540 :       NEXT_PASS (pass_complete_unrolli, 1);
     199                 :     200540 :       NEXT_PASS (pass_backprop, 1);
     200                 :     200540 :       NEXT_PASS (pass_phiprop, 1);
     201                 :     200540 :       NEXT_PASS (pass_forwprop, 2);
     202                 :     200540 :       NEXT_PASS_WITH_ARG (pass_object_sizes, 2, false /* insert_min_max_p */);
     203                 :            :       /* pass_build_alias is a dummy pass that ensures that we
     204                 :            :          execute TODO_rebuild_alias at this point.  */
     205                 :     200540 :       NEXT_PASS (pass_build_alias, 1);
     206                 :     200540 :       NEXT_PASS (pass_return_slot, 1);
     207                 :     200540 :       NEXT_PASS_WITH_ARG (pass_fre, 3, true /* may_iterate */);
     208                 :     200540 :       NEXT_PASS (pass_merge_phi, 2);
     209                 :     200540 :       NEXT_PASS (pass_thread_jumps, 1);
     210                 :     200540 :       NEXT_PASS_WITH_ARG (pass_vrp, 1, true /* warn_array_bounds_p */);
     211                 :     200540 :       NEXT_PASS (pass_dce, 2);
     212                 :     200540 :       NEXT_PASS (pass_stdarg, 1);
     213                 :     200540 :       NEXT_PASS (pass_call_cdce, 1);
     214                 :     200540 :       NEXT_PASS (pass_cselim, 1);
     215                 :     200540 :       NEXT_PASS (pass_copy_prop, 1);
     216                 :     200540 :       NEXT_PASS (pass_tree_ifcombine, 1);
     217                 :     200540 :       NEXT_PASS (pass_merge_phi, 3);
     218                 :     200540 :       NEXT_PASS_WITH_ARG (pass_phiopt, 2, false /* early_p */);
     219                 :     200540 :       NEXT_PASS (pass_tail_recursion, 2);
     220                 :     200540 :       NEXT_PASS (pass_ch, 2);
     221                 :     200540 :       NEXT_PASS (pass_lower_complex, 1);
     222                 :     200540 :       NEXT_PASS (pass_sra, 1);
     223                 :            :       /* The dom pass will also resolve all __builtin_constant_p calls
     224                 :            :          that are still there to 0.  This has to be done after some
     225                 :            :          propagations have already run, but before some more dead code
     226                 :            :          is removed, and this place fits nicely.  Remember this when
     227                 :            :          trying to move or duplicate pass_dominator somewhere earlier.  */
     228                 :     200540 :       NEXT_PASS (pass_thread_jumps, 2);
     229                 :     200540 :       NEXT_PASS_WITH_ARG (pass_dominator, 2, true /* may_peel_loop_headers_p */);
     230                 :            :       /* Threading can leave many const/copy propagations in the IL.
     231                 :            :          Clean them up.  Failure to do so well can lead to false
     232                 :            :          positives from warnings for erroneous code.  */
     233                 :     200540 :       NEXT_PASS (pass_copy_prop, 2);
     234                 :            :       /* Identify paths that should never be executed in a conforming
     235                 :            :          program and isolate those paths.  */
     236                 :     200540 :       NEXT_PASS (pass_isolate_erroneous_paths, 1);
     237                 :     200540 :       NEXT_PASS (pass_dse, 2);
     238                 :     200540 :       NEXT_PASS_WITH_ARG (pass_reassoc, 1, true /* insert_powi_p */);
     239                 :     200540 :       NEXT_PASS (pass_dce, 3);
     240                 :     200540 :       NEXT_PASS (pass_forwprop, 3);
     241                 :     200540 :       NEXT_PASS_WITH_ARG (pass_phiopt, 3, false /* early_p */);
     242                 :     200540 :       NEXT_PASS_WITH_ARG (pass_ccp, 3, true /* nonzero_p */);
     243                 :            :       /* After CCP we rewrite no longer addressed locals into SSA
     244                 :            :          form if possible.  */
     245                 :     200540 :       NEXT_PASS (pass_cse_sincos, 1);
     246                 :     200540 :       NEXT_PASS (pass_optimize_bswap, 1);
     247                 :     200540 :       NEXT_PASS (pass_laddress, 1);
     248                 :     200540 :       NEXT_PASS (pass_lim, 2);
     249                 :     200540 :       NEXT_PASS_WITH_ARG (pass_walloca, 2, false);
     250                 :     200540 :       NEXT_PASS (pass_pre, 1);
     251                 :     200540 :       NEXT_PASS (pass_sink_code, 1);
     252                 :     200540 :       NEXT_PASS (pass_sancov, 1);
     253                 :     200540 :       NEXT_PASS (pass_asan, 1);
     254                 :     200540 :       NEXT_PASS (pass_tsan, 1);
     255                 :     200540 :       NEXT_PASS (pass_dce, 4);
     256                 :            :       /* Pass group that runs when 1) enabled, 2) there are loops
     257                 :            :          in the function.  Make sure to run pass_fix_loops before
     258                 :            :          to discover/remove loops before running the gate function
     259                 :            :          of pass_tree_loop.  */
     260                 :     200540 :       NEXT_PASS (pass_fix_loops, 1);
     261                 :     200540 :       NEXT_PASS (pass_tree_loop, 1);
     262                 :     200540 :       PUSH_INSERT_PASSES_WITHIN (pass_tree_loop)
     263                 :            :           /* Before loop_init we rewrite no longer addressed locals into SSA
     264                 :            :              form if possible.  */
     265                 :     200540 :           NEXT_PASS (pass_tree_loop_init, 1);
     266                 :     200540 :           NEXT_PASS (pass_tree_unswitch, 1);
     267                 :     200540 :           NEXT_PASS (pass_scev_cprop, 1);
     268                 :     200540 :           NEXT_PASS (pass_loop_split, 1);
     269                 :     200540 :           NEXT_PASS (pass_loop_versioning, 1);
     270                 :     200540 :           NEXT_PASS (pass_loop_jam, 1);
     271                 :            :           /* All unswitching, final value replacement and splitting can expose
     272                 :            :              empty loops.  Remove them now.  */
     273                 :     200540 :           NEXT_PASS (pass_cd_dce, 2);
     274                 :     200540 :           NEXT_PASS (pass_iv_canon, 1);
     275                 :     200540 :           NEXT_PASS (pass_loop_distribution, 1);
     276                 :     200540 :           NEXT_PASS (pass_linterchange, 1);
     277                 :     200540 :           NEXT_PASS (pass_copy_prop, 3);
     278                 :     200540 :           NEXT_PASS (pass_graphite, 1);
     279                 :     200540 :           PUSH_INSERT_PASSES_WITHIN (pass_graphite)
     280                 :     200540 :               NEXT_PASS (pass_graphite_transforms, 1);
     281                 :     200540 :               NEXT_PASS (pass_lim, 3);
     282                 :     200540 :               NEXT_PASS (pass_copy_prop, 4);
     283                 :     200540 :               NEXT_PASS (pass_dce, 5);
     284                 :            :           POP_INSERT_PASSES ()
     285                 :     200540 :           NEXT_PASS_WITH_ARG (pass_parallelize_loops, 2, false /* oacc_kernels_p */);
     286                 :     200540 :           NEXT_PASS (pass_expand_omp_ssa, 2);
     287                 :     200540 :           NEXT_PASS (pass_ch_vect, 1);
     288                 :     200540 :           NEXT_PASS (pass_if_conversion, 1);
     289                 :            :           /* pass_vectorize must immediately follow pass_if_conversion.
     290                 :            :              Please do not add any other passes in between.  */
     291                 :     200540 :           NEXT_PASS (pass_vectorize, 1);
     292                 :     200540 :           PUSH_INSERT_PASSES_WITHIN (pass_vectorize)
     293                 :     200540 :               NEXT_PASS (pass_dce, 6);
     294                 :            :           POP_INSERT_PASSES ()
     295                 :     200540 :           NEXT_PASS (pass_predcom, 1);
     296                 :     200540 :           NEXT_PASS (pass_complete_unroll, 1);
     297                 :     200540 :           NEXT_PASS (pass_slp_vectorize, 1);
     298                 :     200540 :           NEXT_PASS (pass_loop_prefetch, 1);
     299                 :            :           /* Run IVOPTs after the last pass that uses data-reference analysis
     300                 :            :              as that doesn't handle TARGET_MEM_REFs.  */
     301                 :     200540 :           NEXT_PASS (pass_iv_optimize, 1);
     302                 :     200540 :           NEXT_PASS (pass_lim, 4);
     303                 :     200540 :           NEXT_PASS (pass_tree_loop_done, 1);
     304                 :            :       POP_INSERT_PASSES ()
     305                 :            :       /* Pass group that runs when pass_tree_loop is disabled or there
     306                 :            :          are no loops in the function.  */
     307                 :     200540 :       NEXT_PASS (pass_tree_no_loop, 1);
     308                 :     200540 :       PUSH_INSERT_PASSES_WITHIN (pass_tree_no_loop)
     309                 :     200540 :           NEXT_PASS (pass_slp_vectorize, 2);
     310                 :            :       POP_INSERT_PASSES ()
     311                 :     200540 :       NEXT_PASS (pass_simduid_cleanup, 1);
     312                 :     200540 :       NEXT_PASS (pass_lower_vector_ssa, 1);
     313                 :     200540 :       NEXT_PASS (pass_lower_switch, 1);
     314                 :     200540 :       NEXT_PASS (pass_cse_reciprocals, 1);
     315                 :     200540 :       NEXT_PASS_WITH_ARG (pass_reassoc, 2, false /* insert_powi_p */);
     316                 :     200540 :       NEXT_PASS (pass_strength_reduction, 1);
     317                 :     200540 :       NEXT_PASS (pass_split_paths, 1);
     318                 :     200540 :       NEXT_PASS (pass_tracer, 1);
     319                 :     200540 :       NEXT_PASS_WITH_ARG (pass_fre, 4, false /* may_iterate */);
     320                 :            :       /* After late FRE we rewrite no longer addressed locals into SSA
     321                 :            :          form if possible.  */
     322                 :     200540 :       NEXT_PASS (pass_thread_jumps, 3);
     323                 :     200540 :       NEXT_PASS_WITH_ARG (pass_dominator, 3, false /* may_peel_loop_headers_p */);
     324                 :     200540 :       NEXT_PASS (pass_strlen, 1);
     325                 :     200540 :       NEXT_PASS (pass_thread_jumps, 4);
     326                 :     200540 :       NEXT_PASS_WITH_ARG (pass_vrp, 2, false /* warn_array_bounds_p */);
     327                 :            :       /* Threading can leave many const/copy propagations in the IL.
     328                 :            :          Clean them up.  */
     329                 :     200540 :       NEXT_PASS (pass_copy_prop, 5);
     330                 :     200540 :       NEXT_PASS (pass_warn_restrict, 1);
     331                 :     200540 :       NEXT_PASS (pass_dse, 3);
     332                 :     200540 :       NEXT_PASS (pass_cd_dce, 3);
     333                 :     200540 :       NEXT_PASS (pass_forwprop, 4);
     334                 :     200540 :       NEXT_PASS_WITH_ARG (pass_phiopt, 4, false /* early_p */);
     335                 :     200540 :       NEXT_PASS (pass_fold_builtins, 1);
     336                 :     200540 :       NEXT_PASS (pass_optimize_widening_mul, 1);
     337                 :     200540 :       NEXT_PASS (pass_store_merging, 1);
     338                 :     200540 :       NEXT_PASS (pass_tail_calls, 1);
     339                 :            :       /* If DCE is not run before checking for uninitialized uses,
     340                 :            :          we may get false warnings (e.g., testsuite/gcc.dg/uninit-5.c).
     341                 :            :          However, this also causes us to misdiagnose cases that should be
     342                 :            :          real warnings (e.g., testsuite/gcc.dg/pr18501.c).  */
     343                 :     200540 :       NEXT_PASS (pass_dce, 7);
     344                 :            :       /* Split critical edges before late uninit warning to reduce the
     345                 :            :          number of false positives from it.  */
     346                 :     200540 :       NEXT_PASS (pass_split_crit_edges, 1);
     347                 :     200540 :       NEXT_PASS (pass_late_warn_uninitialized, 1);
     348                 :     200540 :       NEXT_PASS (pass_uncprop, 1);
     349                 :     200540 :       NEXT_PASS (pass_local_pure_const, 2);
     350                 :            :   POP_INSERT_PASSES ()
     351                 :     200540 :   NEXT_PASS (pass_all_optimizations_g, 1);
     352                 :     200540 :   PUSH_INSERT_PASSES_WITHIN (pass_all_optimizations_g)
     353                 :     200540 :       NEXT_PASS (pass_remove_cgraph_callee_edges, 3);
     354                 :     200540 :       NEXT_PASS_WITH_ARG (pass_strip_predict_hints, 3, false /* early_p */);
     355                 :            :       /* Lower remaining pieces of GIMPLE.  */
     356                 :     200540 :       NEXT_PASS (pass_lower_complex, 2);
     357                 :     200540 :       NEXT_PASS (pass_lower_vector_ssa, 2);
     358                 :     200540 :       NEXT_PASS (pass_lower_switch, 2);
     359                 :            :       /* Perform simple scalar cleanup which is constant/copy propagation.  */
     360                 :     200540 :       NEXT_PASS_WITH_ARG (pass_ccp, 4, true /* nonzero_p */);
     361                 :     200540 :       NEXT_PASS (pass_post_ipa_warn, 2);
     362                 :     200540 :       NEXT_PASS (pass_object_sizes, 3);
     363                 :            :       /* Fold remaining builtins.  */
     364                 :     200540 :       NEXT_PASS (pass_fold_builtins, 2);
     365                 :     200540 :       NEXT_PASS (pass_strlen, 2);
     366                 :            :       /* Copy propagation also copy-propagates constants, this is necessary
     367                 :            :          to forward object-size and builtin folding results properly.  */
     368                 :     200540 :       NEXT_PASS (pass_copy_prop, 6);
     369                 :     200540 :       NEXT_PASS (pass_dce, 8);
     370                 :     200540 :       NEXT_PASS (pass_sancov, 2);
     371                 :     200540 :       NEXT_PASS (pass_asan, 2);
     372                 :     200540 :       NEXT_PASS (pass_tsan, 2);
     373                 :            :       /* ???  We do want some kind of loop invariant motion, but we possibly
     374                 :            :          need to adjust LIM to be more friendly towards preserving accurate
     375                 :            :          debug information here.  */
     376                 :            :       /* Split critical edges before late uninit warning to reduce the
     377                 :            :          number of false positives from it.  */
     378                 :     200540 :       NEXT_PASS (pass_split_crit_edges, 2);
     379                 :     200540 :       NEXT_PASS (pass_late_warn_uninitialized, 2);
     380                 :     200540 :       NEXT_PASS (pass_uncprop, 2);
     381                 :     200540 :       NEXT_PASS (pass_local_pure_const, 3);
     382                 :            :   POP_INSERT_PASSES ()
     383                 :     200540 :   NEXT_PASS (pass_tm_init, 1);
     384                 :     200540 :   PUSH_INSERT_PASSES_WITHIN (pass_tm_init)
     385                 :     200540 :       NEXT_PASS (pass_tm_mark, 1);
     386                 :     200540 :       NEXT_PASS (pass_tm_memopt, 1);
     387                 :     200540 :       NEXT_PASS (pass_tm_edges, 1);
     388                 :            :   POP_INSERT_PASSES ()
     389                 :     200540 :   NEXT_PASS (pass_simduid_cleanup, 2);
     390                 :     200540 :   NEXT_PASS (pass_vtable_verify, 1);
     391                 :     200540 :   NEXT_PASS (pass_lower_vaarg, 1);
     392                 :     200540 :   NEXT_PASS (pass_lower_vector, 1);
     393                 :     200540 :   NEXT_PASS (pass_lower_complex_O0, 1);
     394                 :     200540 :   NEXT_PASS (pass_sancov_O0, 1);
     395                 :     200540 :   NEXT_PASS (pass_lower_switch_O0, 1);
     396                 :     200540 :   NEXT_PASS (pass_asan_O0, 1);
     397                 :     200540 :   NEXT_PASS (pass_tsan_O0, 1);
     398                 :     200540 :   NEXT_PASS (pass_sanopt, 1);
     399                 :     200540 :   NEXT_PASS (pass_cleanup_eh, 2);
     400                 :     200540 :   NEXT_PASS (pass_lower_resx, 1);
     401                 :     200540 :   NEXT_PASS (pass_nrv, 1);
     402                 :     200540 :   NEXT_PASS (pass_cleanup_cfg_post_optimizing, 1);
     403                 :     200540 :   NEXT_PASS (pass_warn_function_noreturn, 1);
     404                 :     200540 :   NEXT_PASS (pass_gen_hsail, 1);
     405                 :            : 
     406                 :     200540 :   NEXT_PASS (pass_expand, 1);
     407                 :            : 
     408                 :     200540 :   NEXT_PASS (pass_rest_of_compilation, 1);
     409                 :     200540 :   PUSH_INSERT_PASSES_WITHIN (pass_rest_of_compilation)
     410                 :     200540 :       NEXT_PASS (pass_instantiate_virtual_regs, 1);
     411                 :     200540 :       NEXT_PASS (pass_into_cfg_layout_mode, 1);
     412                 :     200540 :       NEXT_PASS (pass_jump, 1);
     413                 :     200540 :       NEXT_PASS (pass_lower_subreg, 1);
     414                 :     200540 :       NEXT_PASS (pass_df_initialize_opt, 1);
     415                 :     200540 :       NEXT_PASS (pass_cse, 1);
     416                 :     200540 :       NEXT_PASS (pass_rtl_fwprop, 1);
     417                 :     200540 :       NEXT_PASS (pass_rtl_cprop, 1);
     418                 :     200540 :       NEXT_PASS (pass_rtl_pre, 1);
     419                 :     200540 :       NEXT_PASS (pass_rtl_hoist, 1);
     420                 :     200540 :       NEXT_PASS (pass_rtl_cprop, 2);
     421                 :     200540 :       NEXT_PASS (pass_rtl_store_motion, 1);
     422                 :     200540 :       NEXT_PASS (pass_cse_after_global_opts, 1);
     423                 :     200540 :       NEXT_PASS (pass_rtl_ifcvt, 1);
     424                 :     200540 :       NEXT_PASS (pass_reginfo_init, 1);
     425                 :            :       /* Perform loop optimizations.  It might be better to do them a bit
     426                 :            :          sooner, but we want the profile feedback to work more
     427                 :            :          efficiently.  */
     428                 :     200540 :       NEXT_PASS (pass_loop2, 1);
     429                 :     200540 :       PUSH_INSERT_PASSES_WITHIN (pass_loop2)
     430                 :     200540 :           NEXT_PASS (pass_rtl_loop_init, 1);
     431                 :     200540 :           NEXT_PASS (pass_rtl_move_loop_invariants, 1);
     432                 :     200540 :           NEXT_PASS (pass_rtl_unroll_loops, 1);
     433                 :     200540 :           NEXT_PASS (pass_rtl_doloop, 1);
     434                 :     200540 :           NEXT_PASS (pass_rtl_loop_done, 1);
     435                 :            :       POP_INSERT_PASSES ()
     436                 :     200540 :       NEXT_PASS (pass_lower_subreg2, 1);
     437                 :     200540 :       NEXT_PASS (pass_web, 1);
     438                 :     200540 :       NEXT_PASS (pass_rtl_cprop, 3);
     439                 :     200540 :   NEXT_PASS_WITH_ARG (pass_stv, 1, true /* timode_p */);
     440                 :     200540 :       NEXT_PASS (pass_cse2, 1);
     441                 :     200540 :       NEXT_PASS (pass_rtl_dse1, 1);
     442                 :     200540 :       NEXT_PASS (pass_rtl_fwprop_addr, 1);
     443                 :     200540 :       NEXT_PASS (pass_inc_dec, 1);
     444                 :     200540 :       NEXT_PASS (pass_initialize_regs, 1);
     445                 :     200540 :       NEXT_PASS (pass_ud_rtl_dce, 1);
     446                 :     200540 :       NEXT_PASS (pass_combine, 1);
     447                 :     200540 :   NEXT_PASS (pass_remove_partial_avx_dependency, 1);
     448                 :     200540 :   NEXT_PASS_WITH_ARG (pass_stv, 2, false /* timode_p */);
     449                 :     200540 :       NEXT_PASS (pass_if_after_combine, 1);
     450                 :     200540 :       NEXT_PASS (pass_jump_after_combine, 1);
     451                 :     200540 :       NEXT_PASS (pass_partition_blocks, 1);
     452                 :     200540 :       NEXT_PASS (pass_outof_cfg_layout_mode, 1);
     453                 :     200540 :       NEXT_PASS (pass_split_all_insns, 1);
     454                 :     200540 :       NEXT_PASS (pass_lower_subreg3, 1);
     455                 :     200540 :       NEXT_PASS (pass_df_initialize_no_opt, 1);
     456                 :     200540 :       NEXT_PASS (pass_stack_ptr_mod, 1);
     457                 :     200540 :       NEXT_PASS (pass_mode_switching, 1);
     458                 :     200540 :       NEXT_PASS (pass_match_asm_constraints, 1);
     459                 :     200540 :       NEXT_PASS (pass_sms, 1);
     460                 :     200540 :       NEXT_PASS (pass_live_range_shrinkage, 1);
     461                 :     200540 :       NEXT_PASS (pass_sched, 1);
     462                 :     200540 :       NEXT_PASS (pass_early_remat, 1);
     463                 :     200540 :       NEXT_PASS (pass_ira, 1);
     464                 :     200540 :       NEXT_PASS (pass_reload, 1);
     465                 :     200540 :   NEXT_PASS (pass_insert_vzeroupper, 1);
     466                 :     200540 :       NEXT_PASS (pass_postreload, 1);
     467                 :     200540 :       PUSH_INSERT_PASSES_WITHIN (pass_postreload)
     468                 :     200540 :           NEXT_PASS (pass_postreload_cse, 1);
     469                 :     200540 :           NEXT_PASS (pass_gcse2, 1);
     470                 :     200540 :           NEXT_PASS (pass_split_after_reload, 1);
     471                 :     200540 :           NEXT_PASS (pass_ree, 1);
     472                 :     200540 :           NEXT_PASS (pass_compare_elim_after_reload, 1);
     473                 :     200540 :           NEXT_PASS (pass_thread_prologue_and_epilogue, 1);
     474                 :     200540 :           NEXT_PASS (pass_rtl_dse2, 1);
     475                 :     200540 :           NEXT_PASS (pass_stack_adjustments, 1);
     476                 :     200540 :           NEXT_PASS (pass_jump2, 1);
     477                 :     200540 :           NEXT_PASS (pass_duplicate_computed_gotos, 1);
     478                 :     200540 :           NEXT_PASS (pass_sched_fusion, 1);
     479                 :     200540 :           NEXT_PASS (pass_peephole2, 1);
     480                 :     200540 :           NEXT_PASS (pass_if_after_reload, 1);
     481                 :     200540 :           NEXT_PASS (pass_regrename, 1);
     482                 :     200540 :           NEXT_PASS (pass_cprop_hardreg, 1);
     483                 :     200540 :           NEXT_PASS (pass_fast_rtl_dce, 1);
     484                 :     200540 :           NEXT_PASS (pass_reorder_blocks, 1);
     485                 :     200540 :           NEXT_PASS (pass_leaf_regs, 1);
     486                 :     200540 :           NEXT_PASS (pass_split_before_sched2, 1);
     487                 :     200540 :           NEXT_PASS (pass_sched2, 1);
     488                 :     200540 :           NEXT_PASS (pass_stack_regs, 1);
     489                 :     200540 :           PUSH_INSERT_PASSES_WITHIN (pass_stack_regs)
     490                 :     200540 :               NEXT_PASS (pass_split_before_regstack, 1);
     491                 :     200540 :               NEXT_PASS (pass_stack_regs_run, 1);
     492                 :            :           POP_INSERT_PASSES ()
     493                 :            :       POP_INSERT_PASSES ()
     494                 :     200540 :       NEXT_PASS (pass_late_compilation, 1);
     495                 :     200540 :       PUSH_INSERT_PASSES_WITHIN (pass_late_compilation)
     496                 :     200540 :           NEXT_PASS (pass_compute_alignments, 1);
     497                 :     200540 :           NEXT_PASS (pass_variable_tracking, 1);
     498                 :     200540 :           NEXT_PASS (pass_free_cfg, 1);
     499                 :     200540 :           NEXT_PASS (pass_machine_reorg, 1);
     500                 :     200540 :           NEXT_PASS (pass_cleanup_barriers, 1);
     501                 :     200540 :           NEXT_PASS (pass_delay_slots, 1);
     502                 :     200540 :           NEXT_PASS (pass_split_for_shorten_branches, 1);
     503                 :     200540 :           NEXT_PASS (pass_convert_to_eh_region_ranges, 1);
     504                 :     200540 :   NEXT_PASS (pass_insert_endbranch, 1);
     505                 :     200540 :           NEXT_PASS (pass_shorten_branches, 1);
     506                 :     200540 :           NEXT_PASS (pass_set_nothrow_function_flags, 1);
     507                 :     200540 :           NEXT_PASS (pass_dwarf2_frame, 1);
     508                 :     200540 :           NEXT_PASS (pass_final, 1);
     509                 :            :       POP_INSERT_PASSES ()
     510                 :     200540 :       NEXT_PASS (pass_df_finish, 1);
     511                 :            :   POP_INSERT_PASSES ()
     512                 :     401080 :   NEXT_PASS (pass_clean_state, 1);
     513                 :     200540 :   TERMINATE_PASS_LIST (all_passes)
     514                 :            : /* Description of target passes for IA-32 
     515                 :            :    Copyright (C) 2016-2020 Free Software Foundation, Inc.
     516                 :            : 
     517                 :            : This file is part of GCC.
     518                 :            : 
     519                 :            : GCC is free software; you can redistribute it and/or modify it under
     520                 :            : the terms of the GNU General Public License as published by the Free
     521                 :            : Software Foundation; either version 3, or (at your option) any later
     522                 :            : version.
     523                 :            : 
     524                 :            : GCC is distributed in the hope that it will be useful, but WITHOUT ANY
     525                 :            : WARRANTY; without even the implied warranty of MERCHANTABILITY or
     526                 :            : FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     527                 :            : for more details.
     528                 :            : 
     529                 :            : You should have received a copy of the GNU General Public License
     530                 :            : along with GCC; see the file COPYING3.  If not see
     531                 :            : <http://www.gnu.org/licenses/>.  */
     532                 :            : 
     533                 :            : /*
     534                 :            :    Macros that can be used in this file:
     535                 :            :  */
     536                 :            : 
     537                 :            :   /* Run the 64-bit STV pass before the CSE pass so that CONST0_RTX and
     538                 :            :      CONSTM1_RTX generated by the STV pass can be CSEed.  */
     539                 :            : 
     540                 :            : 

Generated by: LCOV version 1.0

LCOV profile is generated on x86_64 machine using following configure options: configure --disable-bootstrap --enable-coverage=opt --enable-languages=c,c++,fortran,go,jit,lto --enable-host-shared. GCC test suite is run with the built compiler.