Re: Results for 2.16.91 20051124 testsuite on sparc-unknown-linux-gnu

2005-11-24 Thread Christian Joensson
On 11/24/05, Dharmesh Vyas <[EMAIL PROTECTED]> wrote:
> Hello all,
>
> I have been seeing these kinds of results shown over here. I have just
> started using binutils. I have created a parser in Java which analyses
> these logs and generates some results and shows no. of test cases
> passed/executed and failed. If needed i can submit it on this forum.
> Let me know your views on the same.
>
> Thanks
> Dharmesh.
>
> On 11/24/05, Christian Joensson <[EMAIL PROTECTED]> wrote:
> > Aurora SPARC Linux release 2.0b2 (Kashmir FC3) UltraSparc IIi (Sabre) sun4u:
> >
> > binutils-2.15.92.0.2-5.sparc
> > bison-1.875c-2.sparc
> > dejagnu-1.4.4-2.noarch
> > expect-5.42.1-1.sparc
> > gcc-3.4.2-6.fc3.sparc
> > gcc4-4.0.0-0.8sparc.sparc
> > glibc-2.3.3-99.sparcv9
> > glibc-devel-2.3.3-99.sparc
> > glibc-headers-2.3.3-99.sparc
> > glibc-kernheaders-2.6-20sparc.sparc
> > gmp-4.1.4-3sparc.sparc
> > gmp-devel-4.1.4-3sparc.sparc
> > kernel-2.6.13-1.1603sp8.sparc64
> > package kernel-devel is not installed
> > package kernel-smp is not installed
> > libgcc-3.4.2-6.fc3.sparc
> > libstdc++-3.4.2-6.fc3.sparc
> > libstdc++-devel-3.4.2-6.fc3.sparc
> > make-3.80-5.sparc
> > nptl-devel-2.3.3-99.sparcv9
> > tcl-8.4.7-2.sparc
> >
> > LAST_UPDATED: Thu Nov 24 07:18:05 UTC 2005
> >
> > Native configuration is sparc-unknown-linux-gnu
> >
> > === binutils tests ===
> >
> >
> > Running target unix
> >
> > === binutils Summary ===
> >
> > # of expected passes35
> > === gas tests ===
> >
> >
> > Running target unix
> >
> > === gas Summary ===
> >
> > # of expected passes117
> > # of expected failures  1
> > === ld tests ===
> >
> >
> > Running target unix
> >
> > === ld Summary ===
> >
> > # of expected passes263
> > # of expected failures  5
> >
> > version: 2.16.91 20051124
> > Platform: sparc-unknown-linux-gnu
> > configure flags: sparc-linux --enable-__cxa_atexit --enable-shared
> > --enable-64-bit-bfd
> >
>
>
> --
> Trials keep you Strong,
> Sorrow keeps you Human,
> Failure keeps you Humble,
> Success keeps you Glowing...
> But only God keeps you going.
>
> "Walking with a friend in dark is better than walking alone in the Light"
> Dharam.
>

You may want to make this proposition to the GCC community also.

--
Cheers,

/ChJ


Re: Default arguments and FUNCTION_TYPEs

2005-11-24 Thread Gabriel Dos Reis
Nathan Sidwell <[EMAIL PROTECTED]> writes:

| Gabriel Dos Reis wrote:
| 
| > Assuming the extension was gone, do you see a reason we not move the
| > default arguments to FUNCTION_DECLs and have FUNCTION_TYPEs use
| > TREE_VEC instead of TREE_LIST to hold the parameter-type list?
| 
| you could probably use a VEC(tree), which I think would be even better :)

Thanks!

-- Gaby


problems bootstrapping gcc-4.0-20051117 on i386-pc-solaris2.10

2005-11-24 Thread Peter Zijlstra
Hi,

I'm having a lot of problems bootstrapping this compiler on said target.
What I did so far:

from the build dir (which I located in the extracted source dir)
../configure --srcdir=.. --enable-languages="c c++" --with-gnu-as
--with-as=/usr/sfw/bin/gas --without-gnu-ld --with-ld=/usr/ccs/bin/ld

however this fails to select '/usr/sfw/bin/gas' as the assembler; per
configure output is says:

...
checking for i386-pc-solaris2.10-as... no
checking for as... as
...


So I set the environment variable 'AS' to point to gas:
export AS='/usr/sfw/bin/gas'; removed the build dir and started over.
This gave:

...
checking for i386-pc-solaris2.10-as... /usr/sfw/bin/gas
...

after which I continued with: make -j5 bootstrap
At that point it starts building, but fails with an assembler error:

