Re: g++ doesn't unroll a loop it should unroll

2006-12-14 Thread Benoît Jacob
Le jeudi 14 décembre 2006 08:58, Steven Bosscher a écrit :
> On 12/14/06, Benoît Jacob <[EMAIL PROTECTED]> wrote:
> > I don't understand why you say that. At the language specification level,
> > templates come with no inherent speed overhead. All of the template stuff
> > is unfolded at compile time, none of it remains visible in the binary, so
> > it shouldn't make the binary slower.
>
> You're confusing theory and practice...

We're getting offtopic here, the example program I sent in my first mail 
didn't have any templates, so the gcc bug we're talking about has nothing to 
do with templates. The same bug would appear in any C or C++ program having 
nested loops and expecting them to get completely unrolled.

Benoit


pgpI1YexNOPbn.pgp
Description: PGP signature


Re: g++ doesn't unroll a loop it should unroll

2006-12-14 Thread Paolo Bonzini



loop anyway... you C++ people tend to overtax compiler with
optimizations. Is it really necessary to do (i == j) * factor
when (i == j) ? factor : 0 is easier for compiler to grok?


Of course I tried it. It's even slower. Doesn't help the compiler unroll the 
loop, and now there's a branch at each iteration.


This is another compiler bug.  Note however, that if I want to use 
oldskool tricks to remove ?:, I would instead do -(i == j) & factor.


The compiler should be able to transform the ?: expression to the faster 
form (and to transform the latter into ?: on architectures where it's 
better) but it does this quite late in the compilation.  It can happen 
that things are screwed up by the time we reach that part of the 
optimization pipeline, and the ?: idiom is not recognized anymore.


We are currently discussing including ?: in the compiler's intermediate 
representation, instead of representing it as an "if" statement; this 
might be a case where it helps.


Paolo


configuration options policy (at toplevel or only inside gcc/)?

2006-12-14 Thread Basile STARYNKEVITCH

Hello,

Most options of GCC (like --enable-werror --with-gmp ...) are configure-able
at its toplevel source directory while others ( --enable-mapped-location
 ) are configure-able with the configure script inside its gcc/ source
subdirectory

Of course, some options are for the whole toplevel.

When adding a new option, should I always add it at the toplevel or not?

Some options (like --enable-mapped-location or --with-gc=zone) seems to be
only usable with the gcc/configure script which seems usually to be run by
the build procedure (ie by the make at build).

Actually, I don't fully understand what might go inside the toplevel. I
believed that once perhaps even gdb or binutils could go there but I might
be wrong...

In other words, should I make all my configurable flag visible by the
toplevel configure and propagated (thru Makefile.tpl) to gcc/ or not?

-- 
Basile STARYNKEVITCH http://starynkevitch.net/Basile/ 
email: basilestarynkevitchnet mobile: +33 6 8501 2359 
8, rue de la Faïencerie, 92340 Bourg La Reine, France
*** opinions {are only mines, sont seulement les miennes} ***


[infrastructure] what about gmp and mpfr on multilibbed builds?

2006-12-14 Thread Christian Joensson

