aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2020-12-24Daily bump.GCC Administrator5-1/+154
2020-12-23PR middle-end/98160 - ICE in warn_dealloc_offset on member placement new and ↵Martin Sebor2-1/+33
delete gcc/ChangeLog: PR middle-end/98160 * builtins.c (warn_dealloc_offset): Avoid assuming calls are made through declared functions and not pointers. gcc/testsuite/ChangeLog: PR middle-end/98160 * g++.dg/warn/pr98160.C: New test.
2020-12-23PR c++/98413 - ICE on placement new and member pointerMartin Sebor2-0/+26
gcc/ChangeLog: PR c++/98413 * builtins.c (get_offset_range): Avoid non-integers/-pointers. gcc/testsuite/ChangeLog: PR c++/98413 * g++.dg/warn/pr98413.C: New test.
2020-12-23mark some tests in gcc.target/arm as requiring "fpic" supportJoel Brobecker8-8/+16
Require effective target fpic support in tests using pic flags. for gcc/testsuite/ChangeLog * gcc.target/arm/data-rel-1.c: Require "fpic" support. * gcc.target/arm/data-rel-2.c: Likewise. * gcc.target/arm/data-rel-3.c: Ditto. * gcc.target/arm/pr44788.c: Ditto. * gcc.target/arm/pr52006.c: Ditto. * gcc.target/arm/pr59858.c: Ditto. * gcc.target/arm/tlscall.c: Ditto. * gcc.target/arm/require-pic-register-loc.c: Ditto. Adjust line numbers.
2020-12-23c++: EOF location [PR 96045]Nathan Sidwell48-60/+59
Setting the EOF token location to be the start of a line just after the ending newline is not most helpful. While that location is probably the right place to report preprocessing and lexing issues, when parsing, the location just after the last token is better. That way we get to point at some actual text. Setting the location from the previous token has the advantage over just setting the location to be the end of the final line, in that any ending comments do not get considered, which I think is better. PR c++/96045 gcc/cp/ * parser.c (cp_lexer_new_main): Adjust EOF token location. gcc/testsuite/ * g++.dg/diagnostic/pr96045-1.C: New. * g++.dg/diagnostic/pr96045-2.C: New. * g++.dg/diagnostic/pr96045-3.C: New. * c-c++-common/goacc/pr79428-1.c: Adjust EOF diagnostic location. * c-c++-common/gomp/pr79428-2.c: Likewise * c-c++-common/raw-string-6.c: Likewise * g++.dg/cpp0x/decltype63.C: Likewise * g++.dg/cpp0x/gen-attrs-64.C: Likewise * g++.dg/cpp0x/pr68726.C: Likewise * g++.dg/cpp0x/pr78341.C: Likewise * g++.dg/cpp1y/pr65202.C: Likewise * g++.dg/cpp1y/pr65340.C: Likewise * g++.dg/cpp1y/pr68578.C: Likewise * g++.dg/cpp1z/class-deduction44.C: Likewise * g++.dg/diagnostic/unclosed-extern-c.C: Likewise * g++.dg/diagnostic/unclosed-function.C: Likewise * g++.dg/diagnostic/unclosed-namespace.C: Likewise * g++.dg/diagnostic/unclosed-struct.C: Likewise * g++.dg/ext/pr84598.C: Likewise * g++.dg/other/switch4.C: Likewise * g++.dg/parse/attr4.C: Likewise * g++.dg/parse/cond4.C: Likewise * g++.dg/parse/crash10.C: Likewise * g++.dg/parse/crash18.C: Likewise * g++.dg/parse/crash27.C: Likewise * g++.dg/parse/crash34.C: Likewise * g++.dg/parse/crash35.C: Likewise * g++.dg/parse/crash52.C: Likewise * g++.dg/parse/crash59.C: Likewise * g++.dg/parse/crash61.C: Likewise * g++.dg/parse/crash67.C: Likewise * g++.dg/parse/error14.C: Likewise * g++.dg/parse/error56.C: Likewise * g++.dg/parse/invalid1.C: Likewise * g++.dg/parse/parameter-declaration-1.C: Likewise * g++.dg/parse/parser-pr28152-2.C: Likewise * g++.dg/parse/parser-pr28152.C: Likewise * g++.dg/parse/pr68722.C: Likewise * g++.dg/parse/pr96258.C: Likewise * g++.dg/pr46852.C: Likewise * g++.dg/pr46868.C: Likewise * g++.dg/template/crash115.C: Likewise * g++.dg/template/crash43.C: Likewise * g++.dg/template/crash90.C: Likewise * g++.dg/template/error-recovery1.C: Likewise * g++.dg/template/error57.C: Likewise * g++.old-deja/g++.other/crash31.C: Likewise
2020-12-23c++: Fix initializing empty base from prvalue [PR97597]Jason Merrill4-2/+52
unsafe_return_slot_p wasn't recognizing an empty base as potentially-overlapping, which it definitely is. The change to build_base_path is to make the virtual conversion also recognized by is_empty_base_ref; unsafe_return_slot_p doesn't to handle virtual conversions, but hypothetical future callers might. gcc/cp/ChangeLog: PR c++/97597 * class.c (is_empty_base_ref): New. (build_base_path): Add NOP_EXPR after offset. * cp-tree.h (is_empty_base_ref): Declare it. * call.c (unsafe_return_slot_p): Call it. gcc/testsuite/ChangeLog: PR c++/97597 * g++.dg/init/empty3.C: New test.
2020-12-23compiler: nil-checked pointers and index expressions can trapIan Lance Taylor2-7/+5
The compiler was treating indirections through pointers that had been explicitly checked against nil and slice and string index expressions as non-trapping memory references. That is true for ordinary Go programs, but it isn't true if the programs construct their own memory addresses. In particular it isn't true for the kinds of programs that want to use runtime.SetPanicOnFault. The effect of this will be slightly larger binaries, due to additional exception information, and perhaps slightly less optimization. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279960
2020-12-23c++: Improve testcase [PR98332]Jason Merrill1-1/+3
gcc/testsuite/ChangeLog: * g++.dg/cpp0x/constexpr-overflow3.C: Use INT_MAX.
2020-12-23c++: Fix up floating point complex handling in build_zero_init_1 [PR98353]Jakub Jelinek1-1/+1
While the gimplifier patch I've just committed fixed an ICE, in some cases like on the committed testcase cp folding doesn't happen after build_zero_init_1 because it is called already during gimplification. For the scalar types, if we want to use convert, the problem with complex floats is that it returns a COMPLEX_EXPR with FLOAT_EXPR arguments which have INTEGER_CST 0 as argument. As fold isn't recursive, it doesn't do anything in that case, we need to first fold those FLOAT_EXPRs to REAL_CST 0.0 and only afterwards the COMPLEX_EXPR can be folded into COMPLEX_CST with 0.0 arguments. This patch instead just uses build_zero_cst that creates the zero constant for any scalar types (and more) directly, instead of going through multiple hops. 2020-12-23 Jakub Jelinek <jakub@redhat.com> PR c++/98353 * init.c (build_zero_init_1): Use build_zero_cst for SCALAR_TYPE_P zero initializers.
2020-12-23c++: Fix constexpr array ICE [PR98332]Jason Merrill2-2/+7
The element initializer was non-constant, so its CONSTRUCTOR element ended up NULL, so unshare_constructor crashed trying to look at it. This patch fixes this in two places: First, by returning when we see a non-constant initializer; second, by not crashing on NULL. gcc/cp/ChangeLog: PR c++/98332 * constexpr.c (unshare_constructor): Check for NULL. (cxx_eval_vec_init_1): Always exit early if non-constant. gcc/testsuite/ChangeLog: PR c++/98332 * g++.dg/cpp0x/constexpr-overflow3.C: New test.
2020-12-23Darwin : Adjust handling of MACOSX_DEPLOYMENT_TARGET for macOS 11.Iain Sandoe1-7/+16
The shift to macOS version 11 also means that '11' without any following '.x' is accepted as a valid version number. This adjusts the validation code to accept this and map it to 11.0.0 which matches what the clang toolchain appears to do. gcc/ChangeLog: * config/darwin-driver.c (validate_macosx_version_min): Allow MACOSX_DEPLOYMENT_TARGET=11. (darwin_default_min_version): Adjust warning spelling to avoid an apostrophe.
2020-12-23compiler: remove references to slicecopy and slicestringcopyIan Lance Taylor3-11/+1
The only calls to the runtime functions were removed in CL 170005. The slicestringcopy function will be removed in the Go 1.16beta1 release. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279932
2020-12-23d: Force TYPE_MODE of classes and non-POD structs as BLKmodeIain Buclaw2-2/+31
Without this being forced, the optimizer could still make decisions that require objects of the non-POD types to need a temporary, which would result in an ICE during the expand to RTL passes. gcc/d/ChangeLog: PR d/98427 * types.cc (TypeVisitor::visit (TypeStruct *)): Set TYPE_MODE of all non-trivial types as BLKmode. (TypeVisitor::visit (TypeClass *)): Likewise. gcc/testsuite/ChangeLog: PR d/98427 * gdc.dg/pr98427.d: New test.
2020-12-23i386: Fix __builtin_trunc with FE_DOWNWARD rounding direction [PR96793]Uros Bizjak2-13/+42
x86_expand_truncdf_32 expander uses x86_sse_copysign_to_positive, which is unable to change the sign from - to +. When FE_DOWNWARD rounding direction is in effect, the expanded sequence that involves subtraction can trigger x - x = -0.0 special rule. x86_sse_copysign_to_positive fails to change the sign of the intermediate value, assumed to always be positive, back to positive. The patch adds one extra fabs that strips the sign from the intermediate value when flag_rounding_math is in effect. 2020-12-23 Uroš Bizjak <ubizjak@gmail.com> gcc/ PR target/96793 * config/i386/i386-expand.c (ix86_expand_truncdf_32): Remove the sign of the intermediate value for flag_rounding_math. gcc/testsuite/ PR target/96793 * gcc.target/i386/pr96793-1.c: New test.
2020-12-23Add offset to allocatable shared coarrays.Thomas Koenig6-21/+93
This adds the calculation of the offset for allocatable coarrays, which was missing before, and fixes the resulting fallout for ALLOCATED. Additionally, it prepares the way for STAT and ERRMSG for ALLOCATE of coarrays, but that still needs changes to gfc_trans_allocate. gcc/fortran/ChangeLog: * trans-array.c (gfc_conv_array_ref): If se->address_only is set, throw away all the offset calculation. (gfc_allocate_shared_coarray): Add arguments stat, errmsg and errlen to call to allocate. Calculate offset for allocatable coarrays. (gfc_array_allocate): Adjust call to gfc_allocate_shared_coarray. * trans-array.h (gfc_allocate_shared_coarray): Change prototype of cas_coarray_alloc. * trans-decl.c (gfc_build_builtin_function_decls): Adjust cas_coarray_alloc to changed prototypes. (gfc_trans_shared_coarray): Adjust call to gfc_allocate_shared_coarray. * trans-intrinsic.c (gfc_conv_allocated): Set address_only on se. * trans.h: Add flag address_only to gfc_se. libgfortran/ChangeLog: * caf_shared/wrapper.c (cas_coarray_alloc): Add status, error and errmsg arguments and their checking.
2020-12-23Daily bump.GCC Administrator5-1/+956
2020-12-22compiler: initialize saw_send_stmt localsIan Lance Taylor2-3/+3
The C++ compiler wasn't warning because we take their address. Fixes golang/go#43252 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279752
2020-12-22runtime: eliminate scase.kind fieldIan Lance Taylor5-63/+129
This is the gofrontend version of https://golang.org/cl/245125. Original CL description: Currently, we include a "kind" field on scase to distinguish the three kinds of cases in a select statement: sends, receives, and defaults. This commit removes by kind field by instead arranging for the compiler to always place sends before receives, and to provide their counts separately. It also passes an explicit "block bool" parameter to avoid needing to include a default case in the array. It's safe to shuffle cases like this because the runtime will randomize the order they're polled in anyway. For golang/go#40410. This is being brought over to gofrontend as a step toward upgrading to Go1.16beta1. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279735
2020-12-22testsuite: C++ module testsNathan Sidwell833-0/+10400
This adds most of the modules tests. I do not include the tests that excercise system & C++ library header files. Those will be later. gcc/testsuite/ * g++.dg/modules/access-1_a.C: New.: New. * g++.dg/modules/access-1_b.C: New. * g++.dg/modules/access-1_c.C: New. * g++.dg/modules/adhoc-1_a.C: New. * g++.dg/modules/adhoc-1_b.C: New. * g++.dg/modules/adl-1_a.C: New. * g++.dg/modules/adl-1_b.C: New. * g++.dg/modules/adl-1_c.C: New. * g++.dg/modules/adl-2_a.C: New. * g++.dg/modules/adl-2_b.C: New. * g++.dg/modules/adl-2_c.C: New. * g++.dg/modules/adl-3_a.C: New. * g++.dg/modules/adl-3_b.C: New. * g++.dg/modules/adl-3_c.C: New. * g++.dg/modules/adl-4_a.C: New. * g++.dg/modules/adl-4_b.C: New. * g++.dg/modules/adl-5_a.c: New. * g++.dg/modules/adl-5_b.C: New. * g++.dg/modules/adl-5_c.C: New. * g++.dg/modules/adl-5_d.C: New. * g++.dg/modules/alias-1_a.H: New. * g++.dg/modules/alias-1_b.C: New. * g++.dg/modules/alias-1_c.C: New. * g++.dg/modules/alias-1_d.C: New. * g++.dg/modules/alias-1_e.C: New. * g++.dg/modules/alias-1_f.C: New. * g++.dg/modules/alias-2_a.H: New. * g++.dg/modules/alias-2_b.C: New. * g++.dg/modules/align-type-1_a.C: New. * g++.dg/modules/align-type-1_b.C: New. * g++.dg/modules/ambig-1_a.C: New. * g++.dg/modules/ambig-1_b.C: New. * g++.dg/modules/anon-1_a.C: New. * g++.dg/modules/anon-1_b.C: New. * g++.dg/modules/anon-1_c.C: New. * g++.dg/modules/anon-2.h: New. * g++.dg/modules/anon-2_a.H: New. * g++.dg/modules/anon-2_b.C: New. * g++.dg/modules/atom-decl-0_a.C: New. * g++.dg/modules/atom-decl-0_b.C: New. * g++.dg/modules/atom-decl-0_c.C: New. * g++.dg/modules/atom-decl-2.C: New. * g++.dg/modules/atom-decl-3.C: New. * g++.dg/modules/atom-pragma-1.C: New. * g++.dg/modules/atom-pragma-3.C: New. * g++.dg/modules/atom-preamble-1.C: New. * g++.dg/modules/atom-preamble-2_a.C: New. * g++.dg/modules/atom-preamble-2_b.C: New. * g++.dg/modules/atom-preamble-2_c.C: New. * g++.dg/modules/atom-preamble-2_d.C: New. * g++.dg/modules/atom-preamble-2_e.C: New. * g++.dg/modules/atom-preamble-2_f.C: New. * g++.dg/modules/atom-preamble-3.C: New. * g++.dg/modules/atom-preamble-4.C: New. * g++.dg/modules/auto-1.h: New. * g++.dg/modules/auto-1_a.H: New. * g++.dg/modules/auto-1_b.C: New. * g++.dg/modules/auto-2.h: New. * g++.dg/modules/auto-2_a.H: New. * g++.dg/modules/auto-2_b.C: New. * g++.dg/modules/bad-mapper-1.C: New. * g++.dg/modules/bad-mapper-2.C: New. * g++.dg/modules/bad-mapper-3.C: New. * g++.dg/modules/ben-1.map: New. * g++.dg/modules/ben-1_a.C: New. * g++.dg/modules/ben-1_b.C: New. * g++.dg/modules/bfield-1_a.C: New. * g++.dg/modules/bfield-1_b.C: New. * g++.dg/modules/bfield-2_a.C: New. * g++.dg/modules/bfield-2_b.C: New. * g++.dg/modules/bool-1.h: New. * g++.dg/modules/bool-1_a.H: New. * g++.dg/modules/bool-1_b.H: New. * g++.dg/modules/bool-1_c.C: New. * g++.dg/modules/bug-1_a.C: New. * g++.dg/modules/bug-1_b.C: New. * g++.dg/modules/builtin-1_a.C: New. * g++.dg/modules/builtin-1_b.C: New. * g++.dg/modules/builtin-2.C: New. * g++.dg/modules/builtin-3_b.C: New. * g++.dg/modules/builtin-4_a.H: New. * g++.dg/modules/builtin-4_b.C: New. * g++.dg/modules/builtin-5_a.H: New. * g++.dg/modules/builtin-5_b.C: New. * g++.dg/modules/builtin-6_a.H: New. * g++.dg/modules/builtin-6_b.C: New. * g++.dg/modules/builtin-7_a.H: New. * g++.dg/modules/builtin-7_b.C: New. * g++.dg/modules/by-name-1.C: New. * g++.dg/modules/cexpr-1_a.C: New. * g++.dg/modules/cexpr-1_b.C: New. * g++.dg/modules/cexpr-2_a.C: New. * g++.dg/modules/cexpr-2_b.C: New. * g++.dg/modules/circ-1_a.C: New. * g++.dg/modules/circ-1_b.C: New. * g++.dg/modules/circ-1_c.C: New. * g++.dg/modules/circ-1_d.C: New. * g++.dg/modules/class-1_a.C: New. * g++.dg/modules/class-1_b.C: New. * g++.dg/modules/class-1_c.C: New. * g++.dg/modules/class-2_a.C: New. * g++.dg/modules/class-2_b.C: New. * g++.dg/modules/class-3_a.C: New. * g++.dg/modules/class-3_b.C: New. * g++.dg/modules/class-3_c.C: New. * g++.dg/modules/class-3_d.C: New. * g++.dg/modules/class-4_a.C: New. * g++.dg/modules/class-4_b.C: New. * g++.dg/modules/class-5_a.C: New. * g++.dg/modules/class-5_b.C: New. * g++.dg/modules/class-5_c.C: New. * g++.dg/modules/class-6_a.C: New. * g++.dg/modules/class-6_b.C: New. * g++.dg/modules/class-6_c.C: New. * g++.dg/modules/class-7_a.C: New. * g++.dg/modules/class-7_b.C: New. * g++.dg/modules/class-7_c.C: New. * g++.dg/modules/class-8_a.C: New. * g++.dg/modules/class-8_b.C: New. * g++.dg/modules/clone-1_a.C: New. * g++.dg/modules/clone-1_b.C: New. * g++.dg/modules/concept-1_a.C: New. * g++.dg/modules/concept-1_b.C: New. * g++.dg/modules/concept-2_a.C: New. * g++.dg/modules/concept-2_b.C: New. * g++.dg/modules/concept-3_a.C: New. * g++.dg/modules/concept-3_b.C: New. * g++.dg/modules/concept-4.H: New. * g++.dg/modules/concept-5.h: New. * g++.dg/modules/concept-5_a.H: New. * g++.dg/modules/concept-5_b.C: New. * g++.dg/modules/concept-6.h: New. * g++.dg/modules/concept-6_a.H: New. * g++.dg/modules/concept-6_b.C: New. * g++.dg/modules/constrained-partial-1_a.C: New. * g++.dg/modules/constrained-partial-1_b.C: New. * g++.dg/modules/convop-1_a.C: New. * g++.dg/modules/convop-1_b.C: New. * g++.dg/modules/cpp-1.C: New. * g++.dg/modules/cpp-2_a.H: New. * g++.dg/modules/cpp-2_b.H: New. * g++.dg/modules/cpp-2_c.C: New. * g++.dg/modules/cpp-3.C: New. * g++.dg/modules/cpp-4.C: New. * g++.dg/modules/cpp-4.h: New. * g++.dg/modules/cpp-5_a.H: New. * g++.dg/modules/cpp-5_b.C: New. * g++.dg/modules/cpp-5_c.C: New. * g++.dg/modules/cpp-6_a.H: New. * g++.dg/modules/cpp-6_b.H: New. * g++.dg/modules/cpp-6_c.C: New. * g++.dg/modules/debug-1_a.C: New. * g++.dg/modules/debug-1_b.C: New. * g++.dg/modules/decomp-1_a.C: New. * g++.dg/modules/decomp-1_b.C: New. * g++.dg/modules/deferred-1.h: New. * g++.dg/modules/deferred-1_a.H: New. * g++.dg/modules/deferred-1_b.C: New. * g++.dg/modules/dep-1_a.C: New. * g++.dg/modules/dep-1_b.C: New. * g++.dg/modules/dep-2.C: New. * g++.dg/modules/dep-3.C: New. * g++.dg/modules/dir-only-1.C: New. * g++.dg/modules/dir-only-2_a.H: New. * g++.dg/modules/dir-only-2_b.C: New. * g++.dg/modules/dir-only-3.C: New. * g++.dg/modules/dir-only-4.C: New. * g++.dg/modules/dir-recovery.C: New. * g++.dg/modules/enum-1_a.C: New. * g++.dg/modules/enum-1_b.C: New. * g++.dg/modules/enum-2_a.C: New. * g++.dg/modules/enum-2_b.C: New. * g++.dg/modules/enum-3_a.C: New. * g++.dg/modules/enum-3_b.C: New. * g++.dg/modules/enum-4_a.C: New. * g++.dg/modules/enum-4_b.C: New. * g++.dg/modules/enum-5_a.H: New. * g++.dg/modules/enum-5_b.C: New. * g++.dg/modules/enum-6_a.H: New. * g++.dg/modules/enum-6_b.C: New. * g++.dg/modules/enum-7.C: New. * g++.dg/modules/enum-8_a.H: New. * g++.dg/modules/enum-8_b.H: New. * g++.dg/modules/enum-8_c.C: New. * g++.dg/modules/enum-8_d.C: New. * g++.dg/modules/enum-bad-1_a.H: New. * g++.dg/modules/enum-bad-1_b.C: New. * g++.dg/modules/err-1_a.C: New. * g++.dg/modules/err-1_b.C: New. * g++.dg/modules/err-1_c.C: New. * g++.dg/modules/err-1_d.C: New. * g++.dg/modules/except-1.C: New. * g++.dg/modules/except-2.h: New. * g++.dg/modules/except-2_a.H: New. * g++.dg/modules/except-2_b.C: New. * g++.dg/modules/except-3.h: New. * g++.dg/modules/except-3_a.H: New. * g++.dg/modules/except-3_b.C: New. * g++.dg/modules/exp-xlate-1_a.H: New. * g++.dg/modules/exp-xlate-1_b.C: New. * g++.dg/modules/export-1.C: New. * g++.dg/modules/extern-tpl-1_a.H: New. * g++.dg/modules/extern-tpl-1_b.C: New. * g++.dg/modules/extern-tpl-1_c.C: New. * g++.dg/modules/extern-tpl-2_a.H: New. * g++.dg/modules/extern-tpl-2_b.H: New. * g++.dg/modules/extern-tpl-2_c.C: New. * g++.dg/modules/extern-tpl-2_d.C: New. * g++.dg/modules/flag-1_a.C: New. * g++.dg/modules/flag-1_b.C: New. * g++.dg/modules/fn-inline-1_a.C: New. * g++.dg/modules/fn-inline-1_b.C: New. * g++.dg/modules/fn-inline-1_c.C: New. * g++.dg/modules/freeze-1_a.C: New. * g++.dg/modules/freeze-1_b.C: New. * g++.dg/modules/freeze-1_c.C: New. * g++.dg/modules/freeze-1_d.C: New. * g++.dg/modules/friend-1_a.C: New. * g++.dg/modules/friend-1_b.C: New. * g++.dg/modules/friend-1_c.C: New. * g++.dg/modules/friend-2_a.C: New. * g++.dg/modules/friend-2_b.C: New. * g++.dg/modules/friend-3.C: New. * g++.dg/modules/friend-4_a.C: New. * g++.dg/modules/friend-4_b.C: New. * g++.dg/modules/friend-5_a.C: New. * g++.dg/modules/friend-5_b.C: New. * g++.dg/modules/gc-1_a.C: New. * g++.dg/modules/gc-1_b.C: New. * g++.dg/modules/gc-1_c.C: New. * g++.dg/modules/gc-1_d.C: New. * g++.dg/modules/gc-2.map: New. * g++.dg/modules/gc-2_a.C: New. * g++.dg/modules/global-1_a.C: New. * g++.dg/modules/global-1_b.C: New. * g++.dg/modules/gmf-1_a.C: New. * g++.dg/modules/gmf-1_b.C: New. * g++.dg/modules/gmf-2_a.H: New. * g++.dg/modules/gmf-2_b.C: New. * g++.dg/modules/gmf-2_c.C: New. * g++.dg/modules/gmf-2_d.C: New. * g++.dg/modules/gvar_a.C: New. * g++.dg/modules/gvar_b.C: New. * g++.dg/modules/hdr-1_a.H: New. * g++.dg/modules/hdr-1_b.H: New. * g++.dg/modules/hdr-1_c.C: New. * g++.dg/modules/hdr-init-1_a.H: New. * g++.dg/modules/hdr-init-1_b.H: New. * g++.dg/modules/hdr-init-1_c.C: New. * g++.dg/modules/horcrux-1_a.C: New. * g++.dg/modules/horcrux-1_b.C: New. * g++.dg/modules/ice-1.C: New. * g++.dg/modules/imp-inline-1_a.C: New. * g++.dg/modules/imp-inline-1_b.C: New. * g++.dg/modules/imp-member-1_a.C: New. * g++.dg/modules/imp-member-1_b.C: New. * g++.dg/modules/imp-member-1_c.C: New. * g++.dg/modules/imp-member-1_d.C: New. * g++.dg/modules/imp-member-1_e.C: New. * g++.dg/modules/imp-member-2_a.C: New. * g++.dg/modules/imp-member-2_b.C: New. * g++.dg/modules/imp-member-2_c.C: New. * g++.dg/modules/imp-member-3.H: New. * g++.dg/modules/import-1_a.C: New. * g++.dg/modules/import-1_b.C: New. * g++.dg/modules/import-1_c.C: New. * g++.dg/modules/import-1_d.C: New. * g++.dg/modules/import-1_e.C: New. * g++.dg/modules/import-1_f.C: New. * g++.dg/modules/import-1_g.C: New. * g++.dg/modules/import-2.C: New. * g++.dg/modules/inc-xlate-1.map: New. * g++.dg/modules/inc-xlate-1_a.H: New. * g++.dg/modules/inc-xlate-1_b.H: New. * g++.dg/modules/inc-xlate-1_c.C: New. * g++.dg/modules/inc-xlate-1_e.C: New. * g++.dg/modules/indirect-1_a.C: New. * g++.dg/modules/indirect-1_b.C: New. * g++.dg/modules/indirect-1_c.C: New. * g++.dg/modules/indirect-2_a.C: New. * g++.dg/modules/indirect-2_b.C: New. * g++.dg/modules/indirect-2_c.C: New. * g++.dg/modules/indirect-3_a.C: New. * g++.dg/modules/indirect-3_b.C: New. * g++.dg/modules/indirect-3_c.C: New. * g++.dg/modules/indirect-4_a.C: New. * g++.dg/modules/indirect-4_b.C: New. * g++.dg/modules/indirect-4_c.C: New. * g++.dg/modules/inext-1.H: New. * g++.dg/modules/inh-tmpl-ctor-1.h: New. * g++.dg/modules/inh-tmpl-ctor-1_a.H: New. * g++.dg/modules/inh-tmpl-ctor-1_b.C: New. * g++.dg/modules/init-1_a.C: New. * g++.dg/modules/init-1_b.C: New. * g++.dg/modules/init-2_a.C: New. * g++.dg/modules/init-2_b.C: New. * g++.dg/modules/init-2_c.C: New. * g++.dg/modules/inst-1_a.C: New. * g++.dg/modules/inst-1_b.C: New. * g++.dg/modules/inst-2_a.C: New. * g++.dg/modules/inst-2_b.C: New. * g++.dg/modules/inst-3_a.C: New. * g++.dg/modules/inst-3_b.C: New. * g++.dg/modules/inst-4_a.C: New. * g++.dg/modules/inst-4_b.C: New. * g++.dg/modules/inst-5_a.H: New. * g++.dg/modules/inst-5_b.C: New. * g++.dg/modules/internal-1.C: New. * g++.dg/modules/internal-2_a.H: New. * g++.dg/modules/internal-2_b.H: New. * g++.dg/modules/internal-2_c.C: New. * g++.dg/modules/isalnum.H: New. * g++.dg/modules/keyword-1_a.C: New. * g++.dg/modules/keyword-1_b.C: New. * g++.dg/modules/lambda-1_a.C: New. * g++.dg/modules/lambda-1_b.C: New. * g++.dg/modules/lambda-2.h: New. * g++.dg/modules/lambda-2_a.H: New. * g++.dg/modules/lambda-2_b.C: New. * g++.dg/modules/lambda-2_c.C: New. * g++.dg/modules/lambda-3.h: New. * g++.dg/modules/lambda-3_a.H: New. * g++.dg/modules/lambda-3_b.C: New. * g++.dg/modules/lambda-3_c.C: New. * g++.dg/modules/lambda-4.h: New. * g++.dg/modules/lambda-4_a.H: New. * g++.dg/modules/lambda-4_b.C: New. * g++.dg/modules/lang-1_a.H: New. * g++.dg/modules/lang-1_b.C: New. * g++.dg/modules/lang-1_c.C: New. * g++.dg/modules/lang-2_a.C: New. * g++.dg/modules/lang-2_b.C: New. * g++.dg/modules/late-ret-1.H: New. * g++.dg/modules/late-ret-2_a.H: New. * g++.dg/modules/late-ret-2_b.H: New. * g++.dg/modules/late-ret-2_c.C: New. * g++.dg/modules/late-ret-3_a.H: New. * g++.dg/modules/late-ret-3_b.H: New. * g++.dg/modules/late-ret-3_c.C: New. * g++.dg/modules/lazy-1_a.C: New. * g++.dg/modules/lazy-1_b.C: New. * g++.dg/modules/leg-merge-1_a.H: New. * g++.dg/modules/leg-merge-1_b.H: New. * g++.dg/modules/leg-merge-1_c.C: New. * g++.dg/modules/leg-merge-1_d.C: New. * g++.dg/modules/leg-merge-2_a.H: New. * g++.dg/modules/leg-merge-2_b.H: New. * g++.dg/modules/leg-merge-2_c.C: New. * g++.dg/modules/leg-merge-3_a.H: New. * g++.dg/modules/leg-merge-3_b.H: New. * g++.dg/modules/leg-merge-3_c.C: New. * g++.dg/modules/leg-merge-3_d.C: New. * g++.dg/modules/leg-merge-4_a.H: New. * g++.dg/modules/leg-merge-4_b.H: New. * g++.dg/modules/leg-merge-4_c.C: New. * g++.dg/modules/leg-merge-5_a.H: New. * g++.dg/modules/leg-merge-5_b.H: New. * g++.dg/modules/leg-merge-5_c.C: New. * g++.dg/modules/leg-merge-6_a.H: New. * g++.dg/modules/leg-merge-6_b.H: New. * g++.dg/modules/leg-merge-6_c.C: New. * g++.dg/modules/leg-merge-7_a.H: New. * g++.dg/modules/leg-merge-7_b.H: New. * g++.dg/modules/leg-merge-7_c.C: New. * g++.dg/modules/leg-merge-8_a.H: New. * g++.dg/modules/leg-merge-8_b.H: New. * g++.dg/modules/leg-merge-8_c.C: New. * g++.dg/modules/leg-merge-9_a.H: New. * g++.dg/modules/leg-merge-9_b.H: New. * g++.dg/modules/leg-merge-9_c.C: New. * g++.dg/modules/legacy-1_a.H: New. * g++.dg/modules/legacy-1_b.C: New. * g++.dg/modules/legacy-1_c.C: New. * g++.dg/modules/legacy-2.h: New. * g++.dg/modules/legacy-2.map: New. * g++.dg/modules/legacy-2_a.H: New. * g++.dg/modules/legacy-2_b.H: New. * g++.dg/modules/legacy-2_c.C: New. * g++.dg/modules/legacy-2_d.C: New. * g++.dg/modules/legacy-3.h: New. * g++.dg/modules/legacy-3_a.H: New. * g++.dg/modules/legacy-3_b.H: New. * g++.dg/modules/legacy-3_c.H: New. * g++.dg/modules/legacy-6.map: New. * g++.dg/modules/legacy-6_a.H: New. * g++.dg/modules/legacy-6_b.H: New. * g++.dg/modules/legacy-6_c.C: New. * g++.dg/modules/legacy-6_d.C: New. * g++.dg/modules/legacy-6_e.C: New. * g++.dg/modules/legacy-6_f.C: New. * g++.dg/modules/legacy-7_a.H: New. * g++.dg/modules/legacy-7_b.C: New. * g++.dg/modules/legacy-8_a.H: New. * g++.dg/modules/legacy-8_b.H: New. * g++.dg/modules/legacy-8_c.C: New. * g++.dg/modules/legacy-8_d.C: New. * g++.dg/modules/legacy-8_e.C: New. * g++.dg/modules/libfn-1_a.C: New. * g++.dg/modules/libfn-1_b.C: New. * g++.dg/modules/literals-1_a.C: New. * g++.dg/modules/literals-1_b.C: New. * g++.dg/modules/loc-1_a.C: New. * g++.dg/modules/loc-1_b.C: New. * g++.dg/modules/loc-1_c.C: New. * g++.dg/modules/loc-2_a.C: New. * g++.dg/modules/loc-2_b.C: New. * g++.dg/modules/loc-2_c.C: New. * g++.dg/modules/loc-2_d.C: New. * g++.dg/modules/loc-2_e.C: New. * g++.dg/modules/loc-2_f.C: New. * g++.dg/modules/loc-wrapper-1.h: New. * g++.dg/modules/loc-wrapper-1_a.H: New. * g++.dg/modules/loc-wrapper-1_b.C: New. * g++.dg/modules/local-1_a.C: New. * g++.dg/modules/local-1_b.C: New. * g++.dg/modules/local-extern-1.C: New. * g++.dg/modules/local-extern-2.H: New. * g++.dg/modules/local-struct-1_a.C: New. * g++.dg/modules/local-struct-1_b.C: New. * g++.dg/modules/macloc-1_a.C: New. * g++.dg/modules/macloc-1_b.C: New. * g++.dg/modules/macloc-1_c.C: New. * g++.dg/modules/macloc-1_d.C: New. * g++.dg/modules/macloc-2_a.H: New. * g++.dg/modules/macloc-2_b.C: New. * g++.dg/modules/macro-1_a.H: New. * g++.dg/modules/macro-1_b.C: New. * g++.dg/modules/macro-2_a.H: New. * g++.dg/modules/macro-2_b.H: New. * g++.dg/modules/macro-2_c.H: New. * g++.dg/modules/macro-2_d.C: New. * g++.dg/modules/macro-3_a.H: New. * g++.dg/modules/macro-3_b.H: New. * g++.dg/modules/macro-3_c.C: New. * g++.dg/modules/macro-4_a.H: New. * g++.dg/modules/macro-4_b.H: New. * g++.dg/modules/macro-4_c.H: New. * g++.dg/modules/macro-4_d.C: New. * g++.dg/modules/macro-4_e.C: New. * g++.dg/modules/macro-4_f.C: New. * g++.dg/modules/macro-4_g.C: New. * g++.dg/modules/macro-5_a.H: New. * g++.dg/modules/macro-5_b.H: New. * g++.dg/modules/macro-5_c.C: New. * g++.dg/modules/macro-6_a.H: New. * g++.dg/modules/macro-6_b.C: New. * g++.dg/modules/macro-6_c.C: New. * g++.dg/modules/macro-7_a.C: New. * g++.dg/modules/macro-7_b.C: New. * g++.dg/modules/macro-7_c.C: New. * g++.dg/modules/map-1.map: New. * g++.dg/modules/map-1_a.C: New. * g++.dg/modules/map-1_b.C: New. * g++.dg/modules/map-1_b.map: New. * g++.dg/modules/map-2.C: New. * g++.dg/modules/map-2.map: New. * g++.dg/modules/member-def-1_a.C: New. * g++.dg/modules/member-def-1_b.C: New. * g++.dg/modules/member-def-1_c.C: New. * g++.dg/modules/member-def-1_d.C: New. * g++.dg/modules/member-def-2_a.C: New. * g++.dg/modules/member-def-2_b.C: New. * g++.dg/modules/member-def-2_c.C: New. * g++.dg/modules/member-def-2_d.C: New. * g++.dg/modules/memref-1_a.C: New. * g++.dg/modules/memref-1_b.C: New. * g++.dg/modules/merge-10.h: New. * g++.dg/modules/merge-10_a.H: New. * g++.dg/modules/merge-10_b.C: New. * g++.dg/modules/merge-11.h: New. * g++.dg/modules/merge-11_a.H: New. * g++.dg/modules/merge-11_b.C: New. * g++.dg/modules/merge-12.h: New. * g++.dg/modules/merge-12_a.H: New. * g++.dg/modules/merge-12_b.C: New. * g++.dg/modules/merge-13.h: New. * g++.dg/modules/merge-13_a.H: New. * g++.dg/modules/merge-13_b.C: New. * g++.dg/modules/merge-14.h: New. * g++.dg/modules/merge-14_a.H: New. * g++.dg/modules/merge-14_b.C: New. * g++.dg/modules/merge-15.h: New. * g++.dg/modules/merge-15_a.H: New. * g++.dg/modules/merge-15_b.C: New. * g++.dg/modules/merge-1_a.C: New. * g++.dg/modules/merge-1_b.C: New. * g++.dg/modules/merge-2_a.H: New. * g++.dg/modules/merge-2_b.C: New. * g++.dg/modules/merge-3_a.H: New. * g++.dg/modules/merge-3_b.C: New. * g++.dg/modules/merge-4.h: New. * g++.dg/modules/merge-4_a.H: New. * g++.dg/modules/merge-4_b.C: New. * g++.dg/modules/merge-5.h: New. * g++.dg/modules/merge-5_a.H: New. * g++.dg/modules/merge-5_b.C: New. * g++.dg/modules/merge-6.h: New. * g++.dg/modules/merge-6_a.H: New. * g++.dg/modules/merge-6_b.C: New. * g++.dg/modules/merge-7.h: New. * g++.dg/modules/merge-7_a.H: New. * g++.dg/modules/merge-7_b.C: New. * g++.dg/modules/merge-8.h: New. * g++.dg/modules/merge-8_a.H: New. * g++.dg/modules/merge-8_b.C: New. * g++.dg/modules/merge-9.h: New. * g++.dg/modules/merge-9_a.H: New. * g++.dg/modules/merge-9_b.C: New. * g++.dg/modules/mod-exp-1_a.C: New. * g++.dg/modules/mod-exp-1_b.C: New. * g++.dg/modules/mod-imp-1_a.C: New. * g++.dg/modules/mod-imp-1_b.C: New. * g++.dg/modules/mod-imp-1_c.C: New. * g++.dg/modules/mod-imp-1_d.C: New. * g++.dg/modules/mod-impl-1_a.C: New. * g++.dg/modules/mod-impl-1_b.C: New. * g++.dg/modules/mod-impl-1_c.C: New. * g++.dg/modules/mod-impl-1_d.C: New. * g++.dg/modules/mod-indirect-1_a.C: New. * g++.dg/modules/mod-indirect-1_b.C: New. * g++.dg/modules/mod-indirect-1_c.C: New. * g++.dg/modules/mod-indirect-1_d.C: New. * g++.dg/modules/mod-indirect-1_e.C: New. * g++.dg/modules/mod-stamp-1_a.C: New. * g++.dg/modules/mod-stamp-1_b.C: New. * g++.dg/modules/mod-stamp-1_c.C: New. * g++.dg/modules/mod-stamp-1_d.C: New. * g++.dg/modules/mod-sym-1.C: New. * g++.dg/modules/mod-sym-2.C: New. * g++.dg/modules/mod-sym-3.C: New. * g++.dg/modules/mod-tpl-1_a.C: New. * g++.dg/modules/mod-tpl-1_b.C: New. * g++.dg/modules/mod-tpl-2_a.C: New. * g++.dg/modules/mod-tpl-2_b.C: New. * g++.dg/modules/mutual-friend.ii: New. * g++.dg/modules/namespace-1_a.C: New. * g++.dg/modules/namespace-1_b.C: New. * g++.dg/modules/namespace-1_c.C: New. * g++.dg/modules/namespace-2_a.C: New. * g++.dg/modules/namespace-2_b.C: New. * g++.dg/modules/namespace-3_a.C: New. * g++.dg/modules/namespace-3_b.C: New. * g++.dg/modules/namespace-4_a.C: New. * g++.dg/modules/namespace-4_b.C: New. * g++.dg/modules/namespace-4_c.C: New. * g++.dg/modules/nest-1_a.C: New. * g++.dg/modules/nest-1_b.C: New. * g++.dg/modules/nest-1_c.C: New. * g++.dg/modules/nested-1_a.C: New. * g++.dg/modules/nested-1_b.C: New. * g++.dg/modules/nested-1_c.C: New. * g++.dg/modules/nested-2_a.C: New. * g++.dg/modules/nested-2_b.C: New. * g++.dg/modules/nested-constr-1.h: New. * g++.dg/modules/nested-constr-1_a.H: New. * g++.dg/modules/nested-constr-1_b.C: New. * g++.dg/modules/nested-constr-2_a.C: New. * g++.dg/modules/nested-constr-2_b.C: New. * g++.dg/modules/nested-constr-2_c.C: New. * g++.dg/modules/nodes-1_a.C: New. * g++.dg/modules/nodes-1_b.C: New. * g++.dg/modules/noexcept-1.h: New. * g++.dg/modules/noexcept-1_a.H: New. * g++.dg/modules/noexcept-1_b.C: New. * g++.dg/modules/ns-alias-1_a.C: New. * g++.dg/modules/ns-alias-1_b.C: New. * g++.dg/modules/ns-alias-1_c.C: New. * g++.dg/modules/ns-dir-1_a.C: New. * g++.dg/modules/ns-dir-1_b.C: New. * g++.dg/modules/ns-dup-1_a.C: New. * g++.dg/modules/ns-dup-1_b.C: New. * g++.dg/modules/ns-imp-1_a.C: New. * g++.dg/modules/ns-imp-1_b.C: New. * g++.dg/modules/ns-imp-1_c.C: New. * g++.dg/modules/ns-part-1_a.C: New. * g++.dg/modules/ns-part-1_b.C: New. * g++.dg/modules/ns-part-1_c.C: New. * g++.dg/modules/nsdmi-1_a.C: New. * g++.dg/modules/nsdmi-1_b.C: New. * g++.dg/modules/nsdmi-2.C: New. * g++.dg/modules/omp-1_a.C: New. * g++.dg/modules/omp-1_b.C: New. * g++.dg/modules/omp-1_c.C: New. * g++.dg/modules/omp-2_a.C: New. * g++.dg/modules/omp-2_b.C: New. * g++.dg/modules/only-1.C: New. * g++.dg/modules/only-2.C: New. * g++.dg/modules/only-3.C: New. * g++.dg/modules/operator-1_a.C: New. * g++.dg/modules/operator-1_b.C: New. * g++.dg/modules/p0713-1.C: New. * g++.dg/modules/p0713-2.C: New. * g++.dg/modules/p0713-3.C: New. * g++.dg/modules/part-1_a.C: New. * g++.dg/modules/part-1_b.C: New. * g++.dg/modules/part-1_c.C: New. * g++.dg/modules/part-2_a.C: New. * g++.dg/modules/part-2_b.C: New. * g++.dg/modules/part-2_c.C: New. * g++.dg/modules/part-2_d.C: New. * g++.dg/modules/part-2_e.C: New. * g++.dg/modules/part-3_a.C: New. * g++.dg/modules/part-3_b.C: New. * g++.dg/modules/part-3_c.C: New. * g++.dg/modules/part-3_d.C: New. * g++.dg/modules/part-4_a.C: New. * g++.dg/modules/part-4_b.C: New. * g++.dg/modules/part-4_c.C: New. * g++.dg/modules/part-6_a.C: New. * g++.dg/modules/part-6_b.C: New. * g++.dg/modules/part-6_c.C: New. * g++.dg/modules/part-6_d.C: New. * g++.dg/modules/part-6_e.C: New. * g++.dg/modules/part-7_a.C: New. * g++.dg/modules/part-7_b.C: New. * g++.dg/modules/part-7_c.C: New. * g++.dg/modules/part-hdr-1_a.H: New. * g++.dg/modules/part-hdr-1_b.C: New. * g++.dg/modules/part-hdr-1_c.C: New. * g++.dg/modules/part-mac-1_a.H: New. * g++.dg/modules/part-mac-1_b.C: New. * g++.dg/modules/part-mac-1_c.C: New. * g++.dg/modules/partial-1.h: New. * g++.dg/modules/partial-1_a.H: New. * g++.dg/modules/partial-1_b.C: New. * g++.dg/modules/pmf-1.h: New. * g++.dg/modules/pmf-1_a.H: New. * g++.dg/modules/pmf-1_b.C: New. * g++.dg/modules/pmf-2.h: New. * g++.dg/modules/pmf-2_a.H: New. * g++.dg/modules/pmf-2_b.C: New. * g++.dg/modules/pmp-1_a.C: New. * g++.dg/modules/pmp-1_b.C: New. * g++.dg/modules/pmp-2.C: New. * g++.dg/modules/pmp-3.C: New. * g++.dg/modules/pragma-1_a.H: New. * g++.dg/modules/pragma-1_b.C: New. * g++.dg/modules/predef-1.C: New. * g++.dg/modules/predef-1.h: New. * g++.dg/modules/predef-2.h: New. * g++.dg/modules/predef-2_a.C: New. * g++.dg/modules/predef-2_b.C: New. * g++.dg/modules/preproc-1.C: New. * g++.dg/modules/preproc-2_a.H: New. * g++.dg/modules/preproc-2_b.C: New. * g++.dg/modules/printf-1_a.H: New. * g++.dg/modules/printf-1_b.C: New. * g++.dg/modules/reparent-1_a.C: New. * g++.dg/modules/reparent-1_b.C: New. * g++.dg/modules/reparent-1_c.C: New. * g++.dg/modules/scc-1.C: New. * g++.dg/modules/scc-2.C: New. * g++.dg/modules/shadow-1_a.C: New. * g++.dg/modules/shadow-1_b.C: New. * g++.dg/modules/stat-tpl-1_a.H: New. * g++.dg/modules/static-1_a.C: New. * g++.dg/modules/static-1_b.C: New. * g++.dg/modules/static-1_c.C: New. * g++.dg/modules/std-1_a.C: New. * g++.dg/modules/std-1_b.C: New. * g++.dg/modules/stdns_a.C: New. * g++.dg/modules/stdns_b.C: New. * g++.dg/modules/sv-1.h: New. * g++.dg/modules/sv-1_a.C: New. * g++.dg/modules/sv-1_b.C: New. * g++.dg/modules/sym-subst-1.C: New. * g++.dg/modules/sym-subst-2_a.C: New. * g++.dg/modules/sym-subst-2_b.C: New. * g++.dg/modules/sym-subst-3_a.C: New. * g++.dg/modules/sym-subst-3_b.C: New. * g++.dg/modules/sym-subst-4.C: New. * g++.dg/modules/sym-subst-5.C: New. * g++.dg/modules/sym-subst-6.C: New. * g++.dg/modules/sys/alias-2_a.H: New. * g++.dg/modules/sys/inext-1.H: New. * g++.dg/modules/tdef-1_a.C: New. * g++.dg/modules/tdef-1_b.C: New. * g++.dg/modules/tdef-2_a.C: New. * g++.dg/modules/tdef-2_b.C: New. * g++.dg/modules/tdef-2_c.C: New. * g++.dg/modules/tdef-3_a.C: New. * g++.dg/modules/tdef-3_b.C: New. * g++.dg/modules/tdef-3_c.C: New. * g++.dg/modules/tdef-4_a.C: New. * g++.dg/modules/tdef-4_b.C: New. * g++.dg/modules/tdef-4_c.C: New. * g++.dg/modules/tdef-5_a.C: New. * g++.dg/modules/tdef-5_b.C: New. * g++.dg/modules/tdef-6_a.H: New. * g++.dg/modules/tdef-6_b.C: New. * g++.dg/modules/tdef-7.h: New. * g++.dg/modules/tdef-7_a.H: New. * g++.dg/modules/tdef-7_b.C: New. * g++.dg/modules/tdef-8_a.C: New. * g++.dg/modules/tdef-8_b.C: New. * g++.dg/modules/tdef-inst-1.h: New. * g++.dg/modules/tdef-inst-1_a.C: New. * g++.dg/modules/tdef-inst-1_b.C: New. * g++.dg/modules/thunk-1_a.C: New. * g++.dg/modules/thunk-1_b.C: New. * g++.dg/modules/tmpl-part-req-1.h: New. * g++.dg/modules/tmpl-part-req-1_a.H: New. * g++.dg/modules/tmpl-part-req-1_b.C: New. * g++.dg/modules/tmpl-part-req-2.h: New. * g++.dg/modules/tmpl-part-req-2_a.H: New. * g++.dg/modules/tmpl-part-req-2_b.C: New. * g++.dg/modules/token-1.C: New. * g++.dg/modules/token-2_a.C: New. * g++.dg/modules/token-2_b.C: New. * g++.dg/modules/token-3.C: New. * g++.dg/modules/token-4.C: New. * g++.dg/modules/token-5.C: New. * g++.dg/modules/tpl-alias-1.h: New. * g++.dg/modules/tpl-alias-1_a.H: New. * g++.dg/modules/tpl-alias-1_b.C: New. * g++.dg/modules/tpl-ary-1.h: New. * g++.dg/modules/tpl-ary-1_a.H: New. * g++.dg/modules/tpl-ary-1_b.C: New. * g++.dg/modules/tpl-extern-fn-1_a.H: New. * g++.dg/modules/tpl-extern-fn-1_b.C: New. * g++.dg/modules/tpl-extern-var-1_a.H: New. * g++.dg/modules/tpl-extern-var-1_b.C: New. * g++.dg/modules/tpl-friend-1_a.C: New. * g++.dg/modules/tpl-friend-1_b.C: New. * g++.dg/modules/tpl-friend-2_a.C: New. * g++.dg/modules/tpl-friend-2_b.C: New. * g++.dg/modules/tpl-friend-3_a.C: New. * g++.dg/modules/tpl-friend-3_b.C: New. * g++.dg/modules/tpl-friend-4_a.C: New. * g++.dg/modules/tpl-friend-4_b.C: New. * g++.dg/modules/tpl-friend-5_a.C: New. * g++.dg/modules/tpl-friend-5_b.C: New. * g++.dg/modules/tpl-friend-6_a.C: New. * g++.dg/modules/tpl-friend-6_b.C: New. * g++.dg/modules/tpl-friend-7_a.C: New. * g++.dg/modules/tpl-friend-7_b.C: New. * g++.dg/modules/tpl-friend-merge-1.cc: New. * g++.dg/modules/tpl-friend-merge-1.h: New. * g++.dg/modules/tpl-friend-merge-1_a.H: New. * g++.dg/modules/tpl-friend-merge-1_b.H: New. * g++.dg/modules/tpl-friend-merge-1_c.H: New. * g++.dg/modules/tpl-friend-merge-1_d.C: New. * g++.dg/modules/tpl-friend-merge-1_e.C: New. * g++.dg/modules/tpl-friend-merge-1_f.C: New. * g++.dg/modules/tpl-spec-1_a.C: New. * g++.dg/modules/tpl-spec-1_b.C: New. * g++.dg/modules/tpl-spec-2_a.C: New. * g++.dg/modules/tpl-spec-2_b.C: New. * g++.dg/modules/tpl-spec-2_c.C: New. * g++.dg/modules/tpl-spec-2_d.C: New. * g++.dg/modules/tpl-spec-3_a.C: New. * g++.dg/modules/tpl-spec-3_b.C: New. * g++.dg/modules/tpl-spec-4_a.C: New. * g++.dg/modules/tpl-spec-4_b.C: New. * g++.dg/modules/tpl-spec-5_a.C: New. * g++.dg/modules/tpl-spec-5_b.C: New. * g++.dg/modules/tpl-spec-6_a.C: New. * g++.dg/modules/tpl-spec-6_b.C: New. * g++.dg/modules/tpl-spec-7.C: New. * g++.dg/modules/tpl-tpl-friend-1_a.C: New. * g++.dg/modules/tpl-tpl-friend-1_b.C: New. * g++.dg/modules/tpl-tpl-mem-1_a.C: New. * g++.dg/modules/tpl-tpl-mem-1_b.C: New. * g++.dg/modules/tpl-tpl-merge-1.h: New. * g++.dg/modules/tpl-tpl-merge-1_a.H: New. * g++.dg/modules/tpl-tpl-merge-1_b.C: New. * g++.dg/modules/tpl-tpl-merge-2.h: New. * g++.dg/modules/tpl-tpl-merge-2_a.H: New. * g++.dg/modules/tpl-tpl-merge-2_b.C: New. * g++.dg/modules/tpl-tpl-parm-1_a.H: New. * g++.dg/modules/tpl-tpl-parm-1_b.C: New. * g++.dg/modules/tpl-tpl-parm-2.h: New. * g++.dg/modules/tpl-tpl-parm-2_a.H: New. * g++.dg/modules/tpl-tpl-parm-2_b.C: New. * g++.dg/modules/tplmem-1_a.C: New. * g++.dg/modules/tplmem-1_b.C: New. * g++.dg/modules/tplmem-3_a.C: New. * g++.dg/modules/tplmem-3_b.C: New. * g++.dg/modules/ttp-1_a.C: New. * g++.dg/modules/ttp-1_b.C: New. * g++.dg/modules/ttp-2_a.C: New. * g++.dg/modules/ttp-2_b.C: New. * g++.dg/modules/ttp-3_a.C: New. * g++.dg/modules/ttp-3_b.C: New. * g++.dg/modules/typename-1_a.C: New. * g++.dg/modules/typename-1_b.C: New. * g++.dg/modules/unnamed-1_a.C: New. * g++.dg/modules/unnamed-1_b.C: New. * g++.dg/modules/unnamed-2.C: New. * g++.dg/modules/used-1_a.H: New. * g++.dg/modules/used-1_b.H: New. * g++.dg/modules/used-1_c.C: New. * g++.dg/modules/using-1_a.C: New. * g++.dg/modules/using-1_b.C: New. * g++.dg/modules/using-1_c.C: New. * g++.dg/modules/using-2_a.C: New. * g++.dg/modules/using-2_b.C: New. * g++.dg/modules/using-2_c.C: New. * g++.dg/modules/using-3.C: New. * g++.dg/modules/using-4_a.C: New. * g++.dg/modules/using-4_b.C: New. * g++.dg/modules/using-5_a.C: New. * g++.dg/modules/using-5_b.C: New. * g++.dg/modules/using-6_a.C: New. * g++.dg/modules/using-6_b.C: New. * g++.dg/modules/using-7.C: New. * g++.dg/modules/using-8_a.C: New. * g++.dg/modules/using-8_b.C: New. * g++.dg/modules/using-enum-1_a.H: New. * g++.dg/modules/using-enum-1_b.C: New. * g++.dg/modules/var-1_a.C: New. * g++.dg/modules/var-1_b.C: New. * g++.dg/modules/var-tpl-1_a.C: New. * g++.dg/modules/var-tpl-1_b.C: New. * g++.dg/modules/var-tpl-concept-1.h: New. * g++.dg/modules/var-tpl-concept-1_a.C: New. * g++.dg/modules/var-tpl-concept-1_b.C: New. * g++.dg/modules/virt-1_a.C: New. * g++.dg/modules/virt-1_b.C: New. * g++.dg/modules/virt-2_a.C: New. * g++.dg/modules/virt-2_b.C: New. * g++.dg/modules/virt-2_c.C: New. * g++.dg/modules/vmort-1_a.C: New. * g++.dg/modules/vmort-1_b.C: New. * g++.dg/modules/vmort-2_a.C: New. * g++.dg/modules/vmort-2_b.C: New. * g++.dg/modules/vmort-2_c.C: New. * g++.dg/modules/vtt-1_a.C: New. * g++.dg/modules/vtt-1_b.C: New. * g++.dg/modules/vtt-1_c.C: New. * g++.dg/modules/vtt-2.h: New. * g++.dg/modules/vtt-2_a.H: New. * g++.dg/modules/vtt-2_b.C: New.
2020-12-22c++: Module ICE fixNathan Sidwell1-1/+2
A missing check for decl lang specific has made itself apparent. gcc/cp/ * module.cc (has_definition): Check DECL_LANG_SPECIFIC.
2020-12-22runtime: add "success" field to sudogIan Lance Taylor1-1/+1
This is the gofrontend version of https://golang.org/cl/245019. Original CL description: The current wakeup protocol for channel communications is that the second goroutine sets gp.param to the sudog when a value is successfully communicated over the channel, and to nil when the wakeup is due to closing the channel. Setting nil to indicate channel closure works okay for chansend and chanrecv, because they're only communicating with one channel, so they know it must be the channel that was closed. However, it means selectgo has to re-poll all of the channels to figure out which one was closed. This commit adds a "success" field to sudog, and changes the wakeup protocol to always set gp.param to sg, and to use sg.success to indicate successful communication vs channel closure. While here, this also reorganizes the chansend code slightly so that the sudog is still released to the pool if the send blocks and then is awoken because the channel closed. For golang/go#40410 This is being brought over to gofrontend as a step toward upgrading to Go1.16beta1, setting up for more compiler changes related to select handling. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279734
2020-12-22runtime: omit nil-channel cases from selectgo's ordersIan Lance Taylor1-1/+1
This is the gofrontend version of https://golang.org/cl/245123. Original CL description: Currently, selectgo does an initial pass over the cases array to look for entries with nil channels, so they can be easily recognized and skipped later on. But this still involves actually visiting the cases. This commit changes selectgo to omit cases with nil channels when constructing pollorder, so that they'll be skipped over entirely later on. It also checks for caseDefault up front, which will facilitate changing it to use a "block bool" parameter instead. Updates golang/go#40410 This is being brought over to gofrontend as a step toward upgrading to Go1.16beta1, setting up for more compiler changes related to select handling. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279733
2020-12-22runtime: remove scase.releasetime fieldIan Lance Taylor2-4/+3
This is the gofrontend version of https://golang.org/cl/245122. Original CL description: selectgo will report at most one block event, so there's no need to keep a releasetime for every select case. It suffices to simply track the releasetime of the case responsible for the wakeup. Updates golang/go#40410. This is being brought over to gofrontend as a step toward upgrading to Go1.16beta1. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/279732
2020-12-22c++: Handle array members in build_comparison_op [PR93480]Jakub Jelinek3-5/+162
http://eel.is/c++draft/class.compare.default#6 says for the expanded list of subobjects: "In that list, any subobject of array type is recursively expanded to the sequence of its elements, in the order of increasing subscript." but build_comparison_op just tried to compare the whole arrays, which failed and therefore the defaulted comparison was deleted. The following patch instead compares the array elements, and if info.defining, adds runtime loops around it so that it iterates over increasing subscripts. For flexible array members it punts, we don't know how large those will be, for zero sized arrays it doesn't even try to compare the elements, because if there are no elements, there is nothing to compare, and for [1] arrays it will not emit a loop because it is enough to use [0] array ref to cover everything. 2020-12-21 Jakub Jelinek <jakub@redhat.com> PR c++/93480 * method.c (common_comparison_type): If comps[i] is a TREE_LIST, use its TREE_VALUE instead. (build_comparison_op): Handle array members. * g++.dg/cpp2a/spaceship-synth10.C: New test. * g++.dg/cpp2a/spaceship-synth-neg5.C: New test.
2020-12-22arm&aarch64: subdivide the type attribute "alu_shfit_imm"Qian Jianhua38-62/+170
The type attribute "alu_shfit_imm" is subdivided into "alu_shift_imm_lsl_1to4" and "alu_shift_imm_other", to accommodate optimazations of some microarchitectures. Here is the detailed discussion. https://gcc.gnu.org/pipermail/gcc/2020-September/233594.html gcc/ * config/arm/types.md (define_attr "autodetect_type"): New. (define_attr "type"): Subdivide alu_shift_imm. * config/arm/common.md: New file. * config/aarch64/predicates.md:Include common.md. * config/arm/predicates.md:Include common.md. * config/aarch64/aarch64.md (*add_<shift>_<mode>): Set autodetect_type. (*add_<shift>_si_uxtw): Likewise. (*sub_<shift>_<mode>): Likewise. (*sub_<shift>_si_uxtw): Likewise. (*neg_<shift>_<mode>2): Likewise. (*neg_<shift>_si2_uxtw): Likewise. * config/arm/arm.md (*addsi3_carryin_shift): Likewise. (add_not_shift_cin): Likewise. (*subsi3_carryin_shift): Likewise. (*subsi3_carryin_shift_alt): Likewise. (*rsbsi3_carryin_shift): Likewise. (*rsbsi3_carryin_shift_alt): Likewise. (*arm_shiftsi3): Likewise. (*<arith_shift_insn>_multsi): Likewise. (*<arith_shift_insn>_shiftsi): Likewise. (subsi3_carryin): Set new type. (*if_arith_move): Set new type. (*if_move_arith): Set new type. (define_attr "core_cycles"): Use new type. * config/arm/arm-fixed.md (arm_ssatsihi_shift): Set autodetect_type. * config/arm/thumb2.md (*orsi_not_shiftsi_si): Likewise. (*thumb2_shiftsi3_short): Set new type. * config/aarch64/falkor.md (falkor_alu_1_xyz): Use new type. * config/aarch64/saphira.md (saphira_alu_1_xyz): Likewise. * config/aarch64/thunderx.md (thunderx_arith_shift): Likewise. * config/aarch64/thunderx2t99.md (thunderx2t99_alu_shift): Likewise. * config/aarch64/thunderx3t110.md (thunderx3t110_alu_shift): Likewise. (thunderx3t110_alu_shift1): Likewise. * config/aarch64/tsv110.md (tsv110_alu_shift): Likewise. * config/arm/arm1020e.md (1020alu_shift_op): Likewise. * config/arm/arm1026ejs.md (alu_shift_op): Likewise. * config/arm/arm1136jfs.md (11_alu_shift_op): Likewise. * config/arm/arm926ejs.md (9_alu_op): Likewise. * config/arm/cortex-a15.md (cortex_a15_alu_shift): Likewise. * config/arm/cortex-a17.md (cortex_a17_alu_shiftimm): Likewise. * config/arm/cortex-a5.md (cortex_a5_alu_shift): Likewise. * config/arm/cortex-a53.md (cortex_a53_alu_shift): Likewise. * config/arm/cortex-a57.md (cortex_a57_alu_shift): Likewise. * config/arm/cortex-a7.md (cortex_a7_alu_shift): Likewise. * config/arm/cortex-a8.md (cortex_a8_alu_shift): Likewise. * config/arm/cortex-a9.md (cortex_a9_dp_shift): Likewise. * config/arm/cortex-m4.md (cortex_m4_alu): Likewise. * config/arm/cortex-m7.md (cortex_m7_alu_shift): Likewise. * config/arm/cortex-r4.md (cortex_r4_alu_shift): Likewise. * config/arm/exynos-m1.md (exynos_m1_alu_shift): Likewise. * config/arm/fa526.md (526_alu_shift_op): Likewise. * config/arm/fa606te.md (606te_alu_op): Likewise. * config/arm/fa626te.md (626te_alu_shift_op): Likewise. * config/arm/fa726te.md (726te_alu_shift_op): Likewise. * config/arm/fmp626.md (mp626_alu_shift_op): Likewise. * config/arm/marvell-pj4.md (pj4_shift): Likewise. (pj4_shift_conds): Likewise. (pj4_alu_shift): Likewise. (pj4_alu_shift_conds): Likewise. * config/arm/xgene1.md (xgene1_alu): Likewise. * config/arm/arm.c (xscale_sched_adjust_cost): Likewise.
2020-12-22i386: Fix __builtin_floor with FE_DOWNWARD rounding direction [PR96793]Uros Bizjak2-5/+48
x86_expand_floorceil expander uses x86_sse_copysign_to_positive, which is unable to change the sign from - to +. When FE_DOWNWARD rounding direction is in effect, the expanded sequence that involves subtraction can trigger x - x = -0.0 special rule. x86_sse_copysign_to_positive fails to change the sign of the intermediate value, assumed to always be positive, back to positive. The patch adds one extra fabs that strips the sign from the intermediate value when flag_rounding_math is in effect. 2020-12-22 Uroš Bizjak <ubizjak@gmail.com> gcc/ PR target/96793 * config/i386/i386-expand.c (ix86_expand_floorceil): Remove the sign of the intermediate value for flag_rounding_math. (ix86_expand_floorceildf_32): Ditto. gcc/testsuite/ PR target/96793 * gcc.target/i386/pr96793.c: New test.
2020-12-22c++: Fix build with clangGerald Pfeifer1-0/+2
After the addition of libcody building with clang 10.0.1 would fail as follows: In file included from .../libcody/cody.hh:24: In file included from /usr/include/c++/v1/memory:653: /usr/include/c++/v1/typeinfo:346:5: error: no member named 'fancy_abort' in namespace 'std::__1'; did you mean simply 'fancy_abort'? _VSTD::abort(); ^~~~~~~ mapper-client.cc and mapper-resolver.cc have addressed this already by getting <string> and <vector> included; do the same for module.cc. gcc/cp: 2020-12-22 Gerald Pfeifer <gerald@pfeifer.com> * module.cc (INCLUDE_STRING): Define. (INCLUDE_VECTOR): Ditto.
2020-12-21c++: Add some asserts in mangle.cJason Merrill1-2/+8
The added asserts are places I noticed that we aren't adding the "on" to distinguish an operator name from an expression involving the operator. Hopefully that's because operator names never get there; if not, crash bug reports will let us fix the issue. gcc/cp/ChangeLog: * mangle.c (write_member_name): Add assert. (write_expression): Add asserts.
2020-12-22Fix Typo.liuhongt1-1/+1
gcc/ChangeLog * config/i386/i386.md (*one_cmpl<mode>2_1): Fix typo, change alternative from 2 to 1 in attr isa.
2020-12-21-fdump-go-spec: don't crash if DECL_ORIGINAL_TYPE is NULLIan Lance Taylor1-0/+2
* godump.c (go_output_typedef): If DECL_ORIGINAL_TYPE is NULL, use TREE_TYPE.
2020-12-21Go frontend: ensure mpfr exponent range is large enough for GoIan Lance Taylor1-0/+10
PR go/98402 * go-lang.c (go_langhook_init): Force MPFR exponent range to be large enough to support Go constants.
2020-12-22Daily bump.GCC Administrator4-1/+57
2020-12-22gimplify: Gimplify value in gimplify_init_ctor_eval_range [PR98353]Jakub Jelinek2-1/+22
gimplify_init_ctor_eval_range wasn't gimplifying value, so if it wasn't a gimple val, verification at the end of gimplification would ICE (or with release checking some random pass later on would ICE or misbehave). 2020-12-21 Jakub Jelinek <jakub@redhat.com> PR c++/98353 * gimplify.c (gimplify_init_ctor_eval_range): Gimplify value before storing it into cref. * g++.dg/opt/pr98353.C: New test.
2020-12-21Darwin : Update the kernel version to macOS version mapping.Iain Sandoe1-2/+15
With the change to macOS 11 and Darwin20, the algorithm for mapping kernel version to macOS version has changed. We now have darwin 20.X.Y => macOS 11.(X > 0 ? X - 1 : 0).??. It currently unclear if the Y will be mapped to macOS patch version and, if so, whether it will be one-based or 0-based. Likewise, it's unknown if Darwin 21 will map to macOS 12, so these entries are unchanged for the present. gcc/ChangeLog: * config/darwin-driver.c (darwin_find_version_from_kernel): Compute the minor OS version from the minor kernel version.
2020-12-21c++: Windows rename [PR 98412]Nathan Sidwell1-2/+12
Some system's rename(2) fails if the target already exists, so delete it first. gcc/cp/ * module.cc (create_dirs): Add logging. (finish_module_processing): Unlink before rename.
2020-12-21bootstrap: std:stoul non-portable [PR 98412]Nathan Sidwell2-6/+16
Fix some more system-specific issues. Not everyone's C++11 is the same :( PR bootstrap/98412 libcody/ * client.cc: Include cstdlib. * server.cc: Include cstdlib. gcc/cp/ * mapper-client.cc: INCLUDE_STRING, INCLUDE_VECTOR. (module_client::open_module_client): Avoid std::stoul. * mapper-resolver.cc: INCLUDE_STRING, INCLUDE_VECTOR.
2020-12-21fold-const: Fix up a buffer overflow in native_encode_initializer [PR98407]Jakub Jelinek2-3/+13
For flexible array members we need to incrementally clear just from ptr + total_bytes up to new ptr + total_bytes, but memset has been called with the length from ptr, so was missing - total_bytes. Additionally, in this code off is guaranteed to be -1 and thus o 0, so don't bother pretending we could handle anything else, it would be more complicated than that. 2020-12-21 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/98407 * fold-const.c (native_encode_initializer): When handling flexible array members, fix up computation of length for memset. Also remove " - o" as o is always guaranteed to be 0 in this code path. * gcc.c-torture/compile/pr98407.c: New test.
2020-12-21openmp: Fix up handling of addressable temporaries in simd lb, b and incr ↵Jakub Jelinek2-3/+38
expressions [PR98383] For simd, we have code to artificially add locally defined variables into private clauses if they are addressable, so that omplower turns them into "omp simd array" variables. As the testcase shows, this is undesirable if those temporaries only show in the lb, b or incr expressions and nowhere else, if it is just used there, we really want normal scalar temporaries. This patch implements that by making sure we don't set for those GOVD_LOCAL-ish temporaries turned into GOVD_PRIVATE the GOVD_SEEN flag during gimplification of the lb, b and incr expressions, which means that the private clause isn't added for those. 2020-12-21 Jakub Jelinek <jakub@redhat.com> PR c++/98383 * gimplify.c (struct gimplify_omp_ctx): Add in_for_exprs flag. (gimple_add_tmp_var): For addressable temporaries appearing in simd lb, b or incr expressions, don't add a private clause unless it is seen also outside of those expressions in the simd body. (omp_notice_variable): Likewise. (gimplify_omp_for): Set and reset in_for_exprs around gimplification of lb, b or incr expressions. * g++.dg/gomp/pr98383.C: New test.
2020-12-20libgo: adjust sysinfo scripts for changed -fdump-go-specNikhil Benesch1-1/+1
The -fdump-go-spec flag to GCC recently changed to be more fastidious about handling incomplete types. This caused some breakage in mk[r]sysinfo.sh on Solaris. This commit adjusts for the new behavior. Specifically: * Types that refer to _in6_addr may be hidden behind a typedef and can no longer be filtered out with `grep -v in6_addr`. Instead just rewrite the definition of _in6_addr to [16]byte wherever it appears. * timestruc_t is now (correctly) emitted as an alias for timespec, so this case is handled specially. * stdio.h is included in sysinfo.c to avoid emitting an incomplete definition of the FILE type. * Dummy definitions for _u?pad128_t are now emitted automatically, which conflict with the definitions installed by mk[r]sysinfo.sh. These definitions were actually dead code, so just remove them. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/278672
2020-12-21Daily bump.GCC Administrator4-1/+25
2020-12-20gcc: xtensa: implement bswapsi2, bswapdi2 and helpersMax Filippov2-0/+35
2020-12-20 Max Filippov <jcmvbkbc@gmail.com> gcc/ * config/xtensa/xtensa.md (bswapsi2, bswapdi2): New patterns. gcc/testsuite/ * gcc.target/xtensa/bswap.c: New test. libgcc/ * config/xtensa/lib1funcs.S (__bswapsi2, __bswapdi2): New functions. * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add _bswapsi2 and _bswapdi2.
2020-12-20Made the ALLOCATED intrinsic work with scalar coarrays.Thomas Koenig5-2/+138
gcc/fortran/ChangeLog: * trans-array.c (gfc_conv_array_ref): Whitespace fix. Do not add offset if se->no_impl_this_image is set. * trans-intrinsic.c (gfc_conv_allocated): Set no_imp_this_image if checking the allocation status of a scalar. * trans.h (gfc_se): Add no_impl_this_image flag. gcc/testsuite/ChangeLog: * gfortran.dg/caf-shared/scalar_alloc_1.f90: New test. * gfortran.dg/caf-shared/scalar_alloc_2.f90: New test.
2020-12-20doc: Fix a typo [PR98400]Jakub Jelinek1-1/+1
Fix a typo in an option name in documentation. 2020-12-20 Jakub Jelinek <jakub@redhat.com> PR other/98400 * doc/invoke.texi (-mbackchain): Fix a typo - -mmo-backchain -> -mno-backchain.
2020-12-20Set DECL_ARTIFICIAL on gfortran internal variables.Thomas Koenig1-0/+3
It seems we sometimes use DECL_ARTIFICIAL as choosing between different code paths. In order not to make -fdebug-aux-vars do different things, set DECL_ARTIFICIAL on the variables to avoid these different code paths (and the corresponding regressions). gcc/fortran/ChangeLog: * trans.c (create_var_debug_raw): Set DECL_ARTIFICIAL on variables. (cherry picked from commit 8d76c007afe4c70f51fd56b0e5b89522de5de61f)
2020-12-20Fix allocation with source for coarrays.Thomas Koenig3-14/+72
gcc/fortran/ChangeLog: * resolve.c (gfc_expr_to_initialize): Check for coarrays only if the reference is right. * trans-array.c (gfc_array_allocate): If SOURCE has a size, use it.
2020-12-20Set DECL_ARTIFICIAL on gfortran internal variables.Thomas Koenig1-0/+3
It seems we sometimes use DECL_ARTIFICIAL as choosing between different code paths. In order not to make -fdebug-aux-vars do different things, set DECL_ARTIFICIAL on the variables to avoid these different code paths (and the corresponding regressions). gcc/fortran/ChangeLog: * trans.c (create_var_debug_raw): Set DECL_ARTIFICIAL on variables.
2020-12-20Correct coarray indices for test case.Thomas Koenig1-8/+8
gcc/testsuite/ChangeLog: * gfortran.dg/coarray/send_char_array_1.f90: Correct coarray indces.
2020-12-20Daily bump.GCC Administrator3-1/+42
2020-12-19expr: Fix up constant_byte_string bitfield handling [PR98366]Jakub Jelinek3-123/+103
constant_byte_string now uses a convert_to_bytes function, which doesn't handle bitfields at all (don't punt on them, just puts them into wrong bits or bytes). Furthermore, I don't see a reason why that function should exist at all, it duplicates native_encode_initializer functionality. Except that native_encode_initializer punted on flexible array members and 2 tests in the testsuite relied on constant_byte_string handling those. So, this patch throws away convert_to_bytes, uses native_encode_initializer instead, but teaches it to handle flexible array members (only in the non-mask mode with off == -1 for now), furthermore, it adds various corner case checks that the old implementation was missing (like that STRING_CSTs use int as length and therefore we shouldn't try to build larger than that strings, or that native_encode*/native_interpret* APIs require sane host and target bytes (8-bit on both). 2020-12-19 Jakub Jelinek <jakub@redhat.com> PR middle-end/98366 * fold-const.c (native_encode_initializer): Don't try to memset more than total_bytes with off == -1 even if len is large. Handle flexible array member initializers if off == -1 and mask is NULL. * expr.c (convert_to_bytes): Remove. (constant_byte_string): Use native_encode_initializer instead of convert_to_bytes. Remove extraneous semicolon. Punt on various corner-cases the APIs don't handle, like sizes > INT_MAX, BITS_PER_UNIT != 8, CHAR_BIT != 8. * gcc.c-torture/execute/pr98366.c: New test.
2020-12-19Make allocate with source work, some more offset fixes for implied this_image().Thomas Koenig7-5/+202
gcc/fortran/ChangeLog: * options.c (gfc_post_options): Always set flag_debug_aux_vars for shared coarrays. * resolve.c (gfc_expr_to_initialize): Set extra dimensions to DIMEN_THIS_IMAGE. * trans-array.c (cas_add_strides): Re-introduce. (cas_add_this_image_offset): Rename add_lbound to correct_full_offset, use cas_add_strides. gcc/testsuite/ChangeLog: * gfortran.dg/caf-shared/alloc_coarray_with_source_1.f90: New test. * gfortran.dg/caf-shared/cobounds_torture_1.f90: New test. * gfortran.dg/caf-shared/cobounds_torture_2.f90: New test. * gfortran.dg/caf-shared/cobounds_torture_3.f90: New test.