public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [00/32] C++ 20 Modules
@ 2020-11-03 21:12 Nathan Sidwell
  2020-11-04  3:14 ` Hans-Peter Nilsson
                   ` (6 more replies)
  0 siblings, 7 replies; 18+ messages in thread
From: Nathan Sidwell @ 2020-11-03 21:12 UTC (permalink / raw)
  To: GCC Patches, Jason Merrill, Richard Biener

Here is the implementation of C++20 modules that I have been developing 
on the devel/c++-modules branch over the last few years.

It is not a complete implementation.  The major missing pieces are:

1) Private Module Fragment
   The syntax is recognized and a sorry emitted

2) textually parsing a duplicate global module definition when a 
definition has already been read from a header-unit.  (the converse is 
supported)

3) Complete type (in)visibility when provided in implementation 
partitions that are imported into the primary interface.  Users will see 
the type as complete.

4) Internal linkage reachability rules from exported entities.  We're 
likely to accept ill-formed programs.  This will not cause us to reject 
well-formed programs.

It is some 25K new lines of code (plus testsuite).  There are about 48 
FIXMEs, nearly all in module.cc and the remaining in name-lookup.c. Of 
these 12 are QOI comments.  The remaining 36 probably fall into the 
following categories:
1/3 are repeating a FIXME mentioned elsewhere
1/3 are already resolved, or have become irrelevant
1/3 are defects (an above missing feature, a QOI issue, or something else).

I believe there is time in stage 1 to address the most significant ones.

I have bootstrapped and tested on:
x86_64-linux
aarch64-linux
powerpc8le-linux
powerpc8-aix

Iain Sandoe has been regularly bootstrapping on x86_64-darwin.  Joseph 
Myers graciously built for i686-mingw host.  We eventually ran into 
compilation errors in the analyzer, as it seemed unprepared for an 
IL32P64 host.

I have attempted to break the patches apart into coherent pieces.  But 
they are somewhat interconnected.

01-langhooks.diff	New langhooks
02-cpp-line-maps.diff 	line-map pieces
03-cpp-callbacks.diff 	Preprocessor callbacks
04-cpp-lexer.diff 	There are new lexing requirements
05-cpp-files.diff 	... and file reading functionality
06-cpp-macro.diff 	... and macro expansion rules
07-cpp-main.diff 	Main file reading
08-cpp-mkdeps.diff 	Dependency generation
09-core-diag.diff 	Core diagnostics
10-core-config.diff 	Autoconf
11-core-parmtime.diff 	parameters and time instrumentation
12-core-doc.diff 	User documentation
13-family-options.diff 	New options
14-family-keywords.diff New keyword
15-c++-lexer.diff 	New C++ lexing
16-c++-infra.diff 	C++ infrastructure interfaces
17-c++-infra-constexpr.diff new constexpr interfacing
18-c++-infra-template.diff  new template interfacing
19-global-trees.diff 	Global tree ordering
20-c++-dynctor.diff 	Dynamic constructor generation
21-core-rawbits.diff 	Some core node bits
22-c++-otherbits.diff	Miscellaneous C++ changes
23-libcody.diff 	Libcody
24-c++-mapper.diff 	Module Mapper
25-c++-modules.diff 	The Modules file
26-c++-name-lookup.diff Name lookup changes
27-c++-parser.diff 	Parser changes
28-c++-langhooks.diff 	Lang hooks implementation
29-c++-make.diff 	Makefile changes
30-test-harness.diff 	Testharness changes
31-testsuite.diff 	The testsuite
32-aix-fixincl.diff 	AIX fixinclude

Nearly all of this is within gcc/cp and libcpp/ directories.  There are 
a few changes to gcc/ and more changes in gcc/c-family/  It is likely 
that this patchset will cause breakages, for that I apologize (please 
try the modules branch and report early).

My understanding is that a Global Maintainer's approval is needed for 
such a large patchset.  It's be good to get this in as early in stage 3 
as possible (if stage 1 expires).

Definitely the most important event of today :)  But don't forget to vote.

nathan

-- 
Nathan Sidwell

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [00/32] C++ 20 Modules
  2020-11-03 21:12 [00/32] C++ 20 Modules Nathan Sidwell
@ 2020-11-04  3:14 ` Hans-Peter Nilsson
  2020-11-04 12:30   ` Nathan Sidwell
  2020-11-04 19:24 ` [10/32] config Nathan Sidwell
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 18+ messages in thread
From: Hans-Peter Nilsson @ 2020-11-04  3:14 UTC (permalink / raw)
  To: Nathan Sidwell; +Cc: GCC Patches, Jason Merrill, Richard Biener

On Tue, 3 Nov 2020, Nathan Sidwell wrote:

> Here is the implementation of C++20 modules that I have been developing on the
> devel/c++-modules branch over the last few years.

Ow.

> I have bootstrapped and tested on:
> x86_64-linux
> aarch64-linux
> powerpc8le-linux
> powerpc8-aix
>
> Iain Sandoe has been regularly bootstrapping on x86_64-darwin.  Joseph Myers
> graciously built for i686-mingw host.  We eventually ran into compilation
> errors in the analyzer, as it seemed unprepared for an IL32P64 host.

(So not actually tested there.)

Are any of the powerpc targets you tested ILP32, such that the
patchset is completely tested for such a target?

brgds, H-P

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [00/32] C++ 20 Modules
  2020-11-04  3:14 ` Hans-Peter Nilsson
@ 2020-11-04 12:30   ` Nathan Sidwell
  2020-11-04 13:50     ` Nathan Sidwell
  0 siblings, 1 reply; 18+ messages in thread
From: Nathan Sidwell @ 2020-11-04 12:30 UTC (permalink / raw)
  To: Hans-Peter Nilsson; +Cc: GCC Patches, Jason Merrill, Richard Biener

On 11/3/20 10:14 PM, Hans-Peter Nilsson wrote:
> On Tue, 3 Nov 2020, Nathan Sidwell wrote:

>> I have bootstrapped and tested on:
>> x86_64-linux
>> aarch64-linux
>> powerpc8le-linux
>> powerpc8-aix
>>
>> Iain Sandoe has been regularly bootstrapping on x86_64-darwin.  Joseph Myers
>> graciously built for i686-mingw host.  We eventually ran into compilation
>> errors in the analyzer, as it seemed unprepared for an IL32P64 host.
> 
> (So not actually tested there.)
> 
> Are any of the powerpc targets you tested ILP32, such that the
> patchset is completely tested for such a target?