I just built and locally installed gcc's (infrastructure) tarballs of
gmp-4.2.1 and mpfr-2.2.1 to try to build gcc trunk (as my build
system's versions are too old).

But, I am on a UltraSPARC system so I test build gcc multilibbed
enabled to have both 32 and 64 bit capability.

So, my question is this: Do I need to have libgmp and libmpfr
available as both 32 and 64 bit variants?

If so, how would you recommend to build and install gmp and mpfr
"multilibbed" also?

--
Cheers,

/ChJ


Re: [infrastructure] what about gmp and mpfr on multilibbed builds?

2006-12-14 Thread Eric Botcazou
> So, my question is this: Do I need to have libgmp and libmpfr
> available as both 32 and 64 bit variants?

No if you use only one compiler (i.e. the multilibbed 32-bit compiler).

-- 
Eric Botcazou


libjvm.la and problems with libtool relink mode

2006-12-14 Thread Mark Shinwell

I am currently involved in building GCC toolchains by configuring them with
the prefix that is to be used on the target system (somewhere in /opt)
and then installing them in a separate "working installation" directory
(say somewhere in my scratch space).  The installation step into this
"working installation" directory is performed by invoking a command of
the form "make prefix=/path/to/working/dir/install install".

Unfortunately it seems that, when using current mainline and building
for native x86_64, there is an awkward problem involving the building
of libjvm.la.  This libtool file is built from two others: one .lo file
and one .la file.  The difficulty arises at the libtool "install" step
for libjvm.la.  It seems that since the "link" command that constructed
libjvm.la built that library using another .la file (libgcj.la) then
libtool writes a relink command into the libjvm.la file.  Then, when
installing libjvm.la using libtool, it attempts to execute that relink
command.  This however fails because the installation location is not
a subdirectory of the configured prefix -- it is somewhere completely
different.  This piece of libtool code causes the error:

  # Don't allow the user to place us outside of our expected
  # location b/c this prevents finding dependent libraries that
  # are installed to the same prefix.
  # At present, this check doesn't affect windows .dll's that
  # are installed into $libdir/../bin (currently, that works fine)
  # but it's something to keep an eye on.
  if test "$inst_prefix_dir" = "$destdir"; then
$echo "$modename: error: cannot install \`$file' to a directory not 
ending in $libdir" 1>&2

exit 1
  fi

This problem does not arise with various other .la files created during
the build process of gcc (such as libstdc++.la for example) because those
are directly created from a bunch of .lo files; none of them were built
from another .la as libjvm.la is.

The writing of the relink command into libjvm.la comes as a result of
"need_relink=yes" on line 2095 of the ltmain.sh in the toplevel directory
of mainline gcc.  I wonder if this assignment ought to be guarded
by a test involving $hardcode_into_libs, which is currently set to "yes" in
my generated /x86_64-unknown-linux-gnu/libjava/libtool.
Perhaps I should be having $hardcode_into_libs set to "no" in addition to
changing the libtool code so that need_relink is only set to "yes" if
$hardcode_into_libs is set to "yes" also?  The exact behaviour of the
two modes of $hardcode_into_libs isn't clear to me, however, so I'm not
very sure.  With that "solution" I'm also assuming that libtool is doing
the right thing in forcing a relink in this situation (if $hardcode_into_libs
is "yes"); perhaps even that isn't the case.

If anyone could offer any advice as to how to proceed here, I'd be most
grateful.  I've copied this to Alexandre since a colleague suggested he
might know the answer :-)

Mark


Re: libjvm.la and problems with libtool relink mode

2006-12-14 Thread Richard Guenther

On 12/14/06, Mark Shinwell <[EMAIL PROTECTED]> wrote:

I am currently involved in building GCC toolchains by configuring them with
the prefix that is to be used on the target system (somewhere in /opt)
and then installing them in a separate "working installation" directory
(say somewhere in my scratch space).  The installation step into this
"working installation" directory is performed by invoking a command of
the form "make prefix=/path/to/working/dir/install install".


I think you should use DESTDIR instead of prefix here.

Richard.


Re: configuration options policy (at toplevel or only inside gcc/)?

2006-12-14 Thread Daniel Jacobowitz
On Thu, Dec 14, 2006 at 10:19:12AM +0100, Basile STARYNKEVITCH wrote:
> In other words, should I make all my configurable flag visible by the
> toplevel configure and propagated (thru Makefile.tpl) to gcc/ or not?

No, you shouldn't.  Only add them to subdirs that need them.

-- 
Daniel Jacobowitz
CodeSourcery


Re: configuration options policy (at toplevel or only inside gcc/)?

2006-12-14 Thread Basile STARYNKEVITCH
Le Thu, Dec 14, 2006 at 08:56:27AM -0500, Daniel Jacobowitz écrivait/wrote:


Thanks to Daniel for his reply!

