Re: The Linux binutils 2.18.50.0.9 is released

2008-08-25 Thread René Rebe

Hi,

H.J. Lu wrote:

This is the beta release of binutils 2.18.50.0.9 for Linux, which is
based on binutils 2008 0822 in CVS on sourceware.org plus various
changes. It is purely for Linux.
  

...

1. binutils-2.18.50.0.9.tar.bz2. Source code.
2. binutils-2.18.50.0.8-2.18.50.0.9.diff.bz2. Patch against the
   previous beta source code.
3. binutils-2.18.50.0.9.i686.tar.bz2. IA-32 binary tar ball for RedHat
   EL 4.
4. binutils-2.18.50.0.9.ia64.tar.bz2. IA-64 binary tar ball for RedHat
   EL 4.
5. binutils-2.18.50.0.9.x86_64.tar.bz2. X64_64 binary tar ball for RedHat
   EL 4.

The primary sites for the beta Linux binutils are:

1. http://www.kernel.org/pub/linux/devel/binutils/
  

Looks to me as if the tarball is missing the .tar extension.

Greetings,

--
 René Rebe - ExactCODE GmbH - Europe, Germany, Berlin
 http://exactcode.de | http://t2-project.org | http://rene.rebe.name



Arquivo - REDE INDUSTRIAL MUNDIAL

2008-08-25 Thread Moderador do grupo redeindustrial

  Amigos,

  Como é do conhecimento de todos , este fórum tem a presença de diversos 
amigos , profissionais de outros países. Temos aqui conosco argentinos, 
Bolivianos, Cubanos, Paraguaios, uruguaios, chilenos, portugueses, Espanhois, 
cubanos, angolanos, americanos, etc. Quero , então lembrar a você que , neste 
fórum você pode trocar experiências com pessoas do Brasil e de outras nações, 
pois vocÊ passa a fazer parte desta grande família do mundo globalizado (somos 
milhares).

  É importante que todos nós saibamos da existência destes profissionais em 
nossa rede , para que possamos trocar informações sobre os mais diversos temas 
industriais (manutenção, produção, qualidade, segurança, administração, etc) a 
fim de que todos nós , neste mundo globalizado, possamos crescer ainda mais, 
com a troca de informações.

  Esta Rede NÃO TEM FRONTEIRA, POIS É UMA REDE MUNDIAL.

 p.s. - Para quem está chegando agora, e deseja ter conhecimento dos assuntos 
já discutidos no fórum, acesse http://br.groups.yahoo.com/group/redeindustrial 
e faça buscas em MENSAGENS.

 Grande abraço a todos.

 Abrahão Lima
 Coordenador Rede Industrial



Arquivo - REDE INDUSTRIAL MUNDIAL

2008-08-25 Thread Moderador do grupo redeindustrial

  Amigos,

  Como é do conhecimento de todos , este fórum tem a presença de diversos 
amigos , profissionais de outros países. Temos aqui conosco argentinos, 
Bolivianos, Cubanos, Paraguaios, uruguaios, chilenos, portugueses, Espanhois, 
cubanos, angolanos, americanos, etc. Quero , então lembrar a você que , neste 
fórum você pode trocar experiências com pessoas do Brasil e de outras nações, 
pois vocÊ passa a fazer parte desta grande família do mundo globalizado (somos 
milhares).

  É importante que todos nós saibamos da existência destes profissionais em 
nossa rede , para que possamos trocar informações sobre os mais diversos temas 
industriais (manutenção, produção, qualidade, segurança, administração, etc) a 
fim de que todos nós , neste mundo globalizado, possamos crescer ainda mais, 
com a troca de informações.

  Esta Rede NÃO TEM FRONTEIRA, POIS É UMA REDE MUNDIAL.

 p.s. - Para quem está chegando agora, e deseja ter conhecimento dos assuntos 
já discutidos no fórum, acesse http://br.groups.yahoo.com/group/redeindustrial 
e faça buscas em MENSAGENS.

 Grande abraço a todos.

 Abrahão Lima
 Coordenador Rede Industrial



Re: The Linux binutils 2.18.50.0.9 is released