No.  I tried building on one of the compile farm mips machines but it 
ran out of memory compiling some of the generated expanders (or something).

rechecking the compile-farm page, I see gcc45 is a 686 machine, I'll try 
that.

nathan

-- 
Nathan Sidwell

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [00/32] C++ 20 Modules
  2020-11-04 12:30   ` Nathan Sidwell
@ 2020-11-04 13:50     ` Nathan Sidwell
  2020-11-04 14:15       ` Jason Merrill
  0 siblings, 1 reply; 18+ messages in thread
From: Nathan Sidwell @ 2020-11-04 13:50 UTC (permalink / raw)
  To: Hans-Peter Nilsson; +Cc: GCC Patches, Jason Merrill, Richard Biener

[-- Attachment #1: Type: text/plain, Size: 1071 bytes --]

On 11/4/20 7:30 AM, Nathan Sidwell wrote:

> rechecking the compile-farm page, I see gcc45 is a 686 machine, I'll try 
> that.

yeah, that didn't work.  There's compilation errors in
../../../src/gcc/config/i386/x86-tune-costs.h about missing 
initializers.  and then ...

In file included from 
/usr/lib/gcc/i586-linux-gnu/4.9/include/xmmintrin.h:34:0,
                  from 
/usr/lib/gcc/i586-linux-gnu/4.9/include/x86intrin.h:31,
                  from 
/usr/include/i386-linux-gnu/c++/4.9/bits/opt_random.h:33,
                  from /usr/include/c++/4.9/random:50,
                  from /usr/include/c++/4.9/bits/stl_algo.h:66,
                  from /usr/include/c++/4.9/algorithm:62,
                  from ../../../src/gcc/cp/mapper-resolver.cc:26:
./mm_malloc.h:42:12: error: attempt to use poisoned "malloc"
      return malloc (__size);
             ^
Makefile:1127: recipe for target 'cp/mapper-resolver.o' failed

it's a little unfortunate we can't use the standard library :(  I'll see 
what I can do about avoiding algorithm.

nathan

-- 
Nathan Sidwell

[-- Attachment #2: make.log --]
[-- Type: text/x-log, Size: 107955 bytes --]

make[2]: Entering directory '/home/nathan/egcs/modules/obj/i686/gcc'
g++ -std=gnu++11  -fno-PIE -c   -g -O2 -DIN_GCC     -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -fno-common  -DHAVE_CONFIG_H -I. -I. -I../../../src/gcc -I../../../src/gcc/. -I../../../src/gcc/../include -I../../../src/gcc/../libcpp/include -I../../../src/gcc/../libcody -I/home/nathan/egcs/modules/obj/i686/./gmp -I/home/nathan/egcs/modules/src/gmp -I/home/nathan/egcs/modules/obj/i686/./mpfr/src -I/home/nathan/egcs/modules/src/mpfr/src -I/home/nathan/egcs/modules/src/mpc/src  -I../../../src/gcc/../libdecnumber -I../../../src/gcc/../libdecnumber/bid -I../libdecnumber -I../../../src/gcc/../libbacktrace -I/home/nathan/egcs/modules/obj/i686/./isl/include -I/home/nathan/egcs/modules/src/isl/include  -o i386-options.o -MT i386-options.o -MMD -MP -MF ./.deps/i386-options.TPo ../../../src/gcc/config/i386/i386-options.c
In file included from ../../../src/gcc/config/i386/i386-options.c:94:0:
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   {rep_prefix_1_byte, {{-1, rep_prefix_1_byte, false}}}};
                                                        ^
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:32:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   {rep_prefix_1_byte, {{-1, rep_prefix_1_byte, false}}}};
                                                        ^
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:35:56: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   DUMMY_STRINGOP_ALGS};
                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:143:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   DUMMY_STRINGOP_ALGS};
                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:146:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   DUMMY_STRINGOP_ALGS};
                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:251:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   DUMMY_STRINGOP_ALGS};
                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:254:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   DUMMY_STRINGOP_ALGS};
                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:361:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   DUMMY_STRINGOP_ALGS};
                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:364:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:577:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   DUMMY_STRINGOP_ALGS};
                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:577:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:577:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:577:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:577:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:577:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:577:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:577:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:577:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:577:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:577:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:577:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:577:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:577:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:577:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   DUMMY_STRINGOP_ALGS};
                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:582:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   DUMMY_STRINGOP_ALGS};
                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:686:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   DUMMY_STRINGOP_ALGS};
                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:689:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   DUMMY_STRINGOP_ALGS};
                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:793:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   DUMMY_STRINGOP_ALGS};
                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:796:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   DUMMY_STRINGOP_ALGS};
                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:906:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   DUMMY_STRINGOP_ALGS};
                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:909:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1019:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {-1, libcall, false}}}};
                                    ^
../../../src/gcc/config/i386/x86-tune-costs.h:1019:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1019:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1019:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1019:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1019:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:1019:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1019:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1019:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1019:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1024:70: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {8192, rep_prefix_8_byte, false}, {-1, libcall, false}}}};
                                                                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:1024:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1024:70: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1024:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1024:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1139:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {-1, libcall, false}}}};
                                    ^
../../../src/gcc/config/i386/x86-tune-costs.h:1139:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1139:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1139:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1139:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1139:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:1139:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1139:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1139:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1139:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1144:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {-1, libcall, false}}}};
                                    ^
../../../src/gcc/config/i386/x86-tune-costs.h:1144:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1144:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1144:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1144:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1267:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {-1, libcall, false}}}};
                                    ^
../../../src/gcc/config/i386/x86-tune-costs.h:1267:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1267:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1267:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1267:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1267:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:1267:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1267:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1267:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1267:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1272:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {-1, libcall, false}}}};
                                    ^
../../../src/gcc/config/i386/x86-tune-costs.h:1272:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1272:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1272:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1272:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1393:29: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
       {-1, libcall, false}}}};
                             ^
../../../src/gcc/config/i386/x86-tune-costs.h:1393:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1393:29: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1393:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1393:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1393:29: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:1393:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1393:29: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1393:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1393:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1403:29: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
       {-1, libcall, false}}}};
                             ^
../../../src/gcc/config/i386/x86-tune-costs.h:1403:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1403:29: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1403:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1403:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1545:29: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
       {-1, libcall, false}}}};
                             ^
../../../src/gcc/config/i386/x86-tune-costs.h:1545:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1545:29: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1545:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1545:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1545:29: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:1545:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1545:29: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1545:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1545:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1555:29: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
       {-1, libcall, false}}}};
                             ^
../../../src/gcc/config/i386/x86-tune-costs.h:1555:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1555:29: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1555:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1555:29: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1695:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {-1, libcall, false}}}};
                                    ^
../../../src/gcc/config/i386/x86-tune-costs.h:1695:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1695:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1695:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1695:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1695:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:1695:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1695:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1695:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1695:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1695:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:1695:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1695:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1695:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1695:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1703:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {-1, libcall, false}}}};
                                    ^
../../../src/gcc/config/i386/x86-tune-costs.h:1703:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1703:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1703:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1703:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1814:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {-1, libcall, false}}}};
                                    ^
../../../src/gcc/config/i386/x86-tune-costs.h:1814:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1814:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1814:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1814:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1814:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:1814:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1814:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1814:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1814:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1819:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {-1, libcall, false}}}};
                                    ^
../../../src/gcc/config/i386/x86-tune-costs.h:1819:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1819:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1819:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1819:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1924:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {-1, libcall, false}}}};
                                    ^
../../../src/gcc/config/i386/x86-tune-costs.h:1924:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1924:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1924:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1924:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1924:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:1924:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1924:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1924:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1924:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1929:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {-1, libcall, false}}}};
                                    ^
../../../src/gcc/config/i386/x86-tune-costs.h:1929:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1929:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:1929:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:1929:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   DUMMY_STRINGOP_ALGS};
                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2032:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2036:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
   DUMMY_STRINGOP_ALGS};
                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:2036:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2036:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2036:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2036:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2036:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:2036:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2036:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2036:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2036:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2036:22: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:2036:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2036:22: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2036:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2036:22: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2142:68: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {100000, unrolled_loop, false}, {-1, libcall, false}}}};
                                                                    ^
../../../src/gcc/config/i386/x86-tune-costs.h:2142:68: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2142:68: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2142:68: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2142:68: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2142:68: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:2142:68: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2142:68: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2142:68: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2142:68: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2254:70: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {8192, rep_prefix_8_byte, false}, {-1, libcall, false}}}};
                                                                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:2254:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2254:70: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2254:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2254:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2254:70: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:2254:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2254:70: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2254:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2254:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2364:70: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {8192, rep_prefix_8_byte, false}, {-1, libcall, false}}}};
                                                                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:2364:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2364:70: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2364:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2364:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2364:70: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:2364:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2364:70: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2364:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2364:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2474:70: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {8192, rep_prefix_8_byte, false}, {-1, libcall, false}}}};
                                                                      ^
../../../src/gcc/config/i386/x86-tune-costs.h:2474:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2474:70: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2474:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2474:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2474:70: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:2474:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2474:70: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2474:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2474:70: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2588:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {-1, libcall, false}}}};
                                    ^
../../../src/gcc/config/i386/x86-tune-costs.h:2588:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2588:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2588:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2588:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2588:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:2588:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2588:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2588:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2588:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2593:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {-1, libcall, false}}}};
                                    ^
../../../src/gcc/config/i386/x86-tune-costs.h:2593:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2593:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2593:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2593:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2593:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:2593:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2593:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2593:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2593:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2704:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {-1, libcall, false}}}};
                                    ^
../../../src/gcc/config/i386/x86-tune-costs.h:2704:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2704:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2704:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2704:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2704:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:2704:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2704:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2704:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2704:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2704:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
../../../src/gcc/config/i386/x86-tune-costs.h:2704:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2704:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2704:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2704:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2711:36: error: uninitialized const member 'stringop_algs::stringop_strategy::max'
              {-1, libcall, false}}}};
                                    ^
../../../src/gcc/config/i386/x86-tune-costs.h:2711:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::max' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2711:36: error: uninitialized const member 'stringop_algs::stringop_strategy::alg'
../../../src/gcc/config/i386/x86-tune-costs.h:2711:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::alg' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/x86-tune-costs.h:2711:36: warning: missing initializer for member 'stringop_algs::stringop_strategy::noalign' [-Wmissing-field-initializers]
../../../src/gcc/config/i386/t-i386:49: recipe for target 'i386-options.o' failed
make[2]: *** [i386-options.o] Error 1
g++ -std=gnu++11  -fno-PIE -c  -DIN_GCC_FRONTEND -g -O2 -DIN_GCC     -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -fno-common  -DHAVE_CONFIG_H -I. -Icp -I../../../src/gcc -I../../../src/gcc/cp -I../../../src/gcc/../include -I../../../src/gcc/../libcpp/include -I../../../src/gcc/../libcody -I/home/nathan/egcs/modules/obj/i686/./gmp -I/home/nathan/egcs/modules/src/gmp -I/home/nathan/egcs/modules/obj/i686/./mpfr/src -I/home/nathan/egcs/modules/src/mpfr/src -I/home/nathan/egcs/modules/src/mpc/src  -I../../../src/gcc/../libdecnumber -I../../../src/gcc/../libdecnumber/bid -I../libdecnumber -I../../../src/gcc/../libbacktrace -I/home/nathan/egcs/modules/obj/i686/./isl/include -I/home/nathan/egcs/modules/src/isl/include  -o cp/mapper-resolver.o -MT cp/mapper-resolver.o -MMD -MP -MF cp/.deps/mapper-resolver.TPo ../../../src/gcc/cp/mapper-resolver.cc
In file included from /usr/lib/gcc/i586-linux-gnu/4.9/include/xmmintrin.h:34:0,
                 from /usr/lib/gcc/i586-linux-gnu/4.9/include/x86intrin.h:31,
                 from /usr/include/i386-linux-gnu/c++/4.9/bits/opt_random.h:33,
                 from /usr/include/c++/4.9/random:50,
                 from /usr/include/c++/4.9/bits/stl_algo.h:66,
                 from /usr/include/c++/4.9/algorithm:62,
                 from ../../../src/gcc/cp/mapper-resolver.cc:26:
./mm_malloc.h:42:12: error: attempt to use poisoned "malloc"
     return malloc (__size);
            ^
Makefile:1127: recipe for target 'cp/mapper-resolver.o' failed
make[2]: *** [cp/mapper-resolver.o] Error 1
make[2]: Target 'all' not remade because of errors.
make[2]: Leaving directory '/home/nathan/egcs/modules/obj/i686/gcc'
Makefile:4430: recipe for target 'all-gcc' failed
make[1]: *** [all-gcc] Error 2
make[1]: Target 'all-host' not remade because of errors.
make[1]: Target 'all-target' not remade because of errors.
make[1]: Leaving directory '/home/nathan/egcs/modules/obj/i686'
Makefile:969: recipe for target 'all' failed
make: *** [all] Error 2

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [00/32] C++ 20 Modules
  2020-11-04 13:50     ` Nathan Sidwell
