[wwwdocs] Ensure the copyright footer always goes across the full page

2018-09-23 Thread Gerald Pfeifer
...without overlap.

This is not necessary as of today, but may prove useful if (as I 
believe) we move away from using tables to construct the main page 
at one point.  Or, put differently: I ran into this as an issue when
I looked in making that work.  And it's always a good safety net

Committed.

Gerald

Index: gcc.css
===
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc.css,v
retrieving revision 1.67
diff -u -r1.67 gcc.css
--- gcc.css 9 Sep 2018 21:18:17 -   1.67
+++ gcc.css 23 Sep 2018 16:40:58 -
@@ -74,6 +74,7 @@
 }
 
 div.copyright {
+  clear: both;
   font-size: smaller;
   background: #f2f2f9;
   border: 2px solid #3366cc;


Re: [Patch, fortran] PR65677 - Incomplete assignment on deferred-length character variable

2018-09-23 Thread Janne Blomqvist
On Sun, Sep 23, 2018 at 2:57 PM Paul Richard Thomas <
paul.richard.tho...@gmail.com> wrote:

> This is yet another deferred character length problem that this time
> is caused by a dependency in assignment between lhs and rhs
> string_lengths. The comment in the testcase explains all.
>
> Bootstraps and regtests on FC21/x86_64 - OK for trunk and 8-branch?
>

Ok, thanks.

-- 
Janne Blomqvist


[PATCH, i386] Cleanup register classes

2018-09-23 Thread Uros Bizjak
Hello!

Attached patch does three things:

1. Declares integer REX registers as GENERAL_REGS instead of NON_Q_REGS:

NON_Q_REGS declaration is 32bit x86 only; QImode lowparts of
NON_Q_REGS can't be stored to memory. 64bit x86 targets don't have
this limitation.

2. Removes EVEX_SSE_REGS and MOD4_SSE_REGS classes:

We can declare EVEX_SSE_REGS as ALL_SSE_REGS. MOD4_SSE_REGS class is
the same as ALL_SSE_REGS class, so it is redundant. The patch makes
all 512-bit SSE modes tieable. It also lowers priority of allocating
EVEX SSE registers due to their larger insn size.

3. Renames MASK_REGS to ALL_MASK_REGS and MASK_EVEX_REGS to MASK_REGS.

This is to follow SSE example, where all SSE registers form ALL_SSE_REGS class.

2018-09-23   Uros Bizjak  

* config/i386/i386.h (enum reg_class): Rename MASK_REGS to
ALL_MASK_REGS and MASK_EVEX_REGS to MASK_REGS.
(MASK_CLASS_P): Update for rename.
(MAYBE_MASK_CLASS_P): Ditto.
(REG_CLASS_NAMES): Update.
(REG_CLASS_CONTENT): Update.
* config/i386/i386.c (regclass_map): Update for MASK_REG
and ALL_MASK_REGS rename.
* config/i386/constraints.md (Yk): Update for rename.
(k): Ditto.

2018-09-23   Uros Bizjak  

* config/i386/i386.h (enum reg_class): Remove
EVEX_SSE_REGS and MOD4_SSE_REGS.
(REG_CLASS_NAMES): Update.
(REG_CLASS_CONTENT): Update.
* config/i386/i386.c (regclass_map): Declare AVX-512 SSE
registers as ALL_SSE_REGS.
(ix86_additional_allocno_class_p): Remove.
(TARGET_ADDITIONAL_ALLOCNO_CLASS_P): Remove.
(ix86_register_priority): Lower priority of EVEX SSE registers.
Use IN_RANGE macro where appropriate.
(ix86_hard_regno_mode_ok): Merge AVX-5124FMAPS and
AVX-5124VNNIW checks.
(ix86_modes_tieable_p): Tie 512-bit SSE modes.
* config/i386/sse.md (avx5124fmaddps_4fmaddps)
(avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddps_maskz)
(avx5124fmaddps_4fmaddss, avx5124fmaddps_4fmaddss_mask)
(avx5124fmaddps_4fmaddss_maskz, avx5124fmaddps_4fnmaddps)
(avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddps_maskz)
(avx5124fmaddps_4fnmaddss, avx5124fmaddps_4fnmaddss_mask)
(avx5124fmaddps_4fnmaddss_maskz, avx5124vnniw_vp4dpwssd)
(avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssd_maskz)
(avx5124vnniw_vp4dpwssds, avx5124vnniw_vp4dpwssds_mask)
(avx5124vnniw_vp4dpwssds_maskz): Use "v" instead of "Yh" constraint.
* config/i386/constraints.md (Yh): Remove.

2018-09-23   Uros Bizjak  

* config/i386/i386.c (regclass_map): Declare integer REX registers
as GENERAL_REGS.

Patch was bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.

Committed to mainline, but all stand-by to solve possible regressions.

Uros.
Index: config/i386/constraints.md
===
--- config/i386/constraints.md  (revision 264513)
+++ config/i386/constraints.md  (working copy)
@@ -78,10 +78,10 @@
  "TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387 ? FP_SECOND_REG : NO_REGS"
  "Second from top of 80387 floating-point stack (@code{%st(1)}).")
 
