Go to file
Caroline Tice 9fb3243411 Hot/cold partitioning update patch.
Hot/cold partitioning update patch.  The problems that this patch
attemptd to address/fix are:

- Fix places where adding in_unlikely_executed_text to the enum data
  type "in_section"  threw off switch case statements.
- Make it work correctly (by turning it off) for functions where user
  specifies "__attribute__ section"
- Make it work correctly (by turning it off) for linkonce sections
- Make it work correctly with -ffunction-sections flag
- Make it output correct cold section labels
- Undo some changes to original assembly code generation
- Turn off hot/cold partitioning in the presence of DWARF debugging (for
  the moment)
- Turn off hot/cold partitioning for architectures that do not support
  named sections
- Use variables rather than constants for cold section labels and names (to
  work correctly with -ffunction-sections, among other things)


2004-08-18  Caroline Tice  <ctice@apple.com>

        * Makefile.in (STAGEFEEDBACK_FLAGS_TO_PASS) Add
        "-freorder-blocks-and-partition" to the flags used in second
        stage of profiledbootstrap.
        * bb-reorder.c (push_to_next_round_p): Add new variable,
        next_round_is_last; set and use variable to make sure, when
        partitioning, that the last trace construction round consists
        of all (and only) cold basic blocks.
        (rotate_loop): Don't copy blocks that end in a section
        crossing jump.
        (copy_bb): Correctly initialize "partition" of duplicated bb.
        (add_unlikely_executed_notes): Add a comment.
        (find_rarely_executed_basic_blocks_and_crossing_edges): Modify
        to make sure, if function contains hot blocks, that the
        successors of ENTRY_BLOCK_PTR are hot; also, only look for
        crossing edges if the architecture supports named sections.
        (mark_bb_for_unlikely_executed_section): Modify to always
        insert the NOTE_INSN_UNLIKELY_EXECUTED_CODE immediately after
        the basic block note insn.
        (fix_crossing_unconditional_branches): Remove extra space.
        (fix_edges_for_rarely_executed_code): Modify to only do
        partitioning work if the architecture supports named sections.
        (reorder_basic_blocks): Modify to only add
        NOTE_INSN_UNLIKELY_EXECUTED_CODE notes if the architecture
        supports named sections.
        * c-common.c (handle_section_attribute): Initialize new global
        variable, user_defined_section_attribute, to true if user has
        specified one.
        * cfgcleanup.c (try_forward_edges): Modify to not attempt to
        forward edges that cross section boundaries.
        * cfglayout.c (fixup_reorder_chain): Modify to only fix up
        partitioning information if the architecture supports named
        sections.
        * cfgrtl.c (target.h): Add statement to include this.
        (rtl_split_block): Make sure newly created bb gets correct
        partition.
        (try_redirect_by_replacing_jump): Make sure redirection isn't
        attempting to cross section boundaries.
        (force_nonfallthru_and_redirect): Only do partition fix up if
        architecture supports named sections.
        (rtl_split_edge): Make sure newly created bb ends up in
        correct partition.
        (commit_one_edge_insertion): Remove code that incorrectly
        updated basic block partition; Make sure partition fix up only
        happens if architecture supports named sections and it's not
        already done.
        (rtl_verify_flow_info_1): Fix if-condition on test/error
        condition that fallthru edges are not allowed to cross section
        boundaries.
        * defaults.h (NORMAL_TEXT_SECTION_NAME): Remove this.
        * final.c (final_scan_insn): Remove redundant test from if-statement;
        change calls to text_section into calls to function_section; add code
        to only to partitioning fix up if architecture supports named
        sections.
        * ifcvt.c (find_if_case_1): Make sure newly created bb has correct
        partition.
        (if_convert): Add targetm.have_named_sections to test.
        * output.h (unlikely_section_label): Extern declaration for new global
        variable.
        (unlikely_text_section_name): Likewise.
        * opts.c (decode_options): If both partitioning and DWARF debugging
        are turned on, issue a warning that this doesn't work, and change
        partitiong to basic block reordering (without hot/cold partitions).
        * passes.c (rest_of_handle_final): Re-set new global variable,
        user_defined_section_attribute, to false.
        (rest_of_compilation): Change options for calling partitioning
        function: Don't call if the user defined the section attribute, and
        don't call if DECL_ONE_ONLY is true for the current function.
        * predict.c (choose_function_section): Return immediately if we
        are doing hot/cold partitioning (i.e. let the basic block partitioning
        determine where the function belongs).
        * reg-stack.c (emit_swap_insn): Add condition to step over
        NOTE_INSN_UNLIKELY_EXECUTED_CODE notes.
        * toplev.c (user_defined_section_attribute): New global variable.
        * toplev.h (user_defined_section_attribute): Extern declaration for new
        global variable.
        * varasm.c (unlikely_section_label): New global variable.
        (unlikely_text_section_name): New global variable.
        (unlikely_text_section): Add code to initialize unlikely_text_section_name
        if necessary; modify to use unlikely_text_section_name and
        unlikely_section_label; also to use named_section properly.
        (in_unlikely_text_section):  Modify to work correctly with named_section
        and to use unlikely_text_section_name.
        (named_section):  Add code to work properly with cold section.
        (function_section): Clean up if-statement.
        * config/darwin.c (darwin_asm_named_section): Return to original code,
        removing use of SECTION_FORMAT_STRING.
        * config/arm/pe.h (switch_to_section):  Add case for
        in_unlikely_executed_text to switch statement.
        * config/i386/cygming.h (switch_to_section): Likewise.
        * config/i386/darwin.h (NORMAL_TEXT_SECTION_NAME): Remove.
        (SECTION_FORMAT_STRING): Likewise.
        * config/mcore/mcore.h (switch_to_section): Likewise.
        * config/rs6000/darwin.h (NORMAL_TEXT_SECTION_NAME): Remove.

