Commit Graph

31325 Commits

Author SHA1 Message Date
Zdenek Dvorak b06e8639fa cfgloop.h (enum li_flags): Make the constants powers of two.
* cfgloop.h (enum li_flags): Make the constants powers of two.

From-SVN: r120433
2007-01-04 09:53:29 +00:00
Jan Hubicka b8a00a4dcb tree-inline.c (copy_bb): Insert new statements to statements_to_fold set.
* tree-inline.c (copy_bb): Insert new statements to statements_to_fold
	set.
	(fold_marked_statements): New function.
	(optimize_inline_calls, tree_function_versioning): Fold new statements.
	* tree-inline.h (copy_body_data): Add statemetns_to_fold.

From-SVN: r120430
2007-01-04 08:56:05 +00:00
Daniel Jacobowitz fa9585134f Makefile.def (target_modules): Add libgcc.
./	* Makefile.def (target_modules): Add libgcc.
	(lang_env_dependencies): Remove default items.  Use no_c and no_gcc.
	* Makefile.tpl (clean-target-libgcc): Delete.
	(configure-target-[+module+]): Emit --disable-bootstrap dependencies
	on gcc even for bootstrapped modules.  Rewrite handling of
	lang_env_dependencies to loop over target_modules.
	* configure.in (target_libraries): Add target-libgcc.
	* Makefile.in, configure: Regenerated.