> On Thu, Dec 14, 2006 at 10:19:12AM +0100, Basile STARYNKEVITCH wrote:
> > In other words, should I make all my configurable flag visible by the
> > toplevel configure and propagated (thru Makefile.tpl) to gcc/ or not?
 
> No, you shouldn't.  Only add them to subdirs that need them.

This makes life much simpler to me, but then I do not understand how end-
users compiling GCC are expected to configure it. Does this mean that the
instructions on http://gcc.gnu.org/install/configure.html are no more valid
for that case?

What should be the user installation & configuration procedure replacing the 

  # from  http://gcc.gnu.org/install/configure.html
  mkdir objdir
  cd objdir
  srcdir/configure [options] [target]

in that case?

Should it become

   mkdir objdir
   cd objdir
   srcdir/configure [options-to-toplevel] [target]
   cd ../objdir/gcc   # or simply gcc, but in the build tree
   srcdir/gcc/configure [options-to-gcc] [target]


At last I do not understand why the MPFR & GMP stuff which has been
discussed a lot is not already under the above scheme? Why is it cheched at
toplevel and not only in gcc/ ? AFAIK the #include  appears only in
gcc/real.h

BTW, I am working on add stuff (heavy global static analysis) which
should be disablable at configure time and at runtime, and uses several
third parties (GPL or LGPL) libraries


-- 
Basile STARYNKEVITCH http://starynkevitch.net/Basile/ 
email: basilestarynkevitchnet mobile: +33 6 8501 2359 
8, rue de la Faïencerie, 92340 Bourg La Reine, France
*** opinions {are only mines, sont seulement les miennes} ***


Re: configuration options policy (at toplevel or only inside gcc/)?

2006-12-14 Thread Ian Lance Taylor
Basile STARYNKEVITCH <[EMAIL PROTECTED]> writes:

> This makes life much simpler to me, but then I do not understand how end-
> users compiling GCC are expected to configure it. Does this mean that the
> instructions on http://gcc.gnu.org/install/configure.html are no more valid
> for that case?

Note that configure options beginning with --with and --enable are
passed from the top level configure script to the subdirectory
configure scripts.  So the user just uses all the options at the top
level, and the subdirectories will see them.

I agree that new options should only be added at the appropriate
level, but there is one disadvantage: top level configure --help will
not display them.  But then configure --help is kind of useless anyhow
since it has so much boilerplate, so this is not a significant
problem.

> At last I do not understand why the MPFR & GMP stuff which has been
> discussed a lot is not already under the above scheme? Why is it cheched at
> toplevel and not only in gcc/ ? AFAIK the #include  appears only in
> gcc/real.h

It's at the top level because the original implementation envisioned
support for putting MPFR and GMP in the tree, alongside of the
directories gcc, libcpp, etc.  That may still happen.

Ian


Re: configuration options policy (at toplevel or only inside gcc/)?

2006-12-14 Thread Basile STARYNKEVITCH
Le Thu, Dec 14, 2006 at 07:29:19AM -0800, Ian Lance Taylor écrivait/wrote:
> Basile STARYNKEVITCH <[EMAIL PROTECTED]> writes:
> 
> > This makes life much simpler to me, but then I do not understand how end-
> > users compiling GCC are expected to configure it. Does this mean that the
> > instructions on http://gcc.gnu.org/install/configure.html are no more valid
> > for that case?
> 
> Note that configure options beginning with --with and --enable are
> passed from the top level configure script to the subdirectory
> configure scripts.  So the user just uses all the options at the top
> level, and the subdirectories will see them.

I did notice this, but it seems to me (maybe I am wrong) that there is
no generic machinery which passes the --with & --enable of the
top-level configure to the configure in gcc subdirectory. There is
some code in Makefile.tpl for this, but each such option has to be
explicitly & individually processed. 

In other words for adding new configure options to gcc/ subdirectory,
we have to hack the gcc/configure.ac file, the toplevel configure.in
and the toplevel Makefile.tpl and this should be done for every
user-visible options. Otherwise, it is an option which is not visible
to the user. If I hack only gcc/configure.ac, I am adding an option
which the user do not see. Is this correct?