2008-08-25 Thread H.J. Lu
On Mon, Aug 25, 2008 at 3:28 AM, René Rebe <[EMAIL PROTECTED]> wrote:
> Hi,
>
> H.J. Lu wrote:
>>
>> This is the beta release of binutils 2.18.50.0.9 for Linux, which is
>> based on binutils 2008 0822 in CVS on sourceware.org plus various
>> changes. It is purely for Linux.
>>
>
> ...
>>
>> 1. binutils-2.18.50.0.9.tar.bz2. Source code.

> Looks to me as if the tarball is missing the .tar extension.
>

It should be fixed now. Thanks.



-- 
H.J.


Re: Better GCC diagnostics

2008-08-25 Thread Arnaud Charlet
> > Well, clearly, the preprocessor and handling of #include is very
> > C/C++ specific, and not used by Ada or Fortran.
> 
> Both Ada and Fortran are linked with libcpp.a.

Sure, because as we've said, libcpp is not modular enough. Clearly Ada does not
need to link with A C preprocessor at all.

> Even if you do not use line-map.o, the middle-end does, so you still
> have the duplication.

Right, this is the only part that is indeed shared and for which Ada requires
libcpp.

> > It has also handled column info from day one (and we would not want any
> > of the e.g. -fshow-column stuff: why would you *not* want to display
> > column information ? :-)
> 
> Yes, why?

So, I assume there are plans to get rid of -fshow-column switch (and make it the
only default).

> The point is that other front-ends would be able to use it. And
> non-Ada developers would be able to fix it and extend it. Moreover,

I certainly have no problem giving access to other front-ends to GNAT's
capability here, as long as everyone is cool with using Ada in other front-ends,
I'm certainly all for it.

> even if GNAT won't use it, moving all this out of libcpp and making it
> modular would allow to link only to the things that you really need.

Definitely.

> Finally, the middle-end is using it anyway, so gnat is using it.

Sure. Using line-map is one thing, using a C preprocessor is another.

Arno


Re: Better GCC diagnostics

2008-08-25 Thread Paolo Bonzini

>> Even if you do not use line-map.o, the middle-end does, so you still
>> have the duplication.
> 
> Right, this is the only part that is indeed shared and for which Ada requires
> libcpp.

There are exactly 6 uses of linemap functions in libcpp.  They could be
replaced with a handful of function pointers, moving line-map.c to gcc.

There are 2 more uses in makedepend.c, which could define its own dummy
functions because it does not care about locations at all.

Paolo


Re: Better GCC diagnostics

2008-08-25 Thread Manuel López-Ibáñez
2008/8/25 Arnaud Charlet <[EMAIL PROTECTED]>:
>> Even if you do not use line-map.o, the middle-end does, so you still
>> have the duplication.
>
> Right, this is the only part that is indeed shared and for which Ada requires
> libcpp.

My point is that if the rest of the compiler extends diagnostics.c to
handle caret and ranges and all other features, Ada would need carry
all that around even if gnat has its own diagnostics machinery. But
perhaps that is OK. I am not trying to force anything just make you
aware of the situation.

>> > It has also handled column info from day one (and we would not want any
>> > of the e.g. -fshow-column stuff: why would you *not* want to display
>> > column information ? :-)
>>
>> Yes, why?
>
> So, I assume there are plans to get rid of -fshow-column switch (and make it 
> the
> only default).

No, I cannot decide such thing. I would be happy to write such patch, though.

>> The point is that other front-ends would be able to use it. And
>> non-Ada developers would be able to fix it and extend it. Moreover,
>
> I certainly have no problem giving access to other front-ends to GNAT's
> capability here, as long as everyone is cool with using Ada in other 
> front-ends,
> I'm certainly all for it.

I see that as very unrealistic, GCC development is already complex
enough, so we will have to live with the duplication. I just wanted to
make you notice that even if location_t is moved out of libcpp, GNAT
will still link with diagnostic.c and whatever other diagnostics
features that will be implemented. The burden of the duplication would
be on GNAT executable, the other front-ends do not carry GNAT's code.
Probably the effect of it is negligible, anyway.

>> Finally, the middle-end is using it anyway, so gnat is using it.
>
> Sure. Using line-map is one thing, using a C preprocessor is another.

