Re: [PATCH, PR43920, 1/9] ARM specific part.

2011-04-03 Thread Richard Guenther
On Sat, Apr 2, 2011 at 7:05 PM, Tom de Vries vr...@codesourcery.com wrote:
 On 04/02/2011 09:47 AM, Richard Guenther wrote:
 On Fri, Apr 1, 2011 at 6:06 PM, Tom de Vries vr...@codesourcery.com wrote:
 On 04/01/2011 05:18 PM, Richard Earnshaw wrote:

 On Fri, 2011-04-01 at 16:45 +0200, Tom de Vries wrote:
 Reposting, with ChangeLog.

  #define BRANCH_COST(speed_p, predictable_p) \
 -  (TARGET_32BIT ? 4 : (optimize  0 ? 2 : 0))
 +  (TARGET_32BIT ? (TARGET_THUMB2  optimize_size ? 1 : 4) \
 +               : (optimize  0 ? 2 : 0))

 Don't use optimize_size here, use !speed_p.

 Otherwise OK.


 Replaced optimize_size by !speed_p.

 I wonder if we can add a code-size test harness.  Using GNU size
 for examle, if available and a new dg-final { object-size SIZE } that
 fails when the size is greater than the specified one (of course all
 object-size tests with specific target restrictions).

 like this?

Yes!

I'm not sure finding the size binary is ok, and maybe we need to
verify that size output actually matches our expectation.  Other
than that it's exactly what I meant.

Mike?  Rainer?

Thanks,
Richard.

 Thanks,
 - Tom



New template for 'gcc' made available

2011-04-03 Thread Translation Project Robot
Hello, gentle maintainer.

This is a message from the Translation Project robot.  (If you have
any questions, send them to coordina...@translationproject.org.)

A new POT file for textual domain 'gcc' has been made available
to the language teams for translation.  It is archived as:

http://translationproject.org/POT-files/gcc-4.6.0.pot

Whenever you have a new distribution with a new version number ready,
containing a newer POT file, please send the URL of that distribution
tarball to the address below.  The tarball may be just a pretest or a
snapshot, it does not even have to compile.  It is just used by the
translators when they need some extra translation context.

Below is the URL which has been provided to the translators of your
package.  Please inform the translation coordinator, at the address
at the bottom, if this information is not current:

ftp://ftp.gnu.org/gnu/gcc/gcc-4.6.0/gcc-4.6.0.tar.bz2

Translated PO files will later be automatically e-mailed to you.

Thank you for all your work,

The Translation Project robot, in the
name of your translation coordinator.
coordina...@translationproject.org



Re: [Ada] Re-enable -feliminate-unused-debug-types by default

2011-04-03 Thread Eric Botcazou
 Nice.  I documented this for GCC 4.7 as follows.

Thanks.  However, removed is a bit of a misnomer since the option still 
exists in the compiler (the removal from gcc-interface/lang.opt is purely 
cosmetical).  Moreover, 12.5% is exactly 1/8.  So I'd suggest:

   ul
 liThe command-line option code-feliminate-unused-debug-types/code
-  has been removed.  Its behavior is the default now, leading to
-  a reduction in debug info size of 12% and more for relevant
-  cases./li
+  has been re-enabled by default, as it was for the other languages,
+  leading to a reduction in debug info size of 12.5% and more for
+  relevant cases, as well as to a small compilation speedup./li
   /ul

-- 
Eric Botcazou


Remove useless local variable in try_combine

2011-04-03 Thread Eric Botcazou
Tested on i586-suse-linux, applied on the mainline.


2011-04-03  Eric Botcazou  ebotca...@adacore.com

* combine.c (try_combine): Remove useless local variable.


-- 
Eric Botcazou
Index: combine.c
===
--- combine.c	(revision 171888)
+++ combine.c	(working copy)
@@ -3974,7 +3974,6 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx
 rtx i3links, i2links, i1links = 0, i0links = 0;
 rtx midnotes = 0;
 int from_luid;
