* config/ia64/hpux.h (MEMBER_TYPE_FORCES_BLK): Look only at
mode argument.
* config/ia64/ia64.c (ia64_hpux_file_end): Check
TREE_SYMBOL_REFERENCED on DECL_ASSEMBLER_NAME, not DECL_NAME.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@80571
138bc75d-0d04-0410-961f-
82ee72b054a4
+2004-04-09 Zack Weinberg <zack@codesourcery.com>
+
+ PR 14887
+ * config/ia64/hpux.h (MEMBER_TYPE_FORCES_BLK): Look only at
+ mode argument.
+ * config/ia64/ia64.c (ia64_hpux_file_end): Check
+ TREE_SYMBOL_REFERENCED on DECL_ASSEMBLER_NAME, not DECL_NAME.
+
2004-04-09 Roger Sayle <roger@eyesopen.com>
* simplify-rtx.c (mode_signbit_p): New function to check whether
2004-04-09 Roger Sayle <roger@eyesopen.com>
* simplify-rtx.c (mode_signbit_p): New function to check whether
2004-04-09 Caroline Tice <ctice@apple.com>
2004-04-09 Caroline Tice <ctice@apple.com>
- * basic-block.h (struct edge_def): Add new field, crossing_edge.
+ * basic-block.h (struct edge_def): Add new field, crossing_edge.
(struct basic_block_def): Add new field, partition.
(UNPARTITIONED, HOT_PARTITION, COLD_PARTITION): New constant macro
definitions.
(struct basic_block_def): Add new field, partition.
(UNPARTITIONED, HOT_PARTITION, COLD_PARTITION): New constant macro
definitions.
- (partition_hot_cold_basic_blocks): Add extern function
+ (partition_hot_cold_basic_blocks): Add extern function
- * bb-reorder.c (function.h, obstack.h, expr.h, regs.h): Add four new
+ * bb-reorder.c (function.h, obstack.h, expr.h, regs.h): Add four new
include statements.
(N_ROUNDS): Increase the maximum number of rounds by 1.
(branch_threshold): Add array value for new round.
include statements.
(N_ROUNDS): Increase the maximum number of rounds by 1.
(branch_threshold): Add array value for new round.
basic blocks.
(find_traces_1_round): Add a parameter. Modify to push all cold blocks,
and only cold blocks, into the last (extra) round of collecting traces.
basic blocks.
(find_traces_1_round): Add a parameter. Modify to push all cold blocks,
and only cold blocks, into the last (extra) round of collecting traces.
- (better_edge_p): Add a parameter. Modify to favor non-crossing edges
+ (better_edge_p): Add a parameter. Modify to favor non-crossing edges
- (bb_to_key): Add code to correctly identify cold blocks when
+ (bb_to_key): Add code to correctly identify cold blocks when
doing partitioning.
(connect_traces): Modify to connect all the non-cold traces first, then
go back and connect up all the cold traces.
(reorder_basic_blocks): Add call to add_unlikely_executed_notes.
* cfg.c (entry_exit_blocks): Add initialization for partition field in
entry and exit blocks.
doing partitioning.
(connect_traces): Modify to connect all the non-cold traces first, then
go back and connect up all the cold traces.
(reorder_basic_blocks): Add call to add_unlikely_executed_notes.
* cfg.c (entry_exit_blocks): Add initialization for partition field in
entry and exit blocks.
- * cfgbuild.c (make_edges): Update current_function_has_computed_jump
+ * cfgbuild.c (make_edges): Update current_function_has_computed_jump
if we are doing hot/cold partitioning.
* cfgcleanup.c (cfglayout.h): Add new include statement.
if we are doing hot/cold partitioning.
* cfgcleanup.c (cfglayout.h): Add new include statement.
- (try_simplify_condjump): Modify to not attempt on blocks with jumps
+ (try_simplify_condjump): Modify to not attempt on blocks with jumps
that cross section boundaries.
(try_forward_edges): Likewise.
(merge_blocks_move_predecessor_nojumps): Likewise.
that cross section boundaries.
(try_forward_edges): Likewise.
(merge_blocks_move_predecessor_nojumps): Likewise.
(try_optimize_cfg): Likewise.
* cfghooks.c (tidy_fallthru_edges): Modify to not remove indirect
jumps that cross section boundaries.
(try_optimize_cfg): Likewise.
* cfghooks.c (tidy_fallthru_edges): Modify to not remove indirect
jumps that cross section boundaries.
- * cfglayout.c (flags.h): Add new include statement.
+ * cfglayout.c (flags.h): Add new include statement.
(update_unlikely_executed_notes): New function.
(update_unlikely_executed_notes): New function.
- (fixup_reorder_chain): Add code so when a new jumping basic block is
- added, it's UNLIKELY_EXECUTED_CODE and REG_CROSSING_JUMP notes are
+ (fixup_reorder_chain): Add code so when a new jumping basic block is
+ added, it's UNLIKELY_EXECUTED_CODE and REG_CROSSING_JUMP notes are
updated appropriately.
(duplicate_insn_chain): Add code to duplicate the new NOTE insn
introduced by this optimization.
updated appropriately.
(duplicate_insn_chain): Add code to duplicate the new NOTE insn
introduced by this optimization.
- * cfglayout.h (scan_ahead_for_unlikely_executed_note): Add new
- extern function declaration.
+ * cfglayout.h (scan_ahead_for_unlikely_executed_note): Add new
+ extern function declaration.
* cfgrtl.c (can_delete_note_p): Add NOTE_INSN_UNLIKELY_EXECUTED_CODE to
list of notes that can be deleted.
(create_basic_block_structure): Add initialization for partition field.
* cfgrtl.c (can_delete_note_p): Add NOTE_INSN_UNLIKELY_EXECUTED_CODE to
list of notes that can be deleted.
(create_basic_block_structure): Add initialization for partition field.
(try_redirect_by_replacing_jump): Modify to not attempt on jumps that
cross section boundaries.
(commit_one_edge_insertion): Add code so newly created basic block
(try_redirect_by_replacing_jump): Modify to not attempt on jumps that
cross section boundaries.
(commit_one_edge_insertion): Add code so newly created basic block
- ends up in correct (hot or cold) section. Modify to disallow
+ ends up in correct (hot or cold) section. Modify to disallow
insertions before NOTE_INSN_UNLIKELY_EXECUTED_CODE notes.
(rtl_verify_flow_info_1): Add code to verify that no fall_thru edge
crosses section boundaries.
insertions before NOTE_INSN_UNLIKELY_EXECUTED_CODE notes.
(rtl_verify_flow_info_1): Add code to verify that no fall_thru edge
crosses section boundaries.
cross section boundaries.
(force_nonfallthru_and_redirect): Modify to make sure new basic block
ends up in correct section, with correct notes attached.
cross section boundaries.
(force_nonfallthru_and_redirect): Modify to make sure new basic block
ends up in correct section, with correct notes attached.
- * common.opt (freorder-blocks-and-partition): Add new flag for this
- optimization.
- * dbxout.c (dbx_function_end): Add code to make sure scope labels at
- the end of functions are written into the correct (hot or cold)
- section.
+ * common.opt (freorder-blocks-and-partition): Add new flag for this
+ optimization.
+ * dbxout.c (dbx_function_end): Add code to make sure scope labels at
+ the end of functions are written into the correct (hot or cold)
+ section.
(dbx_source_file): Add code so writing debug file information
doesn't incorrectly change sections.
(dbx_source_file): Add code so writing debug file information
doesn't incorrectly change sections.
- * defaults.h (NORMAL_TEXT_SECTION_NAME): New constant macro, for use
+ * defaults.h (NORMAL_TEXT_SECTION_NAME): New constant macro, for use
in partitioning hot/cold basic blocks into separate sections.
in partitioning hot/cold basic blocks into separate sections.
- (SECTION_FORMAT_STRING): New constant macro, for linux/i386 hot/cold
+ (SECTION_FORMAT_STRING): New constant macro, for linux/i386 hot/cold
section partitioning.
(HAS_LONG_COND_BRANCH): New constant macro, indicating whether or not
conditional branches can span all of memory.
(HAS_LONG_UNCOND_BRANCH): New constant macro, indicationg whether or not
unconditional branches can span all of memory.
section partitioning.
(HAS_LONG_COND_BRANCH): New constant macro, indicating whether or not
conditional branches can span all of memory.
(HAS_LONG_UNCOND_BRANCH): New constant macro, indicationg whether or not
unconditional branches can span all of memory.
- * final.c (scan_ahead_for_unlikely_executed_note): New function.
- (final_scan_insn): Add code to check for NOTE instruction indicating
- whether basic block belongs in hot or cold section, and to make sure
- the current basic block is being written to the appropriate section.
- Also added code to ensure that jump table basic blocks end up in the
- correct section.
- * flags.h (flag_reorder_blocks_and_partition): New flag.
+ * final.c (scan_ahead_for_unlikely_executed_note): New function.
+ (final_scan_insn): Add code to check for NOTE instruction indicating
+ whether basic block belongs in hot or cold section, and to make sure
+ the current basic block is being written to the appropriate section.
+ Also added code to ensure that jump table basic blocks end up in the
+ correct section.
+ * flags.h (flag_reorder_blocks_and_partition): New flag.
* ifcvt.c (find_if_case_1): Modify to not attempt if conversion if
one of the branches has a jump that crosses between sections.
(find_if_case_2): Likewise.
* ifcvt.c (find_if_case_1): Modify to not attempt if conversion if
one of the branches has a jump that crosses between sections.
(find_if_case_2): Likewise.
- (ifcvt): Modify to not attempt to mark loop exit edges after
+ (ifcvt): Modify to not attempt to mark loop exit edges after
hot/cold partitioning has occurred.
hot/cold partitioning has occurred.
- * opts.c (decode_options): Code to handle new flag,
- flag_reorder_blocks_and_partition; also to turn it off if
+ * opts.c (decode_options): Code to handle new flag,
+ flag_reorder_blocks_and_partition; also to turn it off if
- (common_handle_option): Code to handle new flag,
- flag_reorder_blocks_and_partition.
- * output.h (unlikely_text_section): New extern function declaration.
+ (common_handle_option): Code to handle new flag,
+ flag_reorder_blocks_and_partition.
+ * output.h (unlikely_text_section): New extern function declaration.
(in_unlikely_text_section): New extern function declaration.
(in_unlikely_text_section): New extern function declaration.
- * passes.c (rest_of_handle_stack_regs): Add
- flag_reorder_blocks_and_partition as an 'or' condition for calling
+ * passes.c (rest_of_handle_stack_regs): Add
+ flag_reorder_blocks_and_partition as an 'or' condition for calling
- (rest_of_handle_reorder_blocks): Add flag_reorder_blocks_and_partition
+ (rest_of_handle_reorder_blocks): Add flag_reorder_blocks_and_partition
as an 'or' condition for calling reorder_basic_blocks.
(rest_of_compilation): Add call to partition_hot_cold_basic_blocks.
as an 'or' condition for calling reorder_basic_blocks.
(rest_of_compilation): Add call to partition_hot_cold_basic_blocks.
- * print-rtl.c (print_rtx): Add code for handling new note,
- NOTE_INSN_UNLIKELY_EXECUTED_CODE
- * rtl.c (NOTE_INSN_UNLIKELY_EXECUTED_CODE): New note insn (see below).
+ * print-rtl.c (print_rtx): Add code for handling new note,
+ NOTE_INSN_UNLIKELY_EXECUTED_CODE
+ * rtl.c (NOTE_INSN_UNLIKELY_EXECUTED_CODE): New note insn (see below).
(REG_CROSSING_JUMP): New kind of reg_note, to mark jumps that
cross between section boundaries.
(REG_CROSSING_JUMP): New kind of reg_note, to mark jumps that
cross between section boundaries.
- * rtl.h (NOTE_INSN_UNLIKELY_EXECUTED_CODE): New note instruction,
- indicating the basic block containing it belongs in the cold section.
+ * rtl.h (NOTE_INSN_UNLIKELY_EXECUTED_CODE): New note instruction,
+ indicating the basic block containing it belongs in the cold section.
(REG_CROSSING_JUMP): New type of reg_note, to mark jumps that cross
between hot and cold sections.
(REG_CROSSING_JUMP): New type of reg_note, to mark jumps that cross
between hot and cold sections.
- * toplev.c (flag_reorder_blocks_and_partition): Add code to
- initialize this flag, and to tie it to the command-line option
- freorder-blocks-and-partition.
- * varasm.c (cfglayout.h): Add new include statement.
- (unlikely_section_label_printed): New global variable, used for
- determining when to output section name labels for cold sections.
+ * toplev.c (flag_reorder_blocks_and_partition): Add code to
+ initialize this flag, and to tie it to the command-line option
+ freorder-blocks-and-partition.
+ * varasm.c (cfglayout.h): Add new include statement.
+ (unlikely_section_label_printed): New global variable, used for
+ determining when to output section name labels for cold sections.
(in_section): Add in_unlikely_executed_text to enum data structure.
(text_section): Modify code to use SECTION_FORMAT_STRING and
NORMAL_TEXT_SECTION_NAME macros.
(unlikely_text_section): New function.
(in_unlikely_text_section): New function.
(in_section): Add in_unlikely_executed_text to enum data structure.
(text_section): Modify code to use SECTION_FORMAT_STRING and
NORMAL_TEXT_SECTION_NAME macros.
(unlikely_text_section): New function.
(in_unlikely_text_section): New function.
- (function_section): Add code to make sure beginning of function is
- written into correct section (hot or cold).
- (assemble_start_function): Add code to make sure stuff is written to
- the correct section.
- (assemble_zeros): Add in_unlikely_text_section as an 'or' condition
- to an if statement that was checking 'in_text_section'.
- (assemble_variable): Add 'in_unlikely_text_section' as an 'or'
- condition to an if statement that was checking 'in_text_section'.
- (default_section_type_flags_1): Add check: if in cold section
- flags = SECTION_CODE.
+ (function_section): Add code to make sure beginning of function is
+ written into correct section (hot or cold).
+ (assemble_start_function): Add code to make sure stuff is written to
+ the correct section.
+ (assemble_zeros): Add in_unlikely_text_section as an 'or' condition
+ to an if statement that was checking 'in_text_section'.
+ (assemble_variable): Add 'in_unlikely_text_section' as an 'or'
+ condition to an if statement that was checking 'in_text_section'.
+ (default_section_type_flags_1): Add check: if in cold section
+ flags = SECTION_CODE.
* config/darwin.c (darwin_asm_named_section): Modify to use
SECTION_FORMAT_STRING if we are partitioning hot/cold blocks.
* config/darwin.c (darwin_asm_named_section): Modify to use
SECTION_FORMAT_STRING if we are partitioning hot/cold blocks.
- * config/i386/i386.h (HAS_LONG_COND_BRANCH): Defined this macro
+ * config/i386/i386.h (HAS_LONG_COND_BRANCH): Defined this macro
specifically for the i386.
(HAS_LONG_UNCOND_BRANCH): Defined this macro specifically for the i386.
specifically for the i386.
(HAS_LONG_UNCOND_BRANCH): Defined this macro specifically for the i386.
- * config/rs6000/darwin.h (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Change
+ * config/rs6000/darwin.h (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Change
text string to something more informative.
(NORMAL_TEXT_SECTION_NAME): Add new definition.
(SECTION_FORMAT_STRING): Add new definition.
text string to something more informative.
(NORMAL_TEXT_SECTION_NAME): Add new definition.
(SECTION_FORMAT_STRING): Add new definition.
- * config/rs6000/rs6000.c (rs6000_assemble_integer): Add
- '!in_unlikely_text_section' as an 'and' condition to an if statement
- that was already checking '!in_text_section'.
- * config/rs6000/sysv4.h (HOT_TEXT_SECTION_NAME,NORMAL_TEXT_SECTION_NAME,
- UNLIKELY_EXECUTED_TEXT_SECTION_NAME,SECTION_FORMAT_STRING): Make
- sure these are properly defined for linux on ppc.
- * doc/invoke.texi (freorder-blocks-and-partition): Add documentation
- for this new flag.
+ * config/rs6000/rs6000.c (rs6000_assemble_integer): Add
+ '!in_unlikely_text_section' as an 'and' condition to an if statement
+ that was already checking '!in_text_section'.
+ * config/rs6000/sysv4.h (HOT_TEXT_SECTION_NAME,NORMAL_TEXT_SECTION_NAME,
+ UNLIKELY_EXECUTED_TEXT_SECTION_NAME,SECTION_FORMAT_STRING): Make
+ sure these are properly defined for linux on ppc.
+ * doc/invoke.texi (freorder-blocks-and-partition): Add documentation
+ for this new flag.
* doc/rtl.texi (REG_CROSSING_JUMP): Add documentation for new
reg_note.
* doc/rtl.texi (REG_CROSSING_JUMP): Add documentation for new
reg_note.
- * doc/tm.texi (NORMAL_TEXT_SECTION_NAME, SECTION_FORMAT_STRING,
- HAS_LONG_COND_BRANCH, HAS_LONG_UNCOND_BRANCH): Add documentation for
+ * doc/tm.texi (NORMAL_TEXT_SECTION_NAME, SECTION_FORMAT_STRING,
+ HAS_LONG_COND_BRANCH, HAS_LONG_UNCOND_BRANCH): Add documentation for
these new macros.
2004-04-08 Roger Sayle <roger@eyesopen.com>
these new macros.
2004-04-08 Roger Sayle <roger@eyesopen.com>
* gcc.c (main): Move 'break' in main loops (on an error)
to wait until error processing has occurred.
* gcc.c (main): Move 'break' in main loops (on an error)
to wait until error processing has occurred.
2004-04-06 Nathanael Nerode <neroden@gcc.gnu.org>
* config.gcc: Stop changing enable_threads midstream.
2004-04-06 Nathanael Nerode <neroden@gcc.gnu.org>
* config.gcc: Stop changing enable_threads midstream.
PR 14467
* config/darwin.h (LINK_COMMAND_SPEC): Use c++filt instead of c++filt3.
PR 14467
* config/darwin.h (LINK_COMMAND_SPEC): Use c++filt instead of c++filt3.
2004-04-06 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* doc/install.texi: Update HP-UX 11 installation procedure.
2004-04-06 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* doc/install.texi: Update HP-UX 11 installation procedure.
* gcc.c (combine_flag): New global variable, for new driver option.
(struct compiler): Add two new fields, to be used when
combining multiple input files in a single pass (IMA).
* gcc.c (combine_flag): New global variable, for new driver option.
(struct compiler): Add two new fields, to be used when
combining multiple input files in a single pass (IMA).
- (default_compilers): Add values for the new fields to all
- compiler entries. Modify the "@c" compiler entry for doing IMA
+ (default_compilers): Add values for the new fields to all
+ compiler entries. Modify the "@c" compiler entry for doing IMA
properly with "-save-temps" and the "combine" flag.
(option_map): Add new driver option, "--combine", to tell driver
to pass multiple input files to compiler at one time.
properly with "-save-temps" and the "combine" flag.
(option_map): Add new driver option, "--combine", to tell driver
to pass multiple input files to compiler at one time.
for new "combine" option; remove assignment to combine_inputs.
(do_spec_1): Modify to deal with IMA better.
(main): Make variable 'lang_n_infiles' local to entire function
for new "combine" option; remove assignment to combine_inputs.
(do_spec_1): Modify to deal with IMA better.
(main): Make variable 'lang_n_infiles' local to entire function
- rather than to a single block. Use flag combine_flag to
- determine whether to do IMA or not; Modify loop initializing
+ rather than to a single block. Use flag combine_flag to
+ determine whether to do IMA or not; Modify loop initializing
infiles to deal properly with linker files.
Add code for doing preprocessing in presence of
IMA with "-save-temps" flag. Modify "main" loop to handle
infiles to deal properly with linker files.
Add code for doing preprocessing in presence of
IMA with "-save-temps" flag. Modify "main" loop to handle
preprocessing, gracefully.
* toplev.c (set_src_pwd): Modify to not complain if attempting to
re-set it to same directory it's previously been set to (avoid
preprocessing, gracefully.
* toplev.c (set_src_pwd): Modify to not complain if attempting to
re-set it to same directory it's previously been set to (avoid
- irritating, meaningless warning messages when doing IMA with
+ irritating, meaningless warning messages when doing IMA with
save-temps).
* doc/invoke.texi: Add "-combine" to list of Overall Options;
remove documentation about IMA that is no longer accurate; Add
save-temps).
* doc/invoke.texi: Add "-combine" to list of Overall Options;
remove documentation about IMA that is no longer accurate; Add
* config/i386/i386.h (TARGET_NOCONA): New macro.
(TARGET_CPU_CPP_BUILTINS): Add code for Nocona.
(processor_type): Add PROCESSOR_NOCONA.
* config/i386/i386.h (TARGET_NOCONA): New macro.
(TARGET_CPU_CPP_BUILTINS): Add code for Nocona.
(processor_type): Add PROCESSOR_NOCONA.
* config/i386/i386.md (cpu): Add nocona to the attribute values.
* config/i386/i386.c (nocona_cost): New variable.
* config/i386/i386.md (cpu): Add nocona to the attribute values.
* config/i386/i386.c (nocona_cost): New variable.
Set up PROCESSOR_NOCONA for Nocona entry in processor_alias_table.
(incdec_operand): Prevent inc/dec generation for Nocona too.
(ix86_issue_rate): Add PROCESSOR_NOCONA.
Set up PROCESSOR_NOCONA for Nocona entry in processor_alias_table.
(incdec_operand): Prevent inc/dec generation for Nocona too.
(ix86_issue_rate): Add PROCESSOR_NOCONA.
2004-04-01 Andrew Pinski <pinskia@physics.uc.edu>
* rtlanal.c (find_reg_note): Manually
2004-04-01 Andrew Pinski <pinskia@physics.uc.edu>
* rtlanal.c (find_reg_note): Manually
2004-04-01 Serge Belyshev <1319@bot.ru>
2004-04-01 Serge Belyshev <1319@bot.ru>
- PR target/14702
- * config/i386/i386.md: fix source operand constraints in
- mmx_pshufw, sse2_pshufd, sse2_pshuflw, sse2_pshufhw
+ PR target/14702
+ * config/i386/i386.md: fix source operand constraints in
+ mmx_pshufw, sse2_pshufd, sse2_pshuflw, sse2_pshufhw
2004-04-01 Waldek Hebisch <hebisch@math.uni.wroc.pl>
2004-04-01 Waldek Hebisch <hebisch@math.uni.wroc.pl>
(MASK_DWARF2_ASM | MASK_BIG_ENDIAN | MASK_ILP32 | MASK_INLINE_FLOAT_DIV_THR)
/* This needs to be set to force structure arguments with a single
(MASK_DWARF2_ASM | MASK_BIG_ENDIAN | MASK_ILP32 | MASK_INLINE_FLOAT_DIV_THR)
/* This needs to be set to force structure arguments with a single
- field to be treated as structures and not as the type of their
- field. Without this a structure with a single char will be
- returned just like a char variable and that is wrong on HP-UX
- IA64. */
+ integer field to be treated as structures and not as the type of
+ their field. Without this a structure with a single char will be
+ returned just like a char variable, instead of being returned at the
+ top of the register as specified for big-endian IA64. */
#define MEMBER_TYPE_FORCES_BLK(FIELD, MODE) \
#define MEMBER_TYPE_FORCES_BLK(FIELD, MODE) \
- (TREE_CODE (TREE_TYPE (FIELD)) != REAL_TYPE || MODE == TFmode)
+ (!FLOAT_MODE_P (MODE) || (MODE) == TFmode)
/* ASM_OUTPUT_EXTERNAL_LIBCALL defaults to just a globalize_label call,
but that doesn't put out the @function type information which causes
/* ASM_OUTPUT_EXTERNAL_LIBCALL defaults to just a globalize_label call,
but that doesn't put out the @function type information which causes
for (p = extern_func_head; p; p = p->next)
{
tree decl = p->decl;
for (p = extern_func_head; p; p = p->next)
{
tree decl = p->decl;
- tree id = DECL_NAME (decl);
+ tree id = DECL_ASSEMBLER_NAME (decl);