/usr/local/src/gcc-4.0-20051117/gcc/config/i386/gmon-sol2.c:406: warning: 
control reaches end of non-void function
/usr/local/src/gcc-4.0-20051117/gcc/config/i386/gmon-sol2.c: At top level:
/usr/local/src/gcc-4.0-20051117/gcc/config/i386/gmon-sol2.c:58: warning: 
'sccsid' defined but not used
Fixing headers into /usr/local/src/gcc-4.0-20051117/build/gcc/include for 
i386-pc-solaris2.10 target
Assembler:
"", line 1 : Illegal flag (-)
make[2]: *** [gmon.o] Error 1
make[2]: *** Waiting for unfinished jobs


using truss I find that it is actually using /usr/ccs/bin/as ?!?
luckyily it stats a few paths before happening on /usr/ccs/bin/as, so
what I did is to symlink /usr/sfw/bin/gas to one of the other paths (ln
-s /usr/sfw/bin/gas /usr/local/i386-pc-solaris2.10/bin/as) and restart
all over again.

This get me further along, however not quite there. Now it fails to
configure libstd++ with the following error:

checking for exception model to use... configure: error: unable to
detect exception model
make[1]: *** [configure-target-libstdc++-v3] Error 1
make[1]: Leaving directory `/usr/local/src/gcc-4.0-20051117/build'
make: *** [bootstrap] Error 2


I'm sure I'm doing something horribly wrong here, can somebody point me
to the way of a working compiler?

Kind regards,

Peter Zijlstra



Re: Default arguments and FUNCTION_TYPEs

2005-11-24 Thread Giovanni Bajo
Nathan Sidwell <[EMAIL PROTECTED]> wrote:

>>>  In the C++ front end, default arguments are recorded in
>>> FUNCTION_TYPEs intead of being part of the FUNCTION_DECLs.  What are
>>> the reasons for that?
>>
>>
>> There used to be an extension that allowed default arguments on
>> function pointer types.  We agreed to kill it, although I don't know
>> if it was actually removed.  If that's been done, there's no longer
>> any reason.
>
> I took it out the back and shot it.
>
> The obvious place is on the DECL_INITIAL of the PARM_DECLs, but I
> don't think they exist until the function is defined.


I heard once that there was some long-term project of storing function
declarations (without corresponding definitions) in a more memory-efficient
memory representation. Moving default parameters within PARM_DECL seems a
little backward in this respect. And if your memory is right, requiring to
build PARM_DECLs just to store default arguments would be even worse.

I understand this has to be done in a separate pass: I was just bringing up the
issue so that, if possibile, we could find some place which does not conflict
with that project.

Giovanni Bajo



Re: Default arguments and FUNCTION_TYPEs

2005-11-24 Thread Gabriel Dos Reis
"Giovanni Bajo" <[EMAIL PROTECTED]> writes:

| Nathan Sidwell <[EMAIL PROTECTED]> wrote:
| 
| >>>  In the C++ front end, default arguments are recorded in
| >>> FUNCTION_TYPEs intead of being part of the FUNCTION_DECLs.  What are
| >>> the reasons for that?
| >>
| >>
| >> There used to be an extension that allowed default arguments on
| >> function pointer types.  We agreed to kill it, although I don't know
| >> if it was actually removed.  If that's been done, there's no longer
| >> any reason.
| >
| > I took it out the back and shot it.
| >
| > The obvious place is on the DECL_INITIAL of the PARM_DECLs, but I
| > don't think they exist until the function is defined.
| 
| 
| I heard once that there was some long-term project of storing function
| declarations (without corresponding definitions) in a more memory-efficient
| memory representation. Moving default parameters within PARM_DECL seems a
| little backward in this respect. And if your memory is right, requiring to
| build PARM_DECLs just to store default arguments would be even worse.

I don't see why, it is backward -- we still need to build the
PARM_DECLs default arguments or not.  Anyway, I'm in the middle of
coding that suggestion, so I would appreciate a better concrete
representation. 

-- Gaby


Re: Default arguments and FUNCTION_TYPEs

2005-11-24 Thread Gabriel Dos Reis
Gabriel Dos Reis <[EMAIL PROTECTED]> writes:


[...]

| | > The obvious place is on the DECL_INITIAL of the PARM_DECLs, but I
| | > don't think they exist until the function is defined.
| | 
| | 
| | I heard once that there was some long-term project of storing function
| | declarations (without corresponding definitions) in a more memory-efficient
| | memory representation. Moving default parameters within PARM_DECL seems a
| | little backward in this respect. And if your memory is right, requiring to
| | build PARM_DECLs just to store default arguments would be even worse.
| 
| I don't see why, it is backward -- we still need to build the
| PARM_DECLs default arguments or not.

Consider PR c++/17395.  My guess is that is partly because we do not
build the PARM_DECLs (and their associated scope) early enough.

-- Gaby


Re: Creating a partial mirror of the repository with SVK

2005-11-24 Thread Richard Earnshaw
On Wed, 2005-11-23 at 21:13, Ludovic Brenta wrote:
> I've read the wiki page that explains how to mirror GCC's repository
> using SVK, and I would like to pick up just the parts I need so I can
> keep the size of the mirror below 4 Gb due to limited disk space.
> 
> Specifically, I need just a few branches: gcc_3_4_branch,
> gcc_4_0_branch, gcc_4_1_branch, and trunk.  Also I only want to build
> with --enable-languages=c,c++,ada.  In particular I'd like not to
> mirror java, gfortran, objc, or treelang.
> 
> Is this possible?  How?
> 

I don't think so.  

AFAICT you can mirror only subtrees of the repository.  Thus you can
mirror trunk, or a single branch without problems, but you can't mirror
a subset of the branches (or all the branches and not the tags).

You might be able to mirror each branch independently, but that means
you won't get any benefit of the common code between branches/trunk. 
Effectively you would have N independent mirrors of subsets of the
repository.  If the number of branches is small that might still be
better than mirroring the entire repository, but you probably loose the
ability to merge across the mirrors.

R.


Re: overcoming info build failures

2005-11-24 Thread Uros Bizjak
Hello!

> Mark Mitchell's @file documentation change adds a @set directive to
> gcc-vers.texi in the build directory, but that file only depends on
> DEV-PHASE and BASE-VER, so it will never be correctly rebuilt using
> the new make rule.  Just deleting it will remedy the problem.

Another problem is in the fact that value references in @include commands are
expanded only from texinfo version 4.4 and newer. This means, that version 4.4
or higher of texinfo is _required_ to build the documentation.

Interested people could check texinfo's ChangeLog.46 for the changeset:

2003-01-12<[EMAIL PROTECTED]>

...

* makeinfo/cmds.c (handle_include): call text_expansion on the
filename, so @value constructs are expanded.

* doc/texinfo.txi (verbatiminclude, Using Include Files): mention
@value expansion.

...

Using texinfo 4.2, bootstrap fails with:

if [ xinfo = xinfo ]; then \
makeinfo --split-size=500 --split-size=500 --no-split -I . -I
../../gcc-svn/trunk/gcc/doc \
-I ../../gcc-svn/trunk/gcc/doc/include -o doc/gcc.info
../../gcc-svn/trunk/gcc/doc/gcc.texi; \
fi
../../gcc-svn/trunk/gcc/doc/invoke.texi:1057: @include
[EMAIL PROTECTED]/../libiberty/at-file.texi': No such file or directory.
makeinfo: Removing output file `doc/gcc.info' due to errors; use --force to
preserve.
gmake[2]: *** [doc/gcc.info] Error 2