Again, my point is that even if GNAT has all these features already,
GNAT should be interested in this since it means moving stuff out of
libcpp which will allow to break that dependency. C/C++ could very
well implement caret diagnostics and everything else within libcpp, so
the dependency of GNAT with libcpp would be actually harder to break.
My fear is that if the other FEs do not care about this issue "because
we have it already", then this is exactly what will happen.

Cheers,

Manuel.


Re: Better GCC diagnostics

2008-08-25 Thread Manuel López-Ibáñez
2008/8/25 Paolo Bonzini <[EMAIL PROTECTED]>:
>
>>> Even if you do not use line-map.o, the middle-end does, so you still
>>> have the duplication.
>>
>> Right, this is the only part that is indeed shared and for which Ada requires
>> libcpp.
>
> There are exactly 6 uses of linemap functions in libcpp.  They could be
> replaced with a handful of function pointers, moving line-map.c to gcc.

You have to count all uses of:

SOURCE_LINE, SOURCE_COLUMN, MAIN_FILE_P, LAST_SOURCE_LINE,
LAST_SOURCE_LINE_LOCATION, and LINEMAP_POSITION_FOR_COLUMN

which are all macros. Also, line-map functions seem to be in the
critical path, so the extra dereferencing may be noticeable.

> There are 2 more uses in makedepend.c, which could define its own dummy
> functions because it does not care about locations at all.

Sure about that? line-map.h seems pretty important to handle the include stack.

Cheers,

Manuel.


Re: Better GCC diagnostics

2008-08-25 Thread Paolo Bonzini
Manuel López-Ibáñez wrote:
> 2008/8/25 Paolo Bonzini <[EMAIL PROTECTED]>:
 Even if you do not use line-map.o, the middle-end does, so you still
 have the duplication.
>>> Right, this is the only part that is indeed shared and for which Ada 
>>> requires
>>> libcpp.
>> There are exactly 6 uses of linemap functions in libcpp.  They could be
>> replaced with a handful of function pointers, moving line-map.c to gcc.
> 
> You have to count all uses of:
> 
> SOURCE_LINE, SOURCE_COLUMN, MAIN_FILE_P, LAST_SOURCE_LINE,
> LAST_SOURCE_LINE_LOCATION, and LINEMAP_POSITION_FOR_COLUMN
> 
> which are all macros.

Yes, but libcpp could still provide the *interface* of line-map.h (the
macros), and leave the actual implementation of the data structure to
the client.

> Also, line-map functions seem to be in the
> critical path, so the extra dereferencing may be noticeable.

That's true.  Unless we lexed everything up front, in which case one
could hope that the indirect branches would be predicted well.  In fact,
I'm curious about how good/bad the branch predictor works for GCC.  My
wild guess: awfully.

> Sure about that? line-map.h seems pretty important to handle the include 
> stack.

As far as I could see, all the dependency stuff is in mkdeps.c; maybe it
could use the line-map infrastructure more.  Of course, in that case
moving line-map.c out of libcpp would mean moving mkdeps.c too -- and
not in gcc/, but rather in its own library so that makedepend can use
it... at which point you wonder if it was really a good idea...

Paolo


Re: Better GCC diagnostics

2008-08-25 Thread Manuel López-Ibáñez
2008/8/25 Paolo Bonzini <[EMAIL PROTECTED]>:
>
> As far as I could see, all the dependency stuff is in mkdeps.c; maybe it
> could use the line-map infrastructure more.  Of course, in that case
> moving line-map.c out of libcpp would mean moving mkdeps.c too -- and
> not in gcc/, but rather in its own library so that makedepend can use
> it... at which point you wonder if it was really a good idea...

Well, my opinion is that line-map.c should be in its own
library/object file independent of libcpp but libcpp (and makedepend
and cc1 and gnat) should still be able to use it, preferably directly
and not through pointers. Not sure how to do this but I think it is
what we do with libiberty, don't we? Perhaps there is an even easier
way.

The same should happen with diagnostic.[ch].

Cheers,

Manuel.


Re: Better GCC diagnostics

2008-08-25 Thread Tobias Burnus

Manuel López-Ibáñez wrote:

Again, my point is that even if GNAT has all these features already,
GNAT should be interested in this since it means moving stuff out of
libcpp which will allow to break that dependency. C/C++ could very
well implement caret diagnostics and everything else within libcpp, so
the dependency of GNAT with libcpp would be actually harder to break.
My fear is that if the other FEs do not care about this issue "because
we have it already", then this is exactly what will happen.


