bubblestrap and gnat: is gnat always rebuilt whenever I bubblestrap gcc?

2005-08-10 Thread Christian Joensson
Is it just me...or?

I get the feeling that if I first bootstrap gcc, then update some
files, then bubblestrap to check again... that gnat and friends get
rebuilt?

I really like bubblestrap, it gets me a shorter time to test a patch
or so. However, if gnat and friends somehow are more sensitively
dependent on source changes... I am hesitant to bootstrap with Ada...

Is there anyone else that can confirm my feeling with some in depth
facts... or am I simply misguided by my feeling?

-- 
Cheers,

/ChJ


Re: [gfortran] add ISATTY and TTYNAM intrinsics

2005-08-10 Thread Jack Howarth
FX,
I forgot to mention that since the gcc cvs I built last night now
contains your ISATTY and TTYNAM intrinsics patch, I regressed the
portion of the xplor.patch which worked around the prior absence
of the ISATTY intrinsic in gfortran. The resulting xplor-nih build
works fine.
One other question. Do you know much c++? I had to make one change
to some buggy c++ code to allow gcc 4.0 and main branch to compile
xplor-nih...

--- xplor-nih-2.11.2.1/intVar/dint-loop.cc  2004-04-16 18:06:07.0 -0
400
+++ xplor-nih-2.11.2.1.g95/intVar/dint-loop.cc  2005-07-24 17:41:11.0 -0
400
@@ -50,6 +50,8 @@
   tip1(tip1), tip2(tip2) 
 {} /* Loop::Loop */
 
+class LoopWNodes;
+
 static int compareLevel(const LoopWNodes& l1,//forward declarations
const LoopWNodes& l2);
 //static bool sameBranch(const HingeNode* tip,

...to work around the problem described in...

https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=159445

With that change, all of the c++ code in xplor-nih compiles against
gcc 4.0 branch, however I find that gcc main branch yields another
compilation error...

g++-4 -fstack-protector-all -c _cdsVector.cc -O3 -fPIC -mtune=970 -g
-DX_MMAP_FLAGS=0 -DFORTRAN_INIT -fno-common -DDARWIN -D_REENTRANT -
DNDEBUG  -I/Users/howarth/Desktop/xplor-nih-2.11.2.1/python/ -I/Users/
howarth/Desktop/xplor-nih-2.11.2.1/arch/Darwin_8/include -I/Users/
howarth/Desktop/xplor-nih-2.11.2.1/python/swig_wrappers -DCPLUSPLUS -
DUSE_CDS_NAMESPACE -I/Users/howarth/Desktop/xplor-nih-2.11.2.1/
python/ -I/Users/howarth/Desktop/xplor-nih-2.11.2.1/arch/Darwin_8/
include -DSWIGPY_GLOBAL -I. -I/System/Library/Frameworks/
Python.framework/Versions/2.3/include/python2.3 -I/Users/howarth/
Desktop/xplor-nih-2.11.2.1/CDSlib -I/Users/howarth/Desktop/xplor-
nih-2.11.2.1/common -I/Users/howarth/Desktop/xplor-nih-2.11.2.1/
intVar -I/Users/howarth/Desktop/xplor-nih-2.11.2.1/nmrPot -I/Users/
howarth/Desktop/xplor-nih-2.11.2.1/vmd -I/Users/howarth/Desktop/xplor-
nih-2.11.2.1/devel -DNIHXPLOR_VERSION='"2.11.2.1-custom"'  -
DSWIGPY_NOINCLUDE )
_cdsVector.cc: In function 'CDSVector
CDSVector_Sl_int_Sgpow__(CDSVector*,
const float_type&)':
_cdsVector.cc:1155: warning: converting to 'int' from 'double'
/Users/howarth/Desktop/xplor-nih-2.11.2.1/CDSlib/cdsVector.hh: In
member function 'CDSVectorBase& CDSVectorBase::operator*=(const T1&) [with T1 = double, T = int, ALLOC =
CDS::DefaultAlloc]':
_cdsVector.cc:1159:   instantiated from here
/Users/howarth/Desktop/xplor-nih-2.11.2.1/CDSlib/cdsVector.hh:239:
warning: converting to 'int' from 'double'
_cdsVector.cc: In function 'T sum(const CDSVector&) [with T = int]':
_cdsVector.cc:2408:   instantiated from here
_cdsVector.cc:913: warning: converting to 'int' from 'double'
_cdsVector.cc: In function 'CDSVector
sqrt(const CDSVector&) [with T = int]':
_cdsVector.cc:2457:   instantiated from here
_cdsVector.cc:924: error: no matching function for call to 'norm
(const int&)'
_cdsVector.cc: In function 'CDSVector
norm(const CDSVector&) [with T = int]':
_cdsVector.cc:2510:   instantiated from here
_cdsVector.cc:933: error: no matching function for call to 'norm
(const int&)'
_cdsVector.cc: In function 'CDSVector
sqrt(const CDSVector&) [with T = double]':
_cdsVector.cc:3945:   instantiated from here
_cdsVector.cc:924: error: no matching function for call to 'norm
(const double&)'
_cdsVector.cc: In function 'CDSVector
norm(const CDSVector&) [with T = double]':
_cdsVector.cc:3998:   instantiated from here
_cdsVector.cc:933: error: no matching function for call to 'norm
(const double&)'

which compares to gcc 4.0 branch that just yields some warnings on
the same file...

_cdsVector.cc: In function 'CDSVector 
CDSVector_Sl_int_Sgpow__(CDSVector*, const 
float_type&)':
_cdsVector.cc:1155: warning: converting to 'int' from 'double'
./cdsVector.hh: In member function 'CDSVectorBase& CDSVectorBase::operator*=(const T1&) [with T1 = double, T = int, ALLOC = CDS::
DefaultAlloc]':
_cdsVector.cc:1159:   instantiated from here
./cdsVector.hh:239: warning: converting to 'int' from 'double'
_cdsVector.cc: In function 'T sum(const CDSVector&) 
[with T = int]':
_cdsVector.cc:2408:   instantiated from here
_cdsVector.cc:913: warning: converting to 'int' from 'double'

