Commit Graph

647 Commits

Author SHA1 Message Date
Eric Christopher
cafe096b40 Merge from rewrite branch.
From-SVN: r66318
2003-05-01 02:33:13 +00:00
J"orn Rennecke
7f0ea82ec0 Re-apply this patch:
2002-05-16  Dale Johannesen  <dalej@apple.com>
	  * combine.c (cant_combine_insn_p):  Reenable combinations
	  involving hard regs unless CLASS_LIKELY_SPILLED_P.

From-SVN: r65689
2003-04-16 18:41:10 +01:00
Franz Sirl
7d4444ea03 combine.c (merge_outer_ops): Fix typo.
2003-04-01  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* combine.c (merge_outer_ops): Fix typo.

	* varasm.c (make_decl_one_only): Revert 2003-03-09 patch.

From-SVN: r65136
2003-04-01 18:33:51 +00:00
Eric Christopher
73a39fc4f1 combine.c (can_combine_p): Allow ZERO_EXTRACT and STRICT_LOW_PART.
2003-03-31  Eric Christopher  <echristo@redhat.com>

	* combine.c (can_combine_p): Allow ZERO_EXTRACT and STRICT_LOW_PART.
	(combinable_i3pat): Remove call to expand_field_assignment and
	#if 0'd code.

From-SVN: r65118
2003-03-31 22:16:54 +00:00
Eric Botcazou
02484af985 re PR target/10072 ([Sparc] internal compiler error: in trunc_int_for_mode, at explow.c:54)
PR target/10072
	* combine.c (simplify_if_then_else): Check that the mode
	has MODE_INT class before applying the (OP Z (mult COND C2))
	transformation.

From-SVN: r64785
2003-03-24 11:29:11 +00:00
Alan Modra
70e1b8fc74 * combine.c (simplify_comparison <AND>): Use gen_int_mode. Tidy.
From-SVN: r64703
2003-03-22 18:31:02 +10:30
Kazu Hirata
c5c15353f3 * combine.c (make_field_assignment): Fix a warning.
From-SVN: r64680
2003-03-21 21:42:05 +00:00
Kazu Hirata
6e814b8d35 combine.c (make_field_assignment): Remove unnecessary AND when storing into zero_extract.
* combine.c (make_field_assignment): Remove unnecessary AND
	when storing into zero_extract.

From-SVN: r64674
2003-03-21 18:03:02 +00:00
Alan Modra
6a04f4e05e re PR target/10073 (powerpc cannot split insn while building rscheme)
PR target/10073
	* combine.c (force_to_mode <NOT>): Use gen_int_mode.

From-SVN: r64564
2003-03-19 11:58:12 +10:30
Kazu Hirata
3dc575ffdb calls.c: Fix comment formatting.
* calls.c: Fix comment formatting.
	* cfgloopanal.c: Likewise.
	* cfgloopmanip.c: Likewise.
	* combine.c: Likewise.
	* dwarf2out.c: Likewise.
	* ggc-common.c: Likewise.
	* langhooks.c: Likewise.
	* loop-unroll.c: Likewise.
	* loop.c: Likewise.
	* ra-build.c: Likewise.
	* sbitmap.c: Likewise.
	* toplev.c: Likewise.

From-SVN: r63966
2003-03-08 01:38:27 +00:00
Jan Hubicka
10a3fdd926 combine.c (gen_lowpart_for_combine): Update handling of subregs_of_mode
* combine.c (gen_lowpart_for_combine): Update handling of
	subregs_of_mode
	* flow.c (life_analysis, mark_used_regs): Likewise.
	* regclass.c (subregs_of_mode): Turn into single bitmap.
	(cannot_change-mode_set_regs, invalid_mode_change_p): Update
	dealing with subregs_of_mode
	* regs.h (subregs_of_mode): Update prototype.

From-SVN: r63552
2003-02-28 10:11:47 +00:00
James E Wilson
678e68fcfd Patch for PR 9255
Patch for PR 9255
	* combine.c (simplify_comparison): Require integral mode when
	permuting SUBREG with AND.

From-SVN: r63514
2003-02-27 09:46:35 -08:00
Roger Sayle
8beccec86d combine.c (combine_simplify_rtx, [...]): Use CC0_P.
* combine.c (combine_simplify_rtx, simplfy_comparison):  Use CC0_P.
	* cse.c (invalidate_skipped_set):  Likewise.
	* integrate.c (subst_constants):  Likewise.
	* jump.c (reversed_comparison_code_parts):  Likewise.
	* loop.c (canonicalize_condition):  Likewise.
	* simplify-rtx.c (simplify_relational_operation):  Likewise.