> I agree that new options should only be added at the appropriate
> level, but there is one disadvantage: top level configure --help will
> not display them.  But then configure --help is kind of useless anyhow
> since it has so much boilerplate, so this is not a significant
> problem.

Still, what is the build procedure then? Do we expect users to type
two configure commands?

> 
> > At last I do not understand why the MPFR & GMP stuff which has been
> > discussed a lot is not already under the above scheme? Why is it cheched at
> > toplevel and not only in gcc/ ? AFAIK the #include  appears only in
> > gcc/real.h
> 
> It's at the top level because the original implementation envisioned
> support for putting MPFR and GMP in the tree, alongside of the
> directories gcc, libcpp, etc.  That may still happen.

Thanks for the explanation. But I thought it has been firmly decided
to keep GMP & MPFR outside!

-- 
Basile STARYNKEVITCH http://starynkevitch.net/Basile/ 
email: basilestarynkevitchnet mobile: +33 6 8501 2359 
8, rue de la Faïencerie, 92340 Bourg La Reine, France
*** opinions {are only mines, sont seulement les miennes} ***


Re: configuration options policy (at toplevel or only inside gcc/)?

2006-12-14 Thread Paolo Bonzini



Note that configure options beginning with --with and --enable are
passed from the top level configure script to the subdirectory
configure scripts.  So the user just uses all the options at the top
level, and the subdirectories will see them.


I did notice this, but it seems to me (maybe I am wrong) that there is
no generic machinery which passes the --with & --enable of the
top-level configure to the configure in gcc subdirectory. There is
some code in Makefile.tpl for this, but each such option has to be
explicitly & individually processed. 


No, see how host_configure_args is set in Makefile.in.


In other words for adding new configure options to gcc/ subdirectory,
we have to hack the gcc/configure.ac file, the toplevel configure.in
and the toplevel Makefile.tpl and this should be done for every
user-visible options. Otherwise, it is an option which is not visible
to the user. If I hack only gcc/configure.ac, I am adding an option
which the user do not see. Is this correct?


No, you are adding an option that will not be listed in ./configure 
--help.  So you document that option in install.texi.



I agree that new options should only be added at the appropriate
level, but there is one disadvantage: top level configure --help will
not display them.  But then configure --help is kind of useless anyhow
since it has so much boilerplate, so this is not a significant
problem.


Still, what is the build procedure then? Do we expect users to type
two configure commands?


No.  Options are passed down automatically from the toplevel configure 
to the ones below.  This is true of any configure script, even though 
the gcc/binutils/gdb/cygwin/newlib/... toplevel configure script has 
some extra involutions.



At last I do not understand why the MPFR & GMP stuff which has been
discussed a lot is not already under the above scheme? Why is it cheched at
toplevel and not only in gcc/ ? AFAIK the #include  appears only in
gcc/real.h

It's at the top level because the original implementation envisioned
support for putting MPFR and GMP in the tree, alongside of the
directories gcc, libcpp, etc.  That may still happen.


Thanks for the explanation. But I thought it has been firmly decided
to keep GMP & MPFR outside!


We might still allow other people to put gmp and mpfr in the same source 
tree as gcc, even though it was decided to keep them out of the gcc tarball.






Re: configuration options policy (at toplevel or only inside gcc/)?

2006-12-14 Thread Ian Lance Taylor
Basile STARYNKEVITCH <[EMAIL PROTECTED]> writes:

> Le Thu, Dec 14, 2006 at 07:29:19AM -0800, Ian Lance Taylor écrivait/wrote:
> 
> > Note that configure options beginning with --with and --enable are
> > passed from the top level configure script to the subdirectory
> > configure scripts.  So the user just uses all the options at the top
> > level, and the subdirectories will see them.
> 
> I did notice this, but it seems to me (maybe I am wrong) that there is
> no generic machinery which passes the --with & --enable of the
> top-level configure to the configure in gcc subdirectory. There is
> some code in Makefile.tpl for this, but each such option has to be
> explicitly & individually processed. 

