Commit Graph

31923 Commits

Author SHA1 Message Date
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
Alexandre Oliva f4f81a669a frv.md (reload_incc, [...]): Remove invalid patterns.
* config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
invalid patterns.

From-SVN: r121981
2007-02-15 04:47:23 +00:00
Alexandre Oliva 45f94ec730 tree-sra.c (instantiate_missing_elements): Canonicalize bit-field types.
gcc/ChangeLog:
* tree-sra.c (instantiate_missing_elements): Canonicalize
bit-field types.
(sra_build_assignment): New.
(generate_copy_inout, generate_element_copy,
generate_element_zero, generate_one_element_init): Use it.
gcc/testsuite/ChangeLog:
* g++.dg/tree-ssa/sra-1.C: New.

From-SVN: r121980
2007-02-15 04:24:50 +00:00
Alexandre Oliva db9e0d2af6 dwarf2out.c (dwarf2out_finish): Accept namespaces as context of limbo die nodes.
gcc/ChangeLog:
* dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
limbo die nodes.
gcc/testsuite/ChangeLog:
* g++.dg/ext/interface4.C, g++.dg/ext/interface4.h: New.

From-SVN: r121979
2007-02-15 04:19:33 +00:00
Joseph Myers 07cb6e8c67 emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex types as aggregates not scalars.
* emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
	types as aggregates not scalars.
	* function.c (assign_stack_temp_for_type): Likewise.

testsuite:
	* gcc.dg/torture/complex-alias-1.c: New test.

From-SVN: r121968
2007-02-14 23:38:01 +00:00
Zdenek Dvorak 702f9d782f tree-dump.c (dump_switch_p_1): Require exact match of the option name.
* tree-dump.c (dump_switch_p_1): Require exact match of the option
	name.

	* gcc.dg/tree-prof/update-tailcall.c: Use -fdump-tree-tailc
	instead of -fdump-tree-tailcall.

From-SVN: r121967
2007-02-14 22:06:11 +00:00
Zdenek Dvorak 3d88299026 passes.c (next_pass_1): Clear the next field of the copied pass structure.
* passes.c (next_pass_1): Clear the next field of the copied
	pass structure.

From-SVN: r121966
2007-02-14 21:54:44 +00:00
Richard Henderson 029f45bdc1 tree-sra.c (early_sra): New.
* tree-sra.c (early_sra): New.
        (decl_can_be_decomposed_p): Deny va_list if early_sra.
        (tree_sra_early, pass_sra_early): New.
        * tree-pass.h (pass_sra_early): Declare.
        * passes.c (init_optimization_passes): Use it.

From-SVN: r121953
2007-02-14 09:52:25 -08:00
Richard Biener c4e74b1aaa flags.h (issue_strict_overflow_warning): Convert to a macro.
2007-02-14  Richard Guenther  <rguenther@suse.de>

	* flags.h (issue_strict_overflow_warning): Convert to a macro.