From-SVN: r63446
2003-02-26 03:05:40 +00:00
Jan Hubicka
2d21f7d6b3 * combine.c (simplify_shift_const): Fix previous patch.
From-SVN: r63380
2003-02-24 21:10:39 +00:00
Jan Hubicka
b9422b69c4 toplev.c (flag_sched2_use_superblocks, [...]): New global variables.
* toplev.c (flag_sched2_use_superblocks, flag_sched2_use_traces):  New global variables.
	(lang_independent_options):  Add -fsched2-use-superblocks -fsced2-use-traces.
	(rest_of_compilation): Deal with it.
	* invoke.texi (-fsched2-use-traces, fsched2-use-superblocks):  Declare.
	* flags.h (flag_sched2_use_superblocks, flag_sched2_use_traces): Declare.
	* rtl.h (reg_to_stack):  Update prototype.
	* reg-stack.c (reg_to_stack): Return when something has changed;
	update liveness when executing after superblock scheduling.

	* combine.c (simplify_shift_const):  Simplify few special cases
	into constants.

From-SVN: r63183
2003-02-20 20:56:53 +00:00
Josef Zlomek
8fa0831669 combine.c (distribute_notes): Kill REG_EXEC_COUNT.
* combine.c (distribute_notes): Kill REG_EXEC_COUNT.
	* rtl.c (reg_note_name): Likewise.
	* rtl.h (enum reg_note): Likewise.
	* doc/invoke.texi: Likewise.
	* doc/rtl.texi: Likewise.

From-SVN: r63157
2003-02-20 08:54:48 +00:00
Adam Nemet
8fd737543f re PR rtl-optimization/2391 (Exponential compilation time explosion in combine)
PR opt/2391
        * combine.c: Fix spelling in comment.
        (cached_nonzero_bits): New function.
        (cached_num_sign_bit_copies): New function.
	(nonzero_bits_with_known): New macro.
	(num_sign_bit_copies_with_known): New macro.
        (nonzero_bits1): Rename from nonzero_bits.  Add three new
	arguments.  Change calls from nonzero_bits to
	nonzero_bits_with_known.
        (num_sign_bit_copies1): Rename from num_sign_bit_copies.  Add
	three new arguments.  Change calls from num_sign_bit_copies to
	num_sign_bit_copies_with_known.
        (nonzero_bits): New macro.
        (num_sign_bit_copies): New macro.
        (update_table_tick): Don't traverse identical subexpression more
	than once.
        (get_last_value_validate): Likewise.

From-SVN: r62893
2003-02-14 07:35:44 +00:00
Jan Hubicka
cb119f8263 combine.c (combine_simplify_rtx): Fix folding of nested float_truncates.
* combine.c (combine_simplify_rtx): Fix folding of
	nested float_truncates.

