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.
Roger Sayle [Thu, 29 Jan 2004 18:58:13 +0000 (18:58 +0000)]
re PR java/13824 (gcj SEGV with simple .java program)
PR java/13824
* tree.c (unsafe_for_reeval): Handle EXIT_BLOCK_EXPR nodes specially
as their EXIT_BLOCK_LABELED_BLOCK operands can lead to unbounded
recursion.
PR optimization/12440
* loop.c: Include ggc.h.
(loop_optimize): Run garbage collector between optimization of
loops.
* Makefile.in (loop.o): Add GGC_H dependency.
Paolo Carlini [Tue, 27 Jan 2004 09:29:36 +0000 (09:29 +0000)]
locale_facets.tcc (money_put::do_put(..., long double)): Use the basic_string constructor for char arrays...
2004-01-27 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc
(money_put::do_put(..., long double)): Use the basic_string
constructor for char arrays, not that for C-strings, to pass
__digits to do_put(..., const string_type&): __ws isn't
null-terminated.
2004-01-27 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (__pad<>::_S_pad):
Improve performance-wise: avoid one traits::copy, avoid
the __builtin_alloca, streamline.
Backport from mainline
2003-05-09 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/10555, c++/10576
* pt.c (lookup_template_class): Handle class template with
multiple levels of parameters when one of the levels contain
errors.
* g++.dg/template/nontype4.C: New test.
* g++.dg/template/nontype5.C: Likewise.
* g++.dg/template/memclass1.C: New test.
Paolo Carlini [Sun, 25 Jan 2004 13:13:41 +0000 (13:13 +0000)]
re PR libstdc++/13650 (string::compare should not (always) use traits_type::length())
2004-01-25 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/13650
* include/bits/basic_string.tcc (compare(size_type, size_type,
const _CharT*, size_type)): Implement correctly the resolution
of DR 5: basically, s is a char array, -not- a C string.