From-SVN: r121951
2007-02-14 16:45:23 +00:00
Dorit Nuzman 932eea3d18 re PR tree-optimization/30771 (ice for legal code with -O2 -ftree-vectorize)
PR tree-optimization/30771
        * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
        also phi nodes.
        (vect_analyze_operations): Induction phis can now be marked as
        used_in_loop.
        (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
        Update documentation accordingly.

From-SVN: r121950
2007-02-14 14:10:57 +00:00
Nick Clifton 8225879cc7 builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at most 3 arguments are supported.
* builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at most 3 arguments are supported.
  (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.

From-SVN: r121946
2007-02-14 08:27:01 +00:00
Seongbae Park 5ce02e408d bitmap.c (bitmap_and, [...]): Ensure dst->current is valid.
2007-02-13  Seongbae Park <seongbae.park@gmail.com>

       * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
       Ensure dst->current is valid.

From-SVN: r121903
2007-02-14 05:01:14 +00:00
Paul Brook c147eacb9d config.gcc: Add arm*-*-uclinux-*eabi.
2007-02-13  Paul Brook  <paul@codesourcery.com>

	gcc/
	* config.gcc: Add arm*-*-uclinux-*eabi.
	* config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
	(SUBTARGET_EXTRA_LINK_SPEC): Define.
	(STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
	(LINK_GCC_C_SEQUENCE_SPEC): Undef.
	(LINK_SPEC): Define.
	(LIB_SPEC): Define.
	* config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
	register.
	* config/arm/uclinux-eabi.h: New file.
	* config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
	* config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
	based targets.

From-SVN: r121902
2007-02-14 00:29:52 +00:00
Ian Lance Taylor 6ac015100f common.opt: Add Wstrict-overflow and Wstrict-overflow=.
./:	* common.opt: Add Wstrict-overflow and Wstrict-overflow=.
	* flags.h (warn_strict_overflow): Declare.
	(enum warn_strict_overflow_code): Define.
	(issue_strict_overflow_warning): New static inline function.
	* opts.c (warn_strict_overflow): New variable.
	(common_handle_option): Handle OPT_Wstrict_overflow and
	OPT_Wstrict_overflow_.
	* c-opts.c (c_common_handle_option): Set warn_strict_overflow for
	OPT_Wall.
	* fold-const.c: Include intl.h.
	(fold_deferring_overflow_warnings): New static variable.
	(fold_deferred_overflow_warning): New static variable.
	(fold_deferred_overflow_code): New static variable.
	(fold_defer_overflow_warnings): New function.
	(fold_undefer_overflow_warnings): New function.
	(fold_undefer_and_ignore_overflow_warnings): New function.
	(fold_deferring_overflow_warnings_p): New function.
	(fold_overflow_warning): New static function.
	(make_range): Add strict_overflow_p parameter.  Change all
	callers.
	(extract_muldiv, extract_muldiv_1): Likewise.
	(fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
	tree_expr_nonnegative_p.
	(fold_negate_expr): Call fold_overflow_warning.
	(fold_range_test): Likewise.
	(fold_comparison): Likewise.
	(fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
	instead of tree_expr_nonnegative_p.
	(tree_expr_nonnegative_warnv_p): Rename from
	tree_expr_nonnegative_p, add strict_overflow_p parameter.
	(tree_expr_nonnegative_p): New function.
	(tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
	strict_overflow_p parameter.
	(tree_expr_nonzero_p): New function.
	* passes.c (verify_interpass_invariants): New static function.
	(execute_one_pass): Call it.
	* tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
	warnings.
	(number_of_iterations_exit, loop_niter_by_eval): Likewise.
	(estimate_numbers_of_iterations): Likewise.
	(scev_probably_wraps_p): Likewise.
	* tree-ssa-ccp.c: Include "toplev.h".
	(evaluate_stmt): Defer fold overflow warnings until we know we are
	going to optimize.
	(struct fold_stmt_r_data): Add stmt field.
	(fold_stmt_r): Defer fold overflow warnings until we know we
	optimized.
	(fold_stmt): Initialize stmt field of fold_stmt_r_data.
	(fold_stmt_inplace): Likewise.
	* tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
	(cleanup_control_expr_graph): Defer fold overflow warnings until
	we know we are going to optimize.
	* tree-cfg.c (fold_cond_expr_cond): Likewise.
	* tree-ssa-threadedge.c (simplify_control_stmt_condition):
	Likewise.
	* tree-vrp.c (vrp_expr_computes_nonnegative): Call
	tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
	* tree-ssa-loop-manip.c (create_iv): Likewise.
	* c-typeck.c (build_conditional_expr): Likewise.
	(build_binary_op): Likewise.
	* tree-vrp.c (vrp_expr_computes_nonzero): Call
	tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
	(extract_range_from_unary_expr): Likewise.
	* simplify-rtx.c (simplify_const_relational_operation): Warn when
	assuming that signed overflow does not occur.
	* c-common.c (pointer_int_sum): Ignore fold overflow warnings.
	* tree.h (tree_expr_nonnegative_warnv_p): Declare.
	(fold_defer_overflow_warnings): Declare.
	(fold_undefer_overflow_warnings): Declare.
	(fold_undefer_and_ignore_overflow_warnings): Declare.
	(fold_deferring_overflow_warnings_p): Declare.
	(tree_expr_nonzero_warnv_p): Declare.
	* doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
	of warning options.
	(Warning Options): Document -Wstrict-overflow.
	* Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
	(tree-ssa-ccp.o): Likewise.
	(tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
	(fold-const.o): Depend on intl.h.
testsuite/:
	* gcc.dg/Wstrict-overflow-1.c: New test.
	* gcc.dg/Wstrict-overflow-2.c: New test.
	* gcc.dg/Wstrict-overflow-3.c: New test.
	* gcc.dg/Wstrict-overflow-4.c: New test.
	* gcc.dg/Wstrict-overflow-5.c: New test.
	* gcc.dg/Wstrict-overflow-6.c: New test.
	* gcc.dg/Wstrict-overflow-7.c: New test.
	* gcc.dg/Wstrict-overflow-8.c: New test.
	* gcc.dg/Wstrict-overflow-9.c: New test.
	* gcc.dg/Wstrict-overflow-10.c: New test.

From-SVN: r121895
2007-02-13 22:34:45 +00:00
Ian Lance Taylor 30d18db484 re PR middle-end/30751 (internal compiler error: in extract_insn, at recog.c:2108)
PR middle-end/30751
	* lower-subreg.c (resolve_simple_move): Decompose subregs in
	addresses.

From-SVN: r121894
2007-02-13 22:18:26 +00:00
Stuart Hastings ce9c43a1bf * gcc/config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
From-SVN: r121891
2007-02-13 19:02:57 +00:00
Richard Henderson 138ae41e4d alpha.c (alpha_stdarg_optimize_hook): Strip handled_component_p before looking for the indirect_ref.
* config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
        handled_component_p before looking for the indirect_ref.

From-SVN: r121886
2007-02-13 09:29:35 -08:00
Richard Henderson 2e6834d33e i386.md (bswapsi_1): Rename from bswapsi2, remove flags clobber.
* config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
        remove flags clobber.
        (bswapsi2): New expander, emit code for !TARGET_BSWAP.
        (bswaphi_lowpart): New.
        (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
        remove TARGET_BSWAP test.  Delete expander of the same name.

        * optabs.c (widen_bswap, expand_doubleword_bswap): New.
        (expand_unop): Use them.

From-SVN: r121884
2007-02-13 08:42:12 -08:00
Uros Bizjak a23132e116 * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
*cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
	*movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
	*ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
	*ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
	*ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
	*ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
	assembler dialect choice from asm templates.

From-SVN: r121883
2007-02-13 15:03:03 +01:00
Richard Henderson 174c12c748 i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
* config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
        (fixuns_trunc<SSEMODEF>si2): Use it.
        * config/i386/sse.md (vec_setv4sf_0): Export.
        * config/i386/i386.c (ix86_build_const_vector): Export.
        (ix86_split_convert_uns_si_sse): Rename from
        ix86_expand_convert_uns_si_sse and rewrite as a splitter.
        * config/i386/i386-protos.h: Update.

From-SVN: r121877
2007-02-12 17:20:02 -08:00
Manuel López-Ibáñez 2397c5750e re PR c/29521 (Confusing warning for return with expression in function returning void)
2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c/29521
	* c-typeck.c (c_finish_return): Improve warning message.

testsuite/
	* gcc.dg/c90-return-1.c: Update output.
	* gcc.dg/c99-return-1.c: Likewise.

From-SVN: r121876
2007-02-13 00:29:17 +00:00
Manuel López-Ibáñez 14a32e14b1 alias.c (find_symbolic_term): Delete unused function.
2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* alias.c (find_symbolic_term): Delete unused function.

From-SVN: r121869
2007-02-13 00:13:29 +00:00
Uros Bizjak 0f7b6776a3 i386.md (paritydi2, paritysi2): New expanders.
* config/i386/i386.md (paritydi2, paritysi2): New expanders.
        (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
        (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.

testsuite/ChangeLog:

        * gcc.target/i386/parity-1.c: New test.
        * gcc.target/i386/parity-2.c: New test.

From-SVN: r121863
2007-02-12 22:08:25 +01:00
Eric Botcazou 6170a99877 tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
* tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
	* cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
	the function, temporarily point the debug interface to the null one.

From-SVN: r121861
2007-02-12 21:01:33 +00:00
Eric Botcazou d996473d67 dwarf2out.c (round_up_to_align): New static function.
* dwarf2out.c (round_up_to_align): New static function.
	(field_byte_offset): Use it to round the offset.

From-SVN: r121859
2007-02-12 20:52:37 +00:00
Richard Henderson fffef1dc7a alpha.md (bswapsi2, bswapdi2): New.
* config/alpha/alpha.md (bswapsi2, bswapdi2): New.
        (inswl_const): Export.

From-SVN: r121853
2007-02-12 10:53:22 -08:00
Richard Henderson 7ab0aca2fe calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the result mode of the libcall, convert back to outmode.
* calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
        result mode of the libcall, convert back to outmode.

From-SVN: r121852
2007-02-12 10:46:16 -08:00
Roger Sayle d8d25baea6 i386.md (*bswapdi2_rex): Renamed from bswapdi2.
* config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
	(bswapdi2): New define_expand to implement 32-bit implementation.

	* gcc.target/i386/builtin-bswap-3.c: New test case.

From-SVN: r121851
2007-02-12 18:41:08 +00:00
Nick Clifton c662432e8c invoke.texi (Overall Options): Document --help=.
* doc/invoke.texi (Overall Options): Document --help=.                                                        
* gcc.c (target_help_flag): Rename to print_subprocess_flag.                                                  
  (cc1_options): Pass --help= on to cc1.                                                                      
  (display_help): Add description of --help=.                                                                 
  (process_command): Add code to handle --help=.  Allow translated                                            
  --help and --target-help switches to be passed on to compiler sub-process.                                                                                               
  (main): Remove unused if statement.                                                                         
* opts.c (columns): Remove.                                                                                   
  (LEFT_COLUMN): Define.                                                                                      
  (wrap_help): Add columns argument.                                                                          
  (print_filtered_help): Change parameters to be an include bitmask,                                          
  an exclude bitmask, an any bitmask and the column width.  Move the                                          
  code to display the params list here.  Add code to display the                                              
  status of options rather than their descriptions if the quiet flag                                          
  is not active.                                                                                              
  (print_specific_help): Change parameters to be an include bitmask,                                          
  an exclude bitmask and an any bitmask.  Move code to look up the                                            
  column width here.  Decide upon the title for an options listing.                                           
  (common_handle_options): Add code to handle --help=.  Adapt code                                            
  for --help and --target-help to use the revised form of the                                                 
  print_specific_help function.                                                                               
  (print_help): Delete.                                                                                       
  (print_param_help): Delete.                                                                                 
  (print_switch): Delete.                                                                                     
* opts.h (cl_lang_count): Add prototype.                                                                      
 (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS, CL_MAX_OPTION_CLASS): New defines.            
* optc-gen.awk: Add construction of cl_lang_count.                                                            
* c.opt: Add Warning attribute to warning options and Optimization attribute to optimization options.         
* common.opt: Likewise.                                                                                       
  Add --help=.                                                                                                
  Add -fhelp and -ftarget-help as aliases for the transformed --help and --target-help options.               
* opt-functions.awk: Add code to handle Warning and Optimization attributes.

From-SVN: r121849
2007-02-12 16:25:14 +00:00
Richard Henderson dfcbeaa576 constraints.md: New file.
* config/alpha/constraints.md: New file.
	* config/alpha/alpha.c: Include tm-constrs.h.
	(alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
	alpha_extra_constraint): Remove.
	(alpha_emit_conditional_branch): Use satisfies_constraint_*.
	* config/alpha/alpha-protos.h: Update.
	* config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
	(CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
	(EXTRA_CONSTRAINT): Remove.
	* config/alpha/alpha.md: Include constraints.md.
	(adddi splitter): Use satisfies_constraint_*.
	* config/alpha/predicates.md (add_operand): Likewise.
	(sext_add_operand, addition_operation): Likewise.

From-SVN: r121847
2007-02-12 08:10:15 -08:00
Dorit Nuzman 9b3ffe5f7a re PR tree-optimization/29145 (unsafe use of restrict qualifier)
PR tree-optimization/29145
        * tree-data-ref.c (base_addr_differ_p): Make us more conservative
        in our handling of restrict qualified pointers.

From-SVN: r121844
2007-02-12 13:14:52 +00:00
Manuel López-Ibáñez 27f33b1531 re PR middle-end/7651 (Define -Wextra strictly in terms of other warning flags)
2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR middle-end/7651
	* doc/invoke.texi (Wunused-value): Update description.
	(Wextra): Delete item.
	* opts.c (set_Wextra): Don't use the value of Wextra to set the
	value of Wunused-value.
	* c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
	(c_finish_stmt_expr): Don't check extra_warnings.
	(emit_side_effect_warnings): The caller is responsible to check
	warn_unused_value.
cp/
	* cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
	Check warn_unused_value just once.

From-SVN: r121843
2007-02-12 09:32:08 +00:00
Roger Sayle 2376c58f22 simplify-rtx.c (simplify_relational_operation_1): Correct typo.
* simplify-rtx.c (simplify_relational_operation_1): Correct typo.


Co-Authored-By: Matt Thomas <matt@3am-software.com>

From-SVN: r121839
2007-02-12 04:19:42 +00:00
Roger Sayle 69fce32ff9 simplify-rtx.c (simplify_relational_operation_1): Optimize comparisons of POPCOUNT against zero.
* simplify-rtx.c (simplify_relational_operation_1): Optimize
	comparisons of POPCOUNT against zero.
	(simplify_const_relational_operation): Likewise.

	* gcc.target/ia64/builtin-popcount-1.c: New test case.
	* gcc.target/ia64/builtin-popcount-2.c: Likewise.

From-SVN: r121838
2007-02-12 01:43:50 +00:00
Manuel López-Ibáñez 10c5453183 invoke.texi (Wextra): Delete outdated paragraph.
2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* doc/invoke.texi (Wextra): Delete outdated paragraph.

From-SVN: r121829
2007-02-11 22:29:27 +00:00
Manuel López-Ibáñez b04e13e8be dwarf2out.c (root_type): Delete unused function.
2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* dwarf2out.c (root_type): Delete unused function.

From-SVN: r121828
2007-02-11 22:19:49 +00:00
Manuel López-Ibáñez 807331086b genattrtab.c (contained_in_p): Delete unused function.
2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* genattrtab.c (contained_in_p): Delete unused function.
	(write_expr_attr_cache): Likewise.

From-SVN: r121827
2007-02-11 22:10:43 +00:00
Jan Hubicka 68e2e14118 ipa-inline.c (cgraph_edge_badness): Add "else" missing in the previous patch.
* ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
	previous patch.

From-SVN: r121825
2007-02-11 21:28:32 +00:00
Steven Bosscher a31830a7ca fwprop.c (try_fwprop_subst): Use set_unique_reg_note to add the REG_EQ* note.
* fwprop.c (try_fwprop_subst): Use set_unique_reg_note
	to add the REG_EQ* note.
	* see.c (see_merge_one_use_extension): Likewise.
	* local-alloc.c (update_equiv_regs): Likewise.  Also don't
	turn REG_EQUAL notes into REG_EQUIV notes if the target
	register may have more than one set.
	* function.c (assign_parm_setup_reg): Use set_unique_reg_note.
	* gcse.c (try_replace_reg): Likewise.
	* alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
	* calls.c (fixup_tail_calls): Likewise.  Abort if there is
	more than one REG_EQUIV note.
	* reload1.c (gen_reload): Use set_unique_reg_note.

From-SVN: r121821
2007-02-11 19:53:11 +00:00
Uros Bizjak 4c38b6d942 i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
* config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
        (ix86_builtin_conversion): New function.

testsuite/ChangeLog:

        * gcc.dg/vect/vect-intfloat-conversion-1.c: Loop gets vectorized
        on i?86 and x86_64.
        * gcc.dg/vect/vect-intfloat-conversion-2.c: Ditto.
        * gcc.dg/vect/vect-floatint-conversion-1.c: New.
        * gcc.dg/vect/vect-93.c: Another loop gets vectorized
        on i?86 and x86_64.
        * gcc.dg/vect/vect-113.c: Ditto.

From-SVN: r121820
2007-02-11 20:48:07 +01:00
Mark Mitchell 56fd65c7d9 re PR target/29487 (Shared libstdc++ fails to link)
PR target/29487
	* tree.h (DECL_REPLACEABLE_P): New macro.
	* except.c (set_nothrow_function_flags): Likewise.

	PR target/29487
	* decl.c (finish_function): Use DECL_REPLACEABLE.
	* tree.c (cp_cannot_inline_tree_fn): Likewise.

	PR c++/29487
	* g++.dg/eh/weak1-C: New test.
	* g++.dg/eh/weak1-a.cc: Likewise.
	* g++.dg/eh/comdat1.C: Likewise.

From-SVN: r121819
2007-02-11 18:58:05 +00:00
Tehila Meyzels f57d17f1fc tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
* doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
        * targhooks.c (default_builtin_vectorized_conversion): New.
        * targhooks.h (default_builtin_vectorized_function): New declaration.
        * target.h (struct vectorize): Add builtin_conversion field.
        * tree-vectorizer.h (type_conversion_vec_info_type): New enum
        stmt_vec_info_type value.
        (vectorizable_conversion): New declaration.
        * tree-vect-analyze.c (vect_analyze_operations): Add
        vectorizable_conversion call.
        * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
        * tree-vect-transform.c (vectorizable_conversion): New function.
        (vect_transform_stmt): Add case for type_conversion_vec_info_type.
        * tree-vect-generic.c (expand_vector_operations_1): Consider correct
        mode.
        * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
        (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
        (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX or
        ALTIVEC_BUILTIN_VCFSX.


Co-Authored-By: Dorit Nuzman <dorit@il.ibm.com>
Co-Authored-By: Ira Rosen <irar@il.ibm.com>

From-SVN: r121818
2007-02-11 11:46:07 +00:00
Uros Bizjak 3de8da2a3c ChangeLog: Whitespace fixes.
* ChangeLog: Whitespace fixes.
	* gcc/ChangeLog: Ditto.
	* gcc/testsuite/ChangeLog: Ditto.

From-SVN: r121815
2007-02-11 09:09:03 +01:00
John David Anglin 51823d478c re PR target/30634 (FAIL: gfortran.fortran-torture/execute/intrinsic_set_exponent.f90)
PR target/30634
	* pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
	CONST_DOUBLE and operand 0 is a hard register.
	(movdi): For 64-bit target, remove code to force CONST_DOUBLE to
	memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
	is a hard floating-point register.

From-SVN: r121802
2007-02-10 19:51:40 +00:00
Richard Henderson 8893239dc4 Makefile.in (libgcc-support, [...]): Add emutls.c.
gcc/ChangeLog:
* Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
* builtin-types.def (BT_WORD): Make unsigned.
(BT_FN_VOID_PTR_WORD_WORD_PTR): New.
* builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
(BUILT_IN_EMUTLS_REGISTER_COMMON): New.
* c-decl.c (grokdeclarator): Don't error if !have_tls.
* c-parser.c (c_parser_omp_threadprivate): Likewise.
* dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
emulated tls.
* expr.c (emutls_var_address): New.
(expand_expr_real_1): Expand emulated tls.
(expand_expr_addr_expr_1): Likewise.
* libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
* output.h (emutls_finish): Declare.
* toplev.c (compile_file): Call it.
* tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
address before wrapping in CONST.
* varasm.c (emutls_htab, emutls_object_type): New.
(EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
(get_emutls_object_name, get_emutls_object_type): New.
(get_emutls_init_templ_addr, emutls_decl): New.
(emutls_common_1, emutls_finish): New.
(assemble_variable): When emulating tls, swap decls; generate
constructor for the emutls objects.
(do_assemble_alias): When emulating tls, swap decl and target name.
(default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
for emulated tls.
* varpool.c (decide_is_variable_needed): Look at force_output.
Recurse for emulated tls.
(cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
with decide_is_variable_needed.
* emutls.c: New file.
* config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
tls_object for real tls.
gcc/cp/ChangeLog:
* decl.c (grokvardecl): Don't error if !have_tls.
(grokdeclarator): Likewise.
* parser.c (cp_parser_omp_threadprivate): Likewise.
gcc/fortran/ChangeLog:
* f95-lang.c (gfc_init_builtin_functions): Add __emutls_get_address
and __emutls_register_common.
* openmp.c (gfc_match_omp_threadprivate): Don't error if !have_tls.
* trans-common.c (build_common_decl): Don't check have_tls.
* trans-decl.c (gfc_finish_var_decl): Likewise.
* types.def (BT_WORD, BT_FN_PTR_PTR): New.
(BT_FN_VOID_PTR_WORD_WORD_PTR): New.
gcc/testsuite/ChangeLog:
* lib/target-supports.exp (check_effective_target_tls): Redefine
to mean non-emulated tls.
* gcc.dg/tls/alias-1.c: Remove tls requirement.
* gcc.dg/tls/asm-1.c, gcc.dg/tls/debug-1.c, gcc.dg/tls/diag-1.c,
gcc.dg/tls/diag-2.c, gcc.dg/tls/diag-3.c, gcc.dg/tls/diag-4.c,
gcc.dg/tls/diag-5.c, gcc.dg/tls/init-1.c, gcc.dg/tls/nonpic-1.c,
gcc.dg/tls/opt-10.c, gcc.dg/tls/opt-5.c, gcc.dg/tls/opt-6.c,
gcc.dg/tls/opt-8.c, gcc.dg/tls/opt-9.c, gcc.dg/tls/pic-1.c,
gcc.dg/tls/struct-1.c, gcc.dg/tls/trivial.c: Likewise.

From-SVN: r121800
2007-02-10 19:19:10 +00:00
Kaz Kojima 4c9034c5e5 re PR rtl-optimization/29599 (ICE when building the kernel on SH4)
PR rtl-optimization/29599
	* reload1.c (eliminate_regs_in_insn): Take the destination
	mode into account when computing the offset.

From-SVN: r121792
2007-02-10 06:47:49 +00:00
Stuart Hastings ebff937c19 i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
* gcc/config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
	* gcc/config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
	* gcc/config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
	fixuns_truncdfhi2): New.
	(fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
	(floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
	(floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
	(floatunssidf2): Allow nonimmediate source.
	* gcc/config/i386/sse.md (movdi_to_sse): New.  (vec_concatv2di): Drop '*'.
	* gcc/config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
	ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
	ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse): New.
	* gcc/config/i386/i386.c (ix86_expand_convert_uns_si_sse,
	ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
	ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
	ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
	(ix86_build_signbit_mask): Fix decl of v, refactor to call ix86_build_const_vector.
	(x86_emit_floatuns): Rewrite.

Co-Authored-By: Richard Henderson <rth@redhat.com>

From-SVN: r121790
2007-02-10 01:17:03 +00:00
Manuel López-Ibáñez 692b647c4f genautomata.c (longest_path_length): Delete unused function.
2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* genautomata.c (longest_path_length): Delete unused function.
	(struct state): Delete unused longest_path_length.
	(UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
	(get_free_state): Delete unused.

From-SVN: r121789
2007-02-10 01:05:18 +00:00
Jan Hubicka d562c6687f params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
* params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
	* doc/invoke.texi (inline-unit-growth): Update default value.

From-SVN: r121781
2007-02-09 22:51:44 +00:00
Jan Hubicka 45a80bb9e8 Makefile.in (passes.o, [...]): Add dependencies.
* Makefile.in (passes.o, ipa-inline.o): Add dependencies.
	* cgraphbuild.c (build_cgraph_edges): Compute frequencies.
	(rebuild_cgraph_edges): Likewise.
	* cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
	(dump_cgraph_node): Dump frequencies.
	(cgraph_clone_edge): Add frequency scales.
	(cgraph_clone_node): Add freuqnecy.
	* cgraph.h (cgraph_edge): Add freuqnecy argument.
	(CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
	(cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
	* tree-pass.h (TODO_rebuild_frequencies): New constant.
	* cgraphunit.c (verify_cgraph_node): Verify frequencies.
	(cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
	(save_inline_function_body): Likewise.
	* ipa-inline.c: inluce rtl.h
	(cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
	(cgraph_edge_badness): Use frequencies.
	(cgraph_decide_recursive_inlining): Update clonning.
	(cgraph_decide_inlining_of_small_function): Dump frequency.
	* predict.c (estimate_bb_frequencies): Export.
	* predict.h (estimate_bb_frequencies): Declare.
	* tree-inline.c (copy_bb): Watch overflows.
	(expand_call_inline): Update call of cgraph_create_edge.
	(optimize_inline_calls): Use TODO flags to update frequnecies.
	* passes.h: Include predict.h
	(init_optimization_passes): Move profile ahead.
	(execute_function_todo): Handle TODO_rebuild_frequencies.

From-SVN: r121780
2007-02-09 22:49:30 +00:00
Roger Sayle f2477b062c alpha.c (emit_insxl): Force the first operand of the insbl or inswl pattern into a register.
* config/alpha/alpha.c (emit_insxl): Force the first operand of
	the insbl or inswl pattern into a register.

From-SVN: r121779
2007-02-09 22:36:34 +00:00
Roger Sayle ff848f0e0f ia64.md (bswapdi2): New define_insn.
* config/ia64/ia64.md (bswapdi2): New define_insn.

	* gcc.target/ia64/builtin_bswap-1.c: New test case.

From-SVN: r121776
2007-02-09 21:33:36 +00:00
Richard Henderson ed69105c95 constraints.md (Ym): New constraint.
* config/i386/constraints.md (Ym): New constraint.
        * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
        (movdi_1_rex64): Split sse and xmm general register moves from
        memory move alternatives.  Use conditional register constraints.
        (movsf_1, movdf_integer): Likewise.
        (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
        (movdf_integer_rex64): New.
        (pushsf_rex64): Fix output constraints.
        * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
        (sse2_stored): Likewise.
        (sse2_storeq_rex64): New.
        * config/i386/i386.c (x86_inter_unit_moves): Enable for not
        amd and not generic.
        (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
        for optimize_size.  Remove SF/DFmode hack.

From-SVN: r121767
2007-02-09 10:17:09 -08:00
Dwarakanath Rajagopal 35a63f2131 driver-i386.c: Turn on -mtune=native for AMDFAM10.
2007-02-09  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>

	* config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
	(bit_SSE4a): New.

From-SVN: r121763
2007-02-09 16:56:45 +00:00
Nathan Sidwell 10e96df47c 200x-xx-xx Nathan Sidwell <nathan@codesourcery.com> Richard Sandiford <richard@codesourcery.com>
gcc/
200x-xx-xx  Nathan Sidwell  <nathan@codesourcery.com>
	    Richard Sandiford  <richard@codesourcery.com>

	* config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
	(m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
	(m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
	m68k/t-mlib to tmake_file.
	(m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
	(m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
	(m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
	Allow it to be cf or m68k.  Set m68k_arch_family.  If that
	variable is not empty, add t-$m68k_arch_family to tmake_file.
	Add t-mlibs to tmake_file.
	* doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
	* config/m68k/t-cf: New file.
	* config/m68k/t-m68k: Likewise.
	* config/m68k/t-mlibs: Likewise.
	* config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
	(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
	(M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
	* config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
	(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
	Delete.
	* config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
	(INSTALL_LIBGCC): Delete.
	(M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
	* config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
	(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
	(M68K_MLIB_CPU): Define.
	* config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
	(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
	(M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.

Co-Authored-By: Richard Sandiford <richard@codesourcery.com>

From-SVN: r121743
2007-02-09 13:47:25 +00:00
Zdenek Dvorak b44e7f07c5 re PR tree-optimization/23361 (Can't eliminate empty loops with power of two step and variable bounds)
2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
	Richard Guenther  <rguenther@suse.de>

	PR middle-end/23361
	* fold-const.c (fold_comparison): Handle obfuscated comparisons
	against INT_MIN/INT_MAX.
	* tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
	file if a loop is removed.

	* gcc.dg/fold-compare-3.c: New testcase.
	* gcc.dg/tree-ssa/loop-24.c: Likewise.

Co-Authored-By: Richard Guenther <rguenther@suse.de>

From-SVN: r121742
2007-02-09 13:29:11 +00:00
Joseph Myers 46bd2beed4 calls.c (store_one_arg): Pass correct alignment to emit_push_insn for non-BLKmode values.
* calls.c (store_one_arg): Pass correct alignment to
	emit_push_insn for non-BLKmode values.
	* expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
	unaligned stack slot via a suitably aligned slot.

From-SVN: r121736
2007-02-09 01:11:18 +00:00