LCOV - code coverage report
Current view: top level - gcc - run-rtl-passes.cc (source / functions) Coverage Total Hit
Test: gcc.info Lines: 100.0 % 23 23
Test Date: 2026-02-28 14:20:25 Functions: 100.0 % 1 1
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /* run-rtl-passes.cc - Run RTL passes directly from frontend
       2              :    Copyright (C) 2016-2026 Free Software Foundation, Inc.
       3              : 
       4              : This file is part of GCC.
       5              : 
       6              : GCC is free software; you can redistribute it and/or modify it under
       7              : the terms of the GNU General Public License as published by the Free
       8              : Software Foundation; either version 3, or (at your option) any later
       9              : version.
      10              : 
      11              : GCC is distributed in the hope that it will be useful, but WITHOUT ANY
      12              : WARRANTY; without even the implied warranty of MERCHANTABILITY or
      13              : FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
      14              : for more details.
      15              : 
      16              : You should have received a copy of the GNU General Public License
      17              : along with GCC; see the file COPYING3.  If not see
      18              : <http://www.gnu.org/licenses/>.  */
      19              : 
      20              : #include "config.h"
      21              : #include "system.h"
      22              : #include "coretypes.h"
      23              : #include "target.h"
      24              : #include "rtl.h"
      25              : #include "function.h"
      26              : #include "basic-block.h"
      27              : #include "tree-pass.h"
      28              : #include "context.h"
      29              : #include "pass_manager.h"
      30              : #include "bitmap.h"
      31              : #include "df.h"
      32              : #include "regs.h"
      33              : #include "output.h"
      34              : #include "debug.h" /* for debug_hooks.  */
      35              : #include "insn-attr-common.h" /* for INSN_SCHEDULING.  */
      36              : #include "insn-attr.h" /* for init_sched_attrs.  */
      37              : #include "run-rtl-passes.h"
      38              : 
      39              : /* Run the backend passes, starting at the given pass.
      40              :    Take ownership of INITIAL_PASS_NAME.  */
      41              : 
      42              : void
      43           23 : run_rtl_passes (char *initial_pass_name)
      44              : {
      45           23 :   cfun->pass_startwith = initial_pass_name;
      46           23 :   max_regno = max_reg_num ();
      47              : 
      48              :   /* cgraphunit.cc normally handles this.  */
      49           23 :   switch_to_section (text_section);
      50           23 :   (*debug_hooks->assembly_start) ();
      51              : 
      52           23 :   if (initial_pass_name)
      53              :     {
      54              :       /* Pass "expand" normally sets this up.  */
      55              : #ifdef INSN_SCHEDULING
      56           21 :       init_sched_attrs ();
      57              : #endif
      58           21 :       bitmap_obstack_initialize (NULL);
      59           21 :       bitmap_obstack_initialize (&reg_obstack);
      60           21 :       opt_pass *rest_of_compilation
      61           21 :         = g->get_passes ()->get_rest_of_compilation ();
      62           21 :       gcc_assert (rest_of_compilation);
      63           21 :       execute_pass_list (cfun, rest_of_compilation);
      64              : 
      65           21 :       opt_pass *clean_slate = g->get_passes ()->get_clean_slate ();
      66           21 :       gcc_assert (clean_slate);
      67           21 :       execute_pass_list (cfun, clean_slate);
      68           21 :       bitmap_obstack_release (&reg_obstack);
      69              :     }
      70              :   else
      71              :     {
      72            2 :       opt_pass *clean_slate = g->get_passes ()->get_clean_slate ();
      73            2 :       gcc_assert (clean_slate);
      74            2 :       execute_pass_list (cfun, clean_slate);
      75              :     }
      76              : 
      77           23 :   cfun->curr_properties |= PROP_rtl;
      78           23 :   free (initial_pass_name);
      79           23 : }
        

Generated by: LCOV version 2.4-beta

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,rust,m2 --enable-host-shared. GCC test suite is run with the built compiler.