Re: [PATCH, OpenACC] Fortran "declare create"/allocate support for OpenACC
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] Do array index calculations in gfc_array_index_type
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 (&se, NULL); > - gfc_conv_expr_type (&se, ref->u.ar.start[i], integer_type_node); > + gfc_conv_expr_type (&se, ref->u.ar.start[i], gfc_array_index_type); > gfc_add_block_to_block (block, &se.pre); > 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 (&se, NULL); > - gfc_conv_expr_type (&se, ref->u.ar.start[i], integer_type_node); > + gfc_conv_expr_type (&se, ref->u.ar.start[i], gfc_array_index_type); > gfc_add_block_to_block (block, &se.pre); > 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
Re: OpenCoarrays integration with gfortran
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 ' &config /' | 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: +3
[wwwdocs] Simplify gcc-6/porting_to.html and gcc-7/porting_to.html
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
[patch, fortran, committed] Fix regression caused by clobber for INTENT(OUT) patch
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
Re: [PATCH 08/25] Fix co-array allocation
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] PR65677 - Incomplete assignment on deferred-length character variable
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, &rse.pre); 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, &rse.pre); + 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
To: gcc-patches@gcc.gnu.org | | Emáil deáctivation Wárning
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.
Re: [PATCH] Cleanup strcpy/stpcpy no nul warning code
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
Re: [wwwdocs] Use CSS to format gcc-3.1/criteria.html
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
[doc] service.html - switch www.fsf.org/resources/service to https
...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
[wwwdocs] projects/sched-treegion.html -- update TINKER-related links
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.
[libstdc++,doc] doc/xml/manual/using_exceptions.xml: Move boost.orgs link to https
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] readings.html - update renesas.com links
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.
[PATCH, i386] Cleanup register classes
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, GENERAL_REG
Re: [Patch, fortran] PR65677 - Incomplete assignment on deferred-length character variable
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
[wwwdocs] Ensure the copyright footer always goes across the full page
...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: OpenCoarrays integration with gfortran
On 23 September 2018 11:46:57 CEST, Toon Moene wrote: >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 ... ] Are you sure you need the -L? For me a simple -fcoarray=lib -lcaf_mpi links fine. Along the same lines a simple $ mpirun -np 4 ./a.out runs fine as expected, like any other mpi program. Cheers, > >I couldn't find cafrun, but mpirun works just fine: > >toon@moene:~/src$ echo ' &config /' | 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. >Decompos
[wwwdocs] Use CSS to position the GCC logo on our main page
Committed. Gerald Index: gcc.css === RCS file: /cvs/gcc/wwwdocs/htdocs/gcc.css,v retrieving revision 1.68 diff -u -r1.68 gcc.css --- gcc.css 23 Sep 2018 16:41:40 - 1.68 +++ gcc.css 23 Sep 2018 18:01:43 - @@ -28,6 +28,8 @@ .twocolumns { column-count:2; } .imgleft { margin: 5px 20px; float: left; } +img.right { float: right; } + td.news { width: 50%; padding-right: 8px; vertical-align: top; } td.news h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 2%; } td.news dl { margin-top:0; } Index: index.html === RCS file: /cvs/gcc/wwwdocs/htdocs/index.html,v retrieving revision 1.1099 diff -u -r1.1099 index.html --- index.html 3 Sep 2018 19:28:26 - 1.1099 +++ index.html 23 Sep 2018 18:01:43 - @@ -15,7 +15,7 @@ GCC, the GNU Compiler Collection - + The GNU Compiler Collection includes front ends for C,
[patch, fortran, committed] Another fallout from clobbering INTENT(OUT) variables
Hello world, committed as obvious after regression-testing. Instead of spending a lot of work trying to reducing the test case, I used all of it (retainging the copyright notice). Regards Thomas 2018-09-23 Thomas Koenig PR fortran/87397 * gfc_conv_procedure_call: Do not add clobber on INTENT(OUT) for variables having the dimension attribute. 2018-09-23 Thomas Koenig PR fortran/87397 * gfortran.dg/intent_out_11.f90: New test. Index: trans-expr.c === --- trans-expr.c (Revision 264512) +++ trans-expr.c (Arbeitskopie) @@ -5280,6 +5280,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * bool add_clobber; add_clobber = fsym && fsym->attr.intent == INTENT_OUT && !fsym->attr.allocatable && !fsym->attr.pointer + && !e->symtree->n.sym->attr.dimension && !e->symtree->n.sym->attr.pointer /* See PR 41453. */ && !e->symtree->n.sym->attr.dummy ! { dg-do compile } ! { dg-options "-cpp -fcoarray=lib" } ! PR 87397 - this used to generate an ICE. ! Coarray Distributed Transpose Test ! ! Copyright (c) 2012-2014, Sourcery, Inc. ! All rights reserved. ! ! Redistribution and use in source and binary forms, with or without ! modification, are permitted provided that the following conditions are met: ! * Redistributions of source code must retain the above copyright ! notice, this list of conditions and the following disclaimer. ! * Redistributions in binary form must reproduce the above copyright ! notice, this list of conditions and the following disclaimer in the ! documentation and/or other materials provided with the distribution. ! * Neither the name of the Sourcery, Inc., nor the ! names of its contributors may be used to endorse or promote products ! derived from this software without specific prior written permission. ! ! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ! ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ! DISCLAIMED. IN NO EVENT SHALL SOURCERY, INC., BE LIABLE FOR ANY ! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ! (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ! LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ! ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ! (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ! ! Robodoc header: !m* dist_transpose/run_size ! NAME ! run_size ! SYNOPSIS ! Encapsulate problem state, wall-clock timer interface, integer broadcasts, and a data copy. !** !== test transposes with integer x,y,z values === module run_size use iso_fortran_env implicit none integer(int64), codimension[*] :: nx, ny, nz integer(int64), codimension[*] :: my, mx, first_y, last_y, first_x, last_x integer(int64) :: my_node, num_nodes real(real64), codimension[*] :: tran_time contains !s* run_size/broadcast_int ! NAME ! broadcast_int ! SYNOPSIS ! Broadcast a scalar coarray integer from image 1 to all other images. !** subroutine broadcast_int( variable ) integer(int64), codimension[*] :: variable integer(int64) :: i if( my_node == 1 ) then do i = 2, num_nodes;variable[i] = variable; end do end if end subroutine broadcast_int subroutine copy3( A,B, n1, sA1, sB1, n2, sA2, sB2, n3, sA3, sB3 ) implicit none complex, intent(in) :: A(0:*) complex, intent(out) :: B(0:*) integer(int64), intent(in) :: n1, sA1, sB1 integer(int64), intent(in) :: n2, sA2, sB2 integer(int64), intent(in) :: n3, sA3, sB3 integer(int64) i,j,k do k=0,n3-1 do j=0,n2-1 do i=0,n1-1 B(i*sB1+j*sB2+k*sB3) = A(i*sA1+j*sA2+k*sA3) end do end do end do end subroutine copy3 end module run_size !e* dist_transpose/coarray_distributed_transpose ! NAME ! coarray_distributed_transpose ! SYNOPSIS ! This program tests the transpose routines used in Fourier-spectral simulations of homogeneous turbulence. ! The data is presented to the physics routines as groups of y-z or x-z planes distributed among the images. ! The (out-of-place) transpose routines do the x <--> y transposes required and consist of transposes within ! data blocks (intra-image) and a transpose of the distribution of these blocks among the images (inter-image). ! ! Two methods are tested here: ! RECEIVE: receive block from other image and transpose it ! SEND:transpose block and send it to other image ! ! This code is the coarray analog of mpi_distributed_transpose. !** program coarray_distributed_transpose !(***