diff options
author | Michel Zou | 2018-07-26 19:53:03 +0200 |
---|---|---|
committer | Michel Zou | 2018-07-26 19:53:03 +0200 |
commit | c393153d9e5b4fc1739e70190acb5b080ffbf7ea (patch) | |
tree | 371f1465ebc36ca8f28fc123f7cfcfd3bb3c9461 | |
parent | a9fd93c90fc4611579ff302991c5970c5a92b54e (diff) | |
download | aur-c393153d9e5b4fc1739e70190acb5b080ffbf7ea.tar.gz |
8.2.0
-rw-r--r-- | .SRCINFO | 14 | ||||
-rw-r--r-- | PKGBUILD | 15 | ||||
-rw-r--r-- | bz85638.patch | 180 |
3 files changed, 11 insertions, 198 deletions
@@ -1,6 +1,6 @@ pkgbase = mingw-w64-gcc pkgdesc = Cross GCC for the MinGW-w64 cross-compiler - pkgver = 8.1.0 + pkgver = 8.2.0 pkgrel = 1 url = http://gcc.gnu.org arch = x86_64 @@ -22,17 +22,15 @@ pkgbase = mingw-w64-gcc options = staticlibs options = !emptydirs options = !buildflags - source = https://ftp.gnu.org/gnu/gcc/gcc-8.1.0/gcc-8.1.0.tar.xz - source = https://ftp.gnu.org/gnu/gcc/gcc-8.1.0/gcc-8.1.0.tar.xz.sig - source = http://isl.gforge.inria.fr/isl-0.18.tar.bz2 - source = bz85638.patch + source = https://ftp.gnu.org/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.xz + source = https://ftp.gnu.org/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.xz.sig + source = http://isl.gforge.inria.fr/isl-0.19.tar.bz2 validpgpkeys = F3691687D867B81B51CE07D9BBE43771487328A9 validpgpkeys = 13975A70E63C361C73AE69EF6EEB81F8981C74C7 validpgpkeys = 33C235A34C46AA3FFB293709A328C3A2C3C45C06 - sha256sums = 1d1866f992626e61349a1ccd0b8d5253816222cdc13390dcfaa74b093aa2b153 + sha256sums = 196c3c04ba2613f893283977e6011b2345d1cd1af9abeac58e916b1aab3e0080 sha256sums = SKIP - sha256sums = 6b8b0fd7f81d0a957beb3679c81bbb34ccc7568d5682844d8924424a0dadcb1b - sha256sums = d2a13f550ca7f9131ef14239e8f994b37c81fc8c59f73aff5edab170f5ed6124 + sha256sums = d59726f34f7852a081fbd3defd1ab2136f174110fc2e0c8d10bb122173fa9ed8 pkgname = mingw-w64-gcc @@ -4,8 +4,8 @@ _targets="i686-w64-mingw32 x86_64-w64-mingw32" pkgname=mingw-w64-gcc -pkgver=8.1.0 -_islver=0.18 +pkgver=8.2.0 +_islver=0.19 pkgrel=1 pkgdesc="Cross GCC for the MinGW-w64 cross-compiler" arch=('x86_64') @@ -24,24 +24,19 @@ backup=() options=('!strip' 'staticlibs' '!emptydirs' '!buildflags') #source=(https://sources.archlinux.org/other/gcc/gcc-${pkgver/+/-}.tar.xz{,.sig} source=(https://ftp.gnu.org/gnu/gcc/gcc-$pkgver/gcc-$pkgver.tar.xz{,.sig} - "http://isl.gforge.inria.fr/isl-${_islver}.tar.bz2" - bz85638.patch) + "http://isl.gforge.inria.fr/isl-${_islver}.tar.bz2") validpgpkeys=(F3691687D867B81B51CE07D9BBE43771487328A9 # bpiotrowski@archlinux.org 13975A70E63C361C73AE69EF6EEB81F8981C74C7 # richard.guenther@gmail.com 33C235A34C46AA3FFB293709A328C3A2C3C45C06) # Jakub Jelinek <jakub@redhat.com> -sha256sums=('1d1866f992626e61349a1ccd0b8d5253816222cdc13390dcfaa74b093aa2b153' +sha256sums=('196c3c04ba2613f893283977e6011b2345d1cd1af9abeac58e916b1aab3e0080' 'SKIP' - '6b8b0fd7f81d0a957beb3679c81bbb34ccc7568d5682844d8924424a0dadcb1b' - 'd2a13f550ca7f9131ef14239e8f994b37c81fc8c59f73aff5edab170f5ed6124') + 'd59726f34f7852a081fbd3defd1ab2136f174110fc2e0c8d10bb122173fa9ed8') prepare() { ln -sf gcc-${pkgver/+/-} gcc cd "$srcdir"/gcc # link isl for in-tree builds ln -sf ../isl-${_islver} isl - - # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85638 - patch -p0 -i "$srcdir"/bz85638.patch } build() { diff --git a/bz85638.patch b/bz85638.patch deleted file mode 100644 index 9ed00e836d3c..000000000000 --- a/bz85638.patch +++ /dev/null @@ -1,180 +0,0 @@ ---- gcc/bb-reorder.c (revision 259642) -+++ gcc/bb-reorder.c (working copy) -@@ -117,6 +117,7 @@ - #include "fibonacci_heap.h" - #include "stringpool.h" - #include "attribs.h" -+#include "common/common-target.h" - - /* The number of rounds. In most cases there will only be 4 rounds, but - when partitioning hot and cold basic blocks into separate sections of -@@ -1408,17 +1409,95 @@ get_uncond_jump_length (void) - return length; - } - -+/* Create a forwarder block to OLD_BB starting with NEW_LABEL and in the -+ other partition wrt OLD_BB. */ -+ -+static basic_block -+create_forwarder_block (rtx_code_label *new_label, basic_block old_bb) -+{ -+ /* Put the new label and a jump in the new basic block. */ -+ rtx_insn *label = emit_label (new_label); -+ rtx_code_label *old_label = block_label (old_bb); -+ rtx_insn *jump = emit_jump_insn (targetm.gen_jump (old_label)); -+ JUMP_LABEL (jump) = old_label; -+ -+ /* Create the new basic block and put it in last position. */ -+ basic_block last_bb = EXIT_BLOCK_PTR_FOR_FN (cfun)->prev_bb; -+ basic_block new_bb = create_basic_block (label, jump, last_bb); -+ new_bb->aux = last_bb->aux; -+ new_bb->count = old_bb->count; -+ last_bb->aux = new_bb; -+ -+ emit_barrier_after_bb (new_bb); -+ -+ make_single_succ_edge (new_bb, old_bb, 0); -+ -+ /* Make sure the new basic block is in the other partition. */ -+ unsigned new_partition = BB_PARTITION (old_bb); -+ new_partition ^= BB_HOT_PARTITION | BB_COLD_PARTITION; -+ BB_SET_PARTITION (new_bb, new_partition); -+ -+ return new_bb; -+} -+ -+/* The common landing pad in block OLD_BB has edges from both partitions. -+ Add a new landing pad that will just jump to the old one and split the -+ edges so that no EH edge crosses partitions. */ -+ -+static void -+sjlj_fix_up_crossing_landing_pad (basic_block old_bb) -+{ -+ const unsigned lp_len = cfun->eh->lp_array->length (); -+ edge_iterator ei; -+ edge e; -+ -+ /* Generate the new common landing-pad label. */ -+ rtx_code_label *new_label = gen_label_rtx (); -+ LABEL_PRESERVE_P (new_label) = 1; -+ -+ /* Create the forwarder block. */ -+ basic_block new_bb = create_forwarder_block (new_label, old_bb); -+ -+ /* Create the map from old to new lp index and initialize it. */ -+ unsigned *index_map = (unsigned *) alloca (lp_len * sizeof (unsigned)); -+ memset (index_map, 0, lp_len * sizeof (unsigned)); -+ -+ /* Fix up the edges. */ -+ for (ei = ei_start (old_bb->preds); (e = ei_safe_edge (ei)) != NULL; ) -+ if (e->src != new_bb && BB_PARTITION (e->src) == BB_PARTITION (new_bb)) -+ { -+ rtx_insn *insn = BB_END (e->src); -+ rtx note = find_reg_note (insn, REG_EH_REGION, NULL_RTX); -+ -+ gcc_assert (note != NULL); -+ const unsigned old_index = INTVAL (XEXP (note, 0)); -+ -+ /* Generate the new landing-pad structure. */ -+ if (index_map[old_index] == 0) -+ { -+ eh_landing_pad old_lp = (*cfun->eh->lp_array)[old_index]; -+ eh_landing_pad new_lp = gen_eh_landing_pad (old_lp->region); -+ new_lp->post_landing_pad = old_lp->post_landing_pad; -+ new_lp->landing_pad = new_label; -+ index_map[old_index] = new_lp->index; -+ } -+ XEXP (note, 0) = GEN_INT (index_map[old_index]); -+ -+ /* Adjust the edge to the new destination. */ -+ redirect_edge_succ (e, new_bb); -+ } -+ else -+ ei_next (&ei); -+} -+ - /* The landing pad OLD_LP, in block OLD_BB, has edges from both partitions. - Add a new landing pad that will just jump to the old one and split the - edges so that no EH edge crosses partitions. */ - - static void --fix_up_crossing_landing_pad (eh_landing_pad old_lp, basic_block old_bb) -+dw2_fix_up_crossing_landing_pad (eh_landing_pad old_lp, basic_block old_bb) - { - eh_landing_pad new_lp; -- basic_block new_bb, last_bb; -- rtx_insn *jump; -- unsigned new_partition; - edge_iterator ei; - edge e; - -@@ -1428,32 +1507,12 @@ fix_up_crossing_landing_pad (eh_landing_ - new_lp->landing_pad = gen_label_rtx (); - LABEL_PRESERVE_P (new_lp->landing_pad) = 1; - -- /* Put appropriate instructions in new bb. */ -- rtx_code_label *new_label = emit_label (new_lp->landing_pad); -- -- rtx_code_label *old_label = block_label (old_bb); -- jump = emit_jump_insn (targetm.gen_jump (old_label)); -- JUMP_LABEL (jump) = old_label; -- -- /* Create new basic block to be dest for lp. */ -- last_bb = EXIT_BLOCK_PTR_FOR_FN (cfun)->prev_bb; -- new_bb = create_basic_block (new_label, jump, last_bb); -- new_bb->aux = last_bb->aux; -- new_bb->count = old_bb->count; -- last_bb->aux = new_bb; -- -- emit_barrier_after_bb (new_bb); -- -- make_single_succ_edge (new_bb, old_bb, 0); -- -- /* Make sure new bb is in the other partition. */ -- new_partition = BB_PARTITION (old_bb); -- new_partition ^= BB_HOT_PARTITION | BB_COLD_PARTITION; -- BB_SET_PARTITION (new_bb, new_partition); -+ /* Create the forwarder block. */ -+ basic_block new_bb = create_forwarder_block (new_lp->landing_pad, old_bb); - - /* Fix up the edges. */ - for (ei = ei_start (old_bb->preds); (e = ei_safe_edge (ei)) != NULL; ) -- if (e->src != new_bb && BB_PARTITION (e->src) == new_partition) -+ if (e->src != new_bb && BB_PARTITION (e->src) == BB_PARTITION (new_bb)) - { - rtx_insn *insn = BB_END (e->src); - rtx note = find_reg_note (insn, REG_EH_REGION, NULL_RTX); -@@ -1651,9 +1710,11 @@ find_rarely_executed_basic_blocks_and_cr - - /* The format of .gcc_except_table does not allow landing pads to - be in a different partition as the throw. Fix this by either -- moving or duplicating the landing pads. */ -+ moving the landing pads or inserting forwarder landing pads. */ - if (cfun->eh->lp_array) - { -+ const bool sjlj -+ = (targetm_common.except_unwind_info (&global_options) == UI_SJLJ); - unsigned i; - eh_landing_pad lp; - -@@ -1685,13 +1746,18 @@ find_rarely_executed_basic_blocks_and_cr - which ^= BB_HOT_PARTITION | BB_COLD_PARTITION; - BB_SET_PARTITION (bb, which); - } -+ else if (sjlj) -+ sjlj_fix_up_crossing_landing_pad (bb); - else -- fix_up_crossing_landing_pad (lp, bb); -+ dw2_fix_up_crossing_landing_pad (lp, bb); -+ -+ /* There is a single, common landing pad in SJLJ mode. */ -+ if (sjlj) -+ break; - } - } - - /* Mark every edge that crosses between sections. */ -- - FOR_EACH_BB_FN (bb, cfun) - FOR_EACH_EDGE (e, ei, bb->succs) - { |