57675 Commits

Author SHA1 Message Date
Jason Merrill
8329559d9e revert: re PR c++/13294 (namespace associations vs. specializations)
Revert:
        PR c++/13294
        * pt.c (maybe_process_partial_specialization): Remember the
        context of a specialization.

From-SVN: r80689
2004-04-14 15:46:35 -04:00
Bryce McKinlay
aeb95628f3 expr.c (build_invokeinterface): Remove unused variables to fix warnings.
* expr.c (build_invokeinterface): Remove unused variables to
        fix warnings.

From-SVN: r80686
2004-04-14 20:35:18 +01:00
Andreas Tobler
ef482a861f bb-reorder.c (fix_crossing_conditional_branches): Adjust the previous fix to check HAVE_return at runtime too.
2004-04-14  Andreas Tobler  <a.tobler@schweiz.ch>

	* bb-reorder.c (fix_crossing_conditional_branches): Adjust the
	previous fix to check HAVE_return at runtime too.

From-SVN: r80685
2004-04-14 20:50:53 +02:00
Bryce McKinlay
d7afe286b3 [multiple changes]
2004-04-14  Andrew Haley  <aph@redhat.com>
            Bryce McKinlay  <mckinlay@redhat.com>

	* java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA): Use
	_Jv_LookupInterfaceMethodIdx for calls to interfaces.
	* include/jvm.h (_Jv_CallAnyMethodA): Add new 	face' arg.

	* testsuite/libjava.lang/InvokeInterface.java: New file.
	* testsuite/libjava.lang/InvokeInterface.out: New file.

2004-04-14  Bryce McKinlay  <mckinlay@redhat.com>

	* class.c (get_interface_method_index): New function. Return
	dispatch index for interface method.
	(make_method_value): For interface methods, set index field to
	iface dispatch index, not DECL_VINDEX.
	* expr.c (build_invokeinterface): Use get_interface_method_index.

From-SVN: r80684
2004-04-14 18:45:20 +01:00
Nick Clifton
cd2b7af029 arm.c (arm_override_options): If the user has not specified an ABI...
* config/arm/arm.c (arm_override_options): If the user has not specified an
  ABI, then default to AAPCS for the iWMMXt processor.
* config/arm/t-xscale-elf: Remove redundant multilib specifications.
* config/arm/t-xscale-coff: Likewise.

From-SVN: r80683
2004-04-14 17:31:33 +00:00
Kaveh R. Ghazi
61218d193a builtins.c (fold_builtin_isdigit): New.
* builtins.c (fold_builtin_isdigit): New.
	(fold_builtin): Handle BUILT_IN_ISDIGIT.
	* defaults.h: Add TARGET_DIGIT0 and sort.
	* doc/tm.texi: Add TARGET_BS and TARGET_DIGIT0.

testsuite:
	* gcc.dg/torture/builtin-ctype-2.c: Test builtin isdigit.

From-SVN: r80681
2004-04-14 14:32:55 +00:00
Kaveh R. Ghazi
a69934e07e builtins.c (fold_builtin_cabs, [...]): Use `mathfn_built_in' to determine the new builtin.
* builtins.c (fold_builtin_cabs, fold_builtin): Use
	`mathfn_built_in' to determine the new builtin.
	* fold-const.c (fold): Likewise.

From-SVN: r80680
2004-04-14 14:29:35 +00:00
Richard Sandiford
74b9f2d5c8 invoke.texi: Rename MIPS's -mfix-vr4122-bugs to -mfix-vr4120.
* doc/invoke.texi: Rename MIPS's -mfix-vr4122-bugs to -mfix-vr4120.
	* config/mips/mips.h (MASK_FIX_VR4120): Renamed from MASK_FIX_VR4122.
	(TARGET_FIX_VR4120): Likewise TARGET_FIX_VR4122.
	(TARGET_SWITCHES): Replace -mfix-vr4122-bugs with -mfix-vr4120.
	(ASM_SPEC): Update accordingly.
	* config/mips/mips.c: Update after above renaming.
	* config/mips/mips.md, config/mips/t-vr, config/mips/vr.h: Likewise.
	* config/mips/vr4120-div.S: Renamed from vr4122-div.S.