I am trying to figure out if this is catching some new buggy c++ which
is no longer accepted by the g++ compiler in gcc 4.1 or if this is a
regression in that branch. 
  Jack


Re: [gfortran] add ISATTY and TTYNAM intrinsics

2005-08-10 Thread FX Coudert

One other question. Do you know much c++? I had to make one change
to some buggy c++ code to allow gcc 4.0 and main branch to compile
xplor-nih...


I'm sorry but i don't know anything more about c++ than its name. About 
your problem, i'd guess that you could try to create a reduced 
preprocessed testcase and file this regression in bugzilla.


FX


PATCH: Enable FTZ/DAZ for SSE via fast math

2005-08-10 Thread H. J. Lu
On Tue, Aug 09, 2005 at 02:58:51PM -0700, Richard Henderson wrote:
> On Tue, Aug 09, 2005 at 02:30:46PM -0700, H. J. Lu wrote:
> > There is a minor problem. How can I add crtfastmath.o for SSE targets
> > only? 
> 
> You don't.  You either add code to detect sse, or you make the
> spec depend on -mfpmath=sse.
> 

Here is the patch to enable FTZ/DAZ for SSE via fast math. There are
no regressions on Linux/x86_64 nor Linux/ia32. The performance of one
FP benchmark on EM64T is more than doubled with -ffast-math.


H.J.
---
2005-08-09  H.J. Lu  <[EMAIL PROTECTED]>

* config.gcc (i[34567]86-*-linux*): Add i386/t-crtfm to tm-file.
(x86_64-*-linux*): Likewise.

* config/i386/crtfastmath.c: New file.
* config/i386/t-crtfm: Likewise.

* config/i386/linux.h (ENDFILE_SPEC): New.
* config/i386/linux64.h (ENDFILE_SPEC): Likewise.

* config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
crtfastmath.o.

--- gcc/config.gcc.sse  2005-08-06 07:22:06.0 -0700
+++ gcc/config.gcc  2005-08-09 15:09:16.313927259 -0700
@@ -1001,7 +1001,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfree
i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h 
i386/knetbsd-gnu.h" ;;
i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h 
i386/kfreebsd-gnu.h" ;;
esac
-   tmake_file="${tmake_file} i386/t-crtstuff"
+   tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtfm"
;;
 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h 
linux.h \
@@ -1010,7 +1010,7 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu
x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;;
x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;;
esac
-   tmake_file="${tmake_file} i386/t-linux64"
+   tmake_file="${tmake_file} i386/t-linux64 i386/t-crtfm"
;;
 i[34567]86-*-gnu*)
;;
--- gcc/config/i386/crtfastmath.c.sse   2005-08-09 15:09:39.634095529 -0700
+++ gcc/config/i386/crtfastmath.c   2005-08-09 15:29:01.796141023 -0700
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2005 Free Software Foundation, Inc.
+ *
+ * This file is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2, or (at your option) any
+ * later version.
+ * 
+ * In addition to the permissions in the GNU General Public License, the
+ * Free Software Foundation gives you unlimited permission to link the
+ * compiled version of this file with other programs, and to distribute
+ * those programs without any restriction coming from the use of this
+ * file.  (The General Public License restrictions do apply in other
+ * respects; for example, they cover modification of the file, and
+ * distribution when not linked into another program.)
+ * 
+ * This file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; see the file COPYING.  If not, write to
+ * the Free Software Foundation, 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ * 
+ *As a special exception, if you link this library with files
+ *compiled with GCC to produce an executable, this does not cause
+ *the resulting executable to be covered by the GNU General Public License.
+ *This exception does not however invalidate any other reasons why
+ *the executable file might be covered by the GNU General Public License.
+ */
+
+#define MXCSR_DAZ (1 << 6) /* Enable denormals are zero mode */
+#define MXCSR_FTZ (1 << 15)/* Enable flush to zero mode */
+
+static void __attribute__((constructor))
+set_fast_math (void)
+{
+  /* Check if SSE is available.  */
+  unsigned int eax, ebx, ecx, edx;
+  asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1"
+   : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx)
+   : "0" (1));
+
+  if (edx & (1 << 25))
+{
+  unsigned int mxcsr = __builtin_ia32_stmxcsr ();
+  mxcsr |= MXCSR_DAZ | MXCSR_FTZ;
+  __builtin_ia32_ldmxcsr (mxcsr);
+}
+}
--- gcc/config/i386/linux.h.sse 2004-11-28 17:04:42.0 -0800
+++ gcc/config/i386/linux.h 2005-08-09 14:22:44.554244342 -0700
@@ -121,6 +121,12 @@ Boston, MA 02111-1307, USA.  */
%{!dynamic-linker:-dynamic-linker %(dynamic_linker)}} \
%{static:-static}}}"
 
+/* Similar to standard Linux, but adding -ffast-math support.  */
+#undef  ENDFILE_SPEC
+#define ENDFILE_SPEC \
+  "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
+   %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
+
 /* A C statement (sans semicolon) to output to the st

Re: PATCH: Enable FTZ/DAZ for SSE via fast math

2005-08-10 Thread Jakub Jelinek
On Wed, Aug 10, 2005 at 07:09:04AM -0700, H. J. Lu wrote:
> On Tue, Aug 09, 2005 at 02:58:51PM -0700, Richard Henderson wrote:
> > On Tue, Aug 09, 2005 at 02:30:46PM -0700, H. J. Lu wrote:
> > > There is a minor problem. How can I add crtfastmath.o for SSE targets
> > > only? 
> > 
> > You don't.  You either add code to detect sse, or you make the
> > spec depend on -mfpmath=sse.
> > 
> 
> Here is the patch to enable FTZ/DAZ for SSE via fast math. There are
> no regressions on Linux/x86_64 nor Linux/ia32. The performance of one
> FP benchmark on EM64T is more than doubled with -ffast-math.

Not all i?86 CPUs support cpuid instruction.
Please look at
gcc/testsuite/gcc.dg/i386-cpuid.h
for the ugly details.

> +static void __attribute__((constructor))
> +set_fast_math (void)
> +{
> +  /* Check if SSE is available.  */
> +  unsigned int eax, ebx, ecx, edx;
> +  asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1"
> + : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx)
> + : "0" (1));
> +
> +  if (edx & (1 << 25))
> +{
> +  unsigned int mxcsr = __builtin_ia32_stmxcsr ();
> +  mxcsr |= MXCSR_DAZ | MXCSR_FTZ;
> +  __builtin_ia32_ldmxcsr (mxcsr);
> +}
> +}

