[Ada] Fix internal error on allocator with function call
This is a regression present on all active branches. The compiler aborts on an allocator taking a function call in the qualified expression when the result type is a discriminated record type with defaulted discriminants and a variant part, and whose maximal size is not statically known. Fixed thusly, tested on x86-64/Linux, applied on all active branches. 2018-06-02 Eric Botcazou * gcc-interface/trans.c (Call_to_gnu): If this is a function call and there is no target, also create a temporary for the return value for an allocator if the type is an unconstrained record type with default discriminant. 2018-06-02 Eric Botcazou * gnat.dg/discr53.ad[sb]: New test. * gnat.dg/discr53_pkg.ads: New helper. -- Eric BotcazouIndex: gcc-interface/trans.c === --- gcc-interface/trans.c (revision 261006) +++ gcc-interface/trans.c (revision 261007) @@ -4355,12 +4355,15 @@ Call_to_gnu (Node_Id gnat_node, tree *gn because we need to preserve the return value before copying back the parameters. - 2. There is no target and the call is made for neither an object nor a + 2. There is no target and the call is made for neither an object, nor a renaming declaration, nor a return statement, nor an allocator, and the return type has variable size because in this case the gimplifier - cannot create the temporary, or more generally is simply an aggregate - type, because the gimplifier would then create the temporary in the - outermost scope instead of locally. + cannot create the temporary, or more generally is an aggregate type, + because the gimplifier would create the temporary in the outermost + scope instead of locally. But there is an exception for an allocator + of an unconstrained record type with default discriminant because we + allocate the actual size in this case, unlike the other 3 cases, so + we need a temporary to fetch the discriminant and we create it here. 3. There is a target and it is a slice or an array with fixed size, and the return type has variable size, because the gimplifier @@ -4379,8 +4382,9 @@ Call_to_gnu (Node_Id gnat_node, tree *gn && Nkind (Parent (gnat_node)) != N_Object_Declaration && Nkind (Parent (gnat_node)) != N_Object_Renaming_Declaration && Nkind (Parent (gnat_node)) != N_Simple_Return_Statement - && !(Nkind (Parent (gnat_node)) == N_Qualified_Expression - && Nkind (Parent (Parent (gnat_node))) == N_Allocator) + && (!(Nkind (Parent (gnat_node)) == N_Qualified_Expression + && Nkind (Parent (Parent (gnat_node))) == N_Allocator) + || type_is_padding_self_referential (gnu_result_type)) && AGGREGATE_TYPE_P (gnu_result_type) && !TYPE_IS_FAT_POINTER_P (gnu_result_type)) || (gnu_target package Discr53_Pkg is function Max return Natural; end Discr53_Pkg; -- { dg-do compile } package body Discr53 is function F return Rec is Data : Rec; begin return Data; end; type Ptr is access Rec; procedure Proc is Local : Ptr; begin Local := new Rec'(F); end; end Discr53; with Discr53_Pkg; package Discr53 is type Rec (D : Boolean := False) is record case D is when True => S : String (1 .. Discr53_Pkg.Max); when False => null; end case; end record; function F return Rec; procedure Proc; end Discr53;
[Ada] Fix crash on instantiation of Vectors package at -O3
This is a regression present on the mainline, 8 and 7 branches. It's a latent tree sharing issue exposed by the use of SSA names during gimplification that has been introduced in the GCC 7 development phase. Fixed thusly, tested on x86-64/Linux, applied on mainline, 8 and 7 branches. 2018-06-02 Eric Botcazou * gcc-interface/ada-tree.h (TYPE_PADDING_FOR_COMPONENT): New macro. * gcc-interface/decl.c (gnat_to_gnu_component_type): Cache the padding type built for an aliased component with variable size. 2018-06-02 Eric Botcazou * gnat.dg/specs/opt3.ads: New test. * gnat.dg/specs/opt3_pkg.ads: New helper. -- Eric Botcazoupackage Opt3_Pkg is function Max return Natural; end Opt3_Pkg; -- { dg-do compile } -- { dg-options "-O3" } with Ada.Containers.Vectors; with Opt3_Pkg; package Opt3 is type Arr is array (1 .. Opt3_Pkg.Max) of Integer; package Arr_Container is new Ada.Containers.Vectors (Natural, Arr); end Opt3; Index: gcc-interface/ada-tree.h === --- gcc-interface/ada-tree.h (revision 261101) +++ gcc-interface/ada-tree.h (working copy) @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 1992-2017, Free Software Foundation, Inc. * + * Copyright (C) 1992-2018, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * @@ -235,6 +235,11 @@ do { \ refer to the routine gnat_to_gnu_entity. */ #define TYPE_CI_CO_LIST(NODE) TYPE_LANG_SLOT_1 (FUNCTION_TYPE_CHECK (NODE)) +/* For an ARRAY_TYPE with variable size, this is the padding type built for + the array type when it is itself the component type of another array. */ +#define TYPE_PADDING_FOR_COMPONENT(NODE) \ + (TYPE_LANG_SLOT_1 (ARRAY_TYPE_CHECK (NODE))) + /* For a VECTOR_TYPE, this is the representative array type. */ #define TYPE_REPRESENTATIVE_ARRAY(NODE) \ TYPE_LANG_SLOT_1 (VECTOR_TYPE_CHECK (NODE)) Index: gcc-interface/decl.c === --- gcc-interface/decl.c (revision 261101) +++ gcc-interface/decl.c (working copy) @@ -5031,17 +5031,6 @@ gnat_to_gnu_component_type (Entity_Id gn Is_Bit_Packed_Array (gnat_array) ? TYPE_DECL : VAR_DECL, true, Has_Component_Size_Clause (gnat_array)); - /* If the array has aliased components and the component size can be zero, - force at least unit size to ensure that the components have distinct - addresses. */ - if (!gnu_comp_size - && Has_Aliased_Components (gnat_array) - && (integer_zerop (TYPE_SIZE (gnu_type)) - || (TREE_CODE (gnu_type) == ARRAY_TYPE - && !TREE_CONSTANT (TYPE_SIZE (gnu_type) -gnu_comp_size - = size_binop (MAX_EXPR, TYPE_SIZE (gnu_type), bitsize_unit_node); - /* If the component type is a RECORD_TYPE that has a self-referential size, then use the maximum size for the component size. */ if (!gnu_comp_size @@ -5049,6 +5038,13 @@ gnat_to_gnu_component_type (Entity_Id gn && CONTAINS_PLACEHOLDER_P (TYPE_SIZE (gnu_type))) gnu_comp_size = max_size (TYPE_SIZE (gnu_type), true); + /* If the array has aliased components and the component size is zero, force + the unit size to ensure that the components have distinct addresses. */ + if (!gnu_comp_size + && Has_Aliased_Components (gnat_array) + && integer_zerop (TYPE_SIZE (gnu_type))) +gnu_comp_size = bitsize_unit_node; + /* Honor the component size. This is not needed for bit-packed arrays. */ if (gnu_comp_size && !Is_Bit_Packed_Array (gnat_array)) { @@ -5071,6 +5067,30 @@ gnat_to_gnu_component_type (Entity_Id gn gnat_array); } + /* This is a very special case where the array has aliased components and the + component size might be zero at run time. As explained above, we force at + least the unit size but we don't want to build a distinct padding type for + each invocation (they are not canonicalized if they have variable size) so + we cache this special padding type as TYPE_PADDING_FOR_COMPONENT. */ + else if (Has_Aliased_Components (gnat_array) + && TREE_CODE (gnu_type) == ARRAY_TYPE + && !TREE_CONSTANT (TYPE_SIZE (gnu_type))) +{ + if (TYPE_PADDING_FOR_COMPONENT (gnu_type)) + gnu_type = TYPE_PADDING_FOR_COMPONENT (gnu_type); + else + { + gnu_comp_size + = size_binop (MAX_EXPR, TYPE_SIZE (gnu_type), bitsize_unit_node); + TYPE_PADDING_FOR_COMPONENT (gnu_type) + = maybe_pad_type (gnu_type, gnu_comp_size, 0, gnat_array,
[Ada] Fix couple of crashes in -gnatc mode
In this mode gigi doesn't fully translate the expanded code. Fixed thusly, tested on x86-64/Linux, applied on mainline and 8 branch. 2018-06-02 Eric Botcazou * gcc-interface/decl.c (gnat_to_gnu_entity) : If this is not a definition, retrieve the expression only if it's a compile-time known value if we are just annotating types. * gcc-interface/utils.c (convert): Do not try to upcast properly for a conversion between tagged types in type_annotate_only mode. -- Eric BotcazouIndex: gcc-interface/decl.c === --- gcc-interface/decl.c (revision 261106) +++ gcc-interface/decl.c (working copy) @@ -601,16 +601,16 @@ gnat_to_gnu_entity (Entity_Id gnat_entit was defined to represent. This is necessary to avoid generating dumb elaboration code in simple cases, but we may throw it away later if it is not a constant. But do not retrieve it if it is an allocator since - the designated type might still be dummy at this point. */ + the designated type might still be dummy at this point. Note that we + invoke gnat_to_gnu_external and not gnat_to_gnu because the expression + may contain N_Expression_With_Actions nodes and thus declarations of + objects from other units that we need to discard. */ if (!definition && !No_Initialization (Declaration_Node (gnat_entity)) - && Present (Expression (Declaration_Node (gnat_entity))) - && Nkind (Expression (Declaration_Node (gnat_entity))) - != N_Allocator) - /* The expression may contain N_Expression_With_Actions nodes and - thus object declarations from other units. Discard them. */ - gnu_expr - = gnat_to_gnu_external (Expression (Declaration_Node (gnat_entity))); + && Present (gnat_temp = Expression (Declaration_Node (gnat_entity))) + && Nkind (gnat_temp) != N_Allocator + && (!type_annotate_only || Compile_Time_Known_Value (gnat_temp))) + gnu_expr = gnat_to_gnu_external (gnat_temp); /* ... fall through ... */ Index: gcc-interface/utils.c === --- gcc-interface/utils.c (revision 261101) +++ gcc-interface/utils.c (working copy) @@ -4631,9 +4631,12 @@ convert (tree type, tree expr) etype))) return build1 (VIEW_CONVERT_EXPR, type, expr); - /* If we are converting between tagged types, try to upcast properly. */ + /* If we are converting between tagged types, try to upcast properly. + But don't do it if we are just annotating types since tagged types + aren't fully laid out in this mode. */ else if (ecode == RECORD_TYPE && code == RECORD_TYPE - && TYPE_ALIGN_OK (etype) && TYPE_ALIGN_OK (type)) + && TYPE_ALIGN_OK (etype) && TYPE_ALIGN_OK (type) + && !type_annotate_only) { tree child_etype = etype; do {
Re: [wwwdocs] Describe how to validate wwwdocs changes
On Mon, 14 May 2018, Martin Sebor wrote: >> Martin, what do you think? Would that have avoided the challenges >> your ran into? Anything to better clarify or otherwise improve? > Thanks for the improvement! I think it will help going forward Great, I (finally) committed this now, business travel not exactly having been helpful with my GCC engagements... > assuming one knows about the page and remembers to check it. > I have to confess I forgot about it so I didn't check it before > running the validator the last time. Would it be possible to add > the snippet to each page permanently? You mean, avoiding preprocessing and making the change permanent, directly as part of every .html file? I've been hesitant doing that to keep things simple and easier to change (and not bother folks), but think this makes sense and plan on doing that as we migrate our pages to HTML 5 which will drastically reduce the size of that snippet also. I expect to find time to do so in the coming few months, and things should indeed be simpler than. One improvement I just made is to add a reference to https://gcc.gnu.org/about.html to the automated checker that runs after each commit. That provides more background then. > Alternatively, what do you think of the idea to have a script (or > makefile) to post-process changes to these pages on the client side, > before checking them in? I.e., adding the example annotation David > Malcolm prefers (black background) and also validating the HTML). That's a great idea. Sadly our post-processing relies on MetaHTML, a GNU projects that was handled in, umm, a less than optimal manner, and has been in coma for years and thus does not build with current compilers on current operating system versions. At least GCC Summit in Praha David and me chatted about it, and he was thinking to (re)implement the key functionality we use in Python, so let me include him here. (In any case, with the move to CSS and the forthcoming move to HTML 5 that dependency has been and will be reducing over time.) Gerald
[wwwdocs] Simplify our template for headers
HTML 5 only supports the syntax we have been using "forever" for backwards compatibility. We could use which is documented as follows "For link elements, the author keyword indicates that the referenced document provides further information about the author for the page as a whole." but I don't see how this s really beneficial for us, so let's just simplify this. Applied. Gerald Index: style.mhtml === RCS file: /cvs/gcc/wwwdocs/htdocs/style.mhtml,v retrieving revision 1.142 diff -u -r1.142 style.mhtml --- style.mhtml 29 Jan 2018 10:00:39 - 1.142 +++ style.mhtml 2 Jun 2018 11:32:19 - @@ -48,13 +48,11 @@ -mailto:g...@gcc.gnu.org"; /> https://gcc.gnu.org/favicon.ico"; /> https://gcc.gnu.org/gcc.css"; /> > -mailto:g...@gcc.gnu.org";> https://gcc.gnu.org/favicon.ico";> >
[wwwdocs] Replace by id= attributes
As I mentioned, I'm working to transition our pages to HTML which should not be too hard after my transition to CSS over the past years, but there are some changes we still need to account for. In HTML 5 the approach has been superseded by the use of id attributes. This implements this change for all pages associated with active releases. Applied. Gerald Index: gcc-6/changes.html === RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-6/changes.html,v retrieving revision 1.102 diff -u -r1.102 changes.html --- gcc-6/changes.html 4 Jul 2017 07:26:28 - 1.102 +++ gcc-6/changes.html 2 Jun 2018 11:49:09 - @@ -857,7 +857,7 @@ -GCC 6.2 +GCC 6.2 This is the https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.2";>list of problem reports (PRs) from GCC's bug tracking system that are @@ -875,7 +875,7 @@ Support for the VIS 4.0 instruction set has been added. -GCC 6.3 +GCC 6.3 This is the https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.3";>list of problem reports (PRs) from GCC's bug tracking system that are @@ -892,7 +892,7 @@ pcommit instruction has been removed. -GCC 6.4 +GCC 6.4 This is the https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.4";>list of problem reports (PRs) from GCC's bug tracking system that are @@ -909,7 +909,7 @@ -GCC 7.2 +GCC 7.2 This is the https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.2";>list of problem reports (PRs) from GCC's bug tracking system that are @@ -1311,7 +1311,7 @@ -GCC 7.3 +GCC 7.3 This is the https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.3";>list of problem reports (PRs) from GCC's bug tracking system that are Index: gcc-7/index.html === RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-7/index.html,v retrieving revision 1.5 diff -u -r1.5 index.html --- gcc-7/index.html25 Jan 2018 08:11:49 - 1.5 +++ gcc-7/index.html2 Jun 2018 11:49:10 - @@ -21,19 +21,19 @@ GCC 7.3 -Jan 25, 2018 +Jan 25, 2018 (changes, http://gcc.gnu.org/onlinedocs/7.3.0/";>documentation) GCC 7.2 -Aug 14, 2017 +Aug 14, 2017 (changes, http://gcc.gnu.org/onlinedocs/7.2.0/";>documentation) GCC 7.1 -May 2, 2017 +May 2, 2017 (changes, http://gcc.gnu.org/onlinedocs/7.1.0/";>documentation) Index: gcc-8/changes.html === RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-8/changes.html,v retrieving revision 1.84 diff -u -r1.84 changes.html --- gcc-8/changes.html 25 May 2018 18:13:17 - 1.84 +++ gcc-8/changes.html 2 Jun 2018 11:49:11 - @@ -1285,7 +1285,7 @@ -GCC 8.1 +GCC 8.1 This is the https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=8.0";>list of problem reports (PRs) from GCC's bug tracking system that are Index: gcc-8/index.html === RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-8/index.html,v retrieving revision 1.2 diff -u -r1.2 index.html --- gcc-8/index.html2 May 2018 10:21:15 - 1.2 +++ gcc-8/index.html2 Jun 2018 11:49:11 - @@ -21,7 +21,7 @@ GCC 8.1 -May 2, 2018 +May 2, 2018 (changes, http://gcc.gnu.org/onlinedocs/8.1.0/";>documentation) Index: gcc-9/changes.html === RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-9/changes.html,v retrieving revision 1.4 diff -u -r1.4 changes.html --- gcc-9/changes.html 2 Jun 2018 09:21:26 - 1.4 +++ gcc-9/changes.html 2 Jun 2018 11:49:11 - @@ -142,7 +142,7 @@ - +
Re: std::vector default default and move constructors
Hi Here is this patch again, I consider all your remarks and also made some changes considering feedback on rbtree patch. * include/bits/stl_vector.h (struct _Vector_base<>::_Vector_impl_data): New. (struct _Vector_base<>::_Vector_impl): Inherit from latter. (_Vector_base<>::_Vector_impl::_M_swap_data): Move... (_Vector_base<>::_Vector_impl_data::_M_swap_data): ...here. (_Vector_base<>::_Vector_impl()): Add noexcept qualification. (_Vector_base<>::_Vector_impl(_Vector_impl&&)): New. (_Vector_base<>::_Vector_impl(_Tp_alloc_type&&, _Vector_impl&&)): New. (_Vector_base(const allocator_type&, _Vector_base&&)): New, use latter. (_Vector_base()): Default. (_Vector_base(_Vector_base&&)): Default. (_Vector_base(size_t)) [_GLIBCXX_INLINE_VERSION]: Delete. (_Vector_base(_Tp_alloc_type&&)) [_GLIBCXX_INLINE_VERSION]: Delete. (_Vector_base::_M_create_storage(size_t)): Make protected. (vector()): Default. (vector(vector&&)): Default. (vector(vector&&, const allocator_type&, true_type)): New. (vector(vector&&, const allocator_type&, false_type)): New. (vector(vector&&, const allocator_type&)): Use latters. (vector(_InputIte, _InputIte, const allocator_type&)): Call _M_range_initialize directly. * testsuite/23_containers/vector/allocator/default_init.cc: New. * testsuite/23_containers/vector/cons/noexcept_move_construct.cc: Add static assertions. Tested under Linux x86_64, normal and debug modes. Ok to commit ? François diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h index acec501..7531ef4 100644 --- a/libstdc++-v3/include/bits/stl_vector.h +++ b/libstdc++-v3/include/bits/stl_vector.h @@ -85,34 +85,58 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type>::pointer pointer; - struct _Vector_impl - : public _Tp_alloc_type + struct _Vector_impl_data { pointer _M_start; pointer _M_finish; pointer _M_end_of_storage; - _Vector_impl() - : _Tp_alloc_type(), _M_start(), _M_finish(), _M_end_of_storage() - { } - - _Vector_impl(_Tp_alloc_type const& __a) _GLIBCXX_NOEXCEPT - : _Tp_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage() + _Vector_impl_data() _GLIBCXX_NOEXCEPT + : _M_start(), _M_finish(), _M_end_of_storage() { } #if __cplusplus >= 201103L - _Vector_impl(_Tp_alloc_type&& __a) noexcept - : _Tp_alloc_type(std::move(__a)), - _M_start(), _M_finish(), _M_end_of_storage() - { } + _Vector_impl_data(_Vector_impl_data&& __x) noexcept + : _M_start(__x._M_start), _M_finish(__x._M_finish), + _M_end_of_storage(__x._M_end_of_storage) + { __x._M_start = __x._M_finish = __x._M_end_of_storage = pointer(); } #endif - void _M_swap_data(_Vector_impl& __x) _GLIBCXX_NOEXCEPT + void + _M_swap_data(_Vector_impl_data& __x) _GLIBCXX_NOEXCEPT { std::swap(_M_start, __x._M_start); std::swap(_M_finish, __x._M_finish); std::swap(_M_end_of_storage, __x._M_end_of_storage); } + }; + + struct _Vector_impl + : public _Tp_alloc_type, public _Vector_impl_data + { + _Vector_impl() _GLIBCXX_NOEXCEPT_IF( noexcept(_Tp_alloc_type()) ) + : _Tp_alloc_type() + { } + + _Vector_impl(_Tp_alloc_type const& __a) _GLIBCXX_NOEXCEPT + : _Tp_alloc_type(__a) + { } + +#if __cplusplus >= 201103L + // Not defaulted to avoid noexcept qualification dependency on the + // _Tp_alloc_type move constructor one. + _Vector_impl(_Vector_impl&& __x) noexcept + : _Tp_alloc_type(std::move(__x)), _Vector_impl_data(std::move(__x)) + { } + + _Vector_impl(_Tp_alloc_type&& __a) noexcept + : _Tp_alloc_type(std::move(__a)) + { } + + _Vector_impl(_Tp_alloc_type&& __a, _Vector_impl&& __rv) noexcept + : _Tp_alloc_type(std::move(__a)), _Vector_impl_data(std::move(__rv)) + { } +#endif #if _GLIBCXX_SANITIZE_STD_ALLOCATOR && _GLIBCXX_SANITIZE_VECTOR template @@ -235,38 +259,42 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _Tp_alloc_type& _M_get_Tp_allocator() _GLIBCXX_NOEXCEPT - { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); } + { return this->_M_impl; } const _Tp_alloc_type& _M_get_Tp_allocator() const _GLIBCXX_NOEXCEPT - { return *static_cast(&this->_M_impl); } + { return this->_M_impl; } allocator_type get_allocator() const _GLIBCXX_NOEXCEPT { return allocator_type(_M_get_Tp_allocator()); } - _Vector_base() - : _M_impl() { } +#if __cplusplus >= 201103L + _Vector_base() = default; +#else + _Vector_base() { } +#endif _Vector_base(const allocator_type& __a) _GLIBCXX_NOEXCEPT : _M_impl(__a) { } +#if !_GLIBCXX_INLINE_VERSION _Vector_base(size_t __n) : _M_impl() { _M_create_storage(__n); } +#endif _Vector_base(size_t __n, const allocator_type& __a) : _M_impl(__a) { _M_create_storage(__n); } #if __cplusplus >= 201103L + _Vector_base(_Vector_base&&)
Re: [wwwdocs] Describe how to validate wwwdocs changes
On Tue, 15 May 2018, David Malcolm wrote: > Possibly a silly question, but why can't we just change all the > headers in the site source to be this? > > Is is something to do with the conversion toolchain? Yes. Though having spent the last hour looking into this in more detail, I believe we can move faster than I had originally thought. For example, I should be able to get the stylesheet information added to all pages, so they look decent when viewing locally, as a next step (possibly even today ;-). I hope that'll help? Gerald
[wwwdocs] projects/tree-ssa/vectorization.html - update link to GCC Summit Proceedings
This is a change I found on my disk that dates back more than a year; I don't recall the trigger back then, but verified it still works and applied it. Use the version of the proceedings we've got on our FTP site. Makes for a simpler, more stable link. Gerald Index: projects/tree-ssa/vectorization.html === RCS file: /cvs/gcc/wwwdocs/htdocs/projects/tree-ssa/vectorization.html,v retrieving revision 1.32 diff -u -r1.32 vectorization.html --- projects/tree-ssa/vectorization.html29 May 2016 08:11:26 - 1.32 +++ projects/tree-ssa/vectorization.html2 Jun 2018 12:26:51 - @@ -1524,8 +1524,7 @@ "Loop-Aware SLP in GCC", Ira Rosen, Dorit Nuzman and Ayal Zaks, GCC summit, July 2007. -https://gcc.gnu.org/wiki/HomePage?action=AttachFile&do=view&target=GCC2007-Proceedings.pdf";> - https://gcc.gnu.org/wiki/HomePage?action=AttachFile&do=view&target=GCC2007-Proceedings.pdf + ftp://gcc.gnu.org/pub/gcc/summit/2006-GCC-Summit-Proceedings.pdf";>GCC Summit 2007 Proceedings "Autovectorization in GCC - two years later", Dorit Nuzman and Ayal Zaks, GCC summit, June 2006.
[wwwdocs] www.boost.org has moved to https
On the way, also remove obsolete information on how to download it (which, as a side effect, reduces the number of links that can get broken). Applied. Gerald Index: readings.html === RCS file: /cvs/gcc/wwwdocs/htdocs/readings.html,v retrieving revision 1.292 diff -u -r1.292 readings.html --- readings.html 19 Mar 2018 00:02:36 - 1.292 +++ readings.html 2 Jun 2018 12:37:58 - @@ -370,7 +370,7 @@ https://math.nist.gov/tnt/";>Template Numeric Toolkit - http://www.boost.org";>The Boost C++ Libraries + https://www.boost.org";>The Boost C++ Libraries Index: gcc-3.4/changes.html === RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-3.4/changes.html,v retrieving revision 1.164 diff -u -r1.164 changes.html --- gcc-3.4/changes.html2 Apr 2018 15:22:37 - 1.164 +++ gcc-3.4/changes.html2 Jun 2018 12:37:59 - @@ -103,7 +103,7 @@ detect whether multi-threaded code is being compiled might change in meaning, possibly resulting in linker errors for single-threaded programs. -Affected users of Boost should +Affected users of https://www.boost.org";>Boost should compile single-threaded code with -DBOOST_DISABLE_THREADS. See Bugzilla for more Index: testing/testing-boost.html === RCS file: /cvs/gcc/wwwdocs/htdocs/testing/testing-boost.html,v retrieving revision 1.6 diff -u -r1.6 testing-boost.html --- testing/testing-boost.html 29 Jun 2014 18:50:44 - 1.6 +++ testing/testing-boost.html 2 Jun 2018 12:37:59 - @@ -8,14 +8,12 @@ Boost build and test guide This page is a guide to running the testing and timing programs for the -http://www.boost.org/";>Boost class libraries as part of +https://www.boost.org";>Boost class libraries as part of GCC integration testing. Resource usage -Boost distributions are available from SourceForge, linked from the -http://www.boost.org/";>Boost web site. -These instructions are for version 1.27.0, whose gzipped tar file is +These instructions are for version 1.27.0, whose gzipped tar file is 3.8 MB. The uncompressed distribution comprises some 16 MB of source files. Building the library and tests adds between 80 and 140 MB of object files and executables to this.
Re: [PATCH, i386]: Fix PR85950, Unsafe-math-optimizations regresses optimization using SSE4.1 roundss
On Tue, May 29, 2018 at 11:38 AM, Uros Bizjak wrote: > Hello! > > Attached patch enables l2 for > TARGET_SSE4.1, and while there, also corrects operand 1 predicate of > rounds{s,d} instruction. > > 2018-05-29 Uros Bizjak > > PR target/85950 > * config/i386/i386.md (l2): > Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q} > sequence. > (sse4_1_round2): Use nonimmediate_operand > for operand 1 predicate. > > testsuite/ChangeLog: > > 2018-05-29 Uros Bizjak > > PR target/85950 > * gcc.target/i386/pr85950.c: New test. > > Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}. > > Committed to mainline SVN. > The testcase needs -mno-avx512f. Otherwise -march=native on AVX512 machine will generate vrndscalesd $9, %xmm0, %xmm0, %xmm0 vcvttsd2siq %xmm0, %rax instead of vroundsd $9, %xmm0, %xmm0, %xmm0 vcvttsd2siq %xmm0, %rax -- H.J.
[wwwdocs] Fix name of Assignee Bugzilla field in bugs/management.html
Applied after verifying that what is described here actually really happens in Bugzilla (just with the slightly different name of that field). Gerald Index: bugs/management.html === RCS file: /cvs/gcc/wwwdocs/htdocs/bugs/management.html,v retrieving revision 1.34 diff -u -r1.34 management.html --- bugs/management.html26 Nov 2017 22:02:25 - 1.34 +++ bugs/management.html2 Jun 2018 19:59:42 - @@ -156,7 +156,7 @@ more important to fix in GCC 7 than a regression that was introduced in GCC 5 (and is still present in GCC 6 and 7). -Assigned To +Assignee This is the person in charge of resolving the bug. Every time this field changes, the status changes to NEW to make it easy to see
[wwwdocs,Java] Remove "less recent" Java news
This is the last page we still carried from GCJ, and it has not been linked internally. I had marked this to possibly merge into our general News page, but clearly have not been able to get to it for two years now and else nobody cared either, and it was me keeping it for that purpose (only), time to remove it. Applied. Gerald Index: java/news.html === RCS file: java/news.html diff -N java/news.html --- java/news.html 23 Aug 2016 11:43:20 - 1.21 +++ /dev/null 1 Jan 1970 00:00:00 - @@ -1,697 +0,0 @@ - - - -GCJ - Less Recent News - - - - -GCJ - Less Recent News - - - - - -January 16, 2006 -Mark Wielaard has imported http://www.gnu.org/software/classpath/";>GNU Classpath 0.20 (http://www.gnu.org/software/classpath/announce/20060113.html";>release -notes) into GCJ. - -November 17, 2005 -Mark Wielaard has imported http://www.gnu.org/software/classpath/";>GNU Classpath 0.19 (http://www.gnu.org/software/classpath/announce/20051102.html";>release -notes) into GCJ. - -October 12, 2005 -The October 2005 issue of Red Hat Magazine contains the article -"The State of Java on Linux" by Tom Tromey. - -September 23, 2005 -Tom Tromey has imported http://www.gnu.org/software/classpath/";>GNU Classpath 0.18 (http://www.gnu.org/software/classpath/announce/20050906.html";>release -notes) into GCJ. - -July 15, 2005 -Tom Tromey has https://gcc.gnu.org/ml/java-patches/2005-q3/msg00093.html";>integrated -http://www.gnu.org/software/classpath/";>GNU Classpath into the -GCJ build in such a way that it becomes https://gcc.gnu.org/ml/java/2005-05/msg00202.html";>much easier to -import the latest GNU Classpath into GCJ. This particular import brings in GNU -Classpath 0.17 (http://www.gnu.org/software/classpath/announce/20050715.html";>release -notes). - -April 6, 2005 -Mark Wielaard has written "http://lwn.net/Articles/130796/";>GCJ - past, present, and -future" for LWN.net. - -March 10, 2005 -Bryce McKinlay has merged in https://gcc.gnu.org/ml/java-patches/2005-q1/msg00712.html";>a new stack -trace mechanism that is based on GCC's unwind support and provides -cleaner and faster stack traces. - -February 15, 2005 -Thomas Fitzsimmons has checked in an implementation of libjawt, the -AWT Native interface. Among other things, this enables the JOGL -(OpenGL for Java) bindings to work. - -February 1, 2005 -We've merged GNU JAXP into the core. This includes many classes -in javax.xml, plus updated versions -of org.xml.sax and org.w3c.dom. - -November 25, 2004 - -John David Anglin checked in https://gcc.gnu.org/ml/gcc-patches/2004-11/msg02214.html";>a patch -to enable libjava to be built by default on hppa-unknown-linux-gnu. - - -November 22, 2004 - -We're pleased to announce that the GCJ binary compatibility branch has -been merged to the trunk. This work includes a new ABI which allows -precompiled code to follow the binary compatibility rules of the Java -programming language. - - -September 21, 2004 - -Andreas Tobler imported the new javax.crypto, -javax.crypto.interfaces, javax.crypto.spec, -javax.net, javax.net.ssl, -javax.security.auth, javax.security.auth.callback, -javax.security.auth.login, javax.security.auth.x500, -javax.security.sasl and org.ietf.jgss -packages from the latest -http://www.gnu.org/software/classpath/";>GNU Classpath 0.11 -developer snapshot release. These packages will be an official part of -then next major release. Extra crypto algorithms can be obtained -from the http://www.gnu.org/software/gnu-crypto/";>GNU Crypto -project, a full TLS implementation is provided by the Jessie project. - - -July 16, 2004 - -AWT and Swing support continues to improve rapidly. Thomas Fitzsimmons of Red Hat -added support for the AWT 1.0 event model, still used by many web -applets. This means that Slime Volleyball now runs on GCJ and gcjwebplugin. - - -July 16, 2004 - -GCJ in the press! The July issue of Linux Journal -features an article on building the Eclipse IDE to native code using GCJ: -http://www.linuxjournal.com/article/7413";>Eclipse -goes native. The July issue of Doctor Dobbs Journal also -features an article (not available online) on GCJ and the Compiled Native -Interface (https://gcc.gnu.org/onlinedocs/gcj/About-CNI.html";>CNI). - - -March 9, 2004 - -Thanks to Wes Biggs and the other GNU Regexp authors, Mark Wielaard -(for merging into Classpath) and Anthony Green (for merging into -libgcj), we now have support for java.util.regex. This -arrives a little too late for gcc 3.4, but it will appear in the next -major release. - - -January 22, 2004 - -Graydon Hoare has checked in -https://gcc.gnu.org/ml/java-patches/2004-q1/msg00241.html";>a -patch to implement Swing buttons. This is the first working Swing code, -a major improvement. See the screen shot. - - -January 9, 2004 - -Andrew Haley has checked in -https://gcc.gnu.org/ml/gcc-patches/2004-01/msg00362.html";>a -large reorganization of -findirect-dispatch. This is -a
Re: [wwwdocs] Replace by id= attributes
On Sat, 2 Jun 2018, Gerald Pfeifer wrote: > In HTML 5 the approach has been superseded by > the use of id attributes. > > This implements this change for all pages associated with active > releases. Hmpf, I missed that id attributes have to start with a letter; fixed thusly for the GCC8 pages. I'll take care of the others later. Committed. Gerald Index: changes.html === RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-8/changes.html,v retrieving revision 1.86 diff -u -r1.86 changes.html --- changes.html2 Jun 2018 21:16:18 - 1.86 +++ changes.html2 Jun 2018 21:50:38 - @@ -1286,7 +1286,7 @@ -GCC 8.1 +GCC 8.1 This is the https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=8.0";>list of problem reports (PRs) from GCC's bug tracking system that are Index: index.html === RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-8/index.html,v retrieving revision 1.4 diff -u -r1.4 index.html --- index.html 2 Jun 2018 21:16:18 - 1.4 +++ index.html 2 Jun 2018 21:50:38 - @@ -22,7 +22,7 @@ GCC 8.1 -May 2, 2018 +May 2, 2018 (changes, http://gcc.gnu.org/onlinedocs/8.1.0/";>documentation)
[wwwdocs] Push references to our CSS into individual HTML files
This is based on a mail exchange with David and Martin, where I promised to look into it. It moves the inclusion of our CSS stylesheet from the preprocessing conducted on gcc.gnu.org into the individual HTML files. Clearly it is a tradeoff between having this once versus the very same reference in 271 individual HTML files on the one hand, and making it easier to view changes locally while working on them. Assuming we remain disciplined in not creating all sorts of variations that become a consistency and maintenance nightmare, making things easier for those editing those page, a larger group, feels like the right tradeoff. Applied. Gerald Push the references to our CSS from the MetaHTML style sheet into the individual HTML files. Index: style.mhtml === RCS file: /cvs/gcc/wwwdocs/htdocs/style.mhtml,v retrieving revision 1.143 diff -u -r1.143 style.mhtml --- style.mhtml 2 Jun 2018 11:40:23 - 1.143 +++ style.mhtml 2 Jun 2018 20:31:23 - @@ -49,7 +49,6 @@ https://gcc.gnu.org/favicon.ico"; /> -https://gcc.gnu.org/gcc.css"; /> > Index: about.html === RCS file: /cvs/gcc/wwwdocs/htdocs/about.html,v retrieving revision 1.29 diff -u -r1.29 about.html --- about.html 2 Jun 2018 11:10:44 - 1.29 +++ about.html 2 Jun 2018 20:31:18 - @@ -2,6 +2,7 @@ GCC: About +https://gcc.gnu.org/gcc.css"; /> Index: backends.html === RCS file: /cvs/gcc/wwwdocs/htdocs/backends.html,v retrieving revision 1.74 diff -u -r1.74 backends.html --- backends.html 8 Feb 2017 18:44:56 - 1.74 +++ backends.html 2 Jun 2018 20:31:18 - @@ -2,6 +2,7 @@ Status of Supported Architectures from Maintainers' Point of View +https://gcc.gnu.org/gcc.css"; /> Index: badspammer.html === RCS file: /cvs/gcc/wwwdocs/htdocs/badspammer.html,v retrieving revision 1.7 diff -u -r1.7 badspammer.html --- badspammer.html 21 Sep 2006 14:17:36 - 1.7 +++ badspammer.html 2 Jun 2018 20:31:18 - @@ -2,6 +2,7 @@ GCC +https://gcc.gnu.org/gcc.css"; /> Index: branch-closing.html === RCS file: /cvs/gcc/wwwdocs/htdocs/branch-closing.html,v retrieving revision 1.1 diff -u -r1.1 branch-closing.html --- branch-closing.html 9 Feb 2009 22:30:42 - 1.1 +++ branch-closing.html 2 Jun 2018 20:31:18 - @@ -2,6 +2,7 @@ Closing a GCC Release Branch +https://gcc.gnu.org/gcc.css"; /> Index: branching.html === RCS file: /cvs/gcc/wwwdocs/htdocs/branching.html,v retrieving revision 1.34 diff -u -r1.34 branching.html --- branching.html 12 Mar 2017 22:43:55 - 1.34 +++ branching.html 2 Jun 2018 20:31:18 - @@ -2,6 +2,7 @@ Branching for a GCC Release +https://gcc.gnu.org/gcc.css"; /> Index: buildstat.html === RCS file: /cvs/gcc/wwwdocs/htdocs/buildstat.html,v retrieving revision 1.27 diff -u -r1.27 buildstat.html --- buildstat.html 2 May 2018 10:21:14 - 1.27 +++ buildstat.html 2 Jun 2018 20:31:18 - @@ -2,6 +2,7 @@ Build status for GCC +https://gcc.gnu.org/gcc.css"; /> Index: c99status.html === RCS file: /cvs/gcc/wwwdocs/htdocs/c99status.html,v retrieving revision 1.64 diff -u -r1.64 c99status.html --- c99status.html 28 May 2016 20:40:34 - 1.64 +++ c99status.html 2 Jun 2018 20:31:18 - @@ -2,6 +2,7 @@ Status of C99 features in GCC +https://gcc.gnu.org/gcc.css"; /> Index: codingconventions.html === RCS file: /cvs/gcc/wwwdocs/htdocs/codingconventions.html,v retrieving revision 1.80 diff -u -r1.80 codingconventions.html --- codingconventions.html 13 Mar 2017 22:01:05 - 1.80 +++ codingconventions.html 2 Jun 2018 20:31:19 - @@ -2,6 +2,7 @@ GCC Coding Conventions +https://gcc.gnu.org/gcc.css"; /> Index: codingrationale.html === RCS file: /cvs/gcc/wwwdocs/htdocs/codingrationale.html,v retrieving revision 1.3 diff -u -r1.3 codingrationale.html --- codingrationale.html30 Sep 2013 20:35:01 - 1.3 +++ codingrationale.html2 Jun 2018 20:31:19 - @@ -2,6 +2,7 @@ GCC Coding Conventions Rationale and Discussion +https://gcc.gnu.org/gcc.css"; /> Index: contribute.html === RCS file: /cvs/gcc/wwwdocs/htdocs/contribute.html,v retrieving revision 1.87 diff -u -r1.87 contribute.html --- contribute.html 9 Apr
C++ PATCH for c++/85761, ICE with reference to const outer variable
In this testcase, the use of COUNT requires us to capture it because it's bound to a reference, but the lambda doesn't capture, so it's ill-formed. We're supposed to reject this use in mark_use, but we were getting confused by the location wrapper. This patch teaches mark_use to look through location wrappers. Tested x86_64-pc-linux-gnu, applying to trunk. commit 91354c9fd7f4773e2c95b36237b88c1f71657097 Author: Jason Merrill Date: Fri Jun 1 23:29:10 2018 -0400 PR c++/85761 - ICE with ill-formed use of const outer variable. * expr.c (mark_use): Handle location wrappers. diff --git a/gcc/cp/expr.c b/gcc/cp/expr.c index 0d0a10ec4a6..9780b75d1cd 100644 --- a/gcc/cp/expr.c +++ b/gcc/cp/expr.c @@ -139,6 +139,9 @@ mark_use (tree expr, bool rvalue_p, bool read_p, break; } } + temp_override l (input_location); + if (loc != UNKNOWN_LOCATION) + input_location = loc; expr = process_outer_var_ref (expr, tf_warning_or_error, true); if (!(TREE_TYPE (oexpr) && TYPE_REF_P (TREE_TYPE (oexpr @@ -184,6 +187,11 @@ mark_use (tree expr, bool rvalue_p, bool read_p, } break; default: + if (location_wrapper_p (expr)) + { + loc = EXPR_LOCATION (expr); + recurse_op[0] = true; + } break; } diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const8.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const8.C new file mode 100644 index 000..41cfd43b3a7 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const8.C @@ -0,0 +1,19 @@ +// PR c++/85761 +// { dg-do compile { target c++11 } } + +template +void out(const T& value); + +struct foo { + void bar(); +}; + +void foo::bar() +{ + constexpr int COUNT = 1; + auto run = []() { +out(COUNT); // { dg-error "9:not captured" } + }; + + run(); +}
[Committed] PR fortran/85938 -- testcase for rank change
PR fortran/85938 is another example of a failure caused by not setting the rank correctly. The issues with setting rank were fixed in r261081. I've converted the testcase in PR fortran/85938 to be suitable for the testsuite and committed it. 2018-06-02 Steven G. Kargl PR fortran/85938 * gfortran.dg/pr85938.f90: Fixed by revision r261081 -- Steve Index: gcc/testsuite/gfortran.dg/pr85938.f90 === --- gcc/testsuite/gfortran.dg/pr85938.f90 (nonexistent) +++ gcc/testsuite/gfortran.dg/pr85938.f90 (working copy) @@ -0,0 +1,9 @@ +! { dg-do run } +! PR fortran/85938 +program foo + real a(9), b(3) + integer :: n = 3 + a = 1.0 + b = 1.0 + if (any(matmul(reshape(A, (/ n, n /)), b) /= 3.)) stop 1 +end program
Re: [wwwdocs] Push references to our CSS into individual HTML files
On Sun, Jun 03, 2018 at 12:37:14AM +0200, Gerald Pfeifer wrote: > Push the references to our CSS from the MetaHTML style sheet into the > individual HTML files. Doesn't this affect the generated pages, like onlinedocs etc.? Jakub