Daniel Franke [Mon, 4 Feb 2008 20:37:12 +0000 (15:37 -0500)]
backport: re PR fortran/34661 (ice on where / ASSIGNMENT(=))
gcc/fortran:
2008-02-04 Daniel Franke <franke.daniel@gmail.com>
Backport from trunk:
2008-01-25 Daniel Franke <franke.daniel@gmail.com>
PR fortran/34661
* resolve.c (resolve_where): Added check if user-defined
assignment operator is an elemental subroutine.
gcc/testsuite:
2008-02-04 Daniel Franke <franke.daniel@gmail.com>
PR fortran/34661
* gfortran.dg/where_operator_assign_4.f90: New test.
Andreas Krebbel [Mon, 4 Feb 2008 09:20:45 +0000 (09:20 +0000)]
fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange the overflow check to make it easier to read.
2008-02-04 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
the overflow check to make it easier to read.
(__fixtfdi): Change the type of the ll member in union
long_double to UDItype_x.
re PR target/34981 (Lazily-bound function called twice)
gcc/
PR target/34981
* config/mips/mips-protos.h (mips_expand_call): Return an rtx.
(build_mips16_call_stub): Likewise.
* config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
to GOT_VERSION_REGNUM.
(CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
(EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_ABICALLS.
* config/mips/mips.c (mips_emit_call_insn): New function.
(mips_call_tls_get_addr): Call mips_expand_call directly.
(mips_expand_call): Update the call to build_mips16_call_stub
and remove a redundant condition. Assert that MIPS16 stubs do not
use lazy binding. Use mips_emit_call_insn and return the call insn.
(override_options): Allow SImode for GOT_VERSION_REGNUM.
(build_mips16_call_stub): Use mips_emit_call_insn rather than
emit_call_insn. Return the call insn or null.
(mips_avoid_hazard): Remove hazard_set handling.
(mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
TARGET_ABICALLS.
* config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
(UNSPEC_RESTORE_GP): ...this.
(UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
(FAKE_CALL_REGNO): Rename to...
(GOT_VERSION_REGNUM): ...this.
(type): Add "ghost" value. Add an associated insn reservation.
(hazard_set): Remove.
(exception_receiver): Rename to...
(restore_gp): ...this and update the unspec identifier accordingly.
(exception_receiver, nonlocal_got_receiver): New expanders.
(load_call<mode>): Use GOT_VERSION_REGNUM. Don't set
FAKE_CALL_REGNO. Remove hazard_set attribute.
(set_got_version, update_got_version): New patterns.
gcc/testsuite/
PR target/34981
* gcc.target/mips/lazy-binding-1.c: New test.
* gcc.target/mips/mips.exp (setup_mips_tests): Set mips_abi,
mips_forced_gp, mips_forced_no_abicalls, mips_forced_no_shared
and mips_forced_no_er.
(dg-mips-options): Avoid using -mips16 -mhard-float for ABIs
other than o32 and o64. Avoid using -mabicalls with an implicit
-mabi=eabi. Avoid using small data with -mabicalls. Skip
-mabi=*, -G*, -mabicalls, -mshared and -mexplicit-relocs tests
if the multilib forces the an incompatible option.
re PR target/31388 (ICE building libiberty multilib for mips16 multilibs)
gcc/
PR target/31388
* config/mips/mips.md (load_const_gp_<mode>): New insns.
* config/mips/mips.c (gen_load_const_gp): New function.
(mips_split_symbol): Avoid using or creating the MIPS16 GP
pseudo register if no_new_pseudos.
(mips16_gp_pseudo_reg): Use gen_load_const_gp.
* doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
options. Minor fixes.
(-std): Move reference to standards closer to where language
standards are first mentioned.
PR 32102
* flags.h (warn_strict_aliasing): Remove.
(warn_strict_overflow): Remove.
* opts.c (warn_strict_aliasing): Remove.
(warn_strict_overflow): Remove.
* c-opts.c (c_common_handle_option): -Wall only sets
-Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
(c_common_post_options): Give default values to -Wstrict-aliasing
and -Wstrict-overflow if they are uninitialized.
* common.opt (Wstrict-aliasing): Specify Var and Init.
(Wstrict-overflow): Likewise.
PR middle-end/33826
* ipa-pure-const (static_execute): Added code to keep recursive
functions from being marked as pure or const.
* ipa-utils (searchc): Fixed comment.
PR middle-end/33826
* gcc.dg/pr33826.c: New.
* gcc.dg/tree-ssa/20030714-1.c: Removed two tests that depend on
recursive functions being marked pure or const.
Eric Botcazou [Tue, 22 Jan 2008 22:29:04 +0000 (22:29 +0000)]
re PR rtl-optimization/34628 (problems with inlining on ARM)
PR rtl-optimization/34628
* combine.c (try_combine): Stop and undo after the first combination
if an autoincrement side-effect on the first insn has effectively
been lost.
Richard Guenther [Tue, 22 Jan 2008 14:45:56 +0000 (14:45 +0000)]
Backport PRs 28796, 34070, 34739, 34768
2008-01-22 Richard Guenther <rguenther@suse.de>
PR middle-end/34739
Backport from mainline
2008-01-16 Richard Guenther <rguenther@suse.de>
PR c/34768
* c-typeck.c (common_pointer_type): Do not merge inconsistent
type qualifiers for function types.
2007-11-12 Richard Guenther <rguenther@suse.de>
PR middle-end/34070
* fold-const.c (fold_binary): If testing for non-negative
operands with tree_expr_nonnegative_warnv_p make sure to
use op0 which has all (sign) conversions retained.
2006-10-24 Richard Guenther <rguenther@suse.de>
PR middle-end/28796
* builtins.c (fold_builtin_classify): Use HONOR_INFINITIES
and HONOR_NANS instead of MODE_HAS_INFINITIES and MODE_HAS_NANS
for deciding optimizations in consistency with fold-const.c
(fold_builtin_unordered_cmp): Likewise.