Jakub


Re: PATCH: Enable FTZ/DAZ for SSE via fast math

2005-08-10 Thread H. J. Lu
On Wed, Aug 10, 2005 at 10:18:41AM -0400, Jakub Jelinek wrote:
> On Wed, Aug 10, 2005 at 07:09:04AM -0700, H. J. Lu wrote:
> > On Tue, Aug 09, 2005 at 02:58:51PM -0700, Richard Henderson wrote:
> > > On Tue, Aug 09, 2005 at 02:30:46PM -0700, H. J. Lu wrote:
> > > > There is a minor problem. How can I add crtfastmath.o for SSE targets
> > > > only? 
> > > 
> > > You don't.  You either add code to detect sse, or you make the
> > > spec depend on -mfpmath=sse.
> > > 
> > 
> > Here is the patch to enable FTZ/DAZ for SSE via fast math. There are
> > no regressions on Linux/x86_64 nor Linux/ia32. The performance of one
> > FP benchmark on EM64T is more than doubled with -ffast-math.
> 
> Not all i?86 CPUs support cpuid instruction.
> Please look at
> gcc/testsuite/gcc.dg/i386-cpuid.h
> for the ugly details.
> 

Ok. Also all x86_64 supports SSE. There is no need to check that in
64bit.


H.J.


Re: PATCH: Enable FTZ/DAZ for SSE via fast math

2005-08-10 Thread H. J. Lu
On Wed, Aug 10, 2005 at 08:13:17AM -0700, H. J. Lu wrote:
> On Wed, Aug 10, 2005 at 10:18:41AM -0400, Jakub Jelinek wrote:
> > On Wed, Aug 10, 2005 at 07:09:04AM -0700, H. J. Lu wrote:
> > > On Tue, Aug 09, 2005 at 02:58:51PM -0700, Richard Henderson wrote:
> > > > On Tue, Aug 09, 2005 at 02:30:46PM -0700, H. J. Lu wrote:
> > > > > There is a minor problem. How can I add crtfastmath.o for SSE targets
> > > > > only? 
> > > > 
> > > > You don't.  You either add code to detect sse, or you make the
> > > > spec depend on -mfpmath=sse.
> > > > 
> > > 
> > > Here is the patch to enable FTZ/DAZ for SSE via fast math. There are
> > > no regressions on Linux/x86_64 nor Linux/ia32. The performance of one
> > > FP benchmark on EM64T is more than doubled with -ffast-math.
> > 
> > Not all i?86 CPUs support cpuid instruction.
> > Please look at
> > gcc/testsuite/gcc.dg/i386-cpuid.h
> > for the ugly details.
> > 
> 
> Ok. Also all x86_64 supports SSE. There is no need to check that in
> 64bit.
> 
> 

Here is the updated patch.


H.J.
---
2005-08-10  H.J. Lu  <[EMAIL PROTECTED]>

* config.gcc (i[34567]86-*-linux*): Add i386/t-crtfm to tm-file.
(x86_64-*-linux*): Likewise.

* config/i386/crtfastmath.c: New file.
* config/i386/t-crtfm: Likewise.

* config/i386/linux.h (ENDFILE_SPEC): New.
* config/i386/linux64.h (ENDFILE_SPEC): Likewise.

* config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
crtfastmath.o.

--- gcc/config.gcc.sse  2005-08-09 16:18:14.0 -0700
+++ gcc/config.gcc  2005-08-09 16:18:15.0 -0700
@@ -1006,7 +1006,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfree
i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h 
i386/knetbsd-gnu.h" ;;
i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h 
i386/kfreebsd-gnu.h" ;;
esac
-   tmake_file="${tmake_file} i386/t-crtstuff"
+   tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtfm"
;;
 x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h 
linux.h \
@@ -1015,7 +1015,7 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu
x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;;
x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;;
esac
-   tmake_file="${tmake_file} i386/t-linux64"
+   tmake_file="${tmake_file} i386/t-linux64 i386/t-crtfm"
;;
 i[34567]86-*-gnu*)
