Ulrich Weigand [Sat, 6 Mar 2004 19:18:40 +0000 (19:18 +0000)]
s390.c (s390_expand_movstr): Clobber double-word register before initializing high and low parts separately.
* config/s390/s390.c (s390_expand_movstr): Clobber double-word
register before initializing high and low parts separately.
(s390_expand_clrstr): Likewise.
(s390_expand_cmpstr): Likewise.
Ulrich Weigand [Fri, 5 Mar 2004 20:16:49 +0000 (20:16 +0000)]
re PR rtl-optimization/12147 (Wrong code with -O2 in context of reload)
PR optimization/12147
* reload1.c (reload_reg_free_p): RELOAD_OTHER conflicts with
RELOAD_FOR_OPADDR_ADDR.
(reload_reg_reaches_end_p): A RELOAD_FOR_OTHER_ADDRESS register
might be reused as RELOAD_FOR_OPADDR_ADDR register.
re PR target/1532 (-O3 generates (obviously) redundant tests and jumps)
PR target/1532
Backport from mainline:
2004-02-24 Kazu Hirata <kazu@cs.umass.edu>
* cse.c (cse_change_cc_mode_insns): Stop at any instruction
which modifies NEWREG.
(cse_condition_code_reg): Update the mode of CC_REG in
CC_SRC_INSN on our own.
2004-02-11 Richard Henderson <rth@redhat.com>
* flow.c (insn_dead_p): A clobber of a dead hard register is a
dead insn after reload.
2004-01-24 Ian Lance Taylor <ian@wasabisystems.com>
* cse.c (cse_cc_succs): Change the mode of the source expression
as soon as decide we need a new mode. Don't permit changing modes
if we found a match in a successor block.
(cse_condition_code_reg): Save original mode of source expression
so that we know whether we have to change the mode in other
insns.
2004-01-24 Andreas Tobler <a.tobler@schweiz.ch>
* cse.c: (cse_cc_succs) Fix comparison warning.
2004-01-23 Ian Lance Taylor <ian@wasabisystems.com>
* cse.c: Include "target.h".
(cse_change_cc_mode): New static function.
(cse_change_cc_mode_insns, cse_cc_succs): Likewise.
(cse_condition_code_reg): New function.
(default_cc_modes_compatible): New function.
* rtl.h (cse_condition_code_reg): Declare.
(default_cc_modes_compatible): Declare.
* toplev.c (rest_of_compilation): Call cse_condition_code_reg.
* target.h (struct gcc_target): Add fixed_condition_code_regs and
cc_modes_compatible.
* target-def.h (TARGET_FIXED_CONDITION_CODE_REGS): Define.
(TARGET_CC_MODES_COMPATIBLE): Define.
(TARGET_INITIALIZER): Add new initializers.
* targhooks.c (default_cc_modes_compatible): Declare.
* hooks.c (hook_bool_intp_intp_false): New function.
* hooks.h (hook_bool_intp_intp_false): Declare.
* config/i386/i386.c (TARGET_FIXED_CONDITION_CODE_REGS): Define.
(TARGET_CC_MODES_COMPATIBLE): Define.
(ix86_fixed_condition_code_regs): New static function.
(ix86_cc_modes_compatible): Likewise.
* doc/gccint.texi: Add copyright 2004.
* doc/tm.texi (Condition Code): Document new hooks.
* Makefile.in (cse.o): Depend upon $(TARGET_H).
re PR middle-end/11767 (different code behaviour with -fnon-call-exceptions -fprofile-arcs)
PR middle-end/11767
* optabs.c (prepare_cmp_insn): Force trapping memories to registers
before the compare, if flag_non_call_exceptions.
* g++.dg/other/profile1.C: New.
backport: re PR debug/14328 (gcc3.2.2 generates incorrect debugging enum values)
Backport from 3.4.0:
2004-02-29 Mark Mitchell <mark@codesourcery.com>
PR debug/14328
* dwarf2out.c (gen_enumeration_type_die): Output all
enumeration
constants as signed values.
re PR bootstrap/14348 ([3.3 only] Cannot bootstrap GCC-3.3.x with GCC-3.5 (experimental))
include/
PR bootstrap/14348
Backport
2003-10-22 Joseph S. Myers <jsm@polyomino.org.uk>
* obstack.h: Merge the following change from gnulib:
2003-10-21 Paul Eggert <eggert@twinsun.com>
* obstack.h (obstack_1grow_fast): Properly parenthesize arg.
(obstack_ptr_grow_fast, obstack_int_grow_fast):
Don't use lvalue casts, as GCC plans to remove support for
them
in GCC 3.5. Reported by Joseph S. Myers. This bug
was also present in the non-GCC version, indicating that this
code had always been buggy and had never been widely used.
(obstack_1grow, obstack_ptr_grow, obstack_int_grow,
obstack_blank):
Use the fast variant of each macro, rather than copying the
definiens of the fast variant; that way, we'll be more likely
to
catch future bugs in the fast variants.
libobjc/
PR bootstrap/14348
Backport
2003-10-20 Joseph S. Myers <jsm@polyomino.org.uk>
* objc/hash.h (hash_string): Don't use a cast as an lvalue.
re PR target/14346 ([3.3 only] With -fpic/-fPIC, thunks jump through PLT, not directly to thunked function)
PR target/14346
* config/cris/cris.c (cris_asm_output_mi_thunk): For PIC, prepend
TAB to jumping "add.d" insn. Avoid PLT indirection by equating a
local symbol and jumping through it.
Ian Lance Taylor [Sat, 28 Feb 2004 13:36:28 +0000 (13:36 +0000)]
re PR rtl-optimization/7871 (ICE on legal code, global register variables problems)
PR optimization/7871
* flow.c (mark_set_1): Don't add LOG_LINKS for global registers
from or to call insns.
(propagate_one_insn): Interpret calls as setting global registers,
not merely clobbering them.
Bob Wilson [Tue, 24 Feb 2004 19:44:12 +0000 (19:44 +0000)]
backport: xtensa_reorg instead; remove irrelevant portions of the patch)
Backport from mainline (changes to xtensa_expand_prologue go into
xtensa_reorg instead; remove irrelevant portions of the patch)
2004-02-09 Bob Wilson <bob.wilson@acm.org>:
* config/xtensa/xtensa-protos.h (xtensa_copy_incoming_a7): Update.
(init_cumulative_args): Likewise.
(a7_overlap_mentioned_p): Delete prototype.
* config/xtensa/xtensa.c (struct machine_function): Replace
incoming_a7_copied field with need_a7_copy and vararg_a7 flags.
Add set_frame_ptr_insn field.
(xtensa_emit_move_sequence): Update call to xtensa_copy_incoming_a7.
(xtensa_copy_incoming_a7): Rewrite to check need_a7_copy flag and check
if the operand is an argument in a7. If so, copy a7 to a new pseudo
at the function entry and replace the operand with the pseudo.
(init_cumulative_args): Remove unused arguments. Add new "incoming"
argument and record this flag in CUMULATIVE_ARGS.
(function_arg): Remove result_mode and special-case code to handle
arguments in a7. Instead, set need_a7_copy flag when there is an
incoming argument in a7.
(xtensa_expand_prologue): Remove code to search for set_frame_ptr insn
and use the value recorded in cfun->machine->set_frame_ptr_insn.
(xtensa_builtin_saveregs): Check for negative gp_left value. Set
need_a7_copy and vararg_a7 flags. Use move_block_from_reg instead of
special-case code.
(a7_overlap_mentioned_p): Delete.
* config/xtensa/xtensa.h (CUMULATIVE_ARGS): Add "incoming" flag.
(INIT_CUMULATIVE_ARGS, INIT_CUMULATIVE_INCOMING_ARGS): Remove useless
arguments to init_cumulative_args and pass "incoming" flag instead.
(BLOCK_REG_PADDING): Delete.
* config/xtensa/xtensa.md (movdi, movsf, movdf): Remove unnecessary
checks for reload_in_progress and reload_completed. Update calls to
xtensa_copy_incoming_a7.
(ashlsi3): Rename existing insn to ashlsi3_internal. Add expander
to call xtensa_copy_incoming_a7.
Gabriel Dos Reis [Sun, 22 Feb 2004 17:02:12 +0000 (17:02 +0000)]
backport: re PR c++/14083 (ICE in conditional expression operator with throw)
Backport from mainline
2004-02-13 Mark Mitchell <mark@codesourcery.com>
PR c++/14083
* call.c (build_conditional_expr): Call force_rvalue on the
non-void operand in the case that one result is a throw-expression
and the other is not.
Gabriel Dos Reis [Sun, 22 Feb 2004 16:42:33 +0000 (16:42 +0000)]
backport: re PR c++/14033 (tree check: expected class 't', have 'x' (error_mark) in initialize_inlined_parameters, at tree-inline.c:829)
Backport from mainline
2003-02-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
PR c++/14033
* decl.c (require_complete_types_for_parms): Do not insert
error_mark_node in the parameter list.
Gabriel Dos Reis [Sun, 22 Feb 2004 16:27:38 +0000 (16:27 +0000)]
backport: re PR c++/13932 (duplicate warning message for conversion)
Backport from mainline
2004-02-04 Mark Mitchell <mark@codesourcery.com>
PR c++/13932
* call.c (convert_like_real): Use "converting" rather than
"argument" as the descriptive keyword to
dubious_conversion_warnings.
* typeck.c (convert_for_assignment): Do not call
dubious_conversion_warnings.
re PR target/14209 (Bug in cris.md, shrinking access size of postincrement.)
PR target/14209
* config/cris/cris.md ("*andsi_movu", "*andhi_movu"): Tweak
constraints to not match postincrement. Adjust the predicate to
exclude a volatile memory reference.
("*andsi_clear"): Tweak constraints to not match postincrement.
Adjust the predicate to exclude a volatile memory reference.
("*andhi_clear"): Ditto. Rename from "*andhi_clear_signed".
("*andhi_clear_unsigned"): Remove, non-matching pattern.
Benjamin Kosnik [Thu, 5 Feb 2004 20:24:48 +0000 (20:24 +0000)]
basic_file_stdio.cc (__gnu_internal::fopen_mode): New function.
2004-02-04 Benjamin Kosnik <bkoz@redhat.com>
Zack Weinberg <zack@codesourcery.com>
* config/io/basic_file_stdio.cc (__gnu_internal::fopen_mode):
New function.
(__basic_file<char>::sys_open, __basic_file<char>::open): Use it.
(__basic_file<char>::_M_open_mode): Use it. Mark deprecated.
* testsuite/27_io/filebuf_members.cc (test_06, test_07):
Correct flags to filebuf::open calls.
Zack Weinberg [Tue, 3 Feb 2004 08:20:16 +0000 (08:20 +0000)]
* g++.dg/eh/forced1.C, g++.dg/eh/forced2.C, g++.dg/eh/forced3.C
* g++.dg/eh/forced4.C: XFAIL ia64-hp-hpux11.*.
* g++.dg/eh/ia64-1.C: Test branch regs only #ifdef __LP64__.
* gcc.dg/cleanup-5.c: Run only on Linux targets.