zorry 15/02/19 20:32:36 Modified: README.history Added: 91_all_pr61538-atomic-compare-exchange.patch Log: Bump gentoo gcc patchset for 4.8.4 and 4.9.2 to 1.2 for mips bug 516548
Revision Changes Path 1.3 src/patchsets/gcc/4.8.4/gentoo/README.history file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.8.4/gentoo/README.history?rev=1.3&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.8.4/gentoo/README.history?rev=1.3&content-type=text/plain diff : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.8.4/gentoo/README.history?r1=1.2&r2=1.3 Index: README.history =================================================================== RCS file: /var/cvsroot/gentoo/src/patchsets/gcc/4.8.4/gentoo/README.history,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- README.history 10 Feb 2015 00:39:38 -0000 1.2 +++ README.history 19 Feb 2015 20:32:36 -0000 1.3 @@ -1,3 +1,6 @@ +1.2 19 Feb 2015 + + 91_all_pr61538-atomic-compare-exchange.patch + 1.1 09 Feb 2015 + 20_all_msgfmt-libstdc++-link.patch 1.1 src/patchsets/gcc/4.8.4/gentoo/91_all_pr61538-atomic-compare-exchange.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.8.4/gentoo/91_all_pr61538-atomic-compare-exchange.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/4.8.4/gentoo/91_all_pr61538-atomic-compare-exchange.patch?rev=1.1&content-type=text/plain Index: 91_all_pr61538-atomic-compare-exchange.patch =================================================================== 2015-02-19 Joshua Kinard <ku...@gentoo.org> Fix __atomic_* builtins broken on R10000-based MIPS systems PR61538 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61538 Bug 516548 https://bugs.gentoo.org/516548 --- a/gcc/config/mips/mips.c 2014-03-08 04:27:23.000000000 -0500 +++ b/gcc/config/mips/mips.c 2015-02-18 06:30:22.365154629 -0500 @@ -12867,7 +12867,14 @@ mips_process_sync_loop (rtx insn, rtx *o This will sometimes be a delayed branch; see the write code below for details. */ mips_multi_add_insn (is_64bit_p ? "scd\t%0,%1" : "sc\t%0,%1", at, mem, NULL); - mips_multi_add_insn ("beq%?\t%0,%.,1b", at, NULL); + + /* When using branch likely (-mfix-r10000), the delay slot instruction + will be annulled on false. The normal delay slot instructions + calculate the overall result of the atomic operation and must not + be annulled. To ensure this behaviour unconditionally use a NOP + in the delay slot for the branch likely case. */ + + mips_multi_add_insn ("beq%?\t%0,%.,1b%~", at, NULL); /* if (INSN1 != MOVE && INSN1 != LI) NEWVAL = $TMP3 [delay slot]. */ if (insn1 != SYNC_INSN1_MOVE && insn1 != SYNC_INSN1_LI && tmp3 != newval) @@ -12875,7 +12882,7 @@ mips_process_sync_loop (rtx insn, rtx *o mips_multi_copy_insn (tmp3_insn); mips_multi_set_operand (mips_multi_last_index (), 0, newval); } - else if (!(required_oldval && cmp)) + else if (!(required_oldval && cmp) && !mips_branch_likely) mips_multi_add_insn ("nop", NULL); /* CMP = 1 -- either standalone or in a delay slot. */ @@ -12899,12 +12906,12 @@ mips_process_sync_loop (rtx insn, rtx *o const char * mips_output_sync_loop (rtx insn, rtx *operands) { - mips_process_sync_loop (insn, operands); - /* Use branch-likely instructions to work around the LL/SC R10000 errata. */ mips_branch_likely = TARGET_FIX_R10000; + mips_process_sync_loop (insn, operands); + mips_push_asm_switch (&mips_noreorder); mips_push_asm_switch (&mips_nomacro); mips_push_asm_switch (&mips_noat); @@ -12926,6 +12933,9 @@ mips_output_sync_loop (rtx insn, rtx *op unsigned int mips_sync_loop_insns (rtx insn, rtx *operands) { + /* Use branch-likely instructions to work around the LL/SC R10000 + errata. */ + mips_branch_likely = TARGET_FIX_R10000; mips_process_sync_loop (insn, operands); return mips_multi_num_insns; }