;;
--- gcc/config/i386/crtfastmath.c.sse   2005-08-09 16:18:15.0 -0700
+++ gcc/config/i386/crtfastmath.c   2005-08-10 08:47:24.207266245 -0700
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2005 Free Software Foundation, Inc.
+ *
+ * This file is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2, or (at your option) any
+ * later version.
+ * 
+ * In addition to the permissions in the GNU General Public License, the
+ * Free Software Foundation gives you unlimited permission to link the
+ * compiled version of this file with other programs, and to distribute
+ * those programs without any restriction coming from the use of this
+ * file.  (The General Public License restrictions do apply in other
+ * respects; for example, they cover modification of the file, and
+ * distribution when not linked into another program.)
+ * 
+ * This file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; see the file COPYING.  If not, write to
+ * the Free Software Foundation, 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ * 
+ *As a special exception, if you link this library with files
+ *compiled with GCC to produce an executable, this does not cause
+ *the resulting executable to be covered by the GNU General Public License.
+ *This exception does not however invalidate any other reasons why
+ *the executable file might be covered by the GNU General Public License.
+ */
+
+#define MXCSR_DAZ (1 << 6) /* Enable denormals are zero mode */
+#define MXCSR_FTZ (1 << 15)/* Enable flush to zero mode */
+
+static void __attribute__((constructor))
+set_fast_math (void)
+{
+#ifndef __x86_64__
+  /* SSE is the part of 64bit. Only need to check it for 32bit.  */
+  unsigned int eax, ebx, ecx, edx;
+
+  /* See if we can use cpuid.  */
+  asm volatile ("pushfl; pushfl; popl %0; movl %0,%1; xorl %2,%0;"
+   "pushl %0; popfl; pushfl; popl %0; popfl"
+   : "=&r" (eax), "=&r" (ebx)
+   : "i" (0x0020));
+
+  if (((eax ^ ebx) & 0x0020) == 0)
+return;
+
+  /* Check the highest input

Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread Mark Mitchell

Christopher Faylor wrote:


This would conflict with my proposed changes to pex-win32.c .  It seems
like getting '#!' functioning on mingw would be a better solution than
relying on $(LN) on mingw.


FWIW, I'm opposed to the "#!" change to MinGW.  It just seems hackish to 
me, and it means that we'll pay an additional cost on all normal uses of 
pex-* on MinGW, even after the compiler is installed.


The correct solution to this is to install the assemblers and linkers 
before building the compiler, in places that the compiler expects to 
find them, on all systems, in all configurations, and then totally avoid 
the symlinks/copies/etc. out of the main tree.  I realize that people 
who do one-tree builds will object, but my answer to that is just that 
there should be an installation stage between building binutils and 
building gcc.


The even more correct solution is to not build anything with the 
compiler (including libgcc) until after it is installed.  Then, it will 
just look where it would normally look, and all will be well.


However, I also recognize that we need to do something before 4.1 to fix 
this problem and that we need something simple enough to be viable in 
that timeframe.  But, if Paolo can fix this without having to add #!, I 
think that would be great.


--
Mark Mitchell
CodeSourcery, LLC
[EMAIL PROTECTED]
(916) 791-8304


Re: PATCH: Enable FTZ/DAZ for SSE via fast math

2005-08-10 Thread Richard Henderson
On Wed, Aug 10, 2005 at 08:48:44AM -0700, H. J. Lu wrote:
>   * config.gcc (i[34567]86-*-linux*): Add i386/t-crtfm to tm-file.
>   (x86_64-*-linux*): Likewise.
> 
>   * config/i386/crtfastmath.c: New file.
>   * config/i386/t-crtfm: Likewise.
> 
>   * config/i386/linux.h (ENDFILE_SPEC): New.
>   * config/i386/linux64.h (ENDFILE_SPEC): Likewise.
> 
>   * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
>   crtfastmath.o.

Ok.


r~


Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread Daniel Jacobowitz
On Wed, Aug 10, 2005 at 10:05:26AM -0700, Mark Mitchell wrote:
> Christopher Faylor wrote:
> 
> >This would conflict with my proposed changes to pex-win32.c .  It seems
> >like getting '#!' functioning on mingw would be a better solution than
> >relying on $(LN) on mingw.
> 
> FWIW, I'm opposed to the "#!" change to MinGW.  It just seems hackish to 
> me, and it means that we'll pay an additional cost on all normal uses of 
> pex-* on MinGW, even after the compiler is installed.

Not if it's implemented after CreateProcess fails, we won't.  I don't
think your argument applies.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread Mark Mitchell

Daniel Jacobowitz wrote:

On Wed, Aug 10, 2005 at 10:05:26AM -0700, Mark Mitchell wrote:


Christopher Faylor wrote:



This would conflict with my proposed changes to pex-win32.c .  It seems
like getting '#!' functioning on mingw would be a better solution than
relying on $(LN) on mingw.


FWIW, I'm opposed to the "#!" change to MinGW.  It just seems hackish to 
me, and it means that we'll pay an additional cost on all normal uses of 
pex-* on MinGW, even after the compiler is installed.



Not if it's implemented after CreateProcess fails, we won't.  I don't
think your argument applies.


Good point!

I still think it's a bad solution, though; it's imposing special 
semantics for process execution in libiberty, rather than the normal 
ones that you would expect from the OS.


--
Mark Mitchell
CodeSourcery, LLC
[EMAIL PROTECTED]
(916) 791-8304


Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread Christopher Faylor
On Wed, Aug 10, 2005 at 10:38:26AM -0700, Mark Mitchell wrote:
>Daniel Jacobowitz wrote:
>>On Wed, Aug 10, 2005 at 10:05:26AM -0700, Mark Mitchell wrote:
>>
>>>Christopher Faylor wrote:
>>>
>>>
This would conflict with my proposed changes to pex-win32.c .  It seems
like getting '#!' functioning on mingw would be a better solution than
relying on $(LN) on mingw.
>>>
>>>FWIW, I'm opposed to the "#!" change to MinGW.  It just seems hackish to 
>>>me, and it means that we'll pay an additional cost on all normal uses of 
>>>pex-* on MinGW, even after the compiler is installed.
>>
>>
>>Not if it's implemented after CreateProcess fails, we won't.  I don't
>>think your argument applies.
>
>Good point!
>
>I still think it's a bad solution, though; it's imposing special 
>semantics for process execution in libiberty, rather than the normal 
>ones that you would expect from the OS.

Aren't the pex* functions designed to provide a uniform interface where
"uniform" means "like unix"?

cgf


Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread DJ Delorie

> I still think it's a bad solution, though; it's imposing special
> semantics for process execution in libiberty, rather than the normal
> ones that you would expect from the OS.

Doing that is part of the purpose of libiberty.  If the OS does
something unusual, we try to make it act in a conforming way, so that
the rest of the tools need not worry about the OS differences.  Adding
support for #! scripts is one of the ways we can make MinGW more
conforming (Cygwin and DJGPP already support #!) to the norm.


Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread DJ Delorie

> Aren't the pex* functions designed to provide a uniform interface
> where "uniform" means "like unix"?

Uniform, yes.  "Like Unix" is a coincidence, not a goal.  Sometimes we
hide a unix-specific feature because we can't mimic it elsewhere (like
simultaneous multithreading) but we prefer to add or wrap
functionality (like #! support).


Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread Mark Mitchell

Christopher Faylor wrote:


Aren't the pex* functions designed to provide a uniform interface where
"uniform" means "like unix"?


I guess I'm not the right person to answer that...

I think they are designed to provide a uniform interface to process 
creation, etc. that is a lowest-common-denominator across systems. 
Running scripts seems to me outside of scope.  I certainly think that 
this is a topic on which people could reasonably disagree.


Part of my concern is that we seem to be adding to the complexity of our 
already baroque build process, in lieu of just attacking the problem 
head-on.  Even a new driver option for additional directories to search 
seems better to me.


However, by the time I write this, I see that DJ -- who is a right 
person to answer to talk about the purpose of libiberty -- thinks #! is 
a good idea.  So, consider me the loyal opposition; let's get on with 
the fix you and DJ like. :-)


--
Mark Mitchell
CodeSourcery, LLC
[EMAIL PROTECTED]
(916) 791-8304


Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread Joe Buck
On Wed, Aug 10, 2005 at 02:35:41PM -0400, DJ Delorie wrote:
> 
> > I still think it's a bad solution, though; it's imposing special
> > semantics for process execution in libiberty, rather than the normal
> > ones that you would expect from the OS.
> 
> Doing that is part of the purpose of libiberty.  If the OS does
> something unusual, we try to make it act in a conforming way, so that
> the rest of the tools need not worry about the OS differences.  Adding
> support for #! scripts is one of the ways we can make MinGW more
> conforming (Cygwin and DJGPP already support #!) to the norm.

I'm inclined to agree that this seems like a natural use of libiberty;
the purpose all along has been to isolate OS differences, fill in missing
functions, etc.

Mark, can you think of any specific negative consequences?


Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread DJ Delorie

> I think they are designed to provide a uniform interface to process 
> creation, etc. that is a lowest-common-denominator across systems. 

I think a better term is "highest common denominator".  We *do* want
to enhance systems when we can, because that makes it easier for the
application developers.  It's only the cases where we *can't* enhance
a system that we have to limit everyone else.

In the case of #!, since *all* process creation goes through
libiberty, it's trivially easy to have libiberty look for the #! and
support it on *any* platform that doesn't already support it.  Why
make app developers suffer without shell scripts when it's easy to
make them globally supported?

> Part of my concern is that we seem to be adding to the complexity of
> our already baroque build process, in lieu of just attacking the
> problem head-on.

Well, if everyone supports shell scripts, that's less configury and
Makefile madness outside of libiberty.

> Even a new driver option for additional directories to search seems
> better to me.

Supporting #! in libiberty doesn't have to stop you from enhancing gcc
anyway ;-)


Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread Christopher Faylor
On Wed, Aug 10, 2005 at 11:41:30AM -0700, Mark Mitchell wrote:
>However, by the time I write this, I see that DJ -- who is a right
>person to answer to talk about the purpose of libiberty -- thinks #! is
>a good idea.  So, consider me the loyal opposition; let's get on with
>the fix you and DJ like.  :-)

Not to beat a dead horse, but this was all decided two weeks ago between
DJ as the libiberty/configury maintainer and Danny Smith and I as the
windows maintainers.  So, I would submit that the right people had
already made the decision.  I wouldn't have volunteered to make a change
to libiberty without DJ's blessing of the idea.

I'm building a compiler now to check out my changes.

cgf


[RFC] - Regression exposed by recent change to compress_float_constant

2005-08-10 Thread Fariborz Jahanian

Following patch has exposed an optimization shortcoming:

2005-07-12  Dale Johannesen  <[EMAIL PROTECTED]>

* expr.c (compress_float_constant):  Add cost check.
* config/rs6000.c (rs6000_rtx_cost):  Adjust FLOAT_EXTEND cost.

This patch results in generating worse code for the following test case:

1) Test case:

struct S {
float d1, d2, d3;
};

S ms()
{
struct S s = {0,0,0};
return s;
}

With: -O1 -mdynamic-no-pic -march=pentium4 -mtune=prescott, gcc now  
generates

pxor%xmm0, %xmm0
movsd   %xmm0, (%eax)
...

Instead of:

 movl$0, (%eax)
movl$0, 4(%eax)


This is because change to compress_float_constant has changed the RTL  
pattern which cse cannot optimize:


Before above patch compress_float_constant generated:

(insn 12 7 13 0 (set (reg:SF 59)
(mem/u/i:SF (symbol_ref/u:SI ("*LC0") [flags 0x2]) [0 S4  
A32])) -1 (nil)

(nil))

(insn 13 12 14 0 (set (mem/s/j:DF (reg/f:SI 58 [ D.1929 ]) [0  
.d1+0 S8 A32])

(float_extend:DF (reg:SF 59))) -1 (nil)
(nil))

Which cse was then able to constant propagate double 0.0, resulting  
in the following pattern:


(insn 13 7 15 0 (set (mem/s/j:DF (reg/f:SI 58 [ D.1929 ]) [0  
.d1+0 S8 A32])

(const_double:DF 0.0 [0x0.0p+0])) 64 {*movdf_nointeger} (nil)
(nil))

With the latest gcc (which includes above patch):
compress_float_constant's new cost computation disallows generation  
of float_extend:DF. cse is then faced with the new pattern:


(insn 12 11 13 0 s.C:7 (set (reg:DF 59)
(mem/u/i:DF (symbol_ref/u:SI ("*LC0") [flags 0x2]) [0 S8  
A64])) -1 (nil)

(nil))

(insn 13 12 14 0 s.C:7 (set (mem/s/j:DF (reg/f:SI 58 [ D.1929 ]) [0  
.d1+0 S8 A32])

(reg:DF 59)) -1 (nil)
(nil))

As soon as it sees a REG node as source, it gives up.

What is the right way to restore this optimization again:

1) Can cse be taught to constant propagate when source is a REG rtl?  
Why this was never attempted before. Fixing up cse seems to fix both  
the double float as well as single float case (which is not impacted  
by above patch).


2) For the double float case (as illustrated by above test case), can  
we twik compress_float_constant to not use the cost computation of  
RHS when LHS is store to a memory. This fixes the performance  
regressions and caused no regression. Attached patch is what I tried.


3) Any other approrach?

- Thanks, fariborz

Index: expr.c
===
RCS file: /cvs/gcc/gcc/gcc/expr.c,v
retrieving revision 1.778.4.5
diff -c -p -r1.778.4.5 expr.c
*** expr.c  13 Jul 2005 01:07:47 -  1.778.4.5
--- expr.c  10 Aug 2005 18:55:49 -
*** compress_float_constant (rtx x, rtx y)
*** 3187,3196 
 the extension.  */
  if (! (*insn_data[ic].operand[1].predicate) (trunc_y,  
srcmode))

continue;
! /* This is valid, but may not be cheaper than the original. */
! newcost = rtx_cost (gen_rtx_FLOAT_EXTEND (dstmode,  
trunc_y), SET);

! if (oldcost < newcost)
!   continue;
}
else if (float_extend_from_mem[dstmode][srcmode])
{
--- 3187,3199 
 the extension.  */
  if (! (*insn_data[ic].operand[1].predicate) (trunc_y,  
srcmode))

continue;
! if (!MEM_P (x))
!   {
! /* This is valid, but may not be cheaper than the  
original. */
! newcost = rtx_cost (gen_rtx_FLOAT_EXTEND (dstmode,  
trunc_y), SET);

! if (oldcost < newcost && (!MEM_P (x)) )
!   continue;
!   }
}
else if (float_extend_from_mem[dstmode][srcmode])
{








Re: [RFC] - Regression exposed by recent change to compress_float_constant

2005-08-10 Thread Andrew Pinski
> 
> Following patch has exposed an optimization shortcoming:
> 
> 2005-07-12  Dale Johannesen  <[EMAIL PROTECTED]>
> 
>  * expr.c (compress_float_constant):  Add cost check.
>  * config/rs6000.c (rs6000_rtx_cost):  Adjust FLOAT_EXTEND cost.

I think this is the same problem as PR 23098 which shows we fail to optimizate 
it
from before that change.

-- Pinski


Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread Ross Ridge
DJ Delorie wrote:
>Supporting #! in libiberty doesn't have to stop you from enhancing gcc
>anyway ;-)