@ 2020-11-04 14:15       ` Jason Merrill
  2020-11-04 15:06         ` Nathan Sidwell
  0 siblings, 1 reply; 18+ messages in thread
From: Jason Merrill @ 2020-11-04 14:15 UTC (permalink / raw)
  To: Nathan Sidwell; +Cc: Hans-Peter Nilsson, GCC Patches, Richard Biener

On Wed, Nov 4, 2020 at 8:50 AM Nathan Sidwell <nathan@acm.org> wrote:

> On 11/4/20 7:30 AM, Nathan Sidwell wrote:
>
> > rechecking the compile-farm page, I see gcc45 is a 686 machine, I'll try
> > that.
>
> yeah, that didn't work.  There's compilation errors in
> ../../../src/gcc/config/i386/x86-tune-costs.h about missing
> initializers.  and then ...
>
> In file included from
> /usr/lib/gcc/i586-linux-gnu/4.9/include/xmmintrin.h:34:0,
>                   from
> /usr/lib/gcc/i586-linux-gnu/4.9/include/x86intrin.h:31,
>                   from
> /usr/include/i386-linux-gnu/c++/4.9/bits/opt_random.h:33,
>                   from /usr/include/c++/4.9/random:50,
>                   from /usr/include/c++/4.9/bits/stl_algo.h:66,
>                   from /usr/include/c++/4.9/algorithm:62,
>                   from ../../../src/gcc/cp/mapper-resolver.cc:26:
> ./mm_malloc.h:42:12: error: attempt to use poisoned "malloc"
>       return malloc (__size);
>              ^
> Makefile:1127: recipe for target 'cp/mapper-resolver.o' failed
>
> it's a little unfortunate we can't use the standard library :(  I'll see
> what I can do about avoiding algorithm.
>

We can; apparently the necessary incantation is to

#define INCLUDE_ALGORITHM

before

#include "system.h"

Jason

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [00/32] C++ 20 Modules
  2020-11-04 14:15       ` Jason Merrill
@ 2020-11-04 15:06         ` Nathan Sidwell
  0 siblings, 0 replies; 18+ messages in thread
From: Nathan Sidwell @ 2020-11-04 15:06 UTC (permalink / raw)
  To: Jason Merrill; +Cc: Hans-Peter Nilsson, GCC Patches, Richard Biener

On 11/4/20 9:15 AM, Jason Merrill wrote:
> On Wed, Nov 4, 2020 at 8:50 AM Nathan Sidwell <nathan@acm.org 
> <mailto:nathan@acm.org>> wrote:
>
> 
> We can; apparently the necessary incantation is to
> 
> #define INCLUDE_ALGORITHM

thanks that's fixed the build problem.  And working around the i386 
error I get a working toolchain.  modules test all pass except a trivial 
one detecting va_list looks different.  I must have messed the target 
check there.

so i686-linux is now known good

nathan

-- 
Nathan Sidwell

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [10/32] config
  2020-11-03 21:12 [00/32] C++ 20 Modules Nathan Sidwell
  2020-11-04  3:14 ` Hans-Peter Nilsson
@ 2020-11-04 19:24 ` Nathan Sidwell
  2020-11-06 17:56   ` Jeff Law
  2020-11-05  7:08 ` [00/32] C++ 20 Modules Boris Kolpackov
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 18+ messages in thread
From: Nathan Sidwell @ 2020-11-04 19:24 UTC (permalink / raw)
  To: GCC Patches, Jason Merrill, Richard Biener

[-- Attachment #1: Type: text/plain, Size: 303 bytes --]

I managed to flub sending this yesterday.

This is the gcc/configure.ac changes (rebuild configure and config.h.in 
after applying).  Generally just checking for network-related 
functionality.  If it's not available, those features of the module 
mapper will be unavailable.

nathan
-- 
Nathan Sidwell

[-- Attachment #2: 10-core-config.diff --]
[-- Type: text/x-patch, Size: 5553 bytes --]

diff --git c/gcc/configure.ac w/gcc/configure.ac
index 73034bb902b..168a3bc3625 100644
--- c/gcc/configure.ac
+++ w/gcc/configure.ac
@@ -1417,8 +1419,8 @@ define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
   putchar_unlocked putc_unlocked)
 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoq \
 	popen sysconf strsignal getrusage nl_langinfo \
-	gettimeofday mbstowcs wcswidth mmap setlocale \
-	gcc_UNLOCKED_FUNCS madvise mallinfo mallinfo2)
+	gettimeofday mbstowcs wcswidth mmap memrchr posix_fallocate setlocale \
+	gcc_UNLOCKED_FUNCS madvise mallinfo execv mallinfo2 fstatat)
 
 if test x$ac_cv_func_mbstowcs = xyes; then
   AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