gcc/
	* config.gcc: Mention libgcc/config.host.
	* Makefile.in: Update comments mentioning libgcc.
	(LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
	(all.cross, start.encap, rest.encap, rest.cross): Update
	dependencies for libgcc move.
	(libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
	(clean-target, clean-target-libgcc): Delete.
	(srcdirify, GCC_EXTRA_PARTS): New macros.
	(libgcc-support, libgcc.mvars): New rules.
	(distclean): Remove mention of mklibgcc.
	(install): Don't reference INSTALL_LIBGCC.
	(install-common): Don't reference EXTRA_PARTS.
	(install-libgcc, install-multilib): Delete rules.
	* mklibgcc.in: Delete file.
	* doc/configfiles.texi: Don't mention mklibgcc.

	* config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
	* config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
	* config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
	* config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
	(mklibgcc, ldblspecs): Likewise.

	* config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
	(posixpre.def): Use $(T).
	(SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
	(SHLIB_SRC, SHLIB_INSTALL): Delete.
	(SHLIB_LINK): Make dummy.
	* config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.

	* config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.

	* config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
	* config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
	config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
	config/rs6000/t-newas, config/sparc/t-elf: Likewise.

	* configure.ac (all_outputs): Remove mklibgcc.
	* configure: Regenerated.
libgcc/
	* Makefile.in, config/i386/t-darwin, config/i386/t-darwin64,
	config/i386/t-nwld, config/rs6000/t-darwin, config/rs6000/t-ldbl128,
	config/i386/t-crtfm, config/alpha/t-crtfm, config/ia64/t-ia64,
	config/sparc/t-crtfm, config/t-slibgcc-darwin,
	config/rs6000/t-ppccomm, config.host, configure.ac, empty.mk,
	shared-object.mk, siditi-object.mk, static-object.mk: New files.
	* configure: Generated.

Co-Authored-By: Paolo Bonzini <bonzini@gnu.org>

From-SVN: r120429
2007-01-04 04:22:37 +00:00
Josh Conner 7816b87eb1 re PR middle-end/29683 (Arg split between stack/regs can cause stack corruption)
2007-03-01  Josh Conner  <jconner@apple.com>

	PR middle-end/29683
	* calls.c (compute_argument_addresses): Set stack and stack_slot
	for partial args, too.
	(store_one_arg): Use locate.size.constant for the size when
	generating a save_area.

2007-03-01  Josh Conner  <jconner@apple.com>

	PR middle-end/29683
	* gcc.dg/pr29683.c: New.

From-SVN: r120425
2007-01-04 01:37:15 +00:00
Robert Kennedy 611021e16c tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results whose definitions are deleted due to basic block...
* tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
	whose definitions are deleted due to basic block merging.

From-SVN: r120423
2007-01-04 01:20:08 +00:00
Paul Brook a15908a410 re PR target/16634 (arm-elf-gcc problems when generating code for __attribute__ ((interrupt ("IRQ"))))
2007-01-03  Paul Brook  <paul@codesourcery.com>

	PR target/16634
	gcc/
	* config/arm/arm.c (output_return_instruction): Pop PC in interrupt
	functions.
	(use_return_insn): Return 0 for Thumb interrupt functions.
	(print_multi_reg): Add rfe argument for IRQ returns.
	(arm_output_epilogue): Pop interrupt return address directly into PC.
	(arm_expand_prologue): Only adjust IRQ return address in Arm mode.

From-SVN: r120413
2007-01-04 00:09:48 +00:00
Paul Brook 5b3e666315 backport: thumb2.md: New file.
2007-01-03  Paul Brook  <paul@codesourcery.com>

	Merge from sourcerygxx-4_1.
	gcc/
	* config/arm/thumb2.md: New file.
	* config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
	Thumb-2.
	* config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
	* config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
	(ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
	* config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
	tables.
	(ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
	* config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
	comptibility.
	* config/arm/ieee754-sf.S: Ditto.
	* config/arm/arm.c (thumb_base_register_rtx_p): Rename...
	(thumb1_base_register_rtx_p): ... to this.
	(thumb_index_register_rtx_p): Rename...
	(thumb1_index_register_rtx_p): ... to this.
	(thumb_output_function_prologue): Rename...
	(thumb1_output_function_prologue): ... to this.
	(thumb_legitimate_address_p): Rename...
	(thumb1_legitimate_address_p): ... to this.
	(thumb_rtx_costs): Rename...
	(thumb1_rtx_costs): ... to this.
	(thumb_compute_save_reg_mask): Rename...
	(thumb1_compute_save_reg_mask): ... to this.
	(thumb_final_prescan_insn): Rename...
	(thumb1_final_prescan_insn): ... to this.
	(thumb_expand_epilogue): Rename...
	(thumb1_expand_epilogue): ... to this.
	(arm_unwind_emit_stm): Rename...
	(arm_unwind_emit_sequence): ... to this.
	(thumb2_legitimate_index_p, thumb2_legitimate_address_p,
	thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
	thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
	arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
	thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
	thumb2_output_casesi): New functions.
	(TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
	(FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
	FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
	THUMB2_WORK_REGS): Define.
	(arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
	arm_condexec_mask, arm_condexec_masklen)): New variables.
	(all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
	(arm_override_options): Check new CPU capabilities.
	Set new architecture flag variables.
	(arm_isr_value): Handle v7m interrupt functions.
	(user_return_insn): Return 0 for v7m interrupt functions.  Handle
	Thumb-2.
	(const_ok_for_arm): Handle Thumb-2 constants.
	(arm_gen_constant): Ditto.  Use movw when available.
	(arm_function_ok_for_sibcall): Return false for v7m interrupt
	functions.
	(legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
	(thumb_find_work_register, arm_load_pic_register,
	legitimize_tls_address, arm_address_cost, load_multiple_sequence,
	emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
	print_multi_reg, output_mov_long_double_fpa_from_arm,
	output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
	output_mov_double_fpa_from_arm, output_move_double,
	arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
	output_return_instruction, arm_output_function_prologue,
	arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
	arm_output_mi_thunk, thumb_set_return_address): Ditto.
	(arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
	(arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
	(arithmetic_instr, shift_op): Use arm_shift_nmem.
	(arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
	'!' and 'L'.
	(arm_final_prescan_insn): Use extract_constrain_insn_cached.
	(thumb_expand_prologue): Use thumb_set_frame_pointer.
	(arm_file_start): Output directive for unified syntax.
	(arm_unwind_emit_set): Handle stack alignment instruction.
	* config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
	Add v6t2, v7, v7a, v7r and v7m.
	(RETLDM): Add Thumb-2 code.
	(do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
	* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
	(TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
	TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
	THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
	ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
	THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
	CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
	ADJUST_INSN_LENGTH): Define.
	(TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
	STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
	BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
	PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
	SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
	TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
	HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
	HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
	REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
	REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
	LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
	GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
	ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
	FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
	PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
	(arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
	* config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
	cortex-m3.
	* config/arm/arm-tune.md: Regenerate.
	* config/arm/arm-protos.h: Update prototypes.
	* config/arm/vfp.md: Enable patterns for Thumb-2.
	(arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
	(arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
	(thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
	thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
	* config/arm/libunwind.S: Add Thumb-2 code.
	* config/arm/constraints.md: Update include Thumb-2.
	* config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
	* config/arm/ieee754-df.S: Ditto.
	* config/arm/bpabi.S: Ditto.
	* config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
	* config/arm/predicates.md (low_register_operand,
	low_reg_or_int_operand, thumb_16bit_operator): New.
	(thumb_cmp_operand, thumb_cmpneg_operand): Rename...
	(thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
	* config/arm/t-arm-elf: Add armv7 multilib.
	* config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
	Include thumb2.md.
	(UNSPEC_STACK_ALIGN, ce_count): New.
	(arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
	arm_zero_extendsidi2, arm_zero_extendqidi2): New
	insns/expanders.
	* config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
	(thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
	thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
	* config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
	(cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
	thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
	insns.
	* doc/extend.texi: Document ARMv7-M interrupt functions.
	* doc/invoke.texi: Document Thumb-2 new cores+architectures.

From-SVN: r120408
2007-01-03 23:48:10 +00:00
Jakub Jelinek f8e7718c6f unwind-dw2.c (SIGNAL_FRAME_BIT, [...]): Define.
* unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
	(struct _Unwind_Context): Rename args_size to flags, remove
	signal_frame field, add a new args_size field and version field.
	(_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
	_Unwind_IsExtendedContext): New inline functions.
	(_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
	Assume by_value array is only present if _Unwind_IsExtendedContext.
	(_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
	_Unwind_IsSignalFrame.
	(__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
	(uw_update_context_1): Use _Unwind_SetSignalFrame.
	(uw_init_context_1): Initialize context->flags to
	EXTENDED_CONTEXT_BIT.
	* config/rs6000/linux-unwind.h (frob_update_context): Use
	_Unwind_SetSignalFrame.

From-SVN: r120406
2007-01-04 00:45:47 +01:00
Andrew Pinski 798d1cc9ee Fix PR number in my last changelog entry, I got the testsuite one correct.
From-SVN: r120405
2007-01-03 15:02:13 -08:00
Andrew Pinski d9c2d2969d re PR target/20353 (uclibc does not provide C99 math functions)
2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR middle-end/20353
        * gimplify.c (gimplify_modify_expr_complex_part): Move below
        tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
        the value.

2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR middle-end/30353
        * gcc.c-torture/compile/complex-4.c: New test.

From-SVN: r120404
2007-01-03 15:00:40 -08:00
Kazu Hirata d60ab19691 * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
From-SVN: r120395
2007-01-03 08:42:27 +00:00
Kazu Hirata a590ac6560 alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
* alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
	* cfgbuild.c (find_basic_blocks): Likewise.
	* cfgrtl.c (rtl_create_basic_block): Likewise.
	* function.c (temp_slots_at_level): Likewise.
	* reg-stack.c (stack_regs_mentioned): Likewise.
	* regclass.c (allocate_reg_info): Likewise.
	* tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
	set_bb_for_stmt, move_block_to_fn): Likewise.
	* tree-complex.c (tree_lower_complex): Likewise.
	* vec.h (VEC_safe_grow_cleared): New.

From-SVN: r120386
2007-01-03 08:04:01 +00:00
Kazu Hirata 8a2fcf9128 i386.h (NON_STACK_REG_P, [...]): Remove.
* config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
	REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
	RET, AT_SP): Remove.
	* config/i386/i386.md (*sse_prologue_save_insn): Use return
	instead of RET.

From-SVN: r120383
2007-01-03 06:44:38 +00:00
Zdenek Dvorak 03cb2019ff loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
* loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
	* tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
	to loop_version.
	* cfgloopmanip.c (scale_loop_frequencies): Export.
	(loopify): Scale the frequencies by prescribed coefficients.
	(set_zero_probability): New function.
	(duplicate_loop_to_header_edge): Improve updating of frequencies.
	(lv_adjust_loop_entry_edge, loop_version): Set probabilities
	and frequencies according to arguments.
	* tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
	correctly.
	* cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
	* modulo-sched.c (sms_schedule): Set probabilities for entering
	versioned loop correctly.
	* tree-vect-transform.c (vect_transform_loop): Ditto.
	* cfgloop.h (loopify, loop_version): Declaration changed.
	(scale_loop_frequencies): Declared.

	* gcc.dg/tree-ssa/update-unroll-1.c: New test.
	* gcc.dg/tree-ssa/update-unswitch-1.c: New test.

From-SVN: r120378
2007-01-03 02:29:00 +00:00
Jan Hubicka 7a388ee453 pr16194.c: We now output error on all three functions, not just first one.
* gcc.dg/pr16194.c: We now output error on all three functions, not just
	first one.

	* cgraph.c: Include tree-flow.h
	(cgraph_add_new-function): Handle IPA_SSA mode; execute
	early_local_passes.
	* cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
	* tree-pass.h (pass_all_early_optimizations): Declare.
	* cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
	early_local_passes.
	(cgraph_analyze_function): Do early_local_passes.
	* tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
	Do not add referenced vars.
	* tree-optimize.c (gate_all_optimizations): Do not execute when not in
	SSA form.
	(gate_all_early_local_passes): New gate.
	(pass_early_local_passes): Use new gate.
	(execute_early_local_optimizations): New functions.
	(gate_all_early_optimizations): New gate.
	(pass_all_early_optimizations): New pass.
	(execute_free_datastructures): Free SSA only when initialized.
	(gate_init_datastructures): Init only when optimizing.
	(tree_lowering_passes): Do early local passes when called late.
	* tree-profile.c (do_tree_profiling): Don't profile functions added
	late.
	(do_early_tree_profiling, pass_early_tree_profile): Kill.
	* tree-cfg.c (update_modified_stmts): Do not update when operands are
	not active.
	* passes.c (init_optimizations_passes): Reorder so we go into SSA
	during early_local_passes.
	* Makefile.in (cgraph.o): Add dependency on tree-flow.h.

From-SVN: r120373
2007-01-03 01:12:56 +00:00
Carlos O'Donell ce7b00a869 Makefile.in: Update copyright year.
gcc/

2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>

	* Makefile.in: Update copyright year.

From-SVN: r120360
2007-01-02 22:20:41 +00:00
Carlos O'Donell b3e7b87f99 Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST) in $(lang_checks) and...
gcc/

2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>

	* Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
	in $(lang_checks) and check-consistency targets.

From-SVN: r120359
2007-01-02 22:13:19 +00:00
Jan Hubicka ed1a2abdb1 tree-mudflap.c (mf_decl_cache_locals, [...]): Do not add referenced vars.
* tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
        Do not add referenced vars.
        * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
        are not active.
        * passes.c (init_optimization_passes): Put mudflap_2 after
        free_datastructures.

From-SVN: r120358
2007-01-02 21:36:17 +00:00
Jan Hubicka de6bd996eb tree-optimize (execute_fixup_cfg): Set after_inlining flag.
2007-01-02  Jan Hubicka  <jh@suse.cz>

	* tree-optimize (execute_fixup_cfg): Set after_inlining flag.
	Set NOTHROW flag on call statements proved to be nothrow.
	Update statement of local calls so new pure/const functions are
	updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
	goto receivers.
	(tree_rest_of_compilation): Register hooks and initialize bitmap
	early. Do not set after_inlining flag.

From-SVN: r120357
2007-01-02 21:33:45 +00:00
Steve Ellcey a063525a3a sbitmap.c (HOST_BITS_PER_LONG_LONG): Change to HOST_BITS_PER_LONGLONG
* sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
	HOST_BITS_PER_LONGLONG

From-SVN: r120356
2007-01-02 21:23:55 +00:00
Manuel López-Ibáñez b405ac807c re PR c/19977 (overflow in non-static initializer should not be pedwarn)
2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>

	PR c/19977
	* c-typeck.c (store_init_value): Don't emit pedantic overflow
	warning for non-static initializers.

testsuite/
	* gcc/testsuite/gcc.dg/overflow-warn-3.c: Remove XFAIL.
	* gcc/testsuite/gcc.dg/overflow-warn-4.c: Remove XFAIL.

From-SVN: r120355
2007-01-02 20:07:44 +00:00
Steven Bosscher bd94cb6ec8 alpha.md, [...]: Always use set_unique_reg_note to add REG_EQUAL notes.
* config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
        m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
        rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
        Always use set_unique_reg_note to add REG_EQUAL notes.

From-SVN: r120353
2007-01-02 18:50:33 +00:00
Kazu Hirata 61465e7563 Revert:
2007-01-02  Kazu Hirata  <kazu@codesourcery.com>

	* alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
	* cfgbuild.c (find_basic_blocks): Likewise.
	* cfgrtl.c (rtl_create_basic_block): Likewise.
	* function.c (temp_slots_at_level): Likewise.
	* reg-stack.c (stack_regs_mentioned): Likewise.
	* regclass.c (allocate_reg_info): Likewise.
	* tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
	set_bb_for_stmt, move_block_to_fn): Likewise.
	* tree-complex.c (tree_lower_complex): Likewise.
	* vec.h (VEC_safe_grow_cleared): New.

From-SVN: r120351
2007-01-02 18:06:37 +00:00
Ian Lance Taylor fbc8d2d30e c-common.c (c_common_truthvalue_conversion): When warning about using an assignment as a truth value, set TREE_NO_WARNING.
./:	* c-common.c (c_common_truthvalue_conversion): When warning about
	using an assignment as a truth value, set TREE_NO_WARNING.
cp/:
	* semantics.c (maybe_convert_cond): Optionally warn when using an
	assignment as a condition.
	* typeck.c (convert_for_assignment): Optionally warn about
	assigning the result of an assignment to a bool.
testsuite/:
	* g++.dg/warn/Wparentheses-22.C: New test.
	* g++.dg/warn/Wparentheses-23.C: New test.

From-SVN: r120348
2007-01-02 17:49:07 +00:00
Manuel López-Ibáñez b1ed4cb43c re PR middle-end/7651 (Define -Wextra strictly in terms of other warning flags)
2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR middle-end/7651
	* c.opt (Wold-style-declaration): New.
	* doc/invoke.texi (C-only Warning Options): New.
	(Wold-style-declaration): Document it.
	(Wextra): Enabled by -Wextra.
	* c-opts.c (c_common_post_options): Enabled by -Wextra.
	* c-decl.c (declspecs_add_scspec): Replace -Wextra with
	-Wold-style-declaration.

testsuite/
	* gcc.dg/declspec-3.c: Replace -W with -Wold-style-declaration.
	* gcc.dg/declspec-3-Wextra.c: New.
	* gcc.dg/declspec-3-no.c: New

From-SVN: r120347
2007-01-02 17:33:25 +00:00
Kazu Hirata d887a68299 alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
* alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
	* cfgbuild.c (find_basic_blocks): Likewise.
	* cfgrtl.c (rtl_create_basic_block): Likewise.
	* function.c (temp_slots_at_level): Likewise.
	* reg-stack.c (stack_regs_mentioned): Likewise.
	* regclass.c (allocate_reg_info): Likewise.
	* tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
	set_bb_for_stmt, move_block_to_fn): Likewise.
	* tree-complex.c (tree_lower_complex): Likewise.
	* vec.h (VEC_safe_grow_cleared): New.

From-SVN: r120345
2007-01-02 17:03:22 +00:00
Douglas Gregor 06d40de8bb c-common.c (c_common_nodes_and_builtins): Since variants of void_type_node get built before it is given a name...
2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>

	* c-common.c(c_common_nodes_and_builtins): Since variants of
	void_type_node get built before it is given a name, we need to
	give those variants the name, too. 
	(complete_array_type): We need to work with the canonical main
	type of the array, from which we will build the qualified version.
	* params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
	* print-tree.c (print_node): Display canonical type information
	for each type.
	* stor-layout.c (layout_type): When we don't know the
	alignment of a type for which we're building an array, we end up
	guessing wrong, so make the type require structural equality.
	* tree.c (make_node_stat): When we build a new type, it is its
	own canonical type.
	(build_type_attribute_qual_variant): When building an attribute
	variant, its canonical type is the non-attribute variant. However,
	if the attributes are target-dependent and they differ, we need to
	use structural equality checks for this type.
	(build_qualified_type): A qualified type is not equivalent to its
	unqualified variant; set the canonical type appropriately.
	(build_distinct_type_copy): When building a distinct type from
	another type, the new type is its own canonical type.
	(build_variant_type_copy): When building a new type variant, we
	assume that it is equivalent to the original type.
	(build_pointer_type_for_mode): When building a pointer type, also
	build a canonical type pointer.
	(build_reference_type_for_mode): When building a reference type,
	also build a canonical type reference.
	(build_index_type): When we can't hash an index type (e.g.,
	because its maximum value is negative), the index type requires
	structural equality tests.
	(build_array_type): Build the canonical form of an array type.
	(build_function_type): Function types require structural equality,
	because they contain default arguments, attributes, etc. 
	(build_method_type_directly): Ditto for method types.
	(build_offset_type): Build the canonical offset type.
	(build_complex_type): Build the canonical vector type.
	(make_vector_type): Build the canonical vector type.
	* tree.h (TYPE_CANONICAL): New.
	(TYPE_STRUCTURAL_EQUALITY_P): New.
	(SET_TYPE_STRUCTURAL_EQUALITY): New.
	(struct tree_type): Added "canonical" field.
	* params.h (VERIFY_CANONICAL_TYPES): New.
	* doc/c-tree.texi (TYPE_CANONICAL): Document.
	(TYPE_STRUCTURAL_EQUALITY_P): Document.
	(SET_TYPE_STRUCTURAL_EQUALITY): Document.
	* doc/invoke.texi (verify-canonical-types): Document --param
	parameter for verifying canonical types.
	
2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>

	* typeck.c (structural_comptypes): Renamed from "comptypes".
	(comptypes): Use canonical type information to perform fast type
	comparison. When VERIFY_CANONICAL_TYPES, verify that the
	canonical type comparison returns the same results as we would see
	from the current, structural check. Support COMPARE_STRUCTURAL
	when we need structural checks.
	* decl.c (typename_compare): Fix comment.
	(build_typename_type): TYPENAME_TYPE nodes require structural
	equality checks, because they resolve different based on the
	current class type.
	(make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
	require structural equality checks (for now).
	(build_ptrmemfunc_type): Build the canonical pointer to member
	function type.
	(compute_array_index_type): Whenever we build a new index type
	to represent the size of an array in a template, we need to mark
	this index type as requiring structural equality. This goes for
	arrays with value-dependent sizes with the current ABI, or all
	arrays with ABI-1.
	* tree.c (cplus_array_hash): New.
	(struct cplus_array_info): New.
	(cplus_array_compare): New.
	(cplus_array_htab): New.
	(build_cplus_array_type_1): Use a hash table to cache the array
	types we build. Build the canonical array type for each array
	type.
	(cp_build_qualified_type_real): When building a cv-qualified array
	type, use the hash table of array types and build canonical array
	types as necessary.
	(bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
	use structural equality (for now).
	* cp-tree.h (COMPARE_STRUCTURAL): New.
	* pt.c (canonical_template_parms): New.
	(canonical_type_parameter): New.
	(process_template_parm): Find the canonical type parameter.
	(lookup_template_class): When we have named the primary template
	type, set the canonical type for our template class to the primary
	template type. If any of the template arguments need structural
	equality checks, the template class needs structural equality
	checks.
	(tsubst): When reducing the level of a template template
	parameter, we require structural equality tests for the resulting
	parameter because its template parameters have not had their types
	canonicalized. When reducing a template type parameter, find the
	canonical reduced type parameter.
	(any_template_arguments_need_structural_equality_p): New.

2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
	
	* objc-act.c (objc_build_volatilized_type): Keep track of
	canonical types.
	(objc_get_protocol_qualified_type): Ditto.

From-SVN: r120341
2007-01-02 14:23:26 +00:00
Joseph Myers eca0d5e8ce config.gcc (powerpc-*-eabispe*, [...]): Add rs6000/e500.h to tm_file.
* config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
	powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
	powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
	powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
	tm_file.
	* config/rs6000/e500.h: New.
	* config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
	TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
	Remove.
	* config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
	TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
	TARGET_E500_DOUBLE): Remove.
	* config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
	TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
	* config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
	* config/rs6000/rs6000.c (rs6000_override_options): Use
	CHECK_E500_OPTIONS.

From-SVN: r120340
2007-01-02 13:08:01 +00:00
Joseph Myers 8ef65e3da8 rs6000.c (print_operand): Check (TARGET_SPE || TARGET_E500_DOUBLE), not TARGET_E500, for %y.
* config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
	TARGET_E500_DOUBLE), not TARGET_E500, for %y.
	(rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
	rs6000_emit_cmove): Don't check TARGET_E500.
	* config/rs6000/rs6000.md (bunordered, bordered, sunordered,
	sordered): Don't check TARGET_E500.

From-SVN: r120339
2007-01-02 13:03:59 +00:00
Eric Christopher d8934cf1e3 mips.c (mips_regno_mode_ok_for_base_p): Use HARD_REGISTER_NUM_P.
2007-01-01  Eric Christopher  <echristo@apple.com>

        * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
        HARD_REGISTER_NUM_P.

From-SVN: r120334
2007-01-02 06:34:09 +00:00
Roger Sayle cf06e5c146 fold-const.c (fold_binary): Fold "(X^C1) eq/ne C2" into "X eq/ne (C1^C2)".
* fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
	"X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
	has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
	eq/ne Y".

	* gcc.dg/fold-eqxor-4.c: New test case.

From-SVN: r120333
2007-01-02 04:32:07 +00:00
Mike Stump e68ea32e94 configure.ac: Remove support for building with Apple's gcc-3.1.
gcc:
	* configure.ac: Remove support for building with Apple's gcc-3.1.
config:
	* mh-ppc-darwin: Remove support for building with Apple's gcc-3.1.

From-SVN: r120331
2007-01-02 03:35:17 +00:00
Joseph Myers a446b4e815 re PR middle-end/30311 (revision 120211 failed to compile perlbench)
gcc:
	PR middle-end/30311
	* caller-save.c (add_stored_regs): Only handle SUBREGs if inner
	REG is a hard register.  Do not modify REG before calling
	subreg_nregs.
	* rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
	multiple of the size of YMODE for certain lowpart cases.

gcc/testsuite:
	* gcc.c-torture/compile/pr30311.c: New test.

From-SVN: r120329
2007-01-02 00:38:21 +00:00
Andrew Pinski e7073e6440 Fix misspelling of GIMPLE_MODIFY_STMT.
This is what I get for copying manually the patch.

From-SVN: r120322
2007-01-01 14:27:27 -08:00
Andrew Pinski c0893ec0e1 re PR middle-end/30253 (ICE with statement expression inside a conditional)
2007-01-01  Andrew Pinski  <pinskia@gmail.com>

        PR middle-end/30253
        * gimplify (voidify_wrapper_expr): Update for
        GIMPLIFY_MODIFY_STMT.

2007-01-01  Andrew Pinski  <pinskia@gmail.com>

        PR middle-end/30253
        * gcc.c-torture/compile/statement-expression-1.c: New test.

From-SVN: r120321
2007-01-01 14:19:58 -08:00
Andreas Schwab ae1e2d4caa re PR target/29166 (broken unwind information for many life variables resulting in register corruption)
PR target/29166
	* config/ia64/ia64.c (ia64_compute_frame_size): Account space for
	save of BR0 in extra_spill_size instead of spill_size.
	(ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
	area.
	(ia64_expand_epilogue): Restore BR0 from its new location.

testsuite/:
	* g++.dg/eh/pr29166.C: New test.

From-SVN: r120319
2007-01-01 22:03:23 +00:00
Andrew Pinski 9bed0a3480 gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>): Use a temporary variable if the left hand side is not a gimple register.
2007-01-01  Andrew Pinski  <pinskia@gmail.com>

        * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
        Use a temporary variable if the left hand side is not a gimple
        register.

From-SVN: r120318
2007-01-01 14:01:59 -08:00
Andrew Pinski a441d616ba gimplify.c (gimplify_return_expr): Make the temporary variable for the return expression, a gimple register variable.
2007-01-01  Andrew Pinski  <pinskia@gmail.com>

        * gimplify.c (gimplify_return_expr): Make the temporary variable
        for the return expression, a gimple register variable.

From-SVN: r120317
2007-01-01 13:58:19 -08:00
Jan Hubicka 95e2a53bfc emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for INSN_LIST.
* emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
	INSN_LIST.

From-SVN: r120316
2007-01-01 21:53:31 +00:00
Mike Stump 5708d18d3e configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for .literal16.
* configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
	.literal16.
	* config/darwin.c (machopic_select_rtx_section): Use
	HAVE_GAS_LITERAL16.
	(darwin_mergeable_constant_section): Likewise.
	* configure: Regenerate.
	* config.in: Regenerate.

From-SVN: r120315
2007-01-01 20:58:38 +00:00
Jan Hubicka 03c72655ba cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions before starting IPA passes.
* cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
	before starting IPA passes.

Co-Authored-By: Andrew Pinski <pinskia@gmail.com>

From-SVN: r120314
2007-01-01 20:11:09 +00:00
Mike Stump f1aea409a4 Rotate ChangeLog file.
From-SVN: r120313
2007-01-01 19:54:50 +00:00
Richard Guenther e015f57888 re PR tree-optimization/30137 (Missed folding of pointer comparison)
2006-12-31  Richard Guenther  <rguenther@suse.de>

	PR middle-end/30137
	* fold-const.c (fold_comparison): Fold comparison of addresses
	of components.

	* testsuite/gcc.dg/pr30137-1.c: New testcase.
	* testsuite/gcc.dg/pr30137-2.c: Likewise.

From-SVN: r120301
2006-12-31 17:27:35 +00:00
Roger Sayle 870aa1ebe0 re PR middle-end/30322 (((-i-1) + i) +1) is turned into ~i + (i+1) and never into 0 on the tree level)
PR middle-end/30322
	* fold-const.c (fold_binary): Fold X + ~X and ~X + X into -1 when
	we don't care about trapping overflow.  Only convert -A - 1 into ~A
	when we don't care about trapping overflow.

	* gcc.dg/fold-plusnot-1.c: New test case.

From-SVN: r120300
2006-12-31 16:17:49 +00:00
Richard Guenther 72ff1a9609 re PR middle-end/30338 (infinite loop in maybe_canonicalize_comparison)
2006-12-31  Richard Guenther  <rguenther@suse.de>

	PR middle-end/30338
	* fold-const.c (fold_binary): Fix type-mismatch in folding
	of -1 - A to ~A.

	* gcc.c-torture/compile/pr30338.c: New testcase.

From-SVN: r120297
2006-12-31 14:01:19 +00:00
Kazu Hirata 5305a4cb33 * tree-inline.c: Fix a comment typo.
From-SVN: r120288
2006-12-30 21:17:30 +00:00
Jan Hubicka 54e7d067d5 ipa-pure-const.c (check_operand): SSA_NAME is safe.
* ipa-pure-const.c (check_operand): SSA_NAME is safe.
	* ipa-type-escape.c (scan_for_refs): Look into SSA_NAMEs.

From-SVN: r120286
2006-12-30 12:15:16 +00:00
Jan Hubicka b730fa614c tree.h (DECL_CALL_CLOBBERED): Remove.
* tree.h (DECL_CALL_CLOBBERED): Remove.
	(tree_decl_common): Remove call_clobbered flag.
	* tree-flow.h (struct var_ann_d): Add call_clobbered flag.
	* tree-ssa-alias.c (mark_non_addressable, reset_cc_flags): Update.
	* tree-flow-inline.h (is_call_clobbered, mark_call_clobbered,
	clear_call_clobbered): Update.
	* tree-ssa.c (verify_call_clobbering): Update.

From-SVN: r120285
2006-12-30 12:03:47 +00:00
Jan Hubicka d586d6d1f6 tree-ssa-alias.c (create_structure_vars): When in SSA, update operand caches.
* tree-ssa-alias.c (create_structure_vars): When in SSA, update operand
	caches.
	* tree-ssa-operands.c (build_ssa_operands): Recompute addresses_taken
	bitmap.

From-SVN: r120284
2006-12-30 12:02:09 +00:00
Jan Hubicka 4b73962b7e emit-rt.c (emit_copy_of_insn_after): Fix bug causing exponential amount of copies of INSN_NOTEs list.
* emit-rt.c (emit_copy_of_insn_after): Fix bug causing exponential
	amount of copies of INSN_NOTEs list.

Co-Authored-By: Vladimir Yanovsky <volodyan@gmail.com>

From-SVN: r120283
2006-12-30 12:00:45 +00:00