Re: Clustering switch cases

2010-08-28 Thread Paulo J. Matos
On Fri, Aug 27, 2010 at 4:03 PM, Richard Guenther
 wrote:
>
> In fact we might want to move switch optimization up to the tree level
> (just because it's way easier to deal with there).  Thus, lower switch
> to a mixture of binary tree & jump-tables (possibly using perfect
> hashing).
>

Doing the optimisation at the tree-level was exactly my initial idea.
By splitting the switches at the tree-level, before expand_case, would
then allow for expand_case to transform it either to a jump table or
binary tree depending on the situation.

I will be looking at the patch Rahul posted and will try to see if I
can improve on it.

-- 
PMatos


Re: Delivery Status Notification (Failure)

2010-08-28 Thread FX
Tobias' address doesn't accept my mails. Tobias, I hope you get those I send to 
the list.

FX

Le 28 août 2010 à 11:58, Mail Delivery Subsystem  
a écrit :

> Delivery to the following recipient failed permanently:
> 
> bur...@net-b.de
> 
> Technical details of permanent failure: 
> Google tried to deliver your message, but it was rejected by the recipient 
> domain. We recommend contacting the other email provider for further 
> information about the cause of this error. The error that the other server 
> returned was: 550 550-Message rejected because mail-ww0-f45.google.com 
> [74.125.82.45] is
> 550-blacklisted at safe.dnsbl.sorbs.net see Currently Sending Spam See:
> 550 http://www.sorbs.net/lookup.shtml?74.125.82.45 (state 14).
> 
> - Original message -
> 
> Received: by 10.227.136.69 with SMTP id q5mr1807220wbt.202.1282989502477;
>Sat, 28 Aug 2010 02:58:22 -0700 (PDT)
> Return-Path: 
> Received: from [192.168.1.8] (85-170-0-58.rev.numericable.fr [85.170.0.58])
>by mx.google.com with ESMTPS id w29sm3068376weq.42.2010.08.28.02.58.19
>(version=TLSv1/SSLv3 cipher=RC4-MD5);
>Sat, 28 Aug 2010 02:58:21 -0700 (PDT)
> Subject: Re: __float128 FE patch
> References: <4c78c849.8040...@net-b.de>
> From: FX 
> Content-Type: text/plain; charset=utf-8
> In-Reply-To: <4c78c849.8040...@net-b.de>
> Date: Sat, 28 Aug 2010 11:34:58 +0200
> Message-Id: <3f3fe742-30aa-4550-a157-4256906c3...@gmail.com>
> To: Tobias Burnus 
> Content-Transfer-Encoding: quoted-printable
> Mime-Version: 1.0 (iPod Mail 8A400)
> X-Mailer: iPod Mail (8A400)
> 
> Will do tomorrow. For now I have reverted this line of the patch
> 
> FX
> 
> Le 28 août 2010 à 10:26, Tobias Burnus  a écrit :
> 
>> Hi FX,
>> 
>> First question: Will you look at Andrew's patch - or should I do it? I fear 
>> we are going to duplicate work.
>> 
>> Some observerations:
>> 
>> a) Andrew's patch also needs:
>> add:
>>  #undef LANG_HOOKS_REGISTER_BUILTIN_TYPE
>> after:
>>  #undef LANG_HOOKS_GET_ARRAY_DESCR_INFO
>> in f95-lang.c
>> 
>> b) gfc_register_builtin_type
>> - TREE_TYPE (complex_float128_type_node) = scalar_type;
>> +  TREE_TYPE (complex_float128_type_node) = type;
>> 
>> c) trans-types.c still mentions -fsoft-float.
>> 
>> d) It then compiles but segfault in float128_1.f90:
>> 
>> ==27126== Invalid read of size 8
>> ==27126==at 0x5CEE82: build_call_expr_loc_array (builtins.c:10731)
>> ==27126==by 0x5CF3DA: build_call_expr_loc (builtins.c:10764)
>> ==27126==by 0x58EA74: gfc_conv_intrinsic_function 
>> (trans-intrinsic.c:1098)
>> ==27126==by 0x582882: gfc_conv_function_expr (trans-expr.c:3872)
>> ==27126==by 0x57C359: gfc_trans_assignment_1 (trans-expr.c:5592)
>> ==27126==by 0x583089: gfc_trans_assignment (trans-expr.c:5766)
>> ==27126==by 0x55A495: trans_code (trans.c:1098)
>> ==27126==by 0x576211: gfc_generate_function_code (trans-decl.c:4641)
>> ==27126==by 0x51EF07: gfc_parse_file (parse.c:4229)
>> ==27126==by 0x5559F7: gfc_be_parse_file (f95-lang.c:243)
>> ==27126==by 0x849528: toplev_main (toplev.c:971)
>> ==27126==by 0x5FF7B7C: (below main) (in /lib64/libc-2.11.2.so)
>> 
>> Tobias


