public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* egcs-971031: results on m88k-motorola-sysv3 haifa enabled
@ 1997-11-04 23:44 manfred
  1997-11-05  5:23 ` [971031]: Fix for broken hypot funct. on m88k-motorola-sysv3 manfred
  0 siblings, 1 reply; 7+ messages in thread
From: manfred @ 1997-11-04 23:44 UTC (permalink / raw)
  To: egcs

These are my results for egcs-971031 on m88k-motorola-sysv3 (aka delta88) using

  - GNU binutils-2.8.1	 (almost the official version)
  - plain egcs-971031 plus the following patches:

    [1]: [971016]: PICFLAG vs. multilib - solution from <manfred@s-direktnet.de>
    [2]: [egcs-961016]: Use gxx_include_dir consistently from <manfred@s-direktnet.de>
    [3]: dwarf2out patch from <law@cygnus.com>
    [4]: [971023] fixes for a m68k-motorola-sysv from <manfred@s-direktnet.de>
    [5]: [971023] A fix for all poor guys using filesystems limited to 14 characters
	 from <manfred@s-direktnet.de>
    [6]: toplev.c (rest_of_compilation): Don't defer thunks from <hjl@gnu.ai.mit.edu>
    [7]: egcs-970929: GNU assembler too picky from <manfred@ks.sel.alcatel.de>
    [8]: Install c++filt from <manfred@s-direktnet.de>
    [9]: egcs-970929: Missing SHELL from <manfred@ks.sel.alcatel.de>
   [10]: fixincludes patch for a m88k-motorola-sysv3 from <manfred@s-direktnet.de>
	 - will send it soon.


config env:
	CC=gcc CFLAGS='-O2' LDFLAGS=-s
config flags:
	--enable-haifa=yes --with-gnu-as --with-gnu-ld			\
	--prefix=/u/b60/manfred/gnu/delta88				\
	--with-gxx-include-dir=/u/b60/manfred/gnu/delta88/lib/gcc-lib/delta88/egcs-2.90.15/include/g++ \
	--with-local-prefix=/u/b60/manfred/gnu/delta88

BOOT_CFLAGS:
	-O9
gcc used for bootstrapping:
	gcc version 2.7.2.2 (patchlevel 5 compiled Jul 23 1997, 19:48:11)


Test Run By manfred on Tue Nov  4 00:24:22 1997
Native configuration is m88k-motorola-sysv3

		=== libio Summary ===

# of expected passes		40


Test Run By manfred on Tue Nov  4 00:40:13 1997
Native configuration is m88k-motorola-sysv3

		=== libstdc++ Summary ===

# of expected passes		30


Test Run By manfred on Tue Nov  4 00:53:07 1997
Native configuration is m88k-motorola-sysv3

		=== gcc tests ===

FAIL: gcc.c-torture/execute/loop-2e.c compilation,  -O0 
FAIL: gcc.c-torture/execute/loop-2e.c compilation,  -O1 
FAIL: gcc.c-torture/execute/loop-2e.c compilation,  -O2 
FAIL: gcc.c-torture/execute/loop-2e.c compilation,  -O2 -fomit-frame-pointer -finline-functions 
FAIL: gcc.c-torture/execute/loop-2e.c compilation,  -O2 -fomit-frame-pointer -finline-functions -funroll-loops 
FAIL: gcc.c-torture/execute/loop-2e.c compilation,  -O2 -fomit-frame-pointer -finline-functions -funroll-all-loops 
FAIL: gcc.c-torture/execute/loop-2f.c compilation,  -O0 
FAIL: gcc.c-torture/execute/loop-2f.c compilation,  -O1 
FAIL: gcc.c-torture/execute/loop-2f.c compilation,  -O2 
FAIL: gcc.c-torture/execute/loop-2f.c compilation,  -O2 -fomit-frame-pointer -finline-functions 
FAIL: gcc.c-torture/execute/loop-2f.c compilation,  -O2 -fomit-frame-pointer -finline-functions -funroll-loops 
FAIL: gcc.c-torture/execute/loop-2f.c compilation,  -O2 -fomit-frame-pointer -finline-functions -funroll-all-loops 
FAIL: gcc.c-torture/execute/ieee/fp-cmp-1.c execution,  -O0 
FAIL: gcc.c-torture/execute/ieee/fp-cmp-1.c execution,  -O1 
FAIL: gcc.c-torture/execute/ieee/fp-cmp-1.c execution,  -O2 
FAIL: gcc.c-torture/execute/ieee/fp-cmp-1.c execution,  -O2 -fomit-frame-pointer -finline-functions 
FAIL: gcc.c-torture/execute/ieee/rbug.c execution,  -O2 -fomit-frame-pointer -finline-functions 

		=== gcc Summary ===

# of expected passes		4693
# of unexpected failures	17
# of expected failures		5
# of untested testcases		12
# of unsupported tests		7
/phys/b60/home76/manfred/work/GNU/egcs-971031-delta88/gcc/xgcc version egcs-2.90.15 971031 (gcc2-970802 experimental)


Test Run By manfred on Tue Nov  4 14:08:24 1997
Native configuration is m88k-motorola-sysv3

		=== g++ tests ===

FAIL: g++.benjamin/warn01.C (test for excess errors)
FAIL: g++.brendan/crash20.C (test for excess errors)
FAIL: g++.brendan/new3.C (test for excess errors)
XPASS: g++.jason/destruct3.C - (test for bogus messages, line 38)
FAIL: g++.jason/thunk2.C (test for excess errors)
FAIL: g++.jason/thunk3.C (test for excess errors)
FAIL: g++.law/arm13.C (test for excess errors)
FAIL: g++.law/code-gen5.C (test for excess errors)
FAIL: g++.law/ctors6.C (test for excess errors)
FAIL: g++.law/cvt2.C (test for excess errors)
FAIL: g++.law/missed-error1.C (test for excess errors)
FAIL: g++.law/operators23.C (test for excess errors)
FAIL: g++.law/operators4.C (test for excess errors)
FAIL: g++.law/profile1.C (test for excess errors)
XPASS: g++.mike/dyncast1.C  Execution test
XPASS: g++.mike/dyncast2.C  Execution test
FAIL: g++.mike/p710.C (test for excess errors)
FAIL: g++.mike/p9706.C (test for excess errors)
FAIL: g++.mike/p9732b.C  Execution test
FAIL: g++.pt/typename2.C (test for excess errors)

		=== g++ Summary ===

# of expected passes		3355
# of unexpected failures	17
# of unexpected successes	3
# of expected failures		88
# of untested testcases		6
/phys/b60/home76/manfred/work/GNU/egcs-971031-delta88/gcc/testsuite/../xgcc version egcs-2.90.15 971031 (gcc2-970802 experimental)

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

* [971031]: Fix for broken hypot funct. on m88k-motorola-sysv3
  1997-11-04 23:44 egcs-971031: results on m88k-motorola-sysv3 haifa enabled manfred
@ 1997-11-05  5:23 ` manfred
  1997-12-11 22:54   ` Jeffrey A Law
  0 siblings, 1 reply; 7+ messages in thread
From: manfred @ 1997-11-05  5:23 UTC (permalink / raw)
  To: egcs; +Cc: egcs-bugs

On Wed, 5 November 1997, 07:43:39, manfred@s-direktnet.de wrote:

    These are my results for egcs-971031 on m88k-motorola-sysv3 (aka delta88) using
    
      [snip]

       [10]: fixincludes patch for a m88k-motorola-sysv3 from <manfred@s-direktnet.de>
    	 - will send it soon.
    
      [snip]

Here   it comes.  The  problem  that's  fixed is  caused   by a stupid
`optimization' in the `hypot' function of Motorola's libm.a.

   DESCRIPTION
     hypot(x,y) returns

          sqrt(x*x + y*y)