-unsigned int regno;
 /* Compute which registers we expect to eliminate.  newi2pat may be setting
either i3dest or i2dest, so we must check it.  Also, i1dest may be the
same as i3dest, in which case newi2pat may be setting i1dest.  */
@@ -4232,8 +4231,7 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx
 
 if (REG_P (i2dest))
   {
-	rtx link;
-	rtx i2_insn = 0, i2_val = 0, set;
+	rtx link, i2_insn = 0, i2_val = 0, set;
 
 	/* The insn that used to set this register doesn't exist, and
 	   this life of the register may not exist either.  See if one of
@@ -4242,7 +4240,6 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx
 	   this and I2 set the register to a value that depended on its old
 	   contents, we will get confused.  If this insn is used, thing
 	   will be set correctly in combine_instructions.  */
-
 	for (link = LOG_LINKS (i3); link; link = XEXP (link, 1))
 	  if ((set = single_set (XEXP (link, 0))) != 0
 	   rtx_equal_p (i2dest, SET_DEST (set)))
@@ -4255,16 +4252,12 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx
 	if (! added_sets_2
 	 (newi2pat == 0 || ! reg_mentioned_p (i2dest, newi2pat))
 	 ! i2dest_in_i2src)
-	  {
-	regno = REGNO (i2dest);
-	INC_REG_N_SETS (regno, -1);
-	  }
+	  INC_REG_N_SETS (REGNO (i2dest), -1);
   }
 
 if (i1  REG_P (i1dest))
   {
-	rtx link;
-	rtx i1_insn = 0, i1_val = 0, set;
+	rtx link, i1_insn = 0, i1_val = 0, set;
 
 	for (link = LOG_LINKS (i3); link; link = XEXP (link, 1))
 	  if ((set = single_set (XEXP (link, 0))) != 0
@@ -4273,15 +4266,13 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx
 
 	record_value_for_reg (i1dest, i1_insn, i1_val);
 
-	regno = REGNO (i1dest);
 	if (! added_sets_1  ! i1dest_in_i1src)
-	  INC_REG_N_SETS (regno, -1);
+	  INC_REG_N_SETS (REGNO (i1dest), -1);
   }
 
 if (i0  REG_P (i0dest))
   {
-	rtx link;
-	rtx i0_insn = 0, i0_val = 0, set;
+	rtx link, i0_insn = 0, i0_val = 0, set;
 
 	for (link = LOG_LINKS (i3); link; link = XEXP (link, 1))
 	  if ((set = single_set (XEXP (link, 0))) != 0
@@ -4290,9 +4281,8 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx
 
 	record_value_for_reg (i0dest, i0_insn, i0_val);
 
-	regno = REGNO (i0dest);
 	if (! added_sets_0  ! i0dest_in_i0src)
-	  INC_REG_N_SETS (regno, -1);
+	  INC_REG_N_SETS (REGNO (i0dest), -1);
   }
 
 /* Update reg_stat[].nonzero_bits et al for any changes that may have


Re: [PATCH] Fix VTA updating in the combiner (PR debug/48343)

2011-04-03 Thread Eric Botcazou
 I think we need to update there in all cases.  The reason we don't need to
 update beyond i3 resp. undobuf.other_insn is that DF guarantees us that
 there won't be debug insns referring to those pseudos afterwards, otherwise
 either the pseudo must be live afterwards in real code (then it wouldn't
 be a single use case), or debug insns would be reset, or a debug temporary
 would be created, where the temporary is set before last place where
 the pseudo is used in real code.  Now, once we propagate_for_debug after
 some insn, DF hasn't been run in between and thus the pseudos might be live
 afterwards.

Frankly moving down last_combined_insn to undobuf.other_insn in the UNDO_MODE 
case seems a little overengineered at this point.

 If you just want to avoid a global variable, the code can be surely changed
 to have a local variable from combine_instructions and pass address to that
 to all try_combine calls, but other than that I think we should do what the
 patch does.

I'd eliminate the global variable and directly pass the insn to try_combine, 
this is good enough for now IMO.

-- 
Eric Botcazou


New Russian PO file for 'gcc' (version 4.6.0)

2011-04-03 Thread Translation Project Robot
Hello, gentle maintainer.

This is a message from the Translation Project robot.

A revised PO file for textual domain 'gcc' has been submitted
by the Russian team of translators.  The file is available at:

http://translationproject.org/latest/gcc/ru.po

(This file, 'gcc-4.6.0.ru.po', has just now been sent to you in
a separate email.)

All other PO files for your package are available in:

http://translationproject.org/latest/gcc/

Please consider including all of these in your next release, whether
official or a pretest.

Whenever you have a new distribution with a new version number ready,
containing a newer POT file, please send the URL of that distribution
tarball to the address below.  The tarball may be just a pretest or a
snapshot, it does not even have to compile.  It is just used by the
translators when they need some extra translation context.

The following HTML page has been updated:

http://translationproject.org/domain/gcc.html

If any question arises, please contact the translation coordinator.

Thank you for all your work,

The Translation Project robot, in the
name of your translation coordinator.
coordina...@translationproject.org



Re: Random cleanups [2/4]: canonicalize ctor values

2011-04-03 Thread Richard Guenther
On Sun, Apr 3, 2011 at 12:14 PM, Michael Matz m...@suse.de wrote:
 Hi,

 On Thu, 31 Mar 2011, Richard Guenther wrote:

  In the meanwhile, is the below version okay?

 If it bootstraps  tests ok then yes.  The java parts look obvious.

 So, we indeed can't remove the other calls to
 canonicalize_constructor_val, because of local ctors.  And fortran has a
 similar problem with java.  Instead of fixing up all these places of
 resetting cfun (where otherwise the frontends don't deal at all with it,
 it's mostly just set from the various cgraph routines), I decided to
 simply clear this at the appropriate place in
 cgraph_finalize_compilation_unit.

 Regstrapping in progress again.  Still okay if that works?

Ok.

Thanks,
Richard.


 Ciao,
 Michael.
 --
        * cgraphbuild.c (record_reference): Canonicalize constructor
        values.
        * gimple-fold.c (canonicalize_constructor_val): Accept being called
        without function context.
        * cgraphunit.c (cgraph_finalize_compilation_unit): Clear
        current_function_decl and cfun.

 Index: cgraphbuild.c
 ===
 --- cgraphbuild.c.orig  2011-04-03 11:28:45.0 +0200
 +++ cgraphbuild.c       2011-04-03 11:31:21.0 +0200
 @@ -53,6 +53,12 @@ record_reference (tree *tp, int *walk_su
   tree decl;
   struct record_reference_ctx *ctx = (struct record_reference_ctx *)data;

 +  t = canonicalize_constructor_val (t);
 +  if (!t)
 +    t = *tp;
 +  else if (t != *tp)
 +    *tp = t;
 +
   switch (TREE_CODE (t))
     {
     case VAR_DECL:
 Index: gimple-fold.c
 ===
 --- gimple-fold.c.orig  2011-04-03 11:28:45.0 +0200
 +++ gimple-fold.c       2011-04-03 11:31:21.0 +0200
 @@ -106,7 +106,7 @@ can_refer_decl_in_current_unit_p (tree d
   return true;
  }

 -/* CVAL is value taken from DECL_INITIAL of variable.  Try to transorm it 
 into
 +/* CVAL is value taken from DECL_INITIAL of variable.  Try to transform it 
 into
    acceptable form for is_gimple_min_invariant.   */

  tree
 @@ -131,10 +131,9 @@ canonicalize_constructor_val (tree cval)
              || TREE_CODE (base) == FUNCTION_DECL)
           !can_refer_decl_in_current_unit_p (base))
        return NULL_TREE;
 -      if (base  TREE_CODE (base) == VAR_DECL)
 +      if (cfun  base  TREE_CODE (base) == VAR_DECL)
        add_referenced_var (base);
 -      /* We never have the chance to fixup types in global initializers
 -         during gimplification.  Do so here.  */
 +      /* Fixup types in global initializers.  */
       if (TREE_TYPE (TREE_TYPE (cval)) != TREE_TYPE (TREE_OPERAND (cval, 0)))
        cval = build_fold_addr_expr (TREE_OPERAND (cval, 0));
     }
 Index: cgraphunit.c
 ===
 --- cgraphunit.c.orig   2011-04-03 11:41:46.0 +0200
 +++ cgraphunit.c        2011-04-03 11:50:01.0 +0200
 @@ -1066,6 +1066,11 @@ cgraph_finalize_compilation_unit (void)
  {
   timevar_push (TV_CGRAPH);

 +  /* If we're here there's no current function anymore.  Some frontends
 +     are lazy in clearing these.  */
 +  current_function_decl = NULL;
 +  set_cfun (NULL);
 +
   /* Do not skip analyzing the functions if there were errors, we
      miss diagnostics for following functions otherwise.  */




Re: [wwwdocs]

2011-04-03 Thread Gerald Pfeifer
On Fri, 1 Apr 2011, Devang S wrote:
 Found a bug on the cvs.html web page. How to start the web page patching
 I followed the instruction on the http://gcc.gnu.org/cvs.html page,
 downloaded the wwwdocs via cvs, validated the web page to be updated.
 Now I want to commit the changes to the repo. But for that I need
 write access(obviously). Please let me know what I need to do to
 commit the changes. Or please can someone do that on my behalf? I can
 let you know the details to be made.

Thanks for the report and suggested patch, Devang.

Looking into this a bit more, I noticed that -z actually only is
used for the classic protocol, whereas when tunnelled through SSH
as is the case here, SSH already should take care of compression,
plus the amount of data here is small, so we can just simplify and
remove this option altogether.  I went ahead and committed the patch
below

As for your other questions, just keep changes coming, and I, or
others depending on the area, will be happy to review and commit
them.

Gerald

Index: cvs.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/cvs.html,v
retrieving revision 1.219
diff -u -r1.219 cvs.html
--- cvs.html8 Jan 2011 16:50:20 -   1.219
+++ cvs.html3 Apr 2011 12:42:51 -
@@ -21,7 +21,7 @@
 
 ol
  liSet CVS_RSH in your environment to codessh/code./li
- licodecvs -qz -d :ext:iusername/i@gcc.gnu.org:/cvs/gcc checkout
+ licodecvs -q -d :ext:iusername/i@gcc.gnu.org:/cvs/gcc checkout
 -P wwwdocs/code where iusername/i is your user name at gcc.gnu.org/li
 /ol
 


]wwwdocs] Consolidate two lists in releases.html