From-SVN: r86189
2004-08-18 09:22:08 -07:00
boehm-gc specific.c: Check GC_LINUX_THREADS before including private/specific.h. 2004-08-17 00:06:46 +01:00
config 2004-08-13 Nathanael Nerode <neroden@gcc.gnu.org> 2004-08-13 22:31:45 +00:00
contrib gcc_update: libjava/configure.ac -> configure.in. 2004-08-04 12:08:09 +00:00
fastjar re PR bootstrap/16164 (automake 1.8.5 upgrade changed fastjar into a read-write source directory) 2004-08-11 00:56:23 +00:00
gcc Hot/cold partitioning update patch. 2004-08-18 09:22:08 -07:00
include Split ChangeLog 2004-08-18 13:11:56 +09:30
INSTALL
intl Makefile.in (top_builddir): Define to . 2004-05-25 20:16:56 +00:00
libada * Makefile.in: Add .NOEXPORT. 2004-05-25 19:37:02 +00:00
libbanshee * engine/util.c (vfail): Remove unnecessary sync, fsync, and fflush. 2004-07-07 18:08:49 -07:00
libcpp configure.in (arm*-*-eabi*): New target. 2004-08-11 02:50:14 +00:00
libffi ffi.c (ffi_pref_cif_machdep): set cif->flags' to contain FFI_TYPE_UINT64' as return type for any 64-bit... 2004-08-15 04:05:18 +00:00
libgfortran re PR fortran/13278 (derived type namelist I/O support missing, causes ICE) 2004-08-18 01:20:06 +00:00
libiberty * lrealpath.c (lrealpath): Add _WIN32 support. 2004-06-29 11:37:20 +00:00
libjava re PR libgcj/17079 ([PATCH] Log messages whose logging level is equal to the threshold discarded by java.util.logging.Handler) 2004-08-18 16:51:47 +01:00
libmudflap mf-runtime.c: Conditionalize POSIX_SOURCE for Darwin. 2004-08-03 14:19:26 +00:00
libobjc sarray.h: Hoist include of assert.h near the top of file... 2004-08-13 22:50:09 +00:00
libstdc++-v3 Daily bump. 2004-08-18 00:16:20 +00:00
maintainer-scripts gcc_release (build_sources): Add comment header to generated MD5SUMS. 2004-08-14 16:47:52 +00:00
zlib configure.ac: New name of configure.in. 2004-06-15 14:47:55 +00:00
.cvsignore
ABOUT-NLS
ChangeLog Patch from Robert Millan for kfreebsd-gnu/knetbsd-gnu. 2004-08-17 15:06:46 -07:00
ChangeLog.tree-ssa Merge tree-ssa-20020619-branch into mainline. 2004-05-13 02:41:07 -04:00
compile compile: New file imported from automake. 2004-03-21 18:38:56 +00:00
config-ml.in config-ml.in: Pass FFLAGS and ADAFLAGS for multilibs, handle F77 like CC. 2004-05-30 23:54:22 +02:00
config.guess Index: ChangeLog 2004-02-20 16:15:55 +00:00
config.if
config.rpath
config.sub Index: ChangeLog 2004-02-20 16:15:55 +00:00
configure Patch from Robert Millan for kfreebsd-gnu/knetbsd-gnu. 2004-08-17 15:06:46 -07:00
configure.in Patch from Robert Millan for kfreebsd-gnu/knetbsd-gnu. 2004-08-17 15:06:46 -07:00
COPYING
COPYING.LIB
depcomp Merge tree-ssa-20020619-branch into mainline. 2004-05-13 02:41:07 -04:00
install-sh re PR bootstrap/11932 (Parallel bootstrap failure with sparc libiberty multilib) 2004-02-20 02:01:16 +00:00
libtool.m4 re PR bootstrap/15120 ([3.3 only] [libtool bug] hidden symbol `__sdivsi3_i4' is referenced by DSO) 2004-05-18 10:11:38 +00:00
ltcf-c.sh Patch from Robert Millan. 2004-04-26 23:14:30 -07:00
ltcf-cxx.sh Index: ChangeLog 2004-08-03 00:52:18 +00:00
ltcf-gcj.sh Patch from Robert Millan. 2004-04-26 23:14:30 -07:00
ltconfig Patch from Robert Millan. 2004-04-26 23:14:30 -07:00
ltmain.sh Partial merge from upstream: 2004-02-04 23:58:48 +00:00
MAINTAINERS * MAINTAINERS: Remove myself from write-after-approval. 2004-08-13 14:29:31 +00:00
Makefile.def Makefile.in: Regenerate. 2004-08-17 07:27:16 +00:00
Makefile.in Makefile.in: Regenerate. 2004-08-17 07:27:16 +00:00
Makefile.tpl Makefile.in: Regenerate. 2004-08-17 07:27:16 +00:00
missing install-sh: Update to newer upstream versions (associated with aclocal 1.7). 2003-07-20 09:40:28 +00:00
mkdep
mkinstalldirs re PR bootstrap/11932 (Parallel bootstrap failure with sparc libiberty multilib) 2004-02-20 02:01:16 +00:00
move-if-change
README
README.SCO * README.SCO: New file. 2003-08-03 14:51:42 +00:00
symlink-tree * config-ml.in, symlink-tree: Add license. 2003-08-14 16:44:23 -04:00
ylwrap

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the file COPYING
for copying permission.  The manuals, and some of the runtime
libraries, are under different terms; see the individual source files
for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs.html for how to report bugs usefully.