Fortran is probably an example of don't care: Fortran already uses caret 
diagnostics, but it depends also on libcpp as several Fortran programs 
require CPP preprocessing.


Tobias



Re: REAL(16) ...on x86/x86-64

2008-08-25 Thread Jerry DeLisle

Steve Kargl wrote:

On Mon, Aug 25, 2008 at 03:15:42PM -0700, Steve Kargl wrote:

On Mon, Aug 25, 2008 at 11:50:16PM +0200, Dominique Dhumieres wrote:

REAL(16) needs to be done in software -- on x86, x86-64 -- as it is not
supported in hardware; if you want to use more than REAL(8) on x86,
x86-64 you can use REAL(10).  Or you use a system such as PowerPC which
supports REAL(16) in silicon.
As far as I can tell, the ifc implementation is a "real" one where the 
full 128 bits are used to code the real number.  So far i did not have the 
time to play with it.


Now concerning gfortran and since gcc requires gmp and mpfr, how difficult 
(efficient) would it be to use these libraries to implement REAL(xxx)?


Getting +, -, *, and / working is almost trivial.  The hard part is 
getting REAL(16) working in all the fun corners of the standard 
as well as getting IO working.  Here's a start where one may need

to distinguish between hardware FP and software emulation.




With the patch I sent earlier with an off-by-1 fix in exponents, I get

 Kind: 4 8 10 16
Precision: 6 15 18 33
   Digits: 24 53 64 113
Radix: 2 2 2 2
Min. exp.: -125 -1021 -16381 -16381
Max. exp.: 128 1024 16384 16384

on x86_64-*-freebsd.

program probe
   real(4)  a
   real(8)  b
   real(10) c
   real(16) d
   print '(A,4(I0,x))', ' Kind: ', kind(a), kind(b), kind(c), kind(d)
   print '(A,4(I0,x))', 'Precision: ', precision(a), precision(b), &
   &  precision(c), precision(d)
   print '(A,4(I0,x))', '   Digits: ', digits(a), digits(b), digits(c), &
   &  digits(d)
   print '(A,4(I0,x))', 'Radix: ', radix(a), radix(b), radix(c), radix(d)
   print '(A,4(I0,x))', 'Min. exp.: ', minexponent(a), minexponent(b), &
   &  minexponent(c), minexponent(d)
   print '(A,4(I0,x))', 'Max. exp.: ', maxexponent(a), maxexponent(b), &
   &  maxexponent(c), maxexponent(d)
end program probe


This looks like a nice start.  We already have support for real(16) I/O working 
so that will be a minor piece.


There exists float-128 routines within the gcc libraries now.  We need to figure 
out how to adapt/configure and use these.


Steve, will you carry this patch forward to get +,-,*, and / working?

In the meantime, is there someone knowledgeable of the flt-128 library that can 
guide us in this area.  Maybe between Steve and I we can get it working with 
some mentoring on the configuration stuff. (target gcc 4.5)


Jerry



Re: REAL(16) ...on x86/x86-64

2008-08-25 Thread Steve Kargl
On Mon, Aug 25, 2008 at 07:09:12PM -0700, Jerry DeLisle wrote:
> Steve Kargl wrote:
> >On Mon, Aug 25, 2008 at 03:15:42PM -0700, Steve Kargl wrote:
> >>On Mon, Aug 25, 2008 at 11:50:16PM +0200, Dominique Dhumieres wrote:
> REAL(16) needs to be done in software -- on x86, x86-64 -- as it is not
> supported in hardware; if you want to use more than REAL(8) on x86,
> x86-64 you can use REAL(10).  Or you use a system such as PowerPC which
> supports REAL(16) in silicon.
> >>>As far as I can tell, the ifc implementation is a "real" one where the 
> >>>full 128 bits are used to code the real number.  So far i did not have 
> >>>the time to play with it.
> >>>
> >>>Now concerning gfortran and since gcc requires gmp and mpfr, how 
> >>>difficult (efficient) would it be to use these libraries to implement 
> >>>REAL(xxx)?
> >>>
> >>Getting +, -, *, and / working is almost trivial.  The hard part is 
> >>getting REAL(16) working in all the fun corners of the standard 
> >>as well as getting IO working.  Here's a start where one may need
> >>to distinguish between hardware FP and software emulation.
> >>
> >>
> >
> >With the patch I sent earlier with an off-by-1 fix in exponents, I get
> >
> > Kind: 4 8 10 16
> >Precision: 6 15 18 33
> >   Digits: 24 53 64 113
> >Radix: 2 2 2 2
> >Min. exp.: -125 -1021 -16381 -16381
> >Max. exp.: 128 1024 16384 16384
> >
> >on x86_64-*-freebsd.
> >
> This looks like a nice start.  We already have support for real(16) I/O 
> working so that will be a minor piece.

