Re: [RFC] gfortran's coarray (library version): configure/build and the testsuite

2011-04-09 Thread Ralf Wildenhues
Hello,

* Jorge D'ELIA wrote on Wed, Apr 06, 2011 at 01:24:58AM CEST:
> Here there are few comments from my college Lisandro Dalcin,
> an external developer of PETSc, e.g. see

> - Mensaje original -
> > The current scheme is that the user somehow compiles 
> > the communication library (libcaf) [2] and then builds 
> > and links doing something like:
> >
> > mpif90 -fcoarray=lib fortran.f90 -lcaf_mpi
> >
> > or alternatively
> >
> > gfortran -fcoarray=lib fortran.f90 -lcaf_mpi
> > -I/usr/lib64/mpi/gcc/openmpi/include
> > -L/usr/lib64/mpi/gcc/openmpi/lib64
> > -lmpi
> >
> > with some -I, -L -l are added. 
> > (Cf. "mpif90 -show" of some MPI implementations.) 
> >
> > The resulting program is then run using, e.g.,
> >
> > mpiexec -n 3 ./a.out
> >
> > Alternatively, it could be just "-lcaf_single" 
> > which is run like normal ("./a.out").

I think one of the most important things is that you allow to override
both the running of mpif90 and the mpiexec commands, so as to allow
batch environments (qsub, llrun).  Although, parsing of output might
need to be more complex in that case, too.  But if only to allow for
different mpiexec.* incarnations this would be good.

> > (In any case, only static libraries should be created; 
> > the libraries could then be installed 
> > in $PREFIX/$lib/gcc/$target/$version/, where
> > already libgcc.a etc. are located.)
> 
> COMMENT: well, using shared libraries would certainly help 
> users to switch the underlying MPI implementation at runtime. 
> This is an feature should be considered.

The MPI implementations I know all have pairwise incompatible ABIs,
prohibiting any kind of switching at run time.  If anything, GCC
might consider making it easy to build and install in parallel the
library for multiple MPI implementations.

Cheers,
Ralf


Re: Parameter not passed in call expr

2011-04-09 Thread Dodji Seketeli
Hello Ludovic,

ludovic.cour...@inria.fr (Ludovic Courtès) a écrit:

> The attached plug-in builds a function like this:
>
>   my_function (void * parm.0)
>   {
> __builtin_puts (parm.0);
>   }
>
> However, the generated assembly clears the first-argument register
> (%edi) before calling ‘puts’, instead of actually passing the parameter:
>
>   my_function:
>   .LFB0:
>   .file 1 "tt.c"
>   .loc 1 1 0
>   .cfi_startproc
>   .loc 1 1 0
>   xorl%edi, %edi  ;; %edi shouldn’t be cleared
>   jmp puts
>   .cfi_endproc
>
> Any idea what I’m doing wrong?

[...]