2011-04-03 Thread Gerald Pfeifer
Keeping two distinct lists made sense in the historical context
around egcs, nowadays we can consolidate them.

Installed.

Gerald

Index: releases.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/releases.html,v
retrieving revision 1.92
diff -u -r1.92 releases.html
--- releases.html   25 Mar 2011 19:56:41 -  1.92
+++ releases.html   3 Apr 2011 14:11:20 -
@@ -26,8 +26,8 @@
 
 h2a name=timelineGCC Timeline/a/h2
 
-pThe table is sorted by date; starting with version 3.3.4, the GCC
-project provides bug releases for older release branches for those users
+pThe table is sorted by date.  Note that starting with version 3.3.4,
+we provide bug releases for older release branches for those users
 who require a very high degree of stability./p
 
 pPlease refer to our a href=develop.html#timelinedevelopment plan/a
@@ -109,15 +109,6 @@
 trtda href=egcs-1.0/EGCS 1.0.1/a/td tdJanuary 6, 1998/td/tr
 trtda href=egcs-1.0/EGCS 1.0/a/td   tdDecember 3, 1997/td/tr
 
-/table
-
-h2a name=historicalHistorical/a/h2
-
-pIf you have evidence for a missing release date, please send it in./p
-
-table border=1 cellspacing=0 cellpadding=5
-trthGCC Version/ththRelease date/th/tr
-
 trtd2.7.2.3/tdtdAugust 22, 1997/td/tr
 trtd2.7.2.2/tdtdJanuary 29, 1997/td/tr
 trtd2.7.2.1/tdtdJune 29, 1996/td/tr


Re: [doc] Improve support library requirements documentation (PR bootstrap/48135)

