4.4.3-1
This commit is contained in:
parent
1fd246efa8
commit
108494b92d
@ -1,2 +1,2 @@
|
|||||||
fastjar-0.97.tar.gz
|
fastjar-0.97.tar.gz
|
||||||
gcc-4.4.2-20100114.tar.bz2
|
gcc-4.4.3-20100121.tar.bz2
|
||||||
|
44
gcc.spec
44
gcc.spec
@ -1,9 +1,9 @@
|
|||||||
%global DATE 20100114
|
%global DATE 20100121
|
||||||
%global SVNREV 155909
|
%global SVNREV 156157
|
||||||
%global gcc_version 4.4.2
|
%global gcc_version 4.4.3
|
||||||
# Note, gcc_release must be integer, if you want to add suffixes to
|
# Note, gcc_release must be integer, if you want to add suffixes to
|
||||||
# %{release}, append them after %{gcc_release} on Release: line.
|
# %{release}, append them after %{gcc_release} on Release: line.
|
||||||
%global gcc_release 25
|
%global gcc_release 1
|
||||||
%global _unpackaged_files_terminate_build 0
|
%global _unpackaged_files_terminate_build 0
|
||||||
%global multilib_64_archs sparc64 ppc64 s390x x86_64
|
%global multilib_64_archs sparc64 ppc64 s390x x86_64
|
||||||
%if 0%{?fedora} >= 13
|
%if 0%{?fedora} >= 13
|
||||||
@ -166,9 +166,7 @@ Patch17: gcc44-pr38757.patch
|
|||||||
Patch18: gcc44-libstdc++-docs.patch
|
Patch18: gcc44-libstdc++-docs.patch
|
||||||
Patch19: gcc44-ppc64-aixdesc.patch
|
Patch19: gcc44-ppc64-aixdesc.patch
|
||||||
Patch20: gcc44-max-vartrack-size.patch
|
Patch20: gcc44-max-vartrack-size.patch
|
||||||
Patch21: gcc44-pr42657.patch
|
Patch21: gcc44-vta-non-call-exception.patch
|
||||||
Patch22: gcc44-pr42608.patch
|
|
||||||
Patch23: gcc44-pr42674.patch
|
|
||||||
|
|
||||||
Patch1000: fastjar-0.97-segfault.patch
|
Patch1000: fastjar-0.97-segfault.patch
|
||||||
Patch1001: fastjar-0.97-len1.patch
|
Patch1001: fastjar-0.97-len1.patch
|
||||||
@ -478,9 +476,7 @@ which are required to compile with the GNAT.
|
|||||||
%endif
|
%endif
|
||||||
%patch19 -p0 -b .ppc64-aixdesc~
|
%patch19 -p0 -b .ppc64-aixdesc~
|
||||||
%patch20 -p0 -b .max-vartrack-size~
|
%patch20 -p0 -b .max-vartrack-size~
|
||||||
%patch21 -p0 -b .pr42657~
|
%patch21 -p0 -b .vta-non-call-exception~
|
||||||
%patch22 -p0 -b .pr42608~
|
|
||||||
%patch23 -p0 -b .pr42674~
|
|
||||||
|
|
||||||
# This testcase doesn't compile.
|
# This testcase doesn't compile.
|
||||||
rm libjava/testsuite/libjava.lang/PR35020*
|
rm libjava/testsuite/libjava.lang/PR35020*
|
||||||
@ -494,7 +490,7 @@ tar xzf %{SOURCE4}
|
|||||||
tar xjf %{SOURCE10}
|
tar xjf %{SOURCE10}
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
sed -i -e 's/4\.4\.3/4.4.2/' gcc/BASE-VER
|
sed -i -e 's/4\.4\.4/4.4.3/' gcc/BASE-VER
|
||||||
echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
|
echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
|
||||||
|
|
||||||
# Default to -gdwarf-3 rather than -gdwarf-2
|
# Default to -gdwarf-3 rather than -gdwarf-2
|
||||||
@ -1870,6 +1866,32 @@ fi
|
|||||||
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
|
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jan 21 2010 Jakub Jelinek <jakub@redhat.com> 4.4.3-1
|
||||||
|
- update from gcc-4_4-branch
|
||||||
|
- GCC 4.4.3 release
|
||||||
|
- don't insert DEBUG_STMTs after stmts that can throw, instead insert them
|
||||||
|
at the start of the next bb
|
||||||
|
|
||||||
|
* Thu Jan 21 2010 Jakub Jelinek <jakub@redhat.com> 4.4.2-28
|
||||||
|
- update from gcc-4_4-branch
|
||||||
|
- PRs middle-end/42803, rtl-optimization/42691, target/42542, target/42774,
|
||||||
|
tree-optimization/41826, tree-optimization/42773
|
||||||
|
- fix DW_OP_mod handling in the unwinder
|
||||||
|
- VTA backports
|
||||||
|
- PRs debug/42782, debug/42767
|
||||||
|
- avoid dead VALUES to magically reappear during var-tracking
|
||||||
|
(#557068, PR debug/42715)
|
||||||
|
- don't assume non-addressable automatic MEMs die at each call
|
||||||
|
during var-tracking (#556975, PR debug/42728)
|
||||||
|
|
||||||
|
* Fri Jan 15 2010 Jakub Jelinek <jakub@redhat.com> 4.4.2-27
|
||||||
|
- fix ICE with std::complex<float> copy (#555705, PR middle-end/42760)
|
||||||
|
- avoid exponential hangs in gen_lsm_tmp_name
|
||||||
|
|
||||||
|
* Fri Jan 15 2010 Jakub Jelinek <jakub@redhat.com> 4.4.2-26
|
||||||
|
- update from gcc-4_4-branch
|
||||||
|
- PR c++/42655
|
||||||
|
|
||||||
* Thu Jan 14 2010 Jakub Jelinek <jakub@redhat.com> 4.4.2-25
|
* Thu Jan 14 2010 Jakub Jelinek <jakub@redhat.com> 4.4.2-25
|
||||||
- update from gcc-4_4-branch
|
- update from gcc-4_4-branch
|
||||||
- PRs c/42721, middle-end/40281, middle-end/42667, rtl-optimization/42699
|
- PRs c/42721, middle-end/40281, middle-end/42667, rtl-optimization/42699
|
||||||
|
@ -11,8 +11,8 @@
|
|||||||
flag_var_tracking_assignments.
|
flag_var_tracking_assignments.
|
||||||
* Makefile.in (var-tracking.o): Adjust dependencies.
|
* Makefile.in (var-tracking.o): Adjust dependencies.
|
||||||
|
|
||||||
--- gcc/doc/invoke.texi.jj 2009-12-09 00:36:51.000000000 +0100
|
--- gcc/doc/invoke.texi.jj 2010-01-09 20:39:58.000000000 +0100
|
||||||
+++ gcc/doc/invoke.texi 2010-01-05 10:23:34.000000000 +0100
|
+++ gcc/doc/invoke.texi 2010-01-21 10:00:15.979730377 +0100
|
||||||
@@ -7937,6 +7937,15 @@ with more basic blocks than this paramet
|
@@ -7937,6 +7937,15 @@ with more basic blocks than this paramet
|
||||||
motion optimization performed on them. The default value of the
|
motion optimization performed on them. The default value of the
|
||||||
parameter is 1000 for -O1 and 10000 for -O2 and above.
|
parameter is 1000 for -O1 and 10000 for -O2 and above.
|
||||||
@ -29,8 +29,8 @@
|
|||||||
@item min-nondebug-insn-uid
|
@item min-nondebug-insn-uid
|
||||||
Use uids starting at this parameter for nondebug insns. The range below
|
Use uids starting at this parameter for nondebug insns. The range below
|
||||||
the parameter is reserved exclusively for debug insns created by
|
the parameter is reserved exclusively for debug insns created by
|
||||||
--- gcc/params.def.jj 2009-09-16 21:35:17.000000000 +0200
|
--- gcc/params.def.jj 2010-01-09 20:39:58.000000000 +0100
|
||||||
+++ gcc/params.def 2010-01-06 10:18:04.000000000 +0100
|
+++ gcc/params.def 2010-01-21 10:00:15.980730943 +0100
|
||||||
@@ -771,6 +771,13 @@ DEFPARAM (PARAM_LOOP_INVARIANT_MAX_BBS_I
|
@@ -771,6 +771,13 @@ DEFPARAM (PARAM_LOOP_INVARIANT_MAX_BBS_I
|
||||||
"max basic blocks number in loop for loop invariant motion",
|
"max basic blocks number in loop for loop invariant motion",
|
||||||
10000, 0, 0)
|
10000, 0, 0)
|
||||||
@ -45,18 +45,18 @@
|
|||||||
/* Set minimum insn uid for non-debug insns. */
|
/* Set minimum insn uid for non-debug insns. */
|
||||||
|
|
||||||
DEFPARAM (PARAM_MIN_NONDEBUG_INSN_UID,
|
DEFPARAM (PARAM_MIN_NONDEBUG_INSN_UID,
|
||||||
--- gcc/var-tracking.c.jj 2009-12-17 20:42:04.000000000 +0100
|
--- gcc/var-tracking.c.jj 2010-01-21 09:10:37.000000000 +0100
|
||||||
+++ gcc/var-tracking.c 2010-01-06 10:17:28.000000000 +0100
|
+++ gcc/var-tracking.c 2010-01-21 10:00:15.983740989 +0100
|
||||||
@@ -108,6 +108,8 @@
|
@@ -109,6 +109,8 @@
|
||||||
#include "tree-pass.h"
|
#include "tree-flow.h"
|
||||||
#include "cselib.h"
|
#include "cselib.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
+#include "toplev.h"
|
+#include "toplev.h"
|
||||||
+#include "params.h"
|
+#include "params.h"
|
||||||
|
|
||||||
/* Type of micro operation. */
|
/* var-tracking.c assumes that tree code with the same value as VALUE rtx code
|
||||||
enum micro_operation_type
|
has no chance to appear in REG_EXPR/MEM_EXPRs and isn't a decl.
|
||||||
@@ -443,7 +445,7 @@ static int add_uses (rtx *, void *);
|
@@ -451,7 +453,7 @@ static int add_uses (rtx *, void *);
|
||||||
static void add_uses_1 (rtx *, void *);
|
static void add_uses_1 (rtx *, void *);
|
||||||
static void add_stores (rtx, const_rtx, void *);
|
static void add_stores (rtx, const_rtx, void *);
|
||||||
static bool compute_bb_dataflow (basic_block);
|
static bool compute_bb_dataflow (basic_block);
|
||||||
@ -64,8 +64,8 @@
|
|||||||
+static bool vt_find_locations (void);
|
+static bool vt_find_locations (void);
|
||||||
|
|
||||||
static void dump_attrs_list (attrs);
|
static void dump_attrs_list (attrs);
|
||||||
static int dump_variable_slot (void **, void *);
|
static int dump_var_slot (void **, void *);
|
||||||
@@ -5454,7 +5456,7 @@ compute_bb_dataflow (basic_block bb)
|
@@ -5511,7 +5513,7 @@ compute_bb_dataflow (basic_block bb)
|
||||||
|
|
||||||
/* Find the locations of variables in the whole function. */
|
/* Find the locations of variables in the whole function. */
|
||||||
|
|
||||||
@ -74,7 +74,7 @@
|
|||||||
vt_find_locations (void)
|
vt_find_locations (void)
|
||||||
{
|
{
|
||||||
fibheap_t worklist, pending, fibheap_swap;
|
fibheap_t worklist, pending, fibheap_swap;
|
||||||
@@ -5465,6 +5467,8 @@ vt_find_locations (void)
|
@@ -5522,6 +5524,8 @@ vt_find_locations (void)
|
||||||
int *rc_order;
|
int *rc_order;
|
||||||
int i;
|
int i;
|
||||||
int htabsz = 0;
|
int htabsz = 0;
|
||||||
@ -83,7 +83,7 @@
|
|||||||
|
|
||||||
/* Compute reverse completion order of depth first search of the CFG
|
/* Compute reverse completion order of depth first search of the CFG
|
||||||
so that the data-flow runs faster. */
|
so that the data-flow runs faster. */
|
||||||
@@ -5486,7 +5490,7 @@ vt_find_locations (void)
|
@@ -5543,7 +5547,7 @@ vt_find_locations (void)
|
||||||
fibheap_insert (pending, bb_order[bb->index], bb);
|
fibheap_insert (pending, bb_order[bb->index], bb);
|
||||||
sbitmap_ones (in_pending);
|
sbitmap_ones (in_pending);
|
||||||
|
|
||||||
@ -92,7 +92,7 @@
|
|||||||
{
|
{
|
||||||
fibheap_swap = pending;
|
fibheap_swap = pending;
|
||||||
pending = worklist;
|
pending = worklist;
|
||||||
@@ -5509,11 +5513,11 @@ vt_find_locations (void)
|
@@ -5566,11 +5570,11 @@ vt_find_locations (void)
|
||||||
|
|
||||||
SET_BIT (visited, bb->index);
|
SET_BIT (visited, bb->index);
|
||||||
|
|
||||||
@ -107,7 +107,7 @@
|
|||||||
oldinsz
|
oldinsz
|
||||||
= htab_elements (shared_hash_htab (VTI (bb)->in.vars));
|
= htab_elements (shared_hash_htab (VTI (bb)->in.vars));
|
||||||
oldoutsz
|
oldoutsz
|
||||||
@@ -5577,9 +5581,20 @@ vt_find_locations (void)
|
@@ -5634,9 +5638,20 @@ vt_find_locations (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
changed = compute_bb_dataflow (bb);
|
changed = compute_bb_dataflow (bb);
|
||||||
@ -131,7 +131,7 @@
|
|||||||
|
|
||||||
if (changed)
|
if (changed)
|
||||||
{
|
{
|
||||||
@@ -5630,7 +5645,7 @@ vt_find_locations (void)
|
@@ -5687,7 +5702,7 @@ vt_find_locations (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,7 +140,7 @@
|
|||||||
FOR_EACH_BB (bb)
|
FOR_EACH_BB (bb)
|
||||||
gcc_assert (VTI (bb)->flooded);
|
gcc_assert (VTI (bb)->flooded);
|
||||||
|
|
||||||
@@ -5640,6 +5655,8 @@ vt_find_locations (void)
|
@@ -5698,6 +5713,8 @@ vt_find_locations (void)
|
||||||
sbitmap_free (visited);
|
sbitmap_free (visited);
|
||||||
sbitmap_free (in_worklist);
|
sbitmap_free (in_worklist);
|
||||||
sbitmap_free (in_pending);
|
sbitmap_free (in_pending);
|
||||||
@ -149,7 +149,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Print the content of the LIST to dump file. */
|
/* Print the content of the LIST to dump file. */
|
||||||
@@ -7542,9 +7558,11 @@ vt_finalize (void)
|
@@ -7600,9 +7617,11 @@ vt_finalize (void)
|
||||||
|
|
||||||
/* The entry point to variable tracking pass. */
|
/* The entry point to variable tracking pass. */
|
||||||
|
|
||||||
@ -163,7 +163,7 @@
|
|||||||
if (flag_var_tracking_assignments < 0)
|
if (flag_var_tracking_assignments < 0)
|
||||||
{
|
{
|
||||||
delete_debug_insns ();
|
delete_debug_insns ();
|
||||||
@@ -7569,7 +7587,31 @@ variable_tracking_main (void)
|
@@ -7627,7 +7646,31 @@ variable_tracking_main (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,7 +196,7 @@
|
|||||||
|
|
||||||
if (dump_file && (dump_flags & TDF_DETAILS))
|
if (dump_file && (dump_flags & TDF_DETAILS))
|
||||||
{
|
{
|
||||||
@@ -7583,6 +7625,19 @@ variable_tracking_main (void)
|
@@ -7641,6 +7684,19 @@ variable_tracking_main (void)
|
||||||
vt_debug_insns_local (false);
|
vt_debug_insns_local (false);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -216,15 +216,14 @@
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
gate_handle_var_tracking (void)
|
gate_handle_var_tracking (void)
|
||||||
--- gcc/Makefile.in.jj 2010-01-04 10:07:40.000000000 +0100
|
--- gcc/Makefile.in.jj 2010-01-21 08:58:12.000000000 +0100
|
||||||
+++ gcc/Makefile.in 2010-01-05 10:24:39.000000000 +0100
|
+++ gcc/Makefile.in 2010-01-21 10:00:45.555730868 +0100
|
||||||
@@ -2750,7 +2750,8 @@ regstat.o : regstat.c $(CONFIG_H) $(SYST
|
@@ -2751,7 +2751,7 @@ var-tracking.o : var-tracking.c $(CONFIG
|
||||||
var-tracking.o : var-tracking.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
|
||||||
$(RTL_H) $(TREE_H) hard-reg-set.h insn-config.h reload.h $(FLAGS_H) \
|
$(RTL_H) $(TREE_H) hard-reg-set.h insn-config.h reload.h $(FLAGS_H) \
|
||||||
$(BASIC_BLOCK_H) output.h sbitmap.h alloc-pool.h $(FIBHEAP_H) $(HASHTAB_H) \
|
$(BASIC_BLOCK_H) output.h sbitmap.h alloc-pool.h $(FIBHEAP_H) $(HASHTAB_H) \
|
||||||
- $(REGS_H) $(EXPR_H) $(TIMEVAR_H) tree-pass.h cselib.h $(TARGET_H)
|
$(REGS_H) $(EXPR_H) $(TIMEVAR_H) tree-pass.h cselib.h $(TARGET_H) \
|
||||||
+ $(REGS_H) $(EXPR_H) $(TIMEVAR_H) tree-pass.h cselib.h $(TARGET_H) \
|
- $(TREE_FLOW_H)
|
||||||
+ $(TOPLEV_H) $(PARAMS_H)
|
+ $(TREE_FLOW_H) $(TOPLEV_H) $(PARAMS_H)
|
||||||
profile.o : profile.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
profile.o : profile.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
||||||
$(TREE_H) $(FLAGS_H) output.h $(REGS_H) $(EXPR_H) $(FUNCTION_H) \
|
$(TREE_H) $(FLAGS_H) output.h $(REGS_H) $(EXPR_H) $(FUNCTION_H) \
|
||||||
$(TOPLEV_H) $(COVERAGE_H) $(TREE_FLOW_H) value-prof.h cfghooks.h \
|
$(TOPLEV_H) $(COVERAGE_H) $(TREE_FLOW_H) value-prof.h cfghooks.h \
|
||||||
|
@ -1,68 +0,0 @@
|
|||||||
2010-01-09 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
PR c++/42608
|
|
||||||
* varasm.c (declare_weak): Add weak attribute to decl if it
|
|
||||||
doesn't have one already.
|
|
||||||
(assemble_external): Only add decls to weak_decls if they also
|
|
||||||
have weak attribute.
|
|
||||||
|
|
||||||
* g++.dg/template/instantiate11.C: New test.
|
|
||||||
|
|
||||||
--- gcc/varasm.c.jj 2009-11-09 16:38:29.000000000 +0100
|
|
||||||
+++ gcc/varasm.c 2010-01-08 13:30:12.000000000 +0100
|
|
||||||
@@ -2309,13 +2309,15 @@ assemble_external (tree decl ATTRIBUTE_U
|
|
||||||
/* We want to output annotation for weak and external symbols at
|
|
||||||
very last to check if they are references or not. */
|
|
||||||
|
|
||||||
- if (SUPPORTS_WEAK && DECL_WEAK (decl)
|
|
||||||
+ if (SUPPORTS_WEAK
|
|
||||||
+ && DECL_WEAK (decl)
|
|
||||||
/* TREE_STATIC is a weird and abused creature which is not
|
|
||||||
generally the right test for whether an entity has been
|
|
||||||
locally emitted, inlined or otherwise not-really-extern, but
|
|
||||||
for declarations that can be weak, it happens to be
|
|
||||||
match. */
|
|
||||||
- && !TREE_STATIC (decl))
|
|
||||||
+ && !TREE_STATIC (decl)
|
|
||||||
+ && lookup_attribute ("weak", DECL_ATTRIBUTES (decl)))
|
|
||||||
weak_decls = tree_cons (NULL, decl, weak_decls);
|
|
||||||
|
|
||||||
#ifdef ASM_OUTPUT_EXTERNAL
|
|
||||||
@@ -5008,6 +5010,9 @@ declare_weak (tree decl)
|
|
||||||
warning (0, "weak declaration of %q+D not supported", decl);
|
|
||||||
|
|
||||||
mark_weak (decl);
|
|
||||||
+ if (!lookup_attribute ("weak", DECL_ATTRIBUTES (decl)))
|
|
||||||
+ DECL_ATTRIBUTES (decl)
|
|
||||||
+ = tree_cons (get_identifier ("weak"), NULL, DECL_ATTRIBUTES (decl));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
--- gcc/testsuite/g++.dg/template/instantiate11.C.jj 2010-01-08 13:48:58.000000000 +0100
|
|
||||||
+++ gcc/testsuite/g++.dg/template/instantiate11.C 2010-01-08 14:18:44.000000000 +0100
|
|
||||||
@@ -0,0 +1,25 @@
|
|
||||||
+// PR c++/42608
|
|
||||||
+// { dg-do compile }
|
|
||||||
+
|
|
||||||
+template <class U, class V>
|
|
||||||
+struct A;
|
|
||||||
+
|
|
||||||
+template <class V>
|
|
||||||
+struct A<int, V>
|
|
||||||
+{
|
|
||||||
+ void f ();
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+template struct A<int, int>;
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+main ()
|
|
||||||
+{
|
|
||||||
+ A<int, int> a;
|
|
||||||
+ a.f ();
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+// Make sure we get undefined reference error if
|
|
||||||
+// A<int, int>::f () isn't instantiated elsewhere.
|
|
||||||
+// { dg-final { scan-assembler-not "weak\[\n\t\]*_ZN1AIiiE1fEv" } }
|
|
@ -1,73 +0,0 @@
|
|||||||
2010-01-09 Alexandre Oliva <aoliva@redhat.com>
|
|
||||||
|
|
||||||
PR debug/42657
|
|
||||||
* var-tracking.c (var_reg_delete): Don't delete the association
|
|
||||||
between REGs and values or one-part variables if the register
|
|
||||||
isn't clobbered.
|
|
||||||
|
|
||||||
2010-01-08 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
PR debug/42657
|
|
||||||
* tree-inline.c (copy_debug_stmt): Don't reset debug stmt just
|
|
||||||
because its first operand is a non-localized variable.
|
|
||||||
|
|
||||||
--- gcc/tree-inline.c.jj 2010-01-08 10:21:30.000000000 +0100
|
|
||||||
+++ gcc/tree-inline.c 2010-01-08 10:19:49.000000000 +0100
|
|
||||||
@@ -2043,6 +2043,12 @@ copy_debug_stmt (gimple stmt, copy_body_
|
|
||||||
gcc_assert (TREE_CODE (*n) == VAR_DECL);
|
|
||||||
t = *n;
|
|
||||||
}
|
|
||||||
+ else if (TREE_CODE (t) == VAR_DECL
|
|
||||||
+ && !TREE_STATIC (t)
|
|
||||||
+ && gimple_in_ssa_p (cfun)
|
|
||||||
+ && !pointer_map_contains (id->decl_map, t)
|
|
||||||
+ && !var_ann (t))
|
|
||||||
+ /* T is a non-localized variable. */;
|
|
||||||
else
|
|
||||||
walk_tree (&t, remap_gimple_op_r, &wi, NULL);
|
|
||||||
|
|
||||||
--- gcc/var-tracking.c.orig 2010-01-09 07:00:12.000000000 -0200
|
|
||||||
+++ gcc/var-tracking.c 2010-01-09 07:00:14.000000000 -0200
|
|
||||||
@@ -1401,14 +1401,15 @@ var_reg_delete_and_set (dataflow_set *se
|
|
||||||
var_reg_set (set, loc, initialized, set_src);
|
|
||||||
}
|
|
||||||
|
|
||||||
-/* Delete current content of register LOC in dataflow set SET. If
|
|
||||||
- CLOBBER is true, also delete any other live copies of the same
|
|
||||||
- variable part. */
|
|
||||||
+/* Delete the association of register LOC in dataflow set SET with any
|
|
||||||
+ variables that aren't onepart. If CLOBBER is true, also delete any
|
|
||||||
+ other live copies of the same variable part, and delete the
|
|
||||||
+ association with onepart dvs too. */
|
|
||||||
|
|
||||||
static void
|
|
||||||
var_reg_delete (dataflow_set *set, rtx loc, bool clobber)
|
|
||||||
{
|
|
||||||
- attrs *reg = &set->regs[REGNO (loc)];
|
|
||||||
+ attrs *nextp = &set->regs[REGNO (loc)];
|
|
||||||
attrs node, next;
|
|
||||||
|
|
||||||
if (clobber)
|
|
||||||
@@ -1421,13 +1422,18 @@ var_reg_delete (dataflow_set *set, rtx l
|
|
||||||
clobber_variable_part (set, NULL, dv_from_decl (decl), offset, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
- for (node = *reg; node; node = next)
|
|
||||||
+ for (node = *nextp; node; node = next)
|
|
||||||
{
|
|
||||||
next = node->next;
|
|
||||||
- delete_variable_part (set, node->loc, node->dv, node->offset);
|
|
||||||
- pool_free (attrs_pool, node);
|
|
||||||
+ if (clobber || !dv_onepart_p (node->dv))
|
|
||||||
+ {
|
|
||||||
+ delete_variable_part (set, node->loc, node->dv, node->offset);
|
|
||||||
+ pool_free (attrs_pool, node);
|
|
||||||
+ *nextp = next;
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ nextp = &node->next;
|
|
||||||
}
|
|
||||||
- *reg = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Delete content of register with number REGNO in dataflow set SET. */
|
|
@ -1,49 +0,0 @@
|
|||||||
2010-01-13 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
PR middle-end/42674
|
|
||||||
* c-decl.c (finish_function): Don't emit -Wreturn-type warnings in
|
|
||||||
functions with noreturn attribute.
|
|
||||||
|
|
||||||
* decl.c (finish_function): Don't emit -Wreturn-type warnings in
|
|
||||||
functions with noreturn attribute.
|
|
||||||
|
|
||||||
* c-c++-common/pr42674.c: New test.
|
|
||||||
|
|
||||||
--- gcc/c-decl.c.jj 2010-01-04 10:46:33.000000000 +0100
|
|
||||||
+++ gcc/c-decl.c 2010-01-13 18:41:44.000000000 +0100
|
|
||||||
@@ -8032,6 +8032,8 @@ finish_function (void)
|
|
||||||
&& !current_function_returns_value && !current_function_returns_null
|
|
||||||
/* Don't complain if we are no-return. */
|
|
||||||
&& !current_function_returns_abnormally
|
|
||||||
+ /* Don't complain if we are declared noreturn. */
|
|
||||||
+ && !TREE_THIS_VOLATILE (fndecl)
|
|
||||||
/* Don't warn for main(). */
|
|
||||||
&& !MAIN_NAME_P (DECL_NAME (fndecl))
|
|
||||||
/* Or if they didn't actually specify a return type. */
|
|
||||||
--- gcc/cp/decl.c.jj 2009-12-23 17:31:06.000000000 +0100
|
|
||||||
+++ gcc/cp/decl.c 2010-01-13 18:43:01.000000000 +0100
|
|
||||||
@@ -12541,6 +12541,8 @@ finish_function (int flags)
|
|
||||||
&& !current_function_returns_value && !current_function_returns_null
|
|
||||||
/* Don't complain if we abort or throw. */
|
|
||||||
&& !current_function_returns_abnormally
|
|
||||||
+ /* Don't complain if we are declared noreturn. */
|
|
||||||
+ && !TREE_THIS_VOLATILE (fndecl)
|
|
||||||
&& !DECL_NAME (DECL_RESULT (fndecl))
|
|
||||||
&& !TREE_NO_WARNING (fndecl)
|
|
||||||
/* Structor return values (if any) are set by the compiler. */
|
|
||||||
--- gcc/testsuite/c-c++-common/pr42674.c.jj 2010-01-13 18:57:20.000000000 +0100
|
|
||||||
+++ gcc/testsuite/c-c++-common/pr42674.c 2010-01-13 18:57:58.000000000 +0100
|
|
||||||
@@ -0,0 +1,13 @@
|
|
||||||
+/* PR middle-end/42674 */
|
|
||||||
+/* { dg-do compile } */
|
|
||||||
+/* { dg-options "-Wreturn-type" } */
|
|
||||||
+
|
|
||||||
+extern void bar (void);
|
|
||||||
+static int foo (void) __attribute__ ((__noreturn__, __used__));
|
|
||||||
+
|
|
||||||
+static int
|
|
||||||
+foo (void)
|
|
||||||
+{
|
|
||||||
+ while (1)
|
|
||||||
+ bar ();
|
|
||||||
+}
|
|
38
gcc44-vta-non-call-exception.patch
Normal file
38
gcc44-vta-non-call-exception.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
2010-01-21 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* tree-into-ssa.c (maybe_register_def): If stmt ends the bb,
|
||||||
|
insert the debug stmt on the single non-EH edge from the stmt.
|
||||||
|
|
||||||
|
--- gcc/tree-into-ssa.c.jj 2010-01-21 09:58:38.000000000 +0100
|
||||||
|
+++ gcc/tree-into-ssa.c 2010-01-21 12:25:22.000000000 +0100
|
||||||
|
@@ -1968,7 +1968,29 @@ maybe_register_def (def_operand_p def_p,
|
||||||
|
if (tracked_var)
|
||||||
|
{
|
||||||
|
gimple note = gimple_build_debug_bind (tracked_var, def, stmt);
|
||||||
|
- gsi_insert_after (&gsi, note, GSI_SAME_STMT);
|
||||||
|
+ if (gsi_one_before_end_p (gsi) && stmt_ends_bb_p (stmt))
|
||||||
|
+ {
|
||||||
|
+ basic_block bb = gsi_bb (gsi);
|
||||||
|
+ edge_iterator ei;
|
||||||
|
+ edge e, ef = NULL;
|
||||||
|
+ FOR_EACH_EDGE (e, ei, bb->succs)
|
||||||
|
+ if (!(e->flags & EDGE_EH))
|
||||||
|
+ {
|
||||||
|
+ if (ef)
|
||||||
|
+ {
|
||||||
|
+ ef = NULL;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ ef = e;
|
||||||
|
+ }
|
||||||
|
+ if (ef
|
||||||
|
+ && single_pred_p (ef->dest)
|
||||||
|
+ && !phi_nodes (ef->dest)
|
||||||
|
+ && ef->dest != EXIT_BLOCK_PTR)
|
||||||
|
+ gsi_insert_on_edge_immediate (ef, note);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ gsi_insert_after (&gsi, note, GSI_SAME_STMT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,3 +3,4 @@ gcc-4_4_0-5:HEAD:gcc-4.4.0-5.src.rpm:1242291126
|
|||||||
gcc-4_4_2-14_fc13:HEAD:gcc-4.4.2-14.fc13.src.rpm:1259930464
|
gcc-4_4_2-14_fc13:HEAD:gcc-4.4.2-14.fc13.src.rpm:1259930464
|
||||||
gcc-4_4_2-20_fc13:HEAD:gcc-4.4.2-20.fc13.src.rpm:1261484502
|
gcc-4_4_2-20_fc13:HEAD:gcc-4.4.2-20.fc13.src.rpm:1261484502
|
||||||
gcc-4_4_2-25_fc13:HEAD:gcc-4.4.2-25.fc13.src.rpm:1263487371
|
gcc-4_4_2-25_fc13:HEAD:gcc-4.4.2-25.fc13.src.rpm:1263487371
|
||||||
|
gcc-4_4_3-1_fc13:HEAD:gcc-4.4.3-1.fc13.src.rpm:1264094717
|
||||||
|
Loading…
Reference in New Issue
Block a user