Re: [PATCH, PR43920, 1/9] ARM specific part.
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
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
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
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)
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)
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
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]
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
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)
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
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
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
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
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
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)
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
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
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
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
* 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
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
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
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
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
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
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
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; };