Well, it's stopping a real fix for the MinGW build failure being made.
Adding #! support to libiberty won't work because the problem scripts
have MSYS/Cygwin paths for the shell (eg. "/bin/sh") that aren't likely
to be valid to plain Windows.

Ross Ridge



Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread DJ Delorie

> Well, it's stopping a real fix for the MinGW build failure being made.
> Adding #! support to libiberty won't work because the problem scripts
> have MSYS/Cygwin paths for the shell (eg. "/bin/sh") that aren't likely
> to be valid to plain Windows.

DJGPP solves this thusly:

  /* If INTERP is a Unix-style pathname, like "/bin/sh", we will try
 it with the usual extensions and, if that fails, will further
 search for the basename of the shell along the PATH; this
 allows to run Unix shell scripts without editing their first line.  */


Re: [RFC] - Regression exposed by recent change to compress_float_constant

2005-08-10 Thread Dale Johannesen

On Aug 10, 2005, at 12:43 PM, Fariborz Jahanian wrote:

Following patch has exposed an optimization shortcoming:

2005-07-12  Dale Johannesen  <[EMAIL PROTECTED]>

* expr.c (compress_float_constant):  Add cost check.
* config/rs6000.c (rs6000_rtx_cost):  Adjust FLOAT_EXTEND cost.