Re: Delivery Status Notification (Failure)

2010-08-28 Thread Tobias Burnus

FX wrote:

Tobias' address doesn't accept my mails. Tobias, I hope you get those I send to 
the list.


I have not seen any emails since 9:53 (CEST) at fortran@ - neither 
directly nor via gcc.gnu.org/ml/fortran.




Le 28 août 2010 à 11:58, Mail Delivery Subsystem  
a écrit :

Technical details of permanent failure:
Google tried to deliver your message, but it was rejected by the recipient 
domain. We recommend contacting the other email provider for further 
information about the cause of this error. The error that the other server 
returned was: 550 550-Message rejected because mail-ww0-f45.google.com 
[74.125.82.45] is
550-blacklisted at safe.dnsbl.sorbs.net see Currently Sending Spam See:
550 http://www.sorbs.net/lookup.shtml?74.125.82.45 (state 14).


That's a stupid anti-spam measure of my provider. I think I am going to 
change the provider / mail service. Not even delisting seems to be 
possible without paying $50 (not to the provider but to the SORBS 
service) - and my provider refuses to disable the service. It even 
blocked me once (the dynamic IP was blocked) - because someone else was 
sending spam 2 years ago ... reconnecting (new IP) worked in that case - 
as did delisting (after several hours).




Will do tomorrow. For now I have reverted this line of the patch

Le 28 août 2010 à 10:26, Tobias Burnus  a écrit :

First question: Will you look at Andrew's patch - or should I do it? I fear we 
are going to duplicate work.


OK. Thus, I either work on it today or leave it to you.

Tobias

PS: You could use my university address (cf. CC list), which hopefully 
works.


Problems with upstream versions of gmp, mpfr, and mpc [Was: Bug in Build System of gcc-4.5.1? Cannot Find libmpc.so.2]

2010-08-28 Thread Andrew Haley
[ Redirect to gcc.  This is a dev issue. ]

On 08/27/2010 10:39 PM, Tom Browder wrote:
>> On Fri, Aug 27, 2010 at 09:17, Andrew Haley  wrote:
>>> However, just running download_prerequisites is, IMVHO, the only sane way
>>> to do it.
>
> That's the solution I used, and I got a good build--thanks for the tip, 
> Andrew.
>
> I think what we have here is a gcc dependence on specific versions of
> gmp, mpfr, and mpc--more than is indicated in the installation
> instructions.  I have used later versions of all of them and they
> cause interdependency problems of all sorts with later rerequisites.

I'm very sceptical about "or any later version" instructions when
building the gcc prerequisites.  In practice this can never be certain
to work, because the upstream maintainers of these tools can change
them in ways that break gcc.

Somehow, we need to keep an eye on these issues so that if a new
version of a library changes in a way that breaks the gcc build we
notice.  But I don't think we have any mechanism to do that at
present.

Andrew.


Re: Optimization Switches

2010-08-28 Thread Sharjeel Imam

On Friday 27 August 2010 06:07 AM, Paul Brook wrote:

Hi,
I wish to selectively enable specific optimizations to observe its effect
on the source. My project requires me to do this analysis. It seemed, the
-f* flags would enable me to do that. But it turns out that individual
optimizations can't be enabled like that, and all the optimizations at a
specific level gets enabled when I use a  -Ox switch. This faq  at
http://gcc.gnu.org/wiki/FAQ#optimization-options, says this too.

So here are my two questions :

a) Is there any way to observe the effect of a particular optimization,
without the obvious option of using a lot of -fno switches.
b) And do the -f* switches serve any purpose, if I can't enable individual
optimizations using them.
 

I suspect that in practice that this isn't a particularly interesting
question.  Optimizations often interact with each other in complex ways, with
the end result being significantly different to the naive sum of their parts.

Paul
   
This is precisely what I want, segregating the effect of every single 
optimization. :)

--
Sharjeel


Re: Optimization Switches

2010-08-28 Thread Sharjeel Imam

On Thursday 26 August 2010 11:02 PM, Jonathan Wakely wrote:

On 26 August 2010 12:56,  wrote:
   

a) Is there any way to observe the effect of a particular optimization,
without the obvious option of using a lot of -fno switches.
b) And do the -f* switches serve any purpose, if I can't enable individual
optimizations using them.
 

You need an optimisation option, -Ox, to enable optimisations, but you
don't have to use -O2 to get optimisations that are normally enabled
by -O2, e.g. -O1 -fstrict-aliasing will enable strict aliasing.

So to answer the first question, use -O1, turn off the O1
optimisations you don't want, and selectively enable the ones you do
want.
   

Thanks a lot.


Re: Problems with upstream versions of gmp, mpfr, and mpc [Was: Bug in Build System of gcc-4.5.1? Cannot Find libmpc.so.2]

2010-08-28 Thread Eric Botcazou
> I'm very sceptical about "or any later version" instructions when
> building the gcc prerequisites.  In practice this can never be certain
> to work, because the upstream maintainers of these tools can change
> them in ways that break gcc.

Indeed, on the SPARC we seem to have problems (miscompilations: fortran/45277, 
target/45363, c/45407) with any newer versions of GMP/MPFR/MPC.  So I'm going 
to add a blurb to the platform-specific instructions about that.

> Somehow, we need to keep an eye on these issues so that if a new
> version of a library changes in a way that breaks the gcc build we
> notice.  But I don't think we have any mechanism to do that at
> present.

Yes, I think we should have recommended versions for the 3rd party libraries.

-- 
Eric Botcazou


Re: Guidance needed: hi-level steps to track an object until its destruction

2010-08-28 Thread Basile Starynkevitch
On Thu, 2010-08-26 at 18:16 -0700, Jeff Saremi wrote:
> I'm hoping someone here could take the time to outline what I need to do (i'm 
> not looking for code but if you point me to some i'd appreciate it).
> 
> I'd like to track an object from the it's created until it's destroyed (in 
> C++). And then see if a certain method of it is called or not. To keep it 
> short we can limit this to one function at the beginning of which an object 
> gets created and at the end of it the object goes out of scope.
> And i'm guessing this can be done via one a pass at the right time. I guess 
> before gimplification or being converted to RTL and such.


I am not sure that is easily feasible. I would believe it is impossible.

Within the compiler (or inside a GCC plugin, or inside a GCC extension
coded in MELT), you probably are able change/inspect C++ classes & every
other declaration any compiler is tracking. You are also able to find
every occurrence of variables containing a pointer to such classes.

However, you are apparently willing to track a single *instance* of such
a class, and this instance is in the execution of the compiled program
[not inside the compiler]. This means that you are able to deal with all
the aliasing & pointer equivalence issues (a task known to be
impossible). How can the compiler surely know that pointer p in [a
particular instruction of] method YourClass::foo() is never (or
sometimes, or always) pointing to the same instance -in the running
process of the compiled program- as pointer q in method yourclass::bar()

Or perhaps my English is so weak that I misunderstood you. If that is
the case, apologies.

Or maybe you want to instrument your compiler so that for every code
emitted for method yourclass::gee() you add a first block which checks
that the this reciever is not a given pointer.

In other words & C++ parlance, you could (this is doable, but not
trivial) hack the compiler so that at the start of every method (i.e.
member function in C++) the equivalent of the following C++ code has
been magically added

  extern "C" YourClass* hunted_yourclass_pointer;
  extern "C" void some_error_routine(void);

  if (this == hunted_yourclass_pointer) 
some_error_routine();

But I am not sure you want to do that.

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



Re: Guidance needed: hi-level steps to track an object until its destruction

2010-08-28 Thread Jeff Saremi
Basile,
you fully understood what I was asking. And I think I understood that I may 
have to rethink what I wanted to do since the effort is seemingly out-weighing 
the benefits.
thanks again.
jeff

--- On Sat, 8/28/10, Basile Starynkevitch  wrote:

