public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* build report
@ 1998-02-05 13:49 Joe Harrington
  1998-02-06  0:57 ` Jeffrey A Law
  0 siblings, 1 reply; 4+ messages in thread
From: Joe Harrington @ 1998-02-05 13:49 UTC (permalink / raw)
  To: egcs; +Cc: jh

I successfully built egcs-1.0.1 under i686-pc-linux-gnu.  Seems to
install fine.  Minor build problems:

make dvi
# 16 returns required, three times
texi2dvi -I../../gcc/f ../../gcc/f/g77.texi -o f/g77.dvi
texi2dvi: Unknown or ambiguous option `-I../../gcc/f'.
texi2dvi: Try `--help' for more information.
make[1]: *** [f/g77.dvi] Error 1
make[1]: Leaving directory `/home/local/src/egcs-1.0.1/objdir/gcc'

In general, your build requires a lot of late-model software.  It
would be nice to see the packages needed listed up front, boldly.  I
built the whole compiler and then discovered I needed a new binutils.

Also, a summary of new features compared to the current gcc release
would be great.  I tried putting -m686 in my BOOT_CFLAGS but it didn't
like it.  Ok, so how do you get the pentium and PPro scheduler?  That
kind of thing.

Also also, there's this tantalyzing hint about Haifa.  Does it produce
*worse* code on any platform?  I.e., is it unsafe to use it by
default?  Is it related to improved scheduler support for 586 and 686?
There are about 5 lines in the various docs about it, and they just
talk about how to turn it on or not.  Is there a way to select it a
gcc runtime?

Thanks for doing egcs?  The pace of improvement has been maddeningly
slow.

--jh--

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: build report
  1998-02-05 13:49 build report Joe Harrington
@ 1998-02-06  0:57 ` Jeffrey A Law
  1998-02-06  9:43   ` Joe Harrington
  0 siblings, 1 reply; 4+ messages in thread
From: Jeffrey A Law @ 1998-02-06  0:57 UTC (permalink / raw)
  To: jh; +Cc: egcs

  In message < 199802051938.OAA27614@oobleck.tn.cornell.edu >you write:
  > In general, your build requires a lot of late-model software.  It
  > would be nice to see the packages needed listed up front, boldly.  I
  > built the whole compiler and then discovered I needed a new binutils.
Err, I think the build instructions do tell you that you need a new
binutils for i686-pc-linux-gnu.

http://www.cygnus.com/egcs/install/specific.html

i?86-*-linux*
You will need binutils-2.8.1.0.15 or newer for exception handling to work. 

  > Also, a summary of new features compared to the current gcc release
  > would be great.  I tried putting -m686 in my BOOT_CFLAGS but it didn't
  > like it.  Ok, so how do you get the pentium and PPro scheduler?  That
  > kind of thing.
Look at the egcs-1.0.1 release page:

http://www.cygnus.com/egcs/egcs-1.0.1.html

It describes the new stuff in egcs-1.0.1 as well as comparing it to gcc-2.8.

  > Also also, there's this tantalyzing hint about Haifa.  Does it produce
  > *worse* code on any platform?
It could.  It requires tuning of the machine description  to more closely
match how the processor actually works -- many machine descriptions lied
about the processor's pipeline to try to get better performance out of
the old scheduler.

Also on register poor machines like the x86, the more aggressive scheduling
done by the haifa scheduler may increase register pressure and lead to
worse code.

  > I.e., is it unsafe to use it by default?
Nope.  1.0.1 has it on by default for the PA.  Current snapshots have it
on for the PA, rs6000/ppc and alpha -- those are the ports that have been
tuned to work with the haifa scheduler.

  > Is it related to improved scheduler support for 586 and 686?
  > There are about 5 lines in the various docs about it, and they just
  > talk about how to turn it on or not.  Is there a way to select it a
  > gcc runtime?
No, there's no way to select it at runtime; it's a configure time only
option.

