summaryrefslogtreecommitdiffstats
path: root/gcc/simplify-rtx.c
Commit message (Collapse)AuthorAgeFilesLines
...
* PR optimization/8423sayle2003-01-231-2/+6
| | | | | | | | | | | | | | | | | | | | * cse.c (fold_rtx): Only eliminate a CONSTANT_P_RTX to 1 when its argument is constant, or 0 if !flag_gcse. * simplify-rtx.c (simplify_rtx): Convert CONSTANT_P_RTX to 1 if it's argument is constant. * gcse.c (want_to_gcse_p): Ignore CONSTANT_P_RTX nodes. (hash_scan_set): Don't record CONSTANT_P_RTX expressions. (do_local_cprop): Don't propagate CONSTANT_P_RTX constants. * builtins.c (purge_builtin_constant_p): New function to force instantiation of any remaining CONSTANT_P_RTX nodes. * rtl.h (purge_builtin_constant_p): Prototype here. * toplev.c (rest_of_compilation): Invoke purge_builtin_constant_p pass after GCSE and before loop. (flag_gcse): No longer static. * flags.h (flag_gcse): Prototype here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61642 138bc75d-0d04-0410-961f-82ee72b054a4
* * regmove.c: Fix comment typos.kazu2002-12-241-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * reload.c: Likewise. * reload1.c: Likewise. * resource.c: Likewise. * rtl.def: Likewise. * rtl.h: Likewise. * rtlanal.c: Likewise. * sched-deps.c: Likewise. * sched-rgn.c: Likewise. * sibcall.c: Likewise. * simplify-rtx.c: Likewise. * ssa-ccp.c: Likewise. * ssa.c: Likewise. * stmt.c: Likewise. * stor-layout.c: Likewise. * system.h: Likewise. * tlink.c: Likewise. * toplev.c: Likewise. * tracer.c: Likewise. * tree-inline.c: Likewise. * tree.c: Likewise. * tree.h: Likewise. * unroll.c: Likewise. * varasm.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60473 138bc75d-0d04-0410-961f-82ee72b054a4
* Merge basic-improvements-branch to trunkzack2002-12-161-55/+11
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60174 138bc75d-0d04-0410-961f-82ee72b054a4
* 2002-11-04 Aldy Hernandez <aldyh@redhat.com>aldyh2002-11-041-7/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@58794 138bc75d-0d04-0410-961f-82ee72b054a4
* * i386.h (CONST_DOUBLE_OK_FOR_LETTER_P): Remove 'H'hubicka2002-10-291-1/+4
| | | | | | | | | | | | | | | | | | | * i386.md (movsf*, movdf*): Use 'C' instead of 'H' * md.texi (machine dependent constraints): Document 'C' * simplify-rtx.c (simplify_subreg): Fix const_int->vector subregging. * i386.c (ix86_expand_vector_move): Fix. * i386.c (ix86_expand_builtin): Use sse2_maskmovdqu_rex64. * i386.md (sse2_maskmovdqu_rex64): New pattern PR target/8322 * xmmintrin.h (_mm_stream_pi, _mm_stream_pd): Fix cast. (ix86_init_mmx_sse_builtins): Fix type. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@58631 138bc75d-0d04-0410-961f-82ee72b054a4
* PR opt/8165rth2002-10-141-2/+15
| | | | | | | | * gcse.c (adjust_libcall_notes): Revert last change. * simplify-rtx.c (simplify_replace_rtx): Handle LO_SUM. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@58130 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/8087sayle2002-10-081-0/+3
| | | | | | | | * simplify-rtx.c (avoid_constant_pool_reference): Allow constant pool references that are constructed using LO_SUM. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57942 138bc75d-0d04-0410-961f-82ee72b054a4
* * LANGUAGES: Follow spelling conventions.kazu2002-09-271-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * rtl.def: Likewise. * sbitmap.c: Likewise. * sched-int.h: Likewise. * sched-rgn.c: Likewise. * sibcall.c: Likewise. * simplify-rtx.c: Likewise. * ssa.c: Likewise. * stab.def: Likewise. * stmt.c: Likewise. * stor-layout.c: Likewise. * target.h: Likewise. * timevar.c: Likewise. * toplev.c: Likewise. * tree-dump.c: Likewise. * tree-inline.c: Likewise. * tree.c: Likewise. * tree.def: Likewise. * tree.h: Likewise. * unroll.c: Likewise. * varasm.c: Likewise. * vmsdbgout.c: Likewise. * treelang/treelang.texi: Likewise. * treelang/treetree.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57587 138bc75d-0d04-0410-961f-82ee72b054a4
* * real.c (do_fix_trunc): New.rth2002-09-171-4/+16
| | | | | | | | | (real_arithmetic): Call it. * simplify-rtx.c (simplify_unary_operation): Handle FIX with a floating-point result mode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57223 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/rth2002-09-161-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * real.c, real.h: Rewrite from scratch. * Makefile.in (simplify-rtx.o): Depend on TREE_H. (paranoia): New target. * builtins.c (fold_builtin_inf): Use new real.h interface. * c-common.c (builtin_define_with_hex_fp_value): Likewise. * c-lex.c (interpret_float): Likewise. * emit-rtl.c (gen_lowpart_common): Likewise. * optabs.c (expand_float): Use real_2expN. * config/ia64/ia64.md (divsi3, udivsi3): Likewise. * defaults.h (INTEL_EXTENDED_IEEE_FORMAT): New. (FLOAT_WORDS_BIG_ENDIAN): New. * cse.c (find_comparison_args): Don't pass FLOAT_STORE_FLAG_VALUE directly to REAL_VALUE_NEGATIVE. * loop.c (canonicalize_condition): Likewise. * simplify-rtx.c: Include tree.h. (simplify_unary_operation): Don't handle FIX and UNSIGNED_FIX with floating-point result modes. * toplev.c (backend_init): Call init_real_once. * fold-const.c (force_fit_type): Don't call CHECK_FLOAT_VALUE. * tree.c (build_real): Likewise. * config/alpha/alpha.c, config/vax/vax.c (float_strings, float_values, inited_float_values, check_float_value): Remove. * config/alpha/alpha.h, config/m68hc11/m68hc11.h, config/m88k/m88k.h, config/vax/vax.h (CHECK_FLOAT_VALUE): Remove. * doc/tm.texi (CHECK_FLOAT_VALUE): Remove. gcc/f/ * target.c (ffetarget_real1): Don't pass FFETARGET_ATOF_ directly to ffetarget_make_real1. (ffetarget_real2): Similarly. * target.h (ffetarget_cvt_r1_to_rv_, ffetarget_cvt_rv_to_r2_, ffetarget_cvt_r2_to_rv_): Use new real.h interface and simplify. gcc/java/ * jcf-parse.c (get_constant): Runtime check for IEEE format; use new real.h interface. * jcf-write.c (find_constant_index): Use new real.h interface. * lex.c (IS_ZERO): Use REAL_VALUES_EQUAL. contrib/ * paranoia.cc: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57198 138bc75d-0d04-0410-961f-82ee72b054a4
* * ChangeLog: Follow spelling conventions.kazu2002-09-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * ChangeLog.0: Likewise. * ChangeLog.1: Likewise. * ChangeLog.2: Likewise. * ChangeLog.4: Likewise. * ChangeLog.6: Likewise. * config.gcc: Likewise. * dwarfout.c: Likewise. * reload1.c: Likewise. * simplify-rtx.c: Likewise. * unwind-sjlj.c: Likewise. * config/avr/avr.h: Likewise. * config/d30v/d30v.h: Likewise. * config/frv/frv.c: Likewise. * config/frv/frv.h: Likewise. * config/ip2k/ip2k.h: Likewise. * config/m88k/m88k-move.sh: Likewise. * config/stormy16/stormy16.c: Likewise. * config/stormy16/stormy16.h: Likewise. * doc/extend.texi: Likewise. * doc/interface.texi: Likewise. * doc/invoke.texi: Likewise. * doc/md.texi: Likewise. * doc/rtl.texi: Likewise. * doc/tm.texi: Likewise. * doc/trouble.texi: Likewise. * ginclude/float.h: Likewise. * treelang/treelang.texi: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57179 138bc75d-0d04-0410-961f-82ee72b054a4
* 2002-08-02 Toon Moene <toon@moene.indiv.nluug.nl>toon2002-08-021-6/+6
| | | | | | | | | | * simplify-rtx.c (simplify_binary_operation): x * 1 is allowed when not honoring signalling NaNs. (simplify_ternary_operation): a == b has a definite value when not honoring NaNs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55980 138bc75d-0d04-0410-961f-82ee72b054a4
* * df.c (df_insn_table_realloc): Change parameter to unsigned.ghazi2002-08-021-1/+1
| | | | | | | | | * optabs.c (expand_binop): Make variable unsigned. * simplify-rtx.c (simplify_subreg): Likewise. * unroll.c (unroll_loop): Cast to avoid signed/unsigned warnings. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55960 138bc75d-0d04-0410-961f-82ee72b054a4
* * Makefile.in: rtlanal.o now depends upon real.h.sayle2002-07-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * flags.h [flag_signaling_nans]: New flag. [HONOR_SNANS]: New macro. * toplev.c [flag_signaling_nans]: Initialize to false. (f_options): Add processing for "-fsignaling-nans". (set_fast_math_flags): Clear flag_signaling_nans with -ffast-math. (process_options): flag_signaling_nans implies flag_trapping_math. * c-common.c (cb_register_builtins): Define __SUPPORT_SNAN__ when -fsignaling-nans. First step to implementing WG14's N965. * fold-const.c (fold) [MULT_EXPR]: Conditionalize transforming 1.0 * x into x, and -1.0 * x into -x on !HONOR_SNANS. [RDIV_EXPR]: Conditionalize x/1.0 into x on !HONOR_SNANS. * simplify-rtx.c (simplify_relational_operation): Conditionalize transforming abs(x) < 0.0 into false on !HONOR_SNANS. * rtlanal.c: #include real.c for TARGET_FLOAT_FORMAT definitions required by HONOR_SNANS. (may_trap_p): Floating point DIV, MOD, UDIV, UMOD, GE, GT, LE, LT and COMPARE may always trap with -fsignaling_nans. EQ and NE only trap for flag_signaling_nans not flag_trapping_math (i.e. HONOR_SNANS but not HONOR_NANS). * doc/invoke.texi: Document new -fsignaling-nans compiler option. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55804 138bc75d-0d04-0410-961f-82ee72b054a4
* * simpify-rtx.c (simplify_subreg): Don't pass MODE_CC mode toamylaar2002-07-251-1/+2
| | | | | | | int_mode_for_mode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55745 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc:amylaar2002-07-231-3/+16
| | | | | | | | | | | | * reload.c (find_reloads_toplev): Use simplify_gen_subreg. * simplify-rtx.c (simplify_subreg): When converting to a non-int mode, try to convert to an integer mode of matching size first. gcc/testsuite: * gcc.c-torture/compile/simd-4.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55687 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.x (simplify_subreg): When constructing a CONST_VECTORamylaar2002-07-231-1/+8
| | | | | | | | from individual subregs, check that each subreg has been generated sucessfully. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55686 138bc75d-0d04-0410-961f-82ee72b054a4
* * gengenrtl.c (gencode): Don't define obstack_alloc_rtx.neil2002-07-211-17/+3
| | | | | | | | | | | | * function.c (SYMBOL__MAIN): Remove definition. * global.c (SET_CONFLICT, REGBITP, ALLOCNO_LIVE_P): Remove. * predict.c (PROB_NEVER, PROB_LIKELY, PROB_UNLIKELY): Remove. * profile.c (GCOV_INDEX_TO_BB): Remove. * sched-rgn.c (ABS_VALUE, MIN_DIFF_PRIORITY, MIN_PROB_DIFF): Remove. * simplify-rtx.c (FIXED_BASE_PLUS_P): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55631 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_relational_operation): Optimizesayle2002-07-201-0/+22
| | | | | | | | | abs(x) < 0.0 (and abs(x) >= 0.0 when using -ffast-math). * gcc.c-torture/execute/20020720-1.c: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55614 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc:amylaar2002-07-111-0/+20
| | | | | | | | | | | | | | | | | | | Thu Jul 11 15:39:21 2002 J"orn Rennecke <joern.rennecke@superh.com> * simplify-rtx.c (simplify_subreg): Handle floating point CONST_DOUBLEs. When an integer subreg of a smaller mode than the element mode is requested, compute a subreg with an integer mode of the same size as the element mode first. testsuite: Thu Jul 11 15:39:21 2002 J"orn Rennecke <joern.rennecke@superh.com> Andrew Pinski <pinskia@physics.uc.edu> gcc.c-torture/compile/simd-2.c: New testcase. gcc.c-torture/compile/simd-3.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55410 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc:amylaar2002-07-041-1/+18
| | | | | | | | | | | | | | | * simplify-rtx.c (simplify_subreg): Reduce problem of finding vector mode subregs of constants to finding integer mode subregs of constants. * cse.c (cse_insn): Use simplify_gen_subreg. * convert.c (convert_to_integer): Don't strip a NOP_EXPR From a vector mode expression of different size than the target mode. gcc/testsuite: * gcc.c-torture/compile/simd-3.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55234 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc:amylaar2002-07-031-9/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * optabs.c (expand_vector_binop): Don't store using a SUBREG smaller than UNITS_PER_WORD, unless this is little endian and the first unit in this word. Let extract_bit_field decide how to load an element. Force arguments to matching mode. (expand_vector_unop): Likewise. * simplify-rtx.c (simplify_subreg): Don't assume that all vectors consist of word_mode elements. * c-typeck.c (build_binary_op): Allow vector types for BIT_AND_EXPR, BIT_ANDTC_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR. (build_unary_op): Allow vector types for BIT_NOT_EPR. * emit-rtl.c (gen_lowpart_common): Use simplify_gen_subreg for CONST_VECTOR. * optabs.c (expand_vector_binop): Try to perform operation in smaller vector modes with same inner size. Add handling of AND, IOR and XOR. Reject expansion to inner-mode sized scalars when using OPTAB_DIRECT. Use simplify_gen_subreg on constants. (expand_vector_unop): Try to perform operation in smaller vector modes with same inner size. Add handling of one's complement. When there is no vector negate operation, try a vector subtract operation. Use simplify_gen_subreg on constants. * simplify-rtx.c (simplify_subreg): Add capability to convert vector constants into smaller vectors with same inner mode, and to integer CONST_DOUBLEs. gcc/testsuite: * gcc.c-torture/execute/simd-1.c (main): Also test &, |, ^, ~. * gcc.c-torture/execute/simd-2.c (main): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55209 138bc75d-0d04-0410-961f-82ee72b054a4
* 2002-06-16 Aldy Hernandez <aldyh@redhat.com>aldyh2002-06-181-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gcc.c-torture/execute/simd-1.c: New. * gcc.dg/simd-1.c: New. * doc/extend.texi (Vector Extensions): Document that we can specify simd types not specifically supported by the hardware. Document that simd types can be used as function arguments. Document that signness does make a difference in SIMD types. Misc cleanups and revisions to the "vector extensions" section. * simplify-rtx.c (simplify_subreg): Simplify subregs of vector constants. * expr.c (vector_mode_valid_p): New. * expr.h: Add vector_mode_valid_p. * defaults.h (VECTOR_MODE_SUPPORTED_P): Set default. * emit-rtl.c (immed_double_const): Do not abort on vectors. * c-common.c (type_for_mode): Always build vector nodes regardless of VECTOR_MODE_SUPPORTED_P. (handle_mode_attribute): Error if we can't emulate a nonexisting vector mode. (handle_vector_size_attribute): Same. * optabs.c (expand_binop): Open-code vector operations. (expand_unop): Open-code vector unops. (expand_vector_binop): New. (expand_vector_unop): New. * c-typeck.c (build_binary_op): Allow vectors in binops. Allow vectors in conditional operatiors. (build_unary_op): Allow vectors in unary minus. * config/rs6000/rs6000.h (ALTIVEC_VECTOR_MODE): Conditionalize on TARGET_ALTIVEC. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54727 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_replace_rtx): Allow replacementsayle2002-06-101-6/+11
| | | | | | | of matching registers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54476 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_gen_relational): Simplify RTL of the formsayle2002-06-071-0/+21
| | | | | | | | | (ne (comp x y) 0) into (comp x y) where comp is a comparison code. Simplify (eq (comp x y) 0) into (revcomp x y) if the sense of the comparison code comp can be reversed. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54357 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_gen_relational): Simplify the RTXsayle2002-05-251-0/+4
| | | | | | | (cond (compare x y) 0) into the equivalent (cond x y). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@53870 138bc75d-0d04-0410-961f-82ee72b054a4
* * sbitmap.c: Fix formatting.kazu2002-05-091-23/+23
| | | | | | | | | | | | | | | | | | | | | * scan.c: Likewise. * scan-decls.c: Likewise. * sched-deps.c: Likewise. * sched-ebb.c: Likewise. * sched-rgn.c: Likewise. * sched-vis.c: Likewise. * sdbout.c: Likewise. * sibcall.c: Likewise. * simplify-rtx.c: Likewise. * ssa.c: Likewise. * ssa-ccp.c: Likewise. * ssa-dce.c: Likewise. * stmt.c: Likewise. * stor-layout.c: Likewise. * stringpool.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@53324 138bc75d-0d04-0410-961f-82ee72b054a4
* * cpplex.c: Fix comment formatting.kazu2002-04-301-1/+1
| | | | | | | | | | | | * function.c: Likewise. * integrate.c: Likewise. * regrename.c: Likewise. * sibcall.c: Likewise. * simplify-rtx.c: Likewise. * tree-inline.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@52972 138bc75d-0d04-0410-961f-82ee72b054a4
* * toplev.c: Don't include setjmp.h. Kill float_handler_set,zack2002-03-251-200/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | float_handled, float_handler, float_signal, set_float_handler, and do_float_handler. Set handler for SIGFPE to crash_signal. * toplev.h: Don't prototype do_float_handler. * c-lex.c: Fold parse_float into lex_number. Make warning about portability of hex float constants more informative, and don't issue it on top of a syntax error. * fold-const.c: Fold const_binop_1 and fold_convert_1 into their callers. * real.h: Define REAL_VALUE_ABS here... * simplify-rtx.c: ... not here. Fold check_fold_consts, simplify_unary_real, simplify_binary_real, and simplify_binary_is2orm1 into their callers. * tree.c: Fold build_real_from_int_cst_1 into caller. * doc/tm.texi: Document REAL_VALUE_ABS and REAL_VALUE_NEGATIVE. * tsystem.h: Include float.h here... * libgcc2.c: ... not here. java: * lex.c: Change java_perform_atof to take normal parameters instead of a pointer to a parameter block. Call it directly from java_lex. testsuite: * gcc.dg/c90-hexfloat-1.c: Adjust error regexps. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@51336 138bc75d-0d04-0410-961f-82ee72b054a4
* * real.h: Don't define REAL_INFINITY or REAL_IS_NOT_DOUBLE.zack2002-03-231-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Always make REAL_VALUE_TYPE a struct containing an array of HOST_WIDE_INT, not a double. Tidy up the code deciding how big it is. Don't declare or use union real_extract. * emit-rtl.c (init_emit_once), varasm.c (immed_real_const_1, decode_rtx_const, output_constant_pool), config/a29k/a29k.c (print_operand), config/arm/arm.c (output_move_double), config/arm/arm.md (consttable_4, consttable_8), config/romp/romp.c (output_fpops), config/s390/s390.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY), config/xtensa/xtensa.c (xtensa_output_literal): Don't use union real_extract. * config/dsp16xx/dsp16xx.c (print_operand), config/i860/i860.c (sfmode_constant_to_ulong), config/ns32k/merlin.h (PRINT_OPERAND), config/ns32k/ns32k.c (print_operand), config/pdp11/pdp11.h (PRINT_OPERAND), config/we32k/we32k.h (PRINT_OPERAND): Don't use local version of union real_extract. * config/convex/convex.c (check_float_value), config/vax/vax.c (vax_float_literal), config/m88k/m88k.md (divdf3), config/dsp16xx/dsp16xx.md (fixuns_trunchfhi2), config/pdp11/pdp11.c (output_move_quad): Don't do host arithmetic on target floating point quantities. * config/a29k/a29k.md, config/dsp16xx/dsp16xx.c (output_dsp16xx_float_const): Don't test HOST_FLOAT_FORMAT. * fold-const.c (fold), simplify-rtx.c (simplify_binary_real): Use MODE_HAS_INFINITIES rather than #ifdef REAL_INFINITY. * real.c (earith): Test INFINITY rather than REAL_INFINITY; NANS implies INFINITY, so can drop #ifdef NANS inside #ifndef INFINITY. * print-rtl.c (print_rtx): Disable code which needs floating-point emulator. * libgcc2.c: Include float.h and use DBL_MANT_DIG, FLT_MANT_DIG, to define DF_SIZE and SF_SIZE, rather than depending on HOST_FLOAT_FORMAT to be defined properly. * ch/grant.c, cp/error.c: Always use REAL_VALUE_TO_DECIMAL; don't test REAL_IS_NOT_DOUBLE. * config/1750a/1750a.c (get_double, float_label): Delete. (print_operand): Delete huge commented-out chunk. Use REAL_VALUE_TO_DECIMAL. * config/1750a/1750a-protos.h: Delete prototypes of deleted functions. * config/convex/convex.h: Always set TARGET_FLOAT_FORMAT to IEEE_FLOAT_FORMAT. * config/i370/i370.h (PRINT_OPERAND [TARGET_HLASM version]): Use REAL_VALUE_TO_DECIMAL as ELF version does. * config/m88k/m88k.c (real_power_of_2_operand, legitimize_operand): Take the REAL_VALUE_TYPE and/or union real_extract out of the union; run the input through REAL_VALUE_TO_TARGET_DOUBLE, then plug the pair of longwords from that into the union. * config/pdp11/pdp11.c (output_move_double): Rearrange parentheses to make automatic indenter happy. * doc/tm.texi (Cross-compilation): Rename node to "Floating Point" and rewrite to describe current situation. Also adjust documentation of REAL_VALUE_TO_TARGET_SINGLE and friends to match code. * doc/rtl.texi: Adjust cross reference. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@51210 138bc75d-0d04-0410-961f-82ee72b054a4
* * emit-rtl.c (gen_int_mode): New function.rth2002-03-191-2/+2
| | | | | | | | | | | | | | * rtl.h: Prototype for it. * combine.c (make_extraction, simplify_comparison), expmed.c (store_bit_field, expand_mult_highpart, expand_divmod), expr.c (convert_modes, store_field), optabs.c (expand_fix), simplify-rtx.c (neg_const_int, simplify_unary_real), * config/rs6000/rs6000.c, config/rs6000/rs6000.md: Use it instead of GEN_INT (trunc_int_for_mode (...)). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@51030 138bc75d-0d04-0410-961f-82ee72b054a4
* Add 2002 to the copyright dates.rsandifo2002-03-071-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50404 138bc75d-0d04-0410-961f-82ee72b054a4
* * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES): New.rsandifo2002-03-071-30/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): New. * flags.h (HONOR_NANS, HONOR_INFINITIES, HONOR_SIGNED_ZEROS): New. (HONOR_SIGN_DEPENDENT_ROUNDING): New. * builtins.c (expand_builtin_mathfn): Use HONOR_NANS. * c-common.c (truthvalue_conversion): Reduce x - y != 0 to x != y unless x and y could be infinite. (expand_unordered_cmp): New, mostly split from expand_tree_builtin. Check that the common type of both arguments is a real, even for targets without unordered comparisons. Allow an integer argument to be compared against a real. (expand_tree_builtin): Use expand_unordered_cmp. * combine.c (combine_simplify_rtx): Use the new HONOR_... macros. * cse.c (fold_rtx): Likewise. Fix indentation. * fold-const.c (fold_real_zero_addition_p): New. (fold): Use it, and the new HONOR_... macros. * ifcvt.c (noce_try_minmax): Use the new HONOR_... macros. * jump.c (reversed_comparison_code_parts): After searching for the true comparison mode, use HONOR_NANS to decide whether it can be safely reversed. (reverse_condition_maybe_unordered): Remove IEEE check. * simplify-rtx.c (simplify_binary_operation): Use the new macros to decide which simplifications are valid. Allow the following simplifications for IEEE: (-a + b) to (b - a), (a + -b) to (a - b), and (a - -b) to (a + b). (simplify_relational_operation): Use HONOR_NANS. * doc/tm.texi: Document the MODE_HAS_... macros. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50401 138bc75d-0d04-0410-961f-82ee72b054a4
* * reload1.c (reload): Unshare all rtl after reload is done.uweigand2002-03-061-9/+11
| | | | | | | | | * simplify-rtx.c (simplify_plus_minus): Do not abort, but simply fail if the expression is too complex to simplify. (simplify_gen_binary): Handle simplify_plus_minus failures. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50380 138bc75d-0d04-0410-961f-82ee72b054a4
* * emit-rtl.c, final.c, fold-const.c, gengenrtl.c, optabs.c,zack2002-03-031-79/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | print-tree.c, real.c, real.h, recog.c, rtl.c, simplify-rtx.c, tree.c, config/m68k/m68k.c, f/com.c, f/target.h, java/expr.c, java/jcf-parse.c, java/lex.c: Remove all #ifndef REAL_ARITHMETIC blocks, make all #ifdef REAL_ARITHMETIC blocks unconditional. Delete some further #ifdef blocks predicated on REAL_ARITHMETIC. * flags.h, toplev.c: Delete remaining references to flag_pretend_float. * doc/invoke.texi: Remove documentation of -fpretend-float. * doc/tm.texi: Describe the various REAL_* macros as provided by real.h, not by the target configuration files. * config/alpha/alpha.h, config/alpha/unicosmk.h, config/arm/arm.h, config/avr/avr.h, config/c4x/c4x.h, config/convex/convex.h, config/cris/cris.h, config/d30v/d30v.h, config/dsp16xx/dsp16xx.h, config/h8300/h8300.h, config/i370/i370.h, config/i386/i386.h, config/i386/osf1elf.h, config/i960/i960.h, config/ia64/ia64.h, config/m32r/m32r.h, config/m68hc11/m68hc11.h, config/m68k/dpx2.h, config/m68k/linux-aout.h, config/m68k/linux.h, config/m68k/m68k.h, config/m68k/sun3.h, config/m68k/vxm68k.h, config/mcore/mcore.h, config/mips/mips.h, config/mmix/mmix.h, config/mn10200/mn10200.h, config/mn10300/mn10300.h, config/pa/pa.h, config/pj/pj.h, config/rs6000/rs6000.h, config/s390/s390.h, config/sh/sh.h, config/sparc/freebsd.h, config/sparc/linux.h, config/sparc/linux64.h, config/sparc/sol2.h, config/sparc/sparc.h, config/sparc/vxsim.h, config/stormy16/stormy16.h, config/v850/v850.h, config/vax/vax.h, config/xtensa/xtensa.h: Do not define, undefine, or mention in comments any of REAL_ARITHMETIC, REAL_VALUE_ATOF, REAL_VALUE_HTOF, REAL_VALUE_ISNAN, REAL_VALUE_ISINF, REAL_VALUE_TO_TARGET_SINGLE, REAL_VALUE_TO_TARGET_DOUBLE, REAL_VALUE_TO_TARGET_LONG_DOUBLE, REAL_VALUE_TO_DECIMAL, REAL_VALUE_TYPE, REAL_VALUES_EQUAL, REAL_VALUES_LESS, REAL_VALUE_LDEXP, REAL_VALUE_FIX, REAL_VALUE_UNSIGNED_FIX, REAL_VALUE_RNDZINT, REAL_VALUE_UNSIGNED_RNDZINT, REAL_INFINITY, REAL_VALUE_NEGATE, REAL_VALUE_TRUNCATE, REAL_VALUE_TO_INT, or REAL_VALUE_FROM_INT. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50263 138bc75d-0d04-0410-961f-82ee72b054a4
* * emit-rtl.c (offset_address): Use simplify_gen_binary ratherrth2002-02-211-23/+40
| | | | | | | | | | | | | | | | | | | | than gen_rtx_PLUS to form the sum. * explow.c (force_reg): Rearrange to not allocate new pseudo when force_operand returns a register. * expr.c (expand_assignment): Allow offset_rtx expansion to return a sum. Do not force addresses into registers. (expand_expr): Likewise. * simplify-rtx.c (simplify_gen_binary): Use simplify_plus_minus to canonicalize arithmetic that didn't simpify. (simplify_plus_minus): New argument force; update all callers. Don't split CONST unless we can do something with it, and wouldn't lose the constness of the operands. * config/i386/i386.c (legitimize_pic_address): Recognize UNSPECs that we generated earlier. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49945 138bc75d-0d04-0410-961f-82ee72b054a4
* * combine.c (do_SUBST): Sanity check substitutions ofaoliva2002-02-201-4/+9
| | | | | | | | | | | | | CONST_INTs, and reject them in SUBREGs and ZERO_EXTENDs. (subst): Simplify SUBREG or ZERO_EXTEND instead of SUBSTing a CONST_INT into its operand. (known_cond): Likewise, for ZERO_EXTEND. * simplify-rtx.c (simplify_unary_operation): Fix condition to allow for simplification of wide modes. Reject CONST_INTs in ZERO_EXTEND when their actual mode is not given. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49920 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/i386/mmintrin.h: New file.rth2002-01-121-0/+9
| | | | | | | | | | | | | | | | | | | | * config/i386/xmmintrin.h: New file. * config.gcc (i?86-*-*): Add extra_headers. * simplify-rtx.c (simplify_unary_operation): Handle saturating truncation codes. (simplify_binary_operation): Handle saturating arithmetic codes. * config/i386/i386.c (ix86_expand_sse_comi): Return the full result, not the lowpart subreg. (ix86_expand_builtin): Return a TImode dummy register instead of 0 on error. * config/i386/i386.md (mmx_clrdi): Override memory attribute. * gcc.dg/i386-mmx-1.c, gcc.dg/i386-mmx-2.c: New. * gcc.dg/i386-sse-1.c, gcc.dg/i386-sse-2.c, gcc.dg/i386-sse-1.c: New. CVs: ---------------------------------------------------------------------- git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@48793 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_plus_minus): Bump n_ops for NOT.jakub2002-01-071-2/+8
| | | | | | | | | Don't allow -1 - x -> ~x simplifications in the first pass. * gcc.c-torture/execute/20020107-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@48614 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_binary_operation) [DIV]: Ifjakub2002-01-031-1/+8
| | | | | | | | | gen_lowpart_common fails, use gen_lowpart_SUBREG. * gcc.c-torture/compile/20020103-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@48514 138bc75d-0d04-0410-961f-82ee72b054a4
* * except.c: Fix comment formatting.kazu2001-12-281-1/+1
| | | | | | | | | | | | | * flags.h: Likewise. * flow.c: Likewise. * predict.c: Likewise. * simplify-rtx.c: Likewise. * system.h: Likewise. * vmsdbg.h: Likewise. * vmsdbgout.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@48349 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplifi_binary_operation) [DIV]: If DIV hasjakub2001-12-201-1/+4
| | | | | | | | | narrower mode than op0, only return the bits in DIV's mode. * gcc.c-torture/compile/20011219-2.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@48199 138bc75d-0d04-0410-961f-82ee72b054a4
* * recog.c (validate_replace_rtx_1): Use simplify_gen_binaryrth2001-12-131-9/+22
| | | | | | | | | instead of plus_constant. * simplify-rtx.c (neg_const_int): New. (simplify_gen_binary, simplify_plus_minus): Use it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47961 138bc75d-0d04-0410-961f-82ee72b054a4
* * dbxout.c (dbxout_symbol_location): Update call of alter_subreg.hubicka2001-11-141-1/+12
| | | | | | | | | | | | | | | * final.c (walk_alter_subreg): Take pointer; update call of alter_subreg. (final_scan_insn): Update call of alter_subreg. (cleanup_subreg_operands): Likewise. (alter_subreg): Rewrite using simplify_subreg. (output_address, output_operand): Update call of alter_subreg. * output.h (alter_subreg): Update prototype. * sdbout.c (sdbout_symbol): Update call of alter_subreg. * simplify-rtx.c (simplify_subreg): Copy ORIGINAL_REGNO. * Makefile.in (final.o): Add depdendancy on expr.h git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47013 138bc75d-0d04-0410-961f-82ee72b054a4
* * ChangeLog.2, ChangeLog.3, ChangeLog.4, FSFChangeLog.10,jsm282001-10-291-1/+1
| | | | | | | | | FSFChangeLog.11, c-common.c, c-common.def, c-common.h, c-decl.c, c-dump.c, c-typeck.c, except.c, sdbout.c, simplify-rtx.c, timevar.h, tree.h, varasm.c: Fix spelling errors and typos. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46621 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_plus_minus): Negate constant iff its negjakub2001-10-191-1/+1
| | | | | | | | | field is different to previous argument's neg field. * gcc.c-torture/execute/20011019-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46356 138bc75d-0d04-0410-961f-82ee72b054a4
* 2001-10-10 Stan Shebs <shebs@apple.com>shebs2001-10-111-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * alias.c: Remove uses of "register" specifier in declarations of arguments and local variables. * c-common.c: Ditto. * c-convert.c: Ditto. * c-decl.c: Ditto. * c-format.c: Ditto. * c-semantics.c: Ditto. * c-typeck.c: Ditto. * caller-save.c: Ditto. * calls.c: Ditto. * cfg.c: Ditto. * cfgbuild.c: Ditto. * cfgrtl.c: Ditto. * collect2.c: Ditto. * combine.c: Ditto. * convert.c: Ditto. * cppexp.c: Ditto. * cppfiles.c: Ditto. * cse.c: Ditto. * dbxout.c: Ditto. * defaults.h: Ditto. * df.c: Ditto. * dwarf2out.c: Ditto. * dwarfout.c: Ditto. * emit-rtl.c: Ditto. * explow.c: Ditto. * expmed.c: Ditto. * expr.c: Ditto. * final.c: Ditto. * fix-header.c: Ditto. * floatlib.c: Ditto. * flow.c: Ditto. * fold-const.c: Ditto. * function.c: Ditto. * gcc.c: Ditto. * gcse.c: Ditto. * gen-protos.c: Ditto. * genattrtab.c: Ditto. * gencheck.c: Ditto. * genconfig.c: Ditto. * genemit.c: Ditto. * genextract.c: Ditto. * genflags.c: Ditto. * gengenrtl.c: Ditto. * genoutput.c: Ditto. * genpeep.c: Ditto. * genrecog.c: Ditto. * gensupport.c: Ditto. * global.c: Ditto. * gmon.c: Ditto. * graph.c: Ditto. * haifa-sched.c: Ditto. * hard-reg-set.h: Ditto. * hash.c: Ditto. * integrate.c: Ditto. * jump.c: Ditto. * lists.c: Ditto. * local-alloc.c: Ditto. * loop.c: Ditto. * mips-tdump.c: Ditto. * mips-tfile.c: Ditto. * optabs.c: Ditto. * prefix.c: Ditto. * print-rtl.c: Ditto. * read-rtl.c: Ditto. * real.c: Ditto. * recog.c: Ditto. * reg-stack.c: Ditto. * regclass.c: Ditto. * regmove.c: Ditto. * reload.c: Ditto. * reload1.c: Ditto. * reorg.c: Ditto. * resource.c: Ditto. * rtl.c: Ditto. * rtlanal.c: Ditto. * scan.c: Ditto. * sched-deps.c: Ditto. * sched-rgn.c: Ditto. * sdbout.c: Ditto. * simplify-rtx.c: Ditto. * stmt.c: Ditto. * stor-layout.c: Ditto. * toplev.c: Ditto. * tradcif.y: Ditto. * tradcpp.c: Ditto. * tree.c: Ditto. * unroll.c: Ditto. * varasm.c: Ditto. * xcoffout.c: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46173 138bc75d-0d04-0410-961f-82ee72b054a4
* * loop.c (record_giv): Avoid simplifying MULT to ASHIFT.rth2001-09-071-114/+195
| | | | | | | | | | | | | | | | | (express_from_1): Wrap lines. * rtlanal.c (commutative_operand_precedence): Rename from operand_preference; export. * rtl.h: Declare it. * simplify-rtx.c (simplify_gen_binary): Tidy +/- const_int handling. (simplify_binary_operation): Invoke simplify_plus_minus on (CONST (PLUS ...)) as well. (struct simplify_plus_minus_op_data): New. (simplify_plus_minus_op_data_cmp): New. (simplify_plus_minus): Use them. Avoid infinite recursion with simplify_binary_operation wrt CONST. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45473 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_binary_operation): Revert last change.rth2001-09-061-22/+0
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45456 138bc75d-0d04-0410-961f-82ee72b054a4
* * simplify-rtx.c (simplify_binary_operation): Simplify contentsrth2001-09-061-0/+22
| | | | | | | of CONST. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45447 138bc75d-0d04-0410-961f-82ee72b054a4
OpenPOWER on IntegriCloud