New Spanish PO file for 'gcc' (version 7.1-b20170226)
Hello, gentle maintainer. This is a message from the Translation Project robot. A revised PO file for textual domain 'gcc' has been submitted by the Spanish team of translators. The file is available at: http://translationproject.org/latest/gcc/es.po (This file, 'gcc-7.1-b20170226.es.po', has just now been sent to you in a separate email.) All other PO files for your package are available in: http://translationproject.org/latest/gcc/ Please consider including all of these in your next release, whether official or a pretest. Whenever you have a new distribution with a new version number ready, containing a newer POT file, please send the URL of that distribution tarball to the address below. The tarball may be just a pretest or a snapshot, it does not even have to compile. It is just used by the translators when they need some extra translation context. The following HTML page has been updated: http://translationproject.org/domain/gcc.html If any question arises, please contact the translation coordinator. Thank you for all your work, The Translation Project robot, in the name of your translation coordinator.
Re: [PATCH] Add function part to a same comdat group (PR ipa/80212).
The patch has been just reverted because it caused many issues: PR80366 Martin
[patch] aarch64 FreeBSD MCOUNT_NAME
Hi all, I'm going to commit the attached patch to trunk and all active branches in the next hours. Again, a few tests fixed. Also, I added a comment which I missed in my last commmit. Thanks, Andreas 2017-04-08 Andreas Tobler * config/aarch64/aarch64-freebsd.h: Define MCOUNT_NAME. Add comment for WCHAR_T. Index: gcc/config/aarch64/aarch64-freebsd.h === --- gcc/config/aarch64/aarch64-freebsd.h(revision 246785) +++ gcc/config/aarch64/aarch64-freebsd.h(working copy) @@ -91,7 +91,12 @@ #undef TARGET_BINDS_LOCAL_P #define TARGET_BINDS_LOCAL_P default_binds_local_p_2 +/* Use the AAPCS type for wchar_t, override the one from + config/freebsd.h. */ #undef WCHAR_TYPE #define WCHAR_TYPE "unsigned int" +#undef MCOUNT_NAME +#define MCOUNT_NAME ".mcount" + #endif /* GCC_AARCH64_FREEBSD_H */
Re: patch to fix PR70478
On 04/07/2017 05:45 PM, Jakub Jelinek wrote: On Fri, Apr 07, 2017 at 12:04:16PM -0400, Vladimir Makarov wrote: Index: ChangeLog === --- ChangeLog (revision 246763) +++ ChangeLog (working copy) @@ -1,3 +1,9 @@ +2017-04-07 Vladimir Makarov + + PR rtl-optimization/70478 + * lra-constraints.c (process_alt_operands): Disfavor alternative + insn memory operands. This has regressed: +UNRESOLVED: gfortran.dg/pr68627.f -O scan-assembler-not vbroadcastsd[ t]+%xmm[0-9]+, %ymm[0-9]+ +FAIL: gfortran.dg/pr68627.f -O (internal compiler error) +FAIL: gfortran.dg/pr68627.f -O (test for excess errors) on x86_64-linux, starting with r246764 there is ICE: Error: unable to find a register to spill pr68627.f:16:0: Error: this is the insn: (insn 202 1300 1177 12 (set (reg:V2DF 1306 [785]) (vec_concat:V2DF (reg:DF 1307 [orig:259 _282 ] [259]) (reg:DF 1421 [orig:263 _313 ] [263]))) "pr68627.f":11 2727 {vec_concatv2df} (expr_list:REG_DEAD (reg:DF 1421 [orig:263 _313 ] [263]) (expr_list:REG_DEAD (reg:DF 1307 [orig:259 _282 ] [259]) (nil pr68627.f:16:0: internal compiler error: in assign_by_spills, at lra-assigns.c:1476 Thanks, Jakub. I used only check-gcc on 3 platforms to check the patch. I should have checked other languages too. Meanwhile, I've reversed the patch. I'll continue work on the PR.
Re: Fix for PR79987
2017-04-04 18:34 GMT+03:00 Jeff Law : > On 04/04/2017 09:07 AM, Alexander Ivchenko wrote: >> >> Hi, >> >> When creating static bounds for foo below we end up with: >> >> *((unsigned long *) &__chkp_bounds_of_foo + 8) = >> ~(__builtin_ia32_sizeof (foo) + ((long unsigned int) &foo + >> 18446744073709551615)); >> >> This fails in gimplify_function_tree with gcc_assert (!VOID_TYPE_P >> (TREE_TYPE (*expr_p))); >> >> Is it OK? >> >> gcc/ChangeLog: >> >> 2017-04-04 Alexander Ivchenko >> >> * tree-chkp.c (chkp_get_bounds_for_decl_addr): >> assigning zero bounds to void variables >> >> >> gcc/testsuite/ChangeLog: >> >> 2017-04-04 Alexander Ivchenko >> >> * gcc.target/i386/mpx/PR79987.c: New test. > > I've put this (and other CHKP fixes) in the queue for gcc-8 as AFAICT it's > not a regression. > > Jeff > Hi, If we delay it for GCC8 anyway then I think we may fix it in a better way. If we cannot detect size of a variable then size relocations may be used. It is done already for arrays with unknown size and also can be done for void vars. Thanks, Ilya
[Patch, fortran] PR34360 (Comment 28) - ICE when assigning item of a derived-component to a pointer
Dear All, This is not a fix for the original PR but for the specific case of pointer array components of derived types that point to components of arrays of derived types. The original case involving pointer arrays being passed as actual arguments remains to be done. The fix is straightforward and reuses the mechanism for deferred character length components, where a hidden length field is added to the derived type. Here there is a hidden 'span' component. The Changelogs and the patch say it all. I am aware that this is not timely but undertake to remove the patch if any regressions appear. Bootstrapped and regtested on FC23/x86_64 - OK for trunk? Cheers Paul 2017-04-08 Paul Thomas PR fortran/34640 * expr.c (gfc_check_pointer_assign): Exclude pointer array components in test for 'subref_array_pointer' attribute. (gfc_hidden_length_field): New function. * gfortran.h : Prototype for the above. * resolve.c (resolve_component): Call the above for deferred character and pointer array components to provide the hidden field for the character length or span. * trans-array.c (gfc_conv_scalarized_array_ref); Use the hidden span field provided by 'gfc_pointer_array_comp_ref' in the call to 'gfc_build_array_ref'. (build_array_ref): Add the new argument 'passed_span' and pass its to 'gfc_build_array_ref'. (gfc_conv_array_ref): Same as 'gfc_conv_scalarized_array_ref'. (gfc_array_allocate): Set the hidden span field if it is passed by 'gfc_pointer_array_comp_ref'. (gfc_get_dataptr_offset): Pass a null to the 'passed_span' arg. trans-expr.c (gfc_trans_pointer_assignment): Obtain the 'span' for pointer array components and use if applicable. * trans-io.c (gfc_trans_transfer): Scalarize if this is a pointer array component, rather than using the library. trans.c (gfc_build_addr_expr): Use the 'passed_span' arg. (gfc_pointer_array_comp_ref): New function. (hidden_length_field): New function. (gfc_deferred_strlen): Now just calls previous. (gfc_span_field): New function. * trans.h : Add prototypes for 'gfc_pointer_array_comp_ref' and 'gfc_span_field'. 2017-04-08 Paul Thomas PR fortran/34640 * gfortran.dg/pointer_array_component_1.f90: New test. -- "If you can't explain it simply, you don't understand it well enough" - Albert Einstein Index: gcc/fortran/expr.c === *** gcc/fortran/expr.c (revision 246783) --- gcc/fortran/expr.c (working copy) *** gfc_check_pointer_assign (gfc_expr *lval *** 3717,3723 return false; } ! if (rvalue->expr_type == EXPR_VARIABLE && is_subref_array (rvalue)) lvalue->symtree->n.sym->attr.subref_array_pointer = 1; attr = gfc_expr_attr (rvalue); --- 3717,3726 return false; } ! /* Pointer array components are taken care of using the hidden 'span' ! component. */ ! if (rvalue->expr_type == EXPR_VARIABLE && is_subref_array (rvalue) ! && lvalue->symtree->n.sym->ts.type != BT_DERIVED) lvalue->symtree->n.sym->attr.subref_array_pointer = 1; attr = gfc_expr_attr (rvalue); *** gfc_check_vardef_context (gfc_expr* e, b *** 5488,5490 --- 5491,5514 return true; } + + + gfc_component * + gfc_hidden_length_field (gfc_symbol *sym, gfc_component *c, +bool add_if_missing, const char *postfix) + { + char name[GFC_MAX_SYMBOL_LEN+9]; + gfc_component *strlen; + sprintf (name, "_%s_%s", c->name, postfix); + strlen = gfc_find_component (sym, name, true, true, NULL); + if (strlen == NULL && add_if_missing) + { + if (!gfc_add_component (sym, name, &strlen)) + return NULL; + strlen->ts.type = BT_INTEGER; + strlen->ts.kind = gfc_charlen_int_kind; + strlen->attr.access = ACCESS_PRIVATE; + strlen->attr.artificial = 1; + } + return strlen; + } Index: gcc/fortran/gfortran.h === *** gcc/fortran/gfortran.h (revision 246783) --- gcc/fortran/gfortran.h (working copy) *** gfc_expr* gfc_find_stat_co (gfc_expr *); *** 3157,3162 --- 3157,3164 gfc_expr* gfc_build_intrinsic_call (gfc_namespace *, gfc_isym_id, const char*, locus, unsigned, ...); bool gfc_check_vardef_context (gfc_expr*, bool, bool, bool, const char*); + gfc_component* gfc_hidden_length_field (gfc_symbol *, gfc_component *, + bool, const char *); /* st.c */ Index: gcc/fortran/resolve.c === *** gcc/fortran/resolve.c (revision 246783) --- gcc/fortran/resolve.c (working copy) *** resolve_component (gfc_component *c, gfc *** 13551,13571 /* Add the hidden deferred length field. */ if (c->ts.ty
C++ PATCH for c++/80356, ICE with reference to function template argument
My patch for 79294 to check value-dependence for function pointer/reference template arguments was wrongly skipping the type conversions that convert_nontype_argument_function does. Tested x86_64-pc-linux-gnu, applying to trunk. commit ee2ce70b23a8217d502aa268ca1ff42d7beba660 Author: Jason Merrill Date: Fri Apr 7 17:54:26 2017 -0400 PR c++/80356 - ICE with reference to function template argument. PR c++/79294 * pt.c (convert_nontype_argument_function): Adjust type even with a value-dependent argument. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 2d1e81f..5a55f17 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -5981,7 +5981,7 @@ convert_nontype_argument_function (tree type, tree expr, return error_mark_node; if (value_dependent_expression_p (fn)) -return fn; +goto accept; fn_no_ptr = strip_fnptr_conv (fn); if (TREE_CODE (fn_no_ptr) == ADDR_EXPR) @@ -6030,6 +6030,7 @@ convert_nontype_argument_function (tree type, tree expr, return NULL_TREE; } + accept: if (TREE_CODE (type) == REFERENCE_TYPE) fn = build_address (fn); if (!same_type_ignoring_top_level_qualifiers_p (type, TREE_TYPE (fn))) diff --git a/gcc/testsuite/g++.dg/template/fn-ref1.C b/gcc/testsuite/g++.dg/template/fn-ref1.C new file mode 100644 index 000..b2c4429 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/fn-ref1.C @@ -0,0 +1,4 @@ +// PR c++/80356 + +template struct a; +template a f();
C++ PATCH for c++/80267, ICE with nested capture of reference
In this testcase we went to instantiate the reference to 'c' in the innermost lambda, looked it up, found the capture proxy in the middle lambda, decided that this was wrong because it's in a different function from the 'c' variable, tried to build a new version of 'c' for constant/type evaluation, and failed because 'c' isn't constant. We should accept the capture proxy. Tested x86_64-pc-linux-gnu, applying to trunk. commit d9f158fa405ee1124206cc5423f1483ec09b323e Author: Jason Merrill Date: Fri Apr 7 17:09:22 2017 -0400 PR c++/80267 - ICE with nested capture of reference PR c++/60992 * pt.c (tsubst_copy): Handle lookup finding a capture proxy. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index f9f4921..2d1e81f 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -14566,7 +14566,7 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl) { /* First try name lookup to find the instantiation. */ r = lookup_name (DECL_NAME (t)); - if (r) + if (r && !is_capture_proxy (r)) { /* Make sure that the one we found is the one we want. */ tree ctx = DECL_CONTEXT (t); diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested6.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested6.C new file mode 100644 index 000..58dfe3c --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested6.C @@ -0,0 +1,12 @@ +// PR c++/80267 +// { dg-do compile { target c++11 } } + +template void a() { + int b; + auto &c = b; + [&] { +c; +[&] { c; }; + }; +} +void d() { a(); }