This commit is contained in:
Jakub Jelinek 2010-01-25 22:31:28 +00:00
parent 85d822a98d
commit 2b90ba6797
3 changed files with 196 additions and 1 deletions

View File

@ -3,7 +3,7 @@
%global gcc_version 4.4.3
# Note, gcc_release must be integer, if you want to add suffixes to
# %{release}, append them after %{gcc_release} on Release: line.
%global gcc_release 1
%global gcc_release 3
%global _unpackaged_files_terminate_build 0
%global multilib_64_archs sparc64 ppc64 s390x x86_64
%if 0%{?fedora} >= 13
@ -167,6 +167,8 @@ Patch18: gcc44-libstdc++-docs.patch
Patch19: gcc44-ppc64-aixdesc.patch
Patch20: gcc44-max-vartrack-size.patch
Patch21: gcc44-vta-non-call-exception.patch
Patch22: gcc44-rh530847.patch
Patch23: gcc44-pr42861.patch
Patch1000: fastjar-0.97-segfault.patch
Patch1001: fastjar-0.97-len1.patch
@ -477,6 +479,8 @@ which are required to compile with the GNAT.
%patch19 -p0 -b .ppc64-aixdesc~
%patch20 -p0 -b .max-vartrack-size~
%patch21 -p0 -b .vta-non-call-exception~
%patch22 -p0 -b .rh530847~
%patch23 -p0 -b .pr42861~
# This testcase doesn't compile.
rm libjava/testsuite/libjava.lang/PR35020*
@ -1866,6 +1870,12 @@ fi
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
%changelog
* Mon Jan 25 2010 Jakub Jelinek <jakub@redhat.com> 4.4.3-3
- VTA improvements (#556975, PR debug/42861)
* Sat Jan 23 2010 Dennis Gilmore <dennis@ausil.us> 4.4.3-2
- use gas .section syntax (#530847)
* Thu Jan 21 2010 Jakub Jelinek <jakub@redhat.com> 4.4.3-1
- update from gcc-4_4-branch
- GCC 4.4.3 release

123
gcc44-pr42861.patch Normal file
View File

@ -0,0 +1,123 @@
2010-01-25 Alexandre Oliva <aoliva@redhat.com>
PR debug/42861
* var-tracking.c (val_store): Add modified argument, obey it.
Adjust callers.
(count_uses): Move down logging of main.
(compute_bb_dataflow): Use val_store for MO_VAL_USEs that
don't need resolution.
(emit_notes_in_bb): Likewise.
--- gcc/var-tracking.c.jj 2010-01-21 09:10:37.000000000 +0100
+++ gcc/var-tracking.c 2010-01-25 23:18:07.239731089 +0100
@@ -1518,10 +1518,12 @@ var_mem_delete (dataflow_set *set, rtx l
delete_variable_part (set, loc, dv_from_decl (decl), offset);
}
-/* Map a value to a location it was just stored in. */
+/* Bind a value to a location it was just stored in. If MODIFIED
+ holds, assume the location was modified, detaching it from any
+ values bound to it. */
static void
-val_store (dataflow_set *set, rtx val, rtx loc, rtx insn)
+val_store (dataflow_set *set, rtx val, rtx loc, rtx insn, bool modified)
{
cselib_val *v = CSELIB_VAL_PTR (val);
@@ -1547,7 +1549,8 @@ val_store (dataflow_set *set, rtx val, r
if (REG_P (loc))
{
- var_regno_delete (set, REGNO (loc));
+ if (modified)
+ var_regno_delete (set, REGNO (loc));
var_reg_decl_set (set, loc, VAR_INIT_STATUS_INITIALIZED,
dv_from_value (val), 0, NULL_RTX, INSERT);
}
@@ -4529,11 +4532,6 @@ count_uses (rtx *ploc, void *cuip)
cselib_val *val;
enum machine_mode mode = GET_MODE (loc);
- VTI (cui->bb)->n_mos++;
-
- if (dump_file && (dump_flags & TDF_DETAILS))
- log_op_type (loc, cui->bb, cui->insn, mopt, dump_file);
-
switch (mopt)
{
case MO_VAL_LOC:
@@ -4547,12 +4545,15 @@ count_uses (rtx *ploc, void *cuip)
if (MEM_P (loc)
&& !REG_P (XEXP (loc, 0)) && !MEM_P (XEXP (loc, 0)))
{
- val = cselib_lookup (XEXP (loc, 0), Pmode, false);
+ val = cselib_lookup (XEXP (loc, 0), Pmode, 0);
if (val && !cselib_preserved_value_p (val))
{
VTI (cui->bb)->n_mos++;
cselib_preserve_value (val);
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ log_op_type (XEXP (loc, 0), cui->bb, cui->insn,
+ MO_VAL_USE, dump_file);
}
}
@@ -4575,6 +4576,9 @@ count_uses (rtx *ploc, void *cuip)
{
VTI (cui->bb)->n_mos++;
cselib_preserve_value (oval);
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ log_op_type (loc, cui->bb, cui->insn,
+ MO_VAL_USE, dump_file);
}
}
@@ -4589,6 +4593,10 @@ count_uses (rtx *ploc, void *cuip)
default:
break;
}
+
+ VTI (cui->bb)->n_mos++;
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ log_op_type (loc, cui->bb, cui->insn, mopt, dump_file);
}
return 0;
@@ -5318,6 +5326,8 @@ compute_bb_dataflow (basic_block bb)
if (VAL_NEEDS_RESOLUTION (loc))
val_resolve (out, val, vloc, insn);
+ else
+ val_store (out, val, uloc, insn, false);
if (VAL_HOLDS_TRACK_EXPR (loc))
{
@@ -5409,7 +5419,7 @@ compute_bb_dataflow (basic_block bb)
else if (REG_P (uloc))
var_regno_delete (out, REGNO (uloc));
- val_store (out, val, vloc, insn);
+ val_store (out, val, vloc, insn, true);
}
break;
@@ -6939,6 +6949,8 @@ emit_notes_in_bb (basic_block bb, datafl
if (VAL_NEEDS_RESOLUTION (loc))
val_resolve (set, val, vloc, insn);
+ else
+ val_store (set, val, uloc, insn, false);
if (VAL_HOLDS_TRACK_EXPR (loc))
{
@@ -7026,7 +7038,7 @@ emit_notes_in_bb (basic_block bb, datafl
else if (REG_P (uloc))
var_regno_delete (set, REGNO (uloc));
- val_store (set, val, vloc, insn);
+ val_store (set, val, vloc, insn, true);
emit_notes_for_changes (NEXT_INSN (insn), EMIT_NOTE_BEFORE_INSN,
set->vars);

62
gcc44-rh530847.patch Normal file
View File

@ -0,0 +1,62 @@
2010-01-24 David S. Miller <davem@davemloft.net>
* gcc/config/sparc/sysv4.h (TARGET_ASM_NAMED_SECTION): Only
define if not using GAS.
* gcc/config/sparc/sparc.c (sparc_elf_asm_named_section):
Likewise. Delete SECTION_MERGE code, which is only applicable
when using GAS.
--- gcc/config/sparc/sparc.c (revision 156204)
+++ gcc/config/sparc/sparc.c (revision 156205)
@@ -371,7 +371,7 @@ static int save_or_restore_regs (int, in
static void emit_save_or_restore_regs (int);
static void sparc_asm_function_prologue (FILE *, HOST_WIDE_INT);
static void sparc_asm_function_epilogue (FILE *, HOST_WIDE_INT);
-#ifdef OBJECT_FORMAT_ELF
+#if defined (OBJECT_FORMAT_ELF) && !defined (HAVE_GNU_AS)
static void sparc_elf_asm_named_section (const char *, unsigned int, tree);
#endif
@@ -7847,19 +7847,11 @@ sparc_profile_hook (int labelno)
}
}
-#ifdef OBJECT_FORMAT_ELF
+#if defined (OBJECT_FORMAT_ELF) && !defined (HAVE_GNU_AS)
static void
sparc_elf_asm_named_section (const char *name, unsigned int flags,
tree decl)
{
- if (flags & SECTION_MERGE)
- {
- /* entsize cannot be expressed in this section attributes
- encoding style. */
- default_elf_asm_named_section (name, flags, decl);
- return;
- }
-
fprintf (asm_out_file, "\t.section\t\"%s\"", name);
if (!(flags & SECTION_DEBUG))
--- gcc/config/sparc/sysv4.h (revision 156204)
+++ gcc/config/sparc/sysv4.h (revision 156205)
@@ -1,5 +1,6 @@
/* Target definitions for GNU compiler for SPARC running System V.4
- Copyright (C) 1991, 1992, 1995, 1996, 1997, 1998, 2000, 2002, 2007, 2009
+ Copyright (C) 1991, 1992, 1995, 1996, 1997, 1998, 2000, 2002, 2007, 2009,
+ 2010
Free Software Foundation, Inc.
Contributed by Ron Guilmette (rfg@monkeys.com).
@@ -126,9 +127,11 @@ do { ASM_OUTPUT_ALIGN ((FILE), Pmode ==
#undef DTORS_SECTION_ASM_OP
#define DTORS_SECTION_ASM_OP "\t.section\t\".dtors\",#alloc,#write"
+#ifndef HAVE_GNU_AS
/* Switch into a generic section. */
#undef TARGET_ASM_NAMED_SECTION
#define TARGET_ASM_NAMED_SECTION sparc_elf_asm_named_section
+#endif
#undef ASM_OUTPUT_ALIGNED_BSS
#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \