Jakub Jelinek [Wed, 3 Dec 2008 12:27:48 +0000 (13:27 +0100)]
re PR tree-optimization/37716 (ice for legal C++ code with -O2 on 20080926)
PR tree-optimization/37716
* tree-sra.c (sra_build_assignment): For scalar bitfield SRC construct
all the needed operations as trees and gimplify_assign it to dst.
mips.c (mips_expand_builtin): Fix the mode of the error return value.
gcc/
* config/mips/mips.c (mips_expand_builtin): Fix the mode of the
error return value.
* config/mips/mips.md (IMOVE32): New mode iterator.
(movsi): Generalize with IMOVE32.
(*movsi_internal): Likewise.
(*mov<mode>_mips16): Likewise, and its define_splits.
(*lwxs): Likewise.
Nathan Sidwell [Tue, 2 Dec 2008 21:50:02 +0000 (21:50 +0000)]
lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of PC-relative addressing when compiling for uclinux PIC.
* config/m68k/lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of
PC-relative addressing when compiling for uclinux PIC.
(__cmpdf_internal, __cmpsf_internal): Hide.
(__cmpdf, __cmpsf): Use PIC call sequence.
Martin Jambor [Tue, 2 Dec 2008 14:30:55 +0000 (15:30 +0100)]
re PR middle-end/37861 (Bogus array bounds warning)
2008-12-02 Martin Jambor <mjambor@suse.cz>
PR middle-end/37861
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not check
for INDIRECT_REFs.
(forward_propagate_addr_into_variable_array_index): Check that the
offset is not computed from a MULT_EXPR, use is_gimple_assign rather
than the gimple code directly.
Janus Weil [Tue, 2 Dec 2008 11:58:16 +0000 (12:58 +0100)]
re PR fortran/36704 (Procedure pointer as function result)
2008-12-02 Janus Weil <janus@gcc.gnu.org>
PR fortran/36704
PR fortran/38290
* decl.c (match_result): Result may be a standard variable or a
procedure pointer.
* expr.c (gfc_check_pointer_assign): Additional checks for procedure
pointer assignments.
* primary.c (gfc_match_rvalue): Bugfix for procedure pointer
assignments.
* resolve.c (resolve_function): Check for attr.subroutine.
* symbol.c (check_conflict): Addtional checks for RESULT statements.
* trans-types.c (gfc_sym_type,gfc_get_function_type): Support procedure
pointers as function result.
Jakub Jelinek [Tue, 2 Dec 2008 10:13:05 +0000 (11:13 +0100)]
re PR middle-end/38343 (ice for legal code with -O2)
PR middle-end/38343
* builtins.c (expand_builtin_mempcpy_args): Handle COMPOUND_EXPRs
potentially returned from folding memcpy.
(expand_builtin_stpcpy_args): Similarly for folding strcpy.
(fold_builtin_2): Handle BUILT_IN_STPCPY if result is ignored.
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.