@@ -1440,6 +1442,10 @@ fi
 
 AC_CHECK_TYPE(ssize_t, int)
 AC_CHECK_TYPE(caddr_t, char *)
+AC_CHECK_TYPE(sighander_t,
+  AC_DEFINE(HAVE_SIGHANDLER_T, 1,
+    [Define if <sys/signal.h> defines sighandler_t]),
+    ,signal.h)
 
 GCC_AC_FUNC_MMAP_BLACKLIST
 
@@ -1585,6 +1591,146 @@ if test $ac_cv_f_setlkw = yes; then
   [Define if F_SETLKW supported by fcntl.])
 fi
 
+# Check if O_CLOEXEC is defined by fcntl
+AC_CACHE_CHECK(for O_CLOEXEC, ac_cv_o_cloexec, [
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <fcntl.h>]], [[
+return open ("/dev/null", O_RDONLY | O_CLOEXEC);]])],
+[ac_cv_o_cloexec=yes],[ac_cv_o_cloexec=no])])
+if test $ac_cv_o_cloexec = yes; then
+  AC_DEFINE(HOST_HAS_O_CLOEXEC, 1,
+  [Define if O_CLOEXEC supported by fcntl.])
+fi
+
+# C++ Modules would like some networking features to provide the mapping
+# server.  You can still use modules without them though.
+# The following network-related checks could probably do with some
+# Windows and other non-linux defenses and checking.
+
+# Local socket connectivity wants AF_UNIX networking
+# Check for AF_UNIX networking
+AC_CACHE_CHECK(for AF_UNIX, ac_cv_af_unix, [
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <netinet/in.h>]],[[
+sockaddr_un un;
+un.sun_family = AF_UNSPEC;
+int fd = socket (AF_UNIX, SOCK_STREAM, 0);
+connect (fd, (sockaddr *)&un, sizeof (un));]])],
+[ac_cv_af_unix=yes],
+[ac_cv_af_unix=no])])
+if test $ac_cv_af_unix = yes; then
+  AC_DEFINE(HAVE_AF_UNIX, 1,
+  [Define if AF_UNIX supported.])
+fi
+
+# Remote socket connectivity wants AF_INET6 networking
+# Check for AF_INET6 networking
+AC_CACHE_CHECK(for AF_INET6, ac_cv_af_inet6, [
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netdb.h>]],[[
+sockaddr_in6 in6;
+in6.sin6_family = AF_UNSPEC;
+struct addrinfo *addrs = 0;
+struct addrinfo hints;
+hints.ai_flags = 0;
+hints.ai_family = AF_INET6;
+hints.ai_socktype = SOCK_STREAM;
+hints.ai_protocol = 0;
+hints.ai_canonname = 0;
+hints.ai_addr = 0;
+hints.ai_next = 0;
+int e = getaddrinfo ("localhost", 0, &hints, &addrs);
+const char *str = gai_strerror (e);
+freeaddrinfo (addrs);
+int fd = socket (AF_INET6, SOCK_STREAM, 0);
+connect (fd, (sockaddr *)&in6, sizeof (in6));]])],
+[ac_cv_af_inet6=yes],
+[ac_cv_af_inet6=no])])
+if test $ac_cv_af_inet6 = yes; then
+  AC_DEFINE(HAVE_AF_INET6, 1,
+  [Define if AF_INET6 supported.])
+fi
+
+# Efficient server response wants epoll
+# Check for epoll_create, epoll_ctl, epoll_pwait
+AC_CACHE_CHECK(for epoll, ac_cv_epoll, [
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/epoll.h>]],[[
+int fd = epoll_create (1);
+epoll_event ev;
+ev.events = EPOLLIN;
+ev.data.fd = 0;
+epoll_ctl (fd, EPOLL_CTL_ADD, 0, &ev);
+epoll_pwait (fd, 0, 0, -1, 0);]])],
+[ac_cv_epoll=yes],
+[ac_cv_epoll=no])])
+if test $ac_cv_epoll = yes; then
+  AC_DEFINE(HAVE_EPOLL, 1,
+  [Define if epoll_create, epoll_ctl, epoll_pwait provided.])
+fi
+
+# If we can't use epoll, try pselect.
+# Check for pselect
+AC_CACHE_CHECK(for pselect, ac_cv_pselect, [
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/select.h>]],[[
+pselect (0, 0, 0, 0, 0, 0);]])],
+[ac_cv_pselect=yes],
+[ac_cv_pselect=no])])
+if test $ac_cv_pselect = yes; then
+  AC_DEFINE(HAVE_PSELECT, 1,
+  [Define if pselect provided.])
+fi
+
+# And failing that, use good old select.
+# If we can't even use this, the server is serialized.
+# Check for select
+AC_CACHE_CHECK(for select, ac_cv_select, [
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/select.h>]],[[
+select (0, 0, 0, 0, 0);]])],
+[ac_cv_select=yes],
+[ac_cv_select=no])])
+if test $ac_cv_select = yes; then
+  AC_DEFINE(HAVE_SELECT, 1,
+  [Define if select provided.])
+fi
+
+# Avoid some fnctl calls by using accept4, when available.
+# Check for accept4
+AC_CACHE_CHECK(for accept4, ac_cv_accept4, [
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/socket.h>]],[[
+int err = accept4 (1, 0, 0, SOCK_NONBLOCK);]])],
+[ac_cv_accept4=yes],
+[ac_cv_accept4=no])])
+if test $ac_cv_accept4 = yes; then
+  AC_DEFINE(HAVE_ACCEPT4, 1,
+  [Define if accept4 provided.])
+fi
+
+# For better server messages, look for a way to stringize network addresses
+# Check for inet_ntop
+AC_CACHE_CHECK(for inet_ntop, ac_cv_inet_ntop, [
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <arpa/inet.h>
+#include <netinet/in.h>]],[[
+sockaddr_in6 in6;
+char buf[INET6_ADDRSTRLEN];
+const char *str = inet_ntop (AF_INET6, &in6, buf, sizeof (buf));]])],
+[ac_cv_inet_ntop=yes],
+[ac_cv_inet_ntop=no])])
+if test $ac_cv_inet_ntop = yes; then
+  AC_DEFINE(HAVE_INET_NTOP, 1,
+  [Define if inet_ntop provided.])
+fi
+
 # Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
 CFLAGS="$saved_CFLAGS"
 CXXFLAGS="$saved_CXXFLAGS"

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [00/32] C++ 20 Modules
  2020-11-03 21:12 [00/32] C++ 20 Modules Nathan Sidwell
  2020-11-04  3:14 ` Hans-Peter Nilsson
  2020-11-04 19:24 ` [10/32] config Nathan Sidwell
