New Spanish PO file for 'gcc' (version 7.1-b20170226)

2017-04-08 Thread Translation Project Robot
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).

2017-04-08 Thread Martin Liška

The patch has been just reverted because it caused many issues:
PR80366

Martin


[patch] aarch64 FreeBSD MCOUNT_NAME

2017-04-08 Thread Andreas Tobler

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

2017-04-08 Thread Vladimir Makarov



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-08 Thread Ilya Enkovich
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

2017-04-08 Thread Paul Richard Thomas
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

2017-04-08 Thread Jason Merrill
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

2017-04-08 Thread Jason Merrill
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(); }