jef

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: build report
  1998-02-06  0:57 ` Jeffrey A Law
@ 1998-02-06  9:43   ` Joe Harrington
  1998-02-08 13:45     ` Jeffrey A Law
  0 siblings, 1 reply; 4+ messages in thread
From: Joe Harrington @ 1998-02-06  9:43 UTC (permalink / raw)
  To: law; +Cc: jh

> Err, I think the build instructions do tell you that you need a new
> binutils for i686-pc-linux-gnu.

> http://www.cygnus.com/egcs/install/specific.html

True.  But, I missed it first time around, and so will others.  It
would be good to put a link to this before "configure" in index.html
(where you point people from the main README).  I'd also note the need
for a new dejagnu and possibly a new texinfo.  In general, make
dependencies that differ from release GNU systems *prominent* in any
instructions.

Two docs bugs: First, texinfo.texi gives 16 errors on each of its 3
runs in make dvi.  Second, the command line to format g77.texi
includes a -I, which isn't understood by the texinfo-3.9 installed on
this Red Hat 5.0 box.  A pointer to a later version of TeXinfo or use
of the version included in the egcs release might fix these if they're
not actual bugs.

>  > Also, a summary of new features compared to the current gcc release
>  > would be great.  I tried putting -m686 in my BOOT_CFLAGS but it didn't
>  > like it.  Ok, so how do you get the pentium and PPro scheduler?  That
>  > kind of thing.
> Look at the egcs-1.0.1 release page:

Thanks.  Perhaps put in a link from the included docs?  I see that
Pentium and PPro stuff is mentionned there, but see nothing in the man
page about turning them on.  AH!  It's in the info but not in the man
page.  Updating the man page would be good.

Gcc's default target architecture for the x86 series seems broken.
Why is the default to build for the *oldest* machine, rather than the
*user's* machine?  It's true that many people want a single binary to
run on all x86 hardware, so it's important to be able to generate 386
code.  However, it's also true that *most* people don't need or want
their binary to run on more than one machine, and that there are few
386's out there by comparison to later CPUs.  It would seem best to
default to the user's CPU, rather than the oldest hardware in the
series of his or her CPU.  Using -mwhatever should be the exception,
not the rule.  If the default-to-oldest convention is here to stay,
please at least give us a -mcurrent that creates code for the current
CPU.

I have found another difficulty with the -m options.  I maintain a set
of install scripts called the Clue Files
( ftp://oobleck.tn.cornell.edu/pub/clues-yy.mm.dd.tar.gz ).  They
provide cut-and-paste instructions for installing your /usr/local in a
robust, reproducible, maximally-optimized fashion.  I use gcc in them
so that users of different architectures all have the same
make/compile lines.  A problem is that Intel users want the equivalent
of the -mbest suggested above.  So far, I've been special-casing -m486
for users of i486, i586, and i686.  This makes the files messy, but is
necessary.  Egcs lets Intel users do -mcpu=`uname -m` (great, almost
as good as -mcurrent!), but Intel is still a special case since not
all hardware allows -mcpu.  It would be great if it did, so that
-mcpu=`uname -m` compiles for the current CPU, even if there's only
one architecture definition for several processors.  Of course, having
a -mcurrent that is understood on all architectures obviates the need
for this.

Finally, I tested the different -m options for the x86 family on a
numerical model.  Results are not what I'd expect:

		with Haifa		no Haifa
-m		t1	t2	t3	t1	t2	t3	
386		11.70	18.19	8.49    11.68   18.21   8.55
486		11.65	18.18	8.47    11.74   18.17   8.50
pentium		11.69	18.12	8.48    11.75   18.22   8.50
pentiumpro	11.72	18.20	8.52    11.69   18.16   8.56

t1 is a numerical model with lots of adds and multiplies
t2 is the same but with lots of trig functions added
t3 is like t1 but accesses a large sparse array (fewer iterations)

Times are wall clock as reported by csh's built-in time command, with
CPU usage reported at 100%.  I took the best of three trials in each
case.  Results were quite consistent between the trials, usually
within 0.01 second of each other.

I'm on a PII, so I'd expect the last times to be the shortest by a
substantial margin.  Instead, the differences are significant only in
a statistical sense, there's no consistent pattern to which runs
fastest, and often the code supposedly generated for this CPU runs the
slowest!  Wouldn't you expect to see a substantial improvement between
code generated for a 386 and code generated for a 686, when you run on
a 686?

Thanks again for your work on gcc.  The Bazaar is a win!

--jh--

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: build report
  1998-02-06  9:43   ` Joe Harrington