@ 2020-11-05  7:08 ` Boris Kolpackov
  2020-11-05 17:17   ` Nathan Sidwell
  2020-11-05 13:33 ` Richard Biener
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 18+ messages in thread
From: Boris Kolpackov @ 2020-11-05  7:08 UTC (permalink / raw)
  To: gcc-patches

Nathan Sidwell <nathan@acm.org> writes:

> Here is the implementation of C++20 modules that I have been developing 
> on the devel/c++-modules branch over the last few years.

Congrats on reaching this point.


> It is not a complete implementation.  The major missing pieces are:
> 
> [...]

Building C++20 modules requires non-trivial integration between the
compiler and the build system. This patch set introduces a module
mapper, a novel mechanism for such integration. Has it been tried
by any non-toy build system and on any real project?

If the answer is "no", then by shipping modules in GCC 11 are we
making any likely changes in this area impossible or unnecessarily
difficult?

To give an example of such a likely change, currently the mapper
has a notion of the central module repository directory that is
used to resolve all the relative CMI (compiled module interface[1])
paths (even paths like ./foo.gcm). However, this model will not
apply to all build systems. For example, in build2 (the build
system I am involved with), there can be no such central place
since a project can pull dependencies that are built in other
places. Currently, the only way to disable this repository
semantics is to use absolute CMI paths throughout.

Also, FWIW, I've attempted such a build system integration with
build2 back in 2019. While the overall idea of the module mapper
worked well, I had to make substantial extensions in my own
branch[2] of Nathan's c++-modules (also described in this[3]
WG21 paper). AFAIK, these extensions haven't yet been considered
for merging into c++-modules.

[1] BTW, SG15 seems to have settled on the BMI (built module
    interface) term instead of CMI:

    https://github.com/cplusplus/modules-ecosystem-tr/blob/master/definitions.tex

[2] https://github.com/boris-kolpackov/gcc-cxx-modules-ex

    The branch used to live on gcc.gnu.org/git but was dropped as
    part of the svn-to-git migration.

[3] https://wg21.link/P1842

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [00/32] C++ 20 Modules
  2020-11-03 21:12 [00/32] C++ 20 Modules Nathan Sidwell
                   ` (2 preceding siblings ...)
  2020-11-05  7:08 ` [00/32] C++ 20 Modules Boris Kolpackov
@ 2020-11-05 13:33 ` Richard Biener
  2020-11-05 15:25   ` Nathan Sidwell
  2020-11-05 14:30 ` David Malcolm
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 18+ messages in thread
From: Richard Biener @ 2020-11-05 13:33 UTC (permalink / raw)
  To: Nathan Sidwell; +Cc: GCC Patches, Jason Merrill

On Tue, Nov 3, 2020 at 10:12 PM Nathan Sidwell <nathan@acm.org> wrote:
>
> Here is the implementation of C++20 modules that I have been developing
> on the devel/c++-modules branch over the last few years.
>
> It is not a complete implementation.  The major missing pieces are:
>
> 1) Private Module Fragment
>    The syntax is recognized and a sorry emitted
>
> 2) textually parsing a duplicate global module definition when a
> definition has already been read from a header-unit.  (the converse is
> supported)
>
> 3) Complete type (in)visibility when provided in implementation
> partitions that are imported into the primary interface.  Users will see
> the type as complete.
>
> 4) Internal linkage reachability rules from exported entities.  We're
> likely to accept ill-formed programs.  This will not cause us to reject
> well-formed programs.
>
> It is some 25K new lines of code (plus testsuite).  There are about 48
> FIXMEs, nearly all in module.cc and the remaining in name-lookup.c. Of
> these 12 are QOI comments.  The remaining 36 probably fall into the
> following categories:
> 1/3 are repeating a FIXME mentioned elsewhere
> 1/3 are already resolved, or have become irrelevant
> 1/3 are defects (an above missing feature, a QOI issue, or something else).
>
> I believe there is time in stage 1 to address the most significant ones.
>
> I have bootstrapped and tested on:
> x86_64-linux
> aarch64-linux
> powerpc8le-linux
> powerpc8-aix
>
> Iain Sandoe has been regularly bootstrapping on x86_64-darwin.  Joseph
> Myers graciously built for i686-mingw host.  We eventually ran into
> compilation errors in the analyzer, as it seemed unprepared for an
> IL32P64 host.
>
> I have attempted to break the patches apart into coherent pieces.  But
> they are somewhat interconnected.
>
> 01-langhooks.diff       New langhooks
> 02-cpp-line-maps.diff   line-map pieces
> 03-cpp-callbacks.diff   Preprocessor callbacks
> 04-cpp-lexer.diff       There are new lexing requirements
> 05-cpp-files.diff       ... and file reading functionality
> 06-cpp-macro.diff       ... and macro expansion rules
> 07-cpp-main.diff        Main file reading
> 08-cpp-mkdeps.diff      Dependency generation
> 09-core-diag.diff       Core diagnostics
> 10-core-config.diff     Autoconf
> 11-core-parmtime.diff   parameters and time instrumentation
> 12-core-doc.diff        User documentation
> 13-family-options.diff  New options
> 14-family-keywords.diff New keyword
> 15-c++-lexer.diff       New C++ lexing
> 16-c++-infra.diff       C++ infrastructure interfaces
> 17-c++-infra-constexpr.diff new constexpr interfacing
> 18-c++-infra-template.diff  new template interfacing
> 19-global-trees.diff    Global tree ordering
> 20-c++-dynctor.diff     Dynamic constructor generation
> 21-core-rawbits.diff    Some core node bits
> 22-c++-otherbits.diff   Miscellaneous C++ changes
> 23-libcody.diff         Libcody
> 24-c++-mapper.diff      Module Mapper
> 25-c++-modules.diff     The Modules file
> 26-c++-name-lookup.diff Name lookup changes
> 27-c++-parser.diff      Parser changes
> 28-c++-langhooks.diff   Lang hooks implementation
> 29-c++-make.diff        Makefile changes
> 30-test-harness.diff    Testharness changes
> 31-testsuite.diff       The testsuite
> 32-aix-fixincl.diff     AIX fixinclude
>
> Nearly all of this is within gcc/cp and libcpp/ directories.  There are
> a few changes to gcc/ and more changes in gcc/c-family/  It is likely
> that this patchset will cause breakages, for that I apologize (please
> try the modules branch and report early).
>
> My understanding is that a Global Maintainer's approval is needed for
> such a large patchset.  It's be good to get this in as early in stage 3
> as possible (if stage 1 expires).

From a RM perspective this is OK if merging doesn't drag itself too
far along.  Expect build & install fallout from the more weird hosts & targets
we have though.

Moving the module mapper to a more easily (build-)testable location
and to a place where host dependences can be more easily fixed
& customized than in a bootstrapped directory would be nice.  Thus,
I think the module mapper should be in the toplevel somehow
and independently buildable.

Richard.