> From: Basile Starynkevitch 
> Subject: Re: Guidance needed: hi-level steps to track an object until its 
> destruction
> To: "Jeff Saremi" 
> Cc: gcc@gcc.gnu.org
> Received: Saturday, August 28, 2010, 1:05 PM
> On Thu, 2010-08-26 at 18:16 -0700,
> Jeff Saremi wrote:
> > I'm hoping someone here could take the time to outline
> what I need to do (i'm not looking for code but if you point
> me to some i'd appreciate it).
> > 
> > I'd like to track an object from the it's created
> until it's destroyed (in C++). And then see if a certain
> method of it is called or not. To keep it short we can limit
> this to one function at the beginning of which an object
> gets created and at the end of it the object goes out of
> scope.
> > And i'm guessing this can be done via one a pass at
> the right time. I guess before gimplification or being
> converted to RTL and such.
> 
> 
> I am not sure that is easily feasible. I would believe it
> is impossible.
> 
> Within the compiler (or inside a GCC plugin, or inside a
> GCC extension
> coded in MELT), you probably are able change/inspect C++
> classes & every
> other declaration any compiler is tracking. You are also
> able to find
> every occurrence of variables containing a pointer to such
> classes.
> 
> However, you are apparently willing to track a single
> *instance* of such
> a class, and this instance is in the execution of the
> compiled program
> [not inside the compiler]. This means that you are able to
> deal with all
> the aliasing & pointer equivalence issues (a task known
> to be
> impossible). How can the compiler surely know that pointer
> p in [a
> particular instruction of] method YourClass::foo() is never
> (or
> sometimes, or always) pointing to the same instance -in the
> running
> process of the compiled program- as pointer q in method
> yourclass::bar()
> 
> Or perhaps my English is so weak that I misunderstood you.
> If that is
> the case, apologies.
> 
> Or maybe you want to instrument your compiler so that for
> every code
> emitted for method yourclass::gee() you add a first block
> which checks
> that the this reciever is not a given pointer.
> 
> In other words & C++ parlance, you could (this is
> doable, but not
> trivial) hack the compiler so that at the start of every
> method (i.e.
> member function in C++) the equivalent of the following C++
> code has
> been magically added
> 
>   extern "C" YourClass* hunted_yourclass_pointer;
>   extern "C" void some_error_routine(void);
> 
>   if (this == hunted_yourclass_pointer) 
>     some_error_routine();
> 
> But I am not sure you want to do that.
> 
> Cheers.
> -- 
> Basile STARYNKEVITCH     
>    http://starynkevitch.net/Basile/
> email: basilestarynkevitchnet mobile:
> +33 6 8501 2359
> 8, rue de la Faiencerie, 92340 Bourg La Reine, France
> *** opinions {are only mine, sont seulement les miennes}
> ***
> 
>



Re: Problems with upstream versions of gmp, mpfr, and mpc [Was: Bug in Build System of gcc-4.5.1? Cannot Find libmpc.so.2]

2010-08-28 Thread NightStrike
On Sat, Aug 28, 2010 at 12:45 PM, Eric Botcazou  wrote:
>> I'm very sceptical about "or any later version" instructions when
>> building the gcc prerequisites.  In practice this can never be certain
>> to work, because the upstream maintainers of these tools can change
>> them in ways that break gcc.
>
> Indeed, on the SPARC we seem to have problems (miscompilations: fortran/45277,
> target/45363, c/45407) with any newer versions of GMP/MPFR/MPC.  So I'm going
> to add a blurb to the platform-specific instructions about that.

Wouldn't it be worthwhile to push fixes upstream?  Granted, doing so
for GMP is a Herculean task, but it's important to make sure that
dependencies stay working, even past the minimum requirement version.


Re: Problems with upstream versions of gmp, mpfr, and mpc [Was: Bug in Build System of gcc-4.5.1? Cannot Find libmpc.so.2]

2010-08-28 Thread Tom Browder
On Sat, Aug 28, 2010 at 12:43, NightStrike  wrote:
> On Sat, Aug 28, 2010 at 12:45 PM, Eric Botcazou  wrote:
>>> I'm very sceptical about "or any later version" instructions when
>>> building the gcc prerequisites.  In practice this can never be certain
>>> to work, because the upstream maintainers of these tools can change
>>> them in ways that break gcc.

I have had pretty good luck now by using the contributed script
"http://gcc.gnu.org/svn/gcc/trunk/contrib/download_prerequisites";
suggested to me by Andrew Haley.  That, IMHO, should be on the gcc
build instructions page with a link to the script and instructions to
run it in the unpacked gcc sources directory.  That should minimize
build problems for released versions.

Regards,

-Tom

Thomas. M. Browder, Jr.
Niceville, FL
USA


gcc-4.6-20100828 is now available

2010-08-28 Thread gccadmin
Snapshot gcc-4.6-20100828 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.6-20100828/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 4.6 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/trunk revision 163620

You'll find:

 gcc-4.6-20100828.tar.bz2 Complete GCC (includes all of below)

  MD5=fa83aadbb877673d696fd655c437e231
  SHA1=c228b4194884515d5c8b09e3e8668960fda83a4d

 gcc-core-4.6-20100828.tar.bz2C front end and core compiler

  MD5=013b0051e2dd0e89662f0b672308c2df
  SHA1=afd79bc98dd41b6e14f0686dcd3969d8736fe4a9

 gcc-ada-4.6-20100828.tar.bz2 Ada front end and runtime

  MD5=592e406a562a023a11161d9490a5365d
  SHA1=44f5dba5d45f21c5615774c5ac8d0d4849cad33e

 gcc-fortran-4.6-20100828.tar.bz2 Fortran front end and runtime

  MD5=71946663294c951e25ba0459cc87c002
  SHA1=1a8cbcd1b9eac8f642ce0a61fb23f0865bcb0c6b

 gcc-g++-4.6-20100828.tar.bz2 C++ front end and runtime

  MD5=496696ea38ba36867d9ee3eb61ae8057
  SHA1=7119c6a33e5bf2acf595a9e28875409a590c95f9

 gcc-java-4.6-20100828.tar.bz2Java front end and runtime

  MD5=f1b3c6e714abc8f3eeaf1082421ff5af
  SHA1=a9e3154f7c8f53d21ccc837b01ce307050a6cadc

 gcc-objc-4.6-20100828.tar.bz2Objective-C front end and runtime

  MD5=dc2ec165c2298a9dedcaa61efe157bf2
  SHA1=11a8d660d21e314a840b3a23d22fc7ef9d54f6ed

 gcc-testsuite-4.6-20100828.tar.bz2   The GCC testsuite

  MD5=a63365d553f871b02fdc6fa6b396f837
  SHA1=a77b8065ababb717d439a7036aaa35cfbd12d383

Diffs from 4.6-20100821 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-4.6
link is updated and a message is sent to the gcc list.  Please do not use
a snapshot before it has been announced that way.


For testing: full __float128 patch

2010-08-28 Thread FX
Before I submit it officially for review, I want this patch to get some 
exposure while I clean up a few remaining dusty corners. To test the patch on 
x86_64-linux, proceed as follows:

  -- Get libquad from http://quatramaran.ens.fr/~coudert/tmp/libquad.tar.bz2 , 
then ./configure --prefix=/foo && make && make install 
  -- Build GCC with the extra configure argument: --with-quad=/foo (to be given 
to the toplevel configure command, like --with-gmp, nothing fancy)

Things to test in particular:

  -- I've tested this on linux and Mac OS; although it's pretty much 
OS-insensitive, does it work on things like FreeBSD and Windows?
  -- check carefully I/O support; in particular, the "output formatting" (i.e. 
writing out the values) involves a wrapper of my own around the gdtoa code, 
which was a bit painful to write, so bugs might have crawled in there


Things that do not yet work, or may change:

  -- this is only for platform that support __float128 (targets without TFmode 
would break); I'm working on an updated front-end patch as proposed by Andrew 
and Tobias

  -- I realized that the exponentiation builtins are not properly handled by 
the front-end (all exponentiations involving __float128 or its complex 
counterpart give wrong code); I'll work on a fix

  -- Array intrinsics *do not work at all*. This is a limitation of the array 
descriptor structure, which I cannot overcome by myself. The current patch only 
changes these files (in_pack_generic.c, in_unpack_generic.c, pack_generic.c, 
spread_generic.c, unpack_generic.c, cshift0.c) to make them compile, but they 
will yield wrong results.

  -- the integration of libquad depends on how the discussion with the SC turns 
out; the current scheme is not nice at all in case of multilibs, see below

Please note: in case of a multilib build, unless you have a system which 
supports fat libraries (MacOS), only the variant that corresponds to the 
libquad you've built will have support enabled. Typically, on a x86_64 system 
where you've built libquad with the default 64-bit compiler, you'll only have 
libquad support in the -m64 variant of libgfortran, and not the -m32 variant.



All comment are of course welcome. I think the two preliminary commits allowed 
to keep the size of this final patch to a reasonable value under 1kLOC (less 
than 600 without regenerated files).

FX



full_testing.diff
Description: Binary data


Re: For testing: full __float128 patch

2010-08-28 Thread Steve Kargl
On Sun, Aug 29, 2010 at 01:24:47AM +0200, FX wrote:
> Before I submit it officially for review, I want this patch to get some 
> exposure while I clean up a few remaining dusty corners. To test the patch on 
> x86_64-linux, proceed as follows:
> 
>   -- Get libquad from http://quatramaran.ens.fr/~coudert/tmp/libquad.tar.bz2 
> , then ./configure --prefix=/foo && make && make install 
>   -- Build GCC with the extra configure argument: --with-quad=/foo (to be 
> given to the toplevel configure command, like --with-gmp, nothing fancy)
> 
> Things to test in particular:
> 
>   -- I've tested this on linux and Mac OS; although it's pretty much 
> OS-insensitive, does it work on things like FreeBSD and Windows?
>   -- check carefully I/O support; in particular, the "output formatting" 
> (i.e. writing out the values) involves a wrapper of my own around the gdtoa 
> code, which was a bit painful to write, so bugs might have crawled in there
> 
> 

On i386-*-freebsd,

./configure --prefix=$HOME/work
gmake
...

 -O2 -MT libgfortran_io.lo -MD -MP -MF .deps/libgfortran_io.Tpo -c -o 
libgfortran_io.lo libgfortran_io.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT libgfortran_io.lo 
-MD -MP -MF .deps/libgfortran_io.Tpo -c libgfortran_io.c  -fPIC -DPIC -o 
.libs/libgfortran_io.o
In file included from libgfortran_io.c:1:
quad.h:8: error: unable to emulate 'TC'
quad.h:12: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'acosq'
quad.h:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'acoshq'
quad.h:14: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'asinq'
quad.h:15: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'asinhq'
quad.h:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'atanq'
quad.h:17: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'atanhq'
quad.h:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'atan2q'
quad.h:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'cbrtq'
quad.h:20: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'ceilq'
quad.h:21: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'copysignq'
quad.h:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'coshq'
quad.h:23: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'cosq'
quad.h:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'erfq'
quad.h:25: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'erfcq'
quad.h:26: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'expq'
quad.h:27: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'expm1q'
quad.h:28: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'fabsq'
quad.h:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'floorq'
quad.h:31: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'fmodq'
quad.h:32: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'frexpq'
quad.h:33: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'hypotq'
quad.h:34: warning: parameter names (without types) in function declaration
quad.h:36: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'j0q'
quad.h:37: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'j1q'
quad.h:38: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'jnq'
quad.h:39: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'ldexpq'
quad.h:40: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'lgammaq'
quad.h:41: warning: parameter names (without types) in function declaration
quad.h:42: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'logq'
quad.h:43: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'log10q'
quad.h:44: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'log1pq'
quad.h:45: warning: parameter names (without types) in function declaration
quad.h:46: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'modfq'
quad.h:47: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'nanq'
quad.h:48: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'nextafterq'
quad.h:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'powq'
quad.h:50: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'remainderq'
quad.h:51: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'rintq'
quad.h:52: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'roundq'
quad.h:53: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'scalblnq'
quad.h:54: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'scalbnq'
quad.h:56: error: expected ')' before '*' token
quad.h:57: error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'sinhq'
quad.h:58: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'sinq'
quad.h:59: 

Re: For testing: full __float128 patch

2010-08-28 Thread Steve Kargl
On Sat, Aug 28, 2010 at 05:47:28PM -0700, Steve Kargl wrote:
> On Sun, Aug 29, 2010 at 01:24:47AM +0200, FX wrote:
> > Before I submit it officially for review, I want this patch to get some 
> > exposure while I clean up a few remaining dusty corners. To test the patch 
> > on x86_64-linux, proceed as follows:
> > 
> >   -- Get libquad from 
> > http://quatramaran.ens.fr/~coudert/tmp/libquad.tar.bz2 , then ./configure 
> > --prefix=/foo && make && make install 
> >   -- Build GCC with the extra configure argument: --with-quad=/foo (to be 
> > given to the toplevel configure command, like --with-gmp, nothing fancy)
> > 
> > Things to test in particular:
> > 
> >   -- I've tested this on linux and Mac OS; although it's pretty much 
> > OS-insensitive, does it work on things like FreeBSD and Windows?
> >   -- check carefully I/O support; in particular, the "output formatting" 
> > (i.e. writing out the values) involves a wrapper of my own around the gdtoa 
> > code, which was a bit painful to write, so bugs might have crawled in there
> > 
> > 
> 
> On i386-*-freebsd,
> 
> ./configure --prefix=$HOME/work
> gmake
> ...
> 
>  -O2 -MT libgfortran_io.lo -MD -MP -MF .deps/libgfortran_io.Tpo -c -o 
> libgfortran_io.lo libgfortran_io.c
> libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT libgfortran_io.lo 
> -MD -MP -MF .deps/libgfortran_io.Tpo -c libgfortran_io.c  -fPIC -DPIC -o 
> .libs/libgfortran_io.o
> In file included from libgfortran_io.c:1:
> quad.h:8: error: unable to emulate 'TC'

gcc, here, is the FreeBSD system compiler.
gcc (GCC) 4.2.1 20070719  [FreeBSD]

If I set my path to include ~/work/bin (where the 4.6.0 gcc lives)
as the first directory to search, libquad builds fine.  So, what
is the minimum required gcc version needs to build libquad?

-- 
Steve


Re: For testing: full __float128 patch

2010-08-28 Thread Steve Kargl
On Sat, Aug 28, 2010 at 05:56:57PM -0700, Steve Kargl wrote:
> On Sat, Aug 28, 2010 at 05:47:28PM -0700, Steve Kargl wrote:
> > On Sun, Aug 29, 2010 at 01:24:47AM +0200, FX wrote:
> > > Before I submit it officially for review, I want this patch to get some 
> > > exposure while I clean up a few remaining dusty corners. To test the 
> > > patch on x86_64-linux, proceed as follows:
> > > 
> > >   -- Get libquad from 
> > > http://quatramaran.ens.fr/~coudert/tmp/libquad.tar.bz2 , then ./configure 
> > > --prefix=/foo && make && make install 
> > >   -- Build GCC with the extra configure argument: --with-quad=/foo (to be 
> > > given to the toplevel configure command, like --with-gmp, nothing fancy)
> > > 
> > > Things to test in particular:
> > > 
> > >   -- I've tested this on linux and Mac OS; although it's pretty much 
> > > OS-insensitive, does it work on things like FreeBSD and Windows?
> > >   -- check carefully I/O support; in particular, the "output formatting" 
> > > (i.e. writing out the values) involves a wrapper of my own around the 
> > > gdtoa code, which was a bit painful to write, so bugs might have crawled 
> > > in there
> > > 
> > > 
> > 
> > On i386-*-freebsd,
> > 
> > ./configure --prefix=$HOME/work
> > gmake
> > ...
> > 
> >  -O2 -MT libgfortran_io.lo -MD -MP -MF .deps/libgfortran_io.Tpo -c -o 
> > libgfortran_io.lo libgfortran_io.c
> > libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT 
> > libgfortran_io.lo -MD -MP -MF .deps/libgfortran_io.Tpo -c libgfortran_io.c  
> > -fPIC -DPIC -o .libs/libgfortran_io.o
> > In file included from libgfortran_io.c:1:
> > quad.h:8: error: unable to emulate 'TC'
> 
> gcc, here, is the FreeBSD system compiler.
> gcc (GCC) 4.2.1 20070719  [FreeBSD]
> 
> If I set my path to include ~/work/bin (where the 4.6.0 gcc lives)
> as the first directory to search, libquad builds fine.  So, what
> is the minimum required gcc version needs to build libquad?
> 
laptop:kargl[246] setenv | grep LD
LD_LIBRARY_PATH=/usr/home/kargl/work/lib
LD_RUN_PATH=/usr/home/kargl/work/lib

laptop:kargl[246] gmake check-gfortran
...
100s of FAILs
^C

>From testsuite/gfortran/gfortran.log

FAIL: gfortran.dg/PR19754_2.f90  -O0  (test for excess errors)
Excess errors:
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `scalbnq'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `__getf2'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `__eqtf2'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `__addtf3'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `ldexpq'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `acosq'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `cabsq'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `csqrtq'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `__floatsitf'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `__trunctfxf2'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `clogq'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `atan2q'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `lroundq'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `expq'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `sinq'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `libgfortran_dto q'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `__divtf3'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `frexpq'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `__letf2'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `sqrtq'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `cosq'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `nanq'
/usr/home/kargl/gcc/obj4x/i386-unknown-freebsd9.0/./libgfortran/.libs/libgfortran.so:
 undefined reference to `roundq'
/usr/home