Date: Thursday, May 21, 2015 @ 20:31:55 Author: heftig Revision: 133933
5.1.0-4 Added: gcc-multilib/trunk/pr66035.patch Modified: gcc-multilib/trunk/PKGBUILD Deleted: gcc-multilib/trunk/pr65873.patch ---------------+ PKGBUILD | 14 +++++++------- pr65873.patch | 17 ----------------- pr66035.patch | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 24 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2015-05-21 18:13:49 UTC (rev 133932) +++ PKGBUILD 2015-05-21 18:31:55 UTC (rev 133933) @@ -9,8 +9,8 @@ pkgver=5.1.0 _pkgver=5 _islver=0.14.1 -pkgrel=3 -_snapshot=5-20150505 +pkgrel=4 +_snapshot=5-20150519 pkgdesc="The GNU Compiler Collection for multilib" arch=('x86_64') license=('GPL' 'LGPL' 'FDL' 'custom') @@ -23,11 +23,11 @@ ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-${_snapshot}.tar.bz2 http://isl.gforge.inria.fr/isl-${_islver}.tar.bz2 pr65882.patch - pr65873.patch) -md5sums=('8acc1b53380be0dd56e67990ba1fc06e' + pr66035.patch) +md5sums=('84f261b2f23e154ec6d9bd4149851a21' '118d1a379abf7606a3334c98a8411c79' '9a9cc98e916fd37c7b3dad50f29d2f48' - 'cad91055efb6e20919fb81aff1600d8e') + '5b980076cd5fcbc3aff6014f306282dd') if [ -n "${_snapshot}" ]; then _basedir=gcc-${_snapshot} @@ -57,8 +57,8 @@ # https://gcc.gnu.org/ml/gcc-patches/2015-04/msg01558.html patch -p1 -i ${srcdir}/pr65882.patch - # commit a64b35493 - patch -p1 -i ${srcdir}/pr65873.patch + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66035 + patch -p1 -i ${srcdir}/pr66035.patch mkdir ${srcdir}/gcc-build } Deleted: pr65873.patch =================================================================== --- pr65873.patch 2015-05-21 18:13:49 UTC (rev 133932) +++ pr65873.patch 2015-05-21 18:31:55 UTC (rev 133933) @@ -1,17 +0,0 @@ -diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c -index 565c5e3..1427761 100644 ---- a/gcc/ipa-inline.c -+++ b/gcc/ipa-inline.c -@@ -439,9 +439,6 @@ can_inline_edge_p (struct cgraph_edge *e, bool report, - == !opt_for_fn (callee->decl, optimize) || !always_inline)) - || check_match (flag_wrapv) - || check_match (flag_trapv) -- /* Strictly speaking only when the callee contains memory -- accesses that are not using alias-set zero anyway. */ -- || check_maybe_down (flag_strict_aliasing) - /* Strictly speaking only when the callee uses FP math. */ - || check_maybe_up (flag_rounding_math) - || check_maybe_up (flag_trapping_math) --- -2.3.6 - Added: pr66035.patch =================================================================== --- pr66035.patch (rev 0) +++ pr66035.patch 2015-05-21 18:31:55 UTC (rev 133933) @@ -0,0 +1,48 @@ +--- a/gcc/fortran/trans-expr.c ++++ a/gcc/fortran/trans-expr.c +@@ -6897,6 +6897,30 @@ alloc_scalar_allocatable_for_subcomponent_assignment (stmtblock_t *block, + TREE_TYPE (tmp), tmp, + fold_convert (TREE_TYPE (tmp), size)); + } ++ else if (cm->ts.type == BT_CLASS) ++ { ++ gcc_assert (expr2->ts.type == BT_CLASS || expr2->ts.type == BT_DERIVED); ++ if (expr2->ts.type == BT_DERIVED) ++ { ++ tmp = gfc_get_symbol_decl (gfc_find_vtab (&expr2->ts)); ++ tmp = gfc_build_addr_expr (NULL_TREE, tmp); ++ size = fold_convert (size_type_node, gfc_vptr_size_get (tmp)); ++ } ++ else ++ { ++ gfc_expr *e2vtab; ++ gfc_se se; ++ e2vtab = gfc_find_and_cut_at_last_class_ref (expr2); ++ gfc_add_vptr_component (e2vtab); ++ gfc_add_size_component (e2vtab); ++ gfc_init_se (&se, NULL); ++ gfc_conv_expr (&se, e2vtab); ++ gfc_add_block_to_block (block, &se.pre); ++ size = fold_convert (size_type_node, se.expr); ++ gfc_free_expr (e2vtab); ++ } ++ size_in_bytes = size; ++ } + else + { + /* Otherwise use the length in bytes of the rhs. */ +@@ -7068,6 +7092,14 @@ gfc_trans_subcomponent_assign (tree dest, gfc_component * cm, gfc_expr * expr, + tmp = gfc_build_memcpy_call (tmp, se.expr, size); + gfc_add_expr_to_block (&block, tmp); + } ++ else if (cm->ts.type == BT_CLASS && expr->ts.type == BT_CLASS) ++ { ++ tmp = gfc_copy_class_to_class (se.expr, dest, integer_one_node, ++ CLASS_DATA (cm)->attr.unlimited_polymorphic); ++ gfc_add_expr_to_block (&block, tmp); ++ gfc_add_modify (&block, gfc_class_vptr_get (dest), ++ gfc_class_vptr_get (se.expr)); ++ } + else + gfc_add_modify (&block, tmp, + fold_convert (TREE_TYPE (tmp), se.expr));