From-SVN: r62702
2003-02-11 18:05:55 +00:00
Jan Hubicka
949824fe34 combine.c (combine_simplify_rtx): Simplify using (float_truncate (float x)) is (float x) (float_extend...
* combine.c (combine_simplify_rtx): Simplify using
	(float_truncate (float x)) is (float x)
	(float_extend (float_extend x)) is (float_extend x).

From-SVN: r62624
2003-02-10 10:56:05 +00:00
Richard Henderson
d116433079 * combine.c (nonzero_bits): Fix double break.
From-SVN: r62495
2003-02-06 11:26:42 -08:00
Richard Henderson
7dba8395e2 defaults.h (CLZ_DEFINED_VALUE_AT_ZERO): New.
* defaults.h (CLZ_DEFINED_VALUE_AT_ZERO): New.
        (CTZ_DEFINED_VALUE_AT_ZERO): New.
        * doc/rtl.texi, doc/tm.texi: Document them.

        * combine.c (nonzero_bits) [CLZ, CTZ]: Handle the definedness
        of the value at zero properly.
        * fold-const.c (tree_expr_nonnegative_p): Likewise.
        * simplify-rtx.c (simplify_unary_operation): Likewise.

        * config/alpha/alpha.h (CLZ_DEFINED_VALUE_AT_ZERO): New.
        (CTZ_DEFINED_VALUE_AT_ZERO): New.

        * config/arm/arm.c (TARGET_INIT_BUILTINS): Remove.
        (TARGET_EXPAND_BUILTIN): Remove.
        (def_builtin, arm_init_builtins, arm_expand_builtin): Remove.
        * config/arm/arm.h (CLZ_DEFINED_VALUE_AT_ZERO): New.
        (enum arm_builtins): Remove.
        * config/arm/arm.md (UNSPEC_CLZ): Remove.
        (clzsi2): Rename from clz; use clz instead of unspec.
        (ctzsi2): New.
        * config/arm/arm-protos.h: Update.

From-SVN: r62453
2003-02-05 14:37:54 -08:00
Richard Henderson
2928cd7aac [multiple changes]
2003-02-01  Richard Henderson  <rth@redhat.com>

	* optabs.c (expand_unop): Use word_mode for outmode of bit scaners.
	* libgcc2.c (__ffsdi2, __clzsi2, __clzdi2, __ctzsi2, __ctzdi2,
	__popcountsi2, __popcountdi2, __paritysi2 __paritydi2): Change
	return type to Wtype.

	* libgcc-std.ver (GCC_3.4): Fix inheritance.

	* config/i386/i386.md (ffssi2): Use nonimmediate_operand for
	expander input constraint.

2003-02-01  Falk Hueffner  <falk.hueffner@student.uni-tuebingen.de>

        * optabs.h (optab_index): Add OTI_clz, OTI_ctz, OTI_popcount and
        OTI_parity.
        (clz_optab, ctz_optab, popcount_optab, parity_optab): New.
        * optabs.c (widen_clz, expand_parity): New.
        (expand_unop): Handle clz and parity.  Hardcode SImode as outmode
        for libcalls to clz, ctz, popcount, and parity.
        (init_optabs): Init clz_optab, ctz_optab, popcount_optab and
        parity_optab, and set up libfunc handlers.
        * libgcc2.c (__clzsi2, __clzdi2, __ctzsi2, __ctzdi2,
        __popcountsi2, __popcountdi2, __paritysi2 __paritydi2,
        __popcount_tab): New.
        * libgcc2.h: Declare them.
        * libgcc-std.ver (GCC_3.4): Add new functions from libgcc2.c.
        * genopinit.c (optabs): Add clz_optab, ctz_optab, popcount_optab
        and parity_optab.
        * builtin-types.def (BT_FN_INT_LONG, BT_FN_INT_LONGLONG): New.
        * builtins.def (BUILT_IN_CLZ, BUILT_IN_CTZ, BUILT_IN_POPCOUNT,
        BUILT_IN_PARITY, BUILT_IN_FFSL, BUILT_IN_CLZL, BUILT_IN_CTZL,
        BUILT_IN_POPCOUNTL, BUILT_IN_PARITYL, BUILT_IN_FFSLL,
        BUILT_IN_CLZLL, BUILT_IN_CTZLL, BUILT_IN_POPCOUNTLL,
        BUILT_IN_PARITYLL): New.
        * builtins.c (expand_builtin_unop): Rename from expand_builtin_ffs
        and add optab argument.
        (expand_builtin): Expand BUILT_IN_{FFS,CLZ,POPCOUNT,PARITY}*.
        * tree.def (CLZ_EXPR, CTZ_EXPR, POPCOUNT_EXPR, PARITY_EXPR): New.
        * expr.c (expand_expr): Handle them.
        * fold-const.c (tree_expr_nonnegative_p): Likewise.
        * rtl.def (CLZ, CTZ, POPCOUNT, PARITY): New.
        * reload1.c (eliminate_regs): Handle them.
        (elimination_effects): Likewise.
        * function.c (instantiate_virtual_regs_1): Likewise
        * genattrtab.c (check_attr_value): Likewise.
        * simplify-rtx.c (simplify_unary_operation): Likewise.
        * c-common.c (c_common_truthvalue_conversion): Handle POPCOUNT_EXPR.
        * combine.c (combine_simplify_rtx): Handle POPCOUNT and PARITY.
        (nonzero_bits): Handle CLZ, CTZ, POPCOUNT and PARITY.
        * config/alpha/alpha.md (clzdi2, ctzdi2, popcountdi2): New.
        * config/arm/arm.c (arm_init_builtins): Rename __builtin_clz to
        __builtin_arm_clz.
        * Makefile.in (LIB2FUNCS_1, LIB2FUNCS_2): Move...
        * mklibgcc.in (lib2funcs): ...here and merge.  Add new members.
        * doc/extend.texi (Other Builtins): Add new builtins.
        * doc/md.texi (Standard Names): Add new patterns.

From-SVN: r62252
2003-02-01 11:00:02 -08:00
Jan Hubicka
434c87d422 * combine.c (combine_simplify_rtx): Use reversed_comparison_code_parts.
From-SVN: r62246
2003-02-01 13:16:29 +00:00
Jan Hubicka
b0c42aed31 loop.c (emit_prefetch_instructions): Do conversion at right place in RTL chain.
* loop.c (emit_prefetch_instructions):  Do conversion at right place in
	RTL chain.

	* combine.c (simplify_set): Reverse order of ragumetns to
	REG_CANNOT_CHANGE_MODE_P
	* df.c (df_def_record_1): Likewise.
	* recog.c (register_operand): Likewise.
	* simplify-rtx.c (simplify_subreg): Likewise.
	* hard-reg-set.h (REG_CANNOT_CHANGE_MODE_P): Update use of
	CANNOT_CHANGE_MODE_CLASS.
	* regclass.c (cannot_change_mode_set_regs, invalid_mode_change_p):
	Likewise.
	* reload.c (push_reload): Likewise.
	* alpha.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
	* ia64.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
	* mips.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
	* mips-protos.h (mips_cannot_change_mode_class): Update prototype.
	* mips.c (mips_cannot_change_mode_class): Update.
	* pa64-regs.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
	* rs6000.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
	* s390.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
	* sh.h (CANNOT_CHANGE_MODE_CLASS): Update definition.
	* sh-protos.h (sh_cannot_change_mode_class): Update prototype.
	* sh.c (sh_cannot_change_mode_class): Update.
	* i386.h (CANNOT_CHANGE_MODE_CLASS): New.
	* tm.texi (CANNOT_CHANGE_MODE_CLASS): Update documentation.

From-SVN: r62212
2003-01-31 23:34:17 +00:00
Richard Sandiford
6d09ef27d4 * combine.c (nonzero_bits): Fix check for negative divide operands.
From-SVN: r62029
2003-01-28 22:15:50 +00:00
Andreas Schwab
43196589eb combine.c (force_to_mode): Add cast to fix warning when STORE_FLAG_VALUE is negative.
* combine.c (force_to_mode): Add cast to fix warning when
	STORE_FLAG_VALUE is negative.

From-SVN: r61961
2003-01-28 11:02:28 +00:00
Kazu Hirata
e869aa3936 * combine.c: Fix formatting.
From-SVN: r61862
2003-01-26 21:53:22 +00:00
Kazu Hirata
ad487c3816 combine.c (simplify_comparison, case AND): Remove a redundant test.
* combine.c (simplify_comparison, case AND): Remove a redundant
	test.

From-SVN: r61787
2003-01-25 17:45:16 +00:00
Kazu Hirata
32dd366d5e basic-block.h: Fix comment formatting.
* basic-block.h: Fix comment formatting.
	* calls.c: Likewise.
	* combine.c: Likewise.
	* convert.c: Likewise.
	* gcov.c: Likewise.
	* haifa-sched.c: Likewise.
	* libgcc2.c: Likewise.
	* loop.c: Likewise.
	* profile.c: Likewise.
	* system.h: Likewise.

From-SVN: r61478
2003-01-18 22:32:06 +00:00
Richard Henderson
ab5ecb014b combine.c (make_compound_operation): Use SCALAR_INT_MODE_P, not INTEGRAL_MODE_P when widening extensions.
* combine.c (make_compound_operation): Use SCALAR_INT_MODE_P,
        not INTEGRAL_MODE_P when widening extensions.

From-SVN: r61178
2003-01-10 15:36:17 -08:00
Zack Weinberg
4977bab6ed Merge basic-improvements-branch to trunk
From-SVN: r60174
2002-12-16 18:23:00 +00:00
Geoffrey Keating
16823694d5 Index: gcc/ChangeLog
2002-12-02  Geoffrey Keating  <geoffk@apple.com>

	* combine.c (combine_simplify_rtx): Add new canonicalizations.
	* doc/md.texi (Insn Canonicalizations): Document new
	canonicalizations for multiply/add combinations.
	* config/rs6000/rs6000.md: Add and modify floating add/multiply
	patterns to ensure they're used whenever they can be.

Index: gcc/testsuite/ChangeLog
2002-12-02  Geoffrey Keating  <geoffk@apple.com>

	* gcc.dg/ppc-fmadd-1.c: New file.
	* gcc.dg/ppc-fmadd-2.c: New file.
	* gcc.dg/ppc-fmadd-3.c: New file.

From-SVN: r59841
2002-12-05 01:05:13 +00:00
Jakub Jelinek
bc02f8d3f7 combine.c (force_to_mode): Only replace with (not Y) if all bits in fuller_mask (not just mask) are set in C.
* combine.c (force_to_mode): Only replace with (not Y) if all bits in fuller_mask
	(not just mask) are set in C.

	* gcc.c-torture/execute/20021118-3.c: New test.

From-SVN: r59295
2002-11-20 10:43:20 +01:00
Aldy Hernandez
cff9f8d509 hard-reg-set.h (REG_CANNOT_CHANGE_MODE_P): New.
2002-11-04  Aldy Hernandez  <aldyh@redhat.com>

	* hard-reg-set.h (REG_CANNOT_CHANGE_MODE_P): New.

	* config/rs6000/rs6000.h (CLASS_CANNOT_CHANGE_MODE_P): Remove.
	(CLASS_CANNOT_CHANGE_MODE): Remove.
	(CANNOT_CHANGE_MODE_CLASS): New.

	* config/alpha/alpha.h: Same.

	* config/ia64/ia64.h: Same.

	* config/mips/mips.h: Same.

	* config/s390/s390.h: Same.

	* config/sh/sh.h: Same.

	* config/pa/pa64-regs.h: Same.

	* config/sh/sh-protos.h (sh_cannot_change_mode_class): Add prototype.

	* config/sh/sh.c (sh_cannot_change_mode_class): New.

	* config/mips/mips-protos.h (mips_cannot_change_mode_class): Add
	prototype.

	* config/mips/mips.c (mips_cannot_change_mode_class): New.

	* doc/tm.texi (Register Classes): Remove
	CLASS_CANNOT_CHANGE_MODE and CLASS_CANNOT_CHANGE_MODE_P.
	Document CANNOT_CHANGE_MODE_CLASS.

	* reload.c (push_reload): Use CANNOT_CHANGE_MODE_CLASS.
	(push_reload): Same.

	* simplify-rtx.c (simplify_subreg): Same.

	* reload1.c (choose_reload_regs): Same.

	* recog.c (register_operand): Same.

	* regrename.c (mode_change_ok): Change to use new
	CANNOT_CHANGE_MODE_CLASS infrastructure.

	* regclass.c (cannot_change_mode_set_regs): New.
	Declare subregs_of_mode.
	(regclass): Use subregs_of_mode.
	Remove references to reg_changes_mode.
	(init_reg_sets_1): Remove class_can_change_mode and
	reg_changes_mode code.
	(invalid_mode_change_p): New.
	(dump_regclass): Use invalid_mode_change_p instead of
	class_can_change_mode.
	(regclass): Same.
	(record_operand_costs): Do not set reg_changes_mode.

	* local-alloc.c (struct qty): Remove changes_mode field.
	(alloc_qty): Remove changes_mode initialization.
	(update_qty_class): Remove set of changes_mode.
	(find_free_reg): Use subregs_of_mode.

	* global.c (find_reg): Use subregs_of_mode info.

	* rtl.h (cannot_change_mode_set_regs): New prototype.
	(invalid_mode_change_p): Same.
	(REG_CANNOT_CHANGE_MODE_P): New macro.

	* flow.c (mark_used_regs): Calculate subregs_of_mode.  Remove
	REG_CHANGES_MODE.
	(life_analysis): Clear subregs_of_mode.

	* combine.c (subst): Pass class to CLASS_CANNOT_CHANGE_MODE_P.
	Remove use of CLASS_CANNOT_CHANGE_MODE.
	(simplify_set): Same.
	(gen_lowpart_for_combine): Calculate subregs_of_mode.  Remove
	REG_CHANGES_MODE.

	* regs.h: Add extern for subregs_of_mode;
	Include hard-reg-set and basic-block.
	(REG_CHANGES_MODE): Delete.

From-SVN: r58794
2002-11-04 16:58:39 +00:00
Kazu Hirata
3eae4643be combine.c: Fix comment formatting.
* combine.c: Fix comment formatting.
	* loop.c: Likewise.
	* real.c: Likewise.
	* regclass.c: Likewise.
	* regmove.c: Likewise.
	* regrename.c: Likewise.
	* reg-stack.c: Likewise.
	* reload1.c: Likewise.
	* reload.c: Likewise.
	* reload.h: Likewise.
	* unroll.c: Likewise.

From-SVN: r58583
2002-10-27 14:47:55 +00:00
Roger Sayle
dbf4f1a2ba * combine.c (simplify_set): Treat MODE_CC registers like cc0.
From-SVN: r58148
2002-10-15 05:01:07 +00:00
Richard Henderson
ccf7aef428 combine.c (force_to_mode): Handle FLOAT_MODE destinations for CONST_INT.
* combine.c (force_to_mode): Handle FLOAT_MODE destinations
        for CONST_INT.

From-SVN: r57634
2002-09-29 20:26:47 -07:00
Kazu Hirata
991b659243 builtins.def: Fix comment formatting.
* builtins.def: Fix comment formatting.
	* c-common.def: Likewise.
	* cfgcleanup.c: Likewise.
	* combine.c: Likewise.
	* gengtype.c: Likewise.
	* params.def: Likewise.
	* predict.def: Likewise.
	* rtl.def: Likewise.
	* stab.def: Likewise.
	* stor-layout.c: Likewise.
	* tree.def: Likewise.
	* config/darwin.c: Likewise.
	* config/darwin.h: Likewise.
	* config/dbxcoff.h: Likewise.
	* config/elfos.h: Likewise.
	* config/fp-bit.c: Likewise.
	* config/freebsd-spec.h: Likewise.
	* config/interix.h: Likewise.
	* config/libgloss.h: Likewise.
	* config/linux-aout.h: Likewise.
	* config/linux.h: Likewise.
	* config/lynx-ng.h: Likewise.
	* config/lynx.h: Likewise.
	* config/netbsd-aout.h: Likewise.
	* config/netbsd.h: Likewise.
	* config/netware.h: Likewise.
	* config/psos.h: Likewise.
	* config/ptx4.h: Likewise.

From-SVN: r57624
2002-09-29 13:16:44 +00:00
Igor Shevlyakov
855c3a2e32 combine.c (simplify_set): Don't call to force_to_mode if size of integer type is larger than...
* combine.c (simplify_set): Don't call to force_to_mode if size
        of integer type is larger than HOST_BITS_PER_WIDE_INT.

From-SVN: r57549
2002-09-26 14:15:26 -07:00
Kazu Hirata
da7d830409 ChangeLog: Follow spelling conventions.
* ChangeLog: Follow spelling conventions.
	* ChangeLog.0: Likewise.
	* ChangeLog.1: Likewise.
	* ChangeLog.2: Likewise.
	* ChangeLog.3: Likewise.
	* ChangeLog.4: Likewise.
	* ChangeLog.5: Likewise.
	* ChangeLog.6: Likewise.
	* FSFChangeLog.10: Likewise.
	* FSFChangeLog.11: Likewise.
	* alias.c: Likewise.
	* basic-block.h: Likewise.
	* c-aux-info.c: Likewise.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-decl.c: Likewise.
	* c-format.c: Likewise.
	* c-semantics.c: Likewise.
	* c-typeck.c: Likewise.
	* calls.c: Likewise.
	* cfganal.c: Likewise.
	* cfgloop.c: Likewise.
	* collect2.c: Likewise.
	* combine.c: Likewise.
	* conflict.c: Likewise.
	* cppexp.c: Likewise.
	* cppfiles.c: Likewise.
	* cpphash.h: Likewise.
	* cppinit.c: Likewise.
	* cpplex.c: Likewise.
	* cpplib.c: Likewise.
	* cpplib.h: Likewise.
	* cppmacro.c: Likewise.
	* cse.c: Likewise.

From-SVN: r57398
2002-09-22 02:03:17 +00:00
Jim Wilson
a9b2f05974 Fix v850 ICE.
* combine.c (try_combine): When split an instruction pair, where the
	first has a sign_extend src, verify that the src and dest modes match.

From-SVN: r57371
2002-09-20 14:42:25 -07:00
Jim Wilson
ff0765200c fix subreg optimization bug introduced 2002-05-25
fix subreg optimization bug introduced 2002-05-25
	* combine.c (simplify_set): When optimizing a subreg src with a
	cc0 dest, use GET_MODE (src) for mask instead of inner_mode.

From-SVN: r57323
2002-09-19 16:39:34 -07:00
Dale Johannesen
307f767b38 Remove creation of invalid subreg. PR 7705, 7339, 7720.
From-SVN: r57315
2002-09-19 18:54:56 +00:00
Roger Sayle
f40f4c8ed1 combine.c (try_combine): Handle the case that undobuf.other_insn has been turned into a return or...
* combine.c (try_combine): Handle the case that undobuf.other_insn
	has been turned into a return or unconditional jump, by inserting
	a BARRIER if necessary.
	(simplify_set):  Test if a condition code setter has a constant
	comparison at compile time, if so convert this insn to a no-op move
	and update/simplify the condition code user (undobuf.other_insn).

From-SVN: r56955
2002-09-08 18:07:54 +00:00
Igor Shevlyakov
ad9df12ff5 combine.c (simplify_shift_const): Calculate rotate count correctly for vector operands.
* combine.c (simplify_shift_const): Calculate rotate count
        correctly for vector operands.

From-SVN: r56928
2002-09-07 20:34:16 -07:00
J"orn Rennecke
b10f218708 combine.c (make_compound_operation): Don't generate zero / sign extensions in floating point modes.
* combine.c (make_compound_operation): Don't generate zero / sign
	extensions in floating point modes.

From-SVN: r56804
2002-09-04 18:49:58 +01:00
Geoffrey Keating
71012d9720 machmode.h (SCALAR_INT_MODE_P): New macro to test for scaler integer mode (MODE_INT or MODE_PARTIAL_INT).
* machmode.h (SCALAR_INT_MODE_P): New macro to test for
	scaler integer mode (MODE_INT or MODE_PARTIAL_INT).
	* explow.c (trunc_int_for_mode): Abort when the mode is not
	a scaler integer mode.
	* combine.c (expand_compound_operation): Don't expand Vector
	or Complex modes into shifts.
	(expand_field_assignment): Don't do bitwise arithmatic and
	shifts on Vector or Complex modes.
	(simplify_comparison): Don't call trunc_int_for_mode
	for VOIDmode.
	* recog.c (general_operand): Likewise.
	(immediate_operand): Likewise.
	(nonmemory_operand): Likewise.

Co-Authored-By: Steve Ellcey <sje@cup.hp.com>

From-SVN: r56443
2002-08-19 18:18:12 +00:00
Toon Moene
73e42cf342 c-common.c (cb_register_builtins): Set __FINITE_MATH_ONLY__ to 1 if -ffinite-math-only is given, and to 0 otherwise.
2002-08-01  Toon Moene  <toon@moene.indiv.nluug.nl>

	* c-common.c (cb_register_builtins): Set
	__FINITE_MATH_ONLY__ to 1 if -ffinite-math-only
	is given, and to 0 otherwise.
	* combine.c (simplify_if_then_else): HONOR_NANS
	implies FLOAT_MODE_P.

From-SVN: r55932
2002-08-01 09:08:38 +00:00
Toon Moene
2e8f2e8f7d flags.h: Declare flag_finite_math_only.
2002-07-30  Toon Moene  <toon@moene.indiv.nluug.nl>

	* flags.h: Declare flag_finite_math_only.
	Use it in definition of HONOR_NANS and
	HONOR_INFINITIES.
	* c-common.c (cb_register_builtins): Emit
	__FINITE_MATH_ONLY__ when flag_finite_math_only
	is set.
	* combine.c (simplify_if_then_else): If
	flag_finite_math_only is set, a == b has a
	definite value.
	* toplev.c: Initialize flag_finite_math_only.
	(set_flags_fast_math): Set it on -ffast-math.
	(flag_fast_math_set_p): Test it.
doc:
	* invoke.texi: Document -ffinite-math-only.
f:
	* com.c (ffe_init_options): Set
	flag_finite_math_only.
	* invoke.texi: Document -fno-finite-math-only.

From-SVN: r55887
2002-07-30 22:23:26 +00:00
J"orn Rennecke
25c2594701 combine.c (try_combine): When converting a paradoxical subreg to an extension...
* combine.c (try_combine): When converting a paradoxical subreg
	to an extension, take LOAD_EXTEND_OP into account.

From-SVN: r55404
2002-07-11 22:03:51 +01:00