I just ran the top level configure script with --with-foobar, and then
did "make configure-gcc".  When I look in gcc/config.status I do see
--with-foobar in there.  So I think it does work as I expected.  I
haven't bothered to dig into exactly how it works.


> > I agree that new options should only be added at the appropriate
> > level, but there is one disadvantage: top level configure --help will
> > not display them.  But then configure --help is kind of useless anyhow
> > since it has so much boilerplate, so this is not a significant
> > problem.
> 
> Still, what is the build procedure then? Do we expect users to type
> two configure commands?

No, definitely not.  That would not be acceptable.


> > > At last I do not understand why the MPFR & GMP stuff which has been
> > > discussed a lot is not already under the above scheme? Why is it cheched 
> > > at
> > > toplevel and not only in gcc/ ? AFAIK the #include  appears only in
> > > gcc/real.h
> > 
> > It's at the top level because the original implementation envisioned
> > support for putting MPFR and GMP in the tree, alongside of the
> > directories gcc, libcpp, etc.  That may still happen.
> 
> Thanks for the explanation. But I thought it has been firmly decided
> to keep GMP & MPFR outside!

I don't think it has been firmly decided to not permit the user to
unpack MPFR and GMP next to gcc, and have that work--the traditional
one-tree build.

Ian


Re: configuration options policy (at toplevel or only inside gcc/)?

2006-12-14 Thread Ralf Wildenhues
Hello,

* Ian Lance Taylor wrote on Thu, Dec 14, 2006 at 04:29:19PM CET:
> 
> I agree that new options should only be added at the appropriate
> level, but there is one disadvantage: top level configure --help will
> not display them.

Autoconf 2.5x implements --help=recursive.

> But then configure --help is kind of useless anyhow since it has so
> much boilerplate, so this is not a significant problem.

If I want to find something in a long list, I can pipe it to less and
search for it.  That's trivial, but it's a good enough reason to have
something listed.

You may find this discussion currently on the Autoconf list helpful:
http://thread.gmane.org/gmane.comp.sysutils.autoconf.general/8755

Cheers,
Ralf


MULTILIB_MATCHES question

2006-12-14 Thread Michael Eager

I'm having some trouble understanding how to write
a MULTILIB_MATCHES specification.

I need to treat a simple option like "-mhard-float" the
same as an option with a value "-mfp=hard".  Here's what
I came up with:

  MULTILIB_OPTIONS = mfp=hard

  MULTILIB_DIRNAMES = hard

  MULTILIB_MATCHES = mfp?hard=mhard-float

When I specify -mfp=hard, the correct lib ("hard")is selected.
When I specify -mhard-float, the default is selected.

How should I write the MULTILIB_MATCHES spec to do this?