I think you'ld need to adapt the IO for software emulated FP. 
Everything would remain an mpfr_t type, so you (this is a
generic you) need to transfer mpfr_t during IO.

> There exists float-128 routines within the gcc libraries now.  We need to 
> figure out how to adapt/configure and use these.

I had the impression some would like to see real.c die.

> Steve, will you carry this patch forward to get +,-,*, and / working?
 
I don't have any plans to carry this any further.  It was just a pointer
to others where to start.  I'll note that if the REAL(16) stuff is 
completely implemented within framework of mpfr, then one can implement
-freal-bits=255,15.  This then can be used to define a real type
with 255 bits of precision and an exponent range of 2**15-3:2**15-1.
In trans-type, one does

  if (option.real_bits) then
  else
 what I already posted.
  end if

> In the meantime, is there someone knowledgeable of the flt-128 library that 
> can guide us in this area.  Maybe between Steve and I we can get it working 
> with some mentoring on the configuration stuff. (target gcc 4.5)

Well, my idea (based on Dominique's comment) is to keep everything
in a mpfr_t type.  For example, in the following code,

   real(16) x, y
   x = 1._16
   y = 2._16
   x = x + y
   end

The binary operator + ultimately gets translated to 

   mpfr_t tmp;
   mpfr_init(tmp, 113);
   mpfr_add(tmp, x, y, RND);
   mpfr_set(x, tmp, RND);
   mpfr_clear(tmp)

BTW, constant folding already works.

   program probe
   real(16) d, e
   d = 1.e0_16 + 3.14e1_16
   e = 2. / 3._16
   d =  4._16 * 3.3_16
   e = 42. - 8.4_16
   d = - 3._16
   d = sin(1.2345_16)
   a = sin(1.2345)
   end program probe

troutmask:sgk[204] gfc4x -o z -fdump-tree-original a.f90
troutmask:sgk[205] tail a.f90.003t.original 
  d = 3.2399987674048355921690540442e+1;
  e = 6.6345678342602127357824e-1;
  d = 1.313837024177960845270221e+1;
  e = 3.3600012325951644078309459558e+1;
  d = -3.0e+0;
  d = 9.43983323944511166155703552452566891228124607439110465785e-1;
  a = 9.439833164215087890625e-1;

Now, for something like a very basic binary operator, one needs
to convert a = b + c into similar mpfr code.  This can be done in
trans-expr.c(gfc_conv_expr_op) by short circuiting the logic. 

  if (expr->value.op.op1->ts.kind == 16 || expr->value.op.op2->ts.kind == 16)
{
  gfc_error_now ("Tsk! Tsk!  Need to convert op into mpfr call");
}

-- 
Steve


Re: c++0x {g++}4.4, =default definition outside template class fails{ to link}.

2008-08-25 Thread Simon Hill
Sorry Paolo, that definitely should have been.

=== THIS CODE FAILS TO LINK ===
template 
class foo {
  public:
foo() =default; // <<--- this works fine.
~foo();
};

template 
foo::~foo() =default; <<--- ERROR: This doesn't get built by the compiler.
// foo::~foo() {}; <<-- replacing with this line fixes the error.

int main() {

foo fi;

return 0;
}
===

Not
=== THIS CODE FAILS TO COMPILE ===
...


Still, shouldn't the  version of
"foo::~foo() =default;"
be built by the compiler since it's called by main().

Is this a bug? Should I update my gcc and go retest?
Does it fail to link for you? (or anyone else)?


Also, yes I am using a snapshot, I couldn't figure out how to get the
mainline (trunk?) 4.4 version, all I got was 4.3 using svn. Then again
I'm new to svn and building gcc.