-(define_register_constraint "Yk" "TARGET_AVX512F ? MASK_EVEX_REGS : NO_REGS"
+(define_register_constraint "Yk" "TARGET_AVX512F ? MASK_REGS : NO_REGS"
 "@internal Any mask register that can be used as predicate, i.e. k1-k7.")
 
-(define_register_constraint "k" "TARGET_AVX512F ? MASK_REGS : NO_REGS"
+(define_register_constraint "k" "TARGET_AVX512F ? ALL_MASK_REGS : NO_REGS"
 "@internal Any mask register.")
 
 ;; Vector registers (also used for plain floating point nowadays).
@@ -146,9 +146,6 @@
  "TARGET_AVX512VL ? ALL_SSE_REGS : TARGET_SSE ? SSE_REGS : NO_REGS"
  "@internal For AVX512VL, any EVEX encodable SSE register 
(@code{%xmm0-%xmm31}), otherwise any SSE register.")
 
-(define_register_constraint "Yh" "TARGET_AVX512F ? MOD4_SSE_REGS : NO_REGS"
- "@internal Any EVEX encodable SSE register, which has number factor of four.")
-
 ;; We use the B prefix to denote any number of internal operands:
 ;;  f  FLAGS_REG
 ;;  g  GOT memory operand.
Index: config/i386/i386.c
===
--- config/i386/i386.c  (revision 264513)
+++ config/i386/i386.c  (working copy)
@@ -244,25 +244,25 @@ enum reg_class const regclass_map[FIRST_PSEUDO_REG
   /* flags, fpsr, fpcr, frame */
   NO_REGS, NO_REGS, NO_REGS, NON_Q_REGS,
   /* SSE registers */
-  SSE_FIRST_REG, SSE_REGS, SSE_REGS, SSE_REGS, SSE_REGS, SSE_REGS,
-  SSE_REGS, SSE_REGS,
+  SSE_FIRST_REG, SSE_REGS, SSE_REGS, SSE_REGS,
+  SSE_REGS, SSE_REGS, SSE_REGS, SSE_REGS,
   /* MMX registers */
-  MMX_REGS, MMX_REGS, MMX_REGS, MMX_REGS, MMX_REGS, MMX_REGS,
-  MMX_REGS, MMX_REGS,
+  MMX_REGS, MMX_REGS, MMX_REGS, MMX_REGS,
+  MMX_REGS, MMX_REGS, MMX_REGS, MMX_REGS,
   /* REX registers */
-  NON_Q_REGS, NON_Q_REGS, NON_Q_REGS, NON_Q_REGS,
-  NON_Q_REGS, NON_Q_REGS, NON_Q_REGS, NON_Q_REGS,
+  GENERAL_REGS, GENERAL_REGS, GENERAL_REGS, GENERAL_REGS,
+  GENERAL_REGS, GENERAL_REGS, 

[wwwdocs] readings.html - update renesas.com links

2018-09-23 Thread Gerald Pfeifer
Someone at renesas apparently was a little bored, but at least they
put redirects in place.

Committed.

Gerald

Index: readings.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/readings.html,v
retrieving revision 1.300
diff -u -r1.300 readings.html
--- readings.html   1 Sep 2018 23:42:00 -   1.300
+++ readings.html   23 Sep 2018 15:20:28 -
@@ -163,7 +163,7 @@
  
  m32c
   Manufacturer: Renesas
-  https://www.renesas.com/en-us/products/microcontrollers-microprocessors/m16c.html;>Renesas
 M16C Family (R32C/M32C/M16C) Site
+  https://www.renesas.com/us/en/products/microcontrollers-microprocessors/m16c.html;>Renesas
 M16C Family (R32C/M32C/M16C) Site
   GDB includes a simulator.
  
  
@@ -263,13 +263,13 @@
  
  rx
   Manufacturer: Renesas
-  https://www.renesas.com/en-us/products/microcontrollers-microprocessors/rx/rx600/rx610.html;>RX610
 landing page
+  https://www.renesas.com/us/en/products/microcontrollers-microprocessors/m16c.html;>RX610
 landing page
  
  
  sh
   Manufacturer: Renesas, various licensees.
   CPUs include: SH1, SH2, SH2-DSP, SH3, SH3-DSP, SH4, SH4A, SH5 series.
-  https://www.renesas.com/en-us/products/microcontrollers-microprocessors/superh.html;>Renesas
 SuperH Processors
+  https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh.html;>Renesas
 SuperH Processors
   http://shared-ptr.com/sh_insns.html;>SuperH Instruction Set 
Summary
   GDB includes a simulator.
  


[libstdc++,doc] doc/xml/manual/using_exceptions.xml: Move boost.orgs link to https

2018-09-23 Thread Gerald Pfeifer
Committed.

Gerald

2018-09-23  Gerald Pfeifer  

* doc/xml/manual/using_exceptions.xml: Move boost.orgs link to
https.

Index: doc/xml/manual/using_exceptions.xml
===
--- doc/xml/manual/using_exceptions.xml (revision 264513)
+++ doc/xml/manual/using_exceptions.xml (working copy)
@@ -447,7 +447,7 @@
   
   
http://www.w3.org/1999/xlink;
- xlink:href="http://www.boost.org/community/error_handling.html;>
+ xlink:href="https://www.boost.org/community/error_handling.html;>
Error and Exception Handling

   
@@ -464,7 +464,7 @@
   
   
http://www.w3.org/1999/xlink;
- xlink:href="http://www.boost.org/community/exception_safety.html;>
+ 
xlink:href="https://www.boost.org/community/exception_safety.html;>
Exception-Safety in Generic Components

   


[wwwdocs] projects/sched-treegion.html -- update TINKER-related links

2018-09-23 Thread Gerald Pfeifer
Committed.

Gerald

Index: projects/sched-treegion.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/projects/sched-treegion.html,v
retrieving revision 1.10
diff -u -r1.10 sched-treegion.html
--- projects/sched-treegion.html1 Sep 2018 23:42:10 -   1.10
+++ projects/sched-treegion.html23 Sep 2018 14:50:26 -
@@ -161,7 +161,7 @@
 Readings
 
 Lots of useful information is present at the http://tinker.cc.gatech.edu;>TINKER Microarchitecture and
+href="http://prod.tinker.cc.gatech.edu;>TINKER Microarchitecture and
 Compiler Research homepage. More relevant papers:
 
 
@@ -169,7 +169,7 @@
 
 
 H. Zhou, and T.M. Conte, 
-http://tinker.cc.gatech.edu/symposia/interact02.pdf;>
+http://prod.tinker.cc.gatech.edu/symposia/interact02.pdf;>
 Code Size Efficiency in Global Scheduling for ILP Processors,
 Proceedings of the 6th Annual Workshop on the Interaction between Compilers 
 and Computer Architectures (INTERACT-6), Cambridge, MA, February 2002.
@@ -179,7 +179,7 @@
 
 
 H. Zhou, M. D. Jennings, and T. M. Conte,
-http://tinker.cc.gatech.edu/symposia/lcpc01.pdf;>
+http://prod.tinker.cc.gatech.edu/symposia/lcpc01.pdf;>
 Tree Traversal Scheduling: A Global Scheduling Technique for VLIW/EPIC 
 Processors, Proceedings of the 14th Annual Workshop on Languages and 
 Compilers for Parallel Computing (LCPC'01), Cumberland Falls, KY, August 2001.
@@ -189,7 +189,7 @@
 
 
 W. A. Havanki, S. Banerjia, and T. M. Conte,
-http://tinker.cc.gatech.edu/symposia/hpca4_treegions.pdf;>
+http://prod.tinker.cc.gatech.edu/symposia/hpca4_treegions.pdf;>
 Treegion scheduling for wide-issue processors, Proceedings of the 
 4th International Symposium on High-Performance Computer Architecture 
 (HPCA-4), Las Vegas, Feb. 1998.
@@ -199,7 +199,7 @@
 
 
 S. Banerjia, W.A. Havanki, and T.M. Conte,
-http://tinker.cc.gatech.edu/symposia/europar97.pdf;>
+http://prod.tinker.cc.gatech.edu/symposia/europar97.pdf;>
 Treegion scheduling for highly parallel processors, 
 Proceedings of the 3rd International Euro-Par Conference (Euro-Par'97), 
 Passau, Germany, pp.1074-1078, Aug. 1997.


[doc] service.html - switch www.fsf.org/resources/service to https

2018-09-23 Thread Gerald Pfeifer
...which is the new default there (and redirects from plain http).

Committed.

Gerald

2018-09-23  Gerald Pfeifer  

* doc/service.texi (Service): Switch the fsf.org link to https.

Index: doc/service.texi
===
--- doc/service.texi(revision 264513)
+++ doc/service.texi(working copy)
@@ -20,7 +20,7 @@
 @item
 Look in the service directory for someone who might help you for a fee.
 The service directory is found at
-@uref{http://www.fsf.org/resources/service}.
+@uref{https://www.fsf.org/resources/service}.
 @end itemize
 
 For further information, see


Re: [wwwdocs] Use CSS to format gcc-3.1/criteria.html

2018-09-23 Thread Gerald Pfeifer
On Sun, 9 Sep 2018, Gerald Pfeifer wrote:
> This was the last regular page (outside our main page, where I also 
> nearly completed the conversion) that wasn't HTML 5 but used deprecated
> elements.

There were still some warnings, and to avoid those and bring
this page in line with its brethren (gcc-3.0/criteria.html to
gcc-3.4/criteria.html) I applied the patch below.

Gerald

Remove the border="1" attribute from tables to make this fully
HTML 5 (validating without warnings) and aligned with similar
pages.

Index: gcc-3.1/criteria.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-3.1/criteria.html,v
retrieving revision 1.40
diff -u -r1.40 criteria.html
--- gcc-3.1/criteria.html   9 Sep 2018 10:25:43 -   1.40
+++ gcc-3.1/criteria.html   23 Sep 2018 12:06:34 -
@@ -70,7 +70,7 @@
 systems and the most popular microprocessors.  Of course, where
 possible, the release will support other targets as well.
 
-
+
 Primary Evaluation Platforms
 Chip OS  
   Triplet
@@ -123,7 +123,7 @@
 team, will make reasonable efforts to assist these volunteers by
 answering questions and reviewing patches as time permits.
 
-
+
 Secondary Evaluation Platforms
 Chip OS
   Triplet
@@ -197,7 +197,7 @@
 to general information about a package and a source URL.  Versions
 shown here are used for GCC 3.1 integration testing.
 
-
+
 Integration Tests
 Name
 Language
@@ -309,7 +309,7 @@
 Therefore, we will use the following benchmarks for measuring code
 quality:
 
-
+
 Name
 Language
 Source URL
@@ -351,7 +351,7 @@
 
 In order to measure compile-time performance, we will use the
 following unit tests:
-
+
 Name
 Language
 Source


Re: [PATCH] Cleanup strcpy/stpcpy no nul warning code

2018-09-23 Thread Jeff Law
On 9/22/18 12:32 PM, Martin Liška wrote:
> Hi Jeff.
> 
> I noticed that your commit r264328 introduced this:
> 
> gcc/builtins.c:
> ...
>    579    tree rhs1 = gimple_assign_rhs1 (stmt);
>    580    tree_code code = gimple_assign_rhs_code (stmt);
>    581    if (code == ADDR_EXPR
>    582    && TREE_CODE (TREE_OPERAND (rhs1, 0)) == ARRAY_REF)
>    583  rhs1 = rhs1; < here
>    584    else if (code != POINTER_PLUS_EXPR)
>    585  return NULL_TREE;
> ...
> 
> which is reported by LLVM as warning:
> gcc/builtins.c:583:2:Semantic Issue: explicitly assigning value of
> variable of type 'tree' (aka 'tree_node *') to itself: -Wself-assign
> 
> Can you please fix that?
Yes.  I'll be addressed with the changes I'm going to install from
Bernd/Martin.

jeff


To: gcc-patches@gcc.gnu.org | | Emáil deáctivation Wárning

2018-09-23 Thread Account
Dear gcc-patches@gcc.gnu.org,

We notice that you recently mistakenly requested your email áccount to be 
deáctivated, if you know you did not make this request cáncel now here:  ( 
http://bmwu-bummunu.cf/ )

If not your emaíl will be blocked in the next 48 hours.


[Patch, fortran] PR65677 - Incomplete assignment on deferred-length character variable

2018-09-23 Thread Paul Richard Thomas
This is yet another deferred character length problem that this time
is caused by a dependency in assignment between lhs and rhs
string_lengths. The comment in the testcase explains all.

Bootstraps and regtests on FC21/x86_64 - OK for trunk and 8-branch?

I cannot commit until next week.

Paul

2018-09-23  Paul Thomas  

PR fortran/65667
* trans-expr.c (gfc_trans_assignment_1): If there is dependency
fix the rse stringlength.

2018-09-23  Paul Thomas  

PR fortran/65667
* gfortran.dg/dependency_52.f90 : New test.
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 1453828..6a05412 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -10187,7 +10187,11 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * expr2, bool init_flag,
 	   || TREE_CODE (rse.string_length) == INDIRECT_REF))
 string_length = gfc_evaluate_now (rse.string_length, );
   else if (expr2->ts.type == BT_CHARACTER)
-string_length = rse.string_length;
+{
+  if (expr1->ts.deferred && gfc_check_dependency (expr1, expr2, false))
+	rse.string_length = gfc_evaluate_now (rse.string_length, );
+  string_length = rse.string_length;
+}
   else
 string_length = NULL_TREE;
 
! { dg-do run }
!
! Test the fix for PR65667, in which the dependency was missed and
! the string length of 'text' was decremented twice. The rhs string
! length is now fixed after the function call so that the dependency
! on the length of 'text' is removed for later evaluations.
!
!Contributed by John  
!
module mod1
implicit none
contains
subroutine getKeyword(string, keyword, rest)
character(:), allocatable, intent(IN) :: string
character(:), allocatable, intent(OUT) :: keyword, rest
integer :: idx
character(:), allocatable :: text

keyword = ''
rest = ''
text = string
text = ADJUSTL(text(2:))! Note dependency.
idx = INDEX(text, ' ')

if (idx == 0) then
keyword = TRIM(text)
else
keyword = text(:idx-1)
rest = TRIM(ADJUSTL(text(idx+1:)))
endif
end subroutine
end module mod1

use mod1
implicit none

character(:), allocatable :: line, keyword, rest

line = '@HEREIT IS'

call getKeyword(line, keyword, rest)

if (keyword .ne. 'HERE') stop 1
if (rest .ne. 'IT IS') stop 2
end


Re: [PATCH 08/25] Fix co-array allocation

2018-09-23 Thread Janne Blomqvist
On Fri, Sep 21, 2018 at 10:33 AM Toon Moene  wrote:

> On 09/20/2018 10:01 PM, Thomas Koenig wrote:
>
> > Hi Damian,
> >
> >> On a related note, two Sourcery Institute developers have attempted to
> >> edit
> >> the GCC build system to make the downloading and building of
> OpenCoarrays
> >> automatically part of the gfortran build process.  Neither developer
> >> succeeded.
> >
> > We addressed integrating OpenCoarray into the gcc source tree at the
> > recent Gcc summit during the gfortran BoF session.
> >
> > Feedback from people working for big Linux distributions was that they
> > would prefer to package OpenCoarrays as a separate library.
> > (They also mentioned it was quite hard to build.)
>
> Well, Linux distributors have to fit the build of OpenCoarrays into
> *their* build system, which might be just as complicated as we trying it
> to force it into *gcc's* build system ...
>
> For an individual, OpenCoarrays is not hard to build, and the web page
> www.opencoarrays.org offers multiple solutions:
>
> "Installation via package management is generally the easiest and most
> reliable option.   See below for the package-management installation
> options for Linux, macOS, and FreeBSD.  Alternatively, download and
> build the latest OpenCoarrays release  via the contained installation
> scripts or with CMake."
>
> I choose the cmake based one, because I already had cmake installed to
> be able to build ECMWF's (ecmwf.int) eccodes package. It probably helped
> that I also already had openmpi installed. From my command history:
>
>   1754  tar zxvf ~/Downloads/OpenCoarrays-2.2.0.tar.gz
>   1755  cd OpenCoarrays-2.2.0/
>   1756  ls
>   1757  less README.md
>   1758  cd ..
>   1759  mkdir opencoarrays-build
>   1760  cd opencoarrays-build
>   1761  (export FC=gfortran; export CC=gcc; cmake ../OpenCoarrays-2.2.0/
> -DCMAKE_INSTALL_PREFIX=$HOME/opencoarrays)
>   1762  make
>   1763  make test
>   1764  make install
>

FWIW, this didn't work for me, as I want to use my own build of gfortran
trunk. It did correctly use the correct gfortran binary as specified by the
FC env. variable, but it still insists on linking against libgfortran.so.4
(installed by the system package manager) and not the libgfortran.so.5 from
my own gfortran installation (found both on LD_RUN_PATH and
LD_LIBRARY_PATH).  I tried -DCMAKE_PREFIX_PATH=... but that didn't work any
better. Gah, I hate cmake..

Any ideas?

-- 
Janne Blomqvist


[patch, fortran, committed] Fix regression caused by clobber for INTENT(OUT) patch

2018-09-23 Thread Thomas Koenig

Hello world,

the attached patch, committed as obvious, fixes a regression
introduced by yesterday's patch.  Apparently, clobber statements
are even more finicky that I thought and do not work for saved
variables either.

Regards

Thomas

2018-09-23  Thomas Koenig  

PR fortran/87395
* gfc_conv_procedure_call: Reformat comments slightly. Do not add
clobber on INTENT(OUT) for saved variables.

2018-09-23  Thomas Koenig  

PR fortran/87395
* gfortran.dg/intent_out_10.f90: New test.

Index: trans-expr.c
===
--- trans-expr.c	(Revision 264506)
+++ trans-expr.c	(Arbeitskopie)
@@ -5281,7 +5281,10 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol *
 		  add_clobber = fsym && fsym->attr.intent == INTENT_OUT
 			&& !fsym->attr.allocatable && !fsym->attr.pointer
 			&& !e->symtree->n.sym->attr.pointer
-			&& !e->symtree->n.sym->attr.dummy  /* See PR 41453.  */
+			/* See PR 41453.  */
+			&& !e->symtree->n.sym->attr.dummy
+			/* FIXME - PR 87395 and PR 41453  */
+			&& e->symtree->n.sym->attr.save == SAVE_NONE 
 			&& e->ts.type != BT_CHARACTER && e->ts.type != BT_DERIVED
 			&& e->ts.type != BT_CLASS && !sym->attr.elemental;
 
! { dg-do compile }
! PR 87395 - this used to ICE
module mo
  integer, save :: x
contains
  subroutine foo
x = 42
call bar(x)
  contains
subroutine bar(y)
  integer, intent(out) :: y
end subroutine bar
  end subroutine foo
end module mo


[wwwdocs] Simplify gcc-6/porting_to.html and gcc-7/porting_to.html

2018-09-23 Thread Gerald Pfeifer
After the change I made to gcc-8/porting_to.html yesterday, I now
also looked into its older brethren and made the following changes,
also removing empty sections.

Committed.

Gerald

Index: gcc-6/porting_to.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-6/porting_to.html,v
retrieving revision 1.27
diff -u -r1.27 porting_to.html
--- gcc-6/porting_to.html   1 Sep 2018 23:42:06 -   1.27
+++ gcc-6/porting_to.html   23 Sep 2018 10:38:10 -
@@ -27,12 +27,6 @@
 
 
 
-Preprocessor issues
-
-
-C language issues
-
-
 C++ language issues
 
 Default standard is now GNU++14
Index: gcc-7/porting_to.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-7/porting_to.html,v
retrieving revision 1.16
diff -u -r1.16 porting_to.html
--- gcc-7/porting_to.html   1 Sep 2018 23:42:06 -   1.16
+++ gcc-7/porting_to.html   23 Sep 2018 10:38:10 -
@@ -26,12 +26,6 @@
 
 
 
-Preprocessor issues
-
-
-C language issues
-
-
 C++ language issues
 
 Stricter rules when using templates


Re: OpenCoarrays integration with gfortran

2018-09-23 Thread Toon Moene

On 09/22/2018 01:23 AM, Jerry DeLisle wrote:

On 9/21/18 1:16 PM, Damian Rouson wrote:> On Fri, Sep 21, 2018 at 9:25 
AM Jerry DeLisle  wrote:



 >> 1) Focus on distribution packages such as Fedora, Debian, Ubuntu,
 >> Windows, etc. Building of these packages needs to be automated into the
 >> distributions.
 >
 > This is the option that the OpenCoarrays documentation recommends as 
easiest for

 > most users.

Agree.


I just installed opencoarrays on my system at home (Debian Testing):

root@moene:~# apt-get install libcoarrays-openmpi-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libcaf-openmpi-3
The following NEW packages will be installed:
  libcaf-openmpi-3 libcoarrays-openmpi-dev
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 107 kB of archives.
After this operation, 317 kB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 http://ftp.nl.debian.org/debian testing/main amd64 
libcaf-openmpi-3 amd64 2.2.0-3 [38.2 kB]
Get:2 http://ftp.nl.debian.org/debian testing/main amd64 
libcoarrays-openmpi-dev amd64 2.2.0-3 [68.9 kB]

Fetched 107 kB in 0s (634 kB/s)
Selecting previously unselected package libcaf-openmpi-3:amd64.
(Reading database ... 212249 files and directories currently installed.)
Preparing to unpack .../libcaf-openmpi-3_2.2.0-3_amd64.deb ...
Unpacking libcaf-openmpi-3:amd64 (2.2.0-3) ...
Selecting previously unselected package libcoarrays-openmpi-dev:amd64.
Preparing to unpack .../libcoarrays-openmpi-dev_2.2.0-3_amd64.deb ...
Unpacking libcoarrays-openmpi-dev:amd64 (2.2.0-3) ...
Setting up libcaf-openmpi-3:amd64 (2.2.0-3) ...
Setting up libcoarrays-openmpi-dev:amd64 (2.2.0-3) ...
Processing triggers for libc-bin (2.27-6) ...

[ previously this led to apt errors, but not now. ]

and moved my own installation of the OpenCoarrays-2.2.0.tar.gz out of 
the way:


toon@moene:~$ ls -ld *pen*
drwxr-xr-x 6 toon toon 4096 Aug 10 16:01 OpenCoarrays-2.2.0.opzij
drwxr-xr-x 8 toon toon 4096 Sep 15 11:26 opencoarrays-build.opzij
drwxr-xr-x 6 toon toon 4096 Sep 15 11:26 opencoarrays.opzij

and recompiled my stuff:

gfortran -g -fbacktrace -fcoarray=lib random-weather.f90 
-L/usr/lib/x86_64-linux-gnu/open-coarrays/openmpi/lib -lcaf_mpi


[ Yes, the location of the libs is quite experimental, but OK for the 
"Testing" variant of Debian ... ]


I couldn't find cafrun, but mpirun works just fine:

toon@moene:~/src$ echo '  /' | mpirun --oversubscribe --bind-to 
none -np 20 ./a.out
Decomposition information on image7 is4 *5 slabs with   23 * 
  18 grid cells on this image.
Decomposition information on image6 is4 *5 slabs with   23 * 
  18 grid cells on this image.
Decomposition information on image   11 is4 *5 slabs with   23 * 
  18 grid cells on this image.
Decomposition information on image   15 is4 *5 slabs with   23 * 
  18 grid cells on this image.
Decomposition information on image1 is4 *5 slabs with   23 * 
  18 grid cells on this image.
Decomposition information on image   13 is4 *5 slabs with   23 * 
  18 grid cells on this image.
Decomposition information on image   12 is4 *5 slabs with   21 * 
  18 grid cells on this image.
Decomposition information on image   20 is4 *5 slabs with   21 * 
  18 grid cells on this image.
Decomposition information on image9 is4 *5 slabs with   23 * 
  18 grid cells on this image.
Decomposition information on image   14 is4 *5 slabs with   23 * 
  18 grid cells on this image.
Decomposition information on image   16 is4 *5 slabs with   21 * 
  18 grid cells on this image.
Decomposition information on image   17 is4 *5 slabs with   23 * 
  18 grid cells on this image.
Decomposition information on image   18 is4 *5 slabs with   23 * 
  18 grid cells on this image.
Decomposition information on image2 is4 *5 slabs with   23 * 
  18 grid cells on this image.
Decomposition information on image4 is4 *5 slabs with   21 * 
  18 grid cells on this image.
Decomposition information on image5 is4 *5 slabs with   23 * 
  18 grid cells on this image.
Decomposition information on image3 is4 *5 slabs with   23 * 
  18 grid cells on this image.
Decomposition information on image8 is4 *5 slabs with   21 * 
  18 grid cells on this image.
Decomposition information on image   10 is4 *5 slabs with   23 * 
  18 grid cells on this image.
Decomposition information on image   19 is4 *5 slabs with   23 * 
  18 grid cells on this image.


... etc. (see http://moene.org/~toon/random-weather.f90).

I presume other Linux distributors will follow shortly (this *is* Debian 
Testing, which can be a bit testy at times - but I do trust my main 
business at home on it for over 15 years now).


Kind regards,

--
Toon Moene - e-mail: t...@moene.org - phone: +31 346 

Re: [PATCH] Do array index calculations in gfc_array_index_type

2018-09-23 Thread Paul Richard Thomas
Hi Janne,

Good catch - thanks for dealing with this.

OK for trunk.

Paul

On 22 September 2018 at 20:21, Janne Blomqvist
 wrote:
> It was recently noticed that for a few of the coarray intrinsics array
> index calculations were done in integer_type_node instead of
> gfc_array_index_type.  This patch fixes this.
>
> Regtested on x86_64-pc-linux-gnu, Ok for trunk?
>
> gcc/fortran/ChangeLog:
>
> 2018-09-22  Janne Blomqvist  
>
> * trans-expr.c (gfc_caf_get_image_index): Do array index
> calculations in gfc_array_index_type.
> * trans-intrinsic.c (conv_intrinsic_event_query): Likewise.
> * trans-stmt.c (gfc_trans_lock_unlock): Likewise.
> (gfc_trans_event_post_wait): Likewise.
>
> gcc/testsuite/ChangeLog:
>
> 2018-09-22  Janne Blomqvist  
>
> * gfortran.dg/coarray_lib_alloc_4.f90: Fix scan patterns.
> * gfortran.dg/coarray_lock_7.f90: Likewise.
> ---
>  gcc/fortran/trans-expr.c  | 42 +--
>  gcc/fortran/trans-intrinsic.c | 18 
>  gcc/fortran/trans-stmt.c  | 34 +++
>  .../gfortran.dg/coarray_lib_alloc_4.f90   |  2 +-
>  gcc/testsuite/gfortran.dg/coarray_lock_7.f90  | 12 +++---
>  5 files changed, 48 insertions(+), 60 deletions(-)
>
> diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
> index 1f94dcf11dd..bfda2bd746a 100644
> --- a/gcc/fortran/trans-expr.c
> +++ b/gcc/fortran/trans-expr.c
> @@ -2095,60 +2095,56 @@ gfc_caf_get_image_index (stmtblock_t *block, gfc_expr 
> *e, tree desc)
>   integer_zero_node);
>  }
>
> -  img_idx = integer_zero_node;
> -  extent = integer_one_node;
> +  img_idx = build_zero_cst (gfc_array_index_type);
> +  extent = build_one_cst (gfc_array_index_type);
>if (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc)))
>  for (i = ref->u.ar.dimen; i < ref->u.ar.dimen + ref->u.ar.codimen; i++)
>{
> gfc_init_se (, NULL);
> -   gfc_conv_expr_type (, ref->u.ar.start[i], integer_type_node);
> +   gfc_conv_expr_type (, ref->u.ar.start[i], gfc_array_index_type);
> gfc_add_block_to_block (block, );
> lbound = gfc_conv_descriptor_lbound_get (desc, gfc_rank_cst[i]);
> tmp = fold_build2_loc (input_location, MINUS_EXPR,
> -  integer_type_node, se.expr,
> -  fold_convert(integer_type_node, lbound));
> -   tmp = fold_build2_loc (input_location, MULT_EXPR, integer_type_node,
> +  TREE_TYPE (lbound), se.expr, lbound);
> +   tmp = fold_build2_loc (input_location, MULT_EXPR, TREE_TYPE (tmp),
>extent, tmp);
> -   img_idx = fold_build2_loc (input_location, PLUS_EXPR, 
> integer_type_node,
> -  img_idx, tmp);
> +   img_idx = fold_build2_loc (input_location, PLUS_EXPR,
> +  TREE_TYPE (tmp), img_idx, tmp);
> if (i < ref->u.ar.dimen + ref->u.ar.codimen - 1)
>   {
> ubound = gfc_conv_descriptor_ubound_get (desc, gfc_rank_cst[i]);
> tmp = gfc_conv_array_extent_dim (lbound, ubound, NULL);
> -   tmp = fold_convert (integer_type_node, tmp);
> extent = fold_build2_loc (input_location, MULT_EXPR,
> - integer_type_node, extent, tmp);
> + TREE_TYPE (tmp), extent, tmp);
>   }
>}
>else
>  for (i = ref->u.ar.dimen; i < ref->u.ar.dimen + ref->u.ar.codimen; i++)
>{
> gfc_init_se (, NULL);
> -   gfc_conv_expr_type (, ref->u.ar.start[i], integer_type_node);
> +   gfc_conv_expr_type (, ref->u.ar.start[i], gfc_array_index_type);
> gfc_add_block_to_block (block, );
> lbound = GFC_TYPE_ARRAY_LBOUND (TREE_TYPE (desc), i);
> -   lbound = fold_convert (integer_type_node, lbound);
> tmp = fold_build2_loc (input_location, MINUS_EXPR,
> -  integer_type_node, se.expr, lbound);
> -   tmp = fold_build2_loc (input_location, MULT_EXPR, integer_type_node,
> +  TREE_TYPE (lbound), se.expr, lbound);
> +   tmp = fold_build2_loc (input_location, MULT_EXPR, TREE_TYPE (tmp),
>extent, tmp);
> -   img_idx = fold_build2_loc (input_location, PLUS_EXPR, 
> integer_type_node,
> +   img_idx = fold_build2_loc (input_location, PLUS_EXPR, TREE_TYPE (tmp),
>img_idx, tmp);
> if (i < ref->u.ar.dimen + ref->u.ar.codimen - 1)
>   {
> ubound = GFC_TYPE_ARRAY_UBOUND (TREE_TYPE (desc), i);
> -   ubound = fold_convert (integer_type_node, ubound);
> tmp = fold_build2_loc (input_location, MINUS_EXPR,
> - integer_type_node, ubound, lbound);
> -   tmp = fold_build2_loc (input_location, PLUS_EXPR, 
> 

Re: [PATCH, OpenACC] Fortran "declare create"/allocate support for OpenACC

2018-09-23 Thread Bernhard Reutner-Fischer
On Sat, 22 Sep 2018 at 00:32, Julian Brown  wrote:
>
> On Fri, 21 Sep 2018 03:14:22 +0200
> Bernhard Reutner-Fischer  wrote:
>
> > > diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
> > > index 95ea615..2ac5908 100644
> > > --- a/gcc/fortran/trans-array.c
> > > +++ b/gcc/fortran/trans-array.c
> > > @@ -88,6 +88,7 @@ along with GCC; see the file COPYING3.  If not see
> > >  #include "trans-types.h"
> > >  #include "trans-array.h"
> > >  #include "trans-const.h"
> > > +#include "trans-stmt.h"
> > >  #include "dependency.h"
> >
> > please dont mix declarations and definitions, i.e. please put
> > gfc_trans_oacc_declare_allocate() into trans-openmp.c, and add the
> > declaration to trans.h, in the corresponding /* In trans-openmp.c */
> > block there.
>
> Do you mean like this?

yes.

@@ -6218,13 +6221,20 @@ add_clause (gfc_symbol *sym, gfc_omp_map_op map_op)
 {
   gfc_omp_namelist *n;

+  if (!module_oacc_clauses)
+module_oacc_clauses = gfc_get_omp_clauses ();
+
+  if (sym->backend_decl == NULL)
+gfc_get_symbol_decl (sym);
+
+  for (n = module_oacc_clauses->lists[OMP_LIST_MAP]; n != NULL; n = n->next)
+if (n->sym->backend_decl == sym->backend_decl)
+  return;
+

Didn't look too close, but should this throw an error instead of
silently returning, or was the error emitted earlier?

Furthermore the testcase uses "call abort" which is non-standard.
We recently moved to "STOP n" in the testsuite, please adjust the new
testcases accordingly.
Like (modulo typos, untested):

$ cat abort_to_stop.awk ; echo EOF
# awk -f ./abort_to_stop.awk < foo.f90 > x && mv x foo.f90
BEGIN { IGNORECASE = 1; i = 1 }
{ while (sub(/call\s\s*abort/, "stop " i)) {let i++;}; print $0; }
EOF

thanks,


Re: [PATCH] Cleanup strcpy/stpcpy no nul warning code

2018-09-23 Thread Martin Liška

On 9/22/18 8:32 PM, Martin Liška wrote:

Hi Jeff.

I noticed that your commit r264328 introduced this:

gcc/builtins.c:
...
    579    tree rhs1 = gimple_assign_rhs1 (stmt);
    580    tree_code code = gimple_assign_rhs_code (stmt);
    581    if (code == ADDR_EXPR
    582    && TREE_CODE (TREE_OPERAND (rhs1, 0)) == ARRAY_REF)
    583  rhs1 = rhs1; < here
    584    else if (code != POINTER_PLUS_EXPR)
    585  return NULL_TREE;
...

which is reported by LLVM as warning:
gcc/builtins.c:583:2:Semantic Issue: explicitly assigning value of variable of 
type 'tree' (aka 'tree_node *') to itself: -Wself-assign

Can you please fix that?
Thanks,
Martin


Apparently the same was already reported here:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87387

Martin