Commit Graph

31979 Commits

Author SHA1 Message Date
François-Xavier Coudert 7348aa7faf re PR target/30406 ([4.1 only] ICE in LOGICAL(8) functions)
PR target/30406

	* config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
	instead of precision.

	* gfortran.dg/logical_3.f90: New test.

From-SVN: r122523
2007-03-04 08:10:25 +00:00
Roman Zippel 594f877973 emit-rtl.c (find_auto_inc): New.
* emit-rtl.c (find_auto_inc): New.
	(try_split): recreate REG_INC notes,
	Use regular for loops rather than whiles.

	* gcc.target/m68k/m68k.exp: New.
	* gcc.target/m68k/crash1.c: New.

From-SVN: r122520
2007-03-04 00:56:51 +00:00
Andreas Schwab 695d883001 configure.ac (HAVE_AS_REL16): Move test back to correct place.
* configure.ac (HAVE_AS_REL16): Move test back to correct place.
	* configure: Regenerate.

From-SVN: r122511
2007-03-03 19:23:06 +00:00
Kaveh R. Ghazi a50639323b builtins.def (ATTR_MATHFN_FPROUNDING): Rely on flag_rounding_math, not flag_unsafe_math_optimizations.
* builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
	flag_rounding_math, not flag_unsafe_math_optimizations.

From-SVN: r122509
2007-03-03 17:18:17 +00:00
Kaveh R. Ghazi 31ff73b5ab c-pretty-print.c (pp_c_direct_abstract_declarator): Use fold_build2.
* c-pretty-print.c (pp_c_direct_abstract_declarator): Use
	fold_build2.
	* config/alpha/alpha.c (alpha_fold_builtin_zapnot,
	alpha_fold_vector_minmax): Likewise.
	* config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
	* config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.

