Build logs of GCC, G++ and GNAT on FreeBSD x86_64 now available

2009-11-18 Thread gcc
Hello.

I'm now doing regular builds/tests from SVN of GCC, G++ and GNAT on
FreeBSD x86_64 and publishing the build logs at:

  http://gcc.coreland.ath.cx

I hope to produce builds weekly. Unfortunately I can't publish the
actual binaries due to space/bandwidth restrictions.

While there aren't *too* many test failures currently, there appears to
be a problem with the test suite in that it returns a 'failure' exit
code when the test ends and I'm not sure if this is expected behaviour
or not.

Highlights of the first build (SVN r154276):

=== acats Summary ===
# of expected passes2290
# of unexpected failures31
*** FAILURES: c52103x c52104x c52104y c761007 c85005c c85006c c910002 c93004b 
c93004c c93004d c93005a c93005b c94001c c94002b c94002e c94002f c94002g c94007a 
c94007b c94008c c94008d c94020a c95040c c97203c c97303c c9a007a c9a009c c9a009g 
cb1010a cb1010c cb1010d 

=== g++ Summary ===

# of expected passes20986
# of unexpected failures4
# of expected failures  150
# of unsupported tests  286
/gnat/obj/gcc/testsuite/g++/../../g++  version 4.5.0 20091118 (experimental) 
(GCC) 

=== gcc Summary ===

# of expected passes57515
# of unexpected failures42
# of unexpected successes   4
# of expected failures  169
# of unsupported tests  1511
/gnat/obj/gcc/xgcc  version 4.5.0 20091118 (experimental) (GCC) 

=== gnat Summary ===

# of expected passes739
# of unexpected failures4
# of expected failures  5

=== libgomp Summary ===

# of expected passes1001
# of unexpected failures2
# of unsupported tests  2

=== libmudflap Summary ===

# of expected passes1884
# of unexpected failures10

=== libstdc++ Summary ===

# of expected passes6337
# of unexpected failures2
# of expected failures  89
# of unsupported tests  389

Regards,
M


Re: Build logs of GCC, G++ and GNAT on FreeBSD x86_64 now available

2009-11-18 Thread Dave Korn
g...@coreland wrote:

> While there aren't *too* many test failures currently, there appears to
> be a problem with the test suite in that it returns a 'failure' exit
> code when the test ends and I'm not sure if this is expected behaviour
> or not.

  Yes, it certainly is expected and by-design.  Generally people give make the
"-k" option when running any of various the check targets.

cheers,
  DaveK



Re: i370 port - constructing compile script

2009-11-18 Thread Paul Edwards

Ok, I've now reached a new milestone - the mshort.h which
redefines all the long names into ZZZ_123 etc is now 
automatically generated as part of the build process.


The libiberty and gcc aren't split yet, but I'll probably defer
that to gcc 4, and see if I can simply reproduce what I have
with 3.4.6 first.

But there are some things I want to change in the 3.4.6
before starting that.

There are some files that are being automatically generated
as part of the build process, which I would like to stop.

gcov-iov creates a gcov-iov.h which has a version number
which changes when I change MVS versions.  So I am
thinking of updating gcov-iov.c so that when the target is
MVS, it generates a more fixed format.  Or maybe as part
of the build process I can just put in a
#define GCOV_VERSION 0
Not sure if it's actually being used for anything in my
environment.

gengtype-yacc.c & .h gets created with my new version of bison.
I just want to use the one that came with 3.4.6 instead of
having it regenerated.  Do I need to hide my bison to stop
that from happening?

configargs.h I will just overwrite with something simple as part
of the build process.

gencheck.h is being generated as an empty file, which doesn't
work well on some environments.  I want it to at least have a
comment saying "/* empty file */".  I can put that in as part of
the build script too.

Basically I'm looking for consistent source that won't change
with my build environment.

The raw "MVS source" can then be taken to another environment
to be compiled.

Thanks.  Paul.



Re: Build logs of GCC, G++ and GNAT on FreeBSD x86_64 now available

2009-11-18 Thread gcc
On 2009-11-18 11:03:01, Dave Korn wrote:
> g...@coreland wrote:
> 
> > While there aren't *too* many test failures currently, there appears to
> > be a problem with the test suite in that it returns a 'failure' exit
> > code when the test ends and I'm not sure if this is expected behaviour
> > or not.
> 
>   Yes, it certainly is expected and by-design.  Generally people give make the
> "-k" option when running any of various the check targets.

That's slightly worrying. I'm using 'gmake -k check' (GNU make isn't the default
make on my system) and yet it still fails...

M


Re: Build logs of GCC, G++ and GNAT on FreeBSD x86_64 now available

2009-11-18 Thread Eric Botcazou
> That's slightly worrying. I'm using 'gmake -k check' (GNU make isn't the
> default make on my system) and yet it still fails...

Sure, it "fails" as long as you have failures in the testsuite.

-- 
Eric Botcazou


Re: Build logs of GCC, G++ and GNAT on FreeBSD x86_64 now available

2009-11-18 Thread gcc
On 2009-11-18 12:04:47, Eric Botcazou wrote:
> > That's slightly worrying. I'm using 'gmake -k check' (GNU make isn't the
> > default make on my system) and yet it still fails...
> 
> Sure, it "fails" as long as you have failures in the testsuite.

OK, that's fine then.

Is the quoting on "fails" significant?

Regards,
M


Loop pragmas dilemma

2009-11-18 Thread Bingfeng Mei
Hi,
Due to pressing requirements of our target processor/application, I 
am implementing several popular loop pragmas in our private porting.
I've already implemented "unroll" and "ivdep", and am now working 
on "loop_count" to give GCC hints about number of iterations. 

The problem I am now facing is that GCC has many loop optimizations
in both tree and rtl levels that change loop property. For example,
loop versioning by unrolling called by predom pass and loop fissions
by graphite passes. This makes loop_count simply wrong for transformed
loop(s). What is best strategy? Updating loop count pragma to track
changed loops, or disable loop optimizations altogether in presence
of loop pragma? 

To less extent, loop optimizations also affect other loop pragmas. 
For example, I have to disable cunroll pass in presence of #pragma
unroll because it is confusing for user. 

Does anyone know how other compilers, e.g., icc, handle
such issues? 

Thanks for any input,
Bingfeng Mei

Broadcom UK



Re: Build logs of GCC, G++ and GNAT on FreeBSD x86_64 now available

2009-11-18 Thread Eric Botcazou
> Is the quoting on "fails" significant?

Maybe. :-)  Returning a failure code when there are failures is as expected.

-- 
Eric Botcazou


C++ comp_cdtor FUNCTION_DECL tree nodes with DECL_LANG_SPECIFIC but no DECL_CONTEXT: valid or not?

2009-11-18 Thread Dave Korn

Hi C++ folks,

  While debugging a patch, I stumbled across some kind of synthetic cdtor that
crashes debug_tree():

> Breakpoint 5, i386_pe_encode_section_info (decl=0x7f9b3e00, rtl=0x7f902220,
> first=1) at /gnu/gcc/gcc/gcc/config/i386/winnt.c:252
> 252   default_encode_section_info (decl, rtl, first);
> (gdb) call debug_tree (decl)
>   type  type  align 8 symtab 0 alias set -1 canonical type 0x7fdc08f0
> pointer_to_this >
> QI
> size 
> unit size 
> align 8 symtab 0 alias set -1 canonical type 0x7f89ca50 method 
> basetype
> 
> arg-types 
> chain >>
> pointer_to_this >
> addressable asm_written used nothrow public static in_system_header 
> autoinli
> ne decl_3 decl_5 QI file 
> /gnu/gcc/install-libstdc-latest/opt/gcc-tools/bin/../li
> b/gcc/i686-pc-cygwin/4.5.0/include/c++/bits/basic_string.h line 258 col 7 
> align
> 16 initial  abstract_origin  _Alloc_h
> ider>
> arguments  type  _Alloc_hider>
> 
> readonly unsigned SI
> size 
> unit size 
> align 32 symtab 0 alias set -1 canonical type 0x7fa2a010>
> readonly used unsigned SI file 
> /gnu/gcc/install-libstdc-latest/opt/gcc-t
> ools/bin/../lib/gcc/i686-pc-cygwin/4.5.0/include/c++/bits/basic_string.h line 
> 50
> 3 col 54 size  unit size 
> align 32 context  
> abstract_origin
>  
> (mem/f/c/i:SI (reg/f:SI 16 argp) [0 this+0 S4 A32]) arg-type 
>  pe 0x7fa2a010>
> incoming-rtl (mem/f/c/i:SI (reg/f:SI 16 argp) [0 this+0 S4 A32])>
> result 
> ignored VOID file 
> /gnu/gcc/install-libstdc-latest/opt/gcc-tools/bin/../l
> ib/gcc/i686-pc-cygwin/4.5.0/include/c++/bits/basic_string.h line 258 col 7
> align 8 context >
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x004cb6d2 in dump_function_name (t=0x7f9b3e00, flags=116)
> at /gnu/gcc/gcc/gcc/cp/error.c:1433
> 1433  if (LAMBDA_TYPE_P (DECL_CONTEXT (t)))
> The program being debugged was signaled while in a function called from GDB.
> GDB remains in the frame where the signal was received.
> To change this behavior use "set unwindonsignal on"
> Evaluation of the expression containing the function (debug_tree) will be 
> abando
> ned.
> (gdb)

  The crash happens when calling dump_function_name in cp/error.c:

/* Handle the function name for a FUNCTION_DECL node, grokking operators
   and destructors properly.  */

static void
dump_function_name (tree t, int flags)
{
  tree name = DECL_NAME (t);

  /* We can get here with a decl that was synthesized by language-
 independent machinery (e.g. coverage.c) in which case it won't
 have a lang_specific structure attached and DECL_CONSTRUCTOR_P
 will crash.  In this case it is safe just to print out the
 literal name.  */
  if (!DECL_LANG_SPECIFIC (t))
{
  pp_cxx_tree_identifier (cxx_pp, name);
  return;
}

  if (TREE_CODE (t) == TEMPLATE_DECL)
t = DECL_TEMPLATE_RESULT (t);

  /* Don't let the user see __comp_ctor et al.  */
  if (DECL_CONSTRUCTOR_P (t)
  || DECL_DESTRUCTOR_P (t))
{
  if (LAMBDA_TYPE_P (DECL_CONTEXT (t)))
name = get_identifier ("");
  else
name = constructor_name (DECL_CONTEXT (t));
}

... here.  The node in question does have a lang-specific entry, but the
context is NULL, crashing the call to LAMBDA_TYPE_P.

  I reproduced it on an unpatched build of r.154010 just to make sure my patch
wasn't the cause.

  Is it valid for the context to be NULL here?  The testcase that provoked it
is simple:

> #include 
> extern void bar (std::string x);
> 
> int main (int argc, const char **argv)
> {
> 
>   std::string foo = "abc";
>   foo += argv[1];
>   bar (foo);
> }

... so I guess I can see why we're not in any class or namespace context here;
is the problem perhaps that the cdtor in question here is a template
instantiation, and we need to look at the template decl to find the context
rather than the instantiation decl?  I see an entry in cp/ChangeLog-2000 that
says "* error.c (dump_function_name): Don't let the user see __comp_ctor" but
I'm not sure what the user should be seeing instead.

cheers,
  DaveK




Re: [Dwarf-Discuss] Does gcc optimization impacts retrieving Dwarf information?

2009-11-18 Thread M. Mohan Kumar

On 05/29/2009 03:11 PM, Mark Wielaard wrote:

(Resent, now actually subscribed to the list from the correct address)

On Fri, 2009-05-29 at 14:28 +0530, M. Mohan Kumar wrote:

That's all true in the abstract, but modern gcc has been known to
abscond with variable location data even for values that are
live/recomputable.  This is the main reason why the VTA (and
debuglocus and other) gcc projects are under way -- to represent the
maximum possible conceptual data, despite -O2 etc.


Frank, Will VTA/debuglocus have the dwarf compatibility (i.e. it does not
need modification to existing applications using libdwarf APIs)?

When can we expect this features (VTA/debuglocus) integrated into mainline
gcc?


Yes, it will output (hopefully better/more complete) dwarf information.
I don't know the schedule details of when this will land in gcc
mainline. But the ideas behind how to improve the tracking of debug
locations for variables in gcc can be found in this paper from Alexandre
Olivia: http://www.lsd.ic.unicamp.br/~oliva/papers/vta/slides.pdf
And on this GCC wiki page:
http://gcc.gnu.org/wiki/Var_Tracking_Assignments


Hi,

In one of the dwarf mail threads it is mentioned that VTA is ready for 
integration into gcc, but its waiting for the acceptance from the 
maintainers.


Are VTA patches part of mainline gcc now? If not, where could we get the 
VTA patches?


Regards,
M. Mohan Kumar.



DebugLocus is an alternative idea on an implementation to improve
tracking debug information from Andrew MacLeod described here:
http://gcc.gnu.org/wiki/AndrewMacLeod/debuglocus

Cheers,

Mark

___
Dwarf-Discuss mailing list
dwarf-disc...@lists.dwarfstd.org
http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org




Re: [Dwarf-Discuss] Does gcc optimization impacts retrieving Dwarf information?

2009-11-18 Thread Ian Lance Taylor
"M. Mohan Kumar"  writes:

> Are VTA patches part of mainline gcc now?

Yes.

Ian


Re: git mirror repacked, new branches

2009-11-18 Thread H.J. Lu
On Sun, Nov 15, 2009 at 4:32 PM, Bernie Innocenti  wrote:
> I repacked our (un)official git mirror (http://gcc.gnu.org/git) with
>
>  git repack -a -d -f --window=100 --depth=100 --window-memory=2g
>
> The pack is now 600MB, which is a bit scary, but still manageable.
> Mysteriously, cloning this repo yields a smaller pack of just 519MB,
> which still contains all the branches. It was probably caused by entries
> in the reflog, which I have now disabled.
>
> As an additional bonus, I've added refs for all the current branches tom
> make them visible in gitweb and easier to clone.
>

Most of vendor branches are wrong. For example, there are many branches
under branches/redhat. But I only see one redhat branch in git.

BTW, I can't pull new changes from the new master into my local git branches
which are based on the old master.


-- 
H.J.


Re: RFC: PR 25137: moving -Wmissing-braces to -Wextra?

2009-11-18 Thread Richard Henderson

On 11/17/2009 04:52 PM, Mark Mitchell wrote:

Joe Buck wrote:


I think that the cleanest way is to suppress the warning for structs
with one member


And recursively?

So that:

   struct A { int i; };
   struct B { struct A a };
   struct C { struct B b };
   struct C c = { 1 };

does not trigger the warning?


Sure.



What if struct B is now:

   struct B { struct A a; int j; };

and I write:

   struct C c = { 1, 2 };


Then warn.

I don't mind changing the behavior to not warn so long as all of the 
initializers missing braces apply to the same aggregate.  So in the 
former case they all apply to struct A, whereas in the later case they 
do not.



r~


[plugins-ici-cloning-instrumentation] install-plugin Makefile target

2009-11-18 Thread Joern Rennecke

What do people think about making install-plugin not only install
headers to build new plugins, but also install all plugins that
have been contributed up to the code freeze for the release.

First, it would make testing the plugin interface and the plugins easier.

Second, if the version of a plugin available with the release is good enough
for the needs of a user, (s)he can try out without having to install -  
or having to have installed - the plugins separately.


Third, when someone uses an experimental plugin for a while and then upgrades
some time later to a newer gcc release, it is useful when an updated plugin
version that works with the new gcc release comes with the new gcc
distribution.


Re: [plugins-ici-cloning-instrumentation] install-plugin Makefile target

2009-11-18 Thread Rafael Espindola
2009/11/18 Joern Rennecke :
> What do people think about making install-plugin not only install
> headers to build new plugins, but also install all plugins that
> have been contributed up to the code freeze for the release.
>
> First, it would make testing the plugin interface and the plugins easier.
>
> Second, if the version of a plugin available with the release is good enough
> for the needs of a user, (s)he can try out without having to install - or
> having to have installed - the plugins separately.
>
> Third, when someone uses an experimental plugin for a while and then
> upgrades
> some time later to a newer gcc release, it is useful when an updated plugin
> version that works with the new gcc release comes with the new gcc
> distribution.
>

Sound like a good idea, but I don't think we have agreed about
including plugins with gcc. I would like it, but it is not the
consensus.

Cheers,
-- 
Rafael Ávila de Espíndola


Re: [plugins-ici-cloning-instrumentation] install-plugin Makefile target

2009-11-18 Thread Diego Novillo
On Wed, Nov 18, 2009 at 09:05, Joern Rennecke  wrote:
> What do people think about making install-plugin not only install
> headers to build new plugins, but also install all plugins that
> have been contributed up to the code freeze for the release.

I agree, but we have no plugins included with the release.  I think it
would be beneficial to include a tutorial plugin somewhere that shows
the basics.  I have no opinion on where in the tree.


Diego.


Re: git mirror repacked, new branches

2009-11-18 Thread Bernie Innocenti
El Wed, 18-11-2009 a las 07:13 -0800, H.J. Lu escribió:
> On Sun, Nov 15, 2009 at 4:32 PM, Bernie Innocenti  wrote:
> > I repacked our (un)official git mirror (http://gcc.gnu.org/git) with
> >
> >  git repack -a -d -f --window=100 --depth=100 --window-memory=2g
> >
> > The pack is now 600MB, which is a bit scary, but still manageable.
> > Mysteriously, cloning this repo yields a smaller pack of just 519MB,
> > which still contains all the branches. It was probably caused by entries
> > in the reflog, which I have now disabled.
> >
> > As an additional bonus, I've added refs for all the current branches tom
> > make them visible in gitweb and easier to clone.
> 
> Most of vendor branches are wrong. For example, there are many branches
> under branches/redhat. But I only see one redhat branch in git.

I guess git-svn does not cope automatically with nested subdirs in
banches/.

One could manually select them by passing multiple --branches options.
For our case, the man page shows how to map those branches to separate
namespaces:

  branches = stable/*:refs/remotes/svn/stable/*
  branches = debug/*:refs/remotes/svn/debug/*


Properly handling vendor branches would be a requisite step for a real
migration to git. For now, I'd rather be lazy and delay this work until
someone asks for it.


> BTW, I can't pull new changes from the new master into my local git branches
> which are based on the old master.

This is unexpected. Repacking doesn't change any SHA1, and I haven't
touched any of the existing branches. What error do you get from pull?

If you have access to the git tree on sourceware, would you mind
investigating this issue yourself since you can easily reproduce it?

-- 
   // Bernie Innocenti - http://codewiz.org/
 \X/  Sugar Labs   - http://sugarlabs.org/



Supporting decimal float on additional platforms

2009-11-18 Thread Rainer Orth
I've recently looked into what it takes to support decimal float on
additional platforms (like Solaris, IRIX, and Tru64 UNIX in my case).
I've found no documentation, and while I could figure out some things
myself, I'd like to get some advice before continuing down that road.

I found that --enable-decimal-float alone is not enough.  One at least
needs to add config/t-dfprules to config.gcc, too.  In addition, the
platform _scalar_mode_supported_p function needs to be augmented
accordingly.  (I haven't tried this yet; it's just from code
inspection.)

Even if this works, I now think this won't be enough and probably not
even remotely useful (if only to pass parts of the testsuite) without
libc support for the new *printf/*scanf formats, which certainly won't
be added on legacy platforms like IRIX and Tru64 UNIX, and even on
Solaris probably won't show up until DFP is fully standardized.

Comments?

Rainer

-- 
-
Rainer Orth, Center for Biotechnology, Bielefeld University


Re: [plugins-ici-cloning-instrumentation] install-plugin Makefile target

2009-11-18 Thread Basile STARYNKEVITCH

Diego Novillo wrote:

On Wed, Nov 18, 2009 at 09:05, Joern Rennecke  wrote:

What do people think about making install-plugin not only install
headers to build new plugins, but also install all plugins that
have been contributed up to the code freeze for the release.


I agree, but we have no plugins included with the release.  I think it
would be beneficial to include a tutorial plugin somewhere that shows
the basics.  I have no opinion on where in the tree.


Diego, are you speaking of the GCC source tree, the GCC build tree, the GCC 
installation tree?

We could simply adapt a plugin from our testsuite, and install it...

The interesting question is: do we have an installed plugins directory? (We might have already discussed that, I forgot 
the details and the context, probably more than a year ago). I wish we had one:


We might even consider that invoking [sorry to be so selfish and take MELT as a 
plugin example]
   gcc-4.5 -fplugin=melt 
doing the same as
   gcc-4.5 -fplugin=$(gcc-trunk --print-file-name=plugin)/libexec/melt.so 

That is, a plugin only specified with XXX [only letters or digits or underscores, no dots, so no .so extensions, no 
slashes] being searched in some well known directory like 
/usr/local/lib/gcc-trunk/gcc/x86_64-unknown-linux-gnu/4.5.0/plugin/libexec/ . If I recall correctly, most other 
pluginable software have their "standard plugin directory".


I would be delighted by having in practice short -fplugin=XXX program argument to GCC. In my understanding, the current 
one is almost always long in practice [because in practice the plugin directory should depend of the GCC version].


The issues are:

  * do we agree that having a well defined directory to contain some installed 
plugins is desirable?

  * what is that standard plugins directory?

And then, we have to implement & document that.

In the current state of the trunk, it seems that plugins are the only point where environment variables matter, and that 
environment variable is LD_LIBRARY_PATH ... (because dlopen mandates that behavior).


BTW, I think that both MELT & ICI are dlopen-ing their own shared objects (in MELT I call these modules), and that MELT 
(& probably ICI) have some mechanism for some standard paths for these.


Regards.
--
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 mines, sont seulement les miennes} ***


Re: git mirror repacked, new branches

2009-11-18 Thread H.J. Lu
On Wed, Nov 18, 2009 at 10:09 AM, Bernie Innocenti  wrote:
> El Wed, 18-11-2009 a las 07:13 -0800, H.J. Lu escribió:
>> On Sun, Nov 15, 2009 at 4:32 PM, Bernie Innocenti  wrote:
>> > I repacked our (un)official git mirror (http://gcc.gnu.org/git) with
>> >
>> >  git repack -a -d -f --window=100 --depth=100 --window-memory=2g
>> >
>> > The pack is now 600MB, which is a bit scary, but still manageable.
>> > Mysteriously, cloning this repo yields a smaller pack of just 519MB,
>> > which still contains all the branches. It was probably caused by entries
>> > in the reflog, which I have now disabled.
>> >
>> > As an additional bonus, I've added refs for all the current branches tom
>> > make them visible in gitweb and easier to clone.
>>
>> Most of vendor branches are wrong. For example, there are many branches
>> under branches/redhat. But I only see one redhat branch in git.
>
> I guess git-svn does not cope automatically with nested subdirs in
> banches/.

If nested subdirs in banches/ aren't handled properly, shouldn't we avoid
putting them in git mirror?

> One could manually select them by passing multiple --branches options.
> For our case, the man page shows how to map those branches to separate
> namespaces:
>
>  branches = stable/*:refs/remotes/svn/stable/*
>  branches = debug/*:refs/remotes/svn/debug/*
>
>
> Properly handling vendor branches would be a requisite step for a real
> migration to git. For now, I'd rather be lazy and delay this work until
> someone asks for it.
>
>
>> BTW, I can't pull new changes from the new master into my local git branches
>> which are based on the old master.
>
> This is unexpected. Repacking doesn't change any SHA1, and I haven't
> touched any of the existing branches. What error do you get from pull?
>

Oops. Pilot error.


-- 
H.J.


Re: RFC: PR 25137: moving -Wmissing-braces to -Wextra?

2009-11-18 Thread Paolo Carlini
Hi,

and first thanks everyone for the constructive feedbacks!
>> And recursively?
>>
>> So that:
>>
>> struct A { int i; };
>> struct B { struct A a };
>> struct C { struct B b };
>> struct C c = { 1 };
>>
>> does not trigger the warning?
>
> Sure.
>
>>
>> What if struct B is now:
>>
>> struct B { struct A a; int j; };
>>
>> and I write:
>>
>> struct C c = { 1, 2 };
>
> Then warn.
>
> I don't mind changing the behavior to not warn so long as all of the
> initializers missing braces apply to the same aggregate. So in the
> former case they all apply to struct A, whereas in the later case they
> do not.

I tried quickly drafting the corresponding patch, attached, which
appears to work pretty well (no regressions), please correct me as soon
as possible if I misunderstood. For example, this

struct S { int s[3]; };
struct S s1 = { 1, 1, 1 };

and this

struct S1 { int s[3]; };
struct S2 { struct S1 a; };
struct S2 s22 = { 1, 1, 1 };

and this

struct A { int i; };
struct B { struct A a };
struct C { struct B b };
struct C c = { 1 };

do not warn anymore. Whereas, this

struct S3 { int s[3]; };
struct S4 { struct S3 a; int b; };
struct S4 s23 = { 1, 1, 1 , 1 };

warns, but only about "missing braces around initializer for ‘S3’", not
about "missing braces around initializer for ‘int [3]’", at variance
with mainline. Changed the following way doesn't warn:

struct S5 { int s[3]; };
struct S5 { struct S5 a; int b; };
struct S5 s34 = { { 1, 1, 1 }, 1 };

This

struct A1 { int i; };
struct B1 { struct A1 a; };
struct B1 { struct A1 a; int j; };
struct C1 { struct B1 b; };
struct C1 c2 = { 1, 2 };

likewise only warns about "missing braces around initializer for ‘A1’"

In case, the same kind of change should be implemented in the C
front-end, right?

Thanks,
Paolo.

Index: decl.c
===
--- decl.c  (revision 154291)
+++ decl.c  (working copy)
@@ -4707,7 +4707,7 @@
   constructor_elt *end;
 } reshape_iter;
 
-static tree reshape_init_r (tree, reshape_iter *, bool);
+static tree reshape_init_r (tree, reshape_iter *, bool, bool);
 
 /* FIELD is a FIELD_DECL or NULL.  In the former case, the value
returned is the next FIELD_DECL (possibly FIELD itself) that can be
@@ -4765,7 +4765,8 @@
   tree elt_init;
 
   check_array_designated_initializer (d->cur);
-  elt_init = reshape_init_r (elt_type, d, /*first_initializer_p=*/false);
+  elt_init = reshape_init_r (elt_type, d, /*first_initializer_p=*/false,
+false);
   if (elt_init == error_mark_node)
return error_mark_node;
   CONSTRUCTOR_APPEND_ELT (CONSTRUCTOR_ELTS (new_init), NULL_TREE, 
elt_init);
@@ -4857,7 +4858,7 @@
   /* Loop through the initializable fields, gathering initializers.  */
   while (d->cur != d->end)
 {
-  tree field_init;
+  tree field_init, nfield;
 
   /* Handle designated initializers, as an extension.  */
   if (d->cur->index)
@@ -4876,8 +4877,9 @@
   if (!field)
break;
 
+  nfield = next_initializable_field (TREE_CHAIN (field));
   field_init = reshape_init_r (TREE_TYPE (field), d,
-  /*first_initializer_p=*/false);
+  /*first_initializer_p=*/false, !nfield);
   if (field_init == error_mark_node)
return error_mark_node;
 
@@ -4891,7 +4893,7 @@
   if (TREE_CODE (type) == UNION_TYPE)
break;
 
-  field = next_initializable_field (TREE_CHAIN (field));
+  field = nfield;
 }
 
   return new_init;
@@ -4904,7 +4906,7 @@
outermost CONSTRUCTOR node.  */
 
 static tree
-reshape_init_r (tree type, reshape_iter *d, bool first_initializer_p)
+reshape_init_r (tree type, reshape_iter *d, bool first_initializer_p, bool 
no_warn)
 {
   tree init = d->cur->value;
 
@@ -5016,8 +5018,9 @@
}
}
 
-  warning (OPT_Wmissing_braces, "missing braces around initializer for 
%qT",
-  type);
+  if (!no_warn)
+   warning (OPT_Wmissing_braces, "missing braces around initializer "
+"for %qT", type);
 }
 
   /* Dispatch to specialized routines.  */
@@ -5066,7 +5069,7 @@
   d.cur = VEC_index (constructor_elt, v, 0);
   d.end = d.cur + VEC_length (constructor_elt, v);
 
-  new_init = reshape_init_r (type, &d, true);
+  new_init = reshape_init_r (type, &d, true, false);
   if (new_init == error_mark_node)
 return error_mark_node;
 


Re: [plugins-ici-cloning-instrumentation] install-plugin Makefile target

2009-11-18 Thread Joern Rennecke

Quoting Basile STARYNKEVITCH :
The interesting question is: do we have an installed plugins   
directory? (We might have already discussed that, I forgot
the details and the context, probably more than a year ago). I wish   
we had one:


At the moment we have a directory for plugin header files, which is a  
subdirectory of an otherwise empty plugin directory:


[amyl...@laria gcc]$ /user/inria/bin/gcc --print-file-name=libgcc.a
/user/inria/lib/gcc/i686-pc-linux-gnu/4.5.0/libgcc.a
[amyl...@laria gcc]$ /user/inria/bin/gcc --print-file-name=plugin
/user/inria/lib/gcc/i686-pc-linux-gnu/4.5.0/plugin
[amyl...@laria gcc]$ ls -l `!!`
ls -l `/user/inria/bin/gcc --print-file-name=plugin`
total 4
drwxrwxr-x. 7 amylaar amylaar 4096 2009-11-18 17:48 include
[amyl...@laria gcc]$ /user/inria/bin/gcc --version
gcc (GCC) 4.5.0 20091108 (experimental)
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Re: Supporting decimal float on additional platforms

2009-11-18 Thread Janis Johnson
On Wed, 2009-11-18 at 19:19 +0100, Rainer Orth wrote:
> I've recently looked into what it takes to support decimal float on
> additional platforms (like Solaris, IRIX, and Tru64 UNIX in my case).
> I've found no documentation, and while I could figure out some things
> myself, I'd like to get some advice before continuing down that road.
> 
> I found that --enable-decimal-float alone is not enough.  One at least
> needs to add config/t-dfprules to config.gcc, too.  In addition, the
> platform _scalar_mode_supported_p function needs to be augmented
> accordingly.  (I haven't tried this yet; it's just from code
> inspection.)

The target ABI needs to define how to handle the decimal32/64/128 data
types.  The compiler backend needs to implement that ABI for argument
passing and function results, and needs to define which registers to
use for those types.

> Even if this works, I now think this won't be enough and probably not
> even remotely useful (if only to pass parts of the testsuite) without
> libc support for the new *printf/*scanf formats, which certainly won't
> be added on legacy platforms like IRIX and Tru64 UNIX, and even on
> Solaris probably won't show up until DFP is fully standardized.

Much of the support for decimal floating types is in libraries that
are outside the scope of the GCC project.  This includes not just I/O
but math functions and support for floating-point exceptions and
rounding modes.  That support is provided by the libdfp project hosted
in the EGLIBC repository.  libdfp currently supports only GNU/Linux
targets, but that could be changed.

Janis



Re: git mirror repacked, new branches

2009-11-18 Thread Bernie Innocenti
On Wed, 2009-11-18 at 10:38 -0800, H.J. Lu wrote:
> If nested subdirs in banches/ aren't handled properly, shouldn't we
> avoid putting them in git mirror?

You're right. I killed the bogus branches and asked the git folks for
advice.

-- 
   // Bernie Innocenti - http://codewiz.org/
 \X/  Sugar Labs   - http://sugarlabs.org/



Re: Supporting decimal float on additional platforms

2009-11-18 Thread Joseph S. Myers
On Wed, 18 Nov 2009, Rainer Orth wrote:

> be added on legacy platforms like IRIX and Tru64 UNIX, and even on
> Solaris probably won't show up until DFP is fully standardized.

I'd have expected the Solaris maintainers to care more about whether 
Solaris customers are asking for DFP support, than about whether it is an 
ISO/IEC Technical Report Type 2 (as at present - TR 24732:2009 published 
2009-01-05) or an International Standard.

As Janis says, the psABI needs to be aware of decimal floating point, so 
if there is any group or community for a particular target concerned with 
its ABI for interoperability between multiple implementations, you should 
work with them on establishing the ABI for decimal floating point for that 
target.

Much the same applies if anyone wishes to add fixed point (TR 18037) 
support for more targets.

-- 
Joseph S. Myers
jos...@codesourcery.com


Re: RFC: PR 25137: moving -Wmissing-braces to -Wextra?

2009-11-18 Thread Richard Henderson

On 11/18/2009 10:43 AM, Paolo Carlini wrote:

struct S5 { int s[3]; };
struct S5 { struct S5 a; int b; };
struct S5 s34 = { { 1, 1, 1 }, 1 };


Please also test

struct S1 { int s[3], t };
struct S2 { struct S1 a; };
struct S3 { struct S1 a; int i; };

struct S2 s1 = { 1, 1, 1, 1 };  // warn
struct S2 s2 = { { 1, 1, 1 }, 1 };  // no warn
struct S3 s3 = { { 1, 1, 1, 1 }, 1 };   // warn

I didn't look at the code yet, but the test cases that you do have look 
good, including the change in the aggregate you choose to reference in 
the warning.



In case, the same kind of change should be implemented in the C
front-end, right?


Yes.


r~


Re: New g++ template stress/regression test?

2009-11-18 Thread Gerald Pfeifer
On Fri, 6 Nov 2009, Dave Korn wrote:
>> I wonder if there would be an interest for a C++ template / compile
>> time ray tracer as a heavy test for
>> 
>> * templates in general
>> * the type system
>> * regression and conformance testing
> How big is it?  It might be suitable to go in the contrib/ dir, we already
> keep a copy of the paranoia FP tests in there, so your template package and
> maybe a testscript to run it and record stats might make a nice little
> addition in the same spirit.

I don't think that's a good idea.  Rather, why not add this to

  http://gcc.gnu.org/testing/

(look for "Build and test guide" there) if it really is a useful test?

Gerald


Re: RFC: PR 25137: moving -Wmissing-braces to -Wextra?

2009-11-18 Thread Paolo Carlini
Hi,

and thanks for your further guidance...

On 11/18/2009 09:26 PM, Richard Henderson wrote:
> struct S1 { int s[3], t; };
> struct S2 { struct S1 a; };
>
> struct S2 s2 = { { 1, 1, 1 }, 1 };// no warn
This case looks somewhat special to me: my draft warns, unchanged
behavior. But note that in this case we also issue an hard error "too
many initializers for ‘S2’", with and without the patch, are you sure
it's important to clean-up somewhat the diagnostics in this case? Or you
really meant something slightly different?

Paolo.


build failure bootstrapping trunk on Ubuntu 9.10

2009-11-18 Thread Matt
I'm getting this build failure with latest trunk, as of the composing of 
this email:


../gcc-trunk/configure --prefix=/home/matt --enable-stage1-checking=all 
--enable-bootstrap --enable-lto 
--enable-languages=c,c++../gcc-trunk/configure --prefix=/home/matt 
--enable-stage1-checking=all --enable-bootstrap --enable-lto 
--enable-languages=c,c++


make -j5

.
.
.
/home/matt/src/gcc-obj/./prev-gcc/xgcc 
-B/home/matt/src/gcc-obj/./prev-gcc/ 
-B/home/matt/x86_64-unknown-linux-gnu/bin/ 
-B/home/matt/x86_64-unknown-linux-gnu/bin/ 
-B/home/matt/x86_64-unknown-linux-gnu/lib/ -isystem 
/home/matt/x86_64-unknown-linux-gnu/include -isystem 
/home/matt/x86_64-unknown-linux-gnu/sys-include-c  -g -O2 
-fprofile-use -DIN_GCC   -W -Wall -Wwrite-strings -Wcast-qual 
-Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute 
-pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings 
-Werror -Wold-style-definition -Wc++-compat -fno-common  -DHAVE_CONFIG_H 
-I. -I. -I../../gcc-trunk/gcc -I../../gcc-trunk/gcc/. 
-I../../gcc-trunk/gcc/../include -I../../gcc-trunk/gcc/../libcpp/include 
-I../../gcc-trunk/gcc/../libdecnumber 
-I../../gcc-trunk/gcc/../libdecnumber/bid -I../libdecnumber 
-DCLOOG_PPL_BACKEND  -I/usr/include/libelf 
../../gcc-trunk/gcc/ira-lives.c -o ira-lives.o


cc1: warnings being treated as errors
../../gcc-trunk/gcc/ira-lives.c: In function 
ira_implicitly_set_insn_hard_regs:
../../gcc-trunk/gcc/ira-lives.c:748:13: error: regno may be used 
uninitialized in this function




It looks like ira-lives.c:763 has some ambiguous parenthesizing that may 
be causing the warning that is failing the build). Note that the warning 
doesn't happen on a similar piece of code on line 830 in the same file.


I've been fighting with the configure process for a few days and finally 
got past that to this issue. So, any help is greatly appreciated :)


Thanks!

--
tangled strands of DNA explain the way that I behave.
http://www.clock.org/~matt


Disabling the heuristic inliner

2009-11-18 Thread Shaun Jackman
Is it possible to disable the heuristic inline function logic? I would
like the following behaviour:

* static inline functions are always inlined
* non-static functions are never inlined
* static functions that are called once are inlined
* static functions that are called more than once are not inlined

I'm using -Os, and I'm trying to find the right combination of -f
switches to enable this behaviour.

Thanks,
Shaun


Re: Disabling the heuristic inliner

2009-11-18 Thread Shaun Jackman
2009/11/18 Shaun Jackman :
> Is it possible to disable the heuristic inline function logic? I would
> like the following behaviour:
>
> * static inline functions are always inlined
> * non-static functions are never inlined
> * static functions that are called once are inlined
> * static functions that are called more than once are not inlined
>
> I'm using -Os, and I'm trying to find the right combination of -f
> switches to enable this behaviour.
>
> Thanks,
> Shaun

I haven't done a lot of testing, but
-Os -fno-inline-small-functions
seems to accomplish this.

Cheers,
Shaun


Re: Disabling the heuristic inliner

2009-11-18 Thread Paolo Carlini
On 11/19/2009 02:21 AM, Shaun Jackman wrote:
> I haven't done a lot of testing, but
> -Os -fno-inline-small-functions
> seems to accomplish this.
>   
Note that this issue really doesn't qualify for gcc, gcc-help is more
suited.

Anyway, there are some attributes available, which probably you can find
useful, like always_inline, see the docs for details.

Paolo.


Re: Build logs of GCC, G++ and GNAT on FreeBSD x86_64 now available

2009-11-18 Thread gcc
'Lo.

Is anyone interested in committing the two extremely minor patches to enable
proper support for FreeBSD x86_64?

Support for Debian/kFreeBSD x86_64 already exists in GCC, this Makefile patch
just enables support for "pure" FreeBSD (same kernel, different userland):

http://gcc.coreland.ath.cx/r154285_2009-11-18_103532/patch-gcc-ada-gcc-interface-Makefile.in

This one just allows GCC to build on stricter settings (adds two missing
ATTRIBUTE_UNUSED macros and fixes an 'old style' function definition):

http://gcc.coreland.ath.cx/r154285_2009-11-18_103532/patch-gcc-ada-init.c.diff

The latest build was made with Fortran support enabled as well:

http://gcc.coreland.ath.cx/r154285_2009-11-18_103532/

I've been unable to get the contrib/test_summary script to work, unfortunately.

Regards,
M


Re: git mirror repacked, new branches

2009-11-18 Thread Alexandre Oliva
On Nov 18, 2009, Bernie Innocenti  wrote:

> I guess git-svn does not cope automatically with nested subdirs in
> banches/.

That's correct.  (save for b*r*anches ;-)

> One could manually select them by passing multiple --branches options.

Yup.  Here's the configuration I'm using to build a git repo with all
branches, tags, and also retaining the ability to check out any
directory containing multiple tags, branches, and even the entire SVN
tree (look for dirs).

[svn-remote "svn"]
rewriteRoot = svn+ssh://gcc.gnu.org/svn/gcc
# url = svn+ssh://aol...@gcc.gnu.org./svn/gcc
url = file:///l/tmp/build/gcc/gccrepo
fetch = trunk:refs/remotes/trunk
branches = branches/ARM/*:refs/remotes/branches/ARM/*
fetch = branches/ARM:refs/remotes/dirs/branches/ARM
branches = branches/apple/*:refs/remotes/branches/apple/*
fetch = branches/apple:refs/remotes/dirs/branches/apple
branches = branches/csl/*:refs/remotes/branches/csl/*
fetch = branches/csl:refs/remotes/dirs/branches/csl
branches = branches/dead/*:refs/remotes/branches/dead/*
fetch = branches/dead:refs/remotes/dirs/branches/dead
branches = branches/gcj/*:refs/remotes/branches/gcj/*
fetch = branches/gcj:refs/remotes/dirs/branches/gcj
branches = branches/ibm/*:refs/remotes/branches/ibm/*
fetch = branches/ibm:refs/remotes/dirs/branches/ibm
branches = branches/ix86/*:refs/remotes/branches/ix86/*
fetch = branches/ix86:refs/remotes/dirs/branches/ix86
branches = branches/redhat/*:refs/remotes/branches/redhat/*
fetch = branches/redhat:refs/remotes/dirs/branches/redhat
branches = branches/st/*:refs/remotes/branches/st/*
fetch = branches/st:refs/remotes/dirs/branches/st
branches = branches/suse/*:refs/remotes/branches/suse/*
fetch = branches/suse:refs/remotes/dirs/branches/suse
branches = branches/ubuntu/*:refs/remotes/barnches/ubuntu/*
fetch = branches/ubuntu:refs/remotes/dirs/branches/ubuntu
branches = branches/*:refs/remotes/branches/*
fetch = branches:refs/remotes/dirs/branches/root
tags = tags/apple/*:refs/remotes/tags/apple/*
fetch = tags/apple:refs/remotes/tags/dirs/apple
tags = tags/csl/arm/*:refs/remotes/tags/csl/arm/*
fetch = tags/csl/arm:refs/remotes/tags/dirs/csl/arm
tags = tags/csl/coldfire/*:refs/remotes/tags/csl/coldfire/*
fetch = tags/csl/coldfire:refs/remotes/tags/dirs/csl/coldfire
tags = tags/csl/morpho/*:refs/remotes/tags/csl/morpho/*
fetch = tags/csl/morpho:refs/remotes/tags/dirs/csl/morpho
tags = tags/csl/renesas/*:refs/remotes/tags/csl/renesas/*
fetch = tags/csl/renesas:refs/remotes/tags/dirs/csl/renesas
tags = tags/csl/sourcerygxx/*:refs/remotes/tags/csl/sourcerygxx/*
fetch = tags/csl/sourcerygxx:refs/remotes/tags/dirs/csl/sourcerygxx
tags = tags/csl/wrs-linux/*:refs/remotes/tags/csl/wrs-linux/*
fetch = tags/csl/wrs-linux:refs/remotes/tags/dirs/csl/wrs-linux
tags = tags/csl/*:refs/remotes/tags/csl/others/*
fetch = tags/csl:refs/remotes/tags/dirs/csl/root
tags = tags/ix86/*:refs/remotes/tags/ix86/*
fetch = tags/ix86:refs/remotes/tags/dirs/ix86
tags = branches/st/tags/*:refs/remotes/tags/st/*
fetch = branches/st/tags:refs/remotes/tags/dirs/st
tags = tags/redhat/*:refs/remotes/tags/redhat/*
fetch = tags/redhat:refs/remotes/tags/dirs/redhat
tags = tags/ubuntu/*:refs/remotes/tags/ubuntu/*
fetch = tags/ubuntu:refs/remotes/tags/dirs/ubuntu
tags = tags/*:refs/remotes/tags/*
fetch = tags:refs/remotes/tags/dirs/root
fetch = :refs/remotes/dirs/root


-- 
Alexandre Oliva, freedom fighterhttp://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/   FSF Latin America board member
Free Software Evangelist  Red Hat Brazil Compiler Engineer


Re: git mirror repacked, new branches

2009-11-18 Thread Bernie Innocenti
On Thu, 2009-11-19 at 03:11 -0200, Alexandre Oliva wrote:
> Yup.  Here's the configuration I'm using to build a git repo with all
> branches, tags, and also retaining the ability to check out any
> directory containing multiple tags, branches, and even the entire SVN
> tree (look for dirs).
> 
> [svn-remote "svn"]
>   rewriteRoot = svn+ssh://gcc.gnu.org/svn/gcc
>   # url = svn+ssh://aol...@gcc.gnu.org./svn/gcc
>   url = file:///l/tmp/build/gcc/gccrepo
>   fetch = trunk:refs/remotes/trunk
>   branches = branches/ARM/*:refs/remotes/branches/ARM/*
>   fetch = branches/ARM:refs/remotes/dirs/branches/ARM
>   branches = branches/apple/*:refs/remotes/branches/apple/*
>   fetch = branches/apple:refs/remotes/dirs/branches/apple
>   branches = branches/csl/*:refs/remotes/branches/csl/*
>   fetch = branches/csl:refs/remotes/dirs/branches/csl
>   branches = branches/dead/*:refs/remotes/branches/dead/*
>   fetch = branches/dead:refs/remotes/dirs/branches/dead
>   branches = branches/gcj/*:refs/remotes/branches/gcj/*
>   fetch = branches/gcj:refs/remotes/dirs/branches/gcj
>   branches = branches/ibm/*:refs/remotes/branches/ibm/*
>   fetch = branches/ibm:refs/remotes/dirs/branches/ibm
>   branches = branches/ix86/*:refs/remotes/branches/ix86/*
>   fetch = branches/ix86:refs/remotes/dirs/branches/ix86
>   branches = branches/redhat/*:refs/remotes/branches/redhat/*
>   fetch = branches/redhat:refs/remotes/dirs/branches/redhat
>   branches = branches/st/*:refs/remotes/branches/st/*
>   fetch = branches/st:refs/remotes/dirs/branches/st
>   branches = branches/suse/*:refs/remotes/branches/suse/*
>   fetch = branches/suse:refs/remotes/dirs/branches/suse
>   branches = branches/ubuntu/*:refs/remotes/barnches/ubuntu/*
>   fetch = branches/ubuntu:refs/remotes/dirs/branches/ubuntu
>   branches = branches/*:refs/remotes/branches/*
>   fetch = branches:refs/remotes/dirs/branches/root
>   tags = tags/apple/*:refs/remotes/tags/apple/*
>   fetch = tags/apple:refs/remotes/tags/dirs/apple
>   tags = tags/csl/arm/*:refs/remotes/tags/csl/arm/*
>   fetch = tags/csl/arm:refs/remotes/tags/dirs/csl/arm
>   tags = tags/csl/coldfire/*:refs/remotes/tags/csl/coldfire/*
>   fetch = tags/csl/coldfire:refs/remotes/tags/dirs/csl/coldfire
>   tags = tags/csl/morpho/*:refs/remotes/tags/csl/morpho/*
>   fetch = tags/csl/morpho:refs/remotes/tags/dirs/csl/morpho
>   tags = tags/csl/renesas/*:refs/remotes/tags/csl/renesas/*
>   fetch = tags/csl/renesas:refs/remotes/tags/dirs/csl/renesas
>   tags = tags/csl/sourcerygxx/*:refs/remotes/tags/csl/sourcerygxx/*
>   fetch = tags/csl/sourcerygxx:refs/remotes/tags/dirs/csl/sourcerygxx
>   tags = tags/csl/wrs-linux/*:refs/remotes/tags/csl/wrs-linux/*
>   fetch = tags/csl/wrs-linux:refs/remotes/tags/dirs/csl/wrs-linux
>   tags = tags/csl/*:refs/remotes/tags/csl/others/*
>   fetch = tags/csl:refs/remotes/tags/dirs/csl/root
>   tags = tags/ix86/*:refs/remotes/tags/ix86/*
>   fetch = tags/ix86:refs/remotes/tags/dirs/ix86
>   tags = branches/st/tags/*:refs/remotes/tags/st/*
>   fetch = branches/st/tags:refs/remotes/tags/dirs/st
>   tags = tags/redhat/*:refs/remotes/tags/redhat/*
>   fetch = tags/redhat:refs/remotes/tags/dirs/redhat
>   tags = tags/ubuntu/*:refs/remotes/tags/ubuntu/*
>   fetch = tags/ubuntu:refs/remotes/tags/dirs/ubuntu
>   tags = tags/*:refs/remotes/tags/*
>   fetch = tags:refs/remotes/tags/dirs/root
>   fetch = :refs/remotes/dirs/root

Amazing. And how well does this monster config work? Would you recommend
doing the same with our public git mirror?

-- 
   // Bernie Innocenti - http://codewiz.org/
 \X/  Sugar Labs   - http://sugarlabs.org/