> static void
> define_function (void *gcc_data, void *user_data)
> {
>   tree decl, void_ptr;
>   location_t loc = input_location;
>
>   void_ptr = build_pointer_type (void_type_node);
>   decl = build_decl (loc, FUNCTION_DECL, get_identifier ("my_function"),
>build_function_type_list (void_type_node,
>  void_ptr, NULL_TREE));
>
>   tree parm;
>   parm = build_decl (loc, PARM_DECL,
>create_tmp_var_name ("parm"),
>void_ptr);


It looks like a:

DECL_ARG_TYPE (parm) = void_ptr;

might be helpful here.

>   DECL_CONTEXT (parm) = decl;
>   TREE_USED (parm) = true;
>   DECL_ARGUMENTS (decl) = parm;

[...]

-- 
Dodji


Re: Confirming a bug in new bugzilla?

2011-04-09 Thread Gerald Pfeifer
On Sat, 25 Sep 2010, Manuel López-Ibáñez wrote:
> All the status have well-defined meanings:
> 
> http://gcc.gnu.org/bugs/management.html
> 
> Unfortunately, there is some duplication:
> 
> http://gcc.gnu.org/bugzilla/page.cgi?id=fields.html

Quite some duplication, in fact.  By virtue of the patch below I am 
consolidating a significant portion thereof, leaving the instance
provided by Bugzilla (which is also used for help links provided by
the Bugzilla user interface) in place and shortening our local page.


Two concrete items remain open:

A. Status WAITING and SUSPENDED are not yet described in the Bugzilla 
description of the fields even though our Bugzilla instances provides 
them.

They should be moved there, and I'll be happy to take pointers on how
to best update this (in a way that the next Bugzilla version update does
not kill those changes).


B. Severity and Priority need to be consolidated, both in terms of
documentation and since, so far, we had not described Trivial and 
Blocker in GCC.  Alas, they are being used.  Fun, fun, fun.  

I guess the best approach is to slightly tweak the text we have in
Bugzilla, and similar to the patch below the remove it from the 
bugs/management.html page.


Frédéric, do you have any advice?

Gerald


Index: bugs/management.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/bugs/management.html,v
retrieving revision 1.28
diff -u -r1.28 management.html
--- bugs/management.html31 Dec 2010 14:49:31 -  1.28
+++ bugs/management.html9 Apr 2011 19:28:50 -
@@ -55,29 +55,12 @@
 Bugzilla offers a number of different fields.  From a maintainer's
 perspective, these are the relevant ones and what their values mean:
 
-
-
-
-Status
-Resolution
-
-
-
-The status field indicates the general health of a bug. Only
-certain status transitions are allowed.
-The resolution field indicates what happened to this bug.
-
-
-
+The status and resolution fields define and track the life cycle of a
+bug.  In addition to their http://gcc.gnu.org/bugzilla/page.cgi?id=fields.html";>regular
+descriptions, we also use two adition status values:
 
 
-UNCONFIRMED
-The PR has been filed and the responsible person(s) notified.
-
-NEW
-A maintainer has verified that this is indeed a bug in GCC. Every
-once in a while, old reports will need to be rechecked, to find out
-whether the bug still exists.
 
 WAITING
 The submitter was asked for further information, or asked to try
@@ -91,60 +74,8 @@
 sought. If the problem cannot be solved at all, it should be closed
 rather than suspended.
 
-ASSIGNED
-This bug is not yet resolved, but is assigned to the proper
-person. From here bugs can be given to another person and become
-NEW, or resolved and become RESOLVED.
- 
-REOPENED
-This bug was once resolved, but the resolution was deemed
-incorrect.  For example, a WORKSFORME bug is
-REOPENED when more information shows up and the bug is now
-reproducible.  From here bugs are either marked ASSIGNED
-or RESOLVED.
-
-
-
-
-No resolution yet. All bugs which are in one of these "open" states
-have the resolution set to blank. All other bugs
-will be marked with one of the following resolutions.
-
-
-
-
-
-RESOLVED
- A resolution has been found for this bug. The bug is either closed
-for good, or can be re-opened and change to REOPENED.
-
 
-
-
-
-FIXED
- A fix for this bug is checked into the tree and tested.
-
-INVALID
- The problem described is not a bug. 
 
-WONTFIX
- The problem described is a bug which will never be fixed.
-
-DUPLICATE
- The problem is a duplicate of an existing bug. Marking a bug
-duplicate requires the bug# of the duplicating bug and will at
-least put that bug number in the description field.
- 
-WORKSFORME
- All attempts at reproducing this bug were futile, reading the
-code produces no clues as to why this behavior would occur. If
-more information appears later, please re-assign the bug, for
-now, file it.
-
-
-
-
 
 The following two fields describe how serious a bug is from a user's
 perspective (severity) and which priority we assign to it in fixing it:

gcc-4.7-20110409 is now available

2011-04-09 Thread gccadmin
Snapshot gcc-4.7-20110409 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.7-20110409/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 4.7 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/trunk revision 172231

You'll find:

 gcc-4.7-20110409.tar.bz2 Complete GCC (includes all of below)

  MD5=df0d1085bcc4b367ba6d944006b7c4fb
  SHA1=4ba3cbb537155ca66410da2cf7f26205aadf7cd9

 gcc-core-4.7-20110409.tar.bz2C front end and core compiler

  MD5=a679050331cd3525811efe9ebd7c1532
  SHA1=bda1f803b0cd8ea10a0d4a66844e5202b093844b

 gcc-ada-4.7-20110409.tar.bz2 Ada front end and runtime

  MD5=cf55cdefd7f83095b3830893e0768106
  SHA1=f3368697e1c1030c35c1d66940b3a0a2bf94363a

 gcc-fortran-4.7-20110409.tar.bz2 Fortran front end and runtime

  MD5=24d71ae3155b6ce4721d95e559c0e2de
  SHA1=795d6fc9ee9d4eee7f132cacaf6e06ca010eabb9

 gcc-g++-4.7-20110409.tar.bz2 C++ front end and runtime

  MD5=b270a6bcd94db43aa254c2e3638a4ec7
  SHA1=a6be583bbd2c9ab57b5872da4fd3e40bc4f9d78d

 gcc-go-4.7-20110409.tar.bz2  Go front end and runtime

  MD5=11929d55d80830f016bc913401752c14
  SHA1=ce156d6ea528d624e03ccc7a380b14f036e534f1

 gcc-java-4.7-20110409.tar.bz2Java front end and runtime

  MD5=29bcb0fe2a8df960b5e3910fa8319c25
  SHA1=ccffbeb8f4cc2be821558cc53ecfe9205ffb2852

 gcc-objc-4.7-20110409.tar.bz2Objective-C front end and runtime

  MD5=b77af4dda5cc30999b6c754a87e3b8a1
  SHA1=9915f6c40e585bce1b7189864627317159214f9f

 gcc-testsuite-4.7-20110409.tar.bz2   The GCC testsuite

  MD5=3eec971c84481f2486c0d48083870d59
  SHA1=eb1ab6100f54fc963a6a92ba676a9ffe91b5ccfc

Diffs from 4.7-20110402 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-4.7
link is updated and a message is sent to the gcc list.  Please do not use
a snapshot before it has been announced that way.


Confusing error messages when with linking with LTO?

2011-04-09 Thread Benjamin Redelings I

Hi,

I just tried compiling with LTO for the first time.  I can't figure 
out what to try based on the error message below.  Is there a HTML page 
I should be looking at?


It seems that this did not work:

g++-4.6  -isystem ../../../master/boost/include -ffast-math -DNDEBUG 
-DNDEBUG_DP -funroll-loops -fweb -flto -fuse-linker-plugin 
-march=native  -pipe -O3  -isystem /usr/lib/openmpi/include -isystem 
/usr/lib/openmpi/include/openmpi -pthread -pedantic -pthread 
-I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include 
-I/usr/include/pixman-1 -I/usr/include/freetype2 
-I/usr/include/libpng12   -Wall -Wextra -Wno-sign-compare 
-Woverloaded-virtual -Wstrict-aliasing   -o alignment-gild 
alignment-gild.o alignment.o alphabet.o sequence.o util.o rng.o tree.o 
sequencetree.o optimize.o findroot.o setup.o imodel.o probability.o 
sequence-format.o model.o distance-methods.o alignment-random.o 
alignment-util.o randomtree.o tree-util.o inverse.o io.o  
../boost/lib/filesystem/libboost_filesystem.a 
../boost/lib/program_options/libboost_program_options.a -lgsl -lgslcblas 
-lm
/usr/bin/ld.gold: error: /tmp/cc4IJUrh.ltrans12.ltrans.o: multiple 
definition of '_ZTV18RootedSequenceTree.local.4048'

/usr/bin/ld.gold: /tmp/cc4IJUrh.ltrans7.ltrans.o: previous definition here
/usr/bin/ld.gold: error: /tmp/cc4IJUrh.ltrans12.ltrans.o: multiple 
definition of '_ZTT18RootedSequenceTree.local.4049'

/usr/bin/ld.gold: /tmp/cc4IJUrh.ltrans7.ltrans.o: previous definition here
collect2: ld returned 1 exit status

So, it looks like the virtual table for class RootedSequenceTree is 
defined in multiple places.  But the file name 
cc4IJUrh.ltrans12.ltrans.o doesn't clearly correspond to any input file 
name.  Is there any way for me to find out which *.o files have 
definitions for this symbol, and why they are problematic only with LTO?


-BenRI

P.S. Apparently this did work:

g++-4.6  -isystem ../../../master/boost/include -ffast-math -DNDEBUG 
-DNDEBUG_DP -funroll-loops -fweb -flto -fuse-linker-plugin 
-march=native  -pipe -O3  -isystem /usr/lib/openmpi/include -isystem 
/usr/lib/openmpi/include/openmpi -pthread -pedantic -pthread 
-I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include 
-I/usr/include/pixman-1 -I/usr/include/freetype2 
-I/usr/include/libpng12   -Wall -Wextra -Wno-sign-compare 
-Woverloaded-virtual -Wstrict-aliasing   -o bali-phy sequence.o tree.o 
alignment.o substitution.o moves.o rng.o exponential.o eigenvalue.o 
parameters.o likelihood.o mcmc.o choose.o sequencetree.o 
sample-branch-lengths.o util.o randomtree.o alphabet.o smodel.o 
bali-phy.o hmm.o dp-engine.o dp-array.o dp-matrix.o 3way.o 2way.o 
sample-alignment.o sample-tri.o sample-node.o imodel.o 5way.o 
sample-topology-NNI.o setup.o rates.o matcache.o sample-two-nodes.o 
sequence-format.o util-random.o alignment-random.o setup-smodel.o 
sample-topology-SPR.o alignment-sums.o alignment-util.o probability.o 
model.o alignment-constraint.o substitution-cache.o substitution-star.o 
monitor.o substitution-index.o tree-util.o myexception.o pow2.o 
partition.o proposals.o n_indels.o distribution.o parsimony.o version.o 
slice-sampling.o timer_stack.o setup-mcmc.o io.o logger.o AIS.o  
../boost/lib/mpi/libboost_mpi.a 
../boost/lib/serialization/libboost_serialization.a -pthread 
-L/usr/lib/openmpi/lib -lmpi_cxx -lmpi -lopen-rte -lopen-pal -ldl 
-Wl,--export-dynamic -lnsl -lutil -lm -ldl  
../boost/lib/filesystem/libboost_filesystem.a 
../boost/lib/program_options/libboost_program_options.a -lgsl -lgslcblas -lm


If I don't use LTO (that is, if I remove "-flto -fuse-linker-plugin") 
then everything works.


Re: Confirming a bug in new bugzilla?

2011-04-09 Thread Joseph S. Myers
On Sat, 9 Apr 2011, Gerald Pfeifer wrote:

> -NEW
> -A maintainer has verified that this is indeed a bug in GCC. Every
> -once in a while, old reports will need to be rechecked, to find out
> -whether the bug still exists.

I think this text is superior for GCC to that on the generic page and so 
we should replace the text on the generic page by this GCC-specific text.

> -RESOLVED
> - A resolution has been found for this bug. The bug is either closed
> -for good, or can be re-opened and change to REOPENED.

Likewise.  We don't use VERIFIED and CLOSED in GCC, proper text should 
reflect the existence of only one closed state with a genuine meaning and 
not mention the others (ideally they'd be completely hidden).

-- 
Joseph S. Myers
jos...@codesourcery.com