@ 1998-02-08 13:45     ` Jeffrey A Law
  0 siblings, 0 replies; 4+ messages in thread
From: Jeffrey A Law @ 1998-02-08 13:45 UTC (permalink / raw)
  To: jh; +Cc: egcs

  In message < 199802061743.MAA28101@oobleck.tn.cornell.edu >you write:
  > True.  But, I missed it first time around, and so will others.  It
  > would be good to put a link to this before "configure" in index.html
  > (where you point people from the main README).  I'd also note the need
  > for a new dejagnu and possibly a new texinfo.  In general, make
  > dependencies that differ from release GNU systems *prominent* in any
  > instructions.
No matter where we put it folks are going to miss it.  IMHO the target
specific stuff belongs *after* the other stuff since it's not likely 
to make such sense if you don't have some clue about the overall configure
and build procedure.

  > Two docs bugs: First, texinfo.texi gives 16 errors on each of its 3
  > runs in make dvi.  Second, the command line to format g77.texi
  > includes a -I, which isn't understood by the texinfo-3.9 installed on
  > this Red Hat 5.0 box.  A pointer to a later version of TeXinfo or use
  > of the version included in the egcs release might fix these if they're
  > not actual bugs.
Hmmm, we haven't run make.dvi...  Sigh.

Can you find out why it didn't use the texinfo in the distribution?  The
whole point of including it is to prevent this kind of problem.

  > Thanks.  Perhaps put in a link from the included docs?  I see that
  > Pentium and PPro stuff is mentionned there, but see nothing in the man
  > page about turning them on.  AH!  It's in the info but not in the man
  > page.  Updating the man page would be good.
Sigh.  Yes, this is an age-old problem with GNU tools -- nobody updates
the man pages because the "info" documentation is the official stuff.

  > Gcc's default target architecture for the x86 series seems broken.
  > Why is the default to build for the *oldest* machine, rather than the
  > *user's* machine? 
It's been our experience that providing the LCD code generation tends to
be a better default.  Most folks that care about performance will take the
time to find the additional options to tune optimization for their
particular chip.   Either way there's going to be a group of folks that
think the default is wrong :-)

  > Finally, I tested the different -m options for the x86 family on a
  > numerical model.  Results are not what I'd expect:
  > 
  > 		with Haifa		no Haifa
  > -m		t1	t2	t3	t1	t2	t3	
  > 386		11.70	18.19	8.49    11.68   18.21   8.55
  > 486		11.65	18.18	8.47    11.74   18.17   8.50
  > pentium		11.69	18.12	8.48    11.75   18.22   8.50
  > pentiumpro	11.72	18.20	8.52    11.69   18.16   8.56
  > 
[ ... ]

  > I'm on a PII, so I'd expect the last times to be the shortest by a
  > substantial margin.  Instead, the differences are significant only in
  > a statistical sense, there's no consistent pattern to which runs
  > fastest, and often the code supposedly generated for this CPU runs the
  > slowest!  Wouldn't you expect to see a substantial improvement between
  > code generated for a 386 and code generated for a 686, when you run on
  > a 686?
In theory, yes, but I don't think either the code generator has been well
tuned for those machines yet.  Particularly it the scheduler hasn't been
tuned, so we probably aren't getting any of the benefits of their exposed
pipeline architecture.

jeff


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~1998-02-08 13:45 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-02-05 13:49 build report Joe Harrington
1998-02-06  0:57 ` Jeffrey A Law
1998-02-06  9:43   ` Joe Harrington
1998-02-08 13:45     ` Jeffrey A Law

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).