From-SVN: r80679
2004-04-14 08:36:59 +00:00
James E Wilson
540554f44f Fix problem reported by Dan Berlin on gcc list.
* c-opt.c (c_common_post_options): If this_input_filename is NULL,
increment errorcount and return false instead of true.

From-SVN: r80678
2004-04-13 23:07:27 -07:00
Uros Bizjak
a072d43b46 optabs.c (expand_twoval_unop): Reorder function arguments.
2004-04-13  Uros Bizjak  <uros@kss-loka.si>:

	* optabs.c (expand_twoval_unop): Reorder function arguments.
	* builtins.c (expand_builtin_mathfn_3): Update calls to
	expand_twoval_unop.

	* reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_TAN_ONE
	and UNSPEC_TAN_TAN. Add missing comment.

	* config/i386/i386.md (*tandf3_1, *tansf3_1, *tanxf3_1): New
	patterns to implement fptan x87 instruction.
	(tandf2, tansf2, tanxf2): New expanders to implement tan, tanf
	and tanl built-ins as inline x87 intrinsics. Define corresponding
	peephole2 optimizers for 'fptan; fstp %st(0); fld1' sequence.
	(UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): New unspecs to represent
	x87's fptan insn.


	* gcc.dg/i386-387-1.c: Add new test for __builtin_tan.
	* gcc.dg/i386-387-2.c: Likewise.

	* gcc.dg/i386-387-7.c: New test.
	* gcc.dg/i386-387-8.c: New test.

	* gcc.dg/builtins-37.c: New test.

From-SVN: r80677
2004-04-14 02:37:29 +00:00
GCC Administrator
6ef79dcb4e Daily bump.
From-SVN: r80673
2004-04-14 00:16:10 +00:00
Richard Henderson
73ad3de533 varasm.c (unlikely_text_section): Use assemble_align instead of ASM_OUTPUT_ALIGN.
* varasm.c (unlikely_text_section): Use assemble_align instead of
        ASM_OUTPUT_ALIGN.  Use it in the correct place with an approximately
        correct alignment argument.

