Kazu Hirata [Thu, 1 Jan 2004 00:24:24 +0000 (00:24 +0000)]
backport: re PR target/13373 (optimization with -frerun-cse-after-loop -fexpensive-optimizations produces wrong code on mcore)
Backport from mainline:
2003-09-12 Richard Sandiford <rsandifo@redhat.com>
PR target/13373
* config/mcore/mcore-protos.h (mcore_r15_operand_p): Declare.
(mcore_secondary_reload_class): Declare.
(mcore_output_inline_const_forced): Remove.
* config/mcore/mcore.md (movsi): Remove the code that forced
non-inlineable constants into a register if the target was r15
or the stack pointer. Remove constant restrictions from the main
define_insn. Remove r <- I, r <- M and r <- N alternatives in favor
of an r <- P alternative. Remove fallback define_insn for reload.
(movhi, movqi): Use gen_lowpart rather than gen_SUBREG. Remove reload
define_insn. Use mcore_output_move in the remaining define_insn.
Adjust condition and constraints in the way as for movsi.
(movdi): Always split unacceptable constants into two. Use
simplify_gen_subreg instead of operand_subword{,_force}.
* config/mcore/mcore.c (mcore_output_inline_const_forced): Remove.
(mcore_output_move): Support HImode and QImode moves as well.
(mcore_m15_operand_p): New function.
(mcore_reload_class): Use it to detect cases where LRW_REGS are better.
(mcore_secondary_reload_class): New function.
* config/mcore/mcore.h (SECONDARY_RELOAD_CLASS): Redefine in
terms of mcore_secondary_reload_class.
Zack Weinberg [Wed, 31 Dec 2003 23:45:39 +0000 (23:45 +0000)]
ia64.c (ia64_va_arg): Pass pointer for variable-sized type through convert_memory_address.
* config/ia64/ia64.c (ia64_va_arg): Pass pointer for
variable-sized type through convert_memory_address.
(ia64_in_small_data_p): Always return false for FUNCTION_DECLs.
Roger Sayle [Wed, 24 Dec 2003 16:04:46 +0000 (16:04 +0000)]
backport: explow.c (convert_memory_address): Define even when POINTERS_EXTEND_UNSIGNED is not defined.
Backport from mainline:
2003-09-18 Mark Mitchell <mark@codesourcery.com>
* explow.c (convert_memory_address): Define even when
POINTERS_EXTEND_UNSIGNED is not defined. Do nothing if the address
is already in the right mode.
Andrew Pinski [Mon, 22 Dec 2003 21:00:55 +0000 (21:00 +0000)]
re PR c++/5050 (template instantiation depth exceeds/maybe recursion problem)
2003-12-22 Andrew Pinski <pinskia@physics.uc.edu>
PR c++/5050
* tree.c (cp_start_inlining): Remove.
(cp_end_inlining): Remove.
* cp-lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING): Do not define.
(LANG_HOOKS_TREE_INLINING_END_INLINING): Do not define.
* cp-tree.h (cp_start_inlining): Do not declare.
(cp_end_inlining): Do not declare.
PR c++/5050
* g++.dg/template/recurse1.C: New test.
Roger Sayle [Sun, 21 Dec 2003 16:08:06 +0000 (16:08 +0000)]
re PR rtl-optimization/13400 (Compiled code crashes storing to read-only location)
PR middle-end/13400
* ifcvt.c (noce_process_if_block): Disable unconditional write
optimizations if we could introduce a store to trapping memory
that wasn't present previously.
* gcc.c-torture/execute/20031215-1.c: New test case.
Roger Sayle [Sat, 20 Dec 2003 19:59:56 +0000 (19:59 +0000)]
re PR rtl-optimization/13031 (ICE (unrecognizable insn) when building gnome-libs-1.4.2)
PR optimization/13031
* gcse.c (cprop_jump): Backport code clean-up and bug-fix
from mainline [2003-05-20 Sayle, Hirata and Rennecke patch].
(cprop_insn): Don't attemp further substitutions if the
current instruction has been deleted.
(local_cprop_pass): Likewise.
* gcc.c-torture/compile/20031220-1.c: New test case.
Mark Mitchell [Thu, 18 Dec 2003 20:12:52 +0000 (20:12 +0000)]
sol2.h (LINK_ARCH32_SPEC): Define in terms of ...
* config/sol2.h (LINK_ARCH32_SPEC): Define in terms of ...
(LINK_ARCH32_SPEC_BASE): ... this new macro.
* config/sparc/sol2-bi.h (LINK_ARCH64_SPEC): Define in terms of
...
(LINK_ARCH64_SPEC_BASE): ... this new macro.
* config/sparc/sol2-gld-bi.h (LINK_ARCH32_SPEC): New macro.
(LINK_ARCH64_SPEC): Likewise.
2003-12-01 James E Wilson <wilson@specifixinc.com>
* config/ia64/ia64.h (FUNCTION_ARG_REGNO_P): Use AR_REG_FIRST not
GR_ARG_FIRST.
2003-10-21 Zack Weinberg <zack@codesourcery.com>
* config/ia64/ia64.md (cmpxchg_acq_si): Mark operand 3 as DImode.
* config/ia64/ia64.c (ia64_expand_fetch_and_op,
ia64_expand_op_and_fetch): Make sure the REG for ar.ccv is
DImode. Use convert_move to load ar.ccv.
(ia64_expand_compare_and_swap): Likewise.
If expand_expr doesn't put 'old' and 'new' in the proper
modes, run them through convert_to_mode.
2003-10-14 Steve Ellcey <sje@cup.hp.com>
* config/ia64/ia64.c (ia64_expand_call): Force function address
to DImode.
* config/ia64/ia64.md (call_gp): Put DImode on operand 0.
2003-06-11 Richard Henderson <rth@redhat.com>
* config/ia64/ia64.md (call_gp): Fix memory mode.
2003-05-14 Eric Christopher <echristo@redhat.com>
* combine.c: Fix header comments.
(distribute_notes): Remove usage of elim_i1, elim_i2. Propagate
to all calls and prototype.
Kazu Hirata [Mon, 15 Dec 2003 20:24:33 +0000 (20:24 +0000)]
re PR target/13122 (h8300 - local variable gets corrupted by function call when -fomit-frame-pointer is given)
PR target/13122
* config/h8300/h8300.md (pushqi1_h8300hs_normal): New.
(pushqi1): Call gen_pushqi1_h8300hs_normal in normal mode.
(pushhi1_h8300hs_normal): New.
(pushhi1): Call gen_pushqi1_h8300hs_normal in normal mode.
* config/h8300/h8300.h (LINK_SPEC): Support normal mode.
* config/h8300/h8300.c (asm_file_start): Correctly output
an architecture directive.
* config/h8300/lib1funcs.asm: Correctly specify an
architecture directive.
re PR target/13256 (strict_low_part mistreated in delay slots)
PR target/13256
Backport from mainline:
* resource.h (enum mark_resource_type): Remove member MARK_DEST.
The only user changed as follows:
* resource.c (mark_set_resources) <case SET>: Always recurse for
SET_SRC (x).
<case SIGN_EXTRACT, case ZERO_EXTRACT>: Always recurse on
operands.
<case STRICT_LOW_PART>: Delete, deferring to default code.
re PR target/13256 (strict_low_part mistreated in delay slots)
PR target/13256
PR target/12598
Backport from mainline:
* gcc.dg/torture/dg-torture.exp: New directory. New file.
* gcc.dg/torture/cris-volatile-1.c: New test.
* gcc.c-torture/execute/20031201-1.c: New test.
Eric Botcazou [Thu, 11 Dec 2003 07:58:00 +0000 (08:58 +0100)]
backport: re PR rtl-optimization/13060 ([g77] ICE in fixup_var_refs_1, at function.c:1947 on correct code with "-O2 -fno-force-mem")
Backport from mainline:
2003-12-07 Eric Botcazou <ebotcazou@libertysurf.fr>
PR optimization/13060
* function.c (fixup_var_refs_1) [SUBREG]: Recognize even if a
replacement already exists. Fix again the whole insn if that fails.
Benjamin Kosnik [Thu, 11 Dec 2003 01:19:00 +0000 (01:19 +0000)]
re PR libstdc++/6243 (testsuite fails almost all tests due to no libintl in LD_LIBRARY_PATH during test.)
2003-12-10 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/6243
* testsuite/lib/libstdc++.exp (v3-init): Add
original_ld_library_path, calculate ld_library path, set
LD_LIBRARY_PATH to both. Based on libjava.exp.
Nathanael Nerode [Wed, 10 Dec 2003 16:57:06 +0000 (16:57 +0000)]
backport: cpptrad.c (_cpp_scan_out_logical_line): Improve test for whether directive begins at the beginning of a line.
Backport from mainline (fixes unreported regression):
* cpptrad.c (_cpp_scan_out_logical_line): Improve test for
whether directive begins at the beginning of a line.
(testsuite)
Backport from mainline:
* gcc.dg/cpp/trad/xwin1.c: New test case.
Andrew Pinski [Mon, 8 Dec 2003 17:36:59 +0000 (17:36 +0000)]
re PR middle-end/10060 (ICE (stack overflow) on huge file (300k lines) due to recursive behaviour of copy_rtx_if_shared, in emit_rtl.c)
2003-12-08 Andrew Pinski <pinskia@physics.uc.edu>
PR middle-end/10060
* emit-rtl.c (copy_rtx_if_shared): Split out into ...
(copy_rtx_if_shared_1): here and optimize the last one
in the sequence into tail-recursion.
(reset_used_flags): Optimize the last one
in the sequence into tail-recursion.