Jakub Jelinek [Mon, 1 Dec 2008 14:34:51 +0000 (15:34 +0100)]
re PR rtl-optimization/38245 (stack corruption when a call is removed but not the outgoing argument pushes)
PR rtl-optimization/38245
* tree-vrp.c (abs_extent_range): New function.
(extract_range_from_binary_expr): Compute range
for *_DIV_EXPR even if vr1 is VR_VARYING, VR_ANTI_RANGE
or includes zero or if vr1 is VR_RANGE and op0 has some
other range.
* gcc.dg/pr38245-1.c: New test.
* gcc.dg/pr38245-2.c: New test.
Nick Clifton [Mon, 1 Dec 2008 12:08:51 +0000 (12:08 +0000)]
stormy16.md (CARRY_REG): New constant.
* config/stormy16/stormy16.md (CARRY_REG): New constant.
Replace uses of the "y" register class with direct references to
the CARRY_REG register.
* config/stormy16/stormy16.c: Replace clobbers of a BImode scratch
register with clobbers of the carry register.
(xstormy16_secondary_reload_class): Do not return CARRY_REGS.
(xstormy16_split_cbranch): Remove redundant carry parameter.
(xstormy16_expand_arith): Likewise.
* config/stormy16/stormy16.h (enum reg_class): Remove CARRY_REGS.
(IRA_COVER_CLASSES, REG_CLASS_NAMES, REG_CLASS_CONTENTS,
REGNO_REG_CLASS, REG_CLASS_FROM_LETTER): Likewise.
(CARRY_REGNUM): Define.
* config/stormy16/stormy16-protos.h (xstormy16_split_cbranch):
Update prototype.
(xstormy16_expand_arith): Likewise.
Daniel Kraft [Sun, 30 Nov 2008 20:36:10 +0000 (21:36 +0100)]
re PR fortran/37779 (Missing RECURSIVE not detected)
2008-11-30 Daniel Kraft <d@domob.eu>
PR fortran/37779
* gfortran.h (struct gfc_entry_list): Fixed typo in comment.
* resolve.c (is_illegal_recursion): New method.
(resolve_procedure_expression): Use new is_illegal_recursion instead of
direct check and handle function symbols correctly.
(resolve_actual_arglist): Removed useless recursion check.
(resolve_function): Use is_illegal_recursion instead of direct check.
(resolve_call): Ditto.
2008-11-30 Daniel Kraft <d@domob.eu>
PR fortran/37779
* gfortran.dg/recursive_check_1.f: Changed expected error message to
the more general new one.
* gfortran.dg/recursive_check_2.f90: Ditto.
* gfortran.dg/entry_18.f90: Ditto.
* gfortran.dg/recursive_check_4.f03: Do "the same" check also for
FUNCTIONS, as this is different in details from SUBROUTINES.
* gfortran.dg/recursive_check_6.f03: New test.
Eric Botcazou [Sun, 30 Nov 2008 19:19:06 +0000 (19:19 +0000)]
re PR target/38287 (segfault at -O2 -fPIC -mcpu=v8)
PR target/38287
* config/sparc/sparc.md (divsi3 expander): Remove constraints.
(divsi3_sp32): Add new alternative with 'K' for operand #2.
(cmp_sdiv_cc_set): Factor common string.
(udivsi3_sp32): Add new alternative with 'K' for operand #2.
Add TARGET_V9 case.
(cmp_udiv_cc_set): Factor common string.
Jason Merrill [Fri, 28 Nov 2008 23:35:37 +0000 (18:35 -0500)]
re PR c++/38233 ('map' value type + new uninitted const member warnings causes error)
PR c++/38233
* init.c (perform_member_init): Fix value-initialization.
(build_value_init_1): Add assert to catch cases that will break
in the gimplifier.
(build_default_init): Remove.
* cp-tree.h: Remove its prototype.
* pt.c (tsubst_expr) [DECL_EXPR]: Use build_value_init for
value-initialization.
Bernd Schmidt [Thu, 27 Nov 2008 09:11:50 +0000 (09:11 +0000)]
bfin.opt (micplb): New option.
* config/bfin/bfin.opt (micplb): New option.
* config/bfin/linux.h (SUBTARGET_DRIVER_SELF_SPECS): Set it.
* config/bfin/bfin-protos.h (WA_INDIRECT_CALLS,
ENABLE_WA_INDIRECT_CALLS): New macros.
* config/bfin/bfin.c (bfin_cpus): Add WA_INDIRECT_CALLS to
all 54x CPUs.
(indirect_call_p): New function.
(workaround_speculation): Handle anomaly 05-00-0426 when
ENABLE_WA_INDIRECT_CALLS is true.
* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
__WORKAROUND_INDIRECT_CALLS if ENABLE_WA_INDIRECT_CALLS.
* doc/invoke.texi (Blackfin Options): Document -micplb.
Adam Nemet [Wed, 26 Nov 2008 22:14:50 +0000 (22:14 +0000)]
mips.md (clear_hazard): Rename to clear_hazard_<mode>.
* config/mips/mips.md (clear_hazard): Rename to
clear_hazard_<mode>. Use mode-specific addition.
(clear_cache): Rename gen_clear_hazard to gen_clear_hazard_si
or gen_clear_hazard_di depending on the size of Pmode.
gcc/testsuite/
PR testsuite/28870
* lib/timeout.exp: New.
* lib/timeout-dg.exp: New.
* lib/gcc-dg.exp: Include new timeout library files.
(dg-test): Unset timeout variables.
* lib/gcc.exp (gcc_target_compile): Set timeout value from new proc.
* lib/g++.exp (g++_target_compile): Ditto.
* lib/gfortran.exp (gfortran_target_compile): Ditto.
* lib/objc.exp (objc_target_compile): Ditto.
* lib/obj-c++.exp (obj-c++_target_compile): Ditto.
* lib/obj-c++.exp (obj-c++_target_compile): Ditto.
* lib/gnat.exp (gnat_target_compile): Ditto.
libstdc++-v3/
PR testsuite/28870
* testsuite/lib/libstdc++.exp: Include new timeout library files.
(libstdc++_init): Define tool_timeout.
(dg-test): Override DejaGnu proc.
(v3_target_compile): Set timeout value from new proc.
(v3_target_compile_as_c): Ditto.
libmudflap/
PR testsuite/28870
* testsuite/lib/mfdg.exp (dg-test): Use new timeout support.
(dg-timeout): Remove.
(standard-wait): Remove.
* testsuite/lib/libmudflap.exp: Include new timeout library files.
(libmudflap_target_compile): Set timeout value from new proc.
libgomp/
PR testsuite/28870
* testsuite/lib/libgomp.exp: Include new timeout library files.
(libgomp_target_compile): Set timeout value from new proc.
Uros Bizjak [Wed, 26 Nov 2008 16:49:20 +0000 (17:49 +0100)]
sync.md (memory_barrier_nosse): Disable also for TARGET_64BIT.
* config/i386/sync.md (memory_barrier_nosse): Disable also for
TARGET_64BIT. Remove special asm template for TARGET_64BIT case.
(memory_barrier): Do not generate memory_barrier_nosse instruction
for TARGET_64BIT.
* config/i386/sse.md (*sse2_mfence): Also enable for TARGET_64BIT.
Fredrik Unger [Wed, 26 Nov 2008 12:32:43 +0000 (13:32 +0100)]
floatuntisf.c (__floatuntisf): Correct function name from __floatundisf.
* config/soft-fp/floatuntisf.c (__floatuntisf): Correct
function name from __floatundisf.
* config/soft-fp/fixdfti.c (__fixdfti): Correct argument type to
DFtype.
Kai Tietz [Wed, 26 Nov 2008 10:25:38 +0000 (11:25 +0100)]
calls.c (expand_call): Pass to REG_PARM_STACK_SPACE the type of the function...
2008-11-26 Kai Tietz <kai.tietz@onevision.com>
PR/38227
* calls.c (expand_call): Pass to REG_PARM_STACK_SPACE
the type of the function, when there is no FUNCTION_DECL available.
OUTGOING_REG_PARM_STACK_SPACE pass fntype, when no fndecl is available.
(compute_argument_block_size): Add fntype argument.
OUTGOING_REG_PARM_STACK_SPACE pass fntype, when no fndecl is available.
(emit_library_call_value_1): Likewise.
OUTGOING_REG_PARM_STACK_SPACE pass fntype, when no fndecl is available.
* config/i386/i386.c (ix86_reg_parm_stack_space): Handle function types.
* doc/tm.texi (REG_PARM_STACK_SPACE): Adjust documentation.
Daniel Berlin [Wed, 26 Nov 2008 09:46:23 +0000 (09:46 +0000)]
re PR tree-optimization/37869 (PTA results wrong for "non-pointer" variables)
2008-11-25 Daniel Berlin <dberlin@dberlin.org>
Richard Guenther <rguenther@suse.de>
PR tree-optimization/37869
* tree-ssa-structalias.c (struct constraint_graph): Remove
pt_used and number_incoming members.
(build_pred_graph): Do not allocate them.
(condense_visit): Do not use them.
(label_visit): Likewise.
(free_var_substitution_info): Do not free them.
Co-Authored-By: Richard Guenther <rguenther@suse.de>
From-SVN: r142213
* ira-int.h (struct ira_loop_tree_node): New member to_remove_p.
* ira-color.c (allocno_spill_priority): New function.
(remove_allocno_from_bucket_and_push, push_allocno_to_spill):
Print more info about the spilled allocno.
(push_allocnos_to_stack): Use allocno_spill_priority. Add more
checks on bad spill.
* ira-build.c (loop_node_to_be_removed_p): Remove.
(loop_compare_func, mark_loops_for_removal): New functions.
(remove_uneccesary_loop_nodes_from_loop_t): Use member
to_remove_p.
(remove_unnecessary_allocnos): Call mark_loops_for_removal.
* ira.c (ira): Don't change flag_ira_algorithm.
* params.def (ira-max-loops-num): Change the value.
Maxim Kuvyrkov [Tue, 25 Nov 2008 22:08:13 +0000 (22:08 +0000)]
m68k.md (extendsidi2, [...]): Merge, clean up.
* config/m68k/m68k.md (extendsidi2, extendsidi2_mem): Merge, clean up.
Disable unsupported alternative for ColdFire,
add new alternative that ColdFire can handle.
Eric Botcazou [Tue, 25 Nov 2008 21:25:52 +0000 (21:25 +0000)]
regrename.c (merge_overlapping_regs): Add registers artificially defined at the top of the basic block to the set of...
* regrename.c (merge_overlapping_regs): Add registers artificially
defined at the top of the basic block to the set of live ones just
before the first insn.
H.J. Lu [Tue, 25 Nov 2008 15:33:27 +0000 (15:33 +0000)]
re PR middle-end/37843 (unaligned stack in main due to tail call optimization)
gcc/
2008-11-25 H.J. Lu <hongjiu.lu@intel.com>
Joey Ye <joey.ye@intel.com>
PR middle-end/37843
* config/i386/i386.c (ix86_function_ok_for_sibcall): Return
false if we need to align the outgoing stack.
(ix86_update_stack_boundary): Check parm_stack_boundary.
Mikael Morin [Tue, 25 Nov 2008 13:27:26 +0000 (14:27 +0100)]
re PR fortran/36463 (gfc_get_default_type(): Bad symbol)
2008-11-25 Mikael Morin <mikael.morin@tele2.fr>
PR fortran/36463
* expr.c (replace_symbol): Don't replace the symtree
if the expresion is an intrinsic function. Don't create
non-existent symtrees. Use symbol's name instead of symtree's,
different in case of module procedure dummy arguments.
2008-11-25 Mikael Morin <mikael.morin@tele2.fr>
PR fortran/36463
* gfortran.dg/proc_decl_20.f90: New test.
Richard Guenther [Tue, 25 Nov 2008 10:34:11 +0000 (10:34 +0000)]
re PR middle-end/38151 (structures with _Complex arguments are not passed correctly)
2008-11-25 Richard Guenther <rguenther@suse.de>
PR middle-end/38151
PR middle-end/38236
* tree-ssa-alias.c (struct alias_info): Remove written_vars.
Remove dereferenced_ptrs_store and dereferenced_ptrs_load
in favor of dereferenced_ptrs.
(init_alias_info): Adjust.
(delete_alias_info): Likewise.
(compute_flow_insensitive_aliasing): Properly
include all aliased variables.
(update_alias_info_1): Use dereferenced_ptrs.
(setup_pointers_and_addressables): Likewise.
(get_smt_for): Honor ref-all pointers and pointers with known alias
set properly.
* config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers.
* gcc.c-torture/execute/pr38151.c: New testcase.
* gcc.c-torture/execute/pr38236.c: Likewise.
Paul Thomas [Mon, 24 Nov 2008 06:34:16 +0000 (06:34 +0000)]
re PR fortran/34820 (internal compiler error: in gfc_conv_descriptor_data_get, at fortran/trans-array.c:147)
2008-11-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34820
* trans-expr.c (gfc_conv_function_call): Remove all code to
deallocate intent out derived types with allocatable
components.
(gfc_trans_assignment_1): An assignment from a scalar to an
array of derived types with allocatable components, requires
a deep copy to each array element and deallocation of the
converted rhs expression afterwards.
* trans-array.c : Minor whitespace.
* trans-decl.c (init_intent_out_dt): Add code to deallocate
allocatable components of derived types with intent out.
(generate_local_decl): If these types are unused, set them
referenced anyway but allow the uninitialized warning.
PR fortran/34143
* trans-expr.c (gfc_trans_subcomponent_assign): If a conversion
expression has a null data pointer argument, nullify the
allocatable component.
PR fortran/32795
* trans-expr.c (gfc_trans_subcomponent_assign): Only nullify
the data pointer if the source is not a variable.
2008-11-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34820
* gfortran.dg/alloc_comp_constructor_6.f90 : New test.
* gfortran.dg/alloc_comp_basics_1.f90 : Reduce expected refs to
'builtin_free' from 24 to 18.
PR fortran/34143
* gfortran.dg/alloc_comp_constructor_5.f90 : New test.
PR fortran/32795
* gfortran.dg/alloc_comp_constructor_4.f90 : New test.