> Definitely the most important event of today :)  But don't forget to vote.
>
> nathan
>
> --
> Nathan Sidwell

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [00/32] C++ 20 Modules
  2020-11-03 21:12 [00/32] C++ 20 Modules Nathan Sidwell
                   ` (3 preceding siblings ...)
  2020-11-05 13:33 ` Richard Biener
@ 2020-11-05 14:30 ` David Malcolm
  2020-11-13 21:55 ` Mike Stump
  2020-11-16  8:50 ` Boris Kolpackov
  6 siblings, 0 replies; 18+ messages in thread
From: David Malcolm @ 2020-11-05 14:30 UTC (permalink / raw)
  To: Nathan Sidwell, GCC Patches, Jason Merrill, Richard Biener; +Cc: Joseph Myers

On Tue, 2020-11-03 at 16:12 -0500, Nathan Sidwell wrote:

[...]

[CCing Joseph]

> I have bootstrapped and tested on:
> x86_64-linux
> aarch64-linux
> powerpc8le-linux
> powerpc8-aix
> 
> Iain Sandoe has been regularly bootstrapping on x86_64-
> darwin.  Joseph 
> Myers graciously built for i686-mingw host.  We eventually ran into 
> compilation errors in the analyzer, as it seemed unprepared for an 
> IL32P64 host.

Sorry about the issues with the analyzer with IL32P64 hosts.  I pushed
Markus Böck's fix for PR 96608 to master on 2020-10-27 as
942086bf73ee2ba6cfd7fdacc552940048437a6e.

Is anyone still seeing build issues with the analyzer?  (and is there a
machine in the compile farm I can test them out on?).

Dave


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [00/32] C++ 20 Modules
  2020-11-05 13:33 ` Richard Biener
@ 2020-11-05 15:25   ` Nathan Sidwell
  2020-11-05 18:45     ` Richard Biener
  0 siblings, 1 reply; 18+ messages in thread
From: Nathan Sidwell @ 2020-11-05 15:25 UTC (permalink / raw)
  To: Richard Biener; +Cc: GCC Patches, Jason Merrill

On 11/5/20 8:33 AM, Richard Biener wrote:

> Moving the module mapper to a more easily (build-)testable location
> and to a place where host dependences can be more easily fixed
> & customized than in a bootstrapped directory would be nice.  Thus,
> I think the module mapper should be in the toplevel somehow
> and independently buildable.

Ok, that makes sense.  It is where it is, because originally it was much 
more tightly coupled with cc1plus.

The mapper-server and cc1plus do share some (maybe just one?) obj files. 
The in-process resolving and the server's default have the same 
functionality.

For bootstrap cc1plus needs them, so I guess they should remain in 
gcc/cp/?  The alternative would be to put them in new mapper-server dir 
and have it provide somekind of library that cc1plus could link with. 
However that'll probably mess up bootstrap.

Having a --with-module-mapper configure option seems sensible.

nathan

-- 
Nathan Sidwell

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [00/32] C++ 20 Modules
  2020-11-05  7:08 ` [00/32] C++ 20 Modules Boris Kolpackov
@ 2020-11-05 17:17   ` Nathan Sidwell
  2020-11-06 14:26     ` Boris Kolpackov
  0 siblings, 1 reply; 18+ messages in thread
From: Nathan Sidwell @ 2020-11-05 17:17 UTC (permalink / raw)
  To: gcc-patches

On 11/5/20 2:08 AM, Boris Kolpackov wrote:

> 
> To give an example of such a likely change, currently the mapper
> has a notion of the central module repository directory that is
> used to resolve all the relative CMI (compiled module interface[1])
> paths (even paths like ./foo.gcm). However, this model will not
> apply to all build systems. For example, in build2 (the build
> system I am involved with), there can be no such central place
> since a project can pull dependencies that are built in other
> places. Currently, the only way to disable this repository
> semantics is to use absolute CMI paths throughout.

The repo is providing a mechanism by which two processes can synchronize 
on a fixed location in the file system that is not /.  You need such a 
capability as the file system is the bulk transfer mechanism.

The alternatives are to always use absolute paths, or require the two 
ends of the communication to have the same working directory, or have 
one end of the communication to map file system locations into the other 
end's view.  That'll probably require knowing some fixed point, which 
you have to figure out how synchronize, and we're back to defining more 
fixed points in the file system.

The location of the repo is entirely under the mapper-server's control. 
Set it to / if you want.

nathan
-- 
Nathan Sidwell

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [00/32] C++ 20 Modules
  2020-11-05 15:25   ` Nathan Sidwell
@ 2020-11-05 18:45     ` Richard Biener
  0 siblings, 0 replies; 18+ messages in thread
From: Richard Biener @ 2020-11-05 18:45 UTC (permalink / raw)
  To: Nathan Sidwell; +Cc: GCC Patches, Jason Merrill

On November 5, 2020 4:25:23 PM GMT+01:00, Nathan Sidwell <nathan@acm.org> wrote:
>On 11/5/20 8:33 AM, Richard Biener wrote:
>
>> Moving the module mapper to a more easily (build-)testable location
>> and to a place where host dependences can be more easily fixed
>> & customized than in a bootstrapped directory would be nice.  Thus,
>> I think the module mapper should be in the toplevel somehow
>> and independently buildable.
>
>Ok, that makes sense.  It is where it is, because originally it was
>much 
>more tightly coupled with cc1plus.
>
>The mapper-server and cc1plus do share some (maybe just one?) obj
>files. 
>The in-process resolving and the server's default have the same 
>functionality.
>
>For bootstrap cc1plus needs them, so I guess they should remain in 
>gcc/cp/?  The alternative would be to put them in new mapper-server dir

Guess some file you can include from the mapper dir (and thus build it twice) would work? I'm not suggesting another static library, if the maybe libiberty if the thing is remotely generic. 

>and have it provide somekind of library that cc1plus could link with. 
>However that'll probably mess up bootstrap.
>
>Having a --with-module-mapper configure option seems sensible.
>
>nathan


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [00/32] C++ 20 Modules
  2020-11-05 17:17   ` Nathan Sidwell
