4.3.2-6
This commit is contained in:
parent
469bb9a944
commit
a3328a1d29
155
gcc43-pr29609-3.patch
Normal file
155
gcc43-pr29609-3.patch
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
--- gcc/cfglayout.c.jj 2008-10-07 21:35:33.000000000 +0200
|
||||||
|
+++ gcc/cfglayout.c 2008-10-09 11:18:51.000000000 +0200
|
||||||
|
@@ -448,13 +448,12 @@ change_scope (rtx orig_insn, tree s1, tr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-/* Return lexical scope block insn belong to. */
|
||||||
|
+/* Return lexical scope block locator belongs to. */
|
||||||
|
static tree
|
||||||
|
-insn_scope (const_rtx insn)
|
||||||
|
+locator_scope (int loc)
|
||||||
|
{
|
||||||
|
int max = VEC_length (int, block_locators_locs);
|
||||||
|
int min = 0;
|
||||||
|
- int loc = INSN_LOCATOR (insn);
|
||||||
|
|
||||||
|
/* When block_locators_locs was initialized, the pro- and epilogue
|
||||||
|
insns didn't exist yet and can therefore not be found this way.
|
||||||
|
@@ -488,6 +487,13 @@ insn_scope (const_rtx insn)
|
||||||
|
return VEC_index (tree, block_locators_blocks, min);
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* Return lexical scope block insn belongs to. */
|
||||||
|
+static tree
|
||||||
|
+insn_scope (const_rtx insn)
|
||||||
|
+{
|
||||||
|
+ return locator_scope (INSN_LOCATOR (insn));
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* Return line number of the statement specified by the locator. */
|
||||||
|
static location_t
|
||||||
|
locator_location (int loc)
|
||||||
|
@@ -551,6 +557,17 @@ insn_file (const_rtx insn)
|
||||||
|
return locator_file (INSN_LOCATOR (insn));
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* Return true if LOC1 and LOC2 locators have the same location and scope. */
|
||||||
|
+bool
|
||||||
|
+locator_eq (int loc1, int loc2)
|
||||||
|
+{
|
||||||
|
+ if (loc1 == loc2)
|
||||||
|
+ return true;
|
||||||
|
+ if (locator_location (loc1) != locator_location (loc2))
|
||||||
|
+ return false;
|
||||||
|
+ return locator_scope (loc1) == locator_scope (loc2);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/* Rebuild all the NOTE_INSN_BLOCK_BEG and NOTE_INSN_BLOCK_END notes based
|
||||||
|
on the scope tree and the newly reordered instructions. */
|
||||||
|
|
||||||
|
@@ -901,24 +918,30 @@ fixup_reorder_chain (void)
|
||||||
|
if (e->goto_locus && !(e->flags & EDGE_ABNORMAL))
|
||||||
|
{
|
||||||
|
basic_block nb;
|
||||||
|
+ rtx end;
|
||||||
|
|
||||||
|
- if (simplejump_p (BB_END (e->src)))
|
||||||
|
+ insn = BB_END (e->src);
|
||||||
|
+ end = PREV_INSN (BB_HEAD (e->src));
|
||||||
|
+ while (insn != end
|
||||||
|
+ && (!INSN_P (insn) || INSN_LOCATOR (insn) == 0))
|
||||||
|
+ insn = PREV_INSN (insn);
|
||||||
|
+ if (insn != end
|
||||||
|
+ && locator_eq (INSN_LOCATOR (insn), (int) e->goto_locus))
|
||||||
|
+ continue;
|
||||||
|
+ if (simplejump_p (BB_END (e->src))
|
||||||
|
+ && INSN_LOCATOR (BB_END (e->src)) == 0)
|
||||||
|
{
|
||||||
|
- if (INSN_LOCATOR (BB_END (e->src)) == (int) e->goto_locus)
|
||||||
|
- continue;
|
||||||
|
- if (INSN_LOCATOR (BB_END (e->src)) == 0)
|
||||||
|
- {
|
||||||
|
- INSN_LOCATOR (BB_END (e->src)) = e->goto_locus;
|
||||||
|
- continue;
|
||||||
|
- }
|
||||||
|
+ INSN_LOCATOR (BB_END (e->src)) = e->goto_locus;
|
||||||
|
+ continue;
|
||||||
|
}
|
||||||
|
if (e->dest != EXIT_BLOCK_PTR)
|
||||||
|
{
|
||||||
|
insn = BB_HEAD (e->dest);
|
||||||
|
- if (!INSN_P (insn))
|
||||||
|
- insn = next_insn (insn);
|
||||||
|
- if (insn && INSN_P (insn)
|
||||||
|
- && INSN_LOCATOR (insn) == (int) e->goto_locus)
|
||||||
|
+ end = NEXT_INSN (BB_END (e->dest));
|
||||||
|
+ while (insn != end && !INSN_P (insn))
|
||||||
|
+ insn = NEXT_INSN (insn);
|
||||||
|
+ if (insn != end && INSN_LOCATOR (insn)
|
||||||
|
+ && locator_eq (INSN_LOCATOR (insn), (int) e->goto_locus))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
nb = split_edge (e);
|
||||||
|
--- gcc/rtl.h.jj 2008-10-07 21:25:44.000000000 +0200
|
||||||
|
+++ gcc/rtl.h 2008-10-09 11:15:57.000000000 +0200
|
||||||
|
@@ -1622,6 +1622,7 @@ extern int insn_line (const_rtx);
|
||||||
|
extern const char * insn_file (const_rtx);
|
||||||
|
extern int locator_line (int);
|
||||||
|
extern const char * locator_file (int);
|
||||||
|
+extern bool locator_eq (int, int);
|
||||||
|
extern int prologue_locator, epilogue_locator;
|
||||||
|
|
||||||
|
/* In jump.c */
|
||||||
|
--- gcc/cfgrtl.c.jj 2008-10-07 21:35:33.000000000 +0200
|
||||||
|
+++ gcc/cfgrtl.c 2008-10-09 10:37:03.000000000 +0200
|
||||||
|
@@ -2623,19 +2623,21 @@ cfg_layout_merge_blocks (basic_block a,
|
||||||
|
some unique locus, emit a nop with that locus in between. */
|
||||||
|
if (!optimize && EDGE_SUCC (a, 0)->goto_locus)
|
||||||
|
{
|
||||||
|
- rtx insn = BB_END (a);
|
||||||
|
+ rtx insn = BB_END (a), end = PREV_INSN (BB_HEAD (a));
|
||||||
|
int goto_locus = EDGE_SUCC (a, 0)->goto_locus;
|
||||||
|
|
||||||
|
- if (NOTE_P (insn))
|
||||||
|
- insn = prev_nonnote_insn (insn);
|
||||||
|
- if (insn && INSN_P (insn) && INSN_LOCATOR (insn) == goto_locus)
|
||||||
|
+ while (insn != end && (!INSN_P (insn) || INSN_LOCATOR (insn) == 0))
|
||||||
|
+ insn = PREV_INSN (insn);
|
||||||
|
+ if (insn != end && locator_eq (INSN_LOCATOR (insn), goto_locus))
|
||||||
|
goto_locus = 0;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
insn = BB_HEAD (b);
|
||||||
|
- if (!INSN_P (insn))
|
||||||
|
- insn = next_insn (insn);
|
||||||
|
- if (insn && INSN_P (insn) && INSN_LOCATOR (insn) == goto_locus)
|
||||||
|
+ end = NEXT_INSN (BB_END (b));
|
||||||
|
+ while (insn != end && !INSN_P (insn))
|
||||||
|
+ insn = NEXT_INSN (insn);
|
||||||
|
+ if (insn != end && INSN_LOCATOR (insn) != 0
|
||||||
|
+ && locator_eq (INSN_LOCATOR (insn), goto_locus))
|
||||||
|
goto_locus = 0;
|
||||||
|
}
|
||||||
|
if (goto_locus)
|
||||||
|
--- gcc/cfgcleanup.c.jj 2008-10-07 21:35:33.000000000 +0200
|
||||||
|
+++ gcc/cfgcleanup.c 2008-10-09 11:07:40.000000000 +0200
|
||||||
|
@@ -482,7 +482,7 @@ try_forward_edges (int mode, basic_block
|
||||||
|
blocks with different locus are not optimized out. */
|
||||||
|
int locus = single_succ_edge (target)->goto_locus;
|
||||||
|
|
||||||
|
- if (locus && goto_locus && locus != goto_locus)
|
||||||
|
+ if (locus && goto_locus && !locator_eq (locus, goto_locus))
|
||||||
|
counter = n_basic_blocks;
|
||||||
|
else if (locus)
|
||||||
|
goto_locus = locus;
|
||||||
|
@@ -491,7 +491,8 @@ try_forward_edges (int mode, basic_block
|
||||||
|
{
|
||||||
|
locus = INSN_LOCATOR (BB_END (target));
|
||||||
|
|
||||||
|
- if (locus && goto_locus && locus != goto_locus)
|
||||||
|
+ if (locus && goto_locus
|
||||||
|
+ && !locator_eq (locus, goto_locus))
|
||||||
|
counter = n_basic_blocks;
|
||||||
|
else if (locus)
|
||||||
|
goto_locus = locus;
|
@ -3,7 +3,7 @@
|
|||||||
%define gcc_version 4.3.2
|
%define gcc_version 4.3.2
|
||||||
# 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.
|
||||||
%define gcc_release 5
|
%define gcc_release 6
|
||||||
%define _unpackaged_files_terminate_build 0
|
%define _unpackaged_files_terminate_build 0
|
||||||
%define multilib_64_archs sparc64 ppc64 s390x x86_64
|
%define multilib_64_archs sparc64 ppc64 s390x x86_64
|
||||||
%define include_gappletviewer 1
|
%define include_gappletviewer 1
|
||||||
@ -159,6 +159,8 @@ Patch22: gcc43-pr34037.patch
|
|||||||
Patch23: gcc43-pr37738.patch
|
Patch23: gcc43-pr37738.patch
|
||||||
Patch24: gcc43-pr29609.patch
|
Patch24: gcc43-pr29609.patch
|
||||||
Patch25: gcc43-aes.patch
|
Patch25: gcc43-aes.patch
|
||||||
|
Patch26: gcc43-pr29609-2.patch
|
||||||
|
Patch27: gcc43-pr29609-3.patch
|
||||||
|
|
||||||
# On ARM EABI systems, we do want -gnueabi to be part of the
|
# On ARM EABI systems, we do want -gnueabi to be part of the
|
||||||
# target triple.
|
# target triple.
|
||||||
@ -468,6 +470,8 @@ which are required to run programs compiled with the GNAT.
|
|||||||
%patch23 -p0 -b .pr37738~
|
%patch23 -p0 -b .pr37738~
|
||||||
%patch24 -p0 -b .pr29609~
|
%patch24 -p0 -b .pr29609~
|
||||||
%patch25 -p0 -b .aes~
|
%patch25 -p0 -b .aes~
|
||||||
|
%patch26 -p0 -b .pr29609-2~
|
||||||
|
%patch26 -p0 -b .pr29609-3~
|
||||||
|
|
||||||
tar xzf %{SOURCE4}
|
tar xzf %{SOURCE4}
|
||||||
|
|
||||||
@ -1717,6 +1721,9 @@ fi
|
|||||||
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
|
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Oct 9 2008 Jakub Jelinek <jakub@redhat.com> 4.3.2-6
|
||||||
|
- fix fallouts from the -g -O0 debugging patch (#466169, #466198)
|
||||||
|
|
||||||
* Wed Oct 8 2008 Jakub Jelinek <jakub@redhat.com> 4.3.2-5
|
* Wed Oct 8 2008 Jakub Jelinek <jakub@redhat.com> 4.3.2-5
|
||||||
- update from gcc-4_3-branch
|
- update from gcc-4_3-branch
|
||||||
- PRs c++/37555, c/35712, c/37645, fortran/35770, fortran/35945,
|
- PRs c++/37555, c/35712, c/37645, fortran/35770, fortran/35945,
|
||||||
|
Loading…
Reference in New Issue
Block a user