1. 07 Sep, 2007 27 commits
    • Reapply reverted change: · 6ef9a246
      gcc/ada/
      	Reapply reverted change:
      
              2007-09-06  Eric Botcazou  <ebotcazou@adacore.com>
      
              * trans.c (convert_with_check): Update call to real_2expN.
      
      gcc/
      	config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
      	config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
      
      	Reapply reverted changes:
      
       	2007-09-06  Jan Hubicka  <jh@suse.cz>
       
      	* config/i386.c (ix86_expand_lround, ix86_expand_round): Update call of
      	real_2expN.
      
      	2007-09-06  Richard Sandiford  <richard@codesourcery.com>
      
      	* config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
      	(fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
      
      	2007-09-05  Janis Johnson  <janis187@us.ibm.com>
      
      	* optabs.c (expand_float): Convert unsigned integer as signed only
      	if it provides sufficient accuracy; add mode argument to real_2expN.
      	(expand_fix): Fix comment typos; extend binary float into mode
      	wider than destination for converion to unsigned integer; add mode
      	argument to real_2expN.
      	* real.c (real_2expN): Add mode argument to special-case decimal
      	float values.
      	* real.h (real_2expN): Ditto.
      	* fixed-value.c (check_real_for_fixed_mode): Add mode argument to
      	real_2expN.
      	(fixed_from_string): Ditto.
      	(fixed_to_decimal): Ditto.
      	(fixed_convert_from_real): Ditto.
      	(real_convert_from_fixed): Ditto.
      	* config/rs6000/rs6000.md (FP): Include DD and TD modes.
      	* config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
      	muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
      	floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
      
      From-SVN: r128247
      Janis Johnson committed
    • tree-flow.h (const_block_stmt_iterator): Remove. · b48d0358
      
      	* tree-flow.h (const_block_stmt_iterator): Remove.
      	Update all users to use block_stmt_iterator.
      	* tree-iterator.h (const_tree_stmt_iterator): Remove.
      	Update all users to use tree_stmt_iterator.
      
      From-SVN: r128246
      Diego Novillo committed
    • mips.c (mips_set_current_function): Temporarily make this a no-op to fix… · 7c45aad5
      mips.c (mips_set_current_function): Temporarily make this a no-op to fix bootstrap errors, pending rewrite.
      
      2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
      
      	gcc/
      	* config/mips/mips.c (mips_set_current_function): Temporarily
      	make this a no-op to fix bootstrap errors, pending rewrite.
      
      From-SVN: r128245
      Sandra Loosemore committed
    • reorg.c (dbr_schedule): Move code removing placeholder USEs later in the pass. · 74567c2c
      	* reorg.c (dbr_schedule): Move code removing placeholder USEs later
      	in the pass.
      
      From-SVN: r128243
      Jan Hubicka committed
    • re PR tree-optimization/33299 (miscompilation with gfortran -O2 -ffast-math -ftree-vectorize) · 71f4a023
              PR tree-optimization/33299
              * tree-vect-transform.c (vect_create_epilog_for_reduction): Update uses
              for all relevant loop-exit phis, not just the first.
      
      From-SVN: r128242
      Dorit Nuzman committed
    • re PR middle-end/33330 (Wrong alias for accessing scalar through array) · ccf64c83
      2007-09-07  Richard Guenther  <rguenther@suse.de>
      
      	PR middle-end/33330
      	* tree-ssa-operands.c (access_can_touch_variable): An access
      	of the form (*p)[0] can touch a variable of same size.
      
      From-SVN: r128240
      Richard Guenther committed
    • passes.c (init_optimization_passes): Add simple dce and addressable passes. · 201b2ead
      
      	* passes.c (init_optimization_passes): Add simple dce and addressable
      	passes.
      	* tree-ssa.c (execute_update_addresses_taken): New function.
      	(pass_update_address_taken): New.
      	* tree-ssa-dse.c (execute_simple_dse): New function.
      	(pass_simple_dse): New.
      	* tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
      
      From-SVN: r128239
      Jan Hubicka committed
    • re PR middle-end/33321 (gcc manpage contains "@option<-Wstrict-overflow=1>") · f85138bc
      2007-09-07  Tobias Burnus  <burnus@net-b.de>
      
      	PR middle-end/33321
      	* doc/invoke.texi: Fix -Wstrict-overflow= table.
      
      From-SVN: r128238
      Tobias Burnus committed
    • revert: re PR tree-optimization/32586 (New VN misses FRE opportunities) · d4ef8a0b
      2007-09-07  Richard Guenther  <rguenther@suse.de>
       
              Revert
              2007-09-06  Richard Guenther  <rguenther@suse.de>
      
      	PR tree-optimization/32586
      	* tree-ssa-sccvn.c (simplify_binary_expression): Avoid
      	folding if nothing changed.
      	(simplify_unary_expression): New function.  Do tree combining
      	on conversion like codes.
      	(try_to_simplify): Call it.
      
      	* g++.dg/tree-ssa/pr27090.C: Remove XFAILs.
      	* gcc.dg/tree-ssa/ssa-fre-1.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-fre-3.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-fre-5.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-fre-4.c: Likewise, remove scan for
      	now obsolete simplification.
      
      From-SVN: r128236
      Richard Guenther committed
    • re PR tree-optimization/32821 (tree-if-conv:combine_blocks with… · b616a16e
      re PR tree-optimization/32821 (tree-if-conv:combine_blocks with -ftree-dump-tree-all-details fails on ICE in compilation: segfault)
      
      	PR tree-optimization/32821
      	* tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
      	NULL in the call to set_bb_stmt_list.
      
      testsuite/ChangeLog:
      
      	PR tree-optimization/32821
      	* gcc.dg/tree-ssa/pr32821.c: New file.
      
      From-SVN: r128235
      Uros Bizjak committed
    • fpu-387.h: Include cpuid.h. · c664bb1b
      	* config/fpu-387.h: Include cpuid.h.
      	(set_fpu): Use __get_cpuid to check for SSE.
      
      From-SVN: r128234
      Uros Bizjak committed
    • mips.c (build_mips16_call_stub): Emit all direct float calls here, rather than… · 7ab6a03b
      mips.c (build_mips16_call_stub): Emit all direct float calls here, rather than leaving some to the caller.
      
      gcc/
      	* config/mips/mips.c (build_mips16_call_stub): Emit all direct
      	float calls here, rather than leaving some to the caller.
      	Use call_internal_direct and call_value_internal_direct.
      	* config/mips/mips.md (call_internal_direct): New pattern.
      	(call_value_internal_direct): Likewise.
      
      From-SVN: r128233
      Richard Sandiford committed
    • mips.c (mips_base_move_loop_invariants): New variable. · 8d1d0dee
      gcc/
      	* config/mips/mips.c (mips_base_move_loop_invariants): New variable.
      	(mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
      	to 0 for MIPS16.
      	(override_options): Set mips_base_move_loop_invariants.
      
      From-SVN: r128232
      Richard Sandiford committed
    • mips.opt (mcode-readable=): Move to keep list alphabetical. · 704aab3e
      gcc/
      	* config/mips/mips.opt (mcode-readable=): Move to keep list
      	alphabetical.
      
      From-SVN: r128231
      Richard Sandiford committed
    • mt-sde (CFLAGS_FOR_TARGET): Add -mno-gpopt. · a318179e
      config/
      	* mt-sde (CFLAGS_FOR_TARGET): Add -mno-gpopt.
      	(CXXFLAGS_FOR_TARGET): Likewise.
      
      gcc/
      	* doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
      	and -mgpopt options.  Adjust the -G documentation to match.
      	* config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
      	* config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
      	function, split out from mips_classify_symbol.  Return false for
      	!TARGET_LOCAL_SDATA.
      	(mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
      	Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
      	(override_options): Check whether the -mgpopt setting is consistent
      	with the other flags.
      	(symbolic_expression_p): Delete.
      	(mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
      	and default_elf_select_rtx_section.
      	(mips_in_small_data_p): Honor section attributes for MIPS16 too.
      	Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
      	external data and TARGET_EXTERN_SDATA.
      
      gcc/testsuite/
      	* gcc.dg/attr-alias-3.c: Use real asm for MIPS.
      	* gcc.target/mips/mips.exp (setup_mips_tests): Set mips_forced_gp
      	and mips_forced_no_er.
      	(dg-mips-options): Add -mno-abicalls when a small-data option is
      	specified.  Skip tests with small-data options if mips_forced_gp.
      	Skip tests with -mexplicit-relocs if mips_forced_no_er.
      	* gcc.target/mips/sdata-1.c: New test.
      	* gcc.target/mips/sdata-2.c: Likewise.
      	* gcc.target/mips/sdata-3.c: Likewise.
      	* gcc.target/mips/sdata-4.c: Likewise.
      
      From-SVN: r128230
      Richard Sandiford committed
    • re PR fortran/33303 (Document __GFORTRAN__) · f7de3bd3
      2007-09-07  Tobias Burnus  <burnus@net-b.de>
      
      	PR fortran/33303
      	* doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
      
      From-SVN: r128229
      Tobias Burnus committed
    • re PR libstdc++/33203 (libstdc++-v3 build broken on i386-pc-mingw32) · e4bf5dfc
      	PR libstdc++/33203
      	* configure.host (error_constants_dir):  New variable,
      	defaulting to os/generic.
      	( mingw32*): Overide default.
      	* configure.ac (ERROR_CONSTANTS_SRCDIR): New.
      	* configure: Regenerate.
      	* include/Makefile.am (host_headers): Add
      	$(ERROR_CONSTANTS_SRCDIR)/error_constants.h .
      	* include/Makefile.in: Regenerate.
      	* include/std/system_error (enum posix_errno): Remove.
      	Include <bits/error_constants.h> instead.
      	* config/os/mingw32/error_constants.h: New.
      	* config/os/generic/error_constants.h: New.
      
      From-SVN: r128228
      Danny Smith committed
    • libstdc++.exp: Check CXXFLAGS. · bd1a56a0
      2007-09-06  Benjamin Kosnik  <bkoz@redhat.com>
      
      	* testsuite/lib/libstdc++.exp: Check CXXFLAGS.
      	* scripts/testsuite_flags.in: CXXFLAGS_default, matching dejagnu.
      
      	* include/std/ostream: Spacing tweak.
      	* include/ext/hashtable.h: Use <algorithm>.
      	* include/ext/slist: Same.
      	* include/ext/rope: Same.
      	* include/bits/stl_function.h: Format.
      	* include/tr1_impl/array: Remove section number in doxygen markup.
      	* src/list.cc: Comment tweak.	
      	
      	* docs/doxygen/user.cfg.in: Update for include/tr1_impl.
      	
      	* testsuite/25_algorithms/search_n/iterator.cc: Add using declaration.
      	* testsuite/25_algorithms/nth_element/1.cc:  Same.
      	* testsuite/21_strings/char_traits/requirements/short/1.cc: Use
      	char_type typedef to the underlying character type.	
      	* testsuite/21_strings/char_traits/requirements/wchar_t/typedefs.cc:
      	Remove -ansi -pedantic-errors.
      	* testsuite/21_strings/char_traits/requirements/char/typedefs.cc: Same.
      	* testsuite/tr1/6_containers/headers/functional/synopsis.cc:
      	Remove specializations.
      
      From-SVN: r128225
      Benjamin Kosnik committed
    • regrename.c (copyprop_hardreg_forward_1): New variable next. · 62a4a967
      2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
      
      	* regrename.c (copyprop_hardreg_forward_1): New variable next. Use
      	FOR_BB_INSNS_SAFE instead of for loop.
      	* cse.c (cse_extended_basic_block): Likewise.
      	* postreload.c (reload_cse_regs_1): New variable next. Make sure
      	that the for loop does not invoke NEXT_INSN on a deleted insn.
      	* function.c (instantiate_virtual_regs): Likewise.
      	* lower-subreg.c (remove_retval_note): Likewise.
      	(decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
      	FOR_BB_INSNS.
      	* emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
      	a deleted insn.
      	* cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
      	insn, if it's a jump.
      	(try_redirect_by_replacing_jump): New variable jump_p. Call
      	tablejump_p before delete_insn_chain.
      	* reload1.c (reload): New variable next. Make sure that the for
      	loop does not invoke NEXT_INSN on a deleted insn.
      	(fixup_eh_region_note): Make the loop terminate if i becomes NULL.
      	(delete_output_reload): New variable prev. Make sure the the for
      	loops do not invoke PREV_INSN on a deleted insn.
      
      From-SVN: r128224
      Laurynas Biveinis committed
    • cgraphbuild.c (rebuild_cgraph_edges): Export. · 917948d3
      	* cgraphbuild.c (rebuild_cgraph_edges): Export.
      	* cgraph.h (rebuild_cgraph_edges): Declare.
      	* tree-pass.h (pass_expand_omp_ssa): New.
      	* omp-low.c (find_omp_clause): Export.
      	(copy_var_decl): Split from omp_copy_decl_2.
      	(build_omp_barrier): Return the call to emit instead of emitting
      	it directly.
      	(lower_rec_input_clauses, expand_omp_single): Gimplify the result of
      	build_omp_barrier.
      	(extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
      	expand_omp_for_generic, expand_omp_for_static_nochunk,
      	expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
      	Adapted to work on SSA form.
      	(execute_expand_omp): Do not invalidate dominance information.
      	(gate_expand_omp): Do not run with -fopenmp-ssa flag.
      	(gate_expand_omp_ssa, pass_expand_omp_ssa): New.
      	* gimplify.c (gimplify_omp_for): Ensure that the control variable is
      	a gimple_reg.
      	(force_gimple_operand): Allow gimplifying code expressions without
      	value.
      	* tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
      	* common.opt (fopenmp-ssa): New.
      	* tree-flow.h (find_omp_clause, copy_var_decl): Declare.
      	* Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
      	* tree-cfg.c: Include tree-inline.h.
      	(struct move_stmt_d): Replace vars_to_remove by vars_map field.
      	(replace_by_duplicate_decl, replace_ssa_name,
      	mark_virtual_ops_in_region): New functions.
      	(move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
      	to work on SSA form.
      	* passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
      	* tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
      	constructs.
      
      From-SVN: r128223
      Zdenek Dvorak committed
    • re PR libstdc++/29367 (pb_ds hash containers vs. _GLIBCXX_DEBUG) · e054e6fb
      
      2007-09-06  Benjamin Kosnik  <bkoz@redhat.com>
      	
      	PR libstdc++/29367
      	* include/ext/pb_ds/detail/map_debug_base.hpp: From this..
      	* include/ext/pb_ds/detail/debug_map_base.hpp: ...to this.
      	Rename map_debug_base to debug_map_base, add std::pair output
      	extractors, change duplicate map_debug_base typedef in containers
      	to debug_base. Use m_store_extra_indicator for m_store_hash_indicator.
      	* include/ext/pb_ds/*: Likewise.
      	* include/Makefile.am: Same.
      	* include/Makefile.in: Regenerate.
      
      From-SVN: r128222
      Benjamin Kosnik committed
    • re PR libstdc++/29367 (pb_ds hash containers vs. _GLIBCXX_DEBUG) · 551fe1a2
      2007-09-06  Benjamin Kosnik  <bkoz@redhat.com>
      	
      	PR libstdc++/29367
      	* include/ext/pb_ds/detail/map_debug_base.hpp: From this..
      	* include/ext/pb_ds/detail/debug_map_base.hpp: ...to this.
      	Rename map_debug_base to debug_map_base, add std::pair output
      	extractors, change duplicate map_debug_base typedef in containers
      	to debug_base. Use m_store_extra_indicator for m_store_hash_indicator.
      	* include/ext/pb_ds/*: Likewise.
      	* include/Makefile.am: Same.
      	* include/Makefile.in: Regenerate.
      
      From-SVN: r128221
      Benjamin Kosnik committed
    • stl_vector.h (_Vector_base<>::_M_allocate): Do not call _M_impl.allocate when __n == 0. · ccd04b9f
      2007-09-06  Paolo Carlini  <pcarlini@suse.de>
      
      	* include/bits/stl_vector.h (_Vector_base<>::_M_allocate):
      	Do not call _M_impl.allocate when __n == 0.
      	* testsuite/23_containers/vector/zero_sized_allocations.cc: New.
      
      From-SVN: r128220
      Paolo Carlini committed
    • tree-loop-linear.c: Include obstack.h. · b9dd78fa
      2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
      
      	* tree-loop-linear.c: Include obstack.h.
      	(linear_transform_loops): New obstack lambda_obstack.
      	Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
      	lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
      	and free afterwards.
      	* lambda.h (struct obstack): New forward declaration.
      	(lambda_linear_expression_new): New parameter of type struct
      	obstack *.
      	(lambda_loopnest_new): Likewise.
      	(lambda_loopnest_transform): Likewise.
      	(lambda_body_vector_new): Likewise.
      	(lambda_body_vector_compute_new): Likewise.
      	(gcc_loopnest_to_lambda_loopnest): Likewise.
      	(lambda_loopnest_to_gcc_loopnest): Likewise.
      	* lambda-code.c: Include obstack.h.
      	(lambda_lattice_new): New parameter lambda_obstack.  Use it for
      	allocation of ret.
      	(lambda_body_vector_new): Likewise.
      	(lambda_linear_expression_new): Likewise.
      	(lambda_lattice_new): Likewise.
      	(lambda_loopnest_new): Likewise.  Additionally use obstack to
      	allocate LN_LOOPS(ret).
      	(lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
      	it to lambda_lattice_new.
      	(lambda_body_vector_compute_new): New parameter lambda_obstack.
      	Pass it to lambda_body_vector_new.
      	(lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
      	it to lambda_lattice_new.
      	(compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
      	Pass it to lambda_loopnest_new, lambda_linear_expression_new.
      	(lambda_compute_target_space): Likewise.
      	(lambda_compute_auxillary_space): New parameter lambda_obstack.
      	Pass it to lambda_lattice_compute_base and
      	compute_nest_using_fourieer_motzkin.
      	(lambda_loopnest_transform): New parameter lambda_obstack.  Pass
      	it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
      	and lambda_lattice_compute_target_space.
      	(gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
      	Pass it to lambda_linear_expression_new.
      	(gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
      	to gcc_tree_to_linear_expression.
      	(gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
      	Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
      	(lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
      	Pass it to lambda_body_vector_new and
      	lambda_body_vector_compute_new.
      	* Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
      	(lambda-code.o): Likewise.
      
      From-SVN: r128219
      Laurynas Biveinis committed
    • stdfix.h: New file. · 0f996086
      	* ginclude/stdfix.h: New file.
      	* Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
      	(convert.o): Add dependence on fixed-value.h.
      	* c-convert.c (convert): Support FIXED_POINT_TYPE.
      	* c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
      	to define fixed-point constants.
      	(c_cpp_builtins): Define fixed-point constants.
      	* convert.c (fixed-value.h): New include.
      	(convert_to_real): Update comment to include fixed-point.
      	Support FIXED_POINT_TYPE.
      	(convert_to_integer): Update comment to include fixed-point.
      	Support FIXED_POINT_TYPE.
      	(convert_to_complex): Support FIXED_POINT_TYPE.
      	(convert_to_fixed): New function.
      	* convert.h (convert_to_fixed): Declare.
      	* genopinit.c: Add comment about $Q for only fixed-point modes.
      	(optabs): Add fract_optab, fractuns_optab, satfract_optab,
      	satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
      	sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
      	ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
      	usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
      	usneg_optab for fixed-point modes.
      	(gen_insn): Add force_fixed to track the $Q format for all fixed-point
      	modes.
      	* optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
      	PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
      	unsigned saturation optabs, when type is saturating.
      	(shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
      	(expand_fixed_convert): New function.
      	(gen_fixed_libfunc, gen_signed_fixed_libfunc,
      	gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
      	gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
      	gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
      	gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
      	gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
      	functions.
      	(init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
      	ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
      	usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
      	ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
      	usneg_optab, fract_optab, fractuns_optab, satfract_optab,
      	satfractuns_optab.
      	Initialize fixed-point libraries, including add, ssadd, usadd, sub,
      	sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
      	ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
      	fractuns, satfractuns.
      	* optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
      	OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
      	OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
      	OTI_ssmsub_widen,  OTI_usmsub_widen.
      	(ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
      	usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
      	ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
      	umsub_widen_optab, usmsub_widen_optab): Define.
      	(enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
      	COI_satfractuns.
      	(fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
      	Define.
      	(expand_fixed_convert): Declare.
      	* expr.c (convert_move): Support the move of fixed-point modes.
      	(emit_move_insn_1): Handle fixed-point mode to move via integer.
      	(categorize_ctor_elements_1): Handle FIXED_CST.
      	(count_type_elements): Handle FIXED_POINT_TYPE.
      	(expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
      	MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
      	Support FIXED_CST.
      	For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
      	multiply and add/subtract for fixed-point types.
      	For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
      	mode, we jump to binop directly.
      	Support FIXED_CONVERT_EXPR.
      	(do_store_flag): Check FIXED_CST to put a constant second.
      	(vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
      	MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
      	(const_vector_from_tree): Support FIXED_CST.
      	* doc/extend.texi (Fixed-Point): New node.
      	* doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
      	ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
      	satfract, fractuns, satfractuns): Document them.
      
      From-SVN: r128218
      Chao-ying Fu committed
    • Daily bump. · 58cfe698
      From-SVN: r128215
      GCC Administrator committed
  2. 06 Sep, 2007 13 commits