(The docs are less than clear about the MULTILIB_MATCHES
option and don't mention using '?'.)

--
Michael Eager[EMAIL PROTECTED]
1960 Park Blvd., Palo Alto, CA 94306  650-325-8077


Re: configuration options policy (at toplevel or only inside gcc/)?

2006-12-14 Thread Basile STARYNKEVITCH
On Thu, Dec 14, 2006 at 06:32:41PM +0100, Ralf Wildenhues wrote:
> 
> You may find this discussion currently on the Autoconf list helpful:
> http://thread.gmane.org/gmane.comp.sysutils.autoconf.general/8755


Thanks to all (Daniel Jacobowitz, Ian Lance Taylor, Paolo Bonzini,
Ralf Wildenhues).

I partly updated the Wiki. It is sad that nobody corrected the page
 http://gcc.gnu.org/wiki/Regenerating_GCC_Configuration
(I hope I corrected some stuff there, and I wrote most of it).

I really think that such information should go into GCC internal
documentation, where I was not able to find it out. Do you believe
that some of the descriptions in this thread and in the Wiki page just
cited should go into the documentation? Is the documentation expected
to help new GCC contributors, or is it only for users? In particular,
IMHO the commands to re-generate the configure scripts should be
documented if the documentation also targets potential GCC
contributors.

I could write (by copying phrases from the wiki page) a few sentences
into the documentation (gcc/doc/sourcebuild.texi)? Is it worthwhile;
in other words for whom is this documentation written: for users of
GCC (including the few people compiling GCC to use it) or for
potential contributors (GCC hackers)?


Regards

-- 
Basile STARYNKEVITCH http://starynkevitch.net/Basile/ 
email: basilestarynkevitchnet mobile: +33 6 8501 2359 
8, rue de la Faïencerie, 92340 Bourg La Reine, France
*** opinions {are only mines, sont seulement les miennes} ***


Compile Farm : one year uptime, call for projects

2006-12-14 Thread Laurent GUERBY
Excepted two machines I opened to change their disk, the nine GCC
Compile Farm bi-pentium III machines are reaching one year uptime today:

== gcc01 == 21:08:26 up 242 days
== gcc02 == 21:08:26 up 365 days
== gcc03 == 21:08:26 up 365 days
== gcc04 == 9:08PM   up 365 days
== gcc05 == 21:08:27 up 365 days
== gcc06 == 21:08:28 up 365 days
== gcc07 == 21:08:28 up 365 days
== gcc08 == 21:08:28 up 365 days
== gcc09 == 21:08:28 up 242 days

There are currently 17 users with access to the farm, new users and
projects are as welcomed as before :).

http://gcc.gnu.org/wiki/CompileFarm
<<
GCC Compile Farm Project

The GCC CompileFarm Project is seeking volunteers to maintain script
machinery to help with GCC development on nine bi pentium 3 machines as
well as GCC developers that are lacking x86 machine access.

How to Get Involved ?

If you are a GCC developer and want access to the compileFarm for GCC
development and testing, or if you are a free software developer wishing
to set up automated testing of a piece of free software with the current
GCC development version (preferably with a test suite), please send

1. your ssh public key (HOME/.ssh/authorized_keys format) *in
attachment* and not inline in the email and
2. your prefered UNIX login 

to laurent at guerby dot net.
[...]
>>

Many thanks to the http://jexiste.org/ staff for providing reliable and
free hosting to this project.

Laurent
http://guerby.org/blog/




Re: Compile Farm : one year uptime, call for projects

2006-12-14 Thread Manuel López-Ibáñez

Congratulations and thanks for your work. I could not do any GCC
development without it.

Thanks,

Manuel.


On 14/12/06, Laurent GUERBY <[EMAIL PROTECTED]> wrote:

Excepted two machines I opened to change their disk, the nine GCC
Compile Farm bi-pentium III machines are reaching one year uptime today:

== gcc01 == 21:08:26 up 242 days
== gcc02 == 21:08:26 up 365 days
== gcc03 == 21:08:26 up 365 days
== gcc04 == 9:08PM   up 365 days
== gcc05 == 21:08:27 up 365 days
== gcc06 == 21:08:28 up 365 days
== gcc07 == 21:08:28 up 365 days
== gcc08 == 21:08:28 up 365 days
== gcc09 == 21:08:28 up 242 days

There are currently 17 users with access to the farm, new users and
projects are as welcomed as before :).

http://gcc.gnu.org/wiki/CompileFarm
<<
GCC Compile Farm Project

The GCC CompileFarm Project is seeking volunteers to maintain script
machinery to help with GCC development on nine bi pentium 3 machines as
well as GCC developers that are lacking x86 machine access.

How to Get Involved ?

If you are a GCC developer and want access to the compileFarm for GCC
development and testing, or if you are a free software developer wishing
to set up automated testing of a piece of free software with the current
GCC development version (preferably with a test suite), please send

1. your ssh public key (HOME/.ssh/authorized_keys format) *in
attachment* and not inline in the email and
2. your prefered UNIX login

to laurent at guerby dot net.
[...]
>>

Many thanks to the http://jexiste.org/ staff for providing reliable and
free hosting to this project.

Laurent
http://guerby.org/blog/





gcc-4.0-20061214 is now available