Attached (untested) diff should update the required version of texinfo.

Uros. 


build.diff
Description: Binary data


should _GNU_SOURCE be used in libiberty if glibc is present?

2005-11-24 Thread Rafael Ávila de Espíndola
I noticed that in the config.h generated for libiberty has HAVE_DECL_ASPRINTF  
defined as 0. This hapens because _GNU_SOURCE is not used when running the 
test programs.

Coping the test that enables _GNU_SOURCE from gcc/configure.ac to 
libiberty/configure.ac results in HAVE_DECL_ASPRINTF  being defined as 1. I 
am not sure where in libiberty/configure.ac should the test be added (if it 
should). Is the attached patch correct? If so, I will submit a formal patch 
to gcc-patches.

I am currently bootstraping the trunk with the patch applied.

Thanks,
Rafael
Index: libiberty/configure.ac
===
--- libiberty/configure.ac	(revision 107446)
+++ libiberty/configure.ac	(working copy)
@@ -227,6 +227,21 @@ AC_SUBST_FILE(host_makefile_frag)
 # It's OK to check for header files.  Although the compiler may not be
 # able to link anything, it had better be able to at least compile
 # something.
+
+AC_MSG_CHECKING(for GNU C library)
+AC_CACHE_VAL(gcc_cv_glibc,
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+  [[#include ]], [[
+#if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
+#error Not a GNU C library system
+#endif]])],
+  [gcc_cv_glibc=yes],
+  [gcc_cv_glibc=no])])
+AC_MSG_RESULT($gcc_cv_glibc)
+if test $gcc_cv_glibc = yes; then
+  AC_DEFINE(_GNU_SOURCE, 1, [Always define this when using the GNU C Library])
+fi
+
 AC_CHECK_HEADERS(sys/file.h sys/param.h limits.h stdlib.h malloc.h string.h unistd.h strings.h sys/time.h time.h sys/resource.h sys/stat.h sys/mman.h fcntl.h alloca.h sys/pstat.h sys/sysmp.h sys/sysinfo.h machine/hal_sysinfo.h sys/table.h sys/sysctl.h sys/systemcfg.h stdint.h stdio_ext.h)
 AC_HEADER_SYS_WAIT
 AC_HEADER_TIME