From-SVN: r122508
2007-03-03 17:12:28 +00:00
Eric Botcazou 9700224802 tree-sra.c (sra_walk_fns): Document new restriction.
* tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
	(sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
	if the lhs has side-effects.
	<lhs_elt>: Treat the reference as a use if the rhs has side-effects.

From-SVN: r122492
2007-03-02 22:30:32 +00:00
Uros Bizjak e39e8c363b i386.h (TUNEMASK): Remove define.
* config/i386/i386.h (TUNEMASK): Remove define.
        (ARCHMASK): Remove define.
        (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
         Use ix86_arch_mask variable instead of ARCHMASK.
        * config/i386/i386.c (override_options): Ditto.
        (standard_80387_constant_p): Ditto.

From-SVN: r122491
2007-03-02 23:28:02 +01:00
Ian Lance Taylor 12df8a7eb6 Used signed infinities in VRP.
* tree-vrp.c (uses_overflow_infinity): New static function.
	(supports_overflow_infinity): New static function.
	(make_overflow_infinity): New static function.
	(negative_overflow_infinity): New static function.
	(positive_overflow_infinity): New static function.
	(is_negative_overflow_infinity): New static function.
	(is_positive_overflow_infinity): New static function.
	(is_overflow_infinity): New static function.
	(overflow_infinity_range_p): New static function.
	(compare_values_warnv): New function split out of compare_values.
	(compare_value): Call it.
	(set_value_range_to_nonnegative): Add overflow_infinity
	parameter.  Change caller.
	(vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
	Change callers.
	(vrp_expr_computes_nonzero): Likewise.
	(compare_ranges, compare_range_with_value): Likewise.
	(compare_name_with_value, compare_names): Likewise.
	(vrp_evaluate_conditional): Likewise.
	(set_value_range): Handle infinity
	(vrp_operand_equal_p, operand_less_p): Likewise.
	(extract_range_from_assert): Likewise.
	(vrp_int_const_binop): Likewise.
	(extract_range_from_binary_expr): Likewise.
	(extract_range_from_unary_expr): Likewise.
	(extract_range_from_comparison): Likewise.
	(extract_range_from_expr): Likewise.
	(dump_value_range): Likewise.
	(vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
	(test_for_singularity): Likewise.
	(vrp_int_const_binop): Remove inline qualifier.
	(adjust_range_with_scev): Add comment.
	* tree-flow.h (vrp_evaluate_conditional): Update declaration.

From-SVN: r122487
2007-03-02 20:09:31 +00:00
Diego Novillo 6e7e772dce tree-ssa-structalias.c (could_have_pointers): Tidy.
* tree-ssa-structalias.c (could_have_pointers): Tidy.
	(get_constraint_for): Likewise.
	(do_structure_copy): Likewise.
	(find_func_aliases): Fix references to MODIFY_EXPR.
	(intra_create_variable_infos): Tidy.
	* tree-ssa-operands.c (add_virtual_operand): Add argument
	IS_CALL_SITE.
	When adding members of alias sets, if IS_CALL_SITE is true and
	the symbol is not call-clobbered, skip it.
	Adjust all callers.


testsuite/ChangeLog

	* gcc.dg/tree-ssa/20070302-1.c: New test.

From-SVN: r122484
2007-03-02 14:20:14 -05:00
Eric Botcazou e0759b7392 alpha.c (alpha_gp_save_rtx): Insert the insns at the entry by means of emit_insn_at_entry.
* config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
	entry by means of emit_insn_at_entry.

From-SVN: r122480
2007-03-02 18:01:37 +00:00
Richard Henderson 962f383322 expr.h (promoted_input_arg): Remove decl.
* expr.h (promoted_input_arg): Remove decl.
        * function.c (promoted_input_arg): Merge into ...
        * combine.c (setup_incoming_promotions): ... only caller.
        Rearrange to avoid double loop.

From-SVN: r122479
2007-03-02 09:49:58 -08:00
Ben Elliston 7393f7f8d0 dfp.md: New file.
* config/rs6000/dfp.md: New file.
	* config/rs6000/rs6000.md: Include dfp.md.
	(add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
	* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
	and TDmode decimal float modes in FP registers.
	(num_insns_constant): Likewise.
	(rs6000_legitimate_offset_address_p): Likewise.
	(rs6000_legitimize_address): Likewise.
	(rs6000_legitimize_reload_address): Likewise.
	(rs6000_legitimate_address): Likewise.
	(rs6000_emit_move): Likewise.
	(function_arg_boundary): Likewise.
	(function_arg_advance): Likewise.
	(rs6000_darwin64_record_arg_recurse): Likewise.
	(function_arg): Likewise.
	(rs6000_gimplify_va_arg): Likewise.
	(rs6000_split_multireg_move): Likewise.
	(rs6000_output_function_epilogue): Likewise.
	(rs6000_output_function_epilogue): Likewise.
	(rs6000_register_move_cost): Likewise.
	(rs6000_function_value): Likewise.
	(rs6000_libcall_value): Likewise.

Co-Authored-By: Janis Johnson <janis187@us.ibm.com>
Co-Authored-By: Peter Bergner <bergner@vnet.ibm.com>

From-SVN: r122477
2007-03-02 09:57:08 -06:00
Uros Bizjak 0fa4c37026 i386.c (override_options): Put initialization of ix86_tune_mask and ix86_arch_mask to the correct place.
* config/i386/i386.c (override_options): Put initialization of
        ix86_tune_mask and ix86_arch_mask to the correct place.

From-SVN: r122476
2007-03-02 14:36:54 +01:00
Richard Sandiford 1f24ba024d t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
gcc/
	* config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.

From-SVN: r122475
2007-03-02 12:38:32 +00:00
Richard Sandiford c3c9a5d23e t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
gcc/
	* config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
	Use $MULTIDIR to choose between the kernel and RTP headers,
	and use $WIND_BASE and $WIND_USR to locate them.

From-SVN: r122474
2007-03-02 12:37:31 +00:00
Uros Bizjak 8691cea396 re PR target/31019 (Microoptimization of the i386 and x86_64 compilers)
PR target/31019
	* config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
	(ARCHMASK): Define.
	(TARGET_CMOVE): Use ARCHMASK.
	(TARGET_CMPXCHG): Ditto.
	(TARGET_CMPXCHG8B): Ditto.
	(TARGET_XADD): Ditto.
	(TARGET_BSWAP): Ditto.
	* config/i386/i386.c (ix86_tune_mask): New global variable.
	(ix86_arch_mask): Ditto.
	(override_options): Initialize ix86_tune_mask and
	ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
	target_flags.


Co-Authored-By: Michael Meissner <michael.meissner@amd.com>

From-SVN: r122473
2007-03-02 13:26:55 +01:00
Ben Elliston cee690f184 re PR middle-end/30992 (Scaling error in decimal floating-point arithmetic blows conversions to integers)
2007-03-02  Ben Elliston  <bje@au.ibm.com>

	PR 30992
	* config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".

From-SVN: r122469
2007-03-02 16:28:06 +11:00
Joseph Myers 37ea0b7e74 target.h (init_dwarf_reg_sizes_extra): New target hook.
* target.h (init_dwarf_reg_sizes_extra): New target hook.
	* target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
	* doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
	* dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
	hook.
	* config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
	rs6000_init_dwarf_reg_sizes_extra): New.
	* config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
	SPE register high parts.

testsuite:
	* gcc.target/powerpc/spe-unwind-1.c, g++.dg/eh/simd-5.C: New
	tests.

From-SVN: r122468
2007-03-02 01:55:06 +00:00
Brooks Moses bcc3d150be Makefile.in: Add install-pdf target as copied from automake v1.10 rules.
* Makefile.in: Add install-pdf target as
copied from automake v1.10 rules.
* configure.ac: Add install-pdf to target list.
* configure: Regenerate.

From-SVN: r122466
2007-03-01 16:23:20 -08:00
Paul Brook fe2d934b4b arm.c (arm_legitimate_index_p): Limit iWMMXt addressing modes to LDRD for DImode.
2007-03-01  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
	modes to LDRD for DImode.
	(output_move_double): Fixup out of range ldrd/strd.
	(vfp_secondary_reload_class): Rename...
	(coproc_secondary_reload_class): ... to this.  Add wb argument.
	* config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
	coproc_secondary_reload_class for CLASS_IWMMXT.
	(SECONDARY_INPUT_RELOAD_CLASS): Ditto.
	* arm-protos.h (coproc_secondary_reload_class): Update prototype.

From-SVN: r122437
2007-03-01 22:58:40 +00:00
Zdenek Dvorak 2711355fbc tree-ssa-loop-prefetch.c (determine_unroll_factor): Bound the unroll factor by the estimated number of iterations.
* tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
	factor by the estimated number of iterations.
	(loop_prefetch_arrays): Do not prefetch in loops that iterate less than
	prefetch latency.

	* gcc.dg/tree-ssa/prefetch-4.c: New test.

From-SVN: r122435
2007-03-01 22:14:23 +00:00
Richard Henderson ceca734e8f expr.c (emit_move_complex_push): Export.
* expr.c (emit_move_complex_push): Export.
        (emit_move_complex_parts): Split out from ...
        (emit_move_complex): ... here.
        * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
        * config/i386/i386.md (movcdi): New.

From-SVN: r122432
2007-03-01 08:30:38 -08:00
Uros Bizjak 93de7743ba i386.c (ix86_modes_tieable_p): Fix typo, use also size of mode1 to check for tieable modes in MMX case.
* config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
	size of mode1 to check for tieable modes in MMX case.

From-SVN: r122429
2007-03-01 11:54:52 +01:00
Richard Sandiford 7ffb5e7879 Makefile.in (rtlanal.o): Depend on tree.h.
gcc/
	* Makefile.in (rtlanal.o): Depend on tree.h.
	* rtl.h (offset_within_section_p, split_const): Declare.
	* rtlanal.c: Include tree.h.
	(offset_within_block_p): New function, taken from
	mips_offset_within_object_p.
	(split_const): New function, taken from mips_split_const.
	* config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
	Declare.
	* config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
	(CONSTANT_ADDRESS_P): Only accept legitimate constants.
	(LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
	* config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
	(m68k_illegitimate_symbolic_constant_p): New function.
	* config/m68k/m68k.md (movsi): Remove misleading predicates.
	If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
	symbolic constant that might be outside the symbol's section,
	move the symbol first and then add the offset.
	* config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
	Override.
	* config/mips/mips.c (mips_split_const): Delete.
	(mips_offset_within_object_p): Delete.
	(mips_symbolic_constant_p): Use offset_within_section_p and
	split_const instead of mips_offset_within_object_p and
	mips_split_const.
	(mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
	(mips_legitimize_const_move, print_operand_reloc)
	(mips_dangerous_for_la25_p): Use split_const instead of
	mips_split_const.

From-SVN: r122428
2007-03-01 09:58:12 +00:00
Eric Christopher d3dc619d32 revert: Makefile.def (dependencies): Add dependency for install-target-libssp and install-target-libgomp on install-gcc.
2007-02-28  Eric Christopher  <echristo@apple.com>

   Revert:
   2006-12-07  Mike Stump  <mrs@apple.com>

       * Makefile.def (dependencies): Add dependency for
       install-target-libssp and install-target-libgomp on
       install-gcc.
       * Makefile.in: Regenerate.

2007-02-28  Eric Christopher  <echristo@apple.com>

   * Makefile.in (install-include-dir): Don't rm -rf include.

From-SVN: r122415
2007-02-28 22:46:01 +00:00
Richard Guenther a6d5f37ceb re PR middle-end/30364 (Wrong variable ranges due to constant folding)
2007-02-28  Richard Guenther  <rguenther@suse.de>

	PR middle-end/30364
	* fold-const.c (fold_binary): Do not associate expressions
	with more than one variable for integer types that do not wrap.

	* gcc.dg/torture/pr30364-1.c: New testcase.
	* gcc.dg/torture/pr30364-2.c: Likewise.
	* gcc.dg/torture/pr30364-3.c: Likewise.

From-SVN: r122414
2007-02-28 21:56:41 +00:00
Sandra Loosemore 94a0dd7b59 builtins.c (fold_builtin_call_list, [...]): Delete, and replace with...
2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>

	* gcc/builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
	Delete, and replace with...
	(fold_builtin_call_array): This.  Update callers to use it.
	* gcc/fold-const.c (fold_build_call_list): Delete, and replace with...
	(fold_build_call_array): This.
	(fold_build_call_list_initializer): Delete, and replace with...
	(fold_build_call_array_initializer): This.
	* gcc/tree.h: Update declarations to reflect above changes.

	* gcc/c-typeck.c (build_function_call): Store converted arguments
	in a stack-allocated array instead of building a list.
	(convert_arguments): Store arguments in the array passed in as an
	argument, and return the actual number of arguments.
	* gcc/c-format.c: (check_function_format): Pass arguments in an
	array instead of a list.
	* gcc/c-common.c (check_function_nonnull): Likewise.
	(check_function_sentinel): Likewise.
	(check_function_arguments): Likewise.
	* gcc/c-common.h: Update declarations to reflect above changes.

	* gcc/cp/typeck.c (build_function_call): Store converted arguments
	in a stack-allocated array instead of building a list.
	(convert_arguments): Store arguments in the array passed in as an
	argument, and return the actual number of arguments.
	* gcc/cp/call.c (build_call): Delete, and replace with...
	(build_call_n, build_call_a): New.
	(build_op_delete_call): Rewrite to avoid constructing argument lists.
	(build_over_call): Store converted arguments in a stack-allocated
	array instead of building a list.
	(build_cxx_call): Pass arguments in an array instead of as a list.
	(build_java_interface_fn_ref): Rewrite to avoid constructing
	argument lists.
	* gcc/cp/tree.h: Update declarations to reflect above changes.
	* gcc/cp/method.c (use_thunk): Use a stack-allocated array to hold
	the arguments instead of a list.
	* gcc/cp/rtti.c (throw_bad_cast): Update call to cxx_call.
	(throw_bad_typeid): Likewise.
	(build_dynamic_cast_1): Likewise.
	* gcc/cp/init.c (build_builtin_delete_call): Use build_call_n.
	* gcc/cp/decl.c (expand_static_init): Likewise.
	* gcc/cp/except.c (cp_protect_cleanup_actions): Likewise.
	* gcc/cp/cp-gimplify.c (genericize_eh_spec_block): Likewise.
	(gimplify_must_not_throw_expr): Likewise.
	(cxx_omp_apply_fn): Use build_call_a.

From-SVN: r122411
2007-02-28 14:21:20 -05:00
Jan Hubicka 76bf4853ce predict.def (PRED_TREE_EARLY_RETURN, [...]): Update outcomes.
* predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
	PRED_NEGATIVE_RETURN): Update outcomes.

From-SVN: r122410
2007-02-28 18:27:07 +00:00
Bernd Schmidt 3b1bf459a3 calls.c (emit_library_call_value_1): Handle partial registers correctly when building up CALL_INSN_FUNCTION_USAGE.
* calls.c (emit_library_call_value_1): Handle partial registers
	correctly when building up CALL_INSN_FUNCTION_USAGE.

From-SVN: r122396
2007-02-28 00:37:09 +00:00
John David Anglin e214de0a0a predicates.md (move_src_operand): Allow zero for mode.
* pa/predicates.md (move_src_operand): Allow zero for mode.
	* pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
	move pattern.

From-SVN: r122388
2007-02-28 00:11:14 +00:00
Uros Bizjak 8ab9333261 re PR target/30970 (Register zeroing by xor N,N should be moved out of loop)
PR target/30970
        * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
        *movv2df_internal): Enable pattern only for valid operand
        combinations.
        * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
        tie only 128bit modes. For MMX registers, tie only 64bit modes.

testsuite/ChangeLog:

	PR target/30970
	* gcc.target/i386/gfortran.dg/pr30970.c: New test.

From-SVN: r122387
2007-02-27 22:27:27 +01:00
Mike Stump 3b41414683 darwin-crt3.c: Avoid compilation when compiling for a kext multilib.
* config/darwin-crt3.c: Avoid compilation when compiling for a
	kext multilib.

From-SVN: r122385
2007-02-27 20:47:55 +00:00
Joseph Myers f686ec0522 mkheaders.in (incdir): Use include-fixed not include.
fixincludes:
	* mkheaders.in (incdir): Use include-fixed not include.

gcc:
	* Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
	FIXED_INCLUDE_DIR.
	(stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
	for fixed headers and limits.h.
	(install-include-dir, install-headers-tar, install-headers-cpio,
	install-headers-cp, real-install-headers-tar,
	real-install-headers-cpio, real-install-headers-cp): Handle
	include-fixed as well as include.
	(install-mkheaders): Don't install files that go only in include
	not include-fixed.
	* cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
	from GCC_INCLUDE_DIR.
	* gcc.c (process_command): Remove special -BstageN/ handling.
	(do_spec_1): Add include-fixed directories.

From-SVN: r122384
2007-02-27 20:32:13 +00:00
Bernd Schmidt 01e7cd6e29 t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and _smulsi3_highpart.
* config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
	_smulsi3_highpart.
	* config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
	New functions.
	* config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
	patterns.

From-SVN: r122379
2007-02-27 16:29:10 +00:00
Mark Mitchell f6fc5c864b c-common.c (get_priority): Add check for SUPPORTS_INIT_PRIORITY.
* c-common.c (get_priority): Add check for
	SUPPORTS_INIT_PRIORITY.

	* lib/target-supports.exp (check_effective_target_init_priority):
	Remove Solaris special case.

From-SVN: r122378
2007-02-27 15:49:23 +00:00
Bernd Schmidt 9713091585 bfin.md (rotl16, [...]): New patterns.
* config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.

From-SVN: r122377
2007-02-27 15:26:19 +00:00
Bernd Schmidt 6ce986b971 bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg instead of R2.
* config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
	instead of R2.

From-SVN: r122376
2007-02-27 15:20:47 +00:00
Bernd Schmidt 329437dd43 bfin.md (ssashiftv2hi3, [...]): Fix output template to use half reg for operand 2.
* config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
	lshifthi3): Fix output template to use half reg for operand 2.

From-SVN: r122374
2007-02-27 13:55:56 +00:00
Bernd Schmidt 2889abeda3 bfin.h (enum reg_class, [...]): Add D0REGS through D7REGS.
* config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
	REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
	(CONSTRAINT_LEN): Add entry for 'q'.
	(REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
	Add 'q' constraints.
	(REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
	(CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.

	* config/bfin/bfin.md (add_with_carry): New pattern.
	(s_or_u, su_optab, su_modifier): New code macros/attrs.
	(<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
	<su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
	support unsigned multiplies too.  Removed incorrect commutativity from
	operand 1 constraint where appropriate.
	(usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
	patterns.
	(<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
	<su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
	New patterns.
	(usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
	usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
	usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
	usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
	usmulhisi_hh_huh): New patterns.

From-SVN: r122373
2007-02-27 13:44:10 +00:00
Bernd Schmidt ce27ef3d72 bfin.c: Include "cfglayout.h".
* config/bfin/bfin.c: Include "cfglayout.h".
	(MAX_LSETUP_DISTANCE): New macro.
	(struct loop_info): New members incoming, incoming_src and
	incoming_dest.  Delete member predecessor.
	(length_for_loop): New function.
	(bfin_optimize_loop): Handle more different loop structures.
	(bfin_discover_loop): Rework detection of predecessor blocks by
	examining incoming edges.
	(bfin_discover_loops, bfin_free_loops): New functions, broken out of
	bfin_reorg_loops.
	(bfin_reorder_loops): New function.
	(bfin_reorg_loops): Use these three new functions.

From-SVN: r122372
2007-02-27 13:25:41 +00:00
Bernd Schmidt 9b02a95e80 bfin.md (doloop_end): FAIL if counter reg isn't SImode.
* config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.

From-SVN: r122371
2007-02-27 13:13:26 +00:00
Andreas Schwab 3b4ed48b65 * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
From-SVN: r122368
2007-02-27 10:45:58 +00:00
Jan Hubicka dcb995f769 predict.c (last_basic_block_p): Remove.
* predict.c (last_basic_block_p): Remove.
	(tree_estimate_probability): Update return heuristic for commonized
	return blocks.

From-SVN: r122367
2007-02-27 10:21:55 +00:00
Brooks Moses e5fc6da81a * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
From-SVN: r122366
2007-02-27 02:19:59 -08:00
Brooks Moses 7771bb621a gcc/ChangeLog ---------------------------------------------------------
gcc/ChangeLog ---------------------------------------------------------
	* doc/include/gcc-common.texi (versionsubtitle): New macro.
	* doc/cpp.texi: Standardize title page.
	* doc/cppinternals.texi: Likewise.
	* doc/gcc.texi: Standardize title page, remove version number
	from copyright page.
	* doc/gccint.texi: Likewise.
	* doc/install.texi: Standardize title page, add table of
	contents.

ada/ChangeLog ---------------------------------------------------------
	* gnat-style.texi: Standardize title page.
	* gnat_rm.texi: Likewise.
	* gnat_ugn.texi: Likewise.

fortran/ChangeLog -----------------------------------------------------
	* gfortran.texi: Standardize title page, remove version number
	from copyright page.

treelang/ChangeLog ----------------------------------------------------
	* treelang.texi: Standardize title page, remove version number
	from copyright page.

From-SVN: r122358
2007-02-26 22:00:47 -08:00
Jan Hubicka 75b6bb627c predict.def: Set outcomes according to more recent results.
* predict.def: Set outcomes according to more recent results.
	(PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
	Remove dead predictors.
	* predict.c (return_prediction): Fix pasto.

From-SVN: r122347
2007-02-27 00:07:03 +00:00
Bernd Schmidt 4898239452 loop-iv.c (simplify_using_initial_values): Fix oversight in previous change; avoid a memory leak when returning early.
* loop-iv.c (simplify_using_initial_values): Fix oversight in previous
	change; avoid a memory leak when returning early.

From-SVN: r122346
2007-02-26 23:42:43 +00:00
Mark Mitchell 57a4c089e2 c-decl.c (static_ctors): Move to c-common.c.
* c-decl.c (static_ctors): Move to c-common.c.
	(static_dtors): Likewise.
	(finish_function): Use c_record_cdtor_fn.
	(build_cdtor): Move to c-common.c.
	(c_write_global_declarations): Use c_build_cdtor_fns.
	* c-common.h (static_ctors): Declare.
	(static_dtors): Likewise.
	(c_record_cdtor_fn): Likewise.
	(c_build_cdtor_fns): Likewise.
	* c-common.c (static_ctors): New variable.
	(static_dtors): Likewise.
	(c_record_cdtor_fn): New function.
	(build_cdtor): Move from c-decl.c
	(c_build_cdtor_fns): New function.

	* semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.
	* decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.

From-SVN: r122341
2007-02-26 21:14:24 +00:00
Mark Mitchell b2f4bed837 output.h (assemble_addr_to_section): Declare.
* output.h (assemble_addr_to_section): Declare.
	(get_cdtor_priority_section): Likewise.
	* varasm.c (assemble_addr_to_section): New function.
	(get_cdtor_priority_section): Likewise.
	(default_named_section_asm_out_destructor): Use them.
	(destor_dtor_section_asm_out_destructor): Likewise.
	(default_named_section_asm_out_constructor): Likewise.
	(default_ctor_section_asm_out_constructor): Likewise.
	* config.gcc (*-*-vxworks*): Include vxworks.o.
	* config/t-vxworks (vxworks.o): New target.
	* config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
	(TARGET_ASM_CONSTRUCTOR): Define.
	(TARGET_ASM_DESTRUCTOR): Likewise.
	(vxworks_asm_out_constructor): Declare.
	(vxworks_asm_out_destructor): Likewise.

	* c-common.c (get_priority): Check that we have not just an
	INTEGER_CST, but an integer constant with integeral type.

	* gcc.dg/vxworks/vxworks.exp: New file.
	* gcc.dg/vxworks/initpri1.c: Likewise.
	* gcc.dg/vxworks/initpri2.c: Likewise.
	* gcc.dg/initpri2.c: Add more tests.
	* g++.dg/special/initpri2.C: Likewise.

From-SVN: r122335
2007-02-26 15:53:51 +00:00
Uros Bizjak c4a4d1a076 re PR tree-optimization/30938 (Bootstrap fails on x86_64 for -ftree-vectorize)
PR tree-optimization/30938
        * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
        use &dt[nargs-1] instead of &dt[nargs] in the call to
        vect_is_simple_use().

From-SVN: r122323
2007-02-26 00:18:45 +01:00
Ulrich Weigand b098aaf2ae reload.c (find_reloads_address_1): Handle PLUS expressions resulting from register elimination as PRE_MODIFY /...
* reload.c (find_reloads_address_1): Handle PLUS expressions resulting
	from register elimination as PRE_MODIFY / POST_MODIFY increments.
	Do not attempt to handle MEM inside auto-inc expressions.
	* reload1.c (eliminate_regs_1): Do not attempt to handle elimination
	of a register modified by an auto-inc expression.  However, do handle
	elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
	(elimination_effects): Prohibit elimination of a register modified
	by an auto-inc expression.  Disable register elimination rules whose
	target register is modified by an auto-inc expression with variable
	increment.

From-SVN: r122318
2007-02-25 20:56:46 +00:00
Zdenek Dvorak 4839cb59b3 tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix off-by-one error.
* tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
	off-by-one error.
	(array_at_struct_end_p): New function.
	(idx_infer_loop_bounds): Use it.
	(estimate_numbers_of_iterations_loop): Export.
	* predict.c (predict_loops): Use estimated_loop_iterations_int.
	Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
	(tree_estimate_probability): Call record_loop_exits.
	* tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
	(estimated_loop_iterations, estimated_loop_iterations_int,
	estimated_loop_iterations_tree): New functions.
	(analyze_siv_subscript_cst_affine,
	compute_overlap_steps_for_affine_1_2,
	analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
	(analyze_miv_subscript): Use estimated_loop_iterations_tree.
	* predict.def (PRED_LOOP_ITERATIONS): Update comment.
	(PRED_LOOP_ITERATIONS_GUESSED): New.
	* cfgloop.c (record_loop_exits): Do nothing if there are no loops.
	* cfgloop.h (estimate_numbers_of_iterations_loop,
	estimated_loop_iterations_int): Declare.

From-SVN: r122316
2007-02-25 19:49:22 +00:00
Mark Mitchell fc8600f9c1 extend.texi: Document optional priority argument to constructors and destructors.
* doc/extend.texi: Document optional priority argument to
	constructors and destructors.
	* tree.c (init_priority_for_decl): Adjust GTY markers.
	(init_ttree): Use priority-info hash functions for
	init_priority_for_decl.
	(tree_map_eq): Rename to ...
	(tree_map_base_eq): ... this.
	(tree_map_marked_p): Rename to ...
	(tree_map_base_marked_p): ... this.
	(tree_map_base_hash): New function.
	(decl_init_priority_lookup): Rework.
	(decl_fini_priority_lookup): New function.
	(decl_priority_info): New function.
	(decl_init_priority_insert): Use it.
	(decl_fini_priority_insert): Likewise.
	(decl_restrict_base_lookup): Adjust for refactoring of tree_map
	hierarchy.
	(decl_restrict_base_insert): Likewise.
	(decl_debug_expr_insert): Likewise.
	(decl_value_expr_lookup): Likewise.
	(decl_value_expr_insert): Likewise.
	* tree.h (priority_type): New type.
	(decl_init_priority_lookup): Use priority_type.
	(decl_fini_priority_lookup): New function.
	(decl_init_priority_insert): Use priority_type.
	(decl_fini_priority_insert): New function.
	(DECL_HAS_INIT_PRIORITY): Tweak comments.
	(DECL_INIT_PRIORITY): Likewise.
	(SET_DECL_INIT_PRIORITY): Add comment.
	(DECL_FINI_PRIORITY): New macro.
	(SET_DECL_FINI_PRIORITY): Likewise.
	(DEFAULT_INIT_PRIORITY): Document.
	(MAX_INIT_PRIORITY): Likewise.
	(MAX_RESERVED_INIT_PRIORITY): Likewise.
	(tree_map_base): New type.
	(tree_map_base_eq): New function.
	(tree_map_base_hash): Likewise.
	(tree_map_base_marked_p): Likewise.
	(tree_map): Inherit from tree_map_base.
	(tree_map_eq): Make it a macro.
	(tree_map_marked_p): Likewise.
	(tree_int_map): Inherit from tree_map_base.
	(tree_int_map_eq): Make it a macro.
	(tree_int_map_hash): Likewise.
	(tree_int_map_marked_p): Likewise.
	(tree_priority_map): New type.
	(tree_priority_map_eq): New macro.
	(tree_priority_map_hash): Likewise.
	(tree_priority_map_marked_p): Likewise.
	* varasm.c (emults_decl): Adjust for refactoring of tree_map
	hierarchy.
	(emutls_common_1): Likewise.
	* lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
	* tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
	of tree_map hierarchy.
	* tree-cfg.c (move_stmt_r): Likewise.
	(new_label_mapper): Likewise.
	* c-tree.h (c_expand_body): Move to ...
	* c-common.h (c_expand_body): ... here.
	* c-decl.c (c_expand_body): Move to ...
	* c-common.c (c_expand_body): ... here.
	(c_common_attribute_table): Allow 1 argument for the constructor
	and destructor attributes.
	(get_priority): New function.
	(handle_constructor_attribute): Set DECL_INIT_PRIORITY.
	(handle_destructor_attribute): Set DECL_FINI_PRIORITY.

	* cp-tree.h (static_ctors): Remove.
	* cp-tree.h (static_dtors): Likewise.
	* cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
	refactoring of tree_map hierarchy.
	(decl_shadowed_for_var_insert): Likewise.
	* semantics.c (expand_body): Use c_expand_body.
	(expand_or_defer_fn): Don't update static_ctors or static_dtors.
	* decl2.c (static_ctors): Remove.
	(static_dtors): Likewise.
	(generate_ctor_or_dtor_function): Pass NULL_TREE to
	objc_generate_static_init_call.  Do not call static_[cd]tors.
	(generate_ctor_and_dtor_functions_for_priority): Do not check for
	static_[cd]tors.
	(cp_write_global_declarations): Likewise.

	* decl.c (annotate_value): Adjust for refactoring of tree_map
	hierarchy.

	* gcc.dg/initpri1.c: New test.
	* gcc.dg/initpri2.c: Likewise.
	* g++.dg/special/initpri1.C: New test.
	* g++.dg/special/initpri2.C: Likewise.
	* g++.dg/special/conpr-1.C: Use init_priority effective target.
	* g++.dg/special/conpr-2.C: Likewise.
	* g++.dg/special/conpr-3.C: Likewise.
	* g++.dg/special/conpr-4.C: Likewise.
	* g++.dg/special/initp1.C: Likewise.
	* g++.dg/special/ecos.exp: Remove code to detect availability of
	constructor priorities.
	* lib/target-support.exp (target_init_priority): New function.

From-SVN: r122315
2007-02-25 18:47:05 +00:00
Jan Hubicka 2a025b54f6 re PR middle-end/30509 (ice for legal code with -O3)
PR middle-end/30509
	* tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.

From-SVN: r122314
2007-02-25 18:11:20 +00:00
Jan Hubicka bd8d4d1917 re PR target/30778 (invalid code generation for memset() with -mtune=k8)
PR target/30778
	* i386.c (counter_mode): New function.
	(expand_set_or_movmem_via_loop): Use it.
	(expand_movmem_epilogue): Likewise; fix pasto.
	(ix86_expand_movmem): Do emit guard even for constant counts.
	(ix86_expand_setmem): Likewise.

From-SVN: r122313
2007-02-25 17:37:37 +00:00
Nick Clifton e133c867ea frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
* config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
   (JUMP_TABLES_IN_TEXT_SECTION): Define.

From-SVN: r122311
2007-02-25 07:47:49 +00:00
Uros Bizjak 730130547b re PR target/30770 (BOOT_CFLAGS="-O2 -g -mtune=nocona" miscompiled the stage 3 compiler)
PR target/30770
        * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
        count argument with 0x10, not with 0x16.
        (expand_setmem_epilogue): Ditto.

From-SVN: r122301
2007-02-25 00:29:30 +01:00
Mike Stump 320ce1d3a3 i386.c (output_pic_addr_const): Stubify optimized symbols.
* config/i386/i386.c (output_pic_addr_const): Stubify optimized
	symbols.

From-SVN: r122297
2007-02-24 22:27:26 +00:00
Richard Guenther a31498d293 re PR middle-end/30951 (Does not fold x + CST == x and x + CST != x)
2007-02-24  Richard Guenther  <rguenther@suse.de>

	PR middle-end/30951
	* fold-const.c (fold_binary): Fold x +- CST op x for
	EQ_EXPR and NE_EXPR.

	* gcc.dg/pr30951.c: New testcase.

From-SVN: r122295
2007-02-24 19:55:47 +00:00
John David Anglin 1e6e2c303b pa.md (muldi3): Force subregs to registers in 64-bit expander.
* pa.md (muldi3): Force subregs to registers in 64-bit expander.

From-SVN: r122294
2007-02-24 19:16:45 +00:00
Jan Hubicka a1d3118773 cgraphunit.c (decide_is_function_needed): Honor -fkeep-inline-functions.
* cgraphunit.c (decide_is_function_needed): Honor
	-fkeep-inline-functions.

From-SVN: r122293
2007-02-24 19:02:40 +00:00
Kaveh R. Ghazi 3d577eafa1 builtins.c (fold_builtin_modf): New.
* builtins.c (fold_builtin_modf): New.
	(fold_builtin_2): Use it.

testsuite:
	* gcc.dg/torture/builtin-modf-1.c: New test.

From-SVN: r122292
2007-02-24 18:11:33 +00:00
Bernd Schmidt 00c73ae637 loop-iv.c (simplify_using_initial_values): Return if the expression becomes invalid due to altered regs.
* loop-iv.c (simplify_using_initial_values): Return if the
	expression becomes invalid due to altered regs.

From-SVN: r122291
2007-02-24 16:30:51 +00:00
Bernd Schmidt 606830199c loop-iv.c (implies_p): Detect additional cases where A implies B.
* loop-iv.c (implies_p): Detect additional cases where A implies B.
	(determine_max_iter): Take additional LOOP arg; all callers changed.
	Lose broken logic dealing with PLUS.  Try to limit the upper bound by
	one using simplifications.

From-SVN: r122288
2007-02-24 13:40:54 +00:00
DJ Delorie c4f46fdee9 * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
From-SVN: r122285
2007-02-23 20:28:22 -05:00
Mike Stump 196bea21f1 tlink.c (scan_linker_output): Parse linker messages from darwin9's linker better.
* tlink.c (scan_linker_output): Parse linker messages from
	darwin9's linker better.

From-SVN: r122283
2007-02-24 00:30:30 +00:00
Steve Ellcey a615f803e4 re PR debug/29614 (DWARF information for function static variable is missing after unrelated code addition)
PR debug/29614
	* varpool.c (varpool_assemble_pending_decls):  Set
	varpool_last_needed_node to null.

From-SVN: r122277
2007-02-24 00:11:39 +00:00
DJ Delorie bf69f9d223 i386.c (ix86_data_alignment): Don't specify an alignment bigger than the object file can handle.
* config/i386/i386.c (ix86_data_alignment): Don't specify an
alignment bigger than the object file can handle.

From-SVN: r122275
2007-02-23 18:16:47 -05:00
Uros Bizjak 4afb77911f re PR target/30825 (current mainline fails to bootstrap when -msse is used)
PR target/30825
        * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
        zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
        (*movsf_1): Penalize MMX moves.

From-SVN: r122268
2007-02-23 19:19:07 +01:00
Bernd Schmidt c67dc1a321 loop-iv.c (determine_max_iter): Moved in front of its sole user.
* loop-iv.c (determine_max_iter): Moved in front of its sole user.

From-SVN: r122264
2007-02-23 18:03:56 +00:00
Bernd Schmidt 0a8f8c4572 bfin.md (doloop_end): Fail for loops that can iterate 2^32-1 or more times unless...
* config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
	2^32-1 or more times unless flag_unsafe_loop_optimizations.

From-SVN: r122262
2007-02-23 15:52:27 +00:00
Kaveh R. Ghazi 6351a719ff builtins.c (fold_builtin_logb, [...]): New.
* builtins.c (fold_builtin_logb, fold_builtin_significand): New.
	(fold_builtin_1): Use them.
	* fold-const.c (tree_expr_nonnegative_warnv_p): Handle
	BUILT_IN_SIGNIFICAND.

testsuite:
	* gcc.dg/torture/builtin-logb-1.c: New test.
	* gcc.dg/torture/builtin-math-2.c: Test logb/ilogb.
	* gcc.dg/torture/builtin-nonneg-1.c: Test significand.
	* gcc.dg/torture/builtin-frexp-1.c: Use -fno-finite-math-only on
	sh* targets.

From-SVN: r122257
2007-02-23 14:27:50 +00:00
H.J. Lu 95764a8f6e i386.c (bdesc_1arg): Initialize IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with...
2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (bdesc_1arg): Initialize
	IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
	"__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
	(ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
	and IX86_BUILTIN_MOVSLDUP.

From-SVN: r122254
2007-02-23 01:34:34 -08:00
Paolo Bonzini c0729306a6 re PR rtl-optimization/30841 (Missed optimizations for sbi/cbi instructions)
2007-02-22  Paolo Bonzini  <bonzini@gnu.org>

	PR rtl-optimization/30841
        * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.

From-SVN: r122253
2007-02-23 07:45:34 +00:00
Kaveh R. Ghazi 7a2a25ab4f builtins.c (fold_builtin_frexp): New.
* builtins.c (fold_builtin_frexp): New.
	(fold_builtin_2): Use it.

testsuite:
	* gcc.dg/torture/builtin-frexp-1.c: New test.

From-SVN: r122249
2007-02-23 04:49:21 +00:00
Mark Mitchell 03d12b648e * doc/invoke.texi (Spec Files): Document getenv spec function.
From-SVN: r122248
2007-02-23 03:00:26 +00:00
Mark Mitchell 30d8946bae gcc.c (getenv_spec_function): New function.
* gcc.c (getenv_spec_function): New function.
	(static_spec_functions): Add it.
	* config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
	(VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
	header files.

From-SVN: r122240
2007-02-22 23:49:15 +00:00
Michael Matz a0ad3539f4 dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
* dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
        (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.

        * cp-tree.h (TFF_NO_OUTER_SCOPE): New formatting flag.
        * error.c (dump_aggr_type, dump_simple_decl, dump_decl,
        dump_function_decl): Guard emitting outer scopes by new flag.
        * cp-lang.c (cxx_dwarf_name): New function.
        (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
        * pt.c (classtype_mangled_name, mangle_class_name_for_template):
        Remove functions.
        (push_template_decl_real, lookup_template_class): Remove calls
        to above functions.

From-SVN: r122230
2007-02-22 17:03:48 +00:00
Ian Lance Taylor 0c5c188f07 re PR debug/30898 (ICE with anonymous union and -g)
./:	PR debug/30898
	* dwarf2out.c (concatn_mem_loc_descriptor): New static function.
	(mem_loc_descriptor): Call it.
testsuite/:
	* g++.dg/debug/pr30898.C: New test.

From-SVN: r122228
2007-02-22 14:55:09 +00:00
Ira Rosen 021a93e31e * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
From-SVN: r122226
2007-02-22 13:10:49 +00:00
Ira Rosen 8fca6de564 re PR tree-optimization/30843 (ice for legal code with -ftree-vectorize -O2)
PR tree-optimization/30843
	* tree-vect-transform.c (vect_transform_loop): Remove strided scalar
	stores only after all the group is vectorized.

From-SVN: r122225
2007-02-22 12:30:12 +00:00
Dorit Nuzman b3832a9f88 re PR tree-optimization/30858 (ice for legal code with -O2 -ftree-vectorize)
PR tree-optimization/30858
        * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
        in the reduction cycle have a single use in the loop.
        * tree-vectorizer.h (relevant): Add documentation.

From-SVN: r122220
2007-02-22 08:16:18 +00:00
Mike Stump ba7da42a75 configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
* configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
	* configure: Regenerate.

From-SVN: r122211
2007-02-21 23:58:22 +00:00
Trevor Smigiel 73701e2736 Change the defaults of some parameters and options.
2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>

	Change the defaults of some parameters and options.
	* config/spu/spu-protos.h (spu_optimization_options): Declare.
	* config/spu/spu.c (spu_optimization_options): Add.
	(spu_override_options): Change params in spu_optimization_options.
	* config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.

	Register 127 is only 16 byte aligned when used as a frame pointer.
	* config/spu/spu-protos.h (spu_init_expanders): Declare.
	* config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
	HARD_FRAME_POINTER_REGNUM.
	(spu_legitimate_address):  Use regno_aligned_for_reload.
	(regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
	aligned when frame_pointer_needed is true.
	(spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
	to 8 bits.
	* config/spu/spu.h (INIT_EXPANDERS): Define.

	Make sure shift and rotate instructions have valid immediate operands.
	* config/spu/predicates.md (spu_shift_operand): Remove.
	* config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
	* config/spu/constraints.md (W, O): Extend range. 
	* config/spu/spu.md (umask, nmask): Define.
	(ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
	lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
	rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
	rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
	spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
	(lshr<mode>3_reg):  Fix rtl description.

	Make sure mulhisi immediate operands are valid.
	* config/spu/predicates.md (imm_K_operand): Add.
	* config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.

	Generate constants using fsmbi and andi.
	* config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
	(print_operand, spu_split_immediate, classify_immediate,
	fsmbi_const_p): Handle IC_FSMBI2.

	Correctly handle a CONST_VECTOR containing symbols.
	* config/spu/spu.c (print_operand): Handle HIGH correctly.
	(spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
	(immediate_load_p): Allow symbols that use 2 instructions to create.
	(classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
	with symbols when flag_pic is set.
	(const_vector_immediate_p): New.
	(logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
	accept a CONST_VECTOR with symbols.
	(spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
	accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
	correctly.
	* config/spu/spu.md (high, low): Delete.
	(low_<mode>): Define.

	Remove INTRmode and INTR_REGNUM, which didn't work.
	* config/spu/spu.c (spu_conditional_register_usage): Remove reference
	of INTR_REGNUM.
	* config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
	set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
	peephole2 pattern): Don't use INTR or 131.
	(movintrcc): Delete.
	* config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
	CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
	* config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
	(UNSPEC_SET_INTR): Add.
	* config/spu/spu-modes.def (INTR): Remove.

	More accurate warnings about run-time relocations.
	* config/spu/spu.c (reloc_diagnostic): Test in_section.

	Correctly warn about immediate arguments to specific intrinsics.
	* config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
	(spu_expand_builtin_1): Call spu_check_builtin_parm before checking
	the instruction predicate.

	Fix tree check errors with latest update.
	* config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
	CALL_EXPR_ARG.
	(spu_expand_builtin): Use CALL_EXPR_FN.

	Add missing specific intrinsics.
	* config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
	si_bislede.
	* config/spu/spu_internals.h: Ditto.

	Fix incorrect operand modifiers.
	* config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
	* config/spu/spu.md (xor<mode>3):  Change %S to %J.

	Optimize one case of zero_extend of a vec_select.
	* config/spu/spu.md (_vec_extractv8hi_ze):  Add.

	Accept any immediate for hbr.
	* config/spu/spu.md (hbr):  Change s constraints to i.

From-SVN: r122210
2007-02-21 23:28:46 +00:00
Paul Brook 5b0202af18 arm.c (thumb2_final_prescan_insn): Don't incrememnt condexec_count when skipping USE and CLOBBER.
2007-02-21  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
	condexec_count when skipping USE and CLOBBER.

From-SVN: r122205
2007-02-21 21:30:43 +00:00
Nick Clifton 21af5cdfe2 common.opt (Warray-bounds): Add Warning attribute.
* common.opt (Warray-bounds): Add Warning attribute.
  (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch): Likewise.
  (fsized-zeroes): Add Optimization attribute.
  (fsplit-wide-types, ftree-scev-cprop): Likewise.
* c.opt (Wc++0x-compat): Add Warning attribute.

From-SVN: r122200
2007-02-21 15:40:29 +00:00
Ulrich Weigand 551d69292f re PR middle-end/30761 (Error: unsupported relocation against sfp)
PR middle-end/30761
	* reload1.c (eliminate_regs_in_insn): In the single_set special
	case, attempt to re-recognize the insn before falling back to
	having reload fix it up.

From-SVN: r122199
2007-02-21 15:05:01 +00:00
Eric Christopher 2396bce1bb frv.c (frv_read_argument): Take a tree and int argument.
2007-02-20  Eric Christopher  <echristo@gmail.com>

        * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
        Rewrite accordingly.
        (frv_read_iacc_argument): Ditto.
        (frv_expand_set_builtin): Take a call instead of arglist, update for
        above changes.
        (frv_expand_unop_builtin): Ditto.
        (frv_expand_binop_builtin): Ditto.
        (frv_expand_cut_builtin): Ditto.
        (frv_expand_binopimm_builtin): Ditto.
        (frv_expand_voidbinop_builtin): Ditto.
        (frv_expand_int_void2arg): Ditto.
        (frv_expand_prefetches): Ditto.
        (frv_expand_voidtriop_builtin): Ditto.
        (frv_expand_voidaccop_builtin): Ditto.
        (frv_expand_load_builtin): Ditto.
        (frv_expand_store_builtin): Ditto.
        (frv_expand_mdpackh_builtin): Ditto.
        (frv_expand_mclracc_builtin): Ditto.
        (frv_expand_mrdacc_builtin): Ditto.
        (frv_expand_mwtacc_builtin): Ditto.
        (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
        calls for above.

From-SVN: r122182
2007-02-21 00:02:48 +00:00
Janis Johnson b639c3c245 invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
* doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
	* configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
	cmpb instruction.
	(HAVE_GAS_DFP): Check for assembler support of decimal floating
	point instructions.
	* configure: Regenerate.
	* config.in: Regenerate.
	* config/rs6000/rs6000.opt (mcmpb, mdfp): New.
	* config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
	masks to power6 and power6x and to POWERPC_MASKS.
	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
	_ARCH_PWR6.
	* config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
	* config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
	* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
	Access PROTOTYPE as variable, not mask.

From-SVN: r122179
2007-02-20 23:11:43 +00:00
Steven Bosscher 7cd689bcf0 rtl.h (remove_reg_equal_equiv_notes): New prototype.
* rtl.h (remove_reg_equal_equiv_notes): New prototype.
	* rtlanal.c (remove_reg_equal_equiv_notes): New function.
	* combine.c (adjust_for_new_dest): Use it.
	* postreload.c (reload_combine): Likewise.

From-SVN: r122178
2007-02-20 22:14:41 +00:00
Steven Bosscher ea8f106d4c rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ* notes on an insn with multiple sets...
* rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
	notes on an insn with multiple sets, even if single_set returns
	non-NULL for that insn.

From-SVN: r122177
2007-02-20 22:11:52 +00:00
Kaveh R. Ghazi 8df79ac594 fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb, scalbn and scalbln.
* fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
	scalbn and scalbln.

testsuite:
	* gcc.dg/torture/builtin-nonneg-1.c: Add checks for scalb, scalbn
	and scalbln.

From-SVN: r122169
2007-02-20 19:29:48 +00:00
Geoffrey Keating 32ec65429c Index: gcc/ChangeLog
2007-02-20  Geoffrey Keating  <geoffk@apple.com>

	* config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
	if user didn't pass it.
	* config/i386/darwin.h (CC1_SPEC): Likewise.
	* config/rs6000/darwin.h (CC1_SPEC): Likewise.
	(DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
	-mmacosx-version-min.

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

	* gcc.dg/darwin-minversion-1.c: New.
	* gcc.dg/darwin-minversion-2.c: New.

From-SVN: r122166
2007-02-20 16:45:38 +00:00
Kaveh R. Ghazi 0c0d910d23 optabs.h (enum optab_index): Add new OTI_scalb.
* optabs.h (enum optab_index): Add new OTI_scalb.
	(scalb_optab): Define corresponding macro.
	* optabs.c (init_optabs): Initialize scalb_optab.
	* genopinit.c (optabs): Implement scalb_optab using scalb?f3
	patterns.
	* builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
	BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
	(expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
	and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
	flag_unsafe_math_optimizations is set.

	* config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
	to implement scalbf, scalb and scalbl built-ins as inline x87
	intrinsics.

testsuite/ChangeLog

	* gcc.dg/builtins-34.c: Add scalb/scalbn/scalbln cases.

From-SVN: r122162
2007-02-20 14:33:51 +01:00
Manuel López-Ibáñez 4e2bae26bf re PR other/30824 (-Werror -Wfatal-errors should stop after the first warning)
2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
            DJ Delorie <dj@redhat.com>

	PR other/30824
	* diagnostic.c (diagnostic_count_diagnostic): Move -Werror
	logic to...
	(diagnostic_report_diagnostic): ... here, and turn them into
	real errors. If warnings are inhibited, no need to do
	anything.

testsuite/
	* gcc.dg/Wfatal.c: New.
	* gcc.dg/Wfatal-2.c: New.
	* gcc.dg/Werror-1.c: Adjust expectations.
	* gcc.dg/Werror-5.c: Likewise.
	* gcc.dg/Werror-7.c: Likewise.
	* gcc.dg/Werror-10.c: Likewise.
	* gcc.dg/Werror-11.c: Likewise.

Co-Authored-By: DJ Delorie <dj@redhat.com>

From-SVN: r122159
2007-02-20 10:18:58 +00:00
Uros Bizjak 6bdcc60c75 i386.md (expm1xf2): Reorder insn sequence for better code generation.
* config/i386/i386.md (expm1xf2): Reorder insn sequence for
	better code generation.

From-SVN: r122158
2007-02-20 10:39:25 +01:00
Ben Elliston 9e4bd0ea12 * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
From-SVN: r122152
2007-02-20 14:38:39 +11:00
Kazu Hirata a7b376eeb6 c4x.md, [...]: Follow spelling conventions.
* config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
	config/fr30/fr30.md, config/i386/i386.h,
	config/iq2000/iq2000.h, config/iq2000/predicates.md,
	config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
	config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
	config/pdp11/pdp11.c, config/pdp11/pdp11.h,
	config/rs6000/altivec.md, config/rs6000/rs6000.c,
	config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
	config/sparc/sparc.c, config/sparc/sparc.h,
	config/sparc/sparc.md, config/spu/constraints.md,
	config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
	conventions.

From-SVN: r122151
2007-02-20 02:26:06 +00:00
Kazu Hirata a50aa82741 alpha.c, [...]: Follow spelling conventions.
* config/alpha/alpha.c, config/alpha/alpha.md,
	config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
	config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
	config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
	config/arm/lib1funcs.asm: Follow spelling conventions.

From-SVN: r122150
2007-02-20 02:10:57 +00:00
Alan Modra 10daf67706 re PR middle-end/29943 (gcc generate incorrect alias symbols for PPC)
PR target/29943
	* varasm.c (use_blocks_for_decl_p): Return false for decls with
	alias attribute.

From-SVN: r122148
2007-02-20 11:55:41 +10:30
Kazu Hirata 8af636537a * doc/invoke.texi (-ftree-lrs): Remove.
From-SVN: r122141
2007-02-19 23:35:48 +00:00
Diego Novillo ac02df494c tree-ssa-pre.c (create_value_expr_from): Initialize POOL to NULL.
* tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
	NULL.

From-SVN: r122140
2007-02-19 18:26:38 -05:00
Lee Millward 767fad4cb9 ia64.c (ia64_expand_builtin): Use the new CALL_EXPR_FN macro for retrieving the function declaration of the...
* config/ia64/ia64.c (ia64_expand_builtin): Use the
	new CALL_EXPR_FN macro for retrieving the function 
	declaration of the input expression.

From-SVN: r122139
2007-02-19 22:39:13 +00:00
Manuel López-Ibáñez c116cd05fb c.opt (Waddress): New.
2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* c.opt (Waddress): New.
	* common.opt (Walways-true): Delete.
	(Wstring-literal-comparison): Delete.
	* doc/invoke.texi (Warning Options): Delete -Walways-true and
	-Wstring-literal-comparison. Add -Waddress.
	(Waddress): New.
	(Walways-true): Delete.
	(Wstring-literal-comparison): Delete.
	* doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
	consistently instead of -Walways-true in example.
	* c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
	* c-typeck.c (parser_build_binary_op): Replace
	-Wstring-literal-comparison and -Walways-true with -Waddress.
	* c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
	with -Waddress.

cp/
	* typeck.c (build_binary_op): Replace -Wstring-literal-comparison
	and -Walways-true with -Waddress.
	* cvt.c (convert_to_void): Replace unconditional warning with
	-Waddress.

testsuite/
	* gcc.dg/20031012-1.c: Replace -Walways-true with -Waddress.
	* gcc.dg/Walways-true-1.c: Likewise.
	* gcc.dg/weak/weak-3.c: Likewise.
	* gcc.dg/Werror-1.c: Likewise.
	* gcc.dg/Werror-3.c: Likewise.
	* gcc.dg/Werror-4.c: Likewise.
	* gcc.dg/Werror-5.c: Likewise.
	* gcc.dg/Werror-6.c: Likewise.
	* gcc.dg/Werror-7.c: Likewise.
	* gcc.dg/Werror-8.c: Likewise.
	* gcc.dg/Werror-10.c: Likewise.
	* gcc.dg/Werror-11.c: Likewise.
	* gcc.dg/Werror-12.c: Likewise.
	* g++.old-deja/g++.mike/warn8.C: Likewise.
	* g++.dg/warn/Walways-true-1.C: Likewise.
	* g++.dg/warn/Walways-true-2.C: Likewise.
	* g++.dg/warn/noeffect8.C: Warn only with -Waddress.
	* g++.dg/warn/Wstring-literal-comparison-1.C: Replace
	-Wstring-literal-comparison with -Waddress.
	* gcc.dg/Wstring-literal-comparison-4.c: Replace
	-Wno-string-literal-comparison with -Wno-address.

From-SVN: r122136
2007-02-19 20:02:28 +00:00
Eric Botcazou 459ffad3fd tree-cfg.c (dump_function_to_file): Be prepared for functions without DECL_STRUCT_FUNCTION initialized.
* tree-cfg.c (dump_function_to_file): Be prepared for functions
	without DECL_STRUCT_FUNCTION initialized.

From-SVN: r122135
2007-02-19 19:26:16 +00:00
Eric Botcazou df10ee2a5a gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap due to calls to functions taking pointers as parameters.
* gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
	due to calls to functions taking pointers as parameters.

From-SVN: r122133
2007-02-19 19:11:37 +00:00
Richard Henderson 80a3af5be7 re PR debug/29558 (ICE in set_variable_part, at var-tracking.c:2140)
PR debug/29558
        * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
        in memory.

From-SVN: r122131
2007-02-19 08:21:59 -08:00
Andreas Krebbel 9a6f71b45c s390.c (s390_call_saved_register_used, [...]): Adjust the way CALL_EXPR arguments are accessed to the new scheme.
2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (s390_call_saved_register_used,
	s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
	accessed to the new scheme.

From-SVN: r122129
2007-02-19 14:35:10 +00:00
Jan-Benedict Glaw 991c42ace3 * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
(cris_print_index, cris_print_operand, cris_print_operand_address)
	(cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
	(cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
	(cris_expand_pic_call_address): Use xxx_P predicate macros instead of
	GET_CODE () == xxx.
	* config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
	EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
	GO_IF_LEGITIMATE_ADDRESS): Ditto.
	* config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
	(*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
	(*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
	(*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
	(*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
	(*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
	(uminsi3, call, call_value): Ditto.
	(define_split: indir_to_reg_split, unnamed): Ditto.

From-SVN: r122128
2007-02-19 12:34:12 +00:00
Dorit Nuzman 602fea7c26 re PR tree-optimization/30795 (ice for legal code with -ftree-vectorize -O2)
PR tree-optimization/30975
        * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
        wrong assert.

From-SVN: r122127
2007-02-19 08:46:45 +00:00
Eric Christopher 5646ba1294 mips.c (mips_prepare_builtin_arg): Add argnum parameter.
2007-02-18  Eric Christopher  <echristo@gmail.com>

        * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
        Remove use of arglist.
        (mips_expand_builtin): Remove use of arglist, pass in expr.
        (mips_expand_builtin_direct): Rewrite handling for arglist removal.
        (mips_expand_builtin_movtf): Ditto.
        (mips_expand_builtin_compare): Ditto.

From-SVN: r122126
2007-02-19 07:14:24 +00:00
Alexandre Oliva 300471993f tree-sra.c (sra_build_assignment): Replace assertion checking with a comment explaining why it can't be done.
* tree-sra.c (sra_build_assignment): Replace assertion
checking with a comment explaining why it can't be done.

From-SVN: r122123
2007-02-19 06:22:43 +00:00
Sandra Loosemore 3328fbb7d1 re PR middle-end/30833 (ICE with -fdump-tree-all)
2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>

	PR middle-end/30833
	* tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
	during CALL_EXPR representation conversion.
	* tree-ssa-propagate.c (set_rhs): Likewise.

From-SVN: r122122
2007-02-18 23:12:49 -05:00
Alexandre Oliva eb441084eb tree-sra.c (sra_build_assignment): Disable assertion checking for now.
* tree-sra.c (sra_build_assignment): Disable assertion checking
for now.

From-SVN: r122121
2007-02-19 03:51:24 +00:00
Roger Sayle b56b9fe39d function.c (gimplify_parameters): Call build_gimple_modify_stmt instead of calling build2 with a GIMPLE_MODIFY_STMT.
* function.c (gimplify_parameters): Call build_gimple_modify_stmt
	instead of calling build2 with a GIMPLE_MODIFY_STMT.
	* gimple-low.c (lower_function_body, lower_builtin_setjmp):
	Likewise.
	* gimplify.c (build_stack_save_restore, gimplify_return_expr,
	gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
	gimplify_init_ctor_eval_range, gimple_push_cleanup,
	gimplify_omp_for, gimplify_omp_atomic_pipeline, 
	gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
	force_gimple_operand): Likewise.
	* ipa-cp.c (constant_val_insert): Likewise.
	* lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
	lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
	perfect_nestify): Likewise.
	* langhooks.c (lhd_omp_assignment): Likewise.
	* omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
	lower_copyprivate_clauses, lower_send_clauses,
	lower_send_shared_vars, expand_parallel_call,
	expand_omp_for_generic, expand_omp_for_static_nochunk,
	expand_omp_for_static_chunk, expand_omp_sections,
	lower_omp_single_copy, lower_omp_for_lastprivate,
	lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
	* value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
	tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
	Likewise.

From-SVN: r122120
2007-02-19 02:45:34 +00:00
Kazu Hirata da08281c06 linux-unwind.h: Fix a comment typo.
* config/m68k/linux-unwind.h: Fix a comment typo.
	* target.h: Follow spelling conventions.

From-SVN: r122119
2007-02-19 01:36:11 +00:00
Kazu Hirata 2300b9ddbb frv.c, [...]: Follow spelling conventions.
* config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
	config/frv/predicates.md: Follow spelling conventions.

From-SVN: r122118
2007-02-19 01:27:56 +00:00
Kazu Hirata 3b962ea0f7 divtab.c, [...]: Follow spelling conventions.
* config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
	config/sh/sh.md: Follow spelling conventions.

From-SVN: r122117
2007-02-19 01:20:56 +00:00
Roger Sayle 49e7a9d4b8 re PR rtl-optimization/28173 (misses constant folding)
PR rtl-optimization/28173
	* simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
	(X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
	Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
	Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
	<AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).

	* gcc.target/i386/andor-1.c: New test case.

From-SVN: r122116
2007-02-19 00:54:29 +00:00
Kaveh R. Ghazi 2b5e5642e3 builtins.c (fold_builtin_load_exponent): New.
* builtins.c (fold_builtin_load_exponent): New.
	(fold_builtin_2): Use it.

testsuite:
	* gcc.dg/torture/builtin-ldexp-1.c: New.
	* gcc.dg/torture/builtin-math-2.c: Add ldexp/scalbn/scalbln cases.

From-SVN: r122110
2007-02-19 00:14:14 +00:00
Steven Bosscher 8800a9b349 re PR rtl-optimization/30773 (Spec cpu2k6/h264ref and sphinx3 miscompare regression)
PR rtl-optimization/30773
	* local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
	if we fail to attach a REG_EQUIV note.

From-SVN: r122106
2007-02-18 22:33:23 +00:00
David Edelsohn 03f79051ae rs6000.md (bswapsi2): New define_insn and splitter.
2007-02-18  David Edelsohn  <edelsohn@gnu.org>
            Roger Sayle  <roger@eyesopen.com>

        * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.

Co-Authored-By: Roger Sayle <roger@eyesopen.com>

From-SVN: r122104
2007-02-18 15:55:31 -05:00
Sandra Loosemore 078a18a423 calls.c (initialize_argument_information): Pass original EXP and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.
2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>

	* calls.c (initialize_argument_information): Pass original EXP
	and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
	code to split complex arguments here, as part of initializing the
	ARGS array.
	(expand_call): Remove code that builds a list of arguments and
	inserts implicit arguments into it.  Instead, just count how many
	implicit arguments there will be so we can determine the size of
	the ARGS array, and let initialize_argument_information do the work.
	(split_complex_values): Delete unused function.

From-SVN: r122101
2007-02-18 14:34:28 -05:00
Eric Botcazou 483edb9201 tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
* tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.

From-SVN: r122097
2007-02-18 14:03:24 +00:00
Eric Botcazou ae22dcff00 calls.c (mem_overlaps_already_clobbered_arg_p): Return true for arg pointer based indexed addressing.
* calls.c (mem_overlaps_already_clobbered_arg_p): Return true
	for arg pointer based indexed addressing.

From-SVN: r122095
2007-02-18 13:52:46 +00:00
Kazu Hirata 27a9b99d08 ia64.h, [...]: Follow spelling conventions.
* config/ia64/ia64.h, config/ia64/ia64.md,
	config/ia64/predicates.md, config/ia64/sysv4.h: Follow
	spelling conventions.

From-SVN: r122087
2007-02-18 02:18:25 +00:00
Roman Zippel 01e304f8a9 m68k.c (split_di): New.
* config/m68k/m68k.c (split_di): New.
	* config/m68k/m68k-protos.h: Declare split_di.
	* config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
	  Improve predicate handling and split constant shifts.

From-SVN: r122084
2007-02-18 01:30:58 +00:00
Roman Zippel 3670ec284d m68k.md (extv,extzv,insv): disable dynamic parameter for register bitfield operations...
* config/m68k/m68k.md (extv,extzv,insv): disable dynamic
	parameter for register bitfield operations, general predicates
	cleanup

From-SVN: r122083
2007-02-18 01:20:15 +00:00
Roman Zippel 19a956978f linux.h (MD_UNWIND_SUPPORT): Define.
* config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
	* config/m68k/linux-unwind.h: New file.

From-SVN: r122082
2007-02-18 01:16:55 +00:00
Kazu Hirata ea2c620c64 cfgloop.c, [...]: Fix comment typos.
* cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
	config/i386/athlon.md, config/ia64/ia64.md,
	config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
	df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
	ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
	tree-ssa-loop-niter.c, tree-vect-analyze.c,
	tree-vect-transform.c: Fix comment typos.

From-SVN: r122080
2007-02-18 00:52:51 +00:00
Kazu Hirata 51db94a08e sched-deps.c (find_insn_list): Remove.
* sched-deps.c (find_insn_list): Remove.
	* sched-int.h: Remove the prototype for find_insn_list.

From-SVN: r122069
2007-02-17 04:01:30 +00:00
Geoffrey Keating e4cad568ec darwin.h (LINK_SPEC): Always pass -macosx_version_min to linker.
* config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
	to linker.
	(DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
	* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
	darwin_rs6000_override_options.
	(C_COMMON_OVERRIDE_OPTIONS): Expect
	darwin_macosx_version_min to be non-NULL always.
	(TARGET_C99_FUNCTIONS): Likewise.
	(CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
	(DARWIN_MINVERSION_SPEC): New.
	* config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
	* config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
	to cc1*.  
	(DARWIN_MINVERSION_SPEC): New.
	* config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
	value.
	* config/darwin-c.c (darwin_cpp_builtins): Expect
	darwin_macosx_version_min to be non-NULL always.

From-SVN: r122067
2007-02-17 01:47:38 +00:00
Geoffrey Keating 982afe020c * config/rs6000/rs6000.c: Clean up trailing whitespace.
From-SVN: r122066
2007-02-17 01:28:16 +00:00
Uros Bizjak fa681e3960 i386.h (x86_use_xchgb): New.
* config/i386/i386.h (x86_use_xchgb): New.
        (TARGET_USE_XCHGB): New macro.
        * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
        * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
        Split after reload into bswaphi for shifts of 8.
        (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
        (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
        or when optimizing for size.

testsuite/ChangeLog:

        * gcc.target/i386/builtin-bswap-1.c: Remove -march=nocona.
        * gcc.target/i386/builtin-bswap-3.c: Ditto.
        * gcc.target/i386/xchg-1.c: New test.
        * gcc.target/i386/xchg-2.c: New test.

From-SVN: r122049
2007-02-16 19:36:01 +01:00
Richard Guenther 421076b552 fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like DECLs but prefer SSA_NAMEs over DECLs.
2007-02-16  Richard Guenther  <rguenther@suse.de>
	Christian Bruel  <christian.bruel@st.com>

	* fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
	DECLs but prefer SSA_NAMEs over DECLs.

	* gcc.dg/strict-overflow-5.c: New testcase.

Co-Authored-By: Christian Bruel <christian.bruel@st.com>

From-SVN: r122040
2007-02-16 13:41:03 +00:00
Richard Guenther 40b448ef3a tree-flow-inline.h (single_imm_use_p): Remove.
2007-02-16  Richard Guenther  <rguenther@suse.de>

	* tree-flow-inline.h (single_imm_use_p): Remove.
	(zero_imm_uses_p): Likewise.
	* tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
	instead of single_imm_use_p.
	* tree-cfg.c (replace_uses_by): Use has_zero_use instead of
	zero_imm_uses_p.

From-SVN: r122036
2007-02-16 09:34:24 +00:00
Ralf Wildenhues 70d0631e69 re PR other/27843 (gcc-4.2-20060527 make install fails on alphaev68-dec-osf5.1b)
2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	PR other/27843
	* Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
	nested double- and backquotes.

From-SVN: r122032
2007-02-16 08:53:51 +00:00
Roger Sayle 939409afce re PR middle-end/30391 (ICE at -O1 with conditional expressions and GIMPLE_MODIFY_STMT)
PR middle-end/30391
	* tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
	should be unreachable.
	(build2_stat): Allow construction of MODIFY_EXPR at any time.
	For the time being redirect GIMPLE_MODIFY_STMT to the new
	(renamed) build_gimple_modify_stmt_stat.
	(build2_gimple_stat): Rename to...
	(build_gimple_modify_stmt_stat): Now longer take a CODE argument.
	Always build a GIMPLE_MODIFY_STMT node.
	* tree.h (build2_gimple, build2_gimple_stat): Delete.
	(build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
	declarations.

	* tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
	gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
	* tree-complex.c (set_component_ssa_name, expand_complex_move,
	expand_complex_div_wide): Likewise.
	* tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
	* tree-ssa-loop-im.c (schedule_sm): Likewise.
	* tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
	* tree-ssa-loop-manip.c (create_iv): Likewise.
	* tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
	abs_replacement): Likewise.
	* tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
	realify_fake_stores): Likewise.

	* builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
	node rather than a GIMPLE_MODIFY_STMT node.
	(std_gimpify_va_arg_expr, expand_builtin_va_copy,
	fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
	Likewise.
	(integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
	* expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
	GIMPLE_MODIFY_STMT.

	* gfortran.dg/pr30391-1.f90: New test case.

From-SVN: r122030
2007-02-16 03:38:22 +00:00
Andrew Pinski 3c32c87f60 re PR middle-end/30433 (no longer folding __complex__(0.0, 1.0) == __complex__(1.0, 0.0))
2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR middle-end/30433
        * fold-const.c (fold_comparison): Add back the
        folding of constant complex comparisions.
2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR middle-end/30433
        * gcc.c-torture/compile/pr30433.c: New testcase to check
        that complex constants comparisions are foldded.

From-SVN: r122029
2007-02-15 17:27:42 -08:00
Andrew Pinski d3d6f724f2 re PR middle-end/30729 (value computed is not used warning with unused result of va_arg)
2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR middle-end/30729
        * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
        effects unknown to this function, return early.

2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR middle-end/30729
        * gcc.dg/Wunused-value-2.c: New testcase.

From-SVN: r122027
2007-02-15 17:19:23 -08:00
Ian Lance Taylor 73663bb75e lower-subreg.c (move_eh_region_note): New static function.
./:	* lower-subreg.c (move_eh_region_note): New static function.
	(resolve_simple_move): Call it.
	(decompose_multiword_subregs): Track blocks for which we resolve a
	simple move which is also a control flow insn.  Pass them to
	find_many_sub_basic_blocks.
	(pass_lower_subreg): Add TODO_verify_flow.
	(pass_lower_subreg2): Likewise.
testsuite/:
	* g++.dg/eh/subreg-1.C: New test.

From-SVN: r122025
2007-02-16 00:42:11 +00:00
Sandra Loosemore 5039610b96 tree.h (enum tree_code_class): Add tcc_vl_exp.
2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
	    Brooks Moses  <brooks.moses@codesourcery.com>
	    Lee Millward  <lee.millward@codesourcery.com>

	* tree.h (enum tree_code_class): Add tcc_vl_exp.
	(VL_EXP_CLASS_P): New.
	(TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
	TREE_CODE_LENGTH.
	(TREE_OPERAND_CHECK_CODE): Likewise.
	(GIMPLE_STMT_OPERAND_CHECK): Likewise.
	(TREE_RTL_OPERAND_CHECK): Likewise.
	(tree_operand_check_failed): Make second parameter the whole tree
	instead of its code.  Fixed callers.
	(VL_EXP_CHECK): New.
	(TREE_OPERAND_LENGTH): New.
	(VL_EXP_OPERAND_LENGTH): New.
	(CALL_EXPR_FN): New.
	(CALL_EXPR_STATIC_CHAIN): New.
	(CALL_EXPR_ARGS): New.
	(CALL_EXPR_ARG): New.
	(call_expr_nargs): New.
	(CALL_EXPR_ARGP): New.
	(build_nt_call_list): Declare.
	(build_vl_exp_stat): Declare.
	(build_vl_exp): New.
	(build_call_list): Declare.
	(build_call_nary): Declare.
	(build_call_valist): Declare.
	(build_call_array): Declare.
	(call_expr_arg): Declare.
	(call_expr_argp): Declare.
	(call_expr_arglist): Declare.
	(fold_build_call_list): Declare.
	(fold_build_call_list_initializer): Declare.
	(fold_call_expr): Declare to replace fold_builtin.
	(fold_builtin_fputs): Update to agree with modified definition.
	(fold_builtin_strcpy): Likewise.
	(fold_builtin_strncpy): Likewise.
	(fold_builtin_memory_chk): Likewise.
	(fold_builtin_stxcpy_chk): Likewise.
	(fold_builtin_strncpy_chk): Likewise.
	(fold_builtin_next_arg): Likewise.
	(fold_build_call_expr): Declare.
	(fold_builtin_call_list): Declare.
	(fold_builtin_call_valist): Declare.
	(build_call_expr): Declare.
	(validate_arglist): Update to agree with modified definition.
	(tree_operand_length): New.
	(call_expr_arg_iterator): New.
	(init_call_expr_arg_iterator): New.
	(next_call_expr_arg): New.
	(first_call_expr_arg): New.
	(more_call_expr_args_p): New.
	(FOR_EACH_CALL_EXPR_ARG): New.

	* tree.c (tree_code_class_string): Add entries for tcc_vl_exp
	and tcc_gimple_stmt.
	(tree_code_size): Update documentation.  Use sizeof (tree) rather
	than sizeof (char *).
	(tree_size): Likewise.  Add case for tcc_vl_exp.
	(tree_node_structure): Add case for tcc_vl_exp.
	(contains_placeholder_p): Likewise.
	(substitute_in_expr): Likewise.
	(substitute_placeholder_in_expr): Likewise.
	(stabilize_reference_1): Likewise.
	(build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
	to diagnose breakage of this interface for constructing CALL_EXPRs.
	(build_nt): Add similar assertion here.
	(build_nt_call_list): New.
	(simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
	(iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
	TREE_CODE_LENGTH.
	(get_callee_fndecl): Use new CALL_EXPR accessors.
	(tree_operand_check_failed): Change parameters to pass entire node
	instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
	(process_call_operands): New.
	(build_vl_exp_stat): New.
	(build_call_list): New.
	(build_call_nary): New.
	(build_call_valist): New.
	(build_call_array): New.
	(walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
	(call_expr_arglist): New.

	* tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
	tcc_vl_exp instead of a fixed-size tcc_expression.

	* doc/c-tree.texi (CALL_EXPR): Document new representation and
	accessors for CALL_EXPRs.
	(AGGR_INIT_EXPR): Likewise.

2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
	    Brooks Moses  <brooks.moses@codesourcery.com>
	    Lee Millward  <lee.millward@codesourcery.com>

	* builtins.c (c_strlen): Return NULL_TREE instead of 0.
	(expand_builtin_nonlocal_goto): Change parameter to be entire
	CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
	(expand_builtin_prefetch): Likewise.
	(expand_builtin_classify_type): Likewise.
	(mathfn_built_in): Return NULL_TREE instead of 0.
	(expand_errno_check): Use new CALL_EXPR accessors.
	(expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
	Return NULL_RTX instead of 0.
	(expand_builtin_mathfn_2): Likewise.
	(expand_builtin_mathfn_3): Likewise.
	(expand_builtin_interclass_mathfn): Likewise.
	(expand_builtin_sincos): Likewise.
	(expand_builtin_cexpi): Likewise.
	(expand_builtin_int_roundingfn): Likewise.
	(expand_builtin_int_roundingfn_2): Likewise.
	(expand_builtin_pow): Likewise.
	(expand_builtin_powi): Likewise.
	(expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
	of arglist, fixing callers appropriately.  Use new CALL_EXPR
	accessors and constructors.  Return NULL_RTX instead of 0.
	(expand_builtin_strstr): Likewise.
	(expand_builtin_strchr): Likewise.
	(expand_builtin_strrchr): Likewise.
	(expand_builtin_strpbrk): Likewise.
	(expand_builtin_memcpy): Likewise.
	(expand_builtin_mempcpy): Likewise.
	(expand_builtin_mempcpy_args): New.
	(expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
	(expand_builtin_memmove_args): New.
	(expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
	(expand_movstr): Likewise.
	(expand_builtin_strcpy): Likewise.
	(expand_builtin_strcpy_args): New.
	(expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
	(expand_builtin_strncpy): Likewise.
	(expand_builtin_memset): Likewise.
	(expand_builtin_memset_args): New.
	(expand_builtin_bzero): Similarly to expand_builtin_memset.
	(expand_builtin_memcmp): Likewise.
	(expand_builtin_strcmp): Likewise.
	(expand_builtin_strncmp): Likewise.
	(expand_builtin_strcat): Likewise.
	(expand_builtin_strncat): Likewise.
	(expand_builtin_strspn): Likewise.
	(expand_builtin_strcspn): Likewise.
	(expand_builtin_args_info): Likewise.
	(expand_builtin_va_start): Likewise.
	(gimplify_va_arg_expr): Likewise.
	(expand_builtin_va_end): Likewise.
	(expand_builtin_va_copy): Likewise.
	(expand_builtin_frame_address): Likewise.
	(expand_builtin_alloca): Likewise.
	(expand_builtin_bswap): Likewise.
	(expand_builtin_unop): Likewise.
	(expand_builtin_fputs): Likewise.
	(expand_builtin_expect): Likewise.
	(expand_builtin_fabs): Likewise.
	(expand_builtin_copysign): Likewise.
	(expand_builtin_printf): Likewise.
	(expand_builtin_fprintf): Likewise.
	(expand_builtin_sprintf): Likewise.
	(expand_builtin_init_trampoline): Likewise.
	(expand_builtin_signbit): Likewise.
	(expand_builtin_fork_or_exec): Likewise.
	(expand_builtin_sync_operation): Likewise.
	(expand_builtin_compare_and_swap): Likewise.
	(expand_builtin_lock_test_and_set): Likewise.
	(expand_builtin_lock_release): Likewise.
	(expand_builtin): Likewise.
	(builtin_mathfn_code): Likewise.

	(fold_builtin_constant_p): Pass call arguments individually instead
	of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
	accessors and constructors.  Return NULL_TREE instead of 0.
	(fold_builtin_expect): Likewise.
	(fold_builtin_classify_type): Likewise.
	(fold_builtin_strlen): Likewise.
	(fold_builtin_nan): Likewise.
	(integer_valued_real_p): Likewise.
	(fold_trunc_transparent_mathfn): Likewise.
	(fold_fixed_mathfn): Likewise.
	(fold_builtin_cabs): Likewise.
	(fold_builtin_sqrt): Likewise.
	(fold_builtin_cbrt): Likewise.
	(fold_builtin_cos): Likewise.
	(fold_builtin_cosh): Likewise.
	(fold_builtin_tan): Likewise.
	(fold_builtin_sincos): Likewise.
	(fold_builtin_cexp): Likewise.
	(fold_builtin_trunc): Likewise.
	(fold_builtin_floor): Likewise.
	(fold_builtin_ceil): Likewise.
	(fold_builtin_round): Likewise.
	(fold_builtin_int_roundingfn): Likewise.
	(fold_builtin_bitop): Likewise.
	(fold_builtin_bswap): Likewise.
	(fold_builtin_logarithm): Likewise.
	(fold_builtin_hypot): Likewise.
	(fold_builtin_pow): Likewise.
	(fold_builtin_powi): Likewise.
	(fold_builtin_exponent): Likewise.
	(fold_builtin_memset): Likewise.
	(fold_builtin_bzero): Likewise.
	(fold_builtin_memory_op): Likewise.
	(fold_builtin_bcopy): Deleted; call site changed to invoke
	fold_builtin_memory_op directly.
	(fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
	(fold_builtin_strncpy): Likewise.
	(fold_builtin_memcmp): Likewise.
	(fold_builtin_strcmp): Likewise.
	(fold_builtin_strncmp): Likewise.
	(fold_builtin_signbit): Likewise.
	(fold_builtin_copysign): Likewise.
	(fold_builtin_isascii): Likewise.
	(fold_builtin_toascii): Likewise.
	(fold_builtin_isdigit): Likewise.
	(fold_builtin_fabs): Likewise.
	(fold_builtin_abs): Likewise.
	(fold_builtin_fmin_fmax): Likewise.
	(fold_builtin_carg): Likewise.
	(fold_builtin_classify): Likewise.
	(fold_builtin_unordered_cmp): Likewise.

	(fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
	New functions split out from fold_builtin_1.
	(fold_builtin_n): New.
	(fold_builtin_varargs): New.
	(fold_builtin): Deleted.  Most callers changed to use fold_call_expr
	instead.
	(fold_call_expr): New.
	(build_function_call_expr): Rewrite to use new helper function.
	(fold_builtin_call_list): New.
	(build_call_expr): New.
	(fold_builtin_call_valist): New.
	(rewrite_call_expr): New.
	(validate_arg): New.
	(validate_arglist): Change parameter to be entire CALL_EXPR instead
	of an arglist.  Change return type to bool.  Use new CALL_EXPR
	accessors.

	(fold_builtin_strstr):  Pass call arguments individually instead
	of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
	accessors and constructors.  Return NULL_TREE instead of 0.
	(fold_builtin_strchr): Likewise.
	(fold_builtin_strrchr): Likewise.
	(fold_builtin_strpbrk): Likewise.
	(fold_builtin_strcat): Likewise.
	(fold_builtin_strncat): Likewise.
	(fold_builtin_strspn): Likewise.
	(fold_builtin_strcspn): Likewise.
	(fold_builtin_fputs): Likewise.
	(fold_builtin_next_arg): Likewise.
	(fold_builtin_sprintf): Likewise.

	(expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
	NULL_RTX instead of 0.
	(expand_builtin_memory_chk): Likewise.
	(maybe_emit_chk_warning): Likewise.
	(maybe_emit_sprintf_chk_warning): Likewise.

	(fold_builtin_object_size): Pass call arguments individually instead
	of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
	accessors and constructors.  Return NULL_TREE instead of 0.
	(fold_builtin_memory_chk): Likewise.
	(fold_builtin_stxcpy_chk): Likewise.
	(fold_builtin_strncpy_chk): Likewise.
	(fold_builtin_strcat_chk): Likewise.
	(fold_builtin_strcat_chk): Likewise.
	(fold_builtin_strncat_chk): Likewise.
	(fold_builtin_sprintf_chk): Likewise.
	(fold_builtin_snprintf_chk): Likewise.
	(fold_builtin_printf): Likewise.
	(fold_builtin_vprintf): Likewise.

	* fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
	constructors.
	(operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
	(make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
	(extract_muldiv_1): Add VL_EXP_CLASS_P case.
	(fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
	(fold_unary): Likewise.
	(fold_binary): Likewise.
	(fold_ternary): Remove CALL_EXPR case, since they are no longer
	ternary expressions.
	(fold): Add logic for tcc_vl_exp.
	(fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
	TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
	(fold_build3_stat): Add assertion to flag broken interface for
	constructing CALL_EXPRs.
	(fold_build_call_list): New.
	(fold_build_call_list_initializer): New.
	(tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
	constructors.
	(fold_strip_sign_ops): Likewise.

2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
	    Brooks Moses  <brooks.moses@codesourcery.com>
	    Lee Millward  <lee.millward@codesourcery.com>

	* tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
	accessors and dump arguments explicitly.

	* tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
	TREE_CODE_LENGTH.
	(dump_generic_node): Use new CALL_EXPR accessors and walk arguments
	explicitly.
	(print_call_name): Use new CALL_EXPR accessors.

	* print-tree.c (print_node): Add case tcc_vl_exp.  Print
	CALL_EXPR arguments explicitly instead of as a list.  Use
	TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.

	* tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
	(vrp_visit_stmt): Likewise.

	* tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
	know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
	TREE_CODE_LENGTH.
	(force_move_till_expr): Likewise.

	* targhooks.c (default_external_stack_protect_fail): Use
	build_call_expr instead of build_function_call_expr.
	(default_hidden_stack_protect_fail): Likewise.

	* tree-complex.c (expand_complex_libcall): Use build_call_expr to
	build the call.

	* cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
	and walk arguments explicitly.

	* tree-ssa-loop-niter.c (simplify_replace_tree): Use
	TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
	(expand_simple_operations): Likewise.
	(infer_loop_bounds_from_array): Use new CALL_EXPR accessors.

	* gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
	of TREE_CODE_LENGTH.
	(walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.

	* optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
	instead of TREE_CODE_LENGTH.

	* value_prof.c (tree_ic): Use new CALL_EXPR accessors.
	(tree_ic_transform): Likewise.
	(interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
	parameter instead of arglist.  Fix callers.
	(tree_stringop_fixed_value): Use new CALL_EXPR accessors.
	(tree_stringops_transform): Likewise.
	(tree_indirect_call_to_profile): Likewise.
	(tree_stringops_values_to_profile): Likewise.

	* tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
	(eliminate_tail_call): Likewise.

	* ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.

	* tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
	Use TREE_OPERAND_LENGTH and generalize to handle any number of
	operands.
	(instantiate_parameters_1): Can't handle tcc_vl_exp here.

	* omp-low.c (build_omp_barrier): Use build_call_expr.
	(lower_rec_input_clauses): Likewise.
	(lower_reduction_clauses): Likewise.
	(expand_parallel_call): Likewise.
	(maybe_catch_exception): Likewise.
	(expand_omp_for_generic): Likewise.
	(expand_omp_for_static_nochunk): Likewise.
	(expand_omp_sections): Likewise.
	(lower_omp_single_simple): Likewise.
	(lower_omp_single_copy): Likewise.
	(lower_omp_master): Likewise.
	(lower_omp_ordered): Likewise.
	(lower_omp_critical): Likewise.

	* ipa-reference.c (check-call): Use new CALL_EXPR iterator.
	(scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.

	* tree-gimple.c (is_gimple_call_addr): Fix doc.
	(recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
	TREE_CODE_LENGTH.  Add tcc_vl_exp case.

	* tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
	and generalize to handle any number of operands.
	(chrec_contains_undetermined): Likewise.
	(tree_contains_chrecs): Likewise.
	(evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.

	* cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.

	* tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
	fold_call_expr instead of fold_builtin.
	(ccp_fold_builtin): Likewise.  Update calls into builtins.c to
	match declarations there.
	(fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
	updates.

	* tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
	TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.

	* ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
	(scan_function): Add case tcc_vl_exp for CALL_EXPR.

	* tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
	accessors.

	* tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
	(execute_cse_sincos): Use new CALL_EXPR accessors.

	* tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.

	* gimple-low.c (lower_function_body): Use build_call_expr.
	(lower_builtin_setjmp): Likewise.

	* expr.c (emit_block_move_via_libcall): Use build_call_expr.
	(set_storage_via_libcall): Likewise.
	(safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
	instead of TREE_CODE_LENGTH.
	(expand_expr_real_1): Use new CALL_EXPR accessors.

	* tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
	generalize to handle any number of operands.
	(TB_parent_eq): Likewise.

	* predict.c (expr_expected_value): Use new CALL_EXPR accessors.
	(strip_builtin_expect): Likewise.

	* function.c (gimplify_parameters): Use build_call_expr.

	* tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
	instead of TREE_CODE_LENGTH.

	* ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
	(scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.

	* tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
	iterators.

	* gimplify.c (build_stack_save_restore): Use build_call_expr.
	(gimplify_decl_expr): Likewise.
	(gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
	Use new CALL_EXPR iterators.
	(gimplify_modify_expr_to_memcpy): Use build_call_expr.
	(gimplify_modify_expr_to_memset): Likewise.
	(gimplify_variable_sized_compare): Likewise.
	(gimplify_omp_atomic_fetch_op): Likewise.
	(gimplify_omp_atomic_pipeline): Likewise.
	(gimplify_omp_atomic_mutex): Likewise.
	(gimplify_function_tree): Likewise.

	* calls.c (alloca_call_p): Use new CALL_EXPR accessors.
	(call_expr_flags): Likewise.
	(expand_call): Likewise.

	* except.c (expand_builtin_eh_return_data_regno): Pass entire
	CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR 
        accessors.

	* coverage.c (create_coverage): Use build_call_expr.

	* tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
	(temp_call_expr_obstack): New.
	(pool_copy_list): Delete.
	(temp_copy_call_expr): New.
	(phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
	CALL_EXPR accessors.  Get rid of special goo for copying argument
	lists and use temp_copy_call_expr instead.
	(valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
	CALL_EXPR accessors.
	(create_expression_by_pieces): Likewise.  Use build_call_array
	to construct the result instead of fold_build3.
	(create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
	dealing with argument lists.
	(init_pre): Remove references to expression_node_pool and
	list_node_pool.  Init temp_call_expr_obstack instead.
	(fini_pre): Remove references to expression_node_pool and
	list_node_pool.

	* tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
	and walk arguments explicitly instead of as a list.

	* tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
	(mx_register_decls): Likewise.
	(mudflap_register_call): Likewise.
	(mudflap_finish_file): Likewise.

	* ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
	(ipa_callsite_compute_param): Likewise.

	* tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
	accessors and constructor.

	* tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
	accessors and constructor.
	(convert_tramp_reference): Likewise. 
	(convert_call_expr): Likewise.
	(finalize_nesting_tree_1): Likewise.

	* tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
	accessors.

	* tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.

	* tree-inline.c (initialize_inlined_parameters): Pass entire
	CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
	accessors.
	(estimate_num_insns_1): Use new CALL_EXPR accessors.
	(expand_call_inline): Tidy up call to initialize_inlined_parameters.

	* tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
	TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
	(vectorizable_reduction): Likewise.
	(vectorizable_call): Use new CALL_EXPR iterators.
	(vectorizable_conversion): Use build_call_expr.
	(vectorizable_operation): Use TREE_OPERAND_LENGTH.
	(vect_gen_widened_results_half): Use build_call_expr.
	(vect_setup_realignment): Likewise.
	(vectorizable_live_operation): Use TREE_OPERAND_LENGTH.

	* tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
	(pass_through_call): Likewise.
	(compute_object_sizes): Likewise.  Use fold_call_expr instead of
	fold_builtin.

	* tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
	(tree_gen_pow2_profiler): Likewise.
	(tree_gen_one_value_profiler): Likewise.
	(tree_gen_ic_func_profiler): Likewise.
	(tree_gen_average_profiler): Likewise.
	(tree_gen_ior_profiler): Likewise.

	* tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
	(find_func_aliases): Use new CALL_EXPR accessors.  Add case
	tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.

	* tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
	of TREE_CODE_LENGTH.

	* stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
	of TREE_CODE_LENGTH.

	* convert.c (convert_to_real): Use new CALL_EXPR accessors and
	constructor.
	(convert_to_integer): Likewise.

	* tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
	accessors.

2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
	    Brooks Moses  <brooks.moses@codesourcery.com>
	    Lee Millward  <lee.millward@codesourcery.com>

	* config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
	accessors.
	* config/frv/frv.c (frv_expand_builtin): Likewise.
	* config/s390/s390.c (s390_expand_builtin): Likewise.

	* config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
	(sparc_expand_builtin): Use new CALL_EXPR accessors.

	* config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
	(ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
	instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
	(ix86_expand_store_builtin): Likewise.
	(ix86_expand_unop_builtin): Likewise.
	(ix86_expand_unop1_builtin): Likewise.
	(ix86_expand_sse_compare): Likewise.
	(ix86_expand_sse_comi): Likewise.
	(ix86_expand_vec_init_builtin): Likewise.
	(ix86_expand_vec_ext_builtin): Likewise.
	(ix86_expand_vec_set_builtin): Likewise.
	(ix86_expand_builtin): Use new CALL_EXPR accessors.

	* config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
	* config/c4x/c4x.c (c4x_expand_builtin): Likewise.

	* config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
	instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
	(iq2000_expand_builtin): Use new CALL_EXPR accessors.

	* config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
	build_call_expr.
	* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
	(rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
	arglist.  Use new CALL_EXPR accessors.  Fix callers.
	(altivec_expand_abs_builtin): Likewise.
	(rs6000_expand_binop_builtin): Likewise.
	(altivec_expand_predicate_builtin): Likewise.
	(altivec_expand_lv_builtin): Likewise.
	(spe_expand_stv_builtin): Likewise.
	(altivec_expand_stv_builtin): Likewise.
	(rs6000_expand_ternop_builtin): Likewise.
	(altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
	(altivec_expand_st_builtin): Likewise.
	(altivec_expand_dst_builtin): Likewise.
	(altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
	arglist.  Use new CALL_EXPR accessors.  Fix callers.
	(altivec_expand_vec_set_builtin): Likewise.
	(altivec_expand_vec_ext_builtin): Likewise.
	(altivec_expand_builtin): Use new CALL_EXPR accessors.
	(spe_expand_builtin): Likewise.
	(spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
	arglist.  Use new CALL_EXPR accessors.  Fix callers.
	(spe_expand_evsel_builtin): Likewise.
	(rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
	FCFSX cases must construct whole new CALL_EXPR, not just arglist.

	* config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
	instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
	(arm_expand_unop_builtin): Likewise.
	(arm_expand_builtin): Use new CALL_EXPR accessors.

	* config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
	accessors.

	* config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
	instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
	(bfin_expand_unop_builtin): Likewise.
	(bfin_expand_builtin): Use new CALL_EXPR accessors.

2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
	    Brooks Moses  <brooks.moses@codesourcery.com>
	    Lee Millward  <lee.millward@codesourcery.com>

	* c-semantics.c (build_stmt): Add internal diagnostic check.

	* c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
	accessors.  Print arguments explicitly instead of as a list.

	* c-typeck.c (build_function_call): Use new CALL_EXPR constructors.

	* c-omp.c (c_finish_omp_barrier): Use build_call_expr.
	(c_finish_omp_flish): Likewise.

	* c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
	arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
	instead of TREE_CODE_LENGTH.
	(check_function_arguments_recurse): Use new CALL_EXPR accessors.
	(c_warn_unused_result): Likewise.

2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
	    Brooks Moses  <brooks.moses@codesourcery.com>
	    Lee Millward  <lee.millward@codesourcery.com>

	* cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
	Change class to tcc_vl_exp.

	* call.c (build_call): Use build_call_list instead 
	of build3. 
	(build_over_call): Likewise.
	(build_new_method_call): Use build_min_non_dep_call_list 
	instead of build_min_non_dep.

	* error.c (dump_call_expr_args): New function.
	(dump_aggr_init_expr_args): New function.
	(dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them. 
	Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.

	* cvt.c (convert_to_void): Use build_call_array instead
	of build3; use new AGGR_INIT_EXPR accessor macros.

	* mangle.c (write_expression): Use TREE_OPERAND_LENGTH
	instead of TREE_CODE_LENGTH.

	* dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
	AGGR_INIT_EXPR accessor macros.

	* cp-gimplify.c (cp_gimplify_init_expr): Use 
	AGGR_INIT_EXPR_SLOT to set the slot operand.

	* cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
	(AGGR_INIT_EXPR_SLOT): New macro.
	(AGGR_INIT_EXPR_ARG): New macro.
	(aggr_init_expr_nargs): New macro.
	(AGGR_INIT_EXPR_ARGP): New macro.
	(aggr_init_expr_arg_iterator): New.
	(init_aggr_init_expr_arg_iterator): New.
	(next_aggr_init_expr_arg): New.
	(first_aggr_init_expr_arg): New.
	(more_aggr_init_expr_args_p): New.
	(FOR_EACH_AGGR_INIT_EXPR_ARG): New.
	(stabilize_aggr_init): New declaration.
	(build_min_non_dep_call_list): Likewise.

	* tree.c (process_aggr_init_operands): New function.
	(build_aggr_init_array) New function.
	(build_cplus_new): Update to use new CALL_EXPR and
	AGGR_INIT_EXPR accessor macros. Replace use of build3 with
	build_aggr_init_array.
	(build_min_non_dep_call_list) New function.
	(build_min_nt): Assert input code parameter is not a variable
	length expression class.
	(build_min, build_min_non_dep): Likewise.
	(cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
	to check for equality instead of recursing. Handle tcc_vl_exp
	tree code classes.
	(stabilize_call): Update to only handle CALL_EXPRs, not 
	AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
	(stabilize_aggr_init): New function.
	(stabilize_init): Use it.

	* cxx-pretty-print.c (pp_cxx_postfix_expression)
	<AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
	AGGR_INIT_EXPR accessor macros and argument iterators.
	
	* pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
	build_vl_exp. Iterate through the operands, recursively 
	processing each one.
	(tsubst_copy_and_build) <CALL_EXPR>: Update to use new
	CALL_EXPR accessor macros.
	(value_dependent_expression_p) <default>: Handle tcc_vl_exp
	tree code classes. Use TREE_OPERAND_LENGTH instead of 
	TREE_CODE_LENGTH.

	* semantics.c (finish_call_expr): Use build_nt_call_list
	instead of build_nt.
	(simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR 
	accessor macros. Use build_call_array to construct the 
	CALL_EXPR node instead of build3
	
	* decl2.c (build_offset_ref_call_from_tree): Use 
	build_nt_call_list and build_min_non_dep_call_list instead
	of build_min_nt and build_min_non_dep.

	* parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
	Use build_nt_call_list instead of build_min_nt.

2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
	    Brooks Moses  <brooks.moses@codesourcery.com>
	    Lee Millward  <lee.millward@codesourcery.com>

	* java-tree.h (BUILD_MONITOR_ENTER): Use build_call_nary instead
	of build3.
	(BUILD_MONITOR_EXIT): Likewise.

	* java-gimplify.c (java_gimplify_component_ref): Use build_call_expr.
	(java_gimplify_modify_expr): Likewise.

	* class.c (cache_this_class_ref): Use build_call_expr.
	(build_static_field_ref): Likewise.
	(emit_indirect_register_classes): Likewise.
	(emit_register_classes): Likewise.

	* resource.c (write_resource_constructor): Use build_call_expr.

	* builtins.c (builtin_creator_function): Change interpretation of
	the second parameter to be the whole CALL_EXPR instead of the arglist.
	(max_builtin): Tweak parameter list.  Use new CALL_EXPR accessors.
	(min_builtin): Likewise.
	(abs_builtin): Likewise.
	(java_build_function_call_expr): Likewise.
	(convert_real): Likewise.
	(UNMARSHAL3): Likewise.
	(UNMARSHAL4): Likewise.
	(UNMARSHAL5): Likewise.
	(build_arglist_for_builtin): Delete.  Fix callers to use
	build_call_expr instead.
	(putObject_builtin): Tweak parameter list.  Use new CALL_EXPR
	accessors.
	(compareAndSwapInt_builtin): Likewise.
	(compareAndSwapLong_builtin): Likewise.
	(compareAndSwapObject_builtin): Likewise.
	(putVolatile_builtin): Likewise.
	(getVolatile_builtin): Likewise.
	(VMSupportsCS8_builtin): Likewise.
	(check_for_builtin): Pass entire CALL_EXPR to builtin expander
	instead of arglist.

	* expr.c (build_java_athrow): Use build_call_nary instead of build3.
	(build_java_throw_out_of_bounds_exception): Likewise.
	(java_check_reference): Likewise.
	(build_java_arraystore_check): Likewise.
	(build_newarray): Likewise.
	(build_anewarray): Likewise.
	(expand_java_multinewarray): Use build_call_list instead of build3.
	(build_java_monitor): Use build_call_nary instead of build3.
	(java_create_object): Likewise.
	(expand_java_NEW): Likewise.
	(build_instanceof): Likewise.
	(expand_java_CHECKCAST): Likewise.
	(build_java_soft_divmod): Likewise.
	(build_java_binop): Likewise.
	(build_field_ref): Likewise.
	(build_class_init): Likewise.
	(rewrite_arglist_getcaller): Use build_call_expr.
	(build_invokeinterface):  Use build_call_nary instead of build3.
	(expand_invoke): Use build_call_list instead of build3.
	(build_jni_stub): Use build_call_nary, build_call_list, or
	build_call_expr instead	of build3.
	(expand_java_field_op): Use build_call_expr instead of build3.
	(force_evaluation_order): Use new CALL_EXPR accessors.

	* lang.c (java_get_callee_fndecl): Use new CALL_EXPR accessors.

2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
	    Brooks Moses  <brooks.moses@codesourcery.com>
	    Lee Millward  <lee.millward@codesourcery.com>

	* objc-act.c (receiver_is_class_object): Use new CALL_EXPR accessors.
	(objc_get_callee_fndecl): Likewise.

2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
	    Brooks Moses  <brooks.moses@codesourcery.com>
	    Lee Millward  <lee.millward@codesourcery.com>

	* trans-expr.c (gfc_conv_power_op): Use build_call_expr.
	(gfc_conv_string_tmp): Likewise.
	(gfc_conv_concat_op): Likewise.
	(gfc_build_compare_string): Likewise.
	(gfc_conv_function_call): Use build_call_list instead of build3.

	* trans-array.c (gfc_trans_allocate_array_storage): Use
	build_call_expr.
	(gfc_grow_array): Likewise.
	(gfc_trans_array_ctor_element): Likewise.
	(gfc_trans_array_constructor_value): Likewise.
	(gfc_array_allocate): Likewise.
	(gfc_array_deallocate): Likewise.
	(gfc_trans_auto_array_allocation): Likewise.
	(gfc_trans_dummy_array_bias): Likewise.
	(gfc_conv_array_parameter): Likewise.
	(gfc_trans_dealloc_allocated): Likewise.
	(gfc_duplicate_allocatable): Likewise.

	* trans-openmp.c (gfc_trans_omp_barrier): Use build_call_expr.
	(gfc_trans_omp_flush): Likewise.

	* trans-stmt.c (gfc_conv_elementel_dependencies): Use build_call_expr.
	(gfc_trans_pause): Likewise.
	(gfc_trans_stop): Likewise.
	(gfc_trans_character_select): Likewise.
	(gfc_do_allocate): Likewise.
	(gfc_trans_assign_need_temp): Likewise.
	(gfc_trans_pointer_assign_need_temp): Likewise.
	(gfc_trans_forall_1): Likewise.
	(gfc_trans_where_2): Likewise.
	(gfc_trans_allocate): Likewise.
	(gfc_trans_deallocate): Likewise.

	* trans.c (gfc_trans_runtime_check): Use build_call_expr.

	* trans-io.c (gfc_trans_open): Use build_call_expr.
	(gfc_trans_close): Likewise.
	(build_filepos): Likewise.
	(gfc_trans_inquire): Likewise.
	(NML_FIRST_ARG): Delete.
	(NML_ADD_ARG): Delete.
	(transfer_namelist_element): Use build_call_expr.
	(build_dt): Likewise.
	(gfc_trans_dt_end): Likewise.
	(transfer_expr): Likewise.
	(transfer_array-desc): Likewise.

	* trans-decl.c (gfc_generate_function_code): Use build_call_expr.
	(gfc_generate_constructors): Likewise.

	* trans-intrinsic.c (gfc_conv_intrinsic_ctime): Use build_call_expr.
	(gfc_conv_intrinsic_fdate): Likewise.
	(gfc_conv_intrinsic_ttynam): Likewise.
	(gfc_conv_intrinsic_array_transfer): Likewise.
	(gfc_conv_associated): Likewise.
	(gfc_conv_intrinsic_si_kind): Likewise.
	(gfc_conv_intrinsic_trim): Likewise.
	(gfc_conv_intrinsic_repeat: Likewise.
	(gfc_conv_intrinsic_iargc): Likewise.

Co-Authored-By: Brooks Moses <brooks.moses@codesourcery.com>
Co-Authored-By: Lee Millward <lee.millward@codesourcery.com>

From-SVN: r122018
2007-02-15 18:50:49 -05:00
Manuel López-Ibáñez dc90f45b24 re PR c/26494 (-pedantic-errors can be overridden by -W*)
2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c/26494
	* doc/invoke.texi (Warning Options): Remove
	-Werror-implicit-function-declaration.
	(Wimplicit-function-declaration): Update description.
	* opts.c (common_handle_option): Move handling of -Werror=* to...
	(enable_warning_as_error): ...here.
	* opts.h (enable_warning_as_error): Declare.
	* c-decl.c (implicit_decl_warning): Unless
	-Wno-implicit-function-declaration is given, emit a pedwarn if
	-std=c99 or emit a warning if -Wimplicit-function-declaration.
	* c.opt (Wimplicit-function-declaration): Replace
	mesg_implicit_function_declaration with
	warn_implicit_function_declaration.
	* c-opts.c (c_common_handle_option):
	-Werror-implicit-function-declaration is exactly equal as
	-Werror=implicit-function-declaration.
	(set_Wimplicit): Replace mesg_implicit_function_declaration with
	warn_implicit_function_declaration.
	(c_common_post_options): -Wimplict-function-declaration is enabled
	by default by -std=c99, otherwise is disabled by default.
	* c-objc-common.c (c_objc_common_init): Remove flawed logic.
testsuite/
	* gcc.dg/Wimplicit-function-declaration-c89.c: New.
	* gcc.dg/Wimplicit-function-declaration-c89-default.c: New.
	* gcc.dg/Wimplicit-function-declaration-c89-pedantic.c: New.
	* gcc.dg/Wimplicit-function-declaration-c99.c: New.
	* gcc.dg/Wimplicit-function-declaration-c99-pedantic.c: New.
	* gcc.dg/Werror-implicit-function-declaration.c: New.

From-SVN: r122017
2007-02-15 22:31:17 +00:00
Eric Botcazou f173837aad gimplify.c (gimplify_modify_expr): During gimplification...
* gimplify.c (gimplify_modify_expr): During gimplification, attach a
	DECL on the rhs to a DECL on the lhs for debug info purposes if the
	former is ignored but not the latter.

From-SVN: r122015
2007-02-15 21:43:28 +00:00
Eric Botcazou befdad0714 expr.c (expand_expr_real_1): If a temporary is made and the reference doesn't use the alias set of its type...
* expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
	is made and the reference doesn't use the alias set of its type,
	do not create the temporary using that type.

From-SVN: r122014
2007-02-15 20:51:29 +00:00
Aldy Hernandez eab79d78e7 jump.c: Remove prototypes for delete_computation and delete_prior_computation.
* jump.c: Remove prototypes for delete_computation and
	delete_prior_computation.

From-SVN: r122011
2007-02-15 18:29:25 +00:00
Paolo Bonzini c47277a619 jump.c (get_label_after): Delete.
2007-02-15  Paolo Bonzini  <bonzini@gnu.org>

	* jump.c (get_label_after): Delete.
	(get_label_before, delete_computation, delete_jump,
	delete_prior_computation, follow_jumps): Move...
	* reorg.c (delete_computation, delete_prior_computation): ... here...
	(get_label_before, delete_jump): ... making these static ...
	(follow_jumps): ... and simplifying this since it only runs after
	reload.
	* rtl.h (get_label_after, get_label_before, delete_jump,
	follow_jumps): Delete prototypes.

From-SVN: r122003
2007-02-15 16:40:16 +00:00
Paolo Bonzini ed765125f2 caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
2007-02-15  Paolo Bonzini  <bonzini@gnu.org>

	* caller-save.c (save_call_clobbered_regs): Do not process sibcalls.

From-SVN: r121998
2007-02-15 15:07:59 +00:00
Nick Clifton c1a1cc5fcb varasm.c (default_asm_output_anchor): Prepend * to . symbol in order to prevent it from being munged by the target.
* varasm.c (default_asm_output_anchor): Prepend * to . symbol in order to 
  prevent it from being munged by the target.

From-SVN: r121992
2007-02-15 10:33:59 +00:00
Uros Bizjak 62e4530bcf * config/i386/i386.md: Remove misleading comment.
From-SVN: r121991
2007-02-15 11:21:38 +01:00