From-SVN: r80669
2004-04-13 16:31:56 -07:00
Richard Henderson
3a4bdd0558 defaults.h (HOT_TEXT_SECTION_NAME): Add leading dot.
* defaults.h (HOT_TEXT_SECTION_NAME): Add leading dot.
        (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Likewise.
        * doc/invoke.texi: Update to match.

From-SVN: r80668
2004-04-13 16:31:10 -07:00
Richard Henderson
b50b729d4d bb-reorder.c (fix_crossing_unconditional_branches): Use Pmode for LABEL_REFs.
* bb-reorder.c (fix_crossing_unconditional_branches): Use Pmode
        for LABEL_REFs.

From-SVN: r80667
2004-04-13 16:30:24 -07:00
Ulrich Weigand
9532c14fb5 reload1.c (emit_reload_insns): Set reg_has_output_reload to one after setting reg_last_reload_reg for optional...
* reload1.c (emit_reload_insns): Set reg_has_output_reload to one
	after setting reg_last_reload_reg for optional output reloads.

From-SVN: r80666
2004-04-13 23:27:43 +00:00
Geoffrey Keating
d5a46acb57 * g++.dg/pch/externc-1.C: Add missing semicolon.
From-SVN: r80662
2004-04-13 21:32:46 +00:00
Ian Lance Taylor
80790b050f strerror.c: Include config.h...
* strerror.c: Include config.h, and redefine sys_nerr and
	sys_errlist, before including ansidecl.h and libiberty.h.

From-SVN: r80650
2004-04-13 19:46:01 +00:00
Michael Chastain
611f62ad53 MAINTAINERS: Add myself to write-after-approval.
2004-04-12  Michael Chastain  <mec.gnu@mindspring.com>

        * MAINTAINERS: Add myself to write-after-approval.

From-SVN: r80649
2004-04-13 19:42:05 +00:00
Fariborz Jahanian
3d3947a904 Definition of these two macros are corrected by adding matchine right paren.
OKed by Aldy Hernandez.

From-SVN: r80646
2004-04-13 16:57:19 +00:00
Jeff Law
7f96816adb hashtab.c (htab_remove_elt_with_hash): New function.
* hashtab.c (htab_remove_elt_with_hash): New function.
	(htab_remove_elt): Implement in terms of htab_remove_elt_with_hash.

	* hashtab.h (htab_remove_elt_with_hash): Prototype new function.

From-SVN: r80641
2004-04-13 08:48:56 -06:00
Jonathan Larmour
f778cbf091 Patch from Jonathan Larmour.
* fix-header.c: kill(), putenv() and tzset() are POSIX not ANSI.

From-SVN: r80639
2004-04-12 23:04:05 -07:00
Aldy Hernandez
935a6e4659 * gcc.c-torture/execute/20020720-1.x: XFAIL for powerpc-*-*spe.
From-SVN: r80638
2004-04-13 04:07:37 +00:00
GCC Administrator
b103f4218e Daily bump.
From-SVN: r80635
2004-04-13 00:16:45 +00:00
Roger Sayle
5ea9cb6ede i386.c (output_387_reg_move): New function.
* config/i386/i386.c (output_387_reg_move): New function.
	* config/i386/i386-protos.h (output_387_reg_move): Prototype here.
	* config/i386/i386.md (*movsf_1, *movsf1_nointerunit,
	*movdf_nointeger, *movdf_integer, *movxf_nointeger, *movxf_integer,
	*extendsfdf2_1,  *extendsfxf2_1, *extenddfxf2_1, truncdfsf2_noop,
	truncxfsf2_noop, truncxfdf2_noop): Call output_387_reg_move.

From-SVN: r80631
2004-04-12 23:23:16 +00:00
Richard Kenner
1c9766da11 c-decl.c (finish_decl): Make a decl_stmt for a variable-sized TYPE_DECL.
* c-decl.c (finish_decl): Make a decl_stmt for a variable-sized
	TYPE_DECL.
	* c-semantics.c (genrtl_decl_stmt): Handle TYPE_DECL.
	* stmt.c (expand_decl): Remove redundant expansion of TYPE_DOMAIN.
	* stor-layout.c (variable_size): Don't check for MINUS_EXPR.
	Use skip_simple_arithmetic to find SAVE_EXPR.
	(force_type_save_exprs, force_type_save_exprs_1): New functions.
	* tree-inline.c (remap_type, case POINTER_TYPE, case REFERENCE_TYPE):
	Properly chain multiple pointers.
	(copy_tree_r): Copy a TYPE_DECL.
	* tree.c (variably_modified_type_p): Add some missing tests and
	make some other minor changes.
	* tree.h (force_type_save_exprs): New declaration.
	* gcc.c-torture/execute/20040411-1.c: New test.

From-SVN: r80629
2004-04-12 17:25:55 -04:00
Kelley Cook
040e098a5d re PR bootstrap/14905 ('make install' fails on grepjar.1, not included in tarball)
2004-04-12  Kelley Cook  <kcook@gcc.gnu.org>

	PR bootstrap/14905
	* configure.ac: Parse --enable-generated-files-in-srcdir.
	* Makefile.am: Copy man and info files to srcdir if requested.
	* configure: Regenerate.
	* Makefile.in Regenerate.

From-SVN: r80628
2004-04-12 20:29:49 +00:00
Roger Sayle
1e9b78b094 simplify-rtx.c (simplify_binary_operation): Remove fall throughs.
* simplify-rtx.c (simplify_binary_operation) <UDIV, DIV, UMOD, MOD>:
	Remove fall throughs.  Convert 0/x and 0%x into x&0 when x has
	side-effects.  Don't convert x/1.0 into x if we honor signaling NaNs.
	Convert x/-1.0 into -x if we don't honor signaling NaNs.  Convert
	x/-1 into -x.  Optimize x%1 into x&0 if x has side-effects.  Optimize
	x%-1 into 0 (or x&0 if x has side-effects).

From-SVN: r80625
2004-04-12 17:28:11 +00:00
Dhruv Matani
e0fb1c5c37 list_sort_search.cc: Minor formatting fixes.
2004-04-12  Dhruv Matani  <dhruvbird@gmx.net>

	* testsuite/performance/20_util/allocator/list_sort_search.cc:
	Minor formatting fixes.
	* testsuite/performance/20_util/allocator/map_mt_find.cc:
	Likewise.

From-SVN: r80624
2004-04-12 16:11:21 +00:00
Kelley Cook
9fabf579ef Makefile.am: Add in libz_a_CFLAGS as recommended by automake doc.
2004-04-12  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.am: Add in libz_a_CFLAGS as recommended by automake doc.
	* Makefile.in: Regenerate with automake 1.7.9.
	* aclocal.m4: Likewise.
	* configure: Regenerate.

From-SVN: r80620
2004-04-12 11:10:26 +00:00
Kelley Cook
5b03e55570 Add dependencies for zlib for gcc_update
Co-Authored-By: Andreas Jaeger <aj@suse.de>

From-SVN: r80619
2004-04-12 11:03:16 +00:00
Paolo Carlini
92861ad4a0 2004-04-12 Paolo Carlini <pcarlini@suse.de>
* config/locale/gnu/numeric_members.cc
	(numpunct<wchar_t>::_M_initialize_numpunct): No need to wrap
	in __uselocale, since btowc is called for chars belonging to
	the basic character set.

From-SVN: r80618
2004-04-12 08:36:23 +00:00
Aldy Hernandez
fef98bf2f8 rs6000.md: Document why a pattern is not available.
* config/rs6000/rs6000.md: Document why a pattern is not
	available.

	* config/rs6000/rs6000.c (rs6000_emit_cmove): Disable comparisons
	of floats on the E500.
	(branch_positive_comparison_operator): Do not allow NE even on the
	E500.

From-SVN: r80617
2004-04-12 00:52:24 +00:00
GCC Administrator
034776f6f6 Daily bump.
From-SVN: r80614
2004-04-12 00:16:09 +00:00
Aldy Hernandez
642af3be68 rs6000.c (rs6000_assemble_integer): Change in_text_unlikely_section to in_unlikely_text_section.
* config/rs6000/rs6000.c (rs6000_assemble_integer): Change
	in_text_unlikely_section to in_unlikely_text_section.

From-SVN: r80611
2004-04-12 00:05:05 +00:00
Roger Sayle
b3e65ebba9 fold-const.c (fold_binary_op_with_conditional_arg): Tweak calling convention to allow a NULL_TREE to be returned.
* fold-const.c (fold_binary_op_with_conditional_arg):  Tweak
	calling convention to allow a NULL_TREE to be returned.  Factor
	sanity checks from callers, return NULL_TREE when appropriate.
	(fold): Handle COMPOUND_EXPR operands of binary expressions
	before COND_EXPR operands.  Use reorder_operands_p(a,b) to check
	whether a op (b,c) can be rewritten as (b, a op c).  Simplify
	calls to fold_binary_op_with_conditional_arg.

From-SVN: r80609
2004-04-11 21:18:40 +00:00
Kaveh R. Ghazi
19d33948f2 iris5.h (current_section_flags): Add in_unlikely_executed_text and default case.
* config/mips/iris5.h (current_section_flags):  Add
	in_unlikely_executed_text and default case.

From-SVN: r80604
2004-04-11 15:33:15 +00:00
Andreas Tobler
cf22ce3c7f bb-reorder.c (fix_crossing_conditional_branches): Fix bootstrap failure on solaris.
2004-04-11  Andreas Tobler  <a.tobler@schweiz.ch>

	* bb-reorder.c (fix_crossing_conditional_branches): Fix bootstrap
	failure on solaris. Place ifdef HAVE_return around gen_ret call.
	* cfgrtl.c (force_nonfallthru_and_redirect): Remove ifdef
	HAVE_return and place it around the place where it is needed.

From-SVN: r80594
2004-04-11 10:20:42 +02:00
Andrew Pinski
3498229434 varasm.c (text_section): Use TEXT_SECTION_ASM_OP and ASM_OUTPUT_ALIGN instead of SECTION_FORMAT_STRING...
2004-04-11  Andrew Pinski  <pinskia@physics.uc.edu>

        * varasm.c (text_section): Use TEXT_SECTION_ASM_OP and
        ASM_OUTPUT_ALIGN instead of SECTION_FORMAT_STRING
        and NORMAL_TEXT_SECTION_NAME.
        (unlikely_text_section): Check targetm.have_named_sections
        instead of TARGET_ASM_NAMED_SECTION and use TEXT_SECTION_ASM_OP
        instead of SECTION_FORMAT_STRING.
        * config/mips/iris5.h (current_section_name): Add
        in_unlikely_executed_text case and move the abort into the switch.
        * config/rs6000/sysv4.h (HOT_TEXT_SECTION_NAME): Remove.
        (NORMAL_TEXT_SECTION_NAME): Remove.
        (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Remove.
        (SECTION_FORMAT_STRING): Remove.
        * defaults.h (SECTION_FORMAT_STRING): Remove.
        * tm.texi (NORMAL_TEXT_SECTION_NAME): Remove.
        (SECTION_FORMAT_STRING): Remove.

From-SVN: r80593
2004-04-10 23:21:05 -07:00
GCC Administrator
0333e091f7 Daily bump.
From-SVN: r80590
2004-04-11 00:16:11 +00:00
Joseph Myers
c7e1876bf5 c-typeck.c (common_type): Prefer long long to long when same precision.
* c-typeck.c (common_type): Prefer long long to long when same
	precision.

testsuite:
	* gcc.dg/c90-intprom-1.c, gcc.dg/c99-intprom-1.c: New tests.

From-SVN: r80584
2004-04-10 19:47:50 +01:00
Kelley Cook
11554edce6 configure.in: Rename file to ...
2004-04-10  Kelley Cook  <kcook@gcc.gnu.org>

	* configure.in: Rename file to ...
	* configure.ac: ...this.
	* Makefile.in: Regenerate.

From-SVN: r80582
2004-04-10 17:02:04 +00:00
Danny Smith
c051cc7e0a method.c (make_alias_for_thunk): Remove preprocessor guard on declaration and definition.
2004-04-09  Danny Smith  <dannysmith@users.sourceforge.net>

	* method.c (make_alias_for_thunk): Remove preprocessor guard on
	declaration and definition.

From-SVN: r80581
2004-04-10 14:44:14 +00:00
Chris Demetriou
df1a3b7369 packed1.C: Mark xfail for mips*- not mips-.
2004-04-09  Chris Demetriou  <cgd@broadcom.com>

        * g++.dg/other/packed1.C: Mark xfail for mips*- not mips-.

From-SVN: r80580
2004-04-09 23:27:31 -07:00
GCC Administrator
274dda78f4 Daily bump.
From-SVN: r80577
2004-04-10 00:16:41 +00:00
Zack Weinberg
ab37d57e9c target-supports.exp (check_named_sections_available): New.
* lib/target-supports.exp (check_named_sections_available): New.
	* lib/gcc-dg.exp (dg-require-named-sections): New.
	* lib/prune.exp (prune_gcc_output): Incorporate prunes from
	old-deja.exp.  Also prune error-count message from HP linker.
	* g++.old-deja/old-deja.exp (g++-dg-prune): Delete.

	* g++.dg/init/init-ref4.C: Use dg-require-weak.
	* g++.old-deja/g++.pt/static3.C: Likewise.
	* g++.dg/parse/attr-ctor1.C: Use dg-require-named-sections.

From-SVN: r80572
2004-04-09 22:24:29 +00:00
Zack Weinberg
7c3ac422e4 re PR target/14887 (compat/struct-ret-19 failure on ia64-hpux - argument passing bug)
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.

From-SVN: r80571
2004-04-09 22:23:42 +00:00
Roger Sayle
0b24db885b simplify-rtx.c (mode_signbit_p): New function to check whether an RTX is an immediate constant that represents...
* simplify-rtx.c (mode_signbit_p): New function to check whether
	an RTX is an immediate constant that represents the most significant
	bit of a given machine mode.
	(simplify_unary_operation) <NOT>: Optimize ~(X+C) as X ^ ~C, where
	C is the sign bit.
	(simplify_binary_operation) <PLUS>: Optimize (X^C1) + C2 as X^(C1^C2)
	when C2 is the sign bit.
	(simplify_binary_operation) <XOR>: Canonicalize X^C as X+C when C
	is the sign bit.  Optimize (X+C1) ^ C2 as X^(C1^C2) when C1 is the
	sign bit.

	* gcc.c-torture/execute/20040409-1.c: New test case.
	* gcc.c-torture/execute/20040409-2.c: New test case.
	* gcc.c-torture/execute/20040409-3.c: New test case.

From-SVN: r80568
2004-04-09 21:39:14 +00:00
Kaveh R. Ghazi
ce58118c3d builtins.c (mathfn_built_in): Check TYPE_MAIN_VARIANT, not TYPE_MODE.
* builtins.c (mathfn_built_in): Check TYPE_MAIN_VARIANT, not
	TYPE_MODE.

From-SVN: r80567
2004-04-09 21:05:13 +00:00
Andrew Pinski
c29726e22d c-common.c (handle_noreturn_attribute): Use TYPE_READONLY instead of TREE_READONLY for types.
2004-04-09  Andrew Pinski  <pinskia@physics.uc.edu>

        * c-common.c (handle_noreturn_attribute): Use TYPE_READONLY instead
        of TREE_READONLY for types.
2004-04-09  Andrew Pinski  <pinskia@physics.uc.edu>

        * gcc.dg/20040409-1.c: New test.

From-SVN: r80565
2004-04-09 13:08:03 -07:00
Caroline Tice
750054a2ee basic-block.h (struct edge_def): Add new field, crossing_edge.
2004-04-09  Caroline Tice  <ctice@apple.com>

        * 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.
        (partition_hot_cold_basic_blocks): Add extern function
        declaration.
        * 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.
        (exec_threshold): Add array value for new round.
        (push_to_next_round_p): New function.
        (add_unlikely_executed_notes): New function.
        (find_rarely_executed_basic_blocks_and_crossing_edges): New function.
        (mark_bb_for_unlikely_executed_section): New function.
        (add_labels_and_missing_jumps): New function.
        (add_reg_crossing_jump_notes): New function.
        (fix_up_fall_thru_edges): New function.
        (find_jump_block): New function.
        (fix_crossing_conditional_branches): New function.
        (fix_crossing_unconditional_branches): New function.
        (fix_edges_for_rarely_executed_code): New function.
        (partition_hot_cold_basic_blocks): New function.
        (find_traces):  Add an extra round for partitioning hot/cold
        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
        over crossing edges.
        (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.
        * 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.
        (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.
        (merge_blocks_move_successor_nojumps): Likewise.
        (merge_blocks_move): Likewise.
        (try_crossjump_to_edge): Modify to not attempt after we have done
        the block partitioning.
        (try_crossjump_bb): Modify to not attempt on blocks with 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.
        (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
        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.
        * 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.
        (rtl_can_merge_blocks):  Modify to test blocks for jumps that cross
        section boundaries.
        (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
        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.
        (cfg_layout_can_merge_blocks_p): Modify to test blocks for jumps that
        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.
        (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
        in partitioning hot/cold basic blocks into separate sections.
        (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.
        * 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): Modify to not attempt to mark loop exit edges after
        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
        flag_exceptions is on.
        (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.
        * passes.c (rest_of_handle_stack_regs):  Add
        flag_reorder_blocks_and_partition as an 'or' condition for calling
        reorder_basic_blocks.
        (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.
        * 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.
        * 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.
        * 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.
        (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/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.
        * 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.
        * 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/tm.texi (NORMAL_TEXT_SECTION_NAME, SECTION_FORMAT_STRING,
        HAS_LONG_COND_BRANCH, HAS_LONG_UNCOND_BRANCH): Add documentation for
        these new macros.

From-SVN: r80564
2004-04-09 12:57:47 -07:00