re PR middle-end/43365 (Destructor not called when returning in exception handler)
PR middle-end/43365
* tree-eh.c (replace_goto_queue): Also replace in the eh_seq.
(lower_try_finally): Save and restore eh_seq around the expansion
of the try-finally.
* doc/sourcebuild.texi (Testsuites): Fix markup.
Use pathnames relative to gcc/testsuite.
(Test Directives): Move description of how timeout is determined.
(Ada Tests): Favor gnat.exp over ada/acats/tests/gcc.
(C Tests): Correct gcc.misc-tests directory.
Framework tests now live in gcc.test-framework.
Jakub Jelinek [Tue, 16 Mar 2010 10:50:42 +0000 (11:50 +0100)]
re PR debug/43051 (VTA causes a stack living parameter unavailable in most of the function)
PR debug/43051
PR debug/43092
* cselib.c (cselib_preserve_constants,
cfa_base_preserved_val): New static variables.
(preserve_only_constants): New function.
(cselib_reset_table): If cfa_base_preserved_val is non-NULL, don't
clear its REG_VALUES. If cselib_preserve_constants, don't
empty the whole hash table, but preserve there VALUEs with constants,
cfa_base_preserved_val and cfa_base_preserved_val plus constant.
(cselib_preserve_cfa_base_value): New function.
(cselib_invalidate_regno): Don't invalidate cfa_base_preserved_val.
(cselib_init): Change argument to int bitfield. Set
cselib_preserve_constants to whether CSELIB_PRESERVE_CONSTANTS
is in it.
(cselib_finish): Clear cselib_preserve_constants and
cfa_base_preserved_val.
* cselib.h (enum cselib_record_what): New enum.
(cselib_init): Change argument to int.
(cselib_preserve_cfa_base_value): New prototype.
* postreload.c (reload_cse_regs_1): Adjust cselib_init caller.
* dse.c (dse_step1): Likewise.
* cfgcleanup.c (thread_jump): Likewise.
* sched-deps.c (sched_analyze): Likewise.
* gcse.c (local_cprop_pass): Likewise.
* simplify-rtx.c (simplify_replace_fn_rtx): Add argument to callback.
If FN is non-NULL, call the callback always and whenever it returns
non-NULL just return that. Only do rtx_equal_p if FN is NULL.
* rtl.h (simplify_replace_fn_rtx): Add argument to callback.
* combine.c (propagate_for_debug_subst): Add old_rtx argument,
compare from with old_rtx and if it isn't rtx_equal_p, return NULL.
* Makefile.in (var-tracking.o): Depend on $(RECOG_H).
* var-tracking.c: Include recog.h.
(bb_stack_adjust_offset): Remove.
(vt_stack_adjustments): Don't call it, instead just gather the
adjustments using insn_stack_adjust_offset_pre_post on each bb insn.
(adjust_stack_reference): Remove.
(compute_cfa_pointer): New function.
(hard_frame_pointer_adjustment, cfa_base_rtx): New static variables.
(struct adjust_mem_data): New type.
(adjust_mems, adjust_mem_uses, adjust_mem_stores, adjust_insn): New
functions.
(get_address_mode): New function.
(replace_expr_with_values): Use it.
(use_type): Don't do cselib_lookup for VAR_LOC_UNKNOWN_P.
Use get_address_mode. For cfa_base_rtx return MO_CLOBBER.
(adjust_sets): Remove.
(add_uses): Don't add extra MO_VAL_USE for cfa_base_rtx plus constant.
Use get_address_mode.
(get_adjusted_src): Remove.
(add_stores): Don't call it. Never reuse expr SET. Don't add extra
MO_VAL_USE for cfa_base_rtx plus constant. Use get_address_mode.
(add_with_sets): Don't call adjust_sets.
(fp_setter, vt_init_cfa_base): New functions.
(vt_initialize): Change return type to bool. Move most of pool etc.
initialization to the beginning of the function from end. Pass
CSELIB_RECORD_MEMORY | CSELIB_PRESERVE_CONSTANTS to cselib_init.
If !frame_pointer_needed, call vt_stack_adjustment before mos
vector is filled, call vt_init_cfa_base if argp/framep has been
eliminated to sp. If frame_pointer_needed and argp/framep has
been eliminated to hard frame pointer, set
hard_frame_pointer_adjustment and call vt_init_cfa_base after
encountering fp setter in the prologue. For MO_ADJUST, call
log_op_type before pusing the op into mos vector, not afterwards.
Call adjust_insn before cselib_process_insn/add_with_sets,
call cancel_changes (0) afterwards.
(variable_tracking_main_1): Adjust for vt_initialize calling
vt_stack_adjustments and returning whether it succeeded or not.
Jakub Jelinek [Mon, 15 Mar 2010 17:03:02 +0000 (18:03 +0100)]
dwarf2out.c (dwarf2out_frame_debug): Don't assert drap_reg has been set.
* dwarf2out.c (dwarf2out_frame_debug): Don't assert drap_reg
has been set.
(based_loc_descr): Use DW_OP_fbreg for vdrap_reg even when
drap_reg has not been set.
Michael Matz [Mon, 15 Mar 2010 16:13:28 +0000 (16:13 +0000)]
re PR middle-end/43300 (ICE: in emit_move_insn, at expr.c:3432)
PR middle-end/43300
* tree-outof-ssa.c (emit_partition_copy): New argument sizeexp,
use it to expand block copies.
(insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
insert_part_to_rtx_on_edge): Adjust callers of emit_partition_copy.
(insert_value_copy_on_edge): Use store_expr for BLKmode values.
PR middle-end/43354
* graphite-sese-to-poly.c (rewrite_close_phi_out_of_ssa): Do not
call insert_out_of_ssa_copy for default definitions.
* gfortran.dg/graphite/id-pr43354.f: New.
Sebastian Pop [Sat, 13 Mar 2010 17:35:29 +0000 (17:35 +0000)]
Use ssizetype when long_long_integer_type_node is NULL.
2010-03-11 Sebastian Pop <sebastian.pop@amd.com>
* graphite-clast-to-gimple.c (my_long_long): Defined.
(gcc_type_for_cloog_iv): Use it instead of long_long_integer_type_node.
* graphite-sese-to-poly.c (my_long_long): Defined.
(scop_ivs_can_be_represented): Use it.
PR middle-end/43306
* tree-chrec.c (evolution_function_right_is_integer_cst): CHREC_RIGHT
should be an INTEGER_CST. Also handle CASE_CONVERT.
* gcc.dg/graphite/pr43306.c: New.
Sebastian Pop [Sat, 13 Mar 2010 17:34:51 +0000 (17:34 +0000)]
Add PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION.
2010-03-09 Sebastian Pop <sebastian.pop@amd.com>
* graphite.c (graphite_initialize): To bound the number of bbs per
function, use PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION.
* params.def (PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION): Declared.
* doc/invoke.texi: Document it.
Sebastian Pop [Sat, 13 Mar 2010 17:34:38 +0000 (17:34 +0000)]
Limit the number of parameters per SCoP.
2010-03-09 Sebastian Pop <sebastian.pop@amd.com>
* graphite-sese-to-poly.c (build_poly_scop): Limit scops following
the number of parameters in the scop. Use as an upper bound
PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS.
* params.def (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Declared.
* doc/invoke.texi: Document it.
Paul Thomas [Fri, 12 Mar 2010 22:00:52 +0000 (22:00 +0000)]
re PR fortran/43291 ([OOP] Type mismatch in argument; passed CLASS(t1) to CLASS(t2))
2010-03-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/43291
PR fortran/43326
* resolve.c (resolve_compcall): Add new boolean dummy argument
'class_members'. Only resolve expression at end if false.
Remove redundant, static variable 'class_object'.
(check_class_members): Add extra argument to call of
resolve_compcall.
(resolve_typebound_function): Renamed resolve_class_compcall.
Do all the detection of class references here. Correct calls to
resolve_compcall for extra argument.
(resolve_typebound_subroutine): resolve_class_typebound_call
renamed. Otherwise same as resolve_typebound_function.
(gfc_resolve_expr): Call resolve_typebound_function.
(resolve_code): Call resolve_typebound_subroutine.
2010-03-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/43291
PR fortran/43326
* gfortran.dg/dynamic_dispatch_7.f03: New test.
Jakub Jelinek [Fri, 12 Mar 2010 13:27:43 +0000 (14:27 +0100)]
cselib.c (LONG_TERM_PRESERVED_VALUE_P): Remove.
* cselib.c (LONG_TERM_PRESERVED_VALUE_P): Remove.
(cselib_preserve_definitely, cselib_clear_preserve): Remove.
(cselib_preserve_only_values): Remove retain argument, don't
traverse hash table with cselib_{preserve_definitely,clear_preserve}.
* cselib.h (cselib_preserve_only_values): Remove retain argument.
* var-tracking.c (micro_operation): Move insn field before union.
Add DEF_VEC_O and DEF_VEC_ALLOC_O for this type.
(struct variable_tracking_info_def): Remove n_mos field, change
mos into a vector of micro_operations.
(count_uses, count_uses_1, count_stores, count_with_sets): Remove.
(bb_stack_adjust_offset, log_op_type, add_uses, add_stores,
compute_bb_dataflow, emit_notes_in_bb): Adjust for VTI (bb)->mos
changing into a vector.
(add_with_sets): Likewise. Ensure MO_VAL_USE uops from add_stores
come before all other uops generated by add_stores.
(vt_add_function_parameters): Adjust for cselib_preserve_only_values
argument removal.
(vt_initialize): Likewise. Adjust for VTI (bb)->mos changing into
a vector. Run just one pass over the bbs instead of separate counting
and computation phase.
(vt_finalize): Free VTI (bb)->mos vector instead of array.
Jakub Jelinek [Fri, 12 Mar 2010 13:04:37 +0000 (14:04 +0100)]
re PR debug/43329 (Early inlining causes suboptimal debug info)
PR debug/43329
* tree-inline.c (remap_decls): Put old_var rather than origin_var
into *nonlocalized_list vector.
* dwarf2out.c (gen_formal_parameter_die): Call decl_ultimate_origin
even if origin is non-NULL.
(gen_variable_die): Likewise.
(process_scope_var): Don't change origin.
(gen_decl_die): Likewise.
* tree-cfgcleanup.c (remove_forwarder_block): Check single_pred_p
before adding new edges instead of after it, fix moving over
debug stmts.
Martin Jambor [Thu, 11 Mar 2010 22:27:26 +0000 (23:27 +0100)]
re PR tree-optimization/43257 (IPA-SRA changes DECL_ASSEMBLER_NAME)
2010-03-11 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/43257
* tree.c (assign_assembler_name_if_neeeded): New function.
(free_lang_data_in_cgraph): Assembler name assignment moved to the
above new function.
* tree.h (assign_assembler_name_if_neeeded): Declare.
* cgraphunit.c (cgraph_analyze_function): Create an assembler name for
the function if needed.
Andreas Krebbel [Thu, 11 Mar 2010 13:51:00 +0000 (13:51 +0000)]
re PR tree-optimization/43280 (gcc4.5 -m32 -O2: misoptimizes sha256!)
2010-03-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
PR tree-optimization/43280
* tree-ssa-math-opts.c (find_bswap_1): Modify symbolic number generation.
Move calculation of size out of the if branch.
(find_bswap): Modify compare number generation.
2010-03-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* gcc.dg/optimize-bswapdi-1.c: Add OpenSSL bswap variant.
* gcc.dg/pr43280.c: New testcase.
Richard Guenther [Thu, 11 Mar 2010 13:13:53 +0000 (13:13 +0000)]
re PR lto/43200 ([LTO] tree check: expected array_type, have pointer_type in array_ref_low_bound)
2010-03-11 Richard Guenther <rguenther@suse.de>
PR lto/43200
* lto-streamer-in.c (maybe_fixup_decls): Simplify.
(input_gimple_stmt): Fixup handled component types during
operand read. Also fix up decls in ADDR_EXPRs.
* gcc.dg/lto/20100227-1_0.c: New testcase.
* gcc.dg/lto/20100227-1_1.c: Likewise.
Eric Botcazou [Wed, 10 Mar 2010 23:25:37 +0000 (23:25 +0000)]
sol2-bi.h (CC1_SPEC): Default to -mcpu=v9 for -m32.
* config/sparc/sol2-bi.h (CC1_SPEC): Default to -mcpu=v9 for -m32.
* config/sparc/t-sol2-64 (MULTILIB_DIRNAMES): Use sparcv8plus.
ada/
* gcc-interface/Makefile.in (SPARC/Solaris): Use sparcv8plus.
Jan Hubicka [Wed, 10 Mar 2010 19:33:37 +0000 (19:33 +0000)]
re PR c/43288 (ICE in function_and_variable_visibility, at ipa.c:415)
PR c/43288
* ipa.c (function_and_variable_visibility) Normalize COMMON bits.
* varasm.c (get_variable_section): Don't do that here...
(make_decl_rtl): ... and here.
(do_assemble_alias): Produce decl RTL.
(assemble_alias): Likewise.
Jakub Jelinek [Wed, 10 Mar 2010 18:17:10 +0000 (19:17 +0100)]
re PR debug/43290 (ICE in dwarf2out_frame_debug_expr)
PR debug/43290
* reg-notes.def (REG_CFA_SET_VDRAP): New note.
* dwarf2out.c (dwarf2out_frame_debug_expr): Remove rule 20 - setting
of fde->vdrap_reg.
(dwarf2out_frame_debug): Handle REG_CFA_SET_VDRAP note.
(based_loc_descr): Only express drap or vdrap regno based expressions
using DW_OP_fbreg when not optimizing.
* config/i386/i386.c (ix86_get_drap_rtx): When not optimizing,
make the vDRAP = DRAP assignment RTX_FRAME_RELATED_P and add
REG_CFA_SET_VDRAP note.
PR debug/36728
* gcc.dg/guality/pr36728-1.c: New test.
* gcc.dg/guality/pr36728-2.c: New test.
re PR tree-optimization/43236 (-ftree-loop-distribution produces wrong code in reload1.c:delete_output_reload(), bootstrap fails)
PR tree-optimization/43236
* tree-loop-distribution.c (generate_memset_zero): Fix off-by-one
error in calculation of base address in reverse iteration case.
(generate_builtin): Take number of latch executions if the statement
is in the latch.
* tree-eh.c: Include pointer-set.h.
(lower_eh_dispatch): Filter out duplicate case labels and
remove the unneeded edge when the label is unused. Return
true when some edges are removed.
(execute_lower_eh_dispatch): When any lowering resulted in
removing an edge, also delete unreachable blocks.
Jakub Jelinek [Tue, 9 Mar 2010 20:11:53 +0000 (21:11 +0100)]
re PR debug/43293 (Invalid unwind info for i?86 -fpic)
PR debug/43293
* config/i386/t-i386 (i386.o): Depend on debug.h and dwarf2out.h.
* config/i386/i386.c: Include debug.h and dwarf2out.h.
(ix86_file_end): If dwarf2out_do_cfi_asm (), emit .cfi_startproc
and .cfi_endproc around the pic thunks.
(output_set_got): For TARGET_DEEP_BRANCH_PREDICTION pic, ensure
all queued unwind info register saves are saved before the call.
For !TARGET_DEEP_BRANCH_PREDICTION pic, ensure the call is
considered as sp-=4 for unwind info and the pop as sp+=4 which
also clobbers dest, but doesn't actually restore it.
Jakub Jelinek [Tue, 9 Mar 2010 18:53:38 +0000 (19:53 +0100)]
re PR bootstrap/43299 (Subversion id 157264 breaks powerpc 64-bit bootstraps)
PR debug/43299
* var-tracking.c (adjust_sets): New function.
(count_with_sets, add_with_sets): Use it.
(get_adjusted_src): New inline function.
(add_stores): Use it.
Jakub Jelinek [Tue, 9 Mar 2010 18:50:40 +0000 (19:50 +0100)]
re PR debug/43293 (Invalid unwind info for i?86 -fpic)
PR debug/43293
* config/i386/t-i386 (i386.o): Depend on debug.h and dwarf2out.h.
* config/i386/i386.c: Include debug.h and dwarf2out.h.
(ix86_file_end): If dwarf2out_do_cfi_asm (), emit .cfi_startproc
and .cfi_endproc around the pic thunks.
(output_set_got): For TARGET_DEEP_BRANCH_PREDICTION pic, ensure
all queued unwind info register saves are saved before the call.
For !TARGET_DEEP_BRANCH_PREDICTION pic, ensure the call is
considered as sp-=4 for unwind info and the pop as sp+=4 which
also clobbers dest, but doesn't actually restore it.
Jerry DeLisle [Tue, 9 Mar 2010 14:41:17 +0000 (14:41 +0000)]
re PR fortran/43265 (No EOF condition if reading with '(x)' from an empty file)
2010-03-09 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/43265
* io/read.c: Include fbuf.h and unix.h to enable lower level I/O for
read_x. (read_x): Replace the use of read_sf with equivalent lower level
I/O, eliminating unneeded code and handling EOF and EOR conditions.
* io/io.h: Revise prototype for read_sf.
* io/transfer.c (read_sf): Delete no_error parameter and all uses of it.
(read_block_form): Likewise.
(next_record_r): Delete wrong code call to hit_eof.