Index: libiberty/configure
===
--- libiberty/configure	(revision 107446)
+++ libiberty/configure	(working copy)
@@ -3594,6 +3594,71 @@ host_makefile_frag=${frag}
 # able to link anything, it had better be able to at least compile
 # something.
 
+echo "$as_me:$LINENO: checking for GNU C library" >&5
+echo $ECHO_N "checking for GNU C library... $ECHO_C" >&6
+if test "${gcc_cv_glibc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include 
+int
+main ()
+{
+
+#if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
+#error Not a GNU C library system
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gcc_cv_glibc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+gcc_cv_glibc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+echo "$as_me:$LINENO: result: $gcc_cv_glibc" >&5
+echo "${ECHO_T}$gcc_cv_glibc" >&6
+if test $gcc_cv_glibc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define _GNU_SOURCE 1
+_ACEOF
+
+fi
+
+
 
 
 
@@ -6424,18 +6489,24 @@ else
   ac_cv_func_fork_works=cross
 else
   cat >conftest.$ac_ext <<_ACEOF
-/* By Ruediger Kuhlmann. */
-  #include 
-  #if HAVE_UNISTD_H
-  # include 
-  #endif
-  /* Some systems only have a dummy stub for fork() */
-  int main ()
-  {
-	if (fork() < 0)
-	  exit (1);
-	exit (0);
-  }
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+	  /* By Ruediger Kuhlmann. */
+	  if (fork() < 0)
+	exit (1);
+	  exit (0);
+
+  ;
+  return 0;
+}
 _ACEOF
 rm -f conftest$ac_exeext
 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5


pgpNR8WIn5qoA.pgp
Description: PGP signature


Re: overcoming info build failures

2005-11-24 Thread Christian Joensson
On 11/24/05, Uros Bizjak <[EMAIL PROTECTED]> wrote:
> Hello!
>
> > Mark Mitchell's @file documentation change adds a @set directive to
> > gcc-vers.texi in the build directory, but that file only depends on
> > DEV-PHASE and BASE-VER, so it will never be correctly rebuilt using
> > the new make rule.  Just deleting it will remedy the problem.
>
> Another problem is in the fact that value references in @include commands are
> expanded only from texinfo version 4.4 and newer. This means, that version 4.4
> or higher of texinfo is _required_ to build the documentation.
>
> Interested people could check texinfo's ChangeLog.46 for the changeset:
>
> 2003-01-12<[EMAIL PROTECTED]>
>
>...
>
>* makeinfo/cmds.c (handle_include): call text_expansion on the
>filename, so @value constructs are expanded.
>
>* doc/texinfo.txi (verbatiminclude, Using Include Files): mention
>@value expansion.
>
>...
>
> Using texinfo 4.2, bootstrap fails with:
>
> if [ xinfo = xinfo ]; then \
>makeinfo --split-size=500 --split-size=500 --no-split -I . -I
> ../../gcc-svn/trunk/gcc/doc \
>-I ../../gcc-svn/trunk/gcc/doc/include -o doc/gcc.info
> ../../gcc-svn/trunk/gcc/doc/gcc.texi; \
> fi
> ../../gcc-svn/trunk/gcc/doc/invoke.texi:1057: @include
> [EMAIL PROTECTED]/../libiberty/at-file.texi': No such file or directory.
> makeinfo: Removing output file `doc/gcc.info' due to errors; use --force to
> preserve.
> gmake[2]: *** [doc/gcc.info] Error 2
>
> Attached (untested) diff should update the required version of texinfo.
>

sigh, so this is the cause of my build failures

--
Cheers,

/ChJ


Re: overcoming info build failures

2005-11-24 Thread Joseph S. Myers
On Thu, 24 Nov 2005, Uros Bizjak wrote:

> Attached (untested) diff should update the required version of texinfo.

It also need updating everywhere in install.texi that mentions a required 
Texinfo version.

-- 
Joseph S. Myers   http://www.srcf.ucam.org/~jsm28/gcc/
[EMAIL PROTECTED] (personal mail)
[EMAIL PROTECTED] (CodeSourcery mail)
[EMAIL PROTECTED] (Bugzilla assignments and CCs)


Re: Default arguments and FUNCTION_TYPEs

2005-11-24 Thread Giovanni Bajo
Gabriel Dos Reis <[EMAIL PROTECTED]> wrote:

>  template struct X { };
>
>void fu(int a, X) { } // #1

I gave a look to PR 17395 and you are probably right. This testcase requires
us to build PARM_DECLs even for function declarations. That's really too
bad.

You should though measure memory usage for large C++ testcases when building
PARM_DECLs immediately. If they raise too much, that's a serious regression.
-- 
Giovanni Bajo



mips-irix6.5 and complex.h

2005-11-24 Thread François-Xavier Coudert
Hi,

I am stuck with PR libfortran/22097 because currently, the libgfortran
configury isn't clever enough to get cabsl (among others) right on
mips-irix6.5. config.h has

#define HAVE_CABSF 1
and
/* #undef HAVE_COMPLEX_H */

while the correct definition of cabsl is provided in complex.h. Can
someone who knows mips-irix or has experience with such broken C99
complex implementations give some help? The problem I have is comment
#9 from PR 22097.

Thanks,
FX


Re: should _GNU_SOURCE be used in libiberty if glibc is present?

2005-11-24 Thread Kai Ruottu

Rafael Ávila de Espíndola wrote:
I noticed that in the config.h generated for libiberty has HAVE_DECL_ASPRINTF  
defined as 0. This hapens because _GNU_SOURCE is not used when running the 
test programs.


Another long-staying bug in the libiberty configure system is that it
claims newlib missing 'asprintf()', 'strdup()' and 'vasprintf()' and
therefore tries to produce these although one has used the
'--with-newlib' in the GCC configure !  AFAIK, only those functions
which are missing from the C library, should be built into libiberty.
The result from this has been the GCC build crashing with the clashing
newlib headers prototypes and the function reimplementations in
libiberty. Sometimes I even made diffs for the fixes in 'configure.ac':

*** configure.ac.orig   2004-01-10 04:17:41.0 +0200
--- configure.ac2005-05-02 18:36:18.0 +0300
***
*** 265,280 
# newlib provide and which ones we will be expected to provide.

if test "x${with_newlib}" = "xyes"; then
- AC_LIBOBJ([asprintf])
  AC_LIBOBJ([basename])
  AC_LIBOBJ([insque])
  AC_LIBOBJ([random])
- AC_LIBOBJ([strdup])
- AC_LIBOBJ([vasprintf])

  for f in $funcs; do
case "$f" in
!   asprintf | basename | insque | random | strdup | vasprintf)
  ;;
*)
  	  n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`

--- 265,277 
# newlib provide and which ones we will be expected to provide.

if test "x${with_newlib}" = "xyes"; then
  AC_LIBOBJ([basename])
  AC_LIBOBJ([insque])
  AC_LIBOBJ([random])

  for f in $funcs; do
case "$f" in
!   basename | insque | random)
  ;;
*)
  	  n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`


Re: should _GNU_SOURCE be used in libiberty if glibc is present?

2005-11-24 Thread DJ Delorie

If we do this, then anyone else testing for asprintf needs the same
logic.  If libiberty uses a more naive test, it would provide
substitutes for other modules that are also naive.


Re: Build using --with-gmp and shared libraries

2005-11-24 Thread Paolo Bonzini



This patch makes --with-gmp and --with-mpfr similar to --with-as and
others, where you don't need to have the as program in your PATH if
explicitly specified.


I now understood what you are looking for.

A good solution would be to use the macros AC_LIB_LINKFLAGS and friends, 
which were first written for the AM_GETTEXT macro.  These provide a good 
way to find gmp and friends, and to optionally add -R or -Wl,-rpath 
options to the command line (this is controlled by configure switches 
--enable-rpath and --disable-rpath).


The macro is used like

AC_LIB_LINKFLAGS(gmp)
AC_LIB_LINKFLAGS(mpfr)

and it will set LIBGMP, LTLIBGMP, INCGMP, and similar variables for 
mpfr.  The disadvantage is that the variable names have to be changed 
throughout, and that --with-* option is --with-libgmp and --with-libmpfr.


If you really need to support --with-gmp-dir and --with-mpfr-dir, you 
can set the cache variables


  ac_cv_libgmp_libs
  ac_cv_libgmp_ltlibs (will be equal to the above)
  ac_cv_libgmp_cppflags

the same way you set gmpinc and gmplibs in this snippet:

  gmpinc="$gmpinc -I$with_gmp_dir"
  if test -f "$with_gmp_dir/.libs/libgmp.a"; then
gmplibs="$gmplibs $with_gmp_dir/.libs/libgmp.a"
  elif test -f "$with_gmp_dir/_libs/libgmp.a"; then
gmplibs="$gmplibs $with_gmp_dir/_libs/libgmp.a"
  fi

Sorry for wasting your time for months and not proposing this solution. 
 OTOH I think that stage 1 is a good time to do this.


Paolo



Re: Default arguments and FUNCTION_TYPEs

2005-11-24 Thread Gabriel Dos Reis
"Giovanni Bajo" <[EMAIL PROTECTED]> writes:

| Gabriel Dos Reis <[EMAIL PROTECTED]> wrote:
| 
| >  template struct X { };
| >
| >void fu(int a, X) { } // #1
| 
| I gave a look to PR 17395 and you are probably right. This testcase requires
| us to build PARM_DECLs even for function declarations. That's really too
| bad.

I guess we don't need to implement the language, we can be very fast :-)

| 
| You should though measure memory usage for large C++ testcases when building
| PARM_DECLs immediately. If they raise too much, that's a serious regression.

Once I'm finished, I'll post the patch and I would probably ask you
help in the testing department and suggest better concrete
solution. That PR needs to be fixed. 


-- Gaby


Re: Default arguments and FUNCTION_TYPEs

2005-11-24 Thread Giovanni Bajo
Gabriel Dos Reis <[EMAIL PROTECTED]> wrote:

> Once I'm finished, I'll post the patch and I would probably ask you
> help in the testing department and suggest better concrete
> solution. That PR needs to be fixed.


Fixing a PR introducing a regression is not a proper fix for any bug,
*especially* for a bug which is not a regression itself. Given that it never
worked before, there are no GCC users depending on it. Of course, it'd be
good to fix it, but must be done in the proper way.

I'm glad to help with testing if I have time.
-- 
Giovanni Bajo



Re: Default arguments and FUNCTION_TYPEs

2005-11-24 Thread Gabriel Dos Reis
"Giovanni Bajo" <[EMAIL PROTECTED]> writes:

| Gabriel Dos Reis <[EMAIL PROTECTED]> wrote:
| 
| > Once I'm finished, I'll post the patch and I would probably ask you
| > help in the testing department and suggest better concrete
| > solution. That PR needs to be fixed.
| 
| 
| Fixing a PR introducing a regression is not a proper fix for any bug,
| *especially* for a bug which is not a regression itself.

Thanks for the lecture. 

Not just because this is not a regression does not mean it does not
need fixing.

| Given that it never
| worked before, there are no GCC users depending on it. 

The reporter of the PR is a GCC user who is trying to move working
codes from other compilers to GCC.  

| Of course, it'd be
| good to fix it, but must be done in the proper way.
| 
| I'm glad to help with testing if I have time.

Indeed.  I see. 

-- Gaby


Re: Default arguments and FUNCTION_TYPEs

2005-11-24 Thread Giovanni Bajo
Gabriel Dos Reis <[EMAIL PROTECTED]> wrote:

>> Fixing a PR introducing a regression is not a proper fix for any bug,
>> *especially* for a bug which is not a regression itself.
>
> Thanks for the lecture.
>
> Not just because this is not a regression does not mean it does not
> need fixing.

I just warned you that finding a proper fix might be harder than you had
expected. But I should just shut up and let you waste your time. In fact,
I'm wasting mine with you as always.
-- 
Giovanni Bajo



Re: Default arguments and FUNCTION_TYPEs

2005-11-24 Thread Gabriel Dos Reis
"Giovanni Bajo" <[EMAIL PROTECTED]> writes:

| Gabriel Dos Reis <[EMAIL PROTECTED]> wrote:
| 
| >> Fixing a PR introducing a regression is not a proper fix for any bug,
| >> *especially* for a bug which is not a regression itself.
| >
| > Thanks for the lecture.
| >
| > Not just because this is not a regression does not mean it does not
| > need fixing.
| 
| I just warned you that finding a proper fix might be harder than you had
| expected.

I think I anticipated that.  What I do not quite understand is your
apparant insisting of not fixing the bug (that people did run inito),
inventing reason that no GCC user could have faced it.

| But I should just shut up and let you waste your time. 

you wasted more of my time than I'm wasting on this PR.  Did you
suggest any *concrete* representation, you would have made less noise. 

-- Gaby



Re: should _GNU_SOURCE be used in libiberty if glibc is present?

2005-11-24 Thread Rafael Espíndola
> I am currently bootstraping the trunk with the patch applied.
bootstraped and tested...

> Thanks,
> Rafael


Re: Register Allocation

2005-11-24 Thread Joern RENNECKE

In http://gcc.gnu.org/ml/gcc/2005-11/msg01163.html, Ian Lance Taylor wrote:


Either way, register elimination can cause addresses which were valid
to become invalid, typically because valid offsets from the frame
pointer become invalid offsets from the stack pointer.  So that needs
to be cleaned up somewhere.


This is not just about some requiring some cleanup somewhere.  Register
elimination and stack slot allocation determine the exact addresses that
are used, which in turn determine what reload inheritance is possible for
address reloads that are for stack slots which are close together on the
stack.  Getting this right is essential to avoid performance degradation on
some platforms.  These targets typically use LEGITIMIZE_RELOAD_ADDRESS to
split out-of-range addresses into a normal form with a base address load
and a memory access using this base with a small offset.

On the other hand, the hard register spills appear to offer a new
opportunity: we have talked about shrink-wrapping code in the past, but
have never implemented this in gcc.
I think that register saves/restores can be considered
special cases of hard register spills.  In order to do this efficiently,
there would have to be some interface with the target to exploit insn
sequences that can save/restore multiple registers more efficiently in
bulk, .e.g load/store multiple, or auto-increment use on targets that
are otherwise ACCUMULATE_OUTGOING_ARGS.  On the other hand, these
techniques can also help when we need to spill multiple hard registers
around a tight loop.






gcc-4.0-20051124 is now available

2005-11-24 Thread gccadmin
Snapshot gcc-4.0-20051124 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.0-20051124/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 4.0 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/branches/gcc-4_0-branch 
revision 107471

You'll find:

gcc-4.0-20051124.tar.bz2  Complete GCC (includes all of below)

gcc-core-4.0-20051124.tar.bz2 C front end and core compiler

gcc-ada-4.0-20051124.tar.bz2  Ada front end and runtime

gcc-fortran-4.0-20051124.tar.bz2  Fortran front end and runtime

gcc-g++-4.0-20051124.tar.bz2  C++ front end and runtime

gcc-java-4.0-20051124.tar.bz2 Java front end and runtime

gcc-objc-4.0-20051124.tar.bz2 Objective-C front end and runtime

gcc-testsuite-4.0-20051124.tar.bz2The GCC testsuite

Diffs from 4.0-20051117 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-4.0
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.


Re: svn speed traversing slow filesystems

2005-11-24 Thread Branko Čibej

Kaveh R. Ghazi wrote:

 > On Sat, 2005-11-19 at 10:14 -0500, Kaveh R. Ghazi wrote:
 > > Hi Dan,
 > > 
 > > (BTW, sorry for the reposted messages.)
 > > 
 > > While I was waiting for some svn commands to finish (cleanup,

 > > update) on my solaris2.7 box, which has a slow filesystem, I
 > > happened to run truss -p  out of curiosity to see what was
 > > taking so long.  Turns out that svn does many file operations on
 > > long pathnames.  I recall that gnu find and other gnu utilities that
 > > do directory traversal got jumbo speedups by changing to the
 > > directory and running the file ops on "./filename" without long path
 > > prefixes.
 > > 
 > > Could a future svn version get the same speedup? 
 > 
 > Actually, i just removed the need for most stat calls during update

 > in 1.4.

Thanks Dan, that's great, but for the remaining i/o calls, it really
does matter if you use long/paths/with/lots/of/slashes rather than
chdir and ./filenames instead.  I believe other recursive gnu utils
besides gnufind like "rm -r" or "mkdir -p" etc were modified to use
the chdir mechanism also because the benefit was so great.
  
Yes that's fine, but we can't do this in SVN. We do the real work in 
libraries that are supposed to be thread-safe. The cwd is per-process on 
POSIX systems, as far as I know.


No, please don't say we can do it "just for the command-line client." As 
Dan pointed out, there are better ways of speeding things up.


-- Brane



Re: Thoughts on LLVM and LTO

2005-11-24 Thread Scott Robert Ladd
I've been quietly watching the conversation, largely as an interested 
user as opposed to a GCC developer. One of my concerns lies with:


GENERIC -> GIMPLE -> LLVM -> GIMPLE -> RTL

That design adds two phases (GIMPLE -> LLVM, LLVM -> GIMPLE) here -- 
perhaps simple one, perhaps not. The line is very straight, but adding 
two more segments make me wonder if we're complicating the plumbing.


How will this effect compiler speed?

How will debugging information flow accurately through the process?

And will we be making it even more difficult to isolate problems?

Already, we have people who understand frontends, and others who know 
GIMPLE initimately, and still overs who focus on RTL generation. Is 
adding two additional passes going to further fragment expertise?


I understand Rafael's comment, as quoted here:

> In a first stage nothing will be done with the LLVM representation
> except convert it back to GIMPLE. This will make sure that all
> necessary information (including debug) can pass through the LLVM. The
> conversion will also receive very good testing with this.

Does this mean that the "LLVM pass" will initially invoked only via an 
option, and that a normal compile will continue the current path until 
LLVM is fully tested and accepted?


Just questions; if they are stupid, please be gentle. ;)

--
Scott Robert Ladd <[EMAIL PROTECTED]>
Coyote Gulch Productions
http://www.coyotegulch.com


LEGITIMIZE_RELOAD_ADDRESS vs address_reloaded

2005-11-24 Thread Alan Modra
Hi Ulrich,
  In http://gcc.gnu.org/ml/gcc-patches/2004-07/msg01557.html, you
changed the return value of find_reloads_address to be tristate, in the
process modifying the meaning of a win from LEGITIMIZE_RELOAD_ADDRESS.
Prior to your change, a win meant that LEGITIMIZE_RELOAD_ADDRESS had
guaranteed that the address would match one of the extra memory
constraints if it didn't match some other constraint.  After this
change, a win meant that the address as a whole might need further
reloads.  This has caused me a little trouble, because I can't find a
way of telling reload to leave the address alone.

Perhaps I ought to explain the problem I'm trying to solve.  In pr24997,
we see reload trying to fix an altivec address that looks like

 ((rb+ri)+const)&-16

When this whole expression is put into a register, we get an ICE because
no ppc insn matches a complex expression like this.  I figured I could
help reload a little by stripping off the AND and returning
(rb+const)+ri from LEGITIMIZE_RELOAD_ADDRESS, requesting a reload into a
base reg for (rb+const). (*)  After this had been reloaded, the address
would be rb2+ri, which is a valid indexed address.  This works in so far
as the ICE is cured and GCC generates valid code.  However, we don't use
an indexed address.  Instead, we get an indirect address due to
find_reloads not matching constraints for the insn, and further
reloading rb2+ri into another base reg.

Now, I don't really fault your change to the constraint matching because
it certainly seemed fragile before, and there is no way to distinguish
between alternates.  I don't advocate changing things back the way they
were, because targets may have changed their LEGITIMIZE_RELOAD_ADDRESS 
according to the new semantics.  What I'd like from you or other reload
experts is an indication of the right way to fix this problem.  ;-)

I can see the following options:

a) Before matching constraints in find_reloads, substitute dummy regs
for any reloads that have been identified.  I'm not sure how much work
is involved in doing this, or whether it is even possible.  It sounds
like this would be the best solution technically, as then the output
of LEGITIMIZE_RELOAD_ADDRESS is properly checked.

b) Modify LEGITIMIZE_RELOAD_ADDRESS to return a constraint letter that
the address is guaranteed to match after reloading.  A bit of mechanical
work changing all targets.

c) Modify the ppc 'Z' constraint to match the indexed address reload
generates.  This would rely on the pattern we generate in
LEGITIMIZE_RELOAD_ADDRESS never being generated elsewhere.

d) Hacks like the patch below, that effectively perform the reload
substitution with a dummy reg.  I fear this isn't proper, even though it
seems to work..


(*) This is exactly what code in find_reloads_address does on
encoutering invalid indexed address.  The trouble is that its
transformation isn't valid until the reloads are done, and we check
constraints before doing the substitutions.  :-(

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre

Index: gcc/config/rs6000/rs6000.c
===
--- gcc/config/rs6000/rs6000.c  (revision 107416)
+++ gcc/config/rs6000/rs6000.c  (working copy)
@@ -3354,19 +3360,68 @@ rs6000_legitimize_reload_address (rtx x,
 
   /* Reload an offset address wrapped by an AND that represents the
  masking of the lower bits.  Strip the outer AND and let reload
- convert the offset address into an indirect address.  */
+ convert the offset address into an indirect address.  Do the
+ same for indexed addresses with an offset.  */
   if (TARGET_ALTIVEC
   && ALTIVEC_VECTOR_MODE (mode)
   && GET_CODE (x) == AND
-  && GET_CODE (XEXP (x, 0)) == PLUS
-  && GET_CODE (XEXP (XEXP (x, 0), 0)) == REG
-  && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT
   && GET_CODE (XEXP (x, 1)) == CONST_INT
   && INTVAL (XEXP (x, 1)) == -16)
 {
-  x = XEXP (x, 0);
-  *win = 1;
-  return x;
+  rtx ad = XEXP (x, 0);
+  if (GET_CODE (ad) == PLUS
+ && GET_CODE (XEXP (ad, 1)) == CONST_INT)
+   {
+ if (GET_CODE (XEXP (ad, 0)) == REG)
+   {
+ x = ad;
+ *win = 1;
+ return x;
+   }
+ else if (GET_CODE (XEXP (ad, 0)) == PLUS
+  && GET_CODE (XEXP (XEXP (ad, 0), 0)) == REG
+  && GET_CODE (XEXP (XEXP (ad, 0), 1)) == REG)
+   {
+#if 1
+ rtx rb = XEXP (XEXP (ad, 0), 0);
+ rtx ri = XEXP (XEXP (ad, 0), 1);
+ rtx c = XEXP (ad, 1);
+
+ /* Use an indexed address as in the original instruction,
+but reload rb+c part.  Generate the final form of the
+address here, so that we match Z constraint.  Use r1
+as the base reg.  It will be replaced with the actual
+reload reg later.  */
+ x = gen_rtx_PLUS (GET_MODE (ad),
+