If either x or y is 0, hypot simply returns the other value regardless
of any sign.  This, of course, causes pretty  much failures during the
libstdc++ tests, because the lib itself uses hypot frequently.

hypot  (0.0, -1.0)   e.g.   returns   -1.0,  not  1.0  as   one  would
expect. Since I cannot fix the library (nor  can I request a fixed one
from Motorola because my customers insist on the particular OS version
we're  using here), I provide   a `fake_hypot' function  in the  fixed
`math.h' file which takes care of this bug:

  #ifdef __STDC__
  static __inline__ double fake_hypot (double x, double y)
  #else
  static __inline__ double fake_hypot (x, y)
          double x, y;
  #endif
  {
          return fabs (hypot (x, y));
  }
  #define hypot   fake_hypot


Another  fix is  for  the strlen, etc.   functions, which  are defined
differently depending on _POSIX_SOURCE;  fixincludes fails to fix this
one.


Wed Nov  5 13:31:40 1997  Manfred Hollstein  <manfred@s-direktnet.de>

	* fixincludes (str{len,spn,cspn} return value): Handle different
	layout on sysV88.
	(hypot): Provide a fake for hypot which is broken on m88k-motorola-sysv3.

diff --context --recursive --show-c-function -x *.o -x *.info* -x *.html* -x *.elc -x *.dvi -x *.orig -x *~ -x version.el egcs-971031.orig/gcc/fixincludes egcs-971031/gcc/fixincludes
*** egcs-971031.orig/gcc/fixincludes	Tue Sep  2 20:38:30 1997
- --- egcs-971031/gcc/fixincludes	Mon Nov  3 12:44:33 1997
*************** INPUT=${2-${INPUT-/usr/include}}
*** 12,17 ****
- --- 12,25 ----
  # Directory in which to store the results.
  LIB=${1?"fixincludes: output directory not specified"}
  
+ # Define what target system we're fixing.
+ if test -r ./Makefile; then
+ 	target_canonical="`sed -n -e 's,^target[ 	]*=[ 	]*\(.*\)$,\1,p' < Makefile`"
+ 	test -z "${target_canonical}" && target_canonical=unknown
+ else
+ 	target_canonical=unknown
+ fi
+ 
  # Define PWDCMD as a command to use to get the working dir
  # in the form that we want.
  PWDCMD=pwd
*************** fi
*** 1982,1987 ****
- --- 1990,1996 ----
  # Correct the return type for strlen in string.h on Lynx.
  # Correct the argument type for ffs in string.h on Alpha OSF/1 V2.0.
  # Add missing const for strdup on OSF/1 V3.0.
+ # On sysV88 layout is slightly different.
  file=string.h
  if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
    cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
*************** if [ -r ${LIB}/$file ]; then
*** 2000,2005 ****
- --- 2009,2016 ----
        -e 's/^\(	strncmp()\),\n\(	strlen(),\)$/\1;\
  extern unsigned int\
  \2/'\
+       -e '/^extern int$/N'\
+       -e 's/^extern int\(\n	strlen(),\)/extern size_t\1/' \
      ${LIB}/$file > ${LIB}/${file}.sed
    rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
    if cmp $file ${LIB}/$file >/dev/null 2>&1; then
*************** do
*** 2284,2289 ****
- --- 2295,2335 ----
      fi
    fi
  done
+ 
+ # libm.a on m88k-motorola-sysv3 contains a stupid optimization for function
+ # hypot(), which returns the second argument without even looking at its value
+ # if the other is 0.0
+ file=math.h
+ if [ $target_canonical = m88k-motorola-sysv3 ]; then
+   if [ -r $file ] && [ ! -r ${LIB}/$file ]; then
+     cp $file ${LIB}/$file >/dev/null 2>&1 || echo "Can't copy $file"
+     chmod +w ${LIB}/$file 2>/dev/null
+     chmod a+r ${LIB}/$file 2>/dev/null
+   fi
+ 
+   if [ -r ${LIB}/$file ]; then
+     echo Fixing $file, hypot definition
+     sed -e '/^extern double hypot();$/a\
+ \/* Workaround a stupid Motorola optimization if one\
+    of x or y is 0.0 and the other is negative!  *\/\
+ #ifdef __STDC__\
+ static __inline__ double fake_hypot (double x, double y)\
+ #else\
+ static __inline__ double fake_hypot (x, y)\
+ 	double x, y;\
+ #endif\
+ {\
+ 	return fabs (hypot (x, y));\
+ }\
+ #define hypot	fake_hypot
+ ' \
+       ${LIB}/$file > ${LIB}/${file}.sed
+     rm -f ${LIB}/$file; mv ${LIB}/${file}.sed ${LIB}/$file
+     if cmp $file ${LIB}/$file >/dev/null 2>&1; then
+       rm -f ${LIB}/$file
+     fi
+   fi
+ fi
  
  # math.h on SunOS 4 puts the declaration of matherr before the definition
  # of struct exception, so the prototype (added by fixproto) causes havoc.

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

* Re: [971031]: Fix for broken hypot funct. on m88k-motorola-sysv3
  1997-11-05  5:23 ` [971031]: Fix for broken hypot funct. on m88k-motorola-sysv3 manfred
@ 1997-12-11 22:54   ` Jeffrey A Law
  1997-12-12  1:46     ` manfred
  0 siblings, 1 reply; 7+ messages in thread
From: Jeffrey A Law @ 1997-12-11 22:54 UTC (permalink / raw)
  To: manfred; +Cc: egcs

  In message <9711051320.AA18683@lts.sel.alcatel.de>you write:
  > Wed Nov  5 13:31:40 1997  Manfred Hollstein  <manfred@s-direktnet.de>
  > 
  > 	* fixincludes (str{len,spn,cspn} return value): Handle different
  > 	layout on sysV88.
  > 	(hypot): Provide a fake for hypot which is broken on m88k-motorola-sysv3.
Thanks.  I've installed this patch.

However, is is really necessary to check the target system?  Can't we just apply
the fix regardless of the target?

jeff

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

* Re: [971031]: Fix for broken hypot funct. on m88k-motorola-sysv3
  1997-12-11 22:54   ` Jeffrey A Law
@ 1997-12-12  1:46     ` manfred
  1997-12-15 10:31       ` Jeffrey A Law
  0 siblings, 1 reply; 7+ messages in thread
From: manfred @ 1997-12-12  1:46 UTC (permalink / raw)
  To: egcs

On Thu, 11 December 1997, 23:56:54, law@cygnus.com wrote:

 > 
 >   In message <9711051320.AA18683@lts.sel.alcatel.de>you write:
 >   > Wed Nov  5 13:31:40 1997  Manfred Hollstein  <manfred@s-direktnet.de>
 >   > 
 >   > 	* fixincludes (str{len,spn,cspn} return value): Handle different
 >   > 	layout on sysV88.
 >   > 	(hypot): Provide a fake for hypot which is broken on m88k-motorola-sysv3.
 > Thanks.  I've installed this patch.
 > 
 > However, is is really necessary to check the target system?  Can't we just apply
 > the fix regardless of the target?

Well, I added this for two reasons:

 1. I didn't want to make changes which would probably affect other systems.
 2. Some checks should be rewritten to use my new ${target...} stuff, because
    building a cross compiler will otherwise fail to fix some header files;
    most tests are like `if [ -f /vmunix ]...' which of course can be
    misleading (or even wrong!) in a cross environment.

BTW: This patch has been obsoleted by the second part of
     < http://www.cygnus.com/ml/egcs-bugs/1997-Dec/0137.html >

Manfred

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

* Re: [971031]: Fix for broken hypot funct. on m88k-motorola-sysv3
  1997-12-12  1:46     ` manfred
@ 1997-12-15 10:31       ` Jeffrey A Law
  1997-12-15 13:11         ` Fixes for broken headers Bruce Korb
  0 siblings, 1 reply; 7+ messages in thread
From: Jeffrey A Law @ 1997-12-15 10:31 UTC (permalink / raw)
  To: manfred; +Cc: egcs

  In message < 9712120945.AA20731@lts.sel.alcatel.de >you write:
  > Well, I added this for two reasons:
  > 
  >  1. I didn't want to make changes which would probably affect other systems
OK.

  >  2. Some checks should be rewritten to use my new ${target...} stuff,
  > because building a cross compiler will otherwise fail to fix some header files;
  > most tests are like `if [ -f /vmunix ]...' which of course can be
  >  misleading (or even wrong!) in a cross environment.
We should avoid this kind of check if at all possible since they are obviously
incorrect for cross compilers.

  > BTW: This patch has been obsoleted by the second part of
  >      < http://www.cygnus.com/ml/egcs-bugs/1997-Dec/0137.html >
All the more reason to send one patch per mail message...
jeff

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

* Re: Fixes for broken headers..
  1997-12-15 10:31       ` Jeffrey A Law
@ 1997-12-15 13:11         ` Bruce Korb
  1997-12-18 12:29           ` Bruce Korb
  0 siblings, 1 reply; 7+ messages in thread
From: Bruce Korb @ 1997-12-15 13:11 UTC (permalink / raw)
  To: Jeffrey A Law, egcs

Jeffrey A Law wrote:
...
>   >  2. Some checks should be rewritten to use my new ${target...} stuff,
>   > because building a cross compiler will otherwise fail to fix some header files;
>   > most tests are like `if [ -f /vmunix ]...' which of course can be
>   >  misleading (or even wrong!) in a cross environment.

I have a fix for all this stuff, that includes massive performance
enhancements.  Now that Egcs-1.0 is out, are you ready to deal
with a reimplementation of fixincludes?

Also, I ran into a problem on UnixWare 2.1.2.  For one thing, X11
resides in a directory under .../X11R6.1/... and the emacs configure
scripts do not expect to find it there.  Beyond that is a header file
problem (which is why I mention it in this message).  One of the
headers under that directory contains an unprotected typedef for
wchar_t.  It is immediately preceeded by a comment that says that
the following line needs to be customized for the target system.
SCO obviously forgot to do that.  The correct fix is to replace the
typedef with a line "#include <stddef.h>" and copy it to where
it would be found before the regular X11 include stuff.  This last
part is what I could not figure out how to do.

If you are ready, please tell me how to deliver fixincludes to you.
If anyone else is interested in playing with it, I will
send it to them, too.  I am reluctant to email 100K to 
hundreds of uninterested recipients tho.

-- 
Bruce Korb                      | Data Design Systems, Inc.
Korbb at DataDesign dot com     | 45 Cabot Dr., Suite 110
Voice:  408-260-0280            | Santa Clara,  CA   95051
Fax:    408-260-0281            | USA

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

* Re: Fixes for broken headers..
  1997-12-15 13:11         ` Fixes for broken headers Bruce Korb
@ 1997-12-18 12:29           ` Bruce Korb
  0 siblings, 0 replies; 7+ messages in thread
From: Bruce Korb @ 1997-12-18 12:29 UTC (permalink / raw)
  To: egcs

Jeffrey A Law wrote:
...
>   >  2. Some checks should be rewritten to use my new ${target...}
>   >     stuff, because building a cross compiler will otherwise
>   >     fail to fix some header files; most tests are like
>   >     `if [ -f /vmunix ]...' which of course can be
>   >     misleading (or even wrong!) in a cross environment.

I have a fix for all this stuff, that includes massive performance
enhancements.  Now that Egcs-1.0 is out, are you ready to deal
with a reimplementation of fixincludes?

Also, I ran into a problem on UnixWare 2.1.2.  For one thing, X11
resides in a directory under .../X11R6.1/... and the emacs configure
scripts do not expect to find it there.  Beyond that is a header file
problem (which is why I mention it in this message).  One of the
headers under that directory contains an unprotected typedef for
wchar_t.  It is immediately preceeded by a comment that says that
the following line needs to be customized for the target system.
SCO obviously forgot to do that.  The correct fix is to replace the
typedef with a line "#include <stddef.h>" and copy it to where
it would be found before the regular X11 include stuff.  This last
part is what I could not figure out how to do.

If you are ready, please tell me how to deliver fixincludes to you.
If anyone else is interested in playing with it, I will
send it to them, too.  I am reluctant to email 100K to
hundreds of uninterested recipients tho.

--
Bruce Korb                      | Data Design Systems, Inc.
Korbb at DataDesign dot com     | 45 Cabot Dr., Suite 110
Voice:  408-260-0280            | Santa Clara,  CA   95051
Fax:    408-260-0281            | USA

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

end of thread, other threads:[~1997-12-18 12:29 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1997-11-04 23:44 egcs-971031: results on m88k-motorola-sysv3 haifa enabled manfred
1997-11-05  5:23 ` [971031]: Fix for broken hypot funct. on m88k-motorola-sysv3 manfred
1997-12-11 22:54   ` Jeffrey A Law
1997-12-12  1:46     ` manfred
1997-12-15 10:31       ` Jeffrey A Law
1997-12-15 13:11         ` Fixes for broken headers Bruce Korb
1997-12-18 12:29           ` Bruce Korb

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).