@ 2020-11-06 14:26     ` Boris Kolpackov
  0 siblings, 0 replies; 18+ messages in thread
From: Boris Kolpackov @ 2020-11-06 14:26 UTC (permalink / raw)
  To: gcc-patches

Nathan Sidwell <nathan@acm.org> writes:

> The repo is providing a mechanism by which two processes can synchronize 
> on a fixed location in the file system that is not /.  You need such a 
> capability as the file system is the bulk transfer mechanism.
> 
> The alternatives are to always use absolute paths, or require the two 
> ends of the communication to have the same working directory [...]

Isn't the latter pretty much the norm for a build system that spawns
the compiler?


> The location of the repo is entirely under the mapper-server's control. 
> Set it to / if you want.

Except that now all my relative paths are relative to / and not CWD.

I find the current semantics heavily skewed towards the mapper operating
outside the build system (like the builtin mapper) while I expect most
non-toy/legacy build systems that wish to support C++ modules to have
an integrated mapper (build2 certainly does it this way). I think there
should at least be a way for the mapper to opt out of this repository
functionality.


Also, you mentioning synchronization reminded me of this part from
Invoking GCC/C++ Modules:

> When creating an output CMI any missing directory components are
> created in a manner that is safe for concurrent builds creating
> multiple, different, CMIs within a common subdirectory tree.
>
> CMI contents are written to a temporary file, which is then atomically
> renamed.  Observers will either see old contents (if there is an
> existing file), or complete new contents.  They will not observe the CMI
> during its creation.

This works atomically on POSIX but not on Windows. Also, from experience,
on Windows creating a temporary file and then renaming it often causes
more problems than creating it in the final destination from the outset.
That's because on Windows you cannot (re)move a file that is open by
another process. And there are various processes on Windows (anti-virus/
malware, indexers, IDEs, etc) that routinely scan the filesystem.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [10/32] config
  2020-11-04 19:24 ` [10/32] config Nathan Sidwell
@ 2020-11-06 17:56   ` Jeff Law
  2020-11-06 18:47     ` Nathan Sidwell
  0 siblings, 1 reply; 18+ messages in thread
From: Jeff Law @ 2020-11-06 17:56 UTC (permalink / raw)
  To: Nathan Sidwell, GCC Patches, Jason Merrill, Richard Biener


On 11/4/20 12:24 PM, Nathan Sidwell wrote:
> I managed to flub sending this yesterday.
>
> This is the gcc/configure.ac changes (rebuild configure and
> config.h.in after applying).  Generally just checking for
> network-related functionality.  If it's not available, those features
> of the module mapper will be unavailable.

OK with a ChangeLog entry.


jeff

ps.  Yes, I know this is out of order WRT the others in the series. 
It's not being threaded with the main patch series, so it stood out in
my queue :-)




^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [10/32] config
  2020-11-06 17:56   ` Jeff Law
@ 2020-11-06 18:47     ` Nathan Sidwell
  0 siblings, 0 replies; 18+ messages in thread
From: Nathan Sidwell @ 2020-11-06 18:47 UTC (permalink / raw)
  To: Jeff Law, GCC Patches, Jason Merrill, Richard Biener

On 11/6/20 12:56 PM, Jeff Law wrote:
> 
> On 11/4/20 12:24 PM, Nathan Sidwell wrote:
>> I managed to flub sending this yesterday.
>>
>> This is the gcc/configure.ac changes (rebuild configure and
>> config.h.in after applying).  Generally just checking for
>> network-related functionality.  If it's not available, those features
>> of the module mapper will be unavailable.
> 
> OK with a ChangeLog entry.

thanks.  I should have mentioned the lack of changelogs on the patches. 
I will of course write them when committing, along with rationale that 
may have already been written in the emails

nathan

-- 
Nathan Sidwell

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [00/32] C++ 20 Modules
  2020-11-03 21:12 [00/32] C++ 20 Modules Nathan Sidwell
                   ` (4 preceding siblings ...)
  2020-11-05 14:30 ` David Malcolm
@ 2020-11-13 21:55 ` Mike Stump
  2020-11-16  8:50 ` Boris Kolpackov
  6 siblings, 0 replies; 18+ messages in thread
From: Mike Stump @ 2020-11-13 21:55 UTC (permalink / raw)
  To: Nathan Sidwell; +Cc: GCC Patches, Jason Merrill, Richard Biener

On Nov 3, 2020, at 1:12 PM, Nathan Sidwell <nathan@acm.org> wrote:
> 
> Here is the implementation of C++20 modules that I have been developing on the devel/c++-modules branch over the last few years.

I was just recently wondering about this.  Congratulations.

> It is some 25K new lines of code (plus testsuite).

> Definitely the most important event of today :)

I agree.

> don't forget to vote.

I vote yes; although, I didn't know we had switched to voting patches in.\f\f

:-)

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [00/32] C++ 20 Modules
  2020-11-03 21:12 [00/32] C++ 20 Modules Nathan Sidwell
                   ` (5 preceding siblings ...)
  2020-11-13 21:55 ` Mike Stump
@ 2020-11-16  8:50 ` Boris Kolpackov
  6 siblings, 0 replies; 18+ messages in thread
From: Boris Kolpackov @ 2020-11-16  8:50 UTC (permalink / raw)
  To: gcc-patches

Nathan Sidwell <nathan@acm.org> writes:

> It is not a complete implementation.  The major missing pieces are: [...]

Would now be a good time to start reporting bugs in bugzilla so that
things don't fall through the cracks? Is so, would it make sense to
add the "c++ modules" component to bugzilla?

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2020-11-16  8:50 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-03 21:12 [00/32] C++ 20 Modules Nathan Sidwell
2020-11-04  3:14 ` Hans-Peter Nilsson
2020-11-04 12:30   ` Nathan Sidwell
2020-11-04 13:50     ` Nathan Sidwell
2020-11-04 14:15       ` Jason Merrill
2020-11-04 15:06         ` Nathan Sidwell
2020-11-04 19:24 ` [10/32] config Nathan Sidwell
2020-11-06 17:56   ` Jeff Law
2020-11-06 18:47     ` Nathan Sidwell
2020-11-05  7:08 ` [00/32] C++ 20 Modules Boris Kolpackov
2020-11-05 17:17   ` Nathan Sidwell
2020-11-06 14:26     ` Boris Kolpackov
2020-11-05 13:33 ` Richard Biener
2020-11-05 15:25   ` Nathan Sidwell
2020-11-05 18:45     ` Richard Biener
2020-11-05 14:30 ` David Malcolm
2020-11-13 21:55 ` Mike Stump
2020-11-16  8:50 ` Boris Kolpackov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).