2011-04-03 Thread Gerald Pfeifer
On Mon, 21 Mar 2011, Rainer Orth wrote:
 While investigating PR bootstrap/48135, it came up that the submitter 
 had run into trouble bootstrapping with mpc 0.9.0.  Unfortunately, 
 install.texi when describing support library requirements always
 lists `(or later)' with the individual libraries.

I wouldn't say unfortunately, since those later versions _are_
supposed to work.  Also, think of users of a distribution that has
these libraries in specific, possibly newer version, who ideally
should be able to use those.

 +Several support libraries are necessary to build GCC, some are required,
 +others optional.

Something's odd here. :-)  Some of the necessary libaries are required,
while other necessary libaries are optional?  How about something like

  Several support libraries are necessary to build GCC, plus there
  are a couple of optional ones.

or so?

   While any sufficiently new version of required tools
 +usually work, library requirements are generally stricter.  Newer
 +versions may work in some cases, but it's safer to use the exact
 +versions documented.  We appreciate bug reports about problems with
 +newer versions, though.

This is an important clarification, though at the same time I'm a bit 
concerned about our installation documentation getting ever bigger (and
less likely to be read in consequence).  Perhaps omit the part about
bug reports?


Gerald


Re: [Patch, libgFortran] Fix MinGW64 compile warning

2011-04-03 Thread Tobias Burnus

Janne Blomqvist wrote:

Since the reason for adding the gfstat_t typedef was that on mingw we
needed to use struct _stati64 instead of struct stat, and that
justification now seems to be gone with this patch, please also remove
gfstat_t and just use struct stat everywhere.


How about the attached patch? (Build  regtested on x86-64-linux.)

Tobias
2011-04-04  Tobias Burnus  bur...@net-b.de

	* unix.c: Adapt stat DEFINEs since MinGW64 supports LFS.
	(fallback_access, open_internal4, compare_file_filename,
	find_file, file_size, inquire_sequential, inquire_direct,
	inquire_formatted): Use struct stat instead of gfstat_t.

diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c
index edccdd6..d14d2b4 100644
--- a/libgfortran/io/unix.c
+++ b/libgfortran/io/unix.c
@@ -48,10 +48,14 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #define WIN32_LEAN_AND_MEAN
 #include windows.h
 
+#if !defined(_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64
+#undef lseek
 #define lseek _lseeki64
+#undef fstat
 #define fstat _fstati64
+#undef stat
 #define stat _stati64
-typedef struct _stati64 gfstat_t;
+#endif
 
 #ifndef HAVE_WORKING_STAT
 static uint64_t
@@ -96,9 +100,6 @@ id_from_fd (const int fd)
 }
 
 #endif
-
-#else
-typedef struct stat gfstat_t;
 #endif
 
 #ifndef PATH_MAX
@@ -156,7 +157,7 @@ fallback_access (const char *path, int mode)
 
   if (mode == F_OK)
 {
-  gfstat_t st;
+  struct stat st;
   return stat (path, st);
 }
 
@@ -924,7 +925,7 @@ open_internal4 (char *base, int length, gfc_offset offset)
 static stream *
 fd_to_stream (int fd)
 {
-  gfstat_t statbuf;
+  struct stat statbuf;
   unix_stream *s;
 
   s = get_mem (sizeof (unix_stream));
@@ -1405,7 +1406,7 @@ int
 compare_file_filename (gfc_unit *u, const char *name, int len)
 {
   char path[PATH_MAX + 1];
-  gfstat_t st;
+  struct stat st;
 #ifdef HAVE_WORKING_STAT
   unix_stream *s;
 #else
@@ -1446,7 +1447,7 @@ compare_file_filename (gfc_unit *u, const char *name, int len)
 
 
 #ifdef HAVE_WORKING_STAT
-# define FIND_FILE0_DECL gfstat_t *st
+# define FIND_FILE0_DECL struct stat *st
 # define FIND_FILE0_ARGS st
 #else
 # define FIND_FILE0_DECL uint64_t id, const char *file, gfc_charlen_type file_len
@@ -1505,7 +1506,7 @@ gfc_unit *
 find_file (const char *file, gfc_charlen_type file_len)
 {
   char path[PATH_MAX + 1];
-  gfstat_t st[1];
+  struct stat st[1];
   gfc_unit *u;
 #if defined(__MINGW32__)  !HAVE_WORKING_STAT
   uint64_t id = 0ULL;
@@ -1656,7 +1657,7 @@ GFC_IO_INT
 file_size (const char *file, gfc_charlen_type file_len)
 {
   char path[PATH_MAX + 1];
-  gfstat_t statbuf;
+  struct stat statbuf;
 
   if (unpack_filename (path, file, file_len))
 return -1;
@@ -1677,7 +1678,7 @@ const char *
 inquire_sequential (const char *string, int len)
 {
   char path[PATH_MAX + 1];
-  gfstat_t statbuf;
+  struct stat statbuf;
 
   if (string == NULL ||
   unpack_filename (path, string, len) || stat (path, statbuf)  0)
@@ -1701,7 +1702,7 @@ const char *
 inquire_direct (const char *string, int len)
 {
   char path[PATH_MAX + 1];
-  gfstat_t statbuf;
+  struct stat statbuf;
 
   if (string == NULL ||
   unpack_filename (path, string, len) || stat (path, statbuf)  0)
@@ -1725,7 +1726,7 @@ const char *
 inquire_formatted (const char *string, int len)
 {
   char path[PATH_MAX + 1];
-  gfstat_t statbuf;
+  struct stat statbuf;
 
   if (string == NULL ||
   unpack_filename (path, string, len) || stat (path, statbuf)  0)


Re: [testsuite, fortran] Compile gfortran.dg/bessel_[67].f90 with -mieee

2011-04-03 Thread Tobias Burnus

Regarding Bessel_6: I have committed the attached patch.

Rainer Orth wrote:

What about the following patch that fixes at least bessel_7.f90?

Tested with the appropriate runtest invocations on the 4.6 branch
(couldn't test mainline since bootstrap was broken there).

Ok for mainline, 4.6 and 4.5 branches once tested?


OK.


I've also had a look at the other gfortran testsuite failures on Tru64
UNIX V5.1B and IRIX 6.5 that couldn't be fixed that easily.
How to best report them and have them investigated?  I suspect that
there might be only a few common issues, so a PR per failing testcase
might be overkill, while a single one for all failures is hard to deal with.


No idea. I would go for only one or few PRs, one can still extend it to 
several. Maybe one could also restrict one to few issues as a starter.


Tobias
Index: gcc/testsuite/gfortran.dg/bessel_6.f90
===
--- gcc/testsuite/gfortran.dg/bessel_6.f90	(Revision 171911)
+++ gcc/testsuite/gfortran.dg/bessel_6.f90	(Arbeitskopie)
@@ -16,7 +16,7 @@
 ! more tolerant
 !  * [0, 5, 3, 4, 6, 7, 7, 5, 5, 6, 66, 4 ]
 integer,parameter :: mymax(size(values)) =  
- [100, 17, 23, 21, 27, 28, 32, 35, 36, 41, 47, 37 ]
+ [100, 17, 23, 21, 27, 28, 32, 35, 31, 41, 47, 37 ]
 integer, parameter :: Nmax = 100
 real :: rec(0:Nmax), lib(0:Nmax)
 integer :: i
@@ -39,8 +39,9 @@
 do i = 0, mymax
 !  print '(i2,2e17.9,e12.2,f18.10,2l3)', i, rec(i), lib(i), 
 !rec(i)-lib(i),   ((rec(i)-lib(i))/rec(i))/epsilon(x), 
-!rec(i) == lib(i) .or. abs((rec(i)-lib(i))/rec(i))  myeps
-if (.not. (rec(i) == lib(i) .or. abs((rec(i)-lib(i))/rec(i))  myeps)) 
+!rec(i) == lib(i), abs((rec(i)-lib(i))/rec(i))  myeps
+if (rec(i) == lib(i)) CYCLE
+if (abs((rec(i)-lib(i))/rec(i))  myeps) 
   call abort()
 end do
 
Index: gcc/testsuite/ChangeLog
===
--- gcc/testsuite/ChangeLog	(Revision 171911)
+++ gcc/testsuite/ChangeLog	(Arbeitskopie)
@@ -1,3 +1,7 @@
+2011-04-03  Tobias Burnus  bur...@net-b.de
+
+	* gfortran.dg/bessel_6.f90: Reduce mymax for Tru64.
+
 2011-04-03  Richard Guenther  rguent...@suse.de
 	Ira Rosen  ira.ro...@linaro.org
 


[wwwdocs] Tweak the reference to lists in our standard footer

2011-04-03 Thread Gerald Pfeifer
It's a lot more natural to go to a link our lists when trying to
access archives, than a link public archives for subscription and
other information on lists.

Installed, and pages on gcc.gnu.org regenerated.

Gerald

Index: style.mhtml
===
RCS file: /cvs/gcc/wwwdocs/htdocs/style.mhtml,v
retrieving revision 1.107
diff -u -r1.107 style.mhtml
--- style.mhtml 3 Apr 2011 15:36:52 -   1.107
+++ style.mhtml 3 Apr 2011 16:35:25 -
@@ -264,8 +264,8 @@
 mailing list might help.br /
 Please send comments on these web pages and the development of GCC to our
 developer list at a href=mailto:g...@gcc.gnu.org;g...@gcc.gnu.org/a.
-All of our lists have
-a href=http://gcc.gnu.org/lists.html;public archives/a.
+All of a href=http://gcc.gnu.org/lists.html;our lists/a
+have public archives.
 /address
 
 pCopyright (C)


[wwwdocs] rotate news

2011-04-03 Thread Gerald Pfeifer
Applied.

Gerald

Index: index.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/index.html,v
retrieving revision 1.783
diff -u -r1.783 index.html
--- index.html  29 Mar 2011 20:26:53 -  1.783
+++ index.html  3 Apr 2011 17:17:50 -
@@ -77,20 +77,6 @@
 on such targets. It has been contributed by Franccedil;ois-Xavier
 Coudert./dd
 
-dtOctober 1, 2010/dt
-dda href=gcc-4.4/GCC 4.4.5/a has been released./dd
-
-dtSeptember 28, 2010/dt
-ddOur old Bugzilla instance has been upgraded to the latest release
-3.6.2, bringing a better user experience and a new and powerful API for
-external tools.  The upgrade has been done by Freacute;deacute;ric
-Buclin of the Bugzilla project at Mozilla./dd
-
-dtSeptember 28, 2010/dt
-ddSupport has been added for the 
-a href=gcc-4.6/changes.html#microblazeXilinx MicroBlaze softcore 
processor/a 
-target by Michael Eager, Eager Consulting./dd
-
 /dl
 
 div
Index: news.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/news.html,v
retrieving revision 1.128
diff -u -r1.128 news.html
--- news.html   18 Jan 2011 21:59:33 -  1.128
+++ news.html   3 Apr 2011 17:17:50 -
@@ -14,6 +14,20 @@
 
 !-- ATTENTION: This page is for *OLD* news!  Latest news goes first. --
 
+dtOctober 1, 2010/dt
+dda href=gcc-4.4/GCC 4.4.5/a has been released./dd
+
+dtSeptember 28, 2010/dt
+ddOur old Bugzilla instance has been upgraded to the latest release
+3.6.2, bringing a better user experience and a new and powerful API for
+external tools.  The upgrade has been done by Freacute;deacute;ric
+Buclin of the Bugzilla project at Mozilla./dd
+
+dtSeptember 28, 2010/dt
+ddSupport has been added for the 
+a href=gcc-4.6/changes.html#microblazeXilinx MicroBlaze softcore 
processor/a 
+target by Michael Eager, Eager Consulting./dd
+
 dtJuly 31, 2010/dt
 dda href=gcc-4.5/GCC 4.5.1/a has been released./dd
 


Re: [DOC patch]: Update 4.6 release notes w.r.t __float128

2011-04-03 Thread Gerald Pfeifer
On Sun, 3 Apr 2011, Uros Bizjak wrote:
 __float128 is supported on Darwin, FreeBSD, Solaris 2, MinGW and
 Cygwin for 32-bit and 64-bit targets. Also, add a line for Windows
 x86/x86_64 specific notes to mention added support for __float128.

Looks good, thanks for catching this!

Gerald


[quadmath, committed] Small doc patch (PR 48311)

2011-04-03 Thread Tobias Burnus

Committed as Rev. 171914.

Tobias
Index: libquadmath/ChangeLog
===
--- libquadmath/ChangeLog	(Revision 171913)
+++ libquadmath/ChangeLog	(Arbeitskopie)
@@ -1,3 +1,9 @@
+2011-04-03  Tobias Burnus  bur...@net-b.de
+
+	PR fortran/48311
+	* libquadmath.texi (strtoflt128): Fix typo.
+	(quadmath_snprintf): Move note up, make @item.
+
 2011-03-25  Jakub Jelinek  ja...@redhat.com
 
 	* printf/printf_fp.c (__quadmath_printf_fp): Use memcpy instead of
Index: libquadmath/libquadmath.texi
===
--- libquadmath/libquadmath.texi	(Revision 171913)
+++ libquadmath/libquadmath.texi	(Arbeitskopie)
@@ -256,7 +256,7 @@
 @node strtoflt128
 @section @code{strtoflt128} --- Convert from string
 
-The function @code{dmath_strtopQ} converts a string into a
+The function @code{strtoflt128} converts a string into a
 @code{__float128} number.
 
 @table @asis
@@ -310,6 +310,11 @@
 @item @var{format} @tab conversion specifier string
 @end multitable
 
+@item Note
+On some targets when supported by the C library hooks are installed
+for @code{printf} family of functions, so that @code{printf (%Qe, 1.2Q);}
+etc.@: works too.
+
 @item Example
 @smallexample
 #include quadmath.h
@@ -351,11 +356,7 @@
 
 @end table
 
-On some targets when supported by the C library hooks are installed
-for @code{printf} family of functions, so that @code{printf (%Qe, 1.2Q);}
-etc.@: works too.
 
-
 @c -
 @c GNU Free Documentation License
 @c -


[AVR] Define ASM_OUTPUT_ALIGNED_BSS macro instead of ASM_OUTPUT_BSS

2011-04-03 Thread Anatoly Sokolov
Hello.

  The AVR back end is last one which uses a ASM_OUTPUT_BSS macro. This patch 
change AVR back end to use more flexible ASM_OUTPUT_ALIGNED_BSS macro instead 
of ASM_OUTPUT_BSS. 

  Committed.

* config/avr/avr.h (ASM_OUTPUT_BSS): Remove.
(ASM_OUTPUT_ALIGNED_BSS): Define

Index: gcc/config/avr/avr.h
===
--- gcc/config/avr/avr.h(revision 171911)
+++ gcc/config/avr/avr.h(working copy)
@@ -474,8 +474,8 @@
  fprintf ((STREAM), ,%lu,1\n, (unsigned long)(SIZE));   \
 } while (0)
 
-#define ASM_OUTPUT_BSS(FILE, DECL, NAME, SIZE, ROUNDED)
\
-  asm_output_bss ((FILE), (DECL), (NAME), (SIZE), (ROUNDED))
+#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
+  asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
 
 #define ASM_OUTPUT_LOCAL(STREAM, NAME, SIZE, ROUNDED)  \
 do {   \


Anatoly.



[SPARC] Hookize PREFERRED_RELOAD_CLASS

2011-04-03 Thread Anatoly Sokolov
 Hello.

  This patch removes obsolete PREFERRED_RELOAD_CLASS macro from SPARC back end
in the GCC and introduces equivalent TARGET_PREFERRED_RELOAD_CLASS target 
hooks.

   Bootstrapped and regression tested on sparc64-unknown-linux-gnu.

  OK to install?

* config/sparc/sparc.h (PREFERRED_RELOAD_CLASS): Remove.
* config/sparc/sparc.c (TARGET_PREFERRED_RELOAD_CLASS): Define.
(sparc_preferred_reload_class): New function.

Index: gcc/gcc/config/sparc/sparc.c
===
--- gcc/gcc/config/sparc/sparc.c(revision 171581)
+++ gcc/gcc/config/sparc/sparc.c(working copy)
@@ -467,6 +467,7 @@
 #endif
 static void sparc_trampoline_init (rtx, tree, rtx);
 static enum machine_mode sparc_preferred_simd_mode (enum machine_mode);
+static reg_class_t sparc_preferred_reload_class (rtx x, reg_class_t rclass);
 
 #ifdef SUBTARGET_ATTRIBUTE_TABLE
 /* Table of valid machine attributes.  */
@@ -660,6 +661,8 @@
 
 #undef TARGET_CAN_ELIMINATE
 #define TARGET_CAN_ELIMINATE sparc_can_eliminate
+#undef  TARGET_PREFERRED_RELOAD_CLASS
+#define TARGET_PREFERRED_RELOAD_CLASS sparc_preferred_reload_class
 
 #undef TARGET_CONDITIONAL_REGISTER_USAGE
 #define TARGET_CONDITIONAL_REGISTER_USAGE sparc_conditional_register_usage
@@ -9769,4 +9772,33 @@
 fixed_regs[4] = 0;
 }
 
+/* Implement TARGET_PREFERRED_RELOAD_CLASS
+
+   - We can't load constants into FP registers.
+   - We can't load FP constants into integer registers when soft-float,
+ because there is no soft-float pattern with a r/F constraint.
+   - We can't load FP constants into integer registers for TFmode unless
+ it is 0.0L, because there is no movtf pattern with a r/F constraint.
+   - Try and reload integer constants (symbolic or otherwise) back into
+ registers directly, rather than having them dumped to memory.  */
+
+static reg_class_t
+sparc_preferred_reload_class (rtx x, reg_class_t rclass)
+{
+  if (CONSTANT_P (x))
+{
+  if (FP_REG_CLASS_P (rclass)
+ || rclass == GENERAL_OR_FP_REGS
+ || rclass == GENERAL_OR_EXTRA_FP_REGS
+ || (GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT  ! TARGET_FPU)
+ || (GET_MODE (x) == TFmode  ! const_zero_operand (x, TFmode)))
+   return NO_REGS;
+  else if (!FP_REG_CLASS_P (rclass)
+   GET_MODE_CLASS (GET_MODE (x)) == MODE_INT)
+   return GENERAL_REGS;
+}
+
+  return rclass;
+}
+
 #include gt-sparc.h
Index: gcc/gcc/config/sparc/sparc.h
===
--- gcc/gcc/config/sparc/sparc.h(revision 171581)
+++ gcc/gcc/config/sparc/sparc.h(working copy)
@@ -1153,34 +1153,6 @@
 #define SPARC_SETHI32_P(X) \
   (SPARC_SETHI_P ((unsigned HOST_WIDE_INT) (X)  GET_MODE_MASK (SImode)))
 
-/* Given an rtx X being reloaded into a reg required to be
-   in class CLASS, return the class of reg to actually use.
-   In general this is just CLASS; but on some machines
-   in some cases it is preferable to use a more restrictive class.  */
-/* - We can't load constants into FP registers.
-   - We can't load FP constants into integer registers when soft-float,
- because there is no soft-float pattern with a r/F constraint.
-   - We can't load FP constants into integer registers for TFmode unless
- it is 0.0L, because there is no movtf pattern with a r/F constraint.
-   - Try and reload integer constants (symbolic or otherwise) back into
- registers directly, rather than having them dumped to memory.  */
-
-#define PREFERRED_RELOAD_CLASS(X,CLASS)\
-  (CONSTANT_P (X)  \
-   ? ((FP_REG_CLASS_P (CLASS)  \
-   || (CLASS) == GENERAL_OR_FP_REGS\
-   || (CLASS) == GENERAL_OR_EXTRA_FP_REGS  \
-   || (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT \
-   ! TARGET_FPU) \
-   || (GET_MODE (X) == TFmode  \
-   ! const_zero_operand (X, TFmode)))\
-  ? NO_REGS\
-  : (!FP_REG_CLASS_P (CLASS)   \
-  GET_MODE_CLASS (GET_MODE (X)) == MODE_INT) \
-  ? GENERAL_REGS   \
-  : (CLASS))   \
-   : (CLASS))
-
 /* Return the register class of a scratch register needed to load IN into
a register of class CLASS in MODE.
 

Anatoly.



Re: [DOC patch]: Update 4.6 release notes w.r.t __float128

2011-04-03 Thread Uros Bizjak
On Sun, Apr 3, 2011 at 8:38 PM, Gerald Pfeifer ger...@pfeifer.com wrote:
 On Sun, 3 Apr 2011, Uros Bizjak wrote:
 __float128 is supported on Darwin, FreeBSD, Solaris 2, MinGW and
 Cygwin for 32-bit and 64-bit targets. Also, add a line for Windows
 x86/x86_64 specific notes to mention added support for __float128.

 Looks good, thanks for catching this!

Thanks, installed with a similar note also for Darwin x86.

Uros.


Re: [SPARC] Hookize PREFERRED_RELOAD_CLASS

2011-04-03 Thread Eric Botcazou
 * config/sparc/sparc.h (PREFERRED_RELOAD_CLASS): Remove.
 * config/sparc/sparc.c (TARGET_PREFERRED_RELOAD_CLASS): Define.
 (sparc_preferred_reload_class): New function.

OK, modulo

 +  if (FP_REG_CLASS_P (rclass)
 + || rclass == GENERAL_OR_FP_REGS
 + || rclass == GENERAL_OR_EXTRA_FP_REGS
 + || (GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT  ! TARGET_FPU)
 + || (GET_MODE (x) == TFmode  ! const_zero_operand (x, TFmode)))
 +   return NO_REGS;
 +  else if (!FP_REG_CLASS_P (rclass)
 +   GET_MODE_CLASS (GET_MODE (x)) == MODE_INT)
 +   return GENERAL_REGS;

Drop the else and the useless !FP_REG_CLASS_P (rclass) test:

+  if (FP_REG_CLASS_P (rclass)
+ || rclass == GENERAL_OR_FP_REGS
+ || rclass == GENERAL_OR_EXTRA_FP_REGS
+ || (GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT  ! TARGET_FPU)
+ || (GET_MODE (x) == TFmode  ! const_zero_operand (x, TFmode)))
+   return NO_REGS;
+
+  if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT)
+   return GENERAL_REGS;

No need to retest, just make sure this compiles and install, thanks.

-- 
Eric Botcazou


Re: [wwwdocs] Remove unused styles from gnu.css

2011-04-03 Thread Gerald Pfeifer
On Sun, 3 Apr 2011, Gerald Pfeifer wrote:
 In 2006 we imported this from www.gnu.org to align our appearance
 with the one there.  Alas, that site kept evolving (and inconsistently
 so), and in fact removed this style, and I'll be trying to clean this
 up now.
 
 This is the first step, removing a number of unused styles.

And this is just more of the same which I missed in my first
round.

Gerald

Index: gnu.css
===
RCS file: /cvs/gcc/wwwdocs/htdocs/gnu.css,v
retrieving revision 1.4
diff -u -r1.4 gnu.css
--- gnu.css 3 Apr 2011 13:31:51 -   1.4
+++ gnu.css 3 Apr 2011 21:11:22 -
@@ -53,17 +53,6 @@
 font-weight: bold;
 }
 
-.quote {
-   margin-left: 40px;
-   margin-right: 40px;
-}
-
-.hrsmall {
-   width: 80px;
-   height: 1px;
-   margin-left: 20px;
-}
-
 .td_title {
border-color: #3366cc;
border-style: solid;
@@ -85,40 +74,12 @@
font-size: smaller;
 }
 
-.fsflink {
-   font-size: smaller; 
-   font-family: monospace; 
-   color : #00; 
-   border-left: #3366cc thin solid; 
-   border-bottom: #3366cc thin solid; 
-   padding-left: 5px; 
-   padding-bottom: 5px;
-}
-
-/*
- * rtl stands for right-to-left layout, as in farsi/persian,
- * arabic, etc. See also trans_rtl.
- */
-.fsflink_rtl {
-   font-size: smaller; 
-   font-family: monospace; 
-   color : #00; 
-   border-right: #3366cc thin solid; 
-   border-bottom: #3366cc thin solid; 
-   padding-right: 5px; 
-   padding-bottom: 5px;
-}
-
 img {
border: none 0;
 }
 
 td.side {
color: #3366cc;
-/* background: #f2f2f9; 
-   border-color: #3366cc;
-   border-style: solid;
-   border-width: thin; */
border-color: white;
border-style: none;
vertical-align: top;
@@ -133,8 +94,3 @@
border-style: solid;
border-width: thin;
 }
-
-
-/* Please don't remove -- ss class is used in Polish pages */
-.ss  li, .ss  dt { margin-top: 1em; margin-bottom:0.2em; }
-.ss li  p, .ss  dd  p { margin-top: 0.4em; margin-bottom:0; }


[wwwdocs] Change color scheme for links

2011-04-03 Thread Gerald Pfeifer
This removes the violet coloring for visited links that I had always
not quite enjoyed (but implemented to establish sync with www.gnu.org).

Now that they have thrown out the common style, so can we.

Gerald

Index: gcc.css
===
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc.css,v
retrieving revision 1.5
diff -u -r1.5 gcc.css
--- gcc.css 21 Sep 2006 14:17:36 -  1.5
+++ gcc.css 3 Apr 2011 21:34:49 -
@@ -3,6 +3,10 @@
Gerald Pfeifer ger...@pfeifer.com
  */
 
+a:link{ color: #0066dd; text-decoration: none; }
+a:visited { color: #bb; text-decoration: none; }
+a:hover   { color: orange;  text-decoration: none; }
+
 dl.news dt { font-weight:bold; }
 dl.news dd { margin-left:3ex; }
 
Index: gnu.css
===
RCS file: /cvs/gcc/wwwdocs/htdocs/gnu.css,v
retrieving revision 1.5
diff -u -r1.5 gnu.css
--- gnu.css 3 Apr 2011 21:16:14 -   1.5
+++ gnu.css 3 Apr 2011 21:34:49 -
@@ -23,24 +23,6 @@
font-family: sans-serif;
 }
 
-a:link { 
-   color: #1f00ff; 
-   background-color: transparent;
-   text-decoration: underline;
-   }
-
-a:visited { 
-   color: #9900dd; 
-   background-color: transparent;
-   text-decoration: underline;
-   }
-
-a:hover { 
-   color: #9900dd; 
-   background-color: transparent;
-   text-decoration: none;
-   }
-
 .center {
text-align: center;
 }


Re: [Ada] Re-enable -feliminate-unused-debug-types by default

2011-04-03 Thread Gerald Pfeifer
On Sun, 3 Apr 2011, Eric Botcazou wrote:
 Thanks.  However, removed is a bit of a misnomer since the option still 
 exists in the compiler (the removal from gcc-interface/lang.opt is purely 
 cosmetical).  Moreover, 12.5% is exactly 1/8.  So I'd suggest:

Looks good.  And sorry for stealing that 0.5%. :-)

Gerald


Go patch committed: Start using backend interface

2011-04-03 Thread Ian Lance Taylor
This patch is a small initial step toward using an interface to connect
the Go frontend to the gcc middle end.  This goal is to eventually
permit changing the gofrontend files so that they do not include any gcc
header files and do not call any gcc functions directly.  This first
step only does this for assignment statements.  Bootstrapped and ran Go
testsuite on x86_64-unknown-linux-gnu.  Committed to mainline.

Ian


2011-04-03  Ian Lance Taylor  i...@google.com

* go-gcc.cc: New file.
* Make-lang.in (GO_OBJS): Add go/go-gcc.o.
(go/go-gcc.o): New target.
(go/go.o): Depend on go/gofrontend/backend.h.
(go/statements.o): Likewise.


Index: gcc/go/Make-lang.in
===
--- gcc/go/Make-lang.in	(revision 171846)
+++ gcc/go/Make-lang.in	(working copy)
@@ -50,6 +50,7 @@ GO_OBJS = \
 	go/expressions.o \
 	go/go-backend.o \
 	go/go-dump.o \
+	go/go-gcc.o \
 	go/go-lang.o \
 	go/go.o \
 	go/gogo-tree.o \
@@ -235,6 +236,9 @@ go/go-lang.o: go/go-lang.c $(CONFIG_H) $
 
 GOINCLUDES = -I $(srcdir)/go -I $(srcdir)/go/gofrontend
 
+go/go-gcc.o: go/go-gcc.cc $(GO_SYSTEM_H) $(TREE_H) go/gofrontend/backend.h
+	$(CXX) -c $(GOINCLUDES) $(ALL_CPPFLAGS) $(ALL_CXXFLAGS) $ $(OUTPUT_OPTION)
+
 go/%.o: go/gofrontend/%.cc
 	$(CXX) -c $(GOINCLUDES) $(ALL_CPPFLAGS) $(ALL_CXXFLAGS) $ $(OUTPUT_OPTION)
 
@@ -249,7 +253,7 @@ go/expressions.o: go/gofrontend/expressi
 	go/gofrontend/export.h $(GO_IMPORT_H) $(GO_STATEMENTS_H) $(GO_LEX_H) \
 	$(GO_EXPRESSIONS_H)
 go/go.o: go/gofrontend/go.cc $(GO_SYSTEM_H) $(GO_C_H) $(GO_LEX_H) \
-	$(GO_PARSE_H) $(GO_GOGO_H)
+	$(GO_PARSE_H) go/gofrontend/backend.h $(GO_GOGO_H)
 go/go-dump.o: go/gofrontend/go-dump.cc $(GO_SYSTEM_H) $(GO_C_H) \
 	go/gofrontend/go-dump.h
 go/gogo-tree.o: go/gofrontend/gogo-tree.cc $(GO_SYSTEM_H) $(TOPLEV_H) \
@@ -272,7 +276,7 @@ go/parse.o: go/gofrontend/parse.cc $(GO_
 go/statements.o: go/gofrontend/statements.cc $(GO_SYSTEM_H) intl.h $(TREE_H) \
 	$(GIMPLE_H) convert.h tree-iterator.h $(TREE_FLOW_H) $(REAL_H) \
 	$(GO_C_H) $(GO_TYPES_H) $(GO_EXPRESSIONS_H) $(GO_GOGO_H) \
-	$(GO_STATEMENTS_H)
+	go/gofrontend/backend.h $(GO_STATEMENTS_H)
 go/types.o: go/gofrontend/types.cc $(GO_SYSTEM_H) $(TOPLEV_H) intl.h $(TREE_H) \
 	$(GIMPLE_H) $(REAL_H) convert.h $(GO_C_H) $(GO_GOGO_H) \
 	go/gofrontend/operator.h $(GO_EXPRESSIONS_H) $(GO_STATEMENTS_H) \
Index: gcc/go/go-gcc.cc
===
--- gcc/go/go-gcc.cc	(revision 0)
+++ gcc/go/go-gcc.cc	(revision 0)
@@ -0,0 +1,199 @@
+// go-gcc.cc -- Go frontend to gcc IR.
+// Copyright (C) 2011 Free Software Foundation, Inc.
+// Contributed by Ian Lance Taylor, Google.
+
+// This file is part of GCC.
+
+// GCC is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 3, or (at your option) any later
+// version.
+
+// GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+// for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with GCC; see the file COPYING3.  If not see
+// http://www.gnu.org/licenses/.
+
+#include go-system.h
+
+// This has to be included outside of extern C, so we have to
+// include it here before tree.h includes it later.
+#include gmp.h
+
+#ifndef ENABLE_BUILD_WITH_CXX
+extern C
+{
+#endif
+
+#include tree.h
+
+#ifndef ENABLE_BUILD_WITH_CXX
+}
+#endif
+
+#include backend.h
+
+// A class wrapping a tree.
+
+class Gcc_tree
+{
+ public:
+  Gcc_tree(tree t)
+: t_(t)
+  { }
+
+  tree
+  get_tree()
+  { return this-t_; }
+
+ private:
+  tree t_;
+};
+
+// In gcc, types, expressions, and statements are all trees.
+class Btype : public Gcc_tree
+{
+ public:
+  Btype(tree t)
+: Gcc_tree(t)
+  { }
+};
+
+class Bexpression : public Gcc_tree
+{
+ public:
+  Bexpression(tree t)
+: Gcc_tree(t)
+  { }
+};
+
+class Bstatement : public Gcc_tree
+{
+ public:
+  Bstatement(tree t)
+: Gcc_tree(t)
+  { }
+};
+
+// This file implements the interface between the Go frontend proper
+// and the gcc IR.  This implements specific instantiations of
+// abstract classes defined by the Go frontend proper.  The Go
+// frontend proper class methods of these classes to generate the
+// backend representation.
+
+class Gcc_backend : public Backend
+{
+ public:
+  // Types.
+
+  Btype*
+  error_type()
+  { gcc_unreachable(); }
+
+  Btype*
+  void_type()
+  { gcc_unreachable(); }
+
+  Btype*
+  bool_type()
+  { gcc_unreachable(); }
+
+  Btype*
+  integer_type(bool /* is_unsigned */, int /* bits */)
+  { gcc_unreachable(); }
+
+  Btype*
+  float_type(int /* bits */)
+  { gcc_unreachable(); }
+
+  Btype*
+  string_type()
+  { gcc_unreachable(); }
+
+  Btype*
+  

Re: [wwwdocs] Add Subversion revisions to the timeline

2011-04-03 Thread Gerald Pfeifer
On Sat, 26 Mar 2011, Florian Weimer wrote:
GCC 4.6 Stage 3 (starts 2010-11-03)  \
 |v
 -   |   GCC 4.5.2 release (2010-12-16)
 +   | r167945   GCC 4.5.2 release (2010-12-16)

 The idea is to include the copy-source revision on the trunk or the
 respective branch, so that you can use the timeline to check whether a
 particular change came before or after a release.

If this goes in, I suggest to say SVN r167945 to make its frame
of reference more clear.

On Sat, 26 Mar 2011, Diego Novillo wrote:
 I find it very useful actually.  To figure out the rev at which to cut
 my 4.6 branch, I had to checkout gcc-4_6-branch and check the log.
 This would've made it slightly easier.  Besides, I don't see any harm
 in adding this info.

Richi did not like it, you seem to be in favor, Michael neutral to in
favor. 

I tried finding an alternate place to put this information, such as
releases.html or svn.html, but none really work better.  Shall we give
Florian's patch a try?

Gerald


Simple enhancement to -dA dump

2011-04-03 Thread Xinliang David Li
For an assembly dump, it is very useful to examine the control flow
graph with frequency and profile count information. This requires
dumping the .s file with more control flow annotations. This patch
does just that. The format of the annotation is the same as gimple
basic block dump with -fdump-tree-xxx-blocks so the same
post-processing tools can be shared to generate the .dot file. To see
bb layout, the BB sequence number is also dumped.

Bootstrapped on x86-64/linux. Regression test is on going.

Ok for checkin?

Thanks,
David


2011-04-03  Xinliang David Li  davi...@google.com

* final.c (dump_basic_block_info): New function.
(final): Dump basic block.
(final_scan_insn): Remove old dump.


dA.p
Description: Binary data


un.s
Description: Binary data


un.s.dot
Description: Binary data


[PATCH] make LABEL_DECL has its own rtx field for its associated CODE_LABEL

2011-04-03 Thread Nathan Froyd
This patch does just what $SUBJECT suggests: pushes down the DECL_RTL
field into LABEL_DECL.  In this way, LABEL_DECL can inherit from
tree_decl_common instead of tree_decl_with_rtl.

I realize this looks like pure code shuffling; the reason for doing this
is that I want to split tree_decl_common into two structures: one that
includes DECL_SIZE and DECL_SIZE_UNIT and one that doesn't.  The latter
can then be used for CONST_DECL, LABEL_DECL, and--possibly--RESULT_DECL
and--*maybe*--PARM_DECL.  (Once the latter two have DECL_RTL pushed
down as well, of course.)  And I think that less multipurposing of
DECL_RTL is not a bad thing.

Tested on x86_64-unknown-linux-gnu.  OK to commit?

-Nathan

* tree.h (struct tree_label_decl): Inherit from tree_decl_common.
Add `label' field.
(LABEL_DECL_CODE_LABEL): New macro.
* stmt.c (label_rtx): Use it.
(expand_label): Use `label_r', rather than fetching DECL_RTL.
* tree.c (initialize_tree_contains_struct): Adjust LABEL_DECL
inheritance and tree_contains_struct asserts.

diff --git a/gcc/stmt.c b/gcc/stmt.c
index 1a9f9e5..13a906f 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -135,17 +135,15 @@ static struct case_node *add_case_node (struct case_node 
*, tree,
 rtx
 label_rtx (tree label)
 {
-  gcc_assert (TREE_CODE (label) == LABEL_DECL);
-
-  if (!DECL_RTL_SET_P (label))
+  if (!LABEL_DECL_CODE_LABEL (label))
 {
   rtx r = gen_label_rtx ();
-  SET_DECL_RTL (label, r);
+  LABEL_DECL_CODE_LABEL (label) = r;
   if (FORCED_LABEL (label) || DECL_NONLOCAL (label))
LABEL_PRESERVE_P (r) = 1;
 }
 
-  return DECL_RTL (label);
+  return LABEL_DECL_CODE_LABEL (label);
 }
 
 /* As above, but also put it on the forced-reference list of the
@@ -207,7 +205,7 @@ expand_label (tree label)
   do_pending_stack_adjust ();
   emit_label (label_r);
   if (DECL_NAME (label))
-LABEL_NAME (DECL_RTL (label)) = IDENTIFIER_POINTER (DECL_NAME (label));
+LABEL_NAME (label_r) = IDENTIFIER_POINTER (DECL_NAME (label));
 
   if (DECL_NONLOCAL (label))
 {
diff --git a/gcc/tree.c b/gcc/tree.c
index ee47982..3c2154f 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -440,6 +440,7 @@ initialize_tree_contains_struct (void)
 
case TS_DECL_WRTL:
case TS_CONST_DECL:
+   case TS_LABEL_DECL:
  MARK_TS_DECL_COMMON (code);
  break;
 
@@ -449,7 +450,6 @@ initialize_tree_contains_struct (void)
 
case TS_DECL_WITH_VIS:
case TS_PARM_DECL:
-   case TS_LABEL_DECL:
case TS_RESULT_DECL:
  MARK_TS_DECL_WRTL (code);
  break;
@@ -492,7 +492,6 @@ initialize_tree_contains_struct (void)
   gcc_assert (tree_contains_struct[PARM_DECL][TS_DECL_WRTL]);
   gcc_assert (tree_contains_struct[RESULT_DECL][TS_DECL_WRTL]);
   gcc_assert (tree_contains_struct[FUNCTION_DECL][TS_DECL_WRTL]);
-  gcc_assert (tree_contains_struct[LABEL_DECL][TS_DECL_WRTL]);
   gcc_assert (tree_contains_struct[CONST_DECL][TS_DECL_MINIMAL]);
   gcc_assert (tree_contains_struct[VAR_DECL][TS_DECL_MINIMAL]);
   gcc_assert (tree_contains_struct[PARM_DECL][TS_DECL_MINIMAL]);
diff --git a/gcc/tree.h b/gcc/tree.h
index fcdebd9..952e13d 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -2940,6 +2940,11 @@ struct GTY(()) tree_field_decl {
 #define LABEL_DECL_UID(NODE) \
   (LABEL_DECL_CHECK (NODE)-label_decl.label_decl_uid)
 
+/* The CODE_LABEL associated with a LABEL_DECL.  This macro should not
+   be used directly; use label_rtx instead.  */
+#define LABEL_DECL_CODE_LABEL(NODE) \
+  (LABEL_DECL_CHECK (NODE)-label_decl.label)
+
 /* In a LABEL_DECL, the EH region number for which the label is the
post_landing_pad.  */
 #define EH_LANDING_PAD_NR(NODE) \
@@ -2951,7 +2956,8 @@ struct GTY(()) tree_field_decl {
   (LABEL_DECL_CHECK (NODE)-decl_common.decl_flag_0)
 
 struct GTY(()) tree_label_decl {
-  struct tree_decl_with_rtl common;
+  struct tree_decl_common common;
+  rtx label;
   int label_decl_uid;
   int eh_landing_pad_nr;
 };