This patch results in generating worse code for the following test case:

1) Test case:

struct S {
float d1, d2, d3;

I believe you mean double not float; the RTL snippets you give indicate this.

(insn 12 7 13 0 (set (reg:SF 59)
(mem/u/i:SF (symbol_ref/u:SI ("*LC0") [flags 0x2]) [0 S4 A32])) -1 (nil)
(nil))

(insn 13 12 14 0 (set (mem/s/j:DF (reg/f:SI 58 [ D.1929 ]) [0 .d1+0 S8 A32])
(float_extend:DF (reg:SF 59))) -1 (nil)
(nil))

However, if you try your example with float as given, you see it does not do a 
direct store of constant 0 with or without the compress_float patch.  IMO the
compress_float patch does not really have anything to do with this problem;
before this patch the double case was working well by accident, my patch
exposed a problem farther downstream, which was always there for the float
case.

When I put that patch in, rth remarked:

While I certainly wouldn't expect fold_rtx to find out about this
all by itself, I'd have thought that there would have been a
REG_EQUIV or REG_EQUAL note that indicates that the end result is
the constant (const_double:DF 1.0), and use that in any simplification.

Indeed there is no such note, and I suspect adding it somewhere (expand?) would fix this.


Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread Marcin Dalecki


On 2005-08-10, at 19:05, Mark Mitchell wrote:


The even more correct solution is to not build anything with the  
compiler (including libgcc) until after it is installed.  Then, it  
will just look where it would normally look, and all will be well.


install host != build host

Most of the time if you do deilver software...

You just don't want the fresh instalation to involve trashing a  
working tool chain too.


However, I also recognize that we need to do something before 4.1  
to fix this problem and that we need something simple enough to be  
viable in that timeframe.  But, if Paolo can fix this without  
having to add #!, I think that would be great.




Re: Old machine cluster for GCC compile/testing

2005-08-10 Thread FX Coudert
That's a very nice offer. I think the idea of an automated patch 
boostrap & regtester is of much interest, and i can volunteer to set up 
the systems (if need be, i can move to the machines since i live in Paris).


Furthermore, it would be interesting if we could install, on some of 
those, a rather different OS than the typical linux or freebsd where 
developpers usually test their patches. I was thinking of Solaris, but 
the FSF might not want it install on this hardware (though i don't think 
it being non free is a relevant issue).


FX


Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread Andreas Schwab
Mark Mitchell <[EMAIL PROTECTED]> writes:

> The even more correct solution is to not build anything with the 
> compiler (including libgcc) until after it is installed.  Then, it will 
> just look where it would normally look, and all will be well.

You sure don't want to overwrite a compiler that is known to work with a
compiler that is incomplete, never tested, and perhaps completely broken.

Andreas.

-- 
Andreas Schwab, SuSE Labs, [EMAIL PROTECTED]
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread Mark Mitchell

Marcin Dalecki wrote:


On 2005-08-10, at 19:05, Mark Mitchell wrote:



The even more correct solution is to not build anything with the  
compiler (including libgcc) until after it is installed.  Then, it  
will just look where it would normally look, and all will be well.



install host != build host

Most of the time if you do deilver software...

You just don't want the fresh instalation to involve trashing a  working 
tool chain too.


I'm not sure what your point is -- but I'm quite familiar with building 
cross and Canadian cross toolchains.  If the GCC you're building can't 
run on the host system, then the whole discussion doesn't matter; you're 
not going to run the GCC in the build directory, in which case the 
symlinks we're talking about don't matter.


--
Mark Mitchell
CodeSourcery, LLC
[EMAIL PROTECTED]
(916) 791-8304


Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread Mark Mitchell

Andreas Schwab wrote:

Mark Mitchell <[EMAIL PROTECTED]> writes:


The even more correct solution is to not build anything with the 
compiler (including libgcc) until after it is installed.  Then, it will 
just look where it would normally look, and all will be well.



You sure don't want to overwrite a compiler that is known to work with a
compiler that is incomplete, never tested, and perhaps completely broken.


I certainly didn't mean to suggest that -- but that doesn't mean you 
can't install the compiler somewhere.  That's part of why people have 
worked hard to make it relocatable.  We've had this entire discussion 
before, and as far as I can tell, there's agreement-in-principle: you 
build things, install them in a staging area, and then copy/reinstall 
into a final location when you're done.  That avoids all the complicated 
symlinks/-B/-L/-I options -- which are not only complex, but also have 
been known to mask problems in the installed compiler.  (Things work at 
build time, but not at install time.)


--
Mark Mitchell
CodeSourcery, LLC
[EMAIL PROTECTED]
(916) 791-8304


Re: [gfortran] add ISATTY and TTYNAM intrinsics

2005-08-10 Thread Andrew Pinski


On Aug 10, 2005, at 8:54 AM, Jack Howarth wrote:


FX,
I forgot to mention that since the gcc cvs I built last night now
contains your ISATTY and TTYNAM intrinsics patch, I regressed the
portion of the xplor.patch which worked around the prior absence
of the ISATTY intrinsic in gfortran. The resulting xplor-nih build
works fine.
One other question. Do you know much c++? I had to make one change
to some buggy c++ code to allow gcc 4.0 and main branch to compile
xplor-nih...




I am trying to figure out if this is catching some new buggy c++ which
is no longer accepted by the g++ compiler in gcc 4.1 or if this is a
regression in that branch.


The code is invalid C++ as "friend class" does not define a forward
declaration.  Also for 4.1, the function norm is not considered as it
is declared after the use as 4.1

Both are invalid C++.
The example for the second issue is:

template class FixedVector;
template void  norm(const FixedVector& v);
template  T g(void);
template void f(void) { norm(g()); }
double norm(const double& v) {}
static void _wrap_sqrt__SWIGPY_1(){f();}

there is only one norm before f, so the overloaded set of norm in the 
template f is
just that one norm.  If you move the other norm before the f, it works 
as expected in

both GCC 4.1.0 and ICC in strict mode.

Thanks,
Andrew Pinski



Re: Old machine cluster for GCC compile/testing

2005-08-10 Thread Joe Buck
On Thu, Aug 11, 2005 at 12:12:30AM +0200, FX Coudert wrote:
> That's a very nice offer. I think the idea of an automated patch 
> boostrap & regtester is of much interest, and i can volunteer to set up 
> the systems (if need be, i can move to the machines since i live in Paris).
> 
> Furthermore, it would be interesting if we could install, on some of 
> those, a rather different OS than the typical linux or freebsd where 
> developpers usually test their patches. I was thinking of Solaris, but 
> the FSF might not want it install on this hardware (though i don't think 
> it being non free is a relevant issue).

Please check with the FSF about what's OK to install on a machine that is
under their control.  Maybe Solaris is now "free enough", but that's for
them to decide (the kernel has been freed, but perhaps there are
proprietary components elsewhere in the OS?).  The BSDs or GNU/Darwin
should be acceptable choices, since they are free software, and it would
be nice to have better relations with the BSD world.





Question of the DFA scheduler

2005-08-10 Thread Ling-hua Tseng

I'm porting gcc 4.0.1 to a new VLIW architecture.
Some of its function units doesn't have internal hardware pipeline forwarding,
so I need to insert "nop" instructions in order to resovle the data hazard.

I used the automata based pipeline description for my ports,
I described the data latency time by `define_insn_reservation',
and I'm trying to insert the "nop" in the hook TARGET_MACHINE_DEPENDENT_REORG.

The implementation of this hook is simple.
I just run the DFA scheduler again manually,
and I just let the insns to be issued as well as 2nd sched pass.
The following codes are my implementation:
[TOP]---
void unicore_reorg(void)
{
   bool func_start = true;
   int stalls;
   rtx insn = NULL, new_insn;
   state_t dfa_state = alloca(state_size());
   
   dfa_start();

   state_reset(dfa_state);

   for(insn = get_insns(); insn ; insn = NEXT_INSN(insn)) {
   if(!executable_insn_p(insn)) continue;
   
   if(!func_start && GET_MODE(insn) == TImode) state_transition(dfa_state, NULL);

   stalls = state_transition(dfa_state, insn);
   
   if(stalls == 1) {

   state_transition(dfa_state, NULL);
   state_transition(dfa_state, insn);
   }
   if(stalls > 1) {
   while(--stalls) {
   new_insn = emit_insn_before(gen_nop(), insn);
   if(flag_schedule_insns_after_reload) 
PUT_MODE(new_insn, TImode);
   recog_memoized(new_insn);
   state_transition(dfa_state, NULL);
   }
   state_transition(dfa_state, NULL);
   state_transition(dfa_state, insn);
   }
   
   func_start = false;

   }
   dfa_finish();
}
[END]---


But I still saw that the two instructions can be issued in the continuous 
cycles:
[TOP]---
@(insn:TI 48 50 49 (set (reg:SI 32 d0 [134])
@(minus:SI (reg:SI 6 r6 [orig:135 FLAG ] [135])
@(reg:SI 33 d1))) 48 {*subsi3} (insn_list:REG_DEP_TRUE 175 (nil))
@(expr_list:REG_EQUAL (neg:SI (reg:SI 3 r3 [orig:122 D.1804 ] [122]))
@(nil)))  
   sub .m0 d0, r6, d1  @ 48*subsi3/4   [length = 4]

@(insn:TI 49 48 176 (set (reg:SI 32 d0 [136])
@(smax:SI (reg:SI 3 r3 [orig:122 D.1804 ] [122])
@(reg:SI 32 d0 [134]))) 66 {smaxsi3} (insn_list:REG_DEP_TRUE 48 
(insn_list:REG_DEP_TRUE 42 (nil)))
@(expr_list:REG_DEAD (reg:SI 3 r3 [orig:122 D.1804 ] [122])
@(nil)))  
   max .m0 d0, r3, d0  @ 49smaxsi3/2   [length = 4]

[END]---
The destination operand of the `sub' instruction, d0, will be written back in 
the 4th cycle,
and the instruction `max' will use it as source operand (i.e., there is a true 
data dependency).

I figured out that the state_transition() returns -1 when I issuing the `max' 
instruction,
and I figured out it only returns > 0 when "hardware structural hazard" occured.

Are there any solutions for me to insert 4 nops between the 2 insns?
Thanks a lot.




Re: Ada character types : tree code and DW_AT_encoding

2005-08-10 Thread James E Wilson

Jerome Guitton wrote:

Two solutions : we can either change the tree code to CHAR_TYPE or add a test
to detect Ada character types in the INTEGER_TYPE case, like it is done for
C:
...
The first solution would probably be cleaner, but it would mean that
Ada would be the only supported langage to use CHAR_TYPE. The second
one would be safer.


Belatedly following up on this...

Java uses CHAR_TYPE.  So Ada would not be the only supported language 
using it if you switched to it.


The C support isn't quite right.  There is no attempt to handle wchar_t 
here, which is obviously a character type.  We would need more 
exceptions to get this right.


I think it would be better if the language front ends switched to using 
CHAR_TYPE for character types.  Otherwise the debug output routines need 
a lot of code to tell which integer types are actually character types, 
and this is going to be hard to get right.  It is easier if the language 
front ends choose the right type to begin with.


This still may not solve the C front end problem though, as the C 
language doesn't actually have distinct character types separate from 
integer types.  We don't need the C hacks here for gdb, as gdb knows 
that single byte integer types are sometimes used for holding 
characters.  This stuff still might be useful for other debuggers though.


Looking at the gdb code in dwarf2read.c, it looks like the distinction 
between DW_ATE_unsigned and DW_ATE_unsigned_char is irrelevant as it 
handles them the same.  So unless you are planning to do some gdb work, 
it doesn't matter which one gcc emits.  Or maybe you are using a 
different debugger that does care?

--
Jim Wilson, GNU Tools Support, http://www.specifix.com


Re: Ada character types : tree code and DW_AT_encoding

2005-08-10 Thread Tom Tromey
> "Jim" == James E Wilson <[EMAIL PROTECTED]> writes:

Jim> Java uses CHAR_TYPE.  So Ada would not be the only supported language
Jim> using it if you switched to it.

I was under the impression that CHAR_TYPE was deprecated, so I
purposely avoided it in gcjx.  I'm not sure where I got that
impression though.

Jim> I think it would be better if the language front ends switched to
Jim> using CHAR_TYPE for character types.  Otherwise the debug output
Jim> routines need a lot of code to tell which integer types are actually
Jim> character types, and this is going to be hard to get right.

Interesting.  Good thing to document somewhere.

Tom


gcc 4.0.1 on mac os x tiger

2005-08-10 Thread Bobby Philip

powerpc-apple-darwin8.2.0

Using built-in specs.
Target: powerpc-apple-darwin8.2.0
Configured with: ../gcc-4.0.1/configure --enable-languages=c,c+ 
+,f95,java --program-suffix=-4.0.1 --with-gmp=/sw --with-mpfr=/sw

Thread model: posix
gcc version 4.0.1



Re: [patch] Fix i386-mingw32 build failure

2005-08-10 Thread Ross Ridge
> DJGPP solves this thusly:
> 
>   /* If INTERP is a Unix-style pathname, like "/bin/sh", we will try
>  it with the usual extensions and, if that fails, will further
>  search for the basename of the shell along the PATH; this
>  allows to run Unix shell scripts without editing their first line.  */
 
It's likely to work in this case, but it doesn't guarantee that the
shell that gets executed uses the same MSYS/Cygwin enviroment as the
rest of the build process.

Ross Ridge

-- 
 l/  //   Ross Ridge -- The Great HTMU
[oo][oo]  [EMAIL PROTECTED]
-()-/()/  http://www.csclub.uwaterloo.ca/u/rridge/ 
 db  //