gcc 4.8.3: add patch for PR60155
PATCH 1/1 gcc 4.8.3: add patch for PR60155
Fixes:
http://autobuild.buildroot.net/results/6c8/6c8c3cb19a6f98f6f27986b671d48ee092fdf7cc/
--- package/gcc/4.8.3/842-PR60155.patch | 111 ++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 package/gcc/4.8.3/842-PR60155.patch
package/gcc/4.8.3/842-PR60155.patch new file +111 -0
@@ -0,0 +1,111 @@ +From gcc bugzilla https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 +Upstream status: in trunk. + +Signed-off-by: Gustavo Zacarias <[email protected]> + +--- trunk/gcc/gcse.c 2014/02/12 14:50:06 207726 ++++ trunk/gcc/gcse.c 2014/04/04 22:25:51 209134 +@@ -2502,6 +2502,65 @@ + } + } + ++struct set_data ++{ ++ rtx insn; ++ const_rtx set; ++ int nsets; ++}; ++ ++/* Increment number of sets and record set in DATA. */ ++ ++static void ++record_set_data (rtx dest, const_rtx set, void *data) ++{ ++ struct set_data *s = (struct set_data *)data; ++ ++ if (GET_CODE (set) == SET) ++ { ++ /* We allow insns having multiple sets, where all but one are ++ dead as single set insns. In the common case only a single ++ set is present, so we want to avoid checking for REG_UNUSED ++ notes unless necessary. */ ++ if (s->nsets == 1 ++ && find_reg_note (s->insn, REG_UNUSED, SET_DEST (s->set)) ++ && !side_effects_p (s->set)) ++ s->nsets = 0; ++ ++ if (!s->nsets) ++ { ++ /* Record this set. */ ++ s->nsets += 1; ++ s->set = set; ++ } ++ else if (!find_reg_note (s->insn, REG_UNUSED, dest) ++ || side_effects_p (set)) ++ s->nsets += 1; ++ } ++} ++ ++static const_rtx ++single_set_gcse (rtx insn) ++{ ++ struct set_data s; ++ rtx pattern; ++ ++ gcc_assert (INSN_P (insn)); ++ ++ /* Optimize common case. */ ++ pattern = PATTERN (insn); ++ if (GET_CODE (pattern) == SET) ++ return pattern; ++ ++ s.insn = insn; ++ s.nsets = 0; ++ note_stores (pattern, record_set_data, &s); ++ ++ /* Considered invariant insns have exactly one set. */ ++ gcc_assert (s.nsets == 1); ++ return s.set; ++} ++ + /* Emit move from SRC to DEST noting the equivalence with expression computed + in INSN. */ + +@@ -2509,7 +2568,8 @@ + gcse_emit_move_after (rtx dest, rtx src, rtx insn) + { + rtx new_rtx; +- rtx set = single_set (insn), set2; ++ const_rtx set = single_set_gcse (insn); ++ rtx set2; + rtx note; + rtx eqv = NULL_RTX; + +@@ -3369,13 +3429,12 @@ + FOR_EACH_VEC_ELT (occrs_to_hoist, j, occr) + { + rtx insn; +- rtx set; ++ const_rtx set; + + gcc_assert (!occr->deleted_p); + + insn = occr->insn; +- set = single_set (insn); +- gcc_assert (set); ++ set = single_set_gcse (insn); + + /* Create a pseudo-reg to store the result of reaching + expressions into. Get the mode for the new pseudo +@@ -3456,10 +3515,8 @@ + { + rtx reg; + enum reg_class pressure_class; +- rtx set = single_set (insn); ++ const_rtx set = single_set_gcse (insn); + +- /* Considered invariant insns have only one set. */ +- gcc_assert (set != NULL_RTX); + reg = SET_DEST (set); + if (GET_CODE (reg) == SUBREG) + reg = SUBREG_REG (reg);
Signature · 1 line
1.8.5.5
PATCH 1/1 gcc 4.8.3: add patch for PR60155
Dear Gustavo Zacarias,
Quoted 15 lines · Gustavo Zacarias
Fixes:
http://autobuild.buildroot.net/results/6c8/6c8c3cb19a6f98f6f27986b671d48ee092fdf7cc/Signed-off-by Gustavo Zacarias <[email protected]>--- package/gcc/4.8.3/842-PR60155.patch | 111 ++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 package/gcc/4.8.3/842-PR60155.patchpackage/gcc/4.8.3/842-PR60155.patch new file +0
-0
package/gcc/4.8.3/842-PR60155.patch line 2
Quoted 2 lines
package/gcc/4.8.3/842-PR60155.patch new file +2
-0@@ -0,0 +1,111 @@ +From gcc bugzilla https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 +Upstream status: in trunk.
Just to confirm: is it 4.9.0 already?
Also, it doesn't immediately fix the autobuild issue, because the autobuild issue occurs with a pre-built Crosstool-NG toolchain. I'll temporarily add an exception in the autobuilders, and then hopefully Yann will pick up the patch in Crosstool-NG and at some point we'll be able to update the pre-built Crosstool-NG toolchain.
Thanks a lot for the investigation!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/1 gcc 4.8.3: add patch for PR60155
Quoted 11 lines · Thomas Petazzoni
Just to confirm: is it 4.9.0 already?
Also, it doesn't immediately fix the autobuild issue, because the autobuild issue occurs with a pre-built Crosstool-NG toolchain. I'll temporarily add an exception in the autobuilders, and then hopefully Yann will pick up the patch in Crosstool-NG and at some point we'll be able to update the pre-built Crosstool-NG toolchain.
Thanks a lot for the investigation!
Thomas
Yes, gcc 4.9.0 doesn't need it.
IMHO it should have been in 4.8.3 since the bug was resolved in April 4 and gcc was released on May 22, but i don't know their release policies so who knows.
Regarding CT-NG that's up to Yann, and yes an exception is in order, though if you look at other failures it does affect internal toolchains as well so the fix alone will make errors go down albeit not all of them. Regards.
PATCH 1/1 gcc 4.8.3: add patch for PR60155
Dear Gustavo Zacarias,
Quoted 1 line · Gustavo Zacarias
Yes, gcc 4.9.0 doesn't need it.
Cool.
Quoted 3 lines
IMHO it should have been in 4.8.3 since the bug was resolved in April 4 and gcc was released on May 22, but i don't know their release policies so who knows.
OK.
Quoted 3 lines
Regarding CT-NG that's up to Yann, and yes an exception is in order, though if you look at other failures it does affect internal toolchains as well so the fix alone will make errors go down albeit not all of them.
Yes, sure. I'll work on the autobuilder exception.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH 1/1 gcc 4.8.3: add patch for PR60155
In reply to Gustavo ZacariasQuoted 6 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Gustavo" == Gustavo Zacarias <[email protected]> writes:
Fixes:
http://autobuild.buildroot.net/results/6c8/6c8c3cb19a6f98f6f27986b671d48ee092fdf7cc/Signed-off-by Gustavo Zacarias <[email protected]>
Committed, thanks.
Signature · 1 line
Bye, Peter Korsgaard