2006-12-14 Thread gccadmin
Snapshot gcc-4.0-20061214 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.0-20061214/
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 119869

You'll find:

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

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

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

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

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

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

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

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

Diffs from 4.0-20061207 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: MULTILIB_MATCHES question

2006-12-14 Thread Michael Eager

Michael Eager wrote:

I'm having some trouble understanding how to write
a MULTILIB_MATCHES specification.

I need to treat a simple option like "-mhard-float" the
same as an option with a value "-mfp=hard".  Here's what
I came up with:

  MULTILIB_OPTIONS = mfp=hard

  MULTILIB_DIRNAMES = hard

  MULTILIB_MATCHES = mfp?hard=mhard-float

When I specify -mfp=hard, the correct lib ("hard")is selected.
When I specify -mhard-float, the default is selected.

How should I write the MULTILIB_MATCHES spec to do this?

(The docs are less than clear about the MULTILIB_MATCHES
option and don't mention using '?'.)


Ah, never mind.  I found a typo in my specification.

--
Michael Eager[EMAIL PROTECTED]
1960 Park Blvd., Palo Alto, CA 94306  650-325-8077


[RFC] centralizing vector support info in the testsuite

2006-12-14 Thread Janis Johnson
Checks for vector instruction support are spreading throughout the
testsuite.  I'd like to pull the basic logic into a single place that
can be referenced wherever it's needed.  What's there now isn't always
consistent and there might be new things we can do if the information
is presented in a convenient way, so I'd like some advice.

The following .exp files currently check whether various targets can
generate and run vector instructions and provide command line options
for specific targets:

  gcc.dg/vmx/vmx.exp
  gcc.dg/vect/vect.exp
  g++.dg/vect/vect.exp
  gfortran.dg/vect/vect.exp
  lib/fortran-torture.exp

The following procedures are used only by other procedures:

  check_effective_target_mpaired_single (for mips)
  check_alpha_max_hw_available
  check_vmx_hw_available

The following effective targets are used in individual tests as well
as within .exp files:

  powerpc_altivec_ok
  vect_cmdline_needed (checks i?86, x86_64, ia64)

I'd like to pull all of the logic into a single procedure I'll call
check_vector_support that will return a list where the first element is

  0  no vector support
  1  can generate but not run vector instructions
  2  can generate and run vector instructions

The second element returned is the command line options needed to
generate vector instructions for the current effective target.  This
information can be used in the .exp files that currently do all these
checks themselves, and can be used for new target-independent effective
targets to replace vmx_hw and powerpc_altivec_ok:

  vect_gen  (ok to generate vector instructions)
  vect_run  (ok to generate and run vector instructions)

The existing proc for vect_cmdline_needed would also use the results of
check_vector_support and would support all targets.

Current handling of i?86, x86_64, and ia64 is confusing.  Some places
use "-msse2" for all of these, but the procedure
check_effective_target_vect_cmdline_needed says no options are needed
for ia64 or for LP64 x86_64 and i?86.

I seem to recall from long ago that some processors support generating,
and possibly running, multiple kinds of vector instructions.  If that
is the case then check_vector_support could return a list of two
(possibly empty) lists of options:

  options that the target compiler can use to generate vector
  instructions

  options for vector instructions that the test system can run

In either case, "" is not the same as an empty list, and means that
vector instructions are generated by default.  The lists could be used
in torture lists for testing vector code generation for multiple kinds
of vector instructions.

Comments?

Janis


Question on BOOT_CFLAGS vs. CFLAGS

2006-12-14 Thread Josh Conner
All -

When I configure with --disable-bootstrap and build with:

  CFLAGS="-g -O0"

The resultant compiler is built with the specified options.  However, if
I --enable-bootstrap, when I build with the same CFLAGS, these options
are not used to build the final compiler.  I can get past this by using
BOOT_CFLAGS="-g -O0", but that seems a bit inconsistent.

My question is:  Is this behaving as designed or would it be reasonable
to file a bug and/or supply a patch to change the behavior so that
CFLAGS are respected whether bootstrapping is enabled or not?

Thanks -

Josh


Re: Question on BOOT_CFLAGS vs. CFLAGS

2006-12-14 Thread Paul Brook
On Friday 15 December 2006 01:37, Josh Conner wrote:
> All -
>
> When I configure with --disable-bootstrap and build with:
>
>   CFLAGS="-g -O0"
>
> The resultant compiler is built with the specified options.  However, if
> I --enable-bootstrap, when I build with the same CFLAGS, these options
> are not used to build the final compiler.  I can get past this by using
> BOOT_CFLAGS="-g -O0", but that seems a bit inconsistent.
>
> My question is:  Is this behaving as designed or would it be reasonable
> to file a bug and/or supply a patch to change the behavior so that
> CFLAGS are respected whether bootstrapping is enabled or not?

It is working as documented:

http://gcc.gnu.org/onlinedocs/gccint/Makefile.html
http://gcc.gnu.org/install/build.html

Paul


Re: Question on BOOT_CFLAGS vs. CFLAGS

2006-12-14 Thread Josh Conner
Paul Brook wrote:
> On Friday 15 December 2006 01:37, Josh Conner wrote:
>> All -
>>
>> When I configure with --disable-bootstrap and build with:
>>
>>   CFLAGS="-g -O0"
>>
>> The resultant compiler is built with the specified options.  However, if
>> I --enable-bootstrap, when I build with the same CFLAGS, these options
>> are not used to build the final compiler.  I can get past this by using
>> BOOT_CFLAGS="-g -O0", but that seems a bit inconsistent.
>>
>> My question is:  Is this behaving as designed or would it be reasonable
>> to file a bug and/or supply a patch to change the behavior so that
>> CFLAGS are respected whether bootstrapping is enabled or not?
> 
> It is working as documented:
> 
> http://gcc.gnu.org/onlinedocs/gccint/Makefile.html
> http://gcc.gnu.org/install/build.html

OK - it seemed a bit strange to me, but I'm glad to hear it is behaving
as intended.

- Josh


Re: Question on BOOT_CFLAGS vs. CFLAGS

2006-12-14 Thread Mike Stump

On Dec 14, 2006, at 5:59 PM, Paul Brook wrote:

On Friday 15 December 2006 01:37, Josh Conner wrote:

All -

When I configure with --disable-bootstrap and build with:

  CFLAGS="-g -O0"

The resultant compiler is built with the specified options.   
However, if
I --enable-bootstrap, when I build with the same CFLAGS, these  
options
are not used to build the final compiler.  I can get past this by  
using

BOOT_CFLAGS="-g -O0", but that seems a bit inconsistent.

My question is:  Is this behaving as designed or would it be  
reasonable

to file a bug and/or supply a patch to change the behavior so that
CFLAGS are respected whether bootstrapping is enabled or not?


It is working as documented:

http://gcc.gnu.org/onlinedocs/gccint/Makefile.html
http://gcc.gnu.org/install/build.html


I read that, could you please quote the part that documents the  
current behavior.


Let me offer a counter quote:

If you want to save additional space during the bootstrap and in
the final installation as well, you can build the compiler binaries
without debugging information as in the following example.  This will  
save
roughly 40% of disk space both for the bootstrap and the final  
installation.

(Libraries will still contain debugging information.)

 make CFLAGS='-O' LIBCFLAGS='-g -O2' \
   LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap

I think that is pretty clear.

I think this is a bug that was unintentionally introduced by someone  
that didn't realize all the nuances of this.  If you examine the  
patch submission where this was changed, I don't recall they called  
out or discussed the changed behavior.  Do you have a pointer that  
shows otherwise?


Now, why do we do this, kinda simple, because this is a standard that  
trancends gcc and dates back a long, long time, see http:// 
www.gnu.org/prep/standards/standards.html for example.


The fix is simple, we just change BOOT_CFLAGS = -O2 -g to instead be $ 
(CFLAGS).  This way, if someone builds as documented in the manual,  
they get the results documented in the manual.