aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2021-02-02 12:42:10 -0800
committerIan Lance Taylor <iant@golang.org>2021-02-02 12:42:10 -0800
commit8910f1cd79445bbe2da01f8ccf7c37909349529e (patch)
treeba67a346969358fd7cc2b7c12384479de8364cab /gcc/testsuite
parent45c32be1f96ace25b66c34a84818dc5e07e9d516 (diff)
parent8e4a738d2540ab6aff77506d368bf4e3fa6963bd (diff)
downloadgcc-8910f1cd79445bbe2da01f8ccf7c37909349529e.zip
gcc-8910f1cd79445bbe2da01f8ccf7c37909349529e.tar.gz
gcc-8910f1cd79445bbe2da01f8ccf7c37909349529e.tar.bz2
Merge from trunk revision 8e4a738d2540ab6aff77506d368bf4e3fa6963bd.
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog27926
-rw-r--r--gcc/testsuite/ChangeLog-202029084
-rw-r--r--gcc/testsuite/README4
-rw-r--r--gcc/testsuite/README.compat2
-rw-r--r--gcc/testsuite/README.gcc2
-rw-r--r--gcc/testsuite/brig.dg/dg.exp2
-rw-r--r--gcc/testsuite/c-c++-common/Wfree-nonheap-object-2.c52
-rw-r--r--gcc/testsuite/c-c++-common/Wfree-nonheap-object-3.c70
-rw-r--r--gcc/testsuite/c-c++-common/Wfree-nonheap-object.c50
-rw-r--r--gcc/testsuite/c-c++-common/Wmismatched-dealloc.c67
-rw-r--r--gcc/testsuite/c-c++-common/asan/pr98204.c6
-rw-r--r--gcc/testsuite/c-c++-common/attr-used-5.c28
-rw-r--r--gcc/testsuite/c-c++-common/attr-used-6.c28
-rw-r--r--gcc/testsuite/c-c++-common/attr-used-7.c10
-rw-r--r--gcc/testsuite/c-c++-common/attr-used-8.c10
-rw-r--r--gcc/testsuite/c-c++-common/attr-used-9.c29
-rw-r--r--gcc/testsuite/c-c++-common/goacc/pr79428-1.c4
-rw-r--r--gcc/testsuite/c-c++-common/gomp/allocate-5.c41
-rw-r--r--gcc/testsuite/c-c++-common/gomp/doacross-4.c30
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr79428-2.c3
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr98187.c109
-rw-r--r--gcc/testsuite/c-c++-common/gomp/task-detach-1.c37
-rw-r--r--gcc/testsuite/c-c++-common/gomp/task-detach-2.c9
-rw-r--r--gcc/testsuite/c-c++-common/pr98556.c11
-rw-r--r--gcc/testsuite/c-c++-common/raw-string-6.c3
-rw-r--r--gcc/testsuite/config/default.exp2
-rw-r--r--gcc/testsuite/g++.dg/README2
-rw-r--r--gcc/testsuite/g++.dg/Wclass-memaccess-6.C18
-rw-r--r--gcc/testsuite/g++.dg/abi/abi-tag24.C17
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle76.C40
-rw-r--r--gcc/testsuite/g++.dg/analyzer/analyzer.exp2
-rw-r--r--gcc/testsuite/g++.dg/asan/asan.exp2
-rw-r--r--gcc/testsuite/g++.dg/bprob/bprob.exp2
-rw-r--r--gcc/testsuite/g++.dg/charset/charset.exp2
-rw-r--r--gcc/testsuite/g++.dg/compat/break/README2
-rw-r--r--gcc/testsuite/g++.dg/compat/compat.exp2
-rw-r--r--gcc/testsuite/g++.dg/compat/struct-layout-1.exp2
-rw-r--r--gcc/testsuite/g++.dg/coroutines/coroutines.exp2
-rw-r--r--gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/alias-decl-targ1.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/alignas19.C8
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/auto55.C13
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-98295.C11
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-overflow3.C7
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/constexpr-pmf2.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/decltype-71879.C5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/decltype37.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/decltype63.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/friend6.C23
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C1
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/inh-ctor36.C10
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/initlist-array13.C16
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/new4.C36
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/noexcept61.C17
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/noexcept62.C10
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/noexcept63.C63
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/noexcept64.C24
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr68726.C1
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr78341.C1
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/this2.C8
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/constexpr-84494.C11
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/constexpr-98672.C92
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/pr65202.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/pr65340.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/pr68578.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction-decltype1.C11
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction44.C1
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction76.C1
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/class-deduction77.C6
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/elide4.C24
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/elide5.C15
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/inh-ctor39.C12
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype-auto17.C10
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/nontype-auto18.C7
-rw-r--r--gcc/testsuite/g++.dg/cpp23/cplusplus.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/bit-cast10.C42
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/bit-cast7.C39
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/bit-cast8.C11
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/bit-cast9.C15
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-complete1.C18
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-complete2.C23
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-complete3.C16
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-conv3.C25
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-conv3a.C17
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-ctad1.C16
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-ctad2.C13
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-nodiscard1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-pr78173.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-pr88395.C8
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C6
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat4.C13
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts-requires23.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/lambda-generic9.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/lambda-uneval1.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/lambda-uneval5.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/no_unique_address10.C16
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/no_unique_address8.C11
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/no_unique_address9.C50
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/spaceship-p1186.C117
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg2.C4
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg5.C16
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/spaceship-synth10.C57
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/using-enum-7.C27
-rw-r--r--gcc/testsuite/g++.dg/debug/debug.exp2
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp2
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/inline-ns-2.C1
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/inline-var-2.C1
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/inline-var-3.C1
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp11.C1
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp14.C1
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp17.C1
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp20.C1
-rw-r--r--gcc/testsuite/g++.dg/dfp/dfp.exp2
-rw-r--r--gcc/testsuite/g++.dg/dg.exp2
-rw-r--r--gcc/testsuite/g++.dg/diagnostic/nullptr.C8
-rw-r--r--gcc/testsuite/g++.dg/diagnostic/pr96045-1.C4
-rw-r--r--gcc/testsuite/g++.dg/diagnostic/pr96045-2.C6
-rw-r--r--gcc/testsuite/g++.dg/diagnostic/pr96045-3.C6
-rw-r--r--gcc/testsuite/g++.dg/diagnostic/unclosed-extern-c.C2
-rw-r--r--gcc/testsuite/g++.dg/diagnostic/unclosed-function.C3
-rw-r--r--gcc/testsuite/g++.dg/diagnostic/unclosed-namespace.C3
-rw-r--r--gcc/testsuite/g++.dg/diagnostic/unclosed-struct.C3
-rw-r--r--gcc/testsuite/g++.dg/eh/spbp.C2
-rw-r--r--gcc/testsuite/g++.dg/ext/builtin-has-attribute2.C8
-rw-r--r--gcc/testsuite/g++.dg/ext/pr84598.C4
-rw-r--r--gcc/testsuite/g++.dg/gcov/gcov-17.C40
-rw-r--r--gcc/testsuite/g++.dg/gcov/gcov.exp2
-rw-r--r--gcc/testsuite/g++.dg/gcov/gcov.py10
-rw-r--r--gcc/testsuite/g++.dg/gcov/pr98273.C24
-rw-r--r--gcc/testsuite/g++.dg/gcov/test-gcov-17.py37
-rw-r--r--gcc/testsuite/g++.dg/gcov/test-pr98273.py27
-rw-r--r--gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp2
-rw-r--r--gcc/testsuite/g++.dg/goacc/goacc.exp2
-rw-r--r--gcc/testsuite/g++.dg/gomp/declare-target-3.C31
-rw-r--r--gcc/testsuite/g++.dg/gomp/gomp.exp2
-rw-r--r--gcc/testsuite/g++.dg/gomp/pr98383.C18
-rw-r--r--gcc/testsuite/g++.dg/gomp/task-detach-1.C29
-rw-r--r--gcc/testsuite/g++.dg/gomp/tls-5.C4
-rw-r--r--gcc/testsuite/g++.dg/graphite/graphite.exp2
-rw-r--r--gcc/testsuite/g++.dg/hwasan/hwasan.exp2
-rw-r--r--gcc/testsuite/g++.dg/init/array60.C8
-rw-r--r--gcc/testsuite/g++.dg/init/elide7.C9
-rw-r--r--gcc/testsuite/g++.dg/init/empty3.C18
-rw-r--r--gcc/testsuite/g++.dg/init/new26.C4
-rw-r--r--gcc/testsuite/g++.dg/ipa/pr98690.C27
-rw-r--r--gcc/testsuite/g++.dg/lookup/scoped1.C4
-rw-r--r--gcc/testsuite/g++.dg/lookup/using4.C2
-rw-r--r--gcc/testsuite/g++.dg/lookup/using63.C17
-rw-r--r--gcc/testsuite/g++.dg/lookup/using64.C69
-rw-r--r--gcc/testsuite/g++.dg/lookup/using65.C17
-rw-r--r--gcc/testsuite/g++.dg/lto/lto.exp2
-rw-r--r--gcc/testsuite/g++.dg/modules/access-1_a.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/access-1_b.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/access-1_c.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/adhoc-1_a.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/adhoc-1_b.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-1_a.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-1_b.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-1_c.C57
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-2_a.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-2_b.C21
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-2_c.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-3_a.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-3_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-3_c.C36
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-4_a.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-4_b.C36
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-5_a.c9
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-5_b.C22
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-5_c.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/adl-5_d.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/alias-1_a.H9
-rw-r--r--gcc/testsuite/g++.dg/modules/alias-1_b.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/alias-1_c.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/alias-1_d.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/alias-1_e.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/alias-1_f.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/alias-2_a.H9
-rw-r--r--gcc/testsuite/g++.dg/modules/alias-2_b.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/align-type-1_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/align-type-1_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/ambig-1_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/ambig-1_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/anon-1_a.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/anon-1_b.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/anon-1_c.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/anon-2.h6
-rw-r--r--gcc/testsuite/g++.dg/modules/anon-2_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/anon-2_b.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/atom-decl-0_a.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/atom-decl-0_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/atom-decl-0_c.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/atom-decl-2.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/atom-decl-3.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/atom-pragma-1.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/atom-pragma-3.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/atom-preamble-1.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/atom-preamble-2_a.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/atom-preamble-2_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/atom-preamble-2_c.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/atom-preamble-2_d.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/atom-preamble-2_e.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/atom-preamble-2_f.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/atom-preamble-3.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/atom-preamble-4.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/auto-1.h19
-rw-r--r--gcc/testsuite/g++.dg/modules/auto-1_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/auto-1_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/auto-2.h13
-rw-r--r--gcc/testsuite/g++.dg/modules/auto-2_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/auto-2_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/bad-mapper-1.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/bad-mapper-2.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/bad-mapper-3.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/ben-1.map3
-rw-r--r--gcc/testsuite/g++.dg/modules/ben-1_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/ben-1_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/bfield-1_a.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/bfield-1_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/bfield-2_a.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/bfield-2_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/binding-1_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/binding-1_b.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/binding-1_c.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/binding-2.H9
-rw-r--r--gcc/testsuite/g++.dg/modules/bool-1.h8
-rw-r--r--gcc/testsuite/g++.dg/modules/bool-1_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/bool-1_b.H5
-rw-r--r--gcc/testsuite/g++.dg/modules/bool-1_c.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/bug-1_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/bug-1_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/builtin-1_a.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/builtin-1_b.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/builtin-2.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/builtin-3_a.C44
-rw-r--r--gcc/testsuite/g++.dg/modules/builtin-3_b.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/builtin-4_a.H9
-rw-r--r--gcc/testsuite/g++.dg/modules/builtin-4_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/builtin-5_a.H3
-rw-r--r--gcc/testsuite/g++.dg/modules/builtin-5_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/builtin-6_a.H12
-rw-r--r--gcc/testsuite/g++.dg/modules/builtin-6_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/builtin-7_a.H8
-rw-r--r--gcc/testsuite/g++.dg/modules/builtin-7_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/by-name-1.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/cexpr-1_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/cexpr-1_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/cexpr-2_a.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/cexpr-2_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/circ-1_a.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/circ-1_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/circ-1_c.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/circ-1_d.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/class-1_a.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/class-1_b.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/class-1_c.C35
-rw-r--r--gcc/testsuite/g++.dg/modules/class-2_a.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/class-2_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/class-3_a.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/class-3_b.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/class-3_c.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/class-3_d.C25
-rw-r--r--gcc/testsuite/g++.dg/modules/class-4_a.C25
-rw-r--r--gcc/testsuite/g++.dg/modules/class-4_b.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/class-5_a.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/class-5_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/class-5_c.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/class-6_a.C30
-rw-r--r--gcc/testsuite/g++.dg/modules/class-6_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/class-6_c.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/class-7_a.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/class-7_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/class-7_c.C39
-rw-r--r--gcc/testsuite/g++.dg/modules/class-8_a.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/class-8_b.C23
-rw-r--r--gcc/testsuite/g++.dg/modules/clone-1_a.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/clone-1_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-1_a.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-1_b.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-2_a.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-2_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-3_a.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-3_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-4.H18
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-5.h7
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-5_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-5_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-6.h19
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-6_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-6_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/constrained-partial-1_a.C38
-rw-r--r--gcc/testsuite/g++.dg/modules/constrained-partial-1_b.C31
-rw-r--r--gcc/testsuite/g++.dg/modules/convop-1_a.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/convop-1_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/cpp-1.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/cpp-2_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/cpp-2_b.H6
-rw-r--r--gcc/testsuite/g++.dg/modules/cpp-2_c.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/cpp-3.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/cpp-4.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/cpp-4.h4
-rw-r--r--gcc/testsuite/g++.dg/modules/cpp-5_a.H9
-rw-r--r--gcc/testsuite/g++.dg/modules/cpp-5_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/cpp-5_c.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/cpp-6_a.H3
-rw-r--r--gcc/testsuite/g++.dg/modules/cpp-6_b.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/cpp-6_c.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/debug-1_a.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/debug-1_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/decomp-1_a.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/decomp-1_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/deferred-1.h12
-rw-r--r--gcc/testsuite/g++.dg/modules/deferred-1_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/deferred-1_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/dep-1_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/dep-1_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/dep-2.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/dep-3.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/dir-only-1.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/dir-only-2_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/dir-only-2_b.C28
-rw-r--r--gcc/testsuite/g++.dg/modules/dir-only-3.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/dir-only-4.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/dir-recovery.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-1_a.C30
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-1_b.C22
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-2_a.C21
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-2_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-3_a.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-3_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-4_a.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-4_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-5_a.H7
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-5_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-6_a.H10
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-6_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-7.C20
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-8_a.H6
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-8_b.H6
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-8_c.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-8_d.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-bad-1_a.H8
-rw-r--r--gcc/testsuite/g++.dg/modules/enum-bad-1_b.C26
-rw-r--r--gcc/testsuite/g++.dg/modules/err-1_a.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/err-1_b.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/err-1_c.C22
-rw-r--r--gcc/testsuite/g++.dg/modules/err-1_d.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/except-1.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/except-2.h42
-rw-r--r--gcc/testsuite/g++.dg/modules/except-2_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/except-2_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/except-3.h24
-rw-r--r--gcc/testsuite/g++.dg/modules/except-3_a.H6
-rw-r--r--gcc/testsuite/g++.dg/modules/except-3_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/exp-xlate-1_a.H5
-rw-r--r--gcc/testsuite/g++.dg/modules/exp-xlate-1_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/export-1.C22
-rw-r--r--gcc/testsuite/g++.dg/modules/extern-tpl-1_a.H23
-rw-r--r--gcc/testsuite/g++.dg/modules/extern-tpl-1_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/extern-tpl-1_c.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/extern-tpl-2_a.H13
-rw-r--r--gcc/testsuite/g++.dg/modules/extern-tpl-2_b.H13
-rw-r--r--gcc/testsuite/g++.dg/modules/extern-tpl-2_c.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/extern-tpl-2_d.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/flag-1_a.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/flag-1_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/fn-inline-1_a.C21
-rw-r--r--gcc/testsuite/g++.dg/modules/fn-inline-1_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/fn-inline-1_c.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/freeze-1_a.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/freeze-1_b.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/freeze-1_c.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/freeze-1_d.C21
-rw-r--r--gcc/testsuite/g++.dg/modules/friend-1_a.C37
-rw-r--r--gcc/testsuite/g++.dg/modules/friend-1_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/friend-1_c.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/friend-2_a.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/friend-2_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/friend-3.C34
-rw-r--r--gcc/testsuite/g++.dg/modules/friend-4_a.C33
-rw-r--r--gcc/testsuite/g++.dg/modules/friend-4_b.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/friend-5_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/friend-5_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/gc-1_a.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/gc-1_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/gc-1_c.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/gc-1_d.C28
-rw-r--r--gcc/testsuite/g++.dg/modules/gc-2.map2
-rw-r--r--gcc/testsuite/g++.dg/modules/gc-2_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/global-1_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/global-1_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/global-2_a.C22
-rw-r--r--gcc/testsuite/g++.dg/modules/global-2_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/global-3_a.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/global-3_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/gmf-1_a.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/gmf-1_b.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/gmf-2_a.H10
-rw-r--r--gcc/testsuite/g++.dg/modules/gmf-2_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/gmf-2_c.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/gmf-2_d.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/gvar_a.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/gvar_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/hdr-1_a.H10
-rw-r--r--gcc/testsuite/g++.dg/modules/hdr-1_b.H21
-rw-r--r--gcc/testsuite/g++.dg/modules/hdr-1_c.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/hdr-init-1_a.H6
-rw-r--r--gcc/testsuite/g++.dg/modules/hdr-init-1_b.H6
-rw-r--r--gcc/testsuite/g++.dg/modules/hdr-init-1_c.C24
-rw-r--r--gcc/testsuite/g++.dg/modules/hello-1_a.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/hello-1_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/horcrux-1_a.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/horcrux-1_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/ice-1.C3
-rw-r--r--gcc/testsuite/g++.dg/modules/imp-inline-1_a.C37
-rw-r--r--gcc/testsuite/g++.dg/modules/imp-inline-1_b.C22
-rw-r--r--gcc/testsuite/g++.dg/modules/imp-member-1_a.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/imp-member-1_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/imp-member-1_c.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/imp-member-1_d.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/imp-member-1_e.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/imp-member-2_a.C28
-rw-r--r--gcc/testsuite/g++.dg/modules/imp-member-2_b.C21
-rw-r--r--gcc/testsuite/g++.dg/modules/imp-member-2_c.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/imp-member-3.H16
-rw-r--r--gcc/testsuite/g++.dg/modules/import-1_a.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/import-1_b.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/import-1_c.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/import-1_d.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/import-1_e.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/import-1_f.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/import-1_g.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/import-2.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/inc-xlate-1.map2
-rw-r--r--gcc/testsuite/g++.dg/modules/inc-xlate-1_a.H15
-rw-r--r--gcc/testsuite/g++.dg/modules/inc-xlate-1_b.H21
-rw-r--r--gcc/testsuite/g++.dg/modules/inc-xlate-1_c.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/inc-xlate-1_e.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-1_a.C41
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-1_b.C54
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-1_c.C49
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-2_a.C24
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-2_b.C31
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-2_c.C25
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-3_a.C23
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-3_b.C30
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-3_c.C24
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-4_a.C20
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-4_b.C22
-rw-r--r--gcc/testsuite/g++.dg/modules/indirect-4_c.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/inext-1.H11
-rw-r--r--gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1.h35
-rw-r--r--gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1_b.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/init-1_a.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/init-1_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/init-2_a.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/init-2_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/init-2_c.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/inst-1_a.C42
-rw-r--r--gcc/testsuite/g++.dg/modules/inst-1_b.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/inst-2_a.C26
-rw-r--r--gcc/testsuite/g++.dg/modules/inst-2_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/inst-3_a.C21
-rw-r--r--gcc/testsuite/g++.dg/modules/inst-3_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/inst-4_a.C20
-rw-r--r--gcc/testsuite/g++.dg/modules/inst-4_b.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/inst-5_a.H12
-rw-r--r--gcc/testsuite/g++.dg/modules/inst-5_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/internal-1.C21
-rw-r--r--gcc/testsuite/g++.dg/modules/internal-2_a.H10
-rw-r--r--gcc/testsuite/g++.dg/modules/internal-2_b.H7
-rw-r--r--gcc/testsuite/g++.dg/modules/internal-2_c.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/iostream-1_a.H10
-rw-r--r--gcc/testsuite/g++.dg/modules/iostream-1_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/isalnum.H12
-rw-r--r--gcc/testsuite/g++.dg/modules/keyword-1_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/keyword-1_b.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/lambda-1_a.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/lambda-1_b.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/lambda-2.h2
-rw-r--r--gcc/testsuite/g++.dg/modules/lambda-2_a.H7
-rw-r--r--gcc/testsuite/g++.dg/modules/lambda-2_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/lambda-2_c.C3
-rw-r--r--gcc/testsuite/g++.dg/modules/lambda-3.h5
-rw-r--r--gcc/testsuite/g++.dg/modules/lambda-3_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/lambda-3_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/lambda-3_c.C3
-rw-r--r--gcc/testsuite/g++.dg/modules/lambda-4.h2
-rw-r--r--gcc/testsuite/g++.dg/modules/lambda-4_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/lambda-4_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/lang-1_a.H15
-rw-r--r--gcc/testsuite/g++.dg/modules/lang-1_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/lang-1_c.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/lang-2_a.C3
-rw-r--r--gcc/testsuite/g++.dg/modules/lang-2_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/late-ret-1.H16
-rw-r--r--gcc/testsuite/g++.dg/modules/late-ret-2_a.H14
-rw-r--r--gcc/testsuite/g++.dg/modules/late-ret-2_b.H13
-rw-r--r--gcc/testsuite/g++.dg/modules/late-ret-2_c.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/late-ret-3_a.H20
-rw-r--r--gcc/testsuite/g++.dg/modules/late-ret-3_b.H20
-rw-r--r--gcc/testsuite/g++.dg/modules/late-ret-3_c.C22
-rw-r--r--gcc/testsuite/g++.dg/modules/lazy-1_a.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/lazy-1_b.C21
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-1_a.H5
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-1_b.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-1_c.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-1_d.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-2_a.H5
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-2_b.H5
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-2_c.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-3_a.H5
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-3_b.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-3_c.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-3_d.C1
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-4_a.H8
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-4_b.H8
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-4_c.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-5_a.H9
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-5_b.H7
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-5_c.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-6_a.H10
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-6_b.H9
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-6_c.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-7_a.H8
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-7_b.H7
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-7_c.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-8_a.H13
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-8_b.H12
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-8_c.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-9_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-9_b.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/leg-merge-9_c.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-1_a.H10
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-1_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-1_c.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-2.h1
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-2.map1
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-2_a.H8
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-2_b.H13
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-2_c.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-2_d.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-3.h1
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-3_a.H7
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-3_b.H16
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-3_c.H25
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-6.map2
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-6_a.H6
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-6_b.H6
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-6_c.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-6_d.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-6_e.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-6_f.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-7_a.H6
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-7_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-8_a.H5
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-8_b.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-8_c.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-8_d.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/legacy-8_e.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/libfn-1_a.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/libfn-1_b.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/literals-1_a.C51
-rw-r--r--gcc/testsuite/g++.dg/modules/literals-1_b.C39
-rw-r--r--gcc/testsuite/g++.dg/modules/loc-1_a.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/loc-1_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/loc-1_c.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/loc-2_a.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/loc-2_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/loc-2_c.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/loc-2_d.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/loc-2_e.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/loc-2_f.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/loc-wrapper-1.h14
-rw-r--r--gcc/testsuite/g++.dg/modules/loc-wrapper-1_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/loc-wrapper-1_b.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/local-1_a.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/local-1_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/local-extern-1.C20
-rw-r--r--gcc/testsuite/g++.dg/modules/local-extern-2.H10
-rw-r--r--gcc/testsuite/g++.dg/modules/local-struct-1_a.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/local-struct-1_b.C3
-rw-r--r--gcc/testsuite/g++.dg/modules/macloc-1_a.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/macloc-1_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/macloc-1_c.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/macloc-1_d.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/macloc-2_a.H9
-rw-r--r--gcc/testsuite/g++.dg/modules/macloc-2_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-1_a.H12
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-1_b.C25
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-2_a.H14
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-2_b.H24
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-2_c.H10
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-2_d.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-3_a.H19
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-3_b.H24
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-3_c.C24
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-4_a.H13
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-4_b.H12
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-4_c.H14
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-4_d.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-4_e.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-4_f.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-4_g.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-5_a.H5
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-5_b.H8
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-5_c.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-6_a.H8
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-6_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-6_c.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-7_a.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-7_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/macro-7_c.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/map-1.map2
-rw-r--r--gcc/testsuite/g++.dg/modules/map-1_a.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/map-1_b.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/map-1_b.map3
-rw-r--r--gcc/testsuite/g++.dg/modules/map-2.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/map-2.map1
-rw-r--r--gcc/testsuite/g++.dg/modules/member-def-1_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/member-def-1_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/member-def-1_c.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/member-def-1_d.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/member-def-2_a.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/member-def-2_b.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/member-def-2_c.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/member-def-2_d.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/memref-1_a.C24
-rw-r--r--gcc/testsuite/g++.dg/modules/memref-1_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-10.h8
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-10_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-10_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-11.h15
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-11_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-11_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-12.h23
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-12_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-12_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-13.h10
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-13_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-13_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-14.h7
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-14_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-14_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-15.h5
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-15_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-15_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-1_a.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-1_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-2_a.H29
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-2_b.C2
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-3_a.H7
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-3_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-4.h7
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-4_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-4_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-5.h8
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-5_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-5_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-6.h10
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-6_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-6_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-7.h5
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-7_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-7_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-8.h17
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-8_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-8_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-9.h9
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-9_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/merge-9_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-decl-0-2a.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-decl-0.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-decl-1.C29
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-decl-2_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-decl-2_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-decl-2_c.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-decl-3.C26
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-decl-5_a.C3
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-decl-5_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-exp-1_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-exp-1_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-imp-1_a.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-imp-1_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-imp-1_c.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-imp-1_d.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-impl-1_a.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-impl-1_b.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-impl-1_c.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-impl-1_d.C27
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-indirect-1_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-indirect-1_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-indirect-1_c.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-indirect-1_d.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-indirect-1_e.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-stamp-1_a.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-stamp-1_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-stamp-1_c.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-stamp-1_d.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-sym-1.C34
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-sym-2.C23
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-sym-3.C26
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-tpl-1_a.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-tpl-1_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-tpl-2_a.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/mod-tpl-2_b.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/modules.exp379
-rw-r--r--gcc/testsuite/g++.dg/modules/mutual-friend.ii11
-rw-r--r--gcc/testsuite/g++.dg/modules/namespace-1_a.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/namespace-1_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/namespace-1_c.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/namespace-2_a.C40
-rw-r--r--gcc/testsuite/g++.dg/modules/namespace-2_b.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/namespace-3_a.C21
-rw-r--r--gcc/testsuite/g++.dg/modules/namespace-3_b.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/namespace-4_a.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/namespace-4_b.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/namespace-4_c.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/nest-1_a.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/nest-1_b.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/nest-1_c.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/nested-1_a.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/nested-1_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/nested-1_c.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/nested-2_a.C24
-rw-r--r--gcc/testsuite/g++.dg/modules/nested-2_b.C20
-rw-r--r--gcc/testsuite/g++.dg/modules/nested-constr-1.h15
-rw-r--r--gcc/testsuite/g++.dg/modules/nested-constr-1_a.H3
-rw-r--r--gcc/testsuite/g++.dg/modules/nested-constr-1_b.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/nested-constr-2_a.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/nested-constr-2_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/nested-constr-2_c.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/nodes-1_a.C46
-rw-r--r--gcc/testsuite/g++.dg/modules/nodes-1_b.C27
-rw-r--r--gcc/testsuite/g++.dg/modules/noexcept-1.h78
-rw-r--r--gcc/testsuite/g++.dg/modules/noexcept-1_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/noexcept-1_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/ns-alias-1_a.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/ns-alias-1_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/ns-alias-1_c.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/ns-dir-1_a.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/ns-dir-1_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/ns-dup-1_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/ns-dup-1_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/ns-imp-1_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/ns-imp-1_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/ns-imp-1_c.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/ns-part-1_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/ns-part-1_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/ns-part-1_c.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/nsdmi-1_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/nsdmi-1_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/nsdmi-2.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/omp-1_a.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/omp-1_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/omp-1_c.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/omp-2_a.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/omp-2_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/only-1.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/only-2.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/only-3.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/operator-1_a.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/operator-1_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/p0713-1.C3
-rw-r--r--gcc/testsuite/g++.dg/modules/p0713-2.C3
-rw-r--r--gcc/testsuite/g++.dg/modules/p0713-3.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/part-1_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/part-1_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/part-1_c.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/part-2_a.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/part-2_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/part-2_c.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/part-2_d.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/part-2_e.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/part-3_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/part-3_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/part-3_c.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/part-3_d.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/part-4_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/part-4_b.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/part-4_c.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/part-5_a.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/part-5_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/part-5_c.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/part-6_a.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/part-6_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/part-6_c.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/part-6_d.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/part-6_e.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/part-7_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/part-7_b.C20
-rw-r--r--gcc/testsuite/g++.dg/modules/part-7_c.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/part-hdr-1_a.H3
-rw-r--r--gcc/testsuite/g++.dg/modules/part-hdr-1_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/part-hdr-1_c.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/part-mac-1_a.H5
-rw-r--r--gcc/testsuite/g++.dg/modules/part-mac-1_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/part-mac-1_c.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/partial-1.h30
-rw-r--r--gcc/testsuite/g++.dg/modules/partial-1_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/partial-1_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/pmf-1.h10
-rw-r--r--gcc/testsuite/g++.dg/modules/pmf-1_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/pmf-1_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/pmf-2.h26
-rw-r--r--gcc/testsuite/g++.dg/modules/pmf-2_a.H6
-rw-r--r--gcc/testsuite/g++.dg/modules/pmf-2_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/pmp-1_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/pmp-1_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/pmp-2.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/pmp-3.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/pr98591.H3
-rw-r--r--gcc/testsuite/g++.dg/modules/pr98770_a.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/pr98770_b.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/pr98843_a.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/pr98843_b.H12
-rw-r--r--gcc/testsuite/g++.dg/modules/pr98843_c.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/pragma-1_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/pragma-1_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/predef-1.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/predef-1.h10
-rw-r--r--gcc/testsuite/g++.dg/modules/predef-2.h7
-rw-r--r--gcc/testsuite/g++.dg/modules/predef-2_a.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/predef-2_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/preproc-1.C3
-rw-r--r--gcc/testsuite/g++.dg/modules/preproc-2_a.H11
-rw-r--r--gcc/testsuite/g++.dg/modules/preproc-2_b.C21
-rw-r--r--gcc/testsuite/g++.dg/modules/printf-1_a.H9
-rw-r--r--gcc/testsuite/g++.dg/modules/printf-1_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/reparent-1_a.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/reparent-1_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/reparent-1_c.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/scc-1.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/scc-2.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/shadow-1_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/shadow-1_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/stat-mem-1.h6
-rw-r--r--gcc/testsuite/g++.dg/modules/stat-mem-1_a.H5
-rw-r--r--gcc/testsuite/g++.dg/modules/stat-mem-1_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/stat-tpl-1_a.H13
-rw-r--r--gcc/testsuite/g++.dg/modules/static-1_a.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/static-1_b.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/static-1_c.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/std-1_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/std-1_b.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/stdio-1_a.H14
-rw-r--r--gcc/testsuite/g++.dg/modules/stdio-1_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/stdns_a.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/stdns_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/string-1_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/string-1_b.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/string-view1.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/string-view2.C56
-rw-r--r--gcc/testsuite/g++.dg/modules/sv-1.h75
-rw-r--r--gcc/testsuite/g++.dg/modules/sv-1_a.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/sv-1_b.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/sym-subst-1.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/sym-subst-2_a.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/sym-subst-2_b.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/sym-subst-3_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/sym-subst-3_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/sym-subst-4.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/sym-subst-5.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/sym-subst-6.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/sys/alias-2_a.H9
-rw-r--r--gcc/testsuite/g++.dg/modules/sys/inext-1.H2
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-1_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-1_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-2_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-2_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-2_c.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-3_a.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-3_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-3_c.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-4_a.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-4_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-4_c.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-5_a.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-5_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-6_a.H12
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-6_b.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-7.h7
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-7_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-7_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-8_a.C12
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-8_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-inst-1.h14
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-inst-1_a.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/tdef-inst-1_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/thunk-1_a.C23
-rw-r--r--gcc/testsuite/g++.dg/modules/thunk-1_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/tinfo-1.C20
-rw-r--r--gcc/testsuite/g++.dg/modules/tinfo-2_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/tinfo-2_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/tmpl-part-req-1.h15
-rw-r--r--gcc/testsuite/g++.dg/modules/tmpl-part-req-1_a.H3
-rw-r--r--gcc/testsuite/g++.dg/modules/tmpl-part-req-1_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/tmpl-part-req-2.h24
-rw-r--r--gcc/testsuite/g++.dg/modules/tmpl-part-req-2_a.H3
-rw-r--r--gcc/testsuite/g++.dg/modules/tmpl-part-req-2_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/tname-spec-1_a.H15
-rw-r--r--gcc/testsuite/g++.dg/modules/tname-spec-1_b.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/token-1.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/token-2_a.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/token-2_b.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/token-3.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/token-4.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/token-5.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-alias-1.h70
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-alias-1_a.H9
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-alias-1_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-ary-1.h15
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-ary-1_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-ary-1_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-extern-fn-1_a.H16
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-extern-fn-1_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-extern-var-1_a.H19
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-extern-var-1_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-1_a.C40
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-1_b.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-2_a.C20
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-2_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-3_a.C22
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-3_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-4_a.C25
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-4_b.C21
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-5_a.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-5_b.C23
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-6_a.C26
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-6_b.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-7_a.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-7_b.C5
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-merge-1.cc6
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-merge-1.h9
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_a.H6
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_b.H6
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_c.H5
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_d.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_e.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_f.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-spec-1_a.C22
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-spec-1_b.C20
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-spec-2_a.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-spec-2_b.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-spec-2_c.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-spec-2_d.C27
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-spec-3_a.C27
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-spec-3_b.C24
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-spec-4_a.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-spec-4_b.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-spec-5_a.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-spec-5_b.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-spec-6_a.C22
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-spec-6_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-spec-7.C38
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-tpl-friend-1_a.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-tpl-friend-1_b.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-tpl-mem-1_a.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-tpl-mem-1_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-tpl-merge-1.h22
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-tpl-merge-1_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-tpl-merge-1_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-tpl-merge-2.h65
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-tpl-merge-2_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-tpl-merge-2_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-tpl-parm-1_a.H12
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-tpl-parm-1_b.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-tpl-parm-2.h16
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-tpl-parm-2_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/tpl-tpl-parm-2_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/tplmem-1_a.C32
-rw-r--r--gcc/testsuite/g++.dg/modules/tplmem-1_b.C28
-rw-r--r--gcc/testsuite/g++.dg/modules/tplmem-3_a.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/tplmem-3_b.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/ttp-1_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/ttp-1_b.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/ttp-2_a.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/ttp-2_b.C18
-rw-r--r--gcc/testsuite/g++.dg/modules/ttp-3_a.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/ttp-3_b.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/typename-1_a.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/typename-1_b.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/unnamed-1_a.C20
-rw-r--r--gcc/testsuite/g++.dg/modules/unnamed-1_b.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/unnamed-2.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/used-1_a.H7
-rw-r--r--gcc/testsuite/g++.dg/modules/used-1_b.H9
-rw-r--r--gcc/testsuite/g++.dg/modules/used-1_c.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/using-1_a.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/using-1_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/using-1_c.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/using-2_a.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/using-2_b.C6
-rw-r--r--gcc/testsuite/g++.dg/modules/using-2_c.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/using-3.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/using-4_a.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/using-4_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/using-5_a.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/using-5_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/using-6_a.C20
-rw-r--r--gcc/testsuite/g++.dg/modules/using-6_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/using-7.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/using-8_a.C21
-rw-r--r--gcc/testsuite/g++.dg/modules/using-8_b.C11
-rw-r--r--gcc/testsuite/g++.dg/modules/using-enum-1_a.H16
-rw-r--r--gcc/testsuite/g++.dg/modules/using-enum-1_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/var-1_a.C9
-rw-r--r--gcc/testsuite/g++.dg/modules/var-1_b.C13
-rw-r--r--gcc/testsuite/g++.dg/modules/var-tpl-1_a.C21
-rw-r--r--gcc/testsuite/g++.dg/modules/var-tpl-1_b.C14
-rw-r--r--gcc/testsuite/g++.dg/modules/var-tpl-concept-1.h70
-rw-r--r--gcc/testsuite/g++.dg/modules/var-tpl-concept-1_a.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/var-tpl-concept-1_b.C10
-rw-r--r--gcc/testsuite/g++.dg/modules/virt-1_a.C25
-rw-r--r--gcc/testsuite/g++.dg/modules/virt-1_b.C23
-rw-r--r--gcc/testsuite/g++.dg/modules/virt-2_a.C27
-rw-r--r--gcc/testsuite/g++.dg/modules/virt-2_b.C28
-rw-r--r--gcc/testsuite/g++.dg/modules/virt-2_c.C16
-rw-r--r--gcc/testsuite/g++.dg/modules/vmort-1_a.C34
-rw-r--r--gcc/testsuite/g++.dg/modules/vmort-1_b.C17
-rw-r--r--gcc/testsuite/g++.dg/modules/vmort-2_a.C15
-rw-r--r--gcc/testsuite/g++.dg/modules/vmort-2_b.C20
-rw-r--r--gcc/testsuite/g++.dg/modules/vmort-2_c.C21
-rw-r--r--gcc/testsuite/g++.dg/modules/vtt-1_a.C36
-rw-r--r--gcc/testsuite/g++.dg/modules/vtt-1_b.C28
-rw-r--r--gcc/testsuite/g++.dg/modules/vtt-1_c.C19
-rw-r--r--gcc/testsuite/g++.dg/modules/vtt-2.h14
-rw-r--r--gcc/testsuite/g++.dg/modules/vtt-2_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/vtt-2_b.C7
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-1.h19
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-1_c.C3
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-2.h14
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-2_c.C3
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-3.h21
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-3_c.C3
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-4.h17
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-4_c.C3
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-5.h22
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-5_c.C3
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-6.h22
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header-6_c.C3
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header.h144
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-header_b.C4
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-tr1.h11
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H4
-rw-r--r--gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C4
-rw-r--r--gcc/testsuite/g++.dg/no-stack-protector-attr-3.C2
-rw-r--r--gcc/testsuite/g++.dg/no-stack-protector-attr.C2
-rw-r--r--gcc/testsuite/g++.dg/opt/20050511-1.C2
-rw-r--r--gcc/testsuite/g++.dg/opt/pr87974.C1
-rw-r--r--gcc/testsuite/g++.dg/opt/pr98282.C80
-rw-r--r--gcc/testsuite/g++.dg/opt/pr98353.C17
-rw-r--r--gcc/testsuite/g++.dg/opt/pr98403.C195
-rw-r--r--gcc/testsuite/g++.dg/opt/pr98464.C155
-rw-r--r--gcc/testsuite/g++.dg/opt/pr98550.C96
-rw-r--r--gcc/testsuite/g++.dg/opt/pr98743.C27
-rw-r--r--gcc/testsuite/g++.dg/opt/store-merging-2.C4
-rw-r--r--gcc/testsuite/g++.dg/other/anon5.C3
-rw-r--r--gcc/testsuite/g++.dg/other/switch4.C3
-rw-r--r--gcc/testsuite/g++.dg/parse/access12.C24
-rw-r--r--gcc/testsuite/g++.dg/parse/attr4.C1
-rw-r--r--gcc/testsuite/g++.dg/parse/cond4.C3
-rw-r--r--gcc/testsuite/g++.dg/parse/crash10.C1
-rw-r--r--gcc/testsuite/g++.dg/parse/crash18.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/crash27.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/crash34.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/crash35.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/crash52.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/crash59.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/crash61.C1
-rw-r--r--gcc/testsuite/g++.dg/parse/crash67.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/error14.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/error56.C1
-rw-r--r--gcc/testsuite/g++.dg/parse/error63.C8
-rw-r--r--gcc/testsuite/g++.dg/parse/invalid1.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/parameter-declaration-1.C4
-rw-r--r--gcc/testsuite/g++.dg/parse/parser-pr28152-2.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/parser-pr28152.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/pr68722.C1
-rw-r--r--gcc/testsuite/g++.dg/parse/pr96258.C4
-rw-r--r--gcc/testsuite/g++.dg/pch/pch.exp2
-rw-r--r--gcc/testsuite/g++.dg/pch/pr98343.C6
-rw-r--r--gcc/testsuite/g++.dg/pch/pr98343.Hs18
-rw-r--r--gcc/testsuite/g++.dg/plugin/plugin.exp2
-rw-r--r--gcc/testsuite/g++.dg/pr46852.C1
-rw-r--r--gcc/testsuite/g++.dg/pr46868.C1
-rw-r--r--gcc/testsuite/g++.dg/pr95768.C32
-rw-r--r--gcc/testsuite/g++.dg/pr97627.C44
-rw-r--r--gcc/testsuite/g++.dg/pr98213.C24
-rw-r--r--gcc/testsuite/g++.dg/pr98330.C7
-rw-r--r--gcc/testsuite/g++.dg/pr98499.C31
-rw-r--r--gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp2
-rw-r--r--gcc/testsuite/g++.dg/special/ecos.exp2
-rw-r--r--gcc/testsuite/g++.dg/tc1/dr142.C8
-rw-r--r--gcc/testsuite/g++.dg/tc1/dr52.C6
-rw-r--r--gcc/testsuite/g++.dg/template/access32.C8
-rw-r--r--gcc/testsuite/g++.dg/template/access33.C9
-rw-r--r--gcc/testsuite/g++.dg/template/access34.C29
-rw-r--r--gcc/testsuite/g++.dg/template/access35.C19
-rw-r--r--gcc/testsuite/g++.dg/template/crash115.C1
-rw-r--r--gcc/testsuite/g++.dg/template/crash43.C1
-rw-r--r--gcc/testsuite/g++.dg/template/crash75.C4
-rw-r--r--gcc/testsuite/g++.dg/template/crash76.C2
-rw-r--r--gcc/testsuite/g++.dg/template/crash90.C3
-rw-r--r--gcc/testsuite/g++.dg/template/deduce8.C21
-rw-r--r--gcc/testsuite/g++.dg/template/error-recovery1.C1
-rw-r--r--gcc/testsuite/g++.dg/template/error57.C2
-rw-r--r--gcc/testsuite/g++.dg/template/friend68.C13
-rw-r--r--gcc/testsuite/g++.dg/template/friend69.C18
-rw-r--r--gcc/testsuite/g++.dg/template/partial5.C2
-rw-r--r--gcc/testsuite/g++.dg/template/pr97399.C23
-rw-r--r--gcc/testsuite/g++.dg/template/pr98297.C6
-rw-r--r--gcc/testsuite/g++.dg/template/pr98372.C28
-rw-r--r--gcc/testsuite/g++.dg/template/pr98538.C18
-rw-r--r--gcc/testsuite/g++.dg/template/ttp33.C10
-rw-r--r--gcc/testsuite/g++.dg/tls/pr79288.C1
-rw-r--r--gcc/testsuite/g++.dg/tls/tls.exp2
-rw-r--r--gcc/testsuite/g++.dg/tm/tm.exp2
-rw-r--r--gcc/testsuite/g++.dg/torture/pr97474.C28
-rw-r--r--gcc/testsuite/g++.dg/torture/pr97960.C30
-rw-r--r--gcc/testsuite/g++.dg/torture/pr98568.C37
-rw-r--r--gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp2
-rw-r--r--gcc/testsuite/g++.dg/tree-prof/tree-prof.exp2
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/copyprop.C5
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/pr96930.C10
-rw-r--r--gcc/testsuite/g++.dg/tsan/tsan.exp2
-rw-r--r--gcc/testsuite/g++.dg/ubsan/align-4.C31
-rw-r--r--gcc/testsuite/g++.dg/ubsan/pr95693.C26
-rw-r--r--gcc/testsuite/g++.dg/ubsan/ubsan.exp2
-rw-r--r--gcc/testsuite/g++.dg/ubsan/vptr-18.C25
-rw-r--r--gcc/testsuite/g++.dg/vect/pr95401.cc13
-rw-r--r--gcc/testsuite/g++.dg/vect/pr95401a.cc13
-rw-r--r--gcc/testsuite/g++.dg/vect/vect.exp2
-rw-r--r--gcc/testsuite/g++.dg/warn/Warray-bounds15.C40
-rw-r--r--gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C38
-rw-r--r--gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-4.C26
-rw-r--r--gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-5.C129
-rw-r--r--gcc/testsuite/g++.dg/warn/Wmismatched-dealloc-2.C20
-rw-r--r--gcc/testsuite/g++.dg/warn/Wmismatched-dealloc.C4
-rw-r--r--gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-2.C249
-rw-r--r--gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-3.C159
-rw-r--r--gcc/testsuite/g++.dg/warn/Wmismatched-new-delete.C34
-rw-r--r--gcc/testsuite/g++.dg/warn/Wmissing-field-initializers-2.C44
-rw-r--r--gcc/testsuite/g++.dg/warn/Wnonnull10.C63
-rw-r--r--gcc/testsuite/g++.dg/warn/Wnonnull5.C10
-rw-r--r--gcc/testsuite/g++.dg/warn/Wnonnull9.C117
-rw-r--r--gcc/testsuite/g++.dg/warn/Wuninitialized-12.C40
-rw-r--r--gcc/testsuite/g++.dg/warn/Wuninitialized-13.C28
-rw-r--r--gcc/testsuite/g++.dg/warn/effc5.C17
-rw-r--r--gcc/testsuite/g++.dg/warn/miss-format-1.C4
-rw-r--r--gcc/testsuite/g++.dg/warn/pr98160.C30
-rw-r--r--gcc/testsuite/g++.dg/warn/pr98413.C23
-rw-r--r--gcc/testsuite/g++.old-deja/g++.brendan/README2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.brendan/visibility6.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.brendan/visibility8.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.jason/access8.C5
-rw-r--r--gcc/testsuite/g++.old-deja/g++.law/access4.C5
-rw-r--r--gcc/testsuite/g++.old-deja/g++.law/visibility12.C7
-rw-r--r--gcc/testsuite/g++.old-deja/g++.law/visibility4.C5
-rw-r--r--gcc/testsuite/g++.old-deja/g++.law/visibility8.C5
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/p658.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/access4.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/crash31.C3
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/const2.C1
-rw-r--r--gcc/testsuite/g++.old-deja/g++.robertl/README2
-rw-r--r--gcc/testsuite/g++.old-deja/old-deja.exp2
-rw-r--r--gcc/testsuite/g++.target/aarch64/aarch64.exp2
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/aarch64-sve.exp2
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/abd_1.C38
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp2
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle.exp2
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_abd_1.C60
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_abd_2.C60
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_abd_3.C49
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_abd_4.C43
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_arith_1.C89
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_arith_2.C89
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_arith_3.C91
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_arith_4.C91
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_bic_1.C40
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_bic_2.C31
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_bic_3.C36
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_bic_4.C36
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_mla_1.C33
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_mla_2.C33
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_mla_3.C33
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_mla_4.C36
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_mla_5.C33
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_mls_1.C33
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_mls_2.C33
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_mls_3.C33
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_mls_4.C36
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_mls_5.C33
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_shift_1.C92
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_shift_2.C91
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_shift_3.C94
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/cond_shift_4.C94
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/max_1.C73
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/min_1.C73
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/pr98177-1.C10
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve/pr98177-2.C10
-rw-r--r--gcc/testsuite/g++.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp4
-rw-r--r--gcc/testsuite/g++.target/arm/arm.exp2
-rw-r--r--gcc/testsuite/g++.target/arm/mve.exp2
-rw-r--r--gcc/testsuite/g++.target/arm/no_unique_address_1.C2
-rw-r--r--gcc/testsuite/g++.target/arm/no_unique_address_2.C2
-rw-r--r--gcc/testsuite/g++.target/i386/avx512f-pr96891-1.C37
-rw-r--r--gcc/testsuite/g++.target/i386/i386.exp2
-rw-r--r--gcc/testsuite/g++.target/i386/pr98847.C20
-rw-r--r--gcc/testsuite/g++.target/msp430/msp430.exp2
-rw-r--r--gcc/testsuite/g++.target/nios2/nios2.exp2
-rw-r--r--gcc/testsuite/g++.target/powerpc/powerpc.exp2
-rw-r--r--gcc/testsuite/g++.target/riscv/riscv.exp2
-rw-r--r--gcc/testsuite/g++.target/s390/pr98722.C12
-rw-r--r--gcc/testsuite/g++.target/s390/s390.exp2
-rw-r--r--gcc/testsuite/g++.target/xtensa/xtensa.exp2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/asmgoto-2.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/asmgoto-5.c1
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/compile.exp2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr97144.c24
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr98199.c7
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr98229.c7
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr98256.c9
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr98407.c10
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr98629.c11
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr98849.c60
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/execute.exp2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp2
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr95731.c40
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr98366.c13
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr98474.c30
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr98681.c18
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr98727.c20
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr98853-1.c21
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr98853-2.c19
-rw-r--r--gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp2
-rw-r--r--gcc/testsuite/gcc.dg-selftests/dg-final.exp2
-rw-r--r--gcc/testsuite/gcc.dg/20021029-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/README2
-rw-r--r--gcc/testsuite/gcc.dg/Walloca-2.c6
-rw-r--r--gcc/testsuite/gcc.dg/Wfree-nonheap-object-4.c107
-rw-r--r--gcc/testsuite/gcc.dg/Wmismatched-dealloc-2.c141
-rw-r--r--gcc/testsuite/gcc.dg/Wmismatched-dealloc-3.c265
-rw-r--r--gcc/testsuite/gcc.dg/Wmismatched-dealloc.c163
-rw-r--r--gcc/testsuite/gcc.dg/Wstrict-overflow-25.c2
-rw-r--r--gcc/testsuite/gcc.dg/Wvla-larger-than-4.c6
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/alloca-leak.c4
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/analyzer.exp2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/attr-malloc-1.c75
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/attr-malloc-2.c24
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/attr-malloc-4.c21
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/attr-malloc-5.c12
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/attr-malloc-6.c228
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/attr-malloc-CVE-2019-19078-usb-leak.c224
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/attr-malloc-misuses.c18
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/combined-conditionals-1.c55
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/conditionals-3.c8
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/data-model-1.c9
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/feasibility-1.c26
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/malloc-1.c3
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/malloc-paths-8.c7
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/params.c4
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/pr93355-localealias-feasibility-2.c31
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/pr93355-localealias-feasibility-3.c64
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/pr94851-1.c3
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/pr96651-2.c4
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/pr97072.c9
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/pr97074.c32
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/pr98073.c13
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/pr98293.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/pr98564.c6
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/pr98580-a.c9
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/pr98580-b.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/pr98628.c19
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/pr98918.c22
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/sensitive-1.c5
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/signal-4b.c18
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/sigsetjmp-5.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/sigsetjmp-6.c2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/single-field.c8
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/torture/analyzer-torture.exp2
-rw-r--r--gcc/testsuite/gcc.dg/analyzer/torture/conditionals-2.c8
-rw-r--r--gcc/testsuite/gcc.dg/array-quals-1.c40
-rw-r--r--gcc/testsuite/gcc.dg/asan/asan.exp2
-rw-r--r--gcc/testsuite/gcc.dg/asan/nested-1.c24
-rw-r--r--gcc/testsuite/gcc.dg/atomic/atomic.exp2
-rw-r--r--gcc/testsuite/gcc.dg/autopar/autopar.exp2
-rw-r--r--gcc/testsuite/gcc.dg/charset/charset.exp2
-rw-r--r--gcc/testsuite/gcc.dg/compat/compat.exp2
-rw-r--r--gcc/testsuite/gcc.dg/compat/struct-layout-1.exp2
-rw-r--r--gcc/testsuite/gcc.dg/cpp/assembl2.S2
-rw-r--r--gcc/testsuite/gcc.dg/cpp/cpp.exp2
-rw-r--r--gcc/testsuite/gcc.dg/cpp/trad/trad.exp2
-rw-r--r--gcc/testsuite/gcc.dg/cpp/ucs.c4
-rw-r--r--gcc/testsuite/gcc.dg/darwin-sections.c2
-rw-r--r--gcc/testsuite/gcc.dg/debug/debug.exp2
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-float.c10
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp2
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/inline6.c2
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-7.c7
-rw-r--r--gcc/testsuite/gcc.dg/debug/pr97714.c11
-rw-r--r--gcc/testsuite/gcc.dg/dfp/dfp.exp2
-rw-r--r--gcc/testsuite/gcc.dg/dg.exp2
-rw-r--r--gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp2
-rw-r--r--gcc/testsuite/gcc.dg/format/format.exp2
-rw-r--r--gcc/testsuite/gcc.dg/gimplefe-error-8.c9
-rw-r--r--gcc/testsuite/gcc.dg/goacc-gomp/goacc-gomp.exp2
-rw-r--r--gcc/testsuite/gcc.dg/goacc/goacc.exp2
-rw-r--r--gcc/testsuite/gcc.dg/goacc/pr98183.c15
-rw-r--r--gcc/testsuite/gcc.dg/gomp/gomp.exp2
-rw-r--r--gcc/testsuite/gcc.dg/gomp/pr98183.c15
-rw-r--r--gcc/testsuite/gcc.dg/gomp/simd-2.c3
-rw-r--r--gcc/testsuite/gcc.dg/gomp/simd-3.c3
-rw-r--r--gcc/testsuite/gcc.dg/gomp/task-detach-1.c20
-rw-r--r--gcc/testsuite/gcc.dg/graphite/graphite.exp2
-rw-r--r--gcc/testsuite/gcc.dg/guality/pr98219-1.c49
-rw-r--r--gcc/testsuite/gcc.dg/guality/pr98219-2.c63
-rw-r--r--gcc/testsuite/gcc.dg/hwasan/hwasan.exp2
-rw-r--r--gcc/testsuite/gcc.dg/intmax_t-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa.exp2
-rw-r--r--gcc/testsuite/gcc.dg/ipa/pr98222.c19
-rw-r--r--gcc/testsuite/gcc.dg/lto/lto.exp2
-rw-r--r--gcc/testsuite/gcc.dg/noncompile/noncompile.exp2
-rw-r--r--gcc/testsuite/gcc.dg/params/params.exp2
-rw-r--r--gcc/testsuite/gcc.dg/pch/pch.exp2
-rw-r--r--gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-3.c3
-rw-r--r--gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v1.c71
-rw-r--r--gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v2.c71
-rw-r--r--gcc/testsuite/gcc.dg/plugin/gil-1.c4
-rw-r--r--gcc/testsuite/gcc.dg/plugin/plugin.exp4
-rw-r--r--gcc/testsuite/gcc.dg/pr60195.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr69047.c4
-rw-r--r--gcc/testsuite/gcc.dg/pr78973.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr90248.c73
-rw-r--r--gcc/testsuite/gcc.dg/pr95582.c19
-rw-r--r--gcc/testsuite/gcc.dg/pr96239.c54
-rw-r--r--gcc/testsuite/gcc.dg/pr96674.c40
-rw-r--r--gcc/testsuite/gcc.dg/pr97172.c50
-rw-r--r--gcc/testsuite/gcc.dg/pr97750.c21
-rw-r--r--gcc/testsuite/gcc.dg/pr97981.c15
-rw-r--r--gcc/testsuite/gcc.dg/pr98029.c21
-rw-r--r--gcc/testsuite/gcc.dg/pr98190.c33
-rw-r--r--gcc/testsuite/gcc.dg/pr98211.c51
-rw-r--r--gcc/testsuite/gcc.dg/pr98255.c49
-rw-r--r--gcc/testsuite/gcc.dg/pr98271.c13
-rw-r--r--gcc/testsuite/gcc.dg/pr98272.c22
-rw-r--r--gcc/testsuite/gcc.dg/pr98330.c7
-rw-r--r--gcc/testsuite/gcc.dg/pr98331.c18
-rw-r--r--gcc/testsuite/gcc.dg/pr98721-1.c14
-rw-r--r--gcc/testsuite/gcc.dg/pr98721-2.c8
-rw-r--r--gcc/testsuite/gcc.dg/pr98766.c12
-rw-r--r--gcc/testsuite/gcc.dg/pr98793.c38
-rw-r--r--gcc/testsuite/gcc.dg/pr98807.c35
-rw-r--r--gcc/testsuite/gcc.dg/predict-8.c2
-rw-r--r--gcc/testsuite/gcc.dg/pthread-init-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/pthread-init-2.c3
-rw-r--r--gcc/testsuite/gcc.dg/qual-assign-7.c18
-rw-r--r--gcc/testsuite/gcc.dg/rtl/rtl.exp2
-rw-r--r--gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.before-fwprop.c2
-rw-r--r--gcc/testsuite/gcc.dg/sancov/sancov.exp2
-rw-r--r--gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp2
-rw-r--r--gcc/testsuite/gcc.dg/special/mips-abi.exp2
-rw-r--r--gcc/testsuite/gcc.dg/special/special.exp2
-rw-r--r--gcc/testsuite/gcc.dg/sso/sso.exp2
-rw-r--r--gcc/testsuite/gcc.dg/tls/tls.exp2
-rw-r--r--gcc/testsuite/gcc.dg/tm/tm.exp2
-rw-r--r--gcc/testsuite/gcc.dg/torture/ftrapv-2.c4
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr97559-1.c21
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr97559-2.c18
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr98191.c11
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr98219-1.c45
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr98219-2.c59
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr98235.c34
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr98289.c52
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr98640.c22
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr98758.c13
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr98773.c19
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr98786.c23
-rw-r--r--gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp2
-rw-r--r--gcc/testsuite/gcc.dg/torture/tls/tls.exp2
-rw-r--r--gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/asm-2.c4
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/asm-3.c4
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-20.c7
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/copy-sign-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-10.c44
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr47059.c45
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr56719.c33
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr94785.c36
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr94802-1.c68
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr95731.c22
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr95867.c14
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr96094.c34
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr96239.c18
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr96272.c37
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr96669-1.c59
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr96669-2.c30
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr96671-1.c51
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr96671-2.c51
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr96681.c35
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr96685-1.c52
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr96685-2.c40
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr96685-3.c43
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr96688.c24
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr96691.c21
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr96782.c17
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr96928.c38
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr97260.c11
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr98182.c18
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr98455.c19
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr98513.c47
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/reassoc-37.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-54.c6
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp2
-rw-r--r--gcc/testsuite/gcc.dg/tsan/atomic-fence.c11
-rw-r--r--gcc/testsuite/gcc.dg/tsan/tsan.exp2
-rw-r--r--gcc/testsuite/gcc.dg/ubsan/ubsan.exp2
-rw-r--r--gcc/testsuite/gcc.dg/uninit-38.c87
-rw-r--r--gcc/testsuite/gcc.dg/uninit-39.c47
-rw-r--r--gcc/testsuite/gcc.dg/uninit-40.c50
-rw-r--r--gcc/testsuite/gcc.dg/uninit-pr98578.c110
-rw-r--r--gcc/testsuite/gcc.dg/unused-9.c13
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-32.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-69.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-9.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-div-1.c5
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-pr68892.c20
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-pr95866.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-pr98516-1.c26
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-pr98516-2.c36
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-pr98544.c32
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-pr98685.c15
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-pr98854.c24
-rw-r--r--gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-byte.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-byte.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c60
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c79
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/complex-mla-template.c101
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/complex-mls-template.c101
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/complex-mul-template.c71
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c103
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/complex-operations.c358
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/complex.exp20
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c11
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c13
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c11
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c11
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c11
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c9
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c9
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c9
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c9
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c9
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c9
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c11
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c11
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c11
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c11
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c11
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp2
-rw-r--r--gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp2
-rw-r--r--gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp2
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr91403.c11
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr92205.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr94994.c61
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr97678.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr97929.c10
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr98069.c22
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr98302.c22
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr98308.c16
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr98560-1.c17
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr98560-2.c17
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr98674.c16
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr98848.c18
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-11b.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-43.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-45.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-11.c20
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-reduc-3.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-live-6.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-4.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect.exp2
-rw-r--r--gcc/testsuite/gcc.dg/vmx/vmx.exp2
-rw-r--r--gcc/testsuite/gcc.dg/vxworks/initpri1.c1
-rw-r--r--gcc/testsuite/gcc.dg/vxworks/initpri2.c1
-rw-r--r--gcc/testsuite/gcc.dg/vxworks/vxworks.exp2
-rw-r--r--gcc/testsuite/gcc.dg/weak/weak.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/acker1.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/arm-isr.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/bprob.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/dectest.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/dhry.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/gcov.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/godump-1.c26
-rw-r--r--gcc/testsuite/gcc.misc-tests/godump.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/help.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/i386-prefetch.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/linkage.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/matrix1.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/mg-2.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/mg.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/options.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/output.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/outputs.exp48
-rw-r--r--gcc/testsuite/gcc.misc-tests/sieve.exp2
-rw-r--r--gcc/testsuite/gcc.misc-tests/sort2.exp2
-rw-r--r--gcc/testsuite/gcc.src/maintainers.exp2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/aarch64.exp2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/acle/acle.exp2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h67
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_sat_op.inc43
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/p64_p128.c46
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/smlal-smlsl-mull-optimized.c45
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_sat_op.inc21
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high.inc89
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_lane.inc71
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_laneq.inc71
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_n.inc62
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high.c20
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high_lane.c16
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high_laneq.c16
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high_n.c16
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high.c24
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_lane.c20
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_laneq.c20
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_n.c20
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high.c78
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high_lane.c69
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high_laneq.c69
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high_n.c61
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqabs.c29
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqadd.c91
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl.inc17
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_lane.inc21
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_n.inc17
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal.c9
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_lane.c14
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_n.c9
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl.c9
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_lane.c14
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_n.c9
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh.c42
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_lane.c42
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_n.c42
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull.c30
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_lane.c30
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_n.c29
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovn.c49
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovun.c31
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqneg.c29
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh.inc42
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh_lane.inc45
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlah.c20
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlah_lane.c20
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh.c20
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh_lane.c20
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh.c57
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_lane.c65
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_n.c65
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshl.c521
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrn_n.c74
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrun_n.c72
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshl.c376
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshl_n.c117
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshlu_n.c118
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrn_n.c75
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrun_n.c46
-rw-r--r--gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqsub.c92
-rw-r--r--gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c4
-rw-r--r--gcc/testsuite/gcc.target/aarch64/cpunative/aarch64-cpunative.exp2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/fp16/fp16.exp2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/narrow_high-intrinsics.c12
-rw-r--r--gcc/testsuite/gcc.target/aarch64/pr89057.c16
-rw-r--r--gcc/testsuite/gcc.target/aarch64/pr97701.c17
-rw-r--r--gcc/testsuite/gcc.target/aarch64/pr98603.c11
-rw-r--r--gcc/testsuite/gcc.target/aarch64/simd/simd.exp2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/simd/vaddlv_1.c56
-rw-r--r--gcc/testsuite/gcc.target/aarch64/simd/vmovl_high_1.c32
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/aarch64-sve.exp2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle.exp2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb.c47
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd.c47
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh.c47
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw.c47
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_s8.c8
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_u8.c8
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/acle/general/ldff1_8.c32
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/adr_6.c43
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/asrdiv_4.c29
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cnot_2.c29
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1.c32
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1_run.c26
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_2.c35
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_2_run.c26
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_3.c35
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_3_run.c26
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4.c32
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4_run.c26
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_5.c32
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_5_run.c26
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_6.c31
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_6_run.c26
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5.c49
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5_run.c26
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_unary_6.c53
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_unary_6_run.c27
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_unary_7.c48
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_unary_7_run.c26
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_unary_8.c50
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_unary_8_run.c28
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5.c33
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5_run.c26
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_6.c33
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_6_run.c26
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_7.c29
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_7_run.c26
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_8.c32
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_8_run.c26
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/cost_model_11.c12
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_5.c2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/mla_2.c34
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/mls_2.c34
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/mul_2.c52
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/mul_highpart_3.c34
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/pcs/aarch64-sve-pcs.exp2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/pr97092.c24
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/pr97144.c26
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/pr98177-1.c10
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/pr98177-2.c10
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/pr98214.c21
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/pr98535.c18
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/ptest_1.c10
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/sel_1.c2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/sel_2.c2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/sel_3.c2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/shift_2.c81
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve2/aarch64-sve2.exp2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp4
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle.exp2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/torture/aarch64-torture.exp2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/usaba_1.c29
-rw-r--r--gcc/testsuite/gcc.target/aarch64/vdup_lane_2.c2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/with-tune-config.c7
-rw-r--r--gcc/testsuite/gcc.target/aarch64/with-tune-march.c8
-rw-r--r--gcc/testsuite/gcc.target/aarch64/with-tune-mcpu.c8
-rw-r--r--gcc/testsuite/gcc.target/aarch64/with-tune-mtune.c7
-rw-r--r--gcc/testsuite/gcc.target/alpha/alpha.exp2
-rw-r--r--gcc/testsuite/gcc.target/arc/arc.exp2
-rw-r--r--gcc/testsuite/gcc.target/arc/loop-3.c2
-rw-r--r--gcc/testsuite/gcc.target/arc/pmpyd.c15
-rw-r--r--gcc/testsuite/gcc.target/arc/tmac-1.c2
-rw-r--r--gcc/testsuite/gcc.target/arc/uncached-9.c39
-rw-r--r--gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp2
-rw-r--r--gcc/testsuite/gcc.target/arm/aapcs/vfp22.c1
-rw-r--r--gcc/testsuite/gcc.target/arm/aapcs/vfp23.c1
-rw-r--r--gcc/testsuite/gcc.target/arm/aapcs/vfp24.c1
-rw-r--r--gcc/testsuite/gcc.target/arm/aapcs/vfp25.c1
-rw-r--r--gcc/testsuite/gcc.target/arm/acle/acle.exp2
-rw-r--r--gcc/testsuite/gcc.target/arm/arm.exp2
-rw-r--r--gcc/testsuite/gcc.target/arm/cmse/cmse.exp2
-rw-r--r--gcc/testsuite/gcc.target/arm/data-rel-1.c1
-rw-r--r--gcc/testsuite/gcc.target/arm/data-rel-2.c1
-rw-r--r--gcc/testsuite/gcc.target/arm/data-rel-3.c1
-rw-r--r--gcc/testsuite/gcc.target/arm/fp16-aapcs-2.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/headmerge-1.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/headmerge-2.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/ivopts.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/lob2.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/lob3.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/lob4.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/lob5.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/lto/lto.exp2
-rw-r--r--gcc/testsuite/gcc.target/arm/memset-inline-2.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/multilib.exp2
-rw-r--r--gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_libcall1.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_libcall2.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/mve/mve.exp2
-rw-r--r--gcc/testsuite/gcc.target/arm/pr44788.c1
-rw-r--r--gcc/testsuite/gcc.target/arm/pr52006.c1
-rw-r--r--gcc/testsuite/gcc.target/arm/pr59858.c1
-rw-r--r--gcc/testsuite/gcc.target/arm/pr78255-2.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/pr97872.c12
-rw-r--r--gcc/testsuite/gcc.target/arm/pr97969.c54
-rw-r--r--gcc/testsuite/gcc.target/arm/pr98636.c6
-rw-r--r--gcc/testsuite/gcc.target/arm/pure-code/pure-code.exp2
-rw-r--r--gcc/testsuite/gcc.target/arm/require-pic-register-loc.c17
-rw-r--r--gcc/testsuite/gcc.target/arm/simd/mve-vand.c63
-rw-r--r--gcc/testsuite/gcc.target/arm/simd/mve-vbic.c65
-rw-r--r--gcc/testsuite/gcc.target/arm/simd/mve-veor.c61
-rw-r--r--gcc/testsuite/gcc.target/arm/simd/mve-vmvn.c35
-rw-r--r--gcc/testsuite/gcc.target/arm/simd/mve-vneg.c52
-rw-r--r--gcc/testsuite/gcc.target/arm/simd/mve-vorn.c38
-rw-r--r--gcc/testsuite/gcc.target/arm/simd/mve-vorr.c64
-rw-r--r--gcc/testsuite/gcc.target/arm/simd/mve-vshl.c62
-rw-r--r--gcc/testsuite/gcc.target/arm/simd/mve-vshr.c59
-rw-r--r--gcc/testsuite/gcc.target/arm/simd/mve-vsub_1.c1
-rw-r--r--gcc/testsuite/gcc.target/arm/simd/simd.exp2
-rw-r--r--gcc/testsuite/gcc.target/arm/simd/vceqz_p64.c18
-rw-r--r--gcc/testsuite/gcc.target/arm/simd/vceqzq_p64.c18
-rw-r--r--gcc/testsuite/gcc.target/arm/tlscall.c1
-rw-r--r--gcc/testsuite/gcc.target/arm/vect-half-floats.c14
-rw-r--r--gcc/testsuite/gcc.target/avr/avr.exp82
-rw-r--r--gcc/testsuite/gcc.target/avr/mmcu/avr-mmcu.exp2
-rw-r--r--gcc/testsuite/gcc.target/avr/torture/avr-torture.exp2
-rw-r--r--gcc/testsuite/gcc.target/bfin/bfin.exp2
-rw-r--r--gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp2
-rw-r--r--gcc/testsuite/gcc.target/bpf/bpf.exp2
-rw-r--r--gcc/testsuite/gcc.target/cris/cris.exp2
-rw-r--r--gcc/testsuite/gcc.target/cris/torture/cris-torture.exp2
-rw-r--r--gcc/testsuite/gcc.target/csky/csky.exp2
-rw-r--r--gcc/testsuite/gcc.target/epiphany/epiphany.exp2
-rw-r--r--gcc/testsuite/gcc.target/frv/frv.exp2
-rw-r--r--gcc/testsuite/gcc.target/gcn/fpdiv.c38
-rw-r--r--gcc/testsuite/gcc.target/gcn/gcn.exp2
-rw-r--r--gcc/testsuite/gcc.target/h8300/h8300.exp2
-rw-r--r--gcc/testsuite/gcc.target/hppa/hppa.exp2
-rw-r--r--gcc/testsuite/gcc.target/i386/20051216-1.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/avx2-pr98461.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512bw-pr96891-1.c75
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512dq-vandnpd-2.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512dq-vandnps-2.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512dq-vandpd-2.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512dq-vandps-2.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512dq-vorpd-2.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512dq-vorps-2.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512dq-vxorpd-2.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512dq-vxorps-2.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-pr96891-1.c40
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-pr96891-2.c30
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-pr96891-3.c39
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512vpopcntdq-pr97770-2.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512vpopcntdqvl-pr97770-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/bitwise_mask_op-3.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/i386.exp2
-rw-r--r--gcc/testsuite/gcc.target/i386/iamcu/abi-iamcu.exp2
-rw-r--r--gcc/testsuite/gcc.target/i386/ifcvt-onecmpl-abs-1.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/m128-check.h9
-rw-r--r--gcc/testsuite/gcc.target/i386/m256-check.h4
-rw-r--r--gcc/testsuite/gcc.target/i386/m512-check.h4
-rw-r--r--gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr66821.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr78102.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr79804.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/pr88178.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr92469.c24
-rw-r--r--gcc/testsuite/gcc.target/i386/pr92645-6.c34
-rw-r--r--gcc/testsuite/gcc.target/i386/pr92645-7.c24
-rw-r--r--gcc/testsuite/gcc.target/i386/pr92658-avx2-2.c192
-rw-r--r--gcc/testsuite/gcc.target/i386/pr92658-avx512bw-2.c280
-rw-r--r--gcc/testsuite/gcc.target/i386/pr92658-avx512bw.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr92658-sse4-2.c148
-rw-r--r--gcc/testsuite/gcc.target/i386/pr94440-1.c23
-rw-r--r--gcc/testsuite/gcc.target/i386/pr94440-2.c19
-rw-r--r--gcc/testsuite/gcc.target/i386/pr94802.c59
-rw-r--r--gcc/testsuite/gcc.target/i386/pr95021-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr95021-3.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr95771.c67
-rw-r--r--gcc/testsuite/gcc.target/i386/pr95852-1.c266
-rw-r--r--gcc/testsuite/gcc.target/i386/pr95852-2.c266
-rw-r--r--gcc/testsuite/gcc.target/i386/pr95852-3.c266
-rw-r--r--gcc/testsuite/gcc.target/i386/pr95852-4.c266
-rw-r--r--gcc/testsuite/gcc.target/i386/pr95905-1.c26
-rw-r--r--gcc/testsuite/gcc.target/i386/pr95905-2.c82
-rw-r--r--gcc/testsuite/gcc.target/i386/pr95905-3.c82
-rw-r--r--gcc/testsuite/gcc.target/i386/pr95905-4.c82
-rw-r--r--gcc/testsuite/gcc.target/i386/pr96271.c11
-rw-r--r--gcc/testsuite/gcc.target/i386/pr96793-1.c28
-rw-r--r--gcc/testsuite/gcc.target/i386/pr96793-2.c28
-rw-r--r--gcc/testsuite/gcc.target/i386/pr96793.c28
-rw-r--r--gcc/testsuite/gcc.target/i386/pr96938.c66
-rw-r--r--gcc/testsuite/gcc.target/i386/pr97510.c18
-rw-r--r--gcc/testsuite/gcc.target/i386/pr97684.c24
-rw-r--r--gcc/testsuite/gcc.target/i386/pr97978.c22
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98100.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98169.c29
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98212.c21
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98264.c22
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98274.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98289.c54
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98334.c36
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98482-1.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98482-2.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98495-1.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98495-2.c11
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98495-3.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98495-4.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98495-5.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98522.c39
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98567-1.c31
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98567-2.c31
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98585.c14
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98603.c11
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98667-1.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98667-2.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98667-3.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98670.c16
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98694.c41
-rw-r--r--gcc/testsuite/gcc.target/i386/pr98833.c9
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-andnps-1.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-andps-1.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-andnpd-1.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-andpd-1.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-mmx-pextrw.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-pr98461-2.c25
-rw-r--r--gcc/testsuite/gcc.target/i386/sse2-pr98461.c50
-rw-r--r--gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp2
-rw-r--r--gcc/testsuite/gcc.target/i386/uintr-2.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/uintr-3.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/uintr-4.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/uintr-5.c4
-rw-r--r--gcc/testsuite/gcc.target/i386/x86-64-v2-msabi.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/x86-64-v2-other.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/x86-64-v2.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/x86-64-v3-msabi.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/x86-64-v3-other.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/x86-64-v3.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/x86-64-v4-msabi.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/x86-64-v4-other.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/x86-64-v4.c6
-rw-r--r--gcc/testsuite/gcc.target/ia64/ia64.exp2
-rw-r--r--gcc/testsuite/gcc.target/m68k/m68k.exp2
-rw-r--r--gcc/testsuite/gcc.target/microblaze/microblaze.exp2
-rw-r--r--gcc/testsuite/gcc.target/mips/inter/mips16-inter.exp2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-nonpic/README2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.exp2
-rw-r--r--gcc/testsuite/gcc.target/mips/mips.exp2
-rw-r--r--gcc/testsuite/gcc.target/msp430/msp430.exp2
-rw-r--r--gcc/testsuite/gcc.target/nds32/nds32.exp2
-rw-r--r--gcc/testsuite/gcc.target/nios2/nios2.exp2
-rw-r--r--gcc/testsuite/gcc.target/nvptx/nvptx.exp2
-rw-r--r--gcc/testsuite/gcc.target/or1k/or1k.exp2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/builtins-1-p10-runnable.c398
-rw-r--r--gcc/testsuite/gcc.target/powerpc/builtins-1.fold.h4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/builtins-2.c6
-rw-r--r--gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/float128-longdouble-math.c442
-rw-r--r--gcc/testsuite/gcc.target/powerpc/float128-longdouble-stdio.c36
-rw-r--r--gcc/testsuite/gcc.target/powerpc/float128-math.c16
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-extract-char.p7.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p7.c3
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p7.c3
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p8.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-extract-int.p7.c3
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-extract-int.p8.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-extract-short.p7.c3
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-extract-short.p8.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-insert-char-p8.c17
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-insert-char-p9.c15
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-insert-double.c15
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-insert-float-p8.c12
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-insert-float-p9.c11
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-insert-int-p8.c16
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-insert-int-p9.c13
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-insert-longlong.c14
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-insert-short-p8.c13
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-insert-short-p9.c17
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-char.c4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-int.c4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-longlong.c4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-short.c4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-char.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-int.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-longlong.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-short.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/m128-check.h8
-rw-r--r--gcc/testsuite/gcc.target/powerpc/powerpc.exp2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/ppc-fortran/ieee128-math.f902
-rw-r--r--gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr79251-run.p8.c14
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr79251-run.p9.c14
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr79251.h36
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr79251.p8.c22
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr79251.p9.c22
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr88233.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr91903.c73
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr96933-1.c1
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr96933-2.c1
-rw-r--r--gcc/testsuite/gcc.target/powerpc/sse-andnps-1.c6
-rw-r--r--gcc/testsuite/gcc.target/powerpc/sse-andps-1.c4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/sse-movhps-1.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/sse-movlps-1.c2
-rw-r--r--gcc/testsuite/gcc.target/powerpc/sse2-andnpd-1.c6
-rw-r--r--gcc/testsuite/gcc.target/powerpc/sse2-andpd-1.c4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/vsu/vsu.exp2
-rw-r--r--gcc/testsuite/gcc.target/pru/pru.exp2
-rw-r--r--gcc/testsuite/gcc.target/riscv/attribute-18.c4
-rw-r--r--gcc/testsuite/gcc.target/riscv/pr98777.c31
-rw-r--r--gcc/testsuite/gcc.target/riscv/predef-10.c43
-rw-r--r--gcc/testsuite/gcc.target/riscv/predef-11.c43
-rw-r--r--gcc/testsuite/gcc.target/riscv/predef-12.c43
-rw-r--r--gcc/testsuite/gcc.target/riscv/predef-13.c43
-rw-r--r--gcc/testsuite/gcc.target/riscv/riscv.exp2
-rw-r--r--gcc/testsuite/gcc.target/rl78/rl78.exp2
-rw-r--r--gcc/testsuite/gcc.target/rx/rx.exp2
-rw-r--r--gcc/testsuite/gcc.target/s390/md/atomic_exchange-1.c2
-rw-r--r--gcc/testsuite/gcc.target/s390/s390.exp8
-rw-r--r--gcc/testsuite/gcc.target/s390/vector/long-double-vx-macro-off-on.c11
-rw-r--r--gcc/testsuite/gcc.target/s390/vector/long-double-vx-macro-on-off.c11
-rw-r--r--gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-eq.c2
-rw-r--r--gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-eq.c2
-rw-r--r--gcc/testsuite/gcc.target/sh/sh.exp2
-rw-r--r--gcc/testsuite/gcc.target/sh/torture/sh-torture.exp2
-rw-r--r--gcc/testsuite/gcc.target/sparc/sparc.exp2
-rw-r--r--gcc/testsuite/gcc.target/tic6x/builtins/c6x-builtins.exp2
-rw-r--r--gcc/testsuite/gcc.target/tic6x/tic6x.exp2
-rw-r--r--gcc/testsuite/gcc.target/vax/cmpelim-eq-notsi.c4
-rw-r--r--gcc/testsuite/gcc.target/vax/cmpelim-le-notsi.c4
-rw-r--r--gcc/testsuite/gcc.target/vax/cmpelim-lt-notsi.c4
-rw-r--r--gcc/testsuite/gcc.target/vax/push.c27
-rw-r--r--gcc/testsuite/gcc.target/vax/vax.exp2
-rw-r--r--gcc/testsuite/gcc.target/visium/visium.exp2
-rw-r--r--gcc/testsuite/gcc.target/x86_64/abi/README.gcc2
-rw-r--r--gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp2
-rw-r--r--gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp2
-rw-r--r--gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp2
-rw-r--r--gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp2
-rw-r--r--gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S2
-rw-r--r--gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp2
-rw-r--r--gcc/testsuite/gcc.target/xstormy16/xstormy16.exp2
-rw-r--r--gcc/testsuite/gcc.target/xtensa/bswap.c14
-rw-r--r--gcc/testsuite/gcc.target/xtensa/pr98285.c54
-rw-r--r--gcc/testsuite/gcc.target/xtensa/shifts.c31
-rw-r--r--gcc/testsuite/gcc.target/xtensa/xtensa.exp2
-rw-r--r--gcc/testsuite/gcc.test-framework/README2
-rw-r--r--gcc/testsuite/gcc.test-framework/gen_directive_tests2
-rw-r--r--gcc/testsuite/gcc.test-framework/test-framework.awk2
-rw-r--r--gcc/testsuite/gcc.test-framework/test-framework.exp2
-rw-r--r--gcc/testsuite/gdc.dg/asan/asan.exp2
-rw-r--r--gcc/testsuite/gdc.dg/debug/debug.exp28
-rw-r--r--gcc/testsuite/gdc.dg/debug/dwarf2/dwarf2.exp31
-rw-r--r--gcc/testsuite/gdc.dg/debug/dwarf2/imports/pr98067.d3
-rw-r--r--gcc/testsuite/gdc.dg/debug/dwarf2/langdw2.d7
-rw-r--r--gcc/testsuite/gdc.dg/debug/dwarf2/langdw3.d6
-rw-r--r--gcc/testsuite/gdc.dg/debug/dwarf2/pr98067.d6
-rw-r--r--gcc/testsuite/gdc.dg/debug/trivial.d6
-rw-r--r--gcc/testsuite/gdc.dg/dg.exp2
-rw-r--r--gcc/testsuite/gdc.dg/lto/lto.exp2
-rw-r--r--gcc/testsuite/gdc.dg/pr98277.d13
-rw-r--r--gcc/testsuite/gdc.dg/pr98427.d23
-rw-r--r--gcc/testsuite/gdc.dg/torture/torture.exp2
-rw-r--r--gcc/testsuite/gdc.dg/ubsan/ubsan.exp2
-rw-r--r--gcc/testsuite/gdc.test/compilable/99bottles.d505
-rw-r--r--gcc/testsuite/gdc.test/compilable/Test16206.d28
-rw-r--r--gcc/testsuite/gdc.test/compilable/b16382.d6
-rw-r--r--gcc/testsuite/gdc.test/compilable/b17111.d7
-rw-r--r--gcc/testsuite/gdc.test/compilable/checkimports3.d12
-rw-r--r--gcc/testsuite/gdc.test/compilable/compilable.exp2
-rw-r--r--gcc/testsuite/gdc.test/compilable/compile1.d29
-rw-r--r--gcc/testsuite/gdc.test/compilable/ddoc14633.d6
-rw-r--r--gcc/testsuite/gdc.test/compilable/ddoc3.d2
-rw-r--r--gcc/testsuite/gdc.test/compilable/deprecate14283.d6
-rw-r--r--gcc/testsuite/gdc.test/compilable/diag11066.d6
-rw-r--r--gcc/testsuite/gdc.test/compilable/diag12598.d (renamed from gcc/testsuite/gdc.test/fail_compilation/diag12598.d)7
-rw-r--r--gcc/testsuite/gdc.test/compilable/diag3243.d6
-rw-r--r--gcc/testsuite/gdc.test/compilable/dip22d.d10
-rw-r--r--gcc/testsuite/gdc.test/compilable/extra-files/header1.d49
-rw-r--r--gcc/testsuite/gdc.test/compilable/imports/checkimports3a.d (renamed from gcc/testsuite/gdc.test/fail_compilation/imports/checkimports3a.d)0
-rw-r--r--gcc/testsuite/gdc.test/compilable/imports/checkimports3b.d (renamed from gcc/testsuite/gdc.test/fail_compilation/imports/checkimports3b.d)0
-rw-r--r--gcc/testsuite/gdc.test/compilable/imports/checkimports3c.d (renamed from gcc/testsuite/gdc.test/fail_compilation/imports/checkimports3c.d)0
-rw-r--r--gcc/testsuite/gdc.test/compilable/imports/diag12598a.d (renamed from gcc/testsuite/gdc.test/fail_compilation/imports/diag12598a.d)0
-rw-r--r--gcc/testsuite/gdc.test/compilable/imports/dip22d.d5
-rw-r--r--gcc/testsuite/gdc.test/compilable/imports/dip22e.d4
-rw-r--r--gcc/testsuite/gdc.test/compilable/imports/pkgmodule/package.d3
-rw-r--r--gcc/testsuite/gdc.test/compilable/imports/pkgmodule/plainmodule.d2
-rw-r--r--gcc/testsuite/gdc.test/compilable/imports/plainpackage/plainmodule.d4
-rw-r--r--gcc/testsuite/gdc.test/compilable/imports/test15371.d9
-rw-r--r--gcc/testsuite/gdc.test/compilable/interpret3.d9
-rw-r--r--gcc/testsuite/gdc.test/compilable/isZeroInit.d78
-rw-r--r--gcc/testsuite/gdc.test/compilable/isreturnonstack.d7
-rw-r--r--gcc/testsuite/gdc.test/compilable/line.d4
-rw-r--r--gcc/testsuite/gdc.test/compilable/test11563.d2
-rw-r--r--gcc/testsuite/gdc.test/compilable/test12527.d2
-rw-r--r--gcc/testsuite/gdc.test/compilable/test12567a.d5
-rw-r--r--gcc/testsuite/gdc.test/compilable/test12567b.d5
-rw-r--r--gcc/testsuite/gdc.test/compilable/test12567d.d5
-rw-r--r--gcc/testsuite/gdc.test/compilable/test12567e.d5
-rw-r--r--gcc/testsuite/gdc.test/compilable/test13053.d6
-rw-r--r--gcc/testsuite/gdc.test/compilable/test14375.d6
-rw-r--r--gcc/testsuite/gdc.test/compilable/test15019.d18
-rw-r--r--gcc/testsuite/gdc.test/compilable/test15326.d8
-rw-r--r--gcc/testsuite/gdc.test/compilable/test15371.d10
-rw-r--r--gcc/testsuite/gdc.test/compilable/test15785.d5
-rw-r--r--gcc/testsuite/gdc.test/compilable/test15856.d2
-rw-r--r--gcc/testsuite/gdc.test/compilable/test15925.d18
-rw-r--r--gcc/testsuite/gdc.test/compilable/test16002.d24
-rw-r--r--gcc/testsuite/gdc.test/compilable/test16525.d8
-rw-r--r--gcc/testsuite/gdc.test/compilable/test17143.d4
-rw-r--r--gcc/testsuite/gdc.test/compilable/test17791.d23
-rw-r--r--gcc/testsuite/gdc.test/compilable/test17908.d17
-rw-r--r--gcc/testsuite/gdc.test/compilable/test7815.d6
-rw-r--r--gcc/testsuite/gdc.test/compilable/test9701.d58
-rw-r--r--gcc/testsuite/gdc.test/compilable/testDIP37.d1
-rw-r--r--gcc/testsuite/gdc.test/compilable/testInference.d10
-rw-r--r--gcc/testsuite/gdc.test/compilable/testcheckimports.d8
-rw-r--r--gcc/testsuite/gdc.test/compilable/testheader1.d8
-rw-r--r--gcc/testsuite/gdc.test/compilable/testheader1i.d8
-rw-r--r--gcc/testsuite/gdc.test/compilable/testheaderudamodule.d2
-rw-r--r--gcc/testsuite/gdc.test/compilable/testparse.d2
-rw-r--r--gcc/testsuite/gdc.test/compilable/traits.d130
-rw-r--r--gcc/testsuite/gdc.test/compilable/vcg-ast.d43
-rw-r--r--gcc/testsuite/gdc.test/compilable/warn3882.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/bug5.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/bug5b.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/bug8150a.d9
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/bug8150b.d10
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/checkimports1a.d20
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/checkimports1b.d20
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/checkimports1c.d20
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/checkimports2a.d15
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/checkimports2b.d13
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/checkimports2c.d14
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/checkimports3.d15
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/diag10169.d3
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/diag10327.d10
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/diag15713.d1
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/diag5385.d24
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/dip22a.d17
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/dip22b.d4
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/dip22d.d12
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/dip22e.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/disable.d26
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail10207.d2
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail104.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail10528.d20
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail10905.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail10968.d12
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail11355.d2
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail115.d9
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail11503a.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail11503b.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail11503c.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail11503d.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail12.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail121.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail12485.d11
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail137.d23
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail14.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail14486.d39
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail15.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail15044.d2
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail15616b.d1
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail16.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail16206a.d12
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail16206b.d12
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail17.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail17502.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail18143.d43
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail18719.d41
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail196.d22
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail19890a.d1
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail19890b.d1
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail199.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail200.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail201.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail202.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail203.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail204.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail205.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail206.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail217.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail220.d10
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail225.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail232.d11
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail239.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail252.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail257.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail258.d10
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail262.d2
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail2740.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail276.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail279.d10
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail280.d9
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail281.d9
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail308.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail313.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail3150.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail316.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail324.d2
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail3290.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail341.d4
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail344.d14
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail346.d9
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail356a.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail356b.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail356c.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail3581a.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail3581b.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail359.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail3673a.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail3673b.d10
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail3731.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail3753.d1
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail3895.d9
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4206.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4269a.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4269b.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4269c.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4269d.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4269e.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4269f.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4269g.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375a.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375b.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375c.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375d.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375e.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375f.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375g.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375h.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375i.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375j.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375k.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375l.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375m.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375o.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375p.d9
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375q.d9
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375r.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375s.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375t.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375u.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375v.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375w.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375x.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4375y.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4510.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4511.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4517.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4611.d1
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail47.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail4958.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail5435.d30
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail56.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail5634.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail57.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail5733.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail58.d9
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail5851.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail5953a1.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail5953a2.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail5953s1.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail5953s2.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail60.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail6029.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail6242.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail6458.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail6497.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail6561.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail6611.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail6781.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail6968.d12
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7173.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7178.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7234.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7369.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7424b.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7424c.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7424d.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7424e.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7424f.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7424g.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7424h.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7424i.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7524a.d10
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7524b.d9
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7603a.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7603b.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7603c.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail77.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7702.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7751.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7851.d10
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7859.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail7861.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail8009.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail8032.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail8313.d10
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail8691.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail9301.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail9346.d4
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail94.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail9613.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail_compilation.exp2
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail_contracts1.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail_contracts2.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail_contracts3.d14
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail_contracts4.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fail_isZeroInit.d12
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/failinout1.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/failinout2.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/failinout3748a.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/failinout3748b.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/failsafea.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/failsafeb.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/failsafec.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fix350a.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/fix350b.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice10273.d12
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice10283.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice10599.d13
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice11963.d9
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice11965.d13
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice11967.d11
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice11968.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice11974.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice11982.d15
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice12673.d10
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice13644.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice15855.d21
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice7782.d11
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice8604.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice8630.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice8742.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice9013.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice9254a.d11
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice9254b.d11
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/ice9254c.d11
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/imphint.d3
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/imports/imp15925.d (renamed from gcc/testsuite/gdc.test/compilable/imports/imp15925.d)0
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/imports/imp21353.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/imports/test15117a.d (renamed from gcc/testsuite/gdc.test/compilable/imports/test15117a.d)0
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/isreturnonstack.d12
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/lookup.d4
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/staticarrayoverflow.d2
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test1.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test11176.d1
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test143.d10
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test15117.d (renamed from gcc/testsuite/gdc.test/compilable/test15177.d)9
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test15399.d1
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test15785.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test15785b.d8
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test15897.d2
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test15925.d19
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test16002.d15
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test16188.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test17096.d50
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test17908a.d15
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test17908b.d14
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test21353.d26
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test314.d10
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test5412a.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test5412b.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test5412c.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test5412c2.di1
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test8509.d7
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test8751.d6
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test9701.d63
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/test9701b.d22
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/trait_loc_err.d15
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/trait_loc_ov_err.d40
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/traits.d27
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/traits_child.d17
-rw-r--r--gcc/testsuite/gdc.test/fail_compilation/udaparams.d57
-rw-r--r--gcc/testsuite/gdc.test/runnable/aliasthis.d32
-rw-r--r--gcc/testsuite/gdc.test/runnable/constfold.d7
-rw-r--r--gcc/testsuite/gdc.test/runnable/ctorpowtests.d3
-rw-r--r--gcc/testsuite/gdc.test/runnable/declaration.d13
-rw-r--r--gcc/testsuite/gdc.test/runnable/foreach5.d13
-rw-r--r--gcc/testsuite/gdc.test/runnable/funclit.d16
-rw-r--r--gcc/testsuite/gdc.test/runnable/future.d4
-rw-r--r--gcc/testsuite/gdc.test/runnable/imports/link15194std.d1
-rw-r--r--gcc/testsuite/gdc.test/runnable/imports/test18322import.d14
-rw-r--r--gcc/testsuite/gdc.test/runnable/imports/testmangle.d66
-rw-r--r--gcc/testsuite/gdc.test/runnable/interpret.d20
-rw-r--r--gcc/testsuite/gdc.test/runnable/lazy.d2
-rw-r--r--gcc/testsuite/gdc.test/runnable/link10920.d3
-rw-r--r--gcc/testsuite/gdc.test/runnable/link15021.d7
-rw-r--r--gcc/testsuite/gdc.test/runnable/link6574.d20
-rw-r--r--gcc/testsuite/gdc.test/runnable/mangle.d92
-rw-r--r--gcc/testsuite/gdc.test/runnable/mixin2.d34
-rw-r--r--gcc/testsuite/gdc.test/runnable/nested.d6
-rw-r--r--gcc/testsuite/gdc.test/runnable/nulltype.d13
-rw-r--r--gcc/testsuite/gdc.test/runnable/property2.d20
-rw-r--r--gcc/testsuite/gdc.test/runnable/runnable.exp2
-rw-r--r--gcc/testsuite/gdc.test/runnable/sdtor.d43
-rw-r--r--gcc/testsuite/gdc.test/runnable/stress.d20
-rw-r--r--gcc/testsuite/gdc.test/runnable/structlit.d8
-rw-r--r--gcc/testsuite/gdc.test/runnable/template3.d15
-rw-r--r--gcc/testsuite/gdc.test/runnable/template4.d44
-rw-r--r--gcc/testsuite/gdc.test/runnable/template8.d8
-rw-r--r--gcc/testsuite/gdc.test/runnable/template9.d65
-rw-r--r--gcc/testsuite/gdc.test/runnable/test15.d4
-rw-r--r--gcc/testsuite/gdc.test/runnable/test17373.d20
-rw-r--r--gcc/testsuite/gdc.test/runnable/test17878.d19
-rw-r--r--gcc/testsuite/gdc.test/runnable/test18322.d21
-rw-r--r--gcc/testsuite/gdc.test/runnable/test22.d4
-rw-r--r--gcc/testsuite/gdc.test/runnable/test34.d7
-rw-r--r--gcc/testsuite/gdc.test/runnable/test42.d44
-rw-r--r--gcc/testsuite/gdc.test/runnable/test8.d2
-rw-r--r--gcc/testsuite/gdc.test/runnable/testaa.d2
-rw-r--r--gcc/testsuite/gdc.test/runnable/testaa2.d2
-rw-r--r--gcc/testsuite/gdc.test/runnable/testassign.d20
-rw-r--r--gcc/testsuite/gdc.test/runnable/testconst.d45
-rw-r--r--gcc/testsuite/gdc.test/runnable/testcontracts.d133
-rw-r--r--gcc/testsuite/gdc.test/runnable/testdstress.d18
-rw-r--r--gcc/testsuite/gdc.test/runnable/testenum.d9
-rw-r--r--gcc/testsuite/gdc.test/runnable/testmodule.d4
-rw-r--r--gcc/testsuite/gdc.test/runnable/testrightthis.d11
-rw-r--r--gcc/testsuite/gdc.test/runnable/testscope2.d9
-rw-r--r--gcc/testsuite/gdc.test/runnable/traits.d197
-rw-r--r--gcc/testsuite/gdc.test/runnable/traits_child.d122
-rw-r--r--gcc/testsuite/gdc.test/runnable/uda.d229
-rw-r--r--gcc/testsuite/gdc.test/runnable/xtest46.d32
-rw-r--r--gcc/testsuite/gdc.test/runnable_cxx/runnable_cxx.exp2
-rw-r--r--gcc/testsuite/gfortran.dg/ISO_Fortran_binding_18.c27
-rw-r--r--gcc/testsuite/gfortran.dg/ISO_Fortran_binding_18.f9028
-rw-r--r--gcc/testsuite/gfortran.dg/analyzer/analyzer.exp2
-rw-r--r--gcc/testsuite/gfortran.dg/asan/asan.exp2
-rw-r--r--gcc/testsuite/gfortran.dg/associate_54.f9034
-rw-r--r--gcc/testsuite/gfortran.dg/associate_55.f9035
-rw-r--r--gcc/testsuite/gfortran.dg/associate_56.f9036
-rw-r--r--gcc/testsuite/gfortran.dg/associate_57.f9047
-rw-r--r--gcc/testsuite/gfortran.dg/associated_target_7.f9087
-rw-r--r--gcc/testsuite/gfortran.dg/charlen_18.f9018
-rw-r--r--gcc/testsuite/gfortran.dg/class_allocate_25.f9058
-rw-r--r--gcc/testsuite/gfortran.dg/class_assign_4.f90183
-rw-r--r--gcc/testsuite/gfortran.dg/coarray/caf.exp2
-rw-r--r--gcc/testsuite/gfortran.dg/coarray/send_char_array_1.f9016
-rw-r--r--gcc/testsuite/gfortran.dg/data_inquiry_ref.f9039
-rw-r--r--gcc/testsuite/gfortran.dg/debug/debug.exp2
-rw-r--r--gcc/testsuite/gfortran.dg/dec_math.f902
-rw-r--r--gcc/testsuite/gfortran.dg/deferred_character_35.f9018
-rw-r--r--gcc/testsuite/gfortran.dg/deferred_character_36.f9016
-rw-r--r--gcc/testsuite/gfortran.dg/dependency_60.f9019
-rw-r--r--gcc/testsuite/gfortran.dg/dg.exp2
-rw-r--r--gcc/testsuite/gfortran.dg/elemental_assignment_1.f9059
-rw-r--r--gcc/testsuite/gfortran.dg/elemental_function_5.f9046
-rw-r--r--gcc/testsuite/gfortran.dg/finalize_37.f9080
-rw-r--r--gcc/testsuite/gfortran.dg/forall_19.f9032
-rw-r--r--gcc/testsuite/gfortran.dg/g77/README2
-rw-r--r--gcc/testsuite/gfortran.dg/goacc-gomp/goacc-gomp.exp2
-rw-r--r--gcc/testsuite/gfortran.dg/goacc/goacc.exp2
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/gomp.exp2
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/is_device_ptr-2.f9021
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/map-3.f9010
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/pr86470.f9012
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/reduction4.f9032
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/reduction5.f9022
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/reduction6.f9018
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/reduction7.f909
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/scan-1.f90213
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/scan-2.f9021
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/scan-3.f9021
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/scan-4.f9022
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/scan-5.f9018
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/scan-6.f9016
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/scan-7.f9060
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/task-detach-1.f9029
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/use_device_ptr-1.f9025
-rw-r--r--gcc/testsuite/gfortran.dg/graphite/graphite.exp2
-rw-r--r--gcc/testsuite/gfortran.dg/ieee/ieee.exp2
-rw-r--r--gcc/testsuite/gfortran.dg/implied_do_3.f9014
-rw-r--r--gcc/testsuite/gfortran.dg/interface_assignment_7.f9084
-rw-r--r--gcc/testsuite/gfortran.dg/iso_fortran_binding_uint8_array.f9011
-rw-r--r--gcc/testsuite/gfortran.dg/iso_fortran_binding_uint8_array_driver.c25
-rw-r--r--gcc/testsuite/gfortran.dg/lto/lto.exp2
-rw-r--r--gcc/testsuite/gfortran.dg/module_procedure_5.f9031
-rw-r--r--gcc/testsuite/gfortran.dg/module_procedure_6.f9051
-rw-r--r--gcc/testsuite/gfortran.dg/pr70070.f908
-rw-r--r--gcc/testsuite/gfortran.dg/pr91862.f9026
-rw-r--r--gcc/testsuite/gfortran.dg/pr93685_1.f9020
-rw-r--r--gcc/testsuite/gfortran.dg/pr93685_2.f9018
-rw-r--r--gcc/testsuite/gfortran.dg/pr97673.f9014
-rw-r--r--gcc/testsuite/gfortran.dg/pr98284.f9012
-rw-r--r--gcc/testsuite/gfortran.dg/pr98661.f9019
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_52.f9072
-rw-r--r--gcc/testsuite/gfortran.dg/prof/prof.exp2
-rw-r--r--gcc/testsuite/gfortran.dg/select_rank_5.f9044
-rw-r--r--gcc/testsuite/gfortran.dg/structure_constructor_17.f9021
-rw-r--r--gcc/testsuite/gfortran.dg/unlimited_polymorphic_32.f0359
-rw-r--r--gcc/testsuite/gfortran.dg/vect/vect.exp2
-rw-r--r--gcc/testsuite/gfortran.fortran-torture/compile/compile.exp2
-rw-r--r--gcc/testsuite/gfortran.fortran-torture/execute/execute.exp2
-rw-r--r--gcc/testsuite/gnat.dg/asan1.adb15
-rw-r--r--gcc/testsuite/gnat.dg/asan1_pkg.ads9
-rw-r--r--gcc/testsuite/gnat.dg/debug15.adb23
-rw-r--r--gcc/testsuite/gnat.dg/dg.exp2
-rw-r--r--gcc/testsuite/gnat.dg/gcov/gcov.exp2
-rw-r--r--gcc/testsuite/gnat.dg/interface6.adb2
-rw-r--r--gcc/testsuite/gnat.dg/modular6.adb15
-rw-r--r--gcc/testsuite/gnat.dg/not_null.adb4
-rw-r--r--gcc/testsuite/gnat.dg/opt39.adb1
-rw-r--r--gcc/testsuite/gnat.dg/protected_func.adb4
-rw-r--r--gcc/testsuite/gnat.dg/specs/specs.exp2
-rw-r--r--gcc/testsuite/gnat.dg/sso/sso.exp2
-rw-r--r--gcc/testsuite/gnat.dg/thunk2.adb11
-rw-r--r--gcc/testsuite/gnat.dg/thunk2.ads12
-rw-r--r--gcc/testsuite/gnat.dg/thunk2_pkg.ads11
-rw-r--r--gcc/testsuite/go.dg/dg.exp2
-rw-r--r--gcc/testsuite/go.go-torture/execute/execute.exp2
-rw-r--r--gcc/testsuite/go.test/go-test.exp212
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug13343.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug19403.go134
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug195.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug251.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug302.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug369.dir/main.go55
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug369.go2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug483.go36
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug484.go78
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug485.go39
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug486.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug490.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug491.go110
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug495.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug498.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug510.dir/a.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug510.dir/b.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/bug510.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/gcc61204.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/gcc61244.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/gcc61246.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/gcc61248.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/gcc61253.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/gcc61254.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/gcc61255.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/gcc61258.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/gcc61264.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/gcc61265.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/gcc61273.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/gcc65755.go37
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10047.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10066.dir/a.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10066.dir/b.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10066.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10135.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10219.dir/a.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10219.dir/b.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10219.dir/c.go12
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10219.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10253.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10284.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10320.go55
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10332.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10353.go49
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10407.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10441.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10486.go31
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10607.go34
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10607a.go81
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10654.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10700.dir/other.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10700.dir/test.go49
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10700.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10925.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10958.go95
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10975.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue10977.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11053.dir/p.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11053.dir/p_test.go51
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11053.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11053.out3
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11256.go53
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11286.go34
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11326b.go48
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11354.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11359.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11361.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11362.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11369.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11370.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11371.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11590.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11610.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11614.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11674.go40
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11699.go12
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11750.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11771.go64
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11790.go36
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11945.go71
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue11987.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue12006.go174
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue12108.go37
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue12133.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue12226.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue12347.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue12411.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue12413.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue12536.go22
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue12577.go66
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue12588.go88
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue12677.dir/p.go8
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue12677.dir/q.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue12677.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue12686.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue1304.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13160.go70
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13162.go82
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13169.go49
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13171.go34
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13248.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13261.go29
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13262.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13263.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13266.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13268.go43
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13274.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13337.go30
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13365.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13415.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13471.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13480.go38
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13485.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13539.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13684.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13777.dir/burnin.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13777.dir/main.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13777.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13799.go190
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13821.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue13821b.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14006.go67
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14010.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14136.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14164.dir/a.go47
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14164.dir/main.go12
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14164.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14331.dir/a.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14331.dir/b.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14331.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14405.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14520.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14553.go45
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14591.go38
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14636.go43
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14646.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14651.go71
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14652.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14725.go57
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14729.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue14988.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15013.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15039.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15042.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15071.dir/exp.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15071.dir/main.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15071.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15084.go30
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15141.go33
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15175.go66
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15252.go32
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15277.go40
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15303.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15329.go79
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15439.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15470.dir/a.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15470.dir/b.go3
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15470.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15514.dir/a.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15514.dir/b.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15514.dir/c.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15514.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15528.go131
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15548.dir/a.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15548.dir/b.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15548.dir/c.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15548.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15550.go28
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15572.dir/a.go40
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15572.dir/b.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15572.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15585.go45
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15602.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15604.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call_386.s8
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call_amd64.s8
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call_decl.go5
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/main.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15646.dir/a.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15646.dir/b.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15646.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15722.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15733.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15838.dir/a.go61
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15838.dir/b.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15838.go12
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15895.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15898.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15902.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15920.dir/a.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15920.dir/b.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15920.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15926.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15961.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15988.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15992.go38
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue15992.out4
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16016.go35
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16037_run.go70
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16095.go104
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16130.go43
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/a1.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/a2.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/b.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/c.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16193.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16249.go58
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16306.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16317.dir/a.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16317.dir/b.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16317.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16331.go48
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16369.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16428.go12
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16439.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16515.go53
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16616.dir/a.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16616.dir/b.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16616.dir/issue16616.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16616.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16733.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16741.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16760.go42
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16804.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16948.go34
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue16985.go37
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue17005.go46
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue17111.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue17194.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue17270.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue17328.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue17381.go54
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue17551.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue17588.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue17596.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue17631.go22
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue17640.go28
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue17645.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue17710.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue17752.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue17758.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue17918.go41
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18089.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18092.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18231.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18393.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18410.go40
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18419.dir/other.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18419.dir/test.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18419.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18595.go53
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18636.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18640.go46
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18655.go22
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18661.go39
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18725.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18808.go63
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18906.go36
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18915.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue18994.go22
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19012.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19028.dir/a.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19028.dir/main.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19028.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19040.go36
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19056.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19078.go42
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19084.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19137.go51
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19182.go37
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19201.go52
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19217.go39
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19275.go72
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19323.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19359.go91
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19482.go34
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19507.dir/div_arm.s12
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19507.dir/main.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19507.go8
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19515.go51
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19548.dir/a.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19548.dir/b.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19548.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19555.go36
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19632.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19658.go99
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19667.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19671.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19678.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19679.go38
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19696.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19699b.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19705.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19710.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19743.go31
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19764.dir/a.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19764.dir/b.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19764.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19783.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19799.go71
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19880.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19911.go34
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue19977.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20029.go32
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20097.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20145.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20185.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20227.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20333.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20335.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20415.go33
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20529.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20530.go34
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20602.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20682.dir/p.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20682.dir/q.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20682.dir/r.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20682.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20739.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20749.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20780.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20811.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20812.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue20813.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21048.go72
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21120.dir/a.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21120.dir/b.go29
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21120.dir/main.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21120.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21221.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21256.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21273.go28
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21317.go56
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21576.go63
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21655.go62
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21770.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21808.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21808.out3
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21879.go37
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21879.out2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21882.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21887.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21887.out2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21963.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21979.go46
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue21988.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22063.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22076.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22083.go41
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22198.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22200.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22200b.go28
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22326.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22326.out1
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22327.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22429.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22458.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22605.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22660.go46
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22683.go30
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22683.out1
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22781.go29
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22794.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22822.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22881.go117
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22904.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22921.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22941.dir/a.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22941.dir/b.go30
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22941.dir/main.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22941.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22962.dir/a.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22962.dir/b.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue22962.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23093.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23116.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23179.dir/a.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23179.dir/b.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23179.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23298.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23305.go28
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23311.dir/main.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23311.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23414.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23504.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23521.go43
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23522.go46
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23545.go31
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23546.go22
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23586.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23719.go42
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23732.go42
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23734.go32
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23780.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23781.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23812.go34
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue23823.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24120.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24173.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24187.go33
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24419.go51
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24449.go62
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24470.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24488.go38
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24503.go28
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24547.go46
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24760.go12
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24763.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24799.go58
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24801.dir/a.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24801.dir/main.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24801.go5
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24817.go64
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24937.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue24939.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue25006.go30
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue25101.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue25322.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue25322.out1
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue25507.go29
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue25516.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue25727.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue25741.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue25776.go99
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue25897a.go34
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue25897b.go38
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue25958.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue25984.dir/p.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue25984.dir/q.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue25984.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26024.go28
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26043.go32
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26097.go47
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26105.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26116.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26120.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26153.go29
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26248.go39
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26341.dir/a.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26341.dir/b.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26341.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26407.go58
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26411.go92
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26416.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26438.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26495.go36
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26616.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue26855.go28
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue27143.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue27232.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue27267.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue27278.go63
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue27289.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue27356.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue27695.go62
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue27695b.go64
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue27695c.go65
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue27718.go102
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue27829.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Äfoo.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Ämain.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue27836.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue27938.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue27961.go35
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue28055.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue28058.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue28078.go34
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue28079a.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue28079b.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue28079c.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue28268.go30
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue28390.go39
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue28390.out2
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue28430.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue28445.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue28450.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue28616.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue28688.go31
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue28797.go53
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29013a.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29013b.go43
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29190.go37
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29215.go35
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29218.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29220.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29264.go22
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29304.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29312.go70
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29329.go107
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29350.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29362.go42
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29362b.go53
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29389.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29402.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29562.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29610.dir/a.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29610.dir/b.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29610.dir/main.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29610.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29735.go33
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29855.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29870.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29870b.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue29943.go28
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30041.go63
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30061.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30085.go12
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30087.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30243.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30430.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30476.go30
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30566a.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30566b.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30606.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30606b.go51
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30679.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30709.go33
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30709.out4
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30862.dir/a.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30862.dir/b.go29
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30862.dir/main.go28
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30862.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30898.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30907.dir/a.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30907.dir/b.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30907.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30956.go32
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30956.out1
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue30977.go52
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31010.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31060.go30
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/a.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/b.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/c.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/main.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31252.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31412a.go32
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31412b.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31419.go58
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31573.go49
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31637.dir/a.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31637.dir/b.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31637.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31777.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31782.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31782.out1
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue31987.go22
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32175.go22
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32175.out1
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32288.go48
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32347.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32454.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32560.go51
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32595.dir/a.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32595.dir/b.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32595.dir/main.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32595.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32680.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32680.out1
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32680b.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32723.go22
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32778.dir/a.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32778.dir/b.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32778.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue32959.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33020a.dir/a.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33020a.dir/b.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33020a.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33275.go34
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33275_run.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33308.go12
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33355.go147
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33386.go29
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33438.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33460.go37
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33555.go81
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33724.go45
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33866.dir/a.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33866.dir/b.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33866.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue33903.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue34123.go43
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue34395.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue34520.go12
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue34968.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue35027.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue35073.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue35157.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue35291.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue35576.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue35576.out1
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue35586.dir/a.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue35586.dir/b.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue35586.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue35652.go28
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue36085.dir/a.go3
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue36085.dir/b.go8
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue36085.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue36259.go28
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue36437.go49
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue36516.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue36705.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue37246.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue37716.go32
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue37753.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue37975.go54
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue38093.go49
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue38117.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue38356.go54
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue38359.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue38690.go65
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue38745.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue38746.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue38905.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue38916.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue39292.go29
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue39459.go22
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue39505.go31
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue39505b.go183
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue39541.go33
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue39651.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue40367.go41
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue40629.go69
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue40746.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue40917.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue40954.go35
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue41247.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue41440.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue41500.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue41575.go36
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue41680.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue41736.go105
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue41780.go39
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue41872.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue42032.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue42058a.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue42058b.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue42075.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue42076.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue4215.go53
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue42568.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue42587.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue42703.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue42727.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue42784.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue42876.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue43099.go34
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue43111.go70
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue43112.go41
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue4365.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue5373.go71
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue5793.go36
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6295.dir/p0.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6295.dir/p1.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6295.dir/p2.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6295.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6402.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6403.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6406.go12
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703a.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703b.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703c.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703d.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703e.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703f.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703g.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703h.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703i.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703j.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703k.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703l.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703m.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703n.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703o.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703p.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703q.go28
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703r.go28
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703s.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703t.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703u.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703v.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703w.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703x.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703y.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6703z.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6772.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6847.go85
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6866.go80
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6889.go111
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6902.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue6964.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7023.dir/a.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7023.dir/b.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7023.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7044.go43
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7050.go19
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7083.go22
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7129.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7150.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7153.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7223.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7272.go48
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7310.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7316.go37
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7346.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7366.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7405.go51
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7419.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7538a.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7538b.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7547.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7550.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7590.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7648.dir/a.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7648.dir/b.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7648.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7740.go35
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7742.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7746.go133
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7760.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7794.go12
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7863.go60
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7867.go43
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7884.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7921.go57
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7944.go40
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7995.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7995b.dir/x1.go12
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7995b.dir/x2.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7995b.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7996.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7997.go53
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue7998.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8004.go59
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8011.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8017.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8028.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8036.go45
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8039.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8047.go29
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8047b.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8048.go107
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8060.dir/a.go7
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8060.dir/b.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8060.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8073.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8074.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8076.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8079.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8132.go32
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8139.go50
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8154.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8155.go48
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8158.go41
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8183.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8280.dir/a.go3
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8280.dir/b.go5
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8280.go9
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8311.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8325.go31
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8336.go29
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8347.go27
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8385.go42
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8438.go17
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8440.go11
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8475.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8501.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8613.go38
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8620.go30
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8745.go13
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8761.go26
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8836.go24
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8947.go53
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue8961.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9006.go37
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9017.go57
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9036.go31
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9076.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9083.go23
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9110.go91
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9321.go37
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9355.dir/a.go16
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9355.go63
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9370.go127
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9432.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9521.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9537.dir/a.go25
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9537.dir/b.go43
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9537.go10
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9604.go29
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9604b.go180
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9608.dir/issue9608.go82
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9608.go14
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9634.go18
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9691.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9731.go21
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9738.go20
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9862.go15
-rw-r--r--gcc/testsuite/go.test/test/fixedbugs/issue9862_run.go27
-rw-r--r--gcc/testsuite/go.test/test/run.go2
-rw-r--r--gcc/testsuite/lib/asan-dg.exp2
-rw-r--r--gcc/testsuite/lib/atomic-dg.exp2
-rw-r--r--gcc/testsuite/lib/brig-dg.exp2
-rw-r--r--gcc/testsuite/lib/brig.exp2
-rw-r--r--gcc/testsuite/lib/c-compat.exp2
-rw-r--r--gcc/testsuite/lib/c-torture.exp2
-rw-r--r--gcc/testsuite/lib/clearcap.exp2
-rw-r--r--gcc/testsuite/lib/compat.exp2
-rw-r--r--gcc/testsuite/lib/copy-file.exp2
-rw-r--r--gcc/testsuite/lib/dejapatches.exp2
-rw-r--r--gcc/testsuite/lib/dg-pch.exp2
-rw-r--r--gcc/testsuite/lib/file-format.exp2
-rw-r--r--gcc/testsuite/lib/fortran-modules.exp2
-rw-r--r--gcc/testsuite/lib/fortran-torture.exp2
-rw-r--r--gcc/testsuite/lib/g++-dg.exp2
-rw-r--r--gcc/testsuite/lib/g++.exp2
-rw-r--r--gcc/testsuite/lib/gcc-defs.exp2
-rw-r--r--gcc/testsuite/lib/gcc-dg.exp2
-rw-r--r--gcc/testsuite/lib/gcc-gdb-test.exp2
-rw-r--r--gcc/testsuite/lib/gcc-simulate-thread.exp2
-rw-r--r--gcc/testsuite/lib/gcc.exp2
-rw-r--r--gcc/testsuite/lib/gcov.exp64
-rw-r--r--gcc/testsuite/lib/gdc-dg.exp2
-rw-r--r--gcc/testsuite/lib/gdc-utils.exp2
-rw-r--r--gcc/testsuite/lib/gdc.exp2
-rw-r--r--gcc/testsuite/lib/gfortran-dg.exp2
-rw-r--r--gcc/testsuite/lib/gfortran.exp2
-rw-r--r--gcc/testsuite/lib/gnat-dg.exp2
-rw-r--r--gcc/testsuite/lib/gnat.exp2
-rw-r--r--gcc/testsuite/lib/go-dg.exp2
-rw-r--r--gcc/testsuite/lib/go-torture.exp2
-rw-r--r--gcc/testsuite/lib/go.exp2
-rw-r--r--gcc/testsuite/lib/hwasan-dg.exp2
-rw-r--r--gcc/testsuite/lib/lto.exp2
-rw-r--r--gcc/testsuite/lib/mike-g++.exp2
-rw-r--r--gcc/testsuite/lib/mike-gcc.exp2
-rw-r--r--gcc/testsuite/lib/multiline.exp2
-rw-r--r--gcc/testsuite/lib/obj-c++-dg.exp2
-rw-r--r--gcc/testsuite/lib/obj-c++.exp2
-rw-r--r--gcc/testsuite/lib/objc-dg.exp2
-rw-r--r--gcc/testsuite/lib/objc-torture.exp2
-rw-r--r--gcc/testsuite/lib/objc.exp2
-rw-r--r--gcc/testsuite/lib/options.exp2
-rw-r--r--gcc/testsuite/lib/plugin-support.exp2
-rw-r--r--gcc/testsuite/lib/profopt.exp2
-rw-r--r--gcc/testsuite/lib/prune.exp2
-rw-r--r--gcc/testsuite/lib/scanasm.exp56
-rw-r--r--gcc/testsuite/lib/scandump.exp2
-rw-r--r--gcc/testsuite/lib/scanipa.exp2
-rw-r--r--gcc/testsuite/lib/scanlang.exp2
-rw-r--r--gcc/testsuite/lib/scanltranstree.exp2
-rw-r--r--gcc/testsuite/lib/scanoffload.exp2
-rw-r--r--gcc/testsuite/lib/scanoffloadrtl.exp2
-rw-r--r--gcc/testsuite/lib/scanoffloadtree.exp2
-rw-r--r--gcc/testsuite/lib/scanrtl.exp2
-rw-r--r--gcc/testsuite/lib/scantree.exp2
-rw-r--r--gcc/testsuite/lib/scanwpaipa.exp2
-rw-r--r--gcc/testsuite/lib/target-libpath.exp2
-rw-r--r--gcc/testsuite/lib/target-supports-dg.exp2
-rw-r--r--gcc/testsuite/lib/target-supports.exp248
-rw-r--r--gcc/testsuite/lib/target-utils.exp2
-rw-r--r--gcc/testsuite/lib/timeout-dg.exp2
-rw-r--r--gcc/testsuite/lib/timeout.exp2
-rw-r--r--gcc/testsuite/lib/torture-options.exp2
-rw-r--r--gcc/testsuite/lib/tsan-dg.exp2
-rw-r--r--gcc/testsuite/lib/ubsan-dg.exp2
-rw-r--r--gcc/testsuite/lib/wrapper.exp2
-rw-r--r--gcc/testsuite/obj-c++.dg/attributes/attributes.exp2
-rw-r--r--gcc/testsuite/obj-c++.dg/dg.exp2
-rw-r--r--gcc/testsuite/obj-c++.dg/lto/lto.exp2
-rw-r--r--gcc/testsuite/obj-c++.dg/plugin/plugin.exp2
-rw-r--r--gcc/testsuite/obj-c++.dg/property/property-neg-6.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/property/property.exp2
-rw-r--r--gcc/testsuite/obj-c++.dg/strings/strings.exp2
-rw-r--r--gcc/testsuite/obj-c++.dg/syntax-error-10.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/syntax-error-8.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/syntax-error-9.mm2
-rw-r--r--gcc/testsuite/obj-c++.dg/torture/strings/strings.exp2
-rw-r--r--gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.m2
-rw-r--r--gcc/testsuite/objc.dg/attributes/attributes.exp2
-rw-r--r--gcc/testsuite/objc.dg/dg.exp2
-rw-r--r--gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp2
-rw-r--r--gcc/testsuite/objc.dg/lto/lto.exp2
-rw-r--r--gcc/testsuite/objc.dg/pch/pch.exp2
-rw-r--r--gcc/testsuite/objc.dg/plugin/plugin.exp2
-rw-r--r--gcc/testsuite/objc.dg/property/property.exp2
-rw-r--r--gcc/testsuite/objc.dg/special/special.exp2
-rw-r--r--gcc/testsuite/objc.dg/strings/strings.exp2
-rw-r--r--gcc/testsuite/objc.dg/torture/strings/strings.exp2
-rw-r--r--gcc/testsuite/objc/compile/compile.exp2
-rw-r--r--gcc/testsuite/objc/execute/exceptions/exceptions.exp2
-rw-r--r--gcc/testsuite/objc/execute/execute.exp2
-rw-r--r--gcc/testsuite/substr_10.f9011
-rw-r--r--gcc/testsuite/substr_9.f9028
3337 files changed, 92676 insertions, 30194 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d65e539..0614da1 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,27192 +1,2074 @@
-2020-12-06 H.J. Lu <hjl.tools@gmail.com>
-
- * gcc.target/i386/pr98161.c: New test.
-
-2020-12-06 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/96232
- * gcc.dg/tree-ssa/pr96232-2.c: New test.
- * gcc.dg/tree-ssa/pr88676-2.c: Check phiopt2 dump rather than phiopt1.
-
-2020-12-06 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/96232
- * gcc.dg/tree-ssa/pr96232-1.c: New test.
-
-2020-12-06 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR testsuite/98156
- * gfortran.dg/coarray/alloc_comp_1.f90: Upper cobound is
- determined by num_images(), not this_image().
-
-2020-12-06 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/signbit-1.c: Reinstate lp64 condition.
- * gcc.target/powerpc/signbit-2.c: Match 32-bit output too.
-
-2020-12-05 Patrick Palka <ppalka@redhat.com>
-
- PR c++/97093
- * g++.dg/cpp2a/concepts-requires22.C: New test.
-
-2020-12-05 Patrick Palka <ppalka@redhat.com>
-
- PR c++/97093
- * g++.dg/concepts/pr94252.C: Verify we no longer issue a
- spurious unsatisfaction note when diagnosing ill-formed
- satisfaction.
- * g++.dg/cpp2a/concepts-requires18.C: No longer expect a
- spurious unsatisfaction diagnostic when evaluating the
- nested-requirement subst<void&> of a requires-expression that
- appears outside of a template.
- * g++.dg/cpp2a/concepts-requires21.C: Verify we no longer issue
- a spurious unsatisfaction note when evaluating a
- nested-requirement of a requires-expression that appears outside
- of a template.
- * g++.dg/cpp2a/concepts-nonbool3.C: New test.
- * g++.dg/cpp2a/concepts-pr97093.C: New test.
-
-2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
-
- PR target/95294
- * gcc.target/vax/cmpelim-eq-adddf.c: New test.
- * gcc.target/vax/cmpelim-eq-addhi.c: New test.
- * gcc.target/vax/cmpelim-eq-addqi.c: New test.
- * gcc.target/vax/cmpelim-eq-addsf.c: New test.
- * gcc.target/vax/cmpelim-eq-addsi.c: New test.
- * gcc.target/vax/cmpelim-eq-andhi.c: New test.
- * gcc.target/vax/cmpelim-eq-andqi.c: New test.
- * gcc.target/vax/cmpelim-eq-andsi.c: New test.
- * gcc.target/vax/cmpelim-eq-ashlsi.c: New test.
- * gcc.target/vax/cmpelim-eq-ashrsi.c: New test.
- * gcc.target/vax/cmpelim-eq-divdf.c: New test.
- * gcc.target/vax/cmpelim-eq-divhi.c: New test.
- * gcc.target/vax/cmpelim-eq-divqi.c: New test.
- * gcc.target/vax/cmpelim-eq-divsf.c: New test.
- * gcc.target/vax/cmpelim-eq-divsi.c: New test.
- * gcc.target/vax/cmpelim-eq-extendhisi.c: New test.
- * gcc.target/vax/cmpelim-eq-extendqisi.c: New test.
- * gcc.target/vax/cmpelim-eq-extvsi.c: New test.
- * gcc.target/vax/cmpelim-eq-extzvsi.c: New test.
- * gcc.target/vax/cmpelim-eq-fixdfhi.c: New test.
- * gcc.target/vax/cmpelim-eq-fixdfqi.c: New test.
- * gcc.target/vax/cmpelim-eq-fixdfsi.c: New test.
- * gcc.target/vax/cmpelim-eq-fixsfhi.c: New test.
- * gcc.target/vax/cmpelim-eq-fixsfqi.c: New test.
- * gcc.target/vax/cmpelim-eq-fixsfsi.c: New test.
- * gcc.target/vax/cmpelim-eq-floatsisf.c: New test.
- * gcc.target/vax/cmpelim-eq-insvsi.c: New test.
- * gcc.target/vax/cmpelim-eq-iorhi.c: New test.
- * gcc.target/vax/cmpelim-eq-iorqi.c: New test.
- * gcc.target/vax/cmpelim-eq-iorsi.c: New test.
- * gcc.target/vax/cmpelim-eq-mova.c: New test.
- * gcc.target/vax/cmpelim-eq-movdf.c: New test.
- * gcc.target/vax/cmpelim-eq-movhi.c: New test.
- * gcc.target/vax/cmpelim-eq-movqi.c: New test.
- * gcc.target/vax/cmpelim-eq-movsf.c: New test.
- * gcc.target/vax/cmpelim-eq-movsi.c: New test.
- * gcc.target/vax/cmpelim-eq-muldf.c: New test.
- * gcc.target/vax/cmpelim-eq-mulhi.c: New test.
- * gcc.target/vax/cmpelim-eq-mulqi.c: New test.
- * gcc.target/vax/cmpelim-eq-mulsf.c: New test.
- * gcc.target/vax/cmpelim-eq-mulsi.c: New test.
- * gcc.target/vax/cmpelim-eq-nothi.c: New test.
- * gcc.target/vax/cmpelim-eq-notqi.c: New test.
- * gcc.target/vax/cmpelim-eq-notsi.c: New test.
- * gcc.target/vax/cmpelim-eq-rotlsi.c: New test.
- * gcc.target/vax/cmpelim-eq-rotrsi.c: New test.
- * gcc.target/vax/cmpelim-eq-subdf.c: New test.
- * gcc.target/vax/cmpelim-eq-subhi.c: New test.
- * gcc.target/vax/cmpelim-eq-subqi.c: New test.
- * gcc.target/vax/cmpelim-eq-subsf.c: New test.
- * gcc.target/vax/cmpelim-eq-subsi.c: New test.
- * gcc.target/vax/cmpelim-eq-truncdfsf.c: New test.
- * gcc.target/vax/cmpelim-eq-trunchiqi.c: New test.
- * gcc.target/vax/cmpelim-eq-truncsihi.c: New test.
- * gcc.target/vax/cmpelim-eq-truncsiqi.c: New test.
- * gcc.target/vax/cmpelim-eq-zextendhisi.c: New test.
- * gcc.target/vax/cmpelim-eq-zextendqihi.c: New test.
- * gcc.target/vax/cmpelim-eq-zextendqisi.c: New test.
- * gcc.target/vax/cmpelim-le-adddf.c: New test.
- * gcc.target/vax/cmpelim-le-addhi.c: New test.
- * gcc.target/vax/cmpelim-le-addqi.c: New test.
- * gcc.target/vax/cmpelim-le-addsf.c: New test.
- * gcc.target/vax/cmpelim-le-addsi.c: New test.
- * gcc.target/vax/cmpelim-le-andhi.c: New test.
- * gcc.target/vax/cmpelim-le-andqi.c: New test.
- * gcc.target/vax/cmpelim-le-andsi.c: New test.
- * gcc.target/vax/cmpelim-le-ashlsi.c: New test.
- * gcc.target/vax/cmpelim-le-ashrsi.c: New test.
- * gcc.target/vax/cmpelim-le-divdf.c: New test.
- * gcc.target/vax/cmpelim-le-divhi.c: New test.
- * gcc.target/vax/cmpelim-le-divqi.c: New test.
- * gcc.target/vax/cmpelim-le-divsf.c: New test.
- * gcc.target/vax/cmpelim-le-divsi.c: New test.
- * gcc.target/vax/cmpelim-le-extendhisi.c: New test.
- * gcc.target/vax/cmpelim-le-extendqisi.c: New test.
- * gcc.target/vax/cmpelim-le-extvsi.c: New test.
- * gcc.target/vax/cmpelim-le-extzvsi.c: New test.
- * gcc.target/vax/cmpelim-le-fixdfhi.c: New test.
- * gcc.target/vax/cmpelim-le-fixdfqi.c: New test.
- * gcc.target/vax/cmpelim-le-fixdfsi.c: New test.
- * gcc.target/vax/cmpelim-le-fixsfhi.c: New test.
- * gcc.target/vax/cmpelim-le-fixsfqi.c: New test.
- * gcc.target/vax/cmpelim-le-fixsfsi.c: New test.
- * gcc.target/vax/cmpelim-le-floatsisf.c: New test.
- * gcc.target/vax/cmpelim-le-insvsi.c: New test.
- * gcc.target/vax/cmpelim-le-iorhi.c: New test.
- * gcc.target/vax/cmpelim-le-iorqi.c: New test.
- * gcc.target/vax/cmpelim-le-iorsi.c: New test.
- * gcc.target/vax/cmpelim-le-movdf.c: New test.
- * gcc.target/vax/cmpelim-le-movhi.c: New test.
- * gcc.target/vax/cmpelim-le-movqi.c: New test.
- * gcc.target/vax/cmpelim-le-movsf.c: New test.
- * gcc.target/vax/cmpelim-le-movsi.c: New test.
- * gcc.target/vax/cmpelim-le-muldf.c: New test.
- * gcc.target/vax/cmpelim-le-mulhi.c: New test.
- * gcc.target/vax/cmpelim-le-mulqi.c: New test.
- * gcc.target/vax/cmpelim-le-mulsf.c: New test.
- * gcc.target/vax/cmpelim-le-mulsi.c: New test.
- * gcc.target/vax/cmpelim-le-nothi.c: New test.
- * gcc.target/vax/cmpelim-le-notqi.c: New test.
- * gcc.target/vax/cmpelim-le-notsi.c: New test.
- * gcc.target/vax/cmpelim-le-rotlsi.c: New test.
- * gcc.target/vax/cmpelim-le-rotrsi.c: New test.
- * gcc.target/vax/cmpelim-le-subdf.c: New test.
- * gcc.target/vax/cmpelim-le-subhi.c: New test.
- * gcc.target/vax/cmpelim-le-subqi.c: New test.
- * gcc.target/vax/cmpelim-le-subsf.c: New test.
- * gcc.target/vax/cmpelim-le-subsi.c: New test.
- * gcc.target/vax/cmpelim-le-truncdfsf.c: New test.
- * gcc.target/vax/cmpelim-le-xorhi.c: New test.
- * gcc.target/vax/cmpelim-le-xorqi.c: New test.
- * gcc.target/vax/cmpelim-le-xorsi.c: New test.
- * gcc.target/vax/cmpelim-leu-subhi.c: New test.
- * gcc.target/vax/cmpelim-leu-subqi.c: New test.
- * gcc.target/vax/cmpelim-leu-subsi.c: New test.
- * gcc.target/vax/cmpelim-lt-adddf.c: New test.
- * gcc.target/vax/cmpelim-lt-addhi.c: New test.
- * gcc.target/vax/cmpelim-lt-addqi.c: New test.
- * gcc.target/vax/cmpelim-lt-addsf.c: New test.
- * gcc.target/vax/cmpelim-lt-addsi.c: New test.
- * gcc.target/vax/cmpelim-lt-andhi.c: New test.
- * gcc.target/vax/cmpelim-lt-andqi.c: New test.
- * gcc.target/vax/cmpelim-lt-andsi.c: New test.
- * gcc.target/vax/cmpelim-lt-ashlsi.c: New test.
- * gcc.target/vax/cmpelim-lt-ashrsi.c: New test.
- * gcc.target/vax/cmpelim-lt-divdf.c: New test.
- * gcc.target/vax/cmpelim-lt-divhi.c: New test.
- * gcc.target/vax/cmpelim-lt-divqi.c: New test.
- * gcc.target/vax/cmpelim-lt-divsf.c: New test.
- * gcc.target/vax/cmpelim-lt-divsi.c: New test.
- * gcc.target/vax/cmpelim-lt-extendhisi.c: New test.
- * gcc.target/vax/cmpelim-lt-extendqisi.c: New test.
- * gcc.target/vax/cmpelim-lt-extvsi.c: New test.
- * gcc.target/vax/cmpelim-lt-extzvsi.c: New test.
- * gcc.target/vax/cmpelim-lt-fixdfhi.c: New test.
- * gcc.target/vax/cmpelim-lt-fixdfqi.c: New test.
- * gcc.target/vax/cmpelim-lt-fixdfsi.c: New test.
- * gcc.target/vax/cmpelim-lt-fixsfhi.c: New test.
- * gcc.target/vax/cmpelim-lt-fixsfqi.c: New test.
- * gcc.target/vax/cmpelim-lt-fixsfsi.c: New test.
- * gcc.target/vax/cmpelim-lt-floatsisf.c: New test.
- * gcc.target/vax/cmpelim-lt-insvsi.c: New test.
- * gcc.target/vax/cmpelim-lt-iorhi.c: New test.
- * gcc.target/vax/cmpelim-lt-iorqi.c: New test.
- * gcc.target/vax/cmpelim-lt-iorsi.c: New test.
- * gcc.target/vax/cmpelim-lt-movdf.c: New test.
- * gcc.target/vax/cmpelim-lt-movhi.c: New test.
- * gcc.target/vax/cmpelim-lt-movqi.c: New test.
- * gcc.target/vax/cmpelim-lt-movsf.c: New test.
- * gcc.target/vax/cmpelim-lt-movsi.c: New test.
- * gcc.target/vax/cmpelim-lt-muldf.c: New test.
- * gcc.target/vax/cmpelim-lt-mulhi.c: New test.
- * gcc.target/vax/cmpelim-lt-mulqi.c: New test.
- * gcc.target/vax/cmpelim-lt-mulsf.c: New test.
- * gcc.target/vax/cmpelim-lt-mulsi.c: New test.
- * gcc.target/vax/cmpelim-lt-nothi.c: New test.
- * gcc.target/vax/cmpelim-lt-notqi.c: New test.
- * gcc.target/vax/cmpelim-lt-notsi.c: New test.
- * gcc.target/vax/cmpelim-lt-rotlsi.c: New test.
- * gcc.target/vax/cmpelim-lt-rotrsi.c: New test.
- * gcc.target/vax/cmpelim-lt-subdf.c: New test.
- * gcc.target/vax/cmpelim-lt-subhi.c: New test.
- * gcc.target/vax/cmpelim-lt-subqi.c: New test.
- * gcc.target/vax/cmpelim-lt-subsf.c: New test.
- * gcc.target/vax/cmpelim-lt-subsi.c: New test.
- * gcc.target/vax/cmpelim-lt-truncdfsf.c: New test.
- * gcc.target/vax/cmpelim-lt-xorhi.c: New test.
- * gcc.target/vax/cmpelim-lt-xorqi.c: New test.
- * gcc.target/vax/cmpelim-lt-xorsi.c: New test.
- * gcc.target/vax/cmpelim-ltu-subhi.c: New test.
- * gcc.target/vax/cmpelim-ltu-subqi.c: New test.
- * gcc.target/vax/cmpelim-ltu-subsi.c: New test.
- * gcc.target/vax/cmpelim-xx-addsi.c: New test.
- * gcc.target/vax/cmpelim-xx-insvsi.c: New test.
- * gcc.target/vax/cmpelim-xxu-subsi.c: New test.
- * gcc.target/vax/peephole2-eq-andhi.c: New test.
- * gcc.target/vax/peephole2-eq-andqi.c: New test.
- * gcc.target/vax/peephole2-eq-andsi.c: New test.
- * gcc.target/vax/peephole2-eq-cmpvsi.c: New test.
- * gcc.target/vax/peephole2-eq-cmpzvsi.c: New test.
- * gcc.target/vax/peephole2-eq-ctzhi-0.c: New test.
- * gcc.target/vax/peephole2-eq-ctzhi-1.c: New test.
- * gcc.target/vax/peephole2-eq-ctzqi-0.c: New test.
- * gcc.target/vax/peephole2-eq-ctzqi-1.c: New test.
- * gcc.target/vax/peephole2-eq-ctzsi-0.c: New test.
- * gcc.target/vax/peephole2-eq-ctzsi-1.c: New test.
- * gcc.target/vax/peephole2-eq-ffshi.c: New test.
- * gcc.target/vax/peephole2-eq-ffsqi.c: New test.
- * gcc.target/vax/peephole2-eq-ffssi.c: New test.
- * gcc.target/vax/peephole2-le-andhi.c: New test.
- * gcc.target/vax/peephole2-le-andqi.c: New test.
- * gcc.target/vax/peephole2-le-andsi.c: New test.
- * gcc.target/vax/peephole2-le-cmpvsi.c: New test.
- * gcc.target/vax/peephole2-le-cmpzvsi.c: New test.
- * gcc.target/vax/peephole2-leu-cmpvsi.c: New test.
- * gcc.target/vax/peephole2-leu-cmpzvsi.c: New test.
- * gcc.target/vax/peephole2-lt-andhi.c: New test.
- * gcc.target/vax/peephole2-lt-andqi.c: New test.
- * gcc.target/vax/peephole2-lt-andsi.c: New test.
- * gcc.target/vax/peephole2-lt-cmpvsi.c: New test.
- * gcc.target/vax/peephole2-lt-cmpzvsi.c: New test.
- * gcc.target/vax/peephole2-ltu-cmpvsi.c: New test.
- * gcc.target/vax/peephole2-ltu-cmpzvsi.c: New test.
-
-2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
-
- * gcc.target/vax/movmem.c: New test.
-
-2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
-
- * gcc.target/vax/cpymem.c: New test.
-
-2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
-
- * gcc.target/vax/ctzhi.c: New test.
- * gcc.target/vax/ctzqi.c: New test.
- * gcc.target/vax/ffshi.c: New test.
- * gcc.target/vax/ffsqi.c: New test.
-
-2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
-
- * gcc.target/vax/ctzsi.c: New test.
-
-2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
-
- * gcc.target/vax/bbcci.c: New test.
- * gcc.target/vax/bbssi.c: New test.
-
-2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
-
- * gcc.target/vax/ffssi.c: New test.
-
-2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
-
- * gcc.dg/loop-8.c: Exclude for `vax-*-*'.
- * gcc.target/vax/compare-add-zero.c: New test.
- * gcc.target/vax/compare-mov-zero.c: New test.
-
-2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
+2021-02-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
- * gcc.target/vax/vax.exp: Use `gcc-dg-runtest' rather than
- `dg-runtest'.
- * gcc.target/vax/pr56875.c (dg-options): Make empty.
- (a): Rewrite for calculations to make effect. Reformat.
+ * gcc.target/aarch64/narrow_high-intrinsics.c: Adjust rshrn2
+ assembly scan.
-2020-12-05 Matt Thomas <matt@3am-software.com>
- Maciej W. Rozycki <macro@linux-mips.org>
+2021-02-01 David Malcolm <dmalcolm@redhat.com>
- PR target/58901
- * gcc.c-torture/compile/pr58901-0.c: New test.
- * gcc.c-torture/compile/pr58901-1.c: New test.
+ PR analyzer/98918
+ * gcc.dg/analyzer/pr98918.c: New test.
-2020-12-05 Roman Zhuykov <zhroma@ispras.ru>
+2021-02-01 Sergei Trofimovich <siarheit@google.com>
- PR rtl-optimization/97421
- * gcc.c-torture/execute/pr97421-1.c: New test.
- * gcc.c-torture/execute/pr97421-2.c: New test.
- * gcc.c-torture/execute/pr97421-3.c: New test.
+ PR tree-optimization/98499
+ * g++.dg/pr98499.C: new test.
-2020-12-05 Paul Thomas <pault@gcc.gnu.org>
+2021-02-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
- PR fortran/98016
- * gfortran.dg/pr98016.f90: New test.
+ * gcc.target/aarch64/simd/vmovl_high_1.c: New test.
-2020-12-05 Venkataramanan Kumar <Venkataramanan.Kumar@amd.com>
- Sharavan Kumar <Shravan.Kumar@amd.com>
+2021-02-01 Martin Sebor <msebor@redhat.com>
- * gcc.target/i386/funcspec-56.inc: Handle new march.
- * g++.target/i386/mv29.C: New file.
+ PR middle-end/97172
+ * gcc.dg/pr97172.c: New test.
-2020-12-05 Jakub Jelinek <jakub@redhat.com>
+2021-02-01 Martin Sebor <msebor@redhat.com>
- PR c++/98122
- * g++.dg/cpp1y/constexpr-98122.C: New test.
- * g++.dg/cpp2a/constexpr-98122.C: New test.
+ PR c++/98835
+ * g++.dg/Wclass-memaccess-6.C: New test.
-2020-12-04 Jason Merrill <jason@redhat.com>
+2021-02-01 Patrick Palka <ppalka@redhat.com>
- PR c++/93083
- * g++.dg/cpp2a/nontype-class40.C: New test.
+ PR c++/98295
+ * g++.dg/cpp0x/constexpr-98295.C: New test.
-2020-12-04 Jakub Jelinek <jakub@redhat.com>
+2021-02-01 Marek Polacek <polacek@redhat.com>
- PR c++/98130
- * g++.dg/opt/pr98130.C: New test.
+ PR c++/98355
+ * g++.dg/ext/builtin-has-attribute2.C: New test.
-2020-12-04 Jakub Jelinek <jakub@redhat.com>
+2021-02-01 Jason Merrill <jason@redhat.com>
- PR target/96226
- * gcc.target/i386/pr96226.c: New test.
+ PR c++/98570
+ * g++.dg/cpp0x/alias-decl-targ1.C: New test.
-2020-12-04 Jakub Jelinek <jakub@redhat.com>
+2021-02-01 Jonathan Wright <jonathan.wright@arm.com>
- PR libstdc++/93121
- * g++.dg/cpp2a/bit-cast6.C: New test.
-
-2020-12-04 Nathan Sidwell <nathan@acm.org>
-
- PR c++/98116
- * g++.dg/template/pr98116.C: Enable robust checking.
-
-2020-12-04 Jakub Jelinek <jakub@redhat.com>
-
- PR target/98100
- * gcc.target/i386/pr98100.c: New test.
-
-2020-12-04 Martin Liska <mliska@suse.cz>
-
- PR testsuite/98123
- * gcc.dg/tree-ssa/if-to-switch-4.c: Add param to make the test
- stable on all architectures.
- * gcc.dg/tree-ssa/if-to-switch-6.c: Likewise.
- * gcc.dg/tree-ssa/if-to-switch-8.c: Likewise.
-
-2020-12-04 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc.dg/pr98099.c: Compile only for dfp targets.
-
-2020-12-04 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/opt91.ads, gnat.dg/opt91.adb: New test.
- * gnat.dg/opt91_pkg.ads, gnat.dg/opt91_pkg.adb: New helper.
-
-2020-12-04 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/80780
- * g++.dg/cpp2a/srcloc1.C (quux): Use __PRETTY_FUNCTION__ instead of
- function.
- * g++.dg/cpp2a/srcloc2.C (quux): Likewise.
- * g++.dg/cpp2a/srcloc15.C (S::S): Likewise.
- (bar): Likewise. Adjust expected column.
- * g++.dg/cpp2a/srcloc17.C (S::S): Likewise.
- (bar): Likewise. Adjust expected column.
-
-2020-12-03 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp2a/concepts-nodiscard1.C: XFAIL.
-
-2020-12-03 Martin Sebor <msebor@redhat.com>
-
- PR c++/90629
- PR middle-end/94527
- * g++.dg/asan/asan_test.cc: Fix a bug.
- * g++.dg/warn/delete-array-1.C: Add expected warning.
- * g++.old-deja/g++.other/delete2.C: Add expected warning.
- * g++.dg/warn/Wfree-nonheap-object-2.C: New test.
- * g++.dg/warn/Wfree-nonheap-object.C: New test.
- * g++.dg/warn/Wmismatched-new-delete.C: New test.
- * g++.dg/warn/Wmismatched-dealloc-2.C: New test.
- * g++.dg/warn/Wmismatched-dealloc.C: New test.
- * gcc.dg/Wmismatched-dealloc.c: New test.
- * gcc.dg/analyzer/malloc-1.c: Prune out expected warning.
- * gcc.dg/attr-malloc.c: New test.
- * gcc.dg/free-1.c: Adjust text of expected warning.
- * gcc.dg/free-2.c: Same.
- * gcc.dg/torture/pr71816.c: Prune out expected warning.
- * gcc.dg/tree-ssa/pr19831-2.c: Add an expected warning.
- * gcc.dg/Wfree-nonheap-object-2.c: New test.
- * gcc.dg/Wfree-nonheap-object-3.c: New test.
- * gcc.dg/Wfree-nonheap-object.c: New test.
- * g++.dg/warn/Wfree-nonheap-object.s: New file.
-
-2020-12-03 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95342
- * gfortran.dg/pr95342.f90: New test.
-
-2020-12-03 Ian Lance Taylor <iant@golang.org>
-
- * go.test/go-test.exp (go-gc-tests): Add -I. when building all
- sources in a directory (errorcheckdir, compiledir, rundir,
- rundircmpout).
-
-2020-12-03 Jason Merrill <jason@redhat.com>
-
- PR c++/98019
- * g++.dg/cpp2a/concepts-nodiscard1.C: New test.
-
-2020-12-03 Uroš Bizjak <ubizjak@gmail.com>
- Jakub Jelinek <jakub@redhat.com>
-
- PR target/98086
- * gcc.target/i386/pr98086.c: New test.
-
-2020-12-03 Nathan Sidwell <nathan@acm.org>
-
- PR c++/98115
- PR c++/98116
- * g++.dg/template/pr98115.C: New.
- * g++.dg/template/pr98116.C: New.
-
-2020-12-03 Andreas Krebbel <krebbel@linux.ibm.com>
-
- * gcc.target/s390/stack-clash-4.c: New test.
-
-2020-12-03 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/acle/general/undef_1.c: New test.
-
-2020-12-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc.dg/pr98099.c: New test.
-
-2020-12-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * g++.dg/cpp2a/pr98082.C: New test.
-
-2020-12-03 Jakub Jelinek <jakub@redhat.com>
-
- PR libstdc++/93121
- * g++.dg/cpp2a/bit-cast1.C: New test.
- * g++.dg/cpp2a/bit-cast2.C: New test.
- * g++.dg/cpp2a/bit-cast3.C: New test.
- * g++.dg/cpp2a/bit-cast4.C: New test.
- * g++.dg/cpp2a/bit-cast5.C: New test.
-
-2020-12-03 Jakub Jelinek <jakub@redhat.com>
-
- * g++.dg/cpp2a/consteval-defarg2.C: New test.
-
-2020-12-03 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/98104
- * g++.dg/warn/pr98104.C: New test.
-
-2020-12-03 liuhongt <hongtao.liu@intel.com>
-
- * gcc.target/i386/avx512bw-pr96906-1.c: New test.
- * gcc.target/i386/pr96906-1.c: Add -mno-avx512f.
-
-2020-12-03 liuhongt <hongtao.liu@intel.com>
-
- * gcc.target/i386/avx512bw-vmovdqu16-1.c: Adjust testcase to
- make sure only masked load instruction is generated.
- * gcc.target/i386/avx512bw-vmovdqu8-1.c: Ditto.
- * gcc.target/i386/avx512f-vmovapd-1.c: Ditto.
- * gcc.target/i386/avx512f-vmovaps-1.c: Ditto.
- * gcc.target/i386/avx512f-vmovdqa32-1.c: Ditto.
- * gcc.target/i386/avx512f-vmovdqa64-1.c: Ditto.
- * gcc.target/i386/avx512vl-vmovapd-1.c: Ditto.
- * gcc.target/i386/avx512vl-vmovaps-1.c: Ditto.
- * gcc.target/i386/avx512vl-vmovdqa32-1.c: Ditto.
- * gcc.target/i386/avx512vl-vmovdqa64-1.c: Ditto.
- * gcc.target/i386/pr97642-1.c: New test.
- * gcc.target/i386/pr97642-2.c: New test.
-
-2020-12-03 Jason Merrill <jason@redhat.com>
-
- * g++.dg/parse/defarg17.C: New test.
-
-2020-12-03 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp2a/consteval-defarg1.C: New test.
-
-2020-12-03 Hongyu Wang <hongyu.wang@intel.com>
-
- PR target/97770
- * gcc.target/i386/avx512bitalg-pr97770-1.c: New test.
- * gcc.target/i386/avx512vpopcntdq-pr97770-1.c: Likewise.
- * gcc.target/i386/avx512vpopcntdq-pr97770-2.c: Likewise.
- * gcc.target/i386/avx512vpopcntdqvl-pr97770-1.c: Likewise.
-
-2020-12-03 Alexandre Oliva <oliva@adacore.com>
-
- * lib/options.exp (check_for_options_with_filter): Detect
- unavailable compiler for the selected language, and bail out
- as unsupported.
-
-2020-12-03 Martin Sebor <msebor@redhat.com>
-
- * gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Adjust expected warnings
- to correctly reflect the maximum object size.
- * gcc.dg/tree-ssa/builtin-sprintf-warn-11.c: Same.
- * gcc.dg/tree-ssa/builtin-sprintf-warn-18.c: Same.
-
-2020-12-03 Ilya Leoshkevich <iii@linux.ibm.com>
-
- * gcc.target/s390/builtin-constant-p-threading.c: New test.
-
-2020-12-03 Peter Bergner <bergner@linux.ibm.com>
-
- PR c++/97947
- * g++.target/powerpc/pr97947.C: New test.
-
-2020-12-02 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/80780
- PR c++/93093
- * g++.dg/cpp2a/srcloc15.C: New test.
- * g++.dg/cpp2a/srcloc16.C: New test.
- * g++.dg/cpp2a/srcloc17.C: New test.
- * g++.dg/cpp2a/srcloc18.C: New test.
-
-2020-12-02 qing zhao <qinzhao@gcc.gnu.org>
-
- PR rtl-optimization/97777
- PR rtl-optimization/97777
- * gcc.target/i386/pr97777.c: New test.
-
-2020-12-02 Jason Merrill <jason@redhat.com>
-
- * g++.dg/other/pr88187.C: Adjust expected error.
- * g++.dg/cpp2a/class-deduction-abbrev1.C: New test.
-
-2020-12-02 Marek Polacek <polacek@redhat.com>
-
- PR c++/97975
- * g++.dg/cpp1z/inline-var8.C: New test.
-
-2020-12-02 Marek Polacek <polacek@redhat.com>
-
- PR c++/97187
- PR c++/97993
- * g++.dg/eh/crash2.C: New test.
- * g++.dg/template/crash132.C: New test.
-
-2020-12-02 Martin Sebor <msebor@redhat.com>
-
- * gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Adjust expected warnings
- to correctly reflect the maximum object size.
- * gcc.dg/tree-ssa/builtin-sprintf-warn-11.c: Same.
- * gcc.dg/tree-ssa/builtin-sprintf-warn-18.c: Same.
-
-2020-12-02 Ilya Leoshkevich <iii@linux.ibm.com>
-
- * gcc.target/s390/load-imm64-1.c: New test.
- * gcc.target/s390/load-imm64-2.c: New test.
-
-2020-12-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * ada/acats/support/acats25.lst: Delete.
- * ada/acats/support/acats26.lst: New file.
- * ada/acats/support/fcndecl.ada: Minor tweak.
- * ada/acats/support/impdef.a: Add commentary.
- * ada/acats/support/impdefg.a (Negative_Zero return): Simplify.
- * ada/acats/support/macro.dfs (TASK_STORAGE_SIZE): Bump.
- * ada/acats/support/repbody.ada: Upgrade to ACATS 2.6.
- * ada/acats/support/tctouch.ada: Likewise.
- * ada/acats/tests/c3/c352001.a: New file.
- * ada/acats/tests/c4/c433001.a: Correct error messages.
- * ada/acats/tests/c4/c453001.a: New file.
- * ada/acats/tests/c4/c45622a.ada: Delete.
- * ada/acats/tests/c4/c45624a.ada: Likewise.
- * ada/acats/tests/c4/c45624b.ada: Likewise.
- * ada/acats/tests/c4/c460013.a: New file.
- * ada/acats/tests/c4/c460014.a: Likewise.
- * ada/acats/tests/c6/c620001.a: Likewise.
- * ada/acats/tests/c6/c620002.a: Likewise.
- * ada/acats/tests/c7/c761006.a: Redo Unchecked_Deallocation case.
- * ada/acats/tests/c9/c96004a.ada: Adjust for Ada 2005.
- * ada/acats/tests/c9/c96007a.ada: Likewise.
- * ada/acats/tests/cb/cb41004.a: Adjust for AI95-0044.
- * ada/acats/tests/cc/cc3016f.ada: Minor tweak.
- * ada/acats/tests/cd/cd30011.a: New file.
- * ada/acats/tests/cd/cd30012.a: Likewise.
- * ada/acats/tests/cd/cd90001.a: Fix comparison.
- * ada/acats/tests/cxa/cxa3004.a: New file.
- * ada/acats/tests/cxa/cxa5013.a: Likewise.
- * ada/acats/tests/cxa/cxac005.a: Adjust for return-by-reference.
- * ada/acats/tests/cxb/cxb30061.am: New file.
- * ada/acats/tests/cxf/cxf2001.a: Fix failure message.
-
-2020-12-02 Martin Liska <mliska@suse.cz>
-
- PR ipa/98075
- * g++.dg/ipa/pr98075.C: New test.
-
-2020-12-02 H.J. Lu <hjl.tools@gmail.com>
-
- PR middle-end/93195
- * g++.dg/pr93195a.C: New test.
- * g++.dg/pr93195b.C: Likewise.
- * lib/target-supports.exp
- (check_effective_target_o_flag_in_section): New proc.
-
-2020-12-02 Martin Liska <mliska@suse.cz>
-
- PR tree-optimization/98084
- * gcc.dg/tree-ssa/pr98094.c: New test.
-
-2020-12-02 Jakub Jelinek <jakub@redhat.com>
-
- PR rtl-optimization/97459
- * gcc.target/i386/pr97282.c (foo): Use 123456 divisor instead of
- 10.
- * gcc.dg/pr97459-1.c (TESTS): Add tests for 10, 12 and
- 6144.
- * gcc.dg/pr97459-2.c (TESTS): Likewise.
- * gcc.dg/pr97459-3.c: New test.
- * gcc.dg/pr97459-4.c: New test.
- * gcc.dg/pr97459-5.c: New test.
- * gcc.dg/pr97459-6.c: New test.
-
-2020-12-02 Martin Liska <mliska@suse.cz>
-
- PR c/98087
- * gcc.c-torture/compile/pr98087.c: New test.
-
-2020-12-02 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/98079
- * gcc.target/i386/pr98079.c: New test.
-
-2020-12-02 Martin Liska <mliska@suse.cz>
-
- PR tree-optimization/88702
- * gcc.dg/tree-ssa/if-to-switch-9.c: New test.
-
-2020-12-02 Martin Liska <mliska@suse.cz>
-
- PR tree-optimization/98084
- * gcc.dg/tree-ssa/pr98084.c: New test.
-
-2020-12-02 Jeff Law <law@redhat.com>
-
- * gcc.target/h8300/add.c: New test.
- * gcc.target/h8300/add-2.c: New test.
- * gcc.target/h8300/add-3.c: New test.
- * gcc.target/h8300/sub.c: New test.
- * gcc.target/h8300/sub-2.c: New test.
- * gcc.target/h8300/sub-3.c: New test.
-
-2020-12-02 Ian Lance Taylor <iant@golang.org>
-
- * go.test/go-test.exp (errchk): Permit trailing */ on ERROR line.
-
-2020-12-02 H.J. Lu <hjl.tools@gmail.com>
- Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * c-c++-common/attr-used.c: Check the 'R' flag.
- * c-c++-common/attr-used-2.c: Likewise.
- * c-c++-common/attr-used-3.c: New test.
- * c-c++-common/attr-used-4.c: Likewise.
- * gcc.c-torture/compile/attr-used-retain-1.c: Likewise.
- * gcc.c-torture/compile/attr-used-retain-2.c: Likewise.
- * lib/target-supports.exp
- (check_effective_target_R_flag_in_section): New proc.
-
-2020-12-02 H.J. Lu <hjl.tools@gmail.com>
-
- * gcc.target/i386/x86-needed-1.c: New test.
- * gcc.target/i386/x86-needed-2.c: Likewise.
- * gcc.target/i386/x86-needed-3.c: Likewise.
-
-2020-12-01 Eugene Rozenfeld <Eugene.Rozenfeld@microsoft.com>
-
- * gcc.dg/pr96708-negative.c: New test.
- * gcc.dg/pr96708-positive.c: New test.
-
-2020-12-01 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/97595
- * g++.dg/warn/Warray-bounds-14.C: New test.
- * g++.dg/warn/Wstringop-overflow-6.C: New test.
-
-2020-12-01 Jeff Law <law@redhat.com>
-
- * gcc.dg/tree-ssa/pr96480.c: Disable jump table optimization
-
-2020-12-01 JeanHeyd Meneide <phdofthehouse@gmail.com>
-
- * c-c++-common/cpp/wide-narrow-predef-macros.c: New test.
-
-2020-12-01 Jeff Law <law@redhat.com>
-
- * gcc.dg/pr46309-2.c: Add -fno-bit-tests and -fno-jump-tables
- to avoid compromising the test.
-
-2020-12-01 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/98072
- * c-c++-common/gomp/depobj-2.c: New test.
-
-2020-12-01 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/97373
- * gcc.dg/tree-ssa/builtin-sprintf-warn-25.c: New test.
-
-2020-12-01 Martin Liska <mliska@suse.cz>
-
- * g++.dg/tree-ssa/if-to-switch-1.C: Do not allow newlines
- in .* pattern.
- * gcc.dg/tree-ssa/if-to-switch-1.c: Likewise.
- * gcc.dg/tree-ssa/if-to-switch-2.c: Likewise.
- * gcc.dg/tree-ssa/if-to-switch-3.c: Likewise.
- * gcc.dg/tree-ssa/if-to-switch-5.c: Likewise.
-
-2020-12-01 Martin Liska <mliska@suse.cz>
-
- PR testsuite/98085
- * g++.dg/tree-ssa/if-to-switch-1.C: Do not expect precise number
- of BBs.
- * gcc.dg/tree-ssa/if-to-switch-1.c: Likewise.
- * gcc.dg/tree-ssa/if-to-switch-2.c: Likewise. Find better name
- for the function.
- * gcc.dg/tree-ssa/if-to-switch-3.c: Likewise. Find better name
- for the function.
- * gcc.dg/tree-ssa/if-to-switch-5.c: Likewise.
-
-2020-12-01 Jakub Jelinek <jakub@redhat.com>
-
- PR rtl-optimization/97954
- * gcc.dg/pr97954.c: New test.
-
-2020-12-01 Matthew Malcomson <matthew.malcomson@arm.com>
-
- * lib/hwasan-dg.exp (check_effective_target_hwaddress_exec): Fix
- check for correct kernel version.
-
-2020-12-01 Martin Liska <mliska@suse.cz>
-
- PR tree-optimization/14799
- PR ipa/88702
- * gcc.dg/tree-ssa/pr96480.c: Disable if-to-switch conversion.
- * gcc.dg/tree-ssa/reassoc-32.c: Likewise.
- * g++.dg/tree-ssa/if-to-switch-1.C: New test.
- * gcc.dg/tree-ssa/if-to-switch-1.c: New test.
- * gcc.dg/tree-ssa/if-to-switch-2.c: New test.
- * gcc.dg/tree-ssa/if-to-switch-3.c: New test.
- * gcc.dg/tree-ssa/if-to-switch-4.c: New test.
- * gcc.dg/tree-ssa/if-to-switch-5.c: New test.
- * gcc.dg/tree-ssa/if-to-switch-6.c: New test.
- * gcc.dg/tree-ssa/if-to-switch-7.c: New test.
- * gcc.dg/tree-ssa/if-to-switch-8.c: New test.
-
-2020-12-01 Marius Hillenbrand <mhillen@linux.ibm.com>
-
- * gcc.target/s390/float_t-1.c: New test.
- * gcc.target/s390/float_t-2.c: New test.
-
-2020-12-01 Martin Liska <mliska@suse.cz>
-
- * g++.dg/torture/pr93347.C: Reduce and remove LIT keywords.
-
-2020-12-01 Martin Liska <mliska@suse.cz>
-
- PR ipa/98057
- * g++.dg/ipa/pr98057.C: New test.
-
-2020-12-01 Jakub Jelinek <jakub@redhat.com>
-
- PR target/98063
- * gcc.target/i386/pr98063.c: New test.
-
-2020-12-01 Jakub Jelinek <jakub@redhat.com>
-
- * g++.dg/debug/dwarf2/lang-cpp17.C: New test.
- * g++.dg/debug/dwarf2/lang-cpp20.C: New test.
-
-2020-12-01 Jakub Jelinek <jakub@redhat.com>
-
- PR debug/97989
- * gcc.dg/cpp/pr97989-1.c: New test.
- * gcc.dg/cpp/pr97989-2.c: New test.
-
-2020-11-30 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/plugin/analyzer_gil_plugin.c: New test.
- * gcc.dg/plugin/gil-1.c: New test.
- * gcc.dg/plugin/gil.h: New header.
- * gcc.dg/plugin/plugin.exp (plugin_test_list): Add the new plugin
- and test.
-
-2020-11-30 Ilya Leoshkevich <iii@linux.ibm.com>
-
- * lib/profopt.exp: Unset testname_with_flags if create_gcov
- fails.
-
-2020-11-30 Richard Sandiford <richard.sandiford@arm.com>
-
- PR rtl-optimization/98037
- * gcc.target/aarch64/sve/acle/general/pr98037.c: New test.
-
-2020-11-30 Jeff Law <law@redhat.com>
-
- * g++.dg/warn/Wnonnull5.C: Fix non-unique testnames.
- * g++.dg/warn/Wplacement-new-size-8.C: Likewise.
-
-2020-11-30 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/98011
- * gfortran.dg/goacc/sentinel-free-form.f95:
- * gfortran.dg/goacc-gomp/fixed-1.f: New test.
- * gfortran.dg/goacc-gomp/free-1.f90: New test.
- * gfortran.dg/goacc/fixed-5.f: New test.
-
-2020-11-30 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/98064
- * g++.dg/vect/pr98064.cc: New testcase.
-
-2020-11-30 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/98048
- * gcc.dg/vect/pr98048.c: New testcase.
-
-2020-11-30 Stam Markianos-Wright <stam.markianos-wright@arm.com>
-
- * gcc.target/arm/pr91816.c: New test.
-
-2020-11-30 Jakub Jelinek <jakub@redhat.com>
-
- PR rtl-optimization/97459
- * gcc.dg/pr97459-1.c: New test.
- * gcc.dg/pr97459-2.c: New test.
-
-2020-11-29 Harald Anlauf <anlauf@gmx.de>
-
- * gfortran.dg/pr98017.f90: New test.
-
-2020-11-29 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/92936
- PR middle-end/92940
- PR middle-end/89428
- * c-c++-common/Wstringop-overflow-2.c: Adjust text of expected
- informational notes.
- * g++.dg/warn/Wstringop-overflow-3.C: Same.
- * g++.dg/warn/Wplacement-new-size.C: Remove a test for a no longer
- issued warning.
- * gcc.dg/Warray-bounds-43.c: Removed unused declarations.
- * gcc.dg/Wstringop-overflow-11.c: Remove xfails.
- * gcc.dg/Wstringop-overflow-12.c: Same.
- * gcc.dg/Wstringop-overflow-17.c: Adjust text of expected messages.
- * gcc.dg/Wstringop-overflow-27.c: Same. Remove xfails.
- * gcc.dg/Wstringop-overflow-28.c: Adjust text of expected messages.
- * gcc.dg/Wstringop-overflow-29.c: Same.
- * gcc.dg/Wstringop-overflow-37.c: Same.
- * gcc.dg/Wstringop-overflow-46.c: Same.
- * gcc.dg/Wstringop-overflow-47.c: Same.
- * gcc.dg/Wstringop-overflow-54.c: Same.
- * gcc.dg/warn-strnlen-no-nul.c: Add expected warning.
- * gcc.dg/Wstringop-overflow-7.c: New test.
- * gcc.dg/Wstringop-overflow-58.c: New test.
- * gcc.dg/Wstringop-overflow-59.c: New test.
- * gcc.dg/Wstringop-overflow-60.c: New test.
- * gcc.dg/Wstringop-overflow-61.c: New test.
- * gcc.dg/Wstringop-overflow-62.c: New test.
- * gcc.dg/Wstringop-overflow-63.c: New test.
- * gcc.dg/Wstringop-overflow-64.c: New test.
-
-2020-11-28 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc.target/sparc/overflow-6.c: New test.
-
-2020-11-27 Joseph Myers <joseph@codesourcery.com>
-
- PR preprocessor/97602
- * gcc.dg/cpp/line9.c, gcc.dg/cpp/line10.c: New tests.
-
-2020-11-27 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * gdc.dg/intrinsics.d: Adjust patterns in scan-tree-dump.
-
-2020-11-27 Uroš Bizjak <ubizjak@gmail.com>
-
- PR testsuite/98036
- * gcc.target/i386/fma4-256-maccXX.c (check_maccps):
- Remove unnecessary postfix increment on a returned variable.
- (check_maccpd): Ditto.
- * gcc.target/i386/fma4-256-msubXX.c (check_msubps): Ditto.
- (check_msubpd): Ditto.
- * gcc.target/i386/fma4-256-nmaccXX.c (check_nmaccps): Ditto.
- (check_nmaccpd): Ditto.
- * gcc.target/i386/fma4-256-nmsubXX.c (check_nmsubps): Ditto.
- (check_nmsubpd): Ditto.
- * gcc.target/i386/fma4-maccXX.c (check_maccps): Ditto.
- (check_maccpd): Ditto.
- (check_maccss): Ditto.
- (check_maccsd): Ditto.
- * gcc.target/i386/fma4-msubXX.c (check_msubps): Ditto.
- (check_msubpd): Ditto.
- (check_msubss): Ditto.
- (check_msubsd): Ditto.
- * gcc.target/i386/fma4-nmaccXX.c (check_nmaccps): Ditto.
- (check_nmaccpd): Ditto.
- (check_nmaccss): Ditto.
- (check_nmaccsd): Ditto.
- * gcc.target/i386/fma4-nmsubXX.c (check_nmsubps): Ditto.
- (check_nmsubpd): Ditto.
- (check_nmsubss): Ditto.
- (check_nmsubsd): Ditto.
- * gcc.target/i386/xop-haddX.c (check_sbyte2word): Add missing return.
- (check_sbyte2dword):
- Remove unnecessary postfix increment on a returned value.
- (check_sbyte2qword): Ditto.
- (check_sword2dword): Add missing return.
- (check_sword2qword):
- Remove unnecessary postfix increment on a returned value.
- (check_dword2qword): Add missing return.
- * gcc.target/i386/xop-hadduX.c (check_byte2word): Add missing return.
- (check_byte2dword):
- Remove unnecessary postfix increment on a returned value.
- (check_byte2qword): Ditto.
- (check_word2dword): Add missing return.
- (check_word2qword):
- Remove unnecessary postfix increment on a returned value.
- (check_word2qword): Add missing return.
- * gcc.target/i386/xop-hsubX.c (check_sbyte2word): Add missing return.
- (check_sword2dword): Ditto.
- (check_sword2qword): Ditto.
-
-2020-11-27 Thomas Schwinge <thomas@codesourcery.com>
-
- * c-c++-common/goacc/kernels-decompose-ice-1.c: Adjust.
- * c-c++-common/goacc/kernels-decompose-ice-2.c: Likewise.
-
-2020-11-27 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/requires-4.f90: Fix typo in '!$omp' clause.
-
-2020-11-27 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/requires-4.f90: Fix '!$omp' syntax.
-
-2020-11-27 Jakub Jelinek <jakub@redhat.com>
-
- PR libstdc++/88101
- * g++.dg/torture/builtin-clear-padding-3.C: New test.
-
-2020-11-27 Tobias Burnus <tobias@codesourcery.com>
-
- PR c/97880
- * gcc.dg/goacc/tile-1.c: New test.
-
-2020-11-26 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/97997
- * gcc.dg/tree-ssa/pr97997-1.c: New test.
- * gcc.dg/tree-ssa/pr97997-2.c: New test.
-
-2020-11-26 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97953
- * gcc.dg/pr97953.c: New testcase.
-
-2020-11-26 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/97979
- * gcc.dg/pr97979.c: New test.
- * gcc.c-torture/compile/pr97979.c: New test.
-
-2020-11-26 Richard Biener <rguenther@suse.de>
-
- PR testsuite/98002
- * gcc.dg/strncmp-2.c: Call mprotect again before free.
-
-2020-11-26 Thomas Schwinge <thomas@codesourcery.com>
-
- * c-c++-common/goacc/cache-3-1.c: New.
- * c-c++-common/goacc/cache-3-2.c: Likewise.
- * c-c++-common/goacc/data-clause-1.c: Likewise.
- * c-c++-common/goacc/data-clause-2.c: Likewise.
- * c-c++-common/gomp/map-1.c: Adjust.
- * c-c++-common/gomp/map-2.c: Likewise.
- * g++.dg/goacc/cache-3-1.C: New.
- * g++.dg/goacc/cache-3-2.C: Likewise.
- * g++.dg/goacc/data-clause-1.C: Likewise.
- * g++.dg/goacc/data-clause-2.C: Likewise.
- * g++.dg/gomp/map-1.C: Adjust.
- * g++.dg/gomp/map-2.C: Likewise.
-
-2020-11-26 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/97873
- * gcc.target/i386/pr97873-3.c: New test.
-
-2020-11-26 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/multfixed.adb: Robustify.
-
-2020-11-26 Jakub Jelinek <jakub@redhat.com>
-
- PR target/96906
- * gcc.target/i386/pr96906-1.c: New test.
-
-2020-11-26 Martin Uecker <muecker@gwdg.de>
-
- PR c/65455
- PR c/92935
- * gcc.dg/typeof-2.c: Adapt test.
-
-2020-11-26 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.dg/nextafter-1.c: Omit prototypes if _NEXT_AFTER_2 defined.
- * gcc.dg/nextafter-2.c: Define _NEXT_AFTER_2.
- * gcc.dg/profile-info-section.c: Skip on AIX.
-
-2020-11-25 Martin Sebor <msebor@redhat.com>
-
- PR bootstrap/94982
- * c-c++-common/patchable_function_entry-error-3.c: Adjust text
- of expected warning.
-
-2020-11-25 Jan Hubicka <jh@suse.cz>
-
- * gcc.dg/lto/modref-3_0.c: New test.
- * gcc.dg/lto/modref-3_1.c: New test.
- * gcc.dg/lto/modref-4_0.c: New test.
- * gcc.dg/lto/modref-4_1.c: New test.
- * gcc.dg/tree-ssa/modref-5.c: New test.
-
-2020-11-25 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/85796
- * gfortran.dg/pr85796.f90: New test.
-
-2020-11-25 Thomas Schwinge <thomas@codesourcery.com>
-
- * g++.dg/gomp/map-1.C: New.
- * g++.dg/gomp/map-2.C: Likewise.
- * c-c++-common/gomp/map-1.c: Adjust.
- * c-c++-common/gomp/map-2.c: Likewise.
-
-2020-11-25 Thomas Schwinge <thomas@codesourcery.com>
-
- * c-c++-common/goacc/cache-1.c: Update.
- * c-c++-common/goacc/cache-2.c: Likewise.
- * g++.dg/goacc/cache-1.C: New.
- * g++.dg/goacc/cache-2.C: Likewise.
-
-2020-11-25 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/97956
- * gcc.dg/memchr-3.c: New test.
-
-2020-11-25 Matthew Malcomson <matthew.malcomson@arm.com>
-
- * c-c++-common/ubsan/sanitize-recover-7.c: Update error message format.
- * lib/asan-dg.exp (asan_link_flags): Implement as a helper
- function asan_link_flags_1 which asan_link_flags and
- hwasan_link_flags use.
- (asan_link_flags_1): Parametrised version of asan_link_flags.
- * c-c++-common/hwasan/aligned-alloc.c: New test.
- * c-c++-common/hwasan/alloca-array-accessible.c: New test.
- * c-c++-common/hwasan/alloca-base-init.c: New test.
- * c-c++-common/hwasan/alloca-gets-different-tag.c: New test.
- * c-c++-common/hwasan/alloca-outside-caught.c: New test.
- * c-c++-common/hwasan/arguments-1.c: New test.
- * c-c++-common/hwasan/arguments-2.c: New test.
- * c-c++-common/hwasan/arguments-3.c: New test.
- * c-c++-common/hwasan/arguments.c: New test.
- * c-c++-common/hwasan/asan-pr63316.c: New test.
- * c-c++-common/hwasan/asan-pr70541.c: New test.
- * c-c++-common/hwasan/asan-pr78106.c: New test.
- * c-c++-common/hwasan/asan-pr79944.c: New test.
- * c-c++-common/hwasan/asan-rlimit-mmap-test-1.c: New test.
- * c-c++-common/hwasan/bitfield-1.c: New test.
- * c-c++-common/hwasan/bitfield-2.c: New test.
- * c-c++-common/hwasan/builtin-special-handling.c: New test.
- * c-c++-common/hwasan/check-interface.c: New test.
- * c-c++-common/hwasan/halt_on_error-1.c: New test.
- * c-c++-common/hwasan/handles-poly_int-marked-vars.c: New test.
- * c-c++-common/hwasan/heap-overflow.c: New test.
- * c-c++-common/hwasan/hwasan-poison-optimisation.c: New test.
- * c-c++-common/hwasan/hwasan-thread-access-parent.c: New test.
- * c-c++-common/hwasan/hwasan-thread-basic-failure.c: New test.
- * c-c++-common/hwasan/hwasan-thread-clears-stack.c: New test.
- * c-c++-common/hwasan/hwasan-thread-success.c: New test.
- * c-c++-common/hwasan/kernel-defaults.c: New test.
- * c-c++-common/hwasan/large-aligned-0.c: New test.
- * c-c++-common/hwasan/large-aligned-1.c: New test.
- * c-c++-common/hwasan/large-aligned-untagging-0.c: New test.
- * c-c++-common/hwasan/large-aligned-untagging-1.c: New test.
- * c-c++-common/hwasan/large-aligned-untagging-2.c: New test.
- * c-c++-common/hwasan/large-aligned-untagging-3.c: New test.
- * c-c++-common/hwasan/large-aligned-untagging-4.c: New test.
- * c-c++-common/hwasan/large-aligned-untagging-5.c: New test.
- * c-c++-common/hwasan/large-aligned-untagging-6.c: New test.
- * c-c++-common/hwasan/large-aligned-untagging-7.c: New test.
- * c-c++-common/hwasan/macro-definition.c: New test.
- * c-c++-common/hwasan/no-sanitize-attribute.c: New test.
- * c-c++-common/hwasan/param-instrument-mem-intrinsics.c: New test.
- * c-c++-common/hwasan/param-instrument-reads-and-writes.c: New test.
- * c-c++-common/hwasan/param-instrument-reads.c: New test.
- * c-c++-common/hwasan/param-instrument-writes.c: New test.
- * c-c++-common/hwasan/random-frame-tag.c: New test.
- * c-c++-common/hwasan/sanity-check-pure-c.c: New test.
- * c-c++-common/hwasan/setjmp-longjmp-0.c: New test.
- * c-c++-common/hwasan/setjmp-longjmp-1.c: New test.
- * c-c++-common/hwasan/stack-tagging-basic-0.c: New test.
- * c-c++-common/hwasan/stack-tagging-basic-1.c: New test.
- * c-c++-common/hwasan/stack-tagging-disable.c: New test.
- * c-c++-common/hwasan/unprotected-allocas-0.c: New test.
- * c-c++-common/hwasan/unprotected-allocas-1.c: New test.
- * c-c++-common/hwasan/use-after-free.c: New test.
- * c-c++-common/hwasan/vararray-outside-caught.c: New test.
- * c-c++-common/hwasan/vararray-stack-restore-correct.c: New test.
- * c-c++-common/hwasan/very-large-objects.c: New test.
- * g++.dg/hwasan/hwasan.exp: New test.
- * g++.dg/hwasan/rvo-handled.C: New test.
- * gcc.dg/hwasan/hwasan.exp: New test.
- * gcc.dg/hwasan/nested-functions-0.c: New test.
- * gcc.dg/hwasan/nested-functions-1.c: New test.
- * gcc.dg/hwasan/nested-functions-2.c: New test.
- * lib/hwasan-dg.exp: New file.
-
-2020-11-25 Jakub Jelinek <jakub@redhat.com>
-
- PR rtl-optimization/95862
- * gcc.dg/builtin-artih-overflow-5.c: Renamed to ...
- * gcc.dg/builtin-arith-overflow-5.c: ... this.
-
-2020-11-25 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/acle/asm/abs_f16.c (abs_f16_x_untied): Expect
- a MOVPRFX instruction.
- * gcc.target/aarch64/sve/acle/asm/abs_f32.c (abs_f32_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/abs_f64.c (abs_f64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/abs_s16.c (abs_s16_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/abs_s32.c (abs_s32_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/abs_s64.c (abs_s64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/abs_s8.c (abs_s8_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cls_s16.c (cls_s16_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cls_s32.c (cls_s32_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cls_s64.c (cls_s64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cls_s8.c (cls_s8_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/clz_s16.c (clz_s16_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/clz_s32.c (clz_s32_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/clz_s64.c (clz_s64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/clz_s8.c (clz_s8_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/clz_u16.c (clz_u16_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/clz_u32.c (clz_u32_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/clz_u64.c (clz_u64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/clz_u8.c (clz_u8_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnot_s16.c (cnot_s16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnot_s32.c (cnot_s32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnot_s64.c (cnot_s64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnot_s8.c (cnot_s8_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnot_u16.c (cnot_u16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnot_u32.c (cnot_u32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnot_u64.c (cnot_u64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnot_u8.c (cnot_u8_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnt_bf16.c (cnt_bf16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnt_f16.c (cnt_f16_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnt_f32.c (cnt_f32_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnt_f64.c (cnt_f64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnt_s16.c (cnt_s16_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnt_s32.c (cnt_s32_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnt_s64.c (cnt_s64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnt_s8.c (cnt_s8_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnt_u16.c (cnt_u16_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnt_u32.c (cnt_u32_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnt_u64.c (cnt_u64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cnt_u8.c (cnt_u8_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cvt_bf16.c (cvt_bf16_f32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/cvt_f16.c (cvt_f16_f32_x_untied)
- (cvt_f16_f64_x_untied, cvt_f16_s16_x_untied, cvt_f16_s32_x_untied)
- (cvt_f16_s64_x_untied, cvt_f16_u16_x_untied, cvt_f16_u32_x_untied)
- (cvt_f16_u64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cvt_f32.c (cvt_f32_f16_x_untied)
- (cvt_f32_f64_x_untied, cvt_f32_s16_x_untied, cvt_f32_s32_x_untied)
- (cvt_f32_s64_x_untied, cvt_f32_u16_x_untied, cvt_f32_u32_x_untied)
- (cvt_f32_u64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cvt_f64.c (cvt_f64_f16_x_untied)
- (cvt_f64_f32_x_untied, cvt_f64_s16_x_untied, cvt_f64_s32_x_untied)
- (cvt_f64_s64_x_untied, cvt_f64_u16_x_untied, cvt_f64_u32_x_untied)
- (cvt_f64_u64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cvt_s16.c (cvt_s16_f16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/cvt_s32.c (cvt_s32_f16_x_untied)
- (cvt_s32_f32_x_untied, cvt_s32_s64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cvt_s64.c (cvt_s64_f16_x_untied)
- (cvt_s64_f32_x_untied, cvt_s64_s64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cvt_u16.c (cvt_u16_f16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/cvt_u32.c (cvt_u32_f16_x_untied)
- (cvt_u32_f32_x_untied, cvt_u32_u64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/cvt_u64.c (cvt_u64_f16_x_untied)
- (cvt_u64_f32_x_untied, cvt_u64_u64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/extb_s16.c (extb_s16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/extb_s32.c (extb_s32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/extb_s64.c (extb_s64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/exth_s32.c (exth_s32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/exth_s64.c (exth_s64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/extw_s64.c (extw_s64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/neg_f16.c (neg_f16_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/neg_f32.c (neg_f32_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/neg_f64.c (neg_f64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/neg_s16.c (neg_s16_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/neg_s32.c (neg_s32_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/neg_s64.c (neg_s64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/neg_s8.c (neg_s8_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/not_s16.c (not_s16_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/not_s32.c (not_s32_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/not_s64.c (not_s64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/not_s8.c (not_s8_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/not_u16.c (not_u16_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/not_u32.c (not_u32_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/not_u64.c (not_u64_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/not_u8.c (not_u8_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/rbit_s16.c (rbit_s16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rbit_s32.c (rbit_s32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rbit_s64.c (rbit_s64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rbit_s8.c (rbit_s8_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/rbit_u16.c (rbit_u16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rbit_u32.c (rbit_u32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rbit_u64.c (rbit_u64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rbit_u8.c (rbit_u8_x_untied): Ditto.
- * gcc.target/aarch64/sve/acle/asm/recpx_f16.c (recpx_f16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/recpx_f32.c (recpx_f32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/recpx_f64.c (recpx_f64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/revb_s16.c (revb_s16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/revb_s32.c (revb_s32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/revb_s64.c (revb_s64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/revb_u16.c (revb_u16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/revb_u32.c (revb_u32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/revb_u64.c (revb_u64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/revh_s32.c (revh_s32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/revh_s64.c (revh_s64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/revh_u32.c (revh_u32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/revh_u64.c (revh_u64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/revw_s64.c (revw_s64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/revw_u64.c (revw_u64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rinta_f16.c (rinta_f16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rinta_f32.c (rinta_f32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rinta_f64.c (rinta_f64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rinti_f16.c (rinti_f16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rinti_f32.c (rinti_f32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rinti_f64.c (rinti_f64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rintm_f16.c (rintm_f16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rintm_f32.c (rintm_f32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rintm_f64.c (rintm_f64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rintn_f16.c (rintn_f16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rintn_f32.c (rintn_f32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rintn_f64.c (rintn_f64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rintp_f16.c (rintp_f16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rintp_f32.c (rintp_f32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rintp_f64.c (rintp_f64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rintx_f16.c (rintx_f16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rintx_f32.c (rintx_f32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rintx_f64.c (rintx_f64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rintz_f16.c (rintz_f16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rintz_f32.c (rintz_f32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/rintz_f64.c (rintz_f64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/sqrt_f16.c (sqrt_f16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/sqrt_f32.c (sqrt_f32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve/acle/asm/sqrt_f64.c (sqrt_f64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve2/acle/asm/cvtx_f32.c (cvtx_f32_f64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve2/acle/asm/logb_f16.c (logb_f16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve2/acle/asm/logb_f32.c (logb_f32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve2/acle/asm/logb_f64.c (logb_f64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve2/acle/asm/qabs_s16.c (qabs_s16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve2/acle/asm/qabs_s32.c (qabs_s32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve2/acle/asm/qabs_s64.c (qabs_s64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve2/acle/asm/qabs_s8.c (qabs_s8_x_untied):
- Ditto.
- * gcc.target/aarch64/sve2/acle/asm/qneg_s16.c (qneg_s16_x_untied):
- Ditto.
- * gcc.target/aarch64/sve2/acle/asm/qneg_s32.c (qneg_s32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve2/acle/asm/qneg_s64.c (qneg_s64_x_untied):
- Ditto.
- * gcc.target/aarch64/sve2/acle/asm/qneg_s8.c (qneg_s8_x_untied):
- Ditto.
- * gcc.target/aarch64/sve2/acle/asm/recpe_u32.c (recpe_u32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve2/acle/asm/rsqrte_u32.c (rsqrte_u32_x_untied):
- Ditto.
- * gcc.target/aarch64/sve2/acle/asm/cvtlt_f32.c
- (cvtlt_f32_f16_x_untied): Expect a MOV instruction.
- * gcc.target/aarch64/sve2/acle/asm/cvtlt_f64.c
- (cvtlt_f64_f32_x_untied): Likewise.
-
-2020-11-25 Jakub Jelinek <jakub@redhat.com>
-
- PR rtl-optimization/95862
- * gcc.dg/builtin-artih-overflow-5.c: New test.
-
-2020-11-25 Richard Biener <rguenther@suse.de>
-
- PR middle-end/97579
- * gcc.dg/pr97579.c: New testcase.
-
-2020-11-25 Stam Markianos-Wright <stam.markianos-wright@arm.com>
-
- PR target/91816
- * gcc.target/arm/pr91816.c: New test.
-
-2020-11-25 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/97943
- * c-c++-common/builtin-clear-padding-2.c: New test.
- * c-c++-common/builtin-clear-padding-3.c: New test.
- * g++.dg/ext/builtin-clear-padding-1.C: New test.
- * gcc.dg/builtin-clear-padding-2.c: New test.
-
-2020-11-24 Martin Sebor <msebor@redhat.com>
-
- * gcc.dg/pr97955.c: New test.
-
-2020-11-24 Martin Sebor <msebor@redhat.com>
-
- * gcc.dg/Wstringop-overflow-47.c: Add a note.
-
-2020-11-24 Jason Merrill <jason@redhat.com>
-
- PR c++/97899
- * g++.dg/cpp0x/initlist-template3.C: New test.
-
-2020-11-24 Martin Sebor <msebor@redhat.com>
-
- * gfortran.dg/gomp/declare-target-4.f90: Adjust pattern to expect
- an additional attribute and function return type.
-
-2020-11-24 Richard Earnshaw <rearnsha@arm.com>
-
- * gcc.dg/pr97534.c: New test.
-
-2020-11-24 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/aapcs64/abitest.h (FUNC_VAL_CHECK): Use
- noipa rather than noinline.
- * gcc.target/aarch64/aapcs64/abitest-2.h (FUNC_VAL_CHECK): Likewise.
-
-2020-11-24 Ilya Leoshkevich <iii@linux.ibm.com>
-
- * gcc.target/s390/zvector/autovec-double-quiet-uneq.c: Expect
- that "vx" is not emitted.
- * gcc.target/s390/zvector/autovec-float-quiet-uneq.c: Likewise.
-
-2020-11-24 Jakub Jelinek <jakub@redhat.com>
-
- PR target/97950
- * gcc.target/i386/pr97950.c: New test.
-
-2020-11-24 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/97964
- * gcc.dg/tree-ssa/pr97964.c: New test.
-
-2020-11-24 Thomas Schwinge <thomas@codesourcery.com>
-
- * c-c++-common/goacc/kernels-decompose-1.c: Avoid Tcl 8.5-specific
- behavior.
- * c-c++-common/goacc/kernels-decompose-2.c: Likewise.
- * gfortran.dg/goacc/kernels-decompose-1.f95: Likewise.
- * gfortran.dg/goacc/kernels-decompose-2.f95: Likewise.
-
-2020-11-24 Thomas Schwinge <thomas@codesourcery.com>
-
- * lib/gcc-dg.exp (dg-optimized, dg-missed): Use 'saved-dg-warning'
- instead of 'saved-dg-error'.
-
-2020-11-24 Thomas Schwinge <thomas@codesourcery.com>
-
- * lib/gcc-dg.exp (dg-optimized, dg-missed): Fix 'process-message'
- call.
- * gcc.dg/vect/nodump-vect-opt-info-1.c: Demonstrate.
- * gcc.dg/vect/nodump-vect-opt-info-2.c: Likewise.
-
-2020-11-24 Jakub Jelinek <jakub@redhat.com>
-
- PR c/97958
- * c-c++-common/gomp/pr97958.c: New test.
-
-2020-11-24 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/96929
- * gcc.dg/tree-ssa/pr96929.c: New test.
-
-2020-11-24 Jeff Law <law@redhat.com>
-
- * gcc.dg/tree-ssa/pr23401.c: Update expected output.
- * gcc.dg/tree-ssa/pr27810.c: Update expected output.
- * gcc.dg/tree-ssa/slsr-8.c: Update expected output.
-
-2020-11-24 Kewen Lin <linkw@linux.ibm.com>
-
- * gcc.dg/vect/slp-perm-1.c: Adjust for partial vectors.
- * gcc.dg/vect/slp-perm-5.c: Likewise.
- * gcc.dg/vect/slp-perm-6.c: Likewise.
- * gcc.dg/vect/slp-perm-7.c: Likewise.
-
-2020-11-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
-
- PR tree-optimization/97849
- * gcc.dg/tree-ssa/pr97849.c: New test.
-
-2020-11-24 Martin Sebor <msebor@redhat.com>
-
- * gcc.dg/attr-access-5.c: New test.
-
-2020-11-23 Joseph Myers <joseph@codesourcery.com>
-
- PR c/95630
- * gcc.dg/c11-compare-incomplete-1.c,
- gcc.dg/c11-compare-incomplete-2.c,
- gcc.dg/c99-compare-incomplete-1.c,
- gcc.dg/c99-compare-incomplete-2.c: New tests.
-
-2020-11-23 Martin Jambor <mjambor@suse.cz>
-
- * gfortran.dg/ipcp-array-2.f90: New test.
-
-2020-11-23 Nathan Sidwell <nathan@acm.org>
-
- * lib/prune.exp (prune_gcc_output): Adjust include stack pruning
- for modules.
- (print_ices): Relax regexp.
-
-2020-11-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * g++.target/msp430/data-attributes.C: Remove expected warnings for
- "lower" attribute conflicts.
- Adjust expected wording for "persistent" attribute misuse.
- * gcc.target/msp430/data-attributes-2.c: Likewise.
- * gcc.target/msp430/pr78818-auto-warn.c: Likewise.
-
-2020-11-23 Richard Biener <rguenther@suse.de>
-
- * g++.dg/vect/simd-12.cc: New testcase.
-
-2020-11-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * gcc.c-torture/execute/noinit-attribute.c: Moved to...
- * c-c++-common/torture/attr-noinit-main.inc: ...here.
- * lib/target-supports.exp (check_effective_target_persistent): New.
- * c-c++-common/torture/attr-noinit-1.c: New test.
- * c-c++-common/torture/attr-noinit-2.c: New test.
- * c-c++-common/torture/attr-noinit-3.c: New test.
- * c-c++-common/torture/attr-noinit-invalid.c: New test.
- * c-c++-common/torture/attr-persistent-1.c: New test.
- * c-c++-common/torture/attr-persistent-2.c: New test.
- * c-c++-common/torture/attr-persistent-3.c: New test.
- * c-c++-common/torture/attr-persistent-invalid.c: New test.
- * c-c++-common/torture/attr-persistent-main.inc: New test.
-
-2020-11-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * gcc.target/msp430/data-attributes-2.c: Adjust test.
- * g++.target/msp430/data-attributes.C: New test.
- * g++.target/msp430/msp430.exp: New test.
-
-2020-11-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * gcc.c-torture/execute/noinit-attribute.c: Don't override
- optimization options set by torture test harness.
- * lib/target-supports.exp (check_effective_target_noinit): Adjust
- comment formatting.
-
-2020-11-23 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc.target/arm/cortex-m55-nodsp-flag-hard.c: Add -mthumb.
- * gcc.target/arm/cortex-m55-nodsp-flag-softfp.c: Likewise.
- * gcc.target/arm/cortex-m55-nodsp-nofp-flag-softfp.c: Likewise.
- * gcc.target/arm/cortex-m55-nofp-flag-hard.c: Likewise.
- * gcc.target/arm/cortex-m55-nofp-flag-softfp.c: Likewise.
- * gcc.target/arm/cortex-m55-nofp-nomve-flag-softfp.c: Likewise.
- * gcc.target/arm/cortex-m55-nomve-flag-hard.c: Likewise.
- * gcc.target/arm/cortex-m55-nomve-flag-softfp.c: Likewise.
- * gcc.target/arm/cortex-m55-nomve.fp-flag-hard.c: Likewise.
- * gcc.target/arm/cortex-m55-nomve.fp-flag-softfp.c: Likewise.
- * gcc.target/arm/mve/intrinsics/pr97327.c: Likewise.
-
-2020-11-23 Richard Sandiford <richard.sandiford@arm.com>
-
- PR c++/97904
- * g++.dg/ext/sve-sizeless-1.C: Add more template tests.
- * g++.dg/ext/sve-sizeless-2.C: Likewise.
-
-2020-11-22 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/97873
- * gcc.target/i386/pr97873-2.c: New test.
-
-2020-11-22 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/97889
- * gdc.dg/torture/pr97889.d: New test.
-
-2020-11-22 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/95853
- * gcc.dg/pr95853.c: New test.
-
-2020-11-21 Marek Polacek <polacek@redhat.com>
-
- PR c++/94695
- * g++.dg/warn/Wrange-loop-construct2.C: New test.
-
-2020-11-21 Marek Polacek <polacek@redhat.com>
-
- PR c++/97846
- * g++.dg/cpp1y/constexpr-label.C: New test.
-
-2020-11-21 Marek Polacek <polacek@redhat.com>
-
- PR c++/97881
- * g++.dg/warn/Wvexing-parse9.C: New test.
-
-2020-11-21 David Edelsohn <dje.gcc@gmail.com>
-
- * g++.dg/debug/localclass2.C: Require LTO.
-
-2020-11-21 Marek Polacek <polacek@redhat.com>
-
- PR c++/97839
- * g++.dg/cpp2a/lambda-generic8.C: New test.
-
-2020-11-21 Marek Polacek <polacek@redhat.com>
-
- PR c++/97427
- * g++.dg/cpp2a/constexpr-dtor10.C: New test.
-
-2020-11-21 Jan Hubicka <jh@suse.cz>
-
- * gcc.dg/vect/vect-35-big-array.c: Excpect 2 loops to be vectorized.
- * gcc.dg/vect/vect-35.c: Excpect 2 loops to be vectorized.
-
-2020-11-21 Aaron Sawdey <acsawdey@linux.ibm.com>
-
- * gcc.target/powerpc/mma-double-test.c (main): Call abort for failure.
- * gcc.target/powerpc/mma-single-test.c (main): Call abort for failure.
- * gcc.target/powerpc/pr96506.c: Rename to pr96506-1.c.
- * gcc.target/powerpc/pr96506-2.c: New test.
- * gcc.target/powerpc/pr96506-1.c: New file.
-
-2020-11-20 Michael Meissner <meissner@linux.ibm.com>
-
- * gcc.dg/nextafter-2.c: Include math.h.
-
-2020-11-20 Jason Merrill <jason@redhat.com>
-
- PR c++/97918
- * g++.dg/debug/localclass2.C: New test.
-
-2020-11-20 Martin Sebor <msebor@redhat.com>
-
- * gcc.dg/attr-access-4.c: New test.
-
-2020-11-20 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/97879
- * gcc.dg/attr-access-3.c: New test.
-
-2020-11-20 Andrew MacLeod <amacleod@redhat.com>
-
- * gcc.dg/pr97515.c: Check in ccp2, not evrp.
-
-2020-11-20 Andrea Corallo <andrea.corallo@arm.com>
-
- PR target/97727
- * gcc.target/aarch64/advsimd-intrinsics/bf16_vstN_lane_2.c: Relax
- regexps.
-
-2020-11-20 Andrea Corallo <andrea.corallo@arm.com>
-
- PR target/97726
- * gcc.target/arm/simd/bf16_vldn_1.c: Relax regexps not to fail on
- big endian.
- * gcc.target/arm/simd/vldn_lane_bf16_1.c: Likewise
- * gcc.target/arm/simd/vmmla_1.c: Add -mfloat-abi=hard flag.
-
-2020-11-20 Jakub Jelinek <jakub@redhat.com>
-
- PR libstdc++/88101
- * c-c++-common/builtin-clear-padding-1.c: New test.
- * c-c++-common/torture/builtin-clear-padding-1.c: New test.
- * c-c++-common/torture/builtin-clear-padding-2.c: New test.
- * c-c++-common/torture/builtin-clear-padding-3.c: New test.
- * c-c++-common/torture/builtin-clear-padding-4.c: New test.
- * c-c++-common/torture/builtin-clear-padding-5.c: New test.
- * g++.dg/torture/builtin-clear-padding-1.C: New test.
- * g++.dg/torture/builtin-clear-padding-2.C: New test.
- * gcc.dg/builtin-clear-padding-1.c: New test.
-
-2020-11-20 Jakub Jelinek <jakub@redhat.com>
-
- PR target/97528
- * gcc.target/arm/pr97528.c: New test.
-
-2020-11-20 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/opt90a.adb: New test.
- * gnat.dg/opt90b.adb: Likewise.
- * gnat.dg/opt90c.adb: Likewise.
- * gnat.dg/opt90d.adb: Likewise.
- * gnat.dg/opt90e.adb: Likewise.
- * gnat.dg/opt90a_pkg.ads: New helper.
- * gnat.dg/opt90b_pkg.ads: Likewise.
- * gnat.dg/opt90c_pkg.ads: Likewise.
- * gnat.dg/opt90d_pkg.ads: Likewise.
- * gnat.dg/opt90e_pkg.ads: Likewise.
-
-2020-11-20 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/97873
- * gcc.target/i386/pr97873.c: New test.
- * gcc.target/i386/pr97873-1.c: New test.
-
-2020-11-20 Martin Uecker <muecker@gwdg.de>
-
- * gcc.dg/cond-constqual-1.c: Adapt test.
- * gcc.dg/lvalue-11.c: New test.
- * gcc.dg/pr60195.c: Add warning.
-
-2020-11-19 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/91029
- * gcc.dg/tree-ssa/pr91029-1.c: New test.
- * gcc.dg/tree-ssa/pr91029-2.c: New test.
-
-2020-11-19 Andrew MacLeod <amacleod@redhat.com>
-
- * gcc.dg/tree-ssa/pr93781-1.c: New.
- * gcc.dg/tree-ssa/pr93781-2.c: New.
- * gcc.dg/tree-ssa/pr93781-3.c: New.
-
-2020-11-19 Jakub Jelinek <jakub@redhat.com>
-
- PR c/97860
- * gcc.dg/pr97860.c: New test.
-
-2020-11-19 Marek Polacek <polacek@redhat.com>
-
- PR c++/97523
- * g++.dg/expr/anew5.C: New test.
- * g++.dg/expr/anew6.C: New test.
-
-2020-11-19 Marek Polacek <polacek@redhat.com>
-
- PR c++/97895
- * g++.dg/cpp0x/auto54.C: New test.
-
-2020-11-19 Nathan Sidwell <nathan@acm.org>
-
- PR c++/97905
- * g++.dg/lookup/pr97905.C: New.
-
-2020-11-19 Dimitar Dimitrov <dimitar@dinux.eu>
-
- * gcc.target/pru/halt.c: New test.
- * gcc.target/pru/lmbd.c: New test.
-
-2020-11-19 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.dg/vect/vect-cost-model-1.c: New test.
- * gcc.dg/vect/vect-cost-model-2.c: Likewise.
- * gcc.dg/vect/vect-cost-model-3.c: Likewise.
- * gcc.dg/vect/vect-cost-model-4.c: Likewise.
- * gcc.dg/vect/vect-cost-model-5.c: Likewise.
- * gcc.dg/vect/vect-cost-model-6.c: Likewise.
-
-2020-11-19 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/pr97897.c: Add dg-options.
-
-2020-11-19 Joel Hutton <joel.hutton@arm.com>
-
- * gcc.target/aarch64/vect-widen-lshift.c: New test.
-
-2020-11-19 Joel Hutton <joel.hutton@arm.com>
-
- * gcc.target/aarch64/vect-widen-add.c: New test.
- * gcc.target/aarch64/vect-widen-sub.c: New test.
-
-2020-11-19 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97901
- * gcc.dg/torture/pr97901.c: New testcase.
-
-2020-11-19 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97897
- * gcc.dg/pr97897.c: New testcase.
-
-2020-11-19 Uroš Bizjak <ubizjak@gmail.com>
-
- * gcc.target/i386/pr97887.c: New test.
-
-2020-11-18 Roger Sayle <roger@nextmovesoftware.com>
-
- PR middle-end/85811
- * gcc.dg/pr85811.c: New test.
- * gcc.dg/fold-isfinite-1.c: New test.
- * gcc.dg/fold-isfinite-2.c: New test.
- * gcc.dg/fold-isinf-1.c: New test.
- * gcc.dg/fold-isinf-2.c: New test.
- * gcc.dg/fold-isnan-1.c: New test.
- * gcc.dg/fold-isnan-2.c: New test.
-
-2020-11-18 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/91029
- PR tree-optimization/97888
- * gcc.dg/pr91029.c: Add comment with PR number.
- (f2): Use > 0 rather than >= 0.
- * gcc.c-torture/execute/pr97888-1.c: New test.
- * gcc.c-torture/execute/pr97888-2.c: New test.
-
-2020-11-18 David Malcolm <dmalcolm@redhat.com>
+ * gcc.target/aarch64/advsimd-intrinsics/vmlXl_high.inc:
+ New test template.
+ * gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_lane.inc:
+ New test template.
+ * gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_laneq.inc:
+ New test template.
+ * gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_n.inc:
+ New test.
+ * gcc.target/aarch64/advsimd-intrinsics/vmlal_high.c:
+ New test.
+ * gcc.target/aarch64/advsimd-intrinsics/vmlal_high_lane.c:
+ New test.
+ * gcc.target/aarch64/advsimd-intrinsics/vmlal_high_laneq.c:
+ New test.
+ * gcc.target/aarch64/advsimd-intrinsics/vmlal_high_n.c:
+ New test.
+ * gcc.target/aarch64/advsimd-intrinsics/vmlsl_high.c:
+ New test.
+ * gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_lane.c:
+ New test.
+ * gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_laneq.c:
+ New test.
+ * gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_n.c:
+ New test.
- PR analyzer/97893
- * gcc.dg/analyzer/malloc-1.c: Add CWE-690 and CWE-476 codes to
- expected output.
+2021-02-01 Jonathan Wright <jonathan.wright@arm.com>
-2020-11-18 Richard Sandiford <richard.sandiford@arm.com>
+ * gcc.target/aarch64/advsimd-intrinsics/vmull_high.c:
+ New test.
+ * gcc.target/aarch64/advsimd-intrinsics/vmull_high_lane.c:
+ New test.
+ * gcc.target/aarch64/advsimd-intrinsics/vmull_high_laneq.c:
+ New test.
+ * gcc.target/aarch64/advsimd-intrinsics/vmull_high_n.c:
+ New test.
- * gcc.dg/vect/bb-slp-pr68892.c: Don't XFAIL the profitability
- test for aarch64*-*-*. Allow the "BB vectorization with gaps"
- message to be printed more than once.
+2021-02-01 Tamar Christina <tamar.christina@arm.com>
-2020-11-18 Richard Sandiford <richard.sandiford@arm.com>
+ * gcc.target/aarch64/advsimd-intrinsics/smlal-smlsl-mull-optimized.c: New test.
- * gcc.dg/vect/slp-21.c: Expect 4 SLP instances to be vectorized
- on arm* and aarch64* targets.
+2021-02-01 Patrick Palka <ppalka@redhat.com>
-2020-11-18 Richard Sandiford <richard.sandiford@arm.com>
+ PR c++/84494
+ * g++.dg/cpp1y/constexpr-84494.C: New test.
- * gcc.dg/vect/fast-math-vect-call-1.c: Only expect SLP to be used
- on vect_perm3_int targets.
- * gcc.dg/vect/slp-perm-6.c: Likewise. Only XFAIL the LOAD/STORE_LANES
- tests on vect_perm3_int targets.
+2021-02-01 Xing GUO <higuoxing@gmail.com>
-2020-11-18 Richard Sandiford <richard.sandiford@arm.com>
+ * gcc.target/riscv/attribute-18.c: Add -mriscv-attribute option.
- * gcc.dg/vect/vect-epilogues.c: XFAIL test for epilogue loop
- vectorization if vect_partial_vectors_usage_2.
+2021-02-01 Xionghu Luo <luoxhu@linux.ibm.com>
-2020-11-18 Richard Sandiford <richard.sandiford@arm.com>
+ * gcc.target/powerpc/pr79251.p8.c: Update store count regex.
+ * gcc.target/powerpc/pr79251.p9.c: Likewise.
- * gcc.dg/vect/vect-sdiv-pow2-1.c (main): Add an asm to the
- set-up loop.
+2021-01-31 Iain Sandoe <iain@sandoe.co.uk>
-2020-11-18 Iain Buclaw <ibuclaw@gdcproject.org>
+ * c-c++-common/attr-used-5.c: Skip for Darwin.
+ * c-c++-common/attr-used-6.c: Likewise.
+ * c-c++-common/attr-used-7.c: Likewise.
+ * c-c++-common/attr-used-8.c: Likewise.
+ * c-c++-common/attr-used-9.c: Likewise.
- PR d/97843
- * gdc.dg/torture/pr97843.d: New test.
+2021-01-30 David Edelsohn <dje.gcc@gmail.com>
-2020-11-18 Jakub Jelinek <jakub@redhat.com>
+ * gcc.target/powerpc/pr79251.p8.c: Update ilp32 store counts.
+ * gcc.target/powerpc/pr79251.p9.c: Same.
- PR middle-end/97862
- * c-c++-common/gomp/pr97862.c: New test.
+2021-01-30 Jakub Jelinek <jakub@redhat.com>
-2020-11-18 Kito Cheng <kito.cheng@sifive.com>
+ * gcc.target/i386/20051216-1.c: New test.
- * gcc.target/riscv/arch-9.c: New.
- * gcc.target/riscv/arch-10.c: Ditto.
- * gcc.target/riscv/arch-11.c: Ditto.
- * gcc.target/riscv/attribute-6.c: Remove, we don't support G
- with version anymore.
- * gcc.target/riscv/attribute-8.c: Reorder arch string to fit canonical
- ordering.
- * gcc.target/riscv/attribute-9.c: We don't emit version for
- unknown extensions now.
- * gcc.target/riscv/attribute-11.c: Add -misa-spec=2.2 flags.
- * gcc.target/riscv/attribute-12.c: Ditto.
- * gcc.target/riscv/attribute-13.c: Ditto.
- * gcc.target/riscv/attribute-14.c: Ditto.
- * gcc.target/riscv/attribute-15.c: New.
- * gcc.target/riscv/attribute-16.c: Ditto.
- * gcc.target/riscv/attribute-17.c: Ditto.
+2021-01-30 Jakub Jelinek <jakub@redhat.com>
-2020-11-18 Kito Cheng <kito.cheng@sifive.com>
+ PR testsuite/98243
+ * gcc.dg/gomp/simd-2.c: Add -msse2 on x86. Restrict
+ scan-tree-dump-times to x86 and aarch64 targets.
+ * gcc.dg/gomp/simd-3.c: Likewise.
- * gcc.target/riscv/arch-8.c: New.
- * gcc.target/riscv/attribute-14.c: Ditto.
+2021-01-29 Michael Meissner <meissner@linux.ibm.com>
-2020-11-18 Jiufu Guo <guojiufu@linux.ibm.com>
+ PR testsuite/98870
+ * gcc.target/powerpc/ppc-fortran/ieee128-math.f90: Fix the
+ expected result.
- * gcc.dg/tree-ssa/loopclosedphi.c: New test.
+2021-01-29 Will Schmidt <will_schmidt@vnet.ibm.com>
-2020-11-17 Andrew MacLeod <amacleod@redhat.com>
+ * gcc.target/powerpc/pr91903.c: Fix dg-require stanza.
- * gcc.dg/pr91029.c: New.
+2021-01-29 Vladimir N. Makarov <vmakarov@redhat.com>
-2020-11-17 Nathan Sidwell <nathan@acm.org>
+ PR target/97701
+ * gcc.target/aarch64/pr97701.c: Modify.
- PR c++/97877
- * g++.dg/lookup/pr97877.C: New.
+2021-01-29 David Malcolm <dmalcolm@redhat.com>
-2020-11-17 Andrew MacLeod <amacleod@redhat.com>
+ * gcc.dg/analyzer/combined-conditionals-1.c: New test.
- * gcc.dg/pr83072.c: New.
+2021-01-29 Vladimir N. Makarov <vmakarov@redhat.com>
-2020-11-17 Joseph Myers <joseph@codesourcery.com>
+ PR target/97701
+ * gcc.target/aarch64/pr97701.c: New.
- * gcc.dg/cr-decimal-dig-3.c: New test.
+2021-01-29 Will Schmidt <will_schmidt@vnet.ibm.com>
-2020-11-17 Joseph Myers <joseph@codesourcery.com>
+ * gcc.target/powerpc/pr91903.c: New test.
+ * gcc.target/powerpc/builtins-1.fold.h: Update.
+ * gcc.target/powerpc/builtins-2.c: Update.
- * gcc.dg/c11-float-6.c, gcc.dg/c2x-float-10.c: New tests.
+2021-01-29 Nathan Sidwell <nathan@acm.org>
-2020-11-17 David Edelsohn <dje.gcc@gmail.com>
+ PR c++/98843
+ * g++.dg/modules/pr98843_a.C: New.
+ * g++.dg/modules/pr98843_b.H: New.
+ * g++.dg/modules/pr98843_c.C: New.
- * gcc.dg/pr25376.c: Allow .opd section.
+2021-01-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
-2020-11-17 H.J. Lu <hjl.tools@gmail.com>
+ * gcc.target/aarch64/simd/vaddlv_1.c: New test.
- PR target/31799
- * gcc.target/i386/pr31799.c: New test.
+2021-01-29 Bin Cheng <bin.cheng@linux.alibaba.com>
+ Richard Biener <rguenther@suse.de>
-2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+ PR tree-optimization/97627
+ * g++.dg/pr97627.C: New testcase.
- * gcc.target/aarch64/sve/cond_cnot_1.c: Remove XFAIL.
- * gcc.target/aarch64/sve/cond_unary_1.c: Likewise.
+2021-01-29 Jakub Jelinek <jakub@redhat.com>
-2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+ PR target/98849
+ * gcc.c-torture/compile/pr98849.c: New test.
- PR tree-optimization/97693
- * gcc.dg/vect/pr97693.c: New test.
+2021-01-29 Jakub Jelinek <jakub@redhat.com>
-2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+ PR debug/98331
+ * gcc.dg/pr98331.c: New test.
- * gcc.dg/vect/slp-46.c: XFAIL test for SLP on vect_load_lanes targets.
+2021-01-29 Xionghu Luo <luoxhu@linux.ibm.com>
-2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+ * gcc.target/powerpc/pr79251.p8.c: Move TEST_VEC_INSERT_ALL
+ to ...
+ * gcc.target/powerpc/pr79251.h: ...this.
+ * gcc.target/powerpc/pr79251.p9.c: Likewise.
+ * gcc.target/powerpc/pr79251-run.c: Move run_test to pr79251.h.
+ Rename to...
+ * gcc.target/powerpc/pr79251-run.p8.c: ...this.
+ * gcc.target/powerpc/pr79251-run.p9.c: New test.
- * gcc.dg/vect/aligned-section-anchors-nest-1.c: XFAIL alignment
- test if vect_element_align_preferred.
+2021-01-29 Marek Polacek <polacek@redhat.com>
-2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+ PR c++/96137
+ * g++.dg/parse/error63.C: New test.
- * gcc.dg/vect/bb-slp-subgroups-3.c: XFAIL for variable-length vectors.
+2021-01-28 Jakub Jelinek <jakub@redhat.com>
-2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+ PR c++/98841
+ * g++.dg/warn/effc5.C: New test.
- * gcc.dg/vect/pr65947-8.c: Expect the loop to be vectorized for SVE.
+2021-01-28 Marek Polacek <polacek@redhat.com>
-2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+ PR c++/94775
+ * g++.dg/cpp0x/alignas19.C: New test.
+ * g++.dg/warn/Warray-bounds15.C: New test.
- * gcc.dg/vect/pr97678.c: XFAIL test for SLP vectorization
- for variable-length vectors.
- * gcc.dg/vect/pr97835.c: Likewise.
- * gcc.dg/vect/slp-49.c: Likewise.
- * gcc.dg/vect/vect-outer-slp-1.c: Likewise.
- * gcc.dg/vect/vect-outer-slp-2.c: Likewise.
- * gcc.dg/vect/vect-outer-slp-3.c: Likewise.
+2021-01-28 Christophe Lyon <christophe.lyon@linaro.org>
-2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+ PR target/98730
+ * gcc.target/arm/simd/vceqzq_p64.c: Update expected result.
- * gcc.dg/vect/slp-reduc-4.c: XFAIL test for SLP vectorization
- for variable-length SVE.
- * gcc.dg/vect/slp-reduc-7.c: Likewise.
+2021-01-28 David Edelsohn <dje.gcc@gmail.com>
-2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+ * gfortran.dg/ISO_Fortran_binding_18.c: Include
+ ../../../libgfortran/ISO_Fortran_binding.h rather than
+ ISO_Fortran_binding.h.
- * gcc.dg/vect/bb-slp-43.c: Remove XFAIL for vect_variable_length.
+2021-01-28 Michael Meissner <meissner@linux.ibm.com>
-2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+ * gcc.target/powerpc/float128-longdouble-math.c: New test.
+ * gcc.target/powerpc/float128-longdouble-stdio.c: New test.
+ * gcc.target/powerpc/float128-math.c: Adjust test for new name
+ being generated. Add support for running test on power10. Add
+ support for running if long double defaults to 64-bits.
- * gcc.dg/vect/pr91750.c: Allow "[]," inside a vector(...) lane count.
+2021-01-28 Jakub Jelinek <jakub@redhat.com>
-2020-11-17 Liu Hao <lh_mouse@126.com>
+ PR c++/33661
+ PR c++/98847
+ * g++.target/i386/pr98847.C: New test.
- * gcc.dg/format/ms_c99-printf-3.c: Update tests.
+2021-01-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
-2020-11-17 Jakub Jelinek <jakub@redhat.com>
+ * gcc.target/aarch64/narrow_high-intrinsics.c: Fix shrn2 scan.
- PR c/90628
- * gcc.dg/builtin-arith-overflow-4.c: New test.
+2021-01-28 Nathan Sidwell <nathan@acm.org>
-2020-11-17 Jakub Jelinek <jakub@redhat.com>
+ PR c++/98770
+ * g++.dg/modules/pr98770_a.C: New.
+ * g++.dg/modules/pr98770_b.C: New.
- * gcc.dg/guality/pr59776.c (foo): Use noipa attribute instead of
- noinline, noclone.
+2021-01-28 Harald Anlauf <anlauf@gmx.de>
-2020-11-17 liuhongt <hongtao.liu@intel.com>
+ PR fortran/86470
+ * gfortran.dg/gomp/pr86470.f90: New test.
- * gcc.target/i386/avx2-vec-set-1.c: New test.
- * gcc.target/i386/avx2-vec-set-2.c: New test.
- * gcc.target/i386/avx512bw-vec-set-1.c: New test.
- * gcc.target/i386/avx512bw-vec-set-2.c: New test.
- * gcc.target/i386/avx512f-vec-set-2.c: New test.
- * gcc.target/i386/avx512vl-vec-set-2.c: New test.
+2021-01-28 Xionghu Luo <luoxhu@linux.ibm.com>
-2020-11-17 Martin Sebor <msebor@redhat.com>
+ PR target/98827
+ * gcc.target/powerpc/fold-vec-insert-char-p8.c: Adjust ilp32.
+ * gcc.target/powerpc/fold-vec-insert-char-p9.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-double.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-float-p8.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-float-p9.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-int-p8.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-int-p9.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-longlong.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-short-p8.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-short-p9.c: Likewise.
+ * gcc.target/powerpc/pr79251.p8.c: Likewise.
+ * gcc.target/powerpc/pr79251.p9.c: Likewise.
+ * gcc.target/powerpc/vsx-builtin-7.c: Likewise.
+ * gcc.target/powerpc/pr79251-run.c: Build and run with vsx
+ option.
- PR middle-end/95673
- * gcc.dg/Wstring-compare-3.c: New test.
+2021-01-28 Xing GUO <higuoxing@gmail.com>
-2020-11-17 Joseph Myers <joseph@codesourcery.com>
+ * gcc.target/riscv/attribute-18.c: New test.
- * gcc.dg/dfp/c2x-float-dfp-7.c, gcc.dg/dfp/c2x-float-dfp-8.c: New
- tests.
- * gcc.dg/c2x-float-no-dfp-3.c: Also check that DEC32_SNAN,
- DEC64_SNAN and DEC128_SNAN are not defined.
+2021-01-27 Harris Snyder <hsnyder@structura.bio>
-2020-11-17 Joseph Myers <joseph@codesourcery.com>
+ * gfortran.dg/ISO_Fortran_binding_18.c: New test.
+ * gfortran.dg/ISO_Fortran_binding_18.f90: New test.
- * lib/target-supports.exp (check_effective_target_inff): New.
- * gcc.dg/c11-float-4.c, gcc.dg/c11-float-5.c,
- gcc.dg/c11-float-dfp-2.c, gcc.dg/c2x-float-2.c,
- gcc.dg/c2x-float-3.c, gcc.dg/c2x-float-4.c, gcc.dg/c2x-float-5.c,
- gcc.dg/c2x-float-6.c, gcc.dg/c2x-float-7.c, gcc.dg/c2x-float-8.c,
- gcc.dg/c2x-float-9.c, gcc.dg/c2x-float-no-dfp-3.c,
- gcc.dg/c2x-float-no-dfp-4.c, gcc.dg/dfp/c2x-float-dfp-4.c,
- gcc.dg/dfp/c2x-float-dfp-5.c, gcc.dg/dfp/c2x-float-dfp-6.c,
- gcc.dg/torture/float128-nan-floath.c,
- gcc.dg/torture/float128x-nan-floath.c,
- gcc.dg/torture/float16-nan-floath.c,
- gcc.dg/torture/float32-nan-floath.c,
- gcc.dg/torture/float32x-nan-floath.c,
- gcc.dg/torture/float64-nan-floath.c,
- gcc.dg/torture/float64x-nan-floath.c,
- gcc.dg/torture/floatn-nan-floath.h: New tests.
+2021-01-27 Vladimir N. Makarov <vmakarov@redhat.com>
-2020-11-16 Roger Sayle <roger@nextmovesoftware.com>
+ PR rtl-optimization/97684
+ * gcc.target/i386/pr97684.c: New.
- PR rtl-optimization/92180
- * gcc.target/i386/pr92180.c: New test.
+2021-01-27 Jason Merrill <jason@redhat.com>
-2020-11-16 Harald Anlauf <anlauf@gmx.de>
+ PR c++/97874
+ * g++.dg/lookup/using4.C: No error in C++20.
+ * g++.dg/cpp0x/decltype37.C: Adjust message.
+ * g++.dg/template/crash75.C: Adjust message.
+ * g++.dg/template/crash76.C: Adjust message.
+ * g++.dg/cpp0x/inh-ctor36.C: New test.
+ * g++.dg/cpp1z/inh-ctor39.C: New test.
+ * g++.dg/cpp2a/using-enum-7.C: New test.
- * gfortran.dg/pr48958.f90: New test.
+2021-01-27 Jakub Jelinek <jakub@redhat.com>
-2020-11-16 Jan Hubicka <jh@suse.cz>
+ PR target/98853
+ * gcc.c-torture/execute/pr98853-1.c: New test.
+ * gcc.c-torture/execute/pr98853-2.c: New test.
- * g++.dg/warn/uninit-1.C: New test.
+2021-01-27 Richard Biener <rguenther@suse.de>
-2020-11-16 Ilya Leoshkevich <iii@linux.ibm.com>
+ PR tree-optimization/98854
+ * gcc.dg/vect/bb-slp-pr98854.c: New testcase.
- * gcc.target/s390/s390.exp (check_effective_target_s390_z14_hw):
- New predicate.
- * gcc.target/s390/vector/long-double-caller-abi-run.c: Use the
- new predicate.
- * gcc.target/s390/vector/long-double-copysign.c: Likewise.
- * gcc.target/s390/vector/long-double-from-double.c: Likewise.
- * gcc.target/s390/vector/long-double-from-float.c: Likewise.
- * gcc.target/s390/vector/long-double-from-i16.c: Likewise.
- * gcc.target/s390/vector/long-double-from-i32.c: Likewise.
- * gcc.target/s390/vector/long-double-from-i64.c: Likewise.
- * gcc.target/s390/vector/long-double-from-i8.c: Likewise.
- * gcc.target/s390/vector/long-double-from-u16.c: Likewise.
- * gcc.target/s390/vector/long-double-from-u32.c: Likewise.
- * gcc.target/s390/vector/long-double-from-u64.c: Likewise.
- * gcc.target/s390/vector/long-double-from-u8.c: Likewise.
- * gcc.target/s390/vector/long-double-to-double.c: Likewise.
- * gcc.target/s390/vector/long-double-to-float.c: Likewise.
- * gcc.target/s390/vector/long-double-to-i16.c: Likewise.
- * gcc.target/s390/vector/long-double-to-i32.c: Likewise.
- * gcc.target/s390/vector/long-double-to-i64.c: Likewise.
- * gcc.target/s390/vector/long-double-to-i8.c: Likewise.
- * gcc.target/s390/vector/long-double-to-u16.c: Likewise.
- * gcc.target/s390/vector/long-double-to-u32.c: Likewise.
- * gcc.target/s390/vector/long-double-to-u64.c: Likewise.
- * gcc.target/s390/vector/long-double-to-u8.c: Likewise.
- * gcc.target/s390/vector/long-double-wfaxb.c: Likewise.
- * gcc.target/s390/vector/long-double-wfdxb.c: Likewise.
- * gcc.target/s390/vector/long-double-wfsxb-1.c: Likewise.
+2021-01-27 Paul Thomas <pault@gcc.gnu.org>
-2020-11-16 H.J. Lu <hjl.tools@gmail.com>
+ PR fortran/93924
+ PR fortran/93925
+ * gfortran.dg/proc_ptr_52.f90 : New test.
- PR testsuite/97803
- * c-c++-common/asan/pointer-compare-1.c (global1): Add
- __attribute__((used))
- (global2): Likewise.
- (small_global): Likewise.
- (large_global): Likewise.
+2021-01-27 liuhongt <hongtao.liu@intel.com>
-2020-11-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
+ PR target/98833
+ * gcc.target/i386/pr98833.c: New test.
- * gcc.dg/profile-info-section.c: New test.
+2021-01-27 Jakub Jelinek <jakub@redhat.com>
-2020-11-16 Richard Biener <rguenther@suse.de>
+ * gcc.target/i386/m128-check.h (CHECK_EXP): Remove
+ optimize ("no-strict-aliasing") attribute.
+ * gcc.target/i386/sse-andnps-1.c (TEST): Copy e into float[4]
+ array to avoid violating TBAA.
+ * gcc.target/i386/sse2-andpd-1.c (TEST): Copy e.d into double[2]
+ array to avoid violating TBAA.
+ * gcc.target/i386/sse-andps-1.c (TEST): Copy e.f into float[4]
+ array to avoid violating TBAA.
+ * gcc.target/i386/sse2-andnpd-1.c (TEST): Copy e into double[2]
+ array to avoid violating TBAA.
- PR tree-optimization/97838
- * gcc.dg/vect/pr97838.c: New testcase.
+2021-01-27 Paul Thomas <pault@gcc.gnu.org>
-2020-11-16 Martin Liska <mliska@suse.cz>
+ PR fortran/98472
+ * gfortran.dg/elemental_function_5.f90 : New test.
- PR tree-optimization/97736
- * gcc.dg/tree-ssa/switch-1.c: Prefer bit tests.
- * g++.dg/tree-ssa/pr97736.C: New test.
+2021-01-27 Jakub Jelinek <jakub@redhat.com>
-2020-11-16 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/97260
+ * gcc.dg/tree-ssa/pr97260.c: New test.
- PR tree-optimization/97835
- * gcc.dg/vect/pr97835.c: New testcase.
+2021-01-26 Paul Fee <paul.f.fee@gmail.com>
-2020-11-16 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97830
- * gcc.dg/pr97830.c: New testcase.
-
-2020-11-15 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+ * lib/target-supports.exp (check_effective_target_c++2a):
+ Check for C++2a or C++23.
+ (check_effective_target_c++20_down): New.
+ (check_effective_target_c++23_only): New.
+ (check_effective_target_c++23): New.
+ * g++.dg/cpp23/cplusplus.C: New.
- * gcc.target/msp430/rtx-cost-Os-f5series.c: Adjust test to use new
- hwmult library function name.
-
-2020-11-15 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.dg/ipa/modref-2.c: Add ilp32 expected result.
+2021-01-26 Jason Merrill <jason@redhat.com>
-2020-11-15 David Edelsohn <dje.gcc@gmail.com>
+ PR c++/97474
+ * g++.dg/torture/pr97474.C: New test.
- * lib/scanasm.exp (parse_section_of_symbols): Also look for AIX
- XCOFF CSECT notation.
- * g++.dg/opt/const4.C: Also look for AIX XCOFF "[RO]".
- * gcc.dg/20021029-1.c: Likewise.
- * gcc.dg/array-quals-1.c: Likewise and "[RW]".
- * g++.dg/gomp/tls-5.C: Also look for AIX XCOFF "[TL]".
- * gcc.dg/pr25376.c: Accept AIX decoration around named section
- and function descriptor.
+2021-01-26 Jason Merrill <jason@redhat.com>
-2020-11-15 Maciej W. Rozycki <macro@linux-mips.org>
+ PR c++/97566
+ * g++.dg/cpp2a/no_unique_address10.C: New test.
+ * g++.dg/cpp2a/no_unique_address9.C: New test.
- * gcc.target/vax/bswapdi-1.c (dg-options): New setting.
+2021-01-26 Jakub Jelinek <jakub@redhat.com>
-2020-11-15 Jason Merrill <jason@redhat.com>
+ * gcc.target/powerpc/m128-check.h (CHECK_EXP): Remove
+ optimize ("no-strict-aliasing") attribute.
+ * gcc.target/powerpc/sse-andnps-1.c (TEST): Copy e into float[4]
+ array to avoid violating TBAA.
+ * gcc.target/powerpc/sse2-andpd-1.c (TEST): Copy e.d into double[2]
+ array to avoid violating TBAA.
+ * gcc.target/powerpc/sse-andps-1.c (TEST): Copy e.f into float[4]
+ array to avoid violating TBAA.
+ * gcc.target/powerpc/sse2-andnpd-1.c (TEST): Copy e into double[2]
+ array to avoid violating TBAA.
- * g++.dg/other/abstract1.C: Adjust.
- * g++.dg/other/abstract2.C: Adjust.
- * g++.dg/other/abstract4.C: Adjust.
- * g++.dg/other/abstract5.C: Adjust.
- * g++.dg/other/abstract8.C: New test.
- * g++.dg/template/sfinae-dr657.C: Adjust.
- * g++.old-deja/g++.other/decl3.C: Adjust.
-
-2020-11-15 Jan Hubicka <jh@suse.cz>
-
- * gcc.c-torture/execute/pr97836.c: New test.
-
-2020-11-14 Iain Sandoe <iain@sandoe.co.uk>
-
- * objc.dg/pr23214.m: Use Object as the root object before
- Darwin12 (and NSObject after).
-
-2020-11-14 Jan Hubicka <jh@suse.cz>
+2021-01-26 Jakub Jelinek <jakub@redhat.com>
- * gcc.dg/torture/pta-ptrarith-1.c: Escape parameters.
+ PR target/98681
+ * gcc.c-torture/execute/pr98681.c: New test.
-2020-11-14 Matthew Glazar <strager.nds@gmail.com>
+2021-01-26 Thomas Koenig <tkoenig@gcc.gnu.org>
- * lib/scanasm.exp (dg-scan): Extract file globbing code ...
- (dg_glob_remote): ... into this new procedure.
- (scan-assembler-symbol-section): Define.
- (scan-symbol-section): Define.
- * g++.dg/gomp/tls-5.C: Add symbol section test.
- * g++.dg/opt/const4.C: Likewise.
- * gcc.dg/20021029-1.c: Likewise.
- * gcc.dg/array-quals-1.c: Likewise.
- * gcc.dg/darwin-sections.c: Likewise.
- * gcc.dg/pr25376.c: Likewise.
- * gcc.test-framework/test-framework.exp: Load scanasm and test .S files.
- * gcc.test-framework/dg-scan-symbol-section-1-exp-F.S: New test.
- * gcc.test-framework/dg-scan-symbol-section-2-exp-F.S: New test.
- * gcc.test-framework/dg-scan-symbol-section-3-exp-F.S: New test.
- * gcc.test-framework/dg-scan-symbol-section-exp-P.S: New test.
+ PR fortran/67539
+ * gfortran.dg/elemental_assignment_1.f90: New test.
-2020-11-14 Monk Chiang <monk.chiang@sifive.com>
+2021-01-26 Tobias Burnus <tobias@codesourcery.com>
- PR target/97682
- * g++.target/riscv/pr97682.C: New test.
- * gcc.target/riscv/interrupt-3.c: Check register for t0.
- * gcc.target/riscv/interrupt-4.c: Likewise.
+ * g++.dg/modules/modules.exp: Remove unused CXX_MODULE_PATH;
+ add previously missing space in '$ident link'.
-2020-11-13 Joseph Myers <joseph@codesourcery.com>
+2021-01-26 Jakub Jelinek <jakub@redhat.com>
- * gcc.dg/binary-constants-2.c, gcc.dg/binary-constants-3.c,
- gcc.dg/system-binary-constants-1.c: Update expected diagnostics.
- * gcc.dg/c11-binary-constants-1.c,
- gcc.dg/c11-binary-constants-2.c, gcc.dg/c2x-binary-constants-1.c,
- gcc.dg/c2x-binary-constants-2.c, gcc.dg/c2x-binary-constants-3.c:
- New tests.
+ PR middle-end/98807
+ * gcc.dg/pr98807.c: Add -Wno-psabi -w to dg-options.
-2020-11-13 Jakub Jelinek <jakub@redhat.com>
+2021-01-26 Alexandre Oliva <oliva@adacore.com>
- * g++.dg/guality/redeclaration1.C (p): New variable.
- (S::f): Increment what p points to before storing S::i into l. Adjust
- gdb-test line numbers.
- (main): Initialize p to address of an automatic variable.
+ * gnat.dg/asan1.adb: New test.
+ * gnat.dg/asan1_pkg.ads: New additional source.
-2020-11-13 Gergö Barany <gergo@codesourcery.com>
- Thomas Schwinge <thomas@codesourcery.com>
+2021-01-25 Harald Anlauf <anlauf@gmx.de>
- * c-c++-common/goacc/kernels-decompose-1.c: New.
- * c-c++-common/goacc/kernels-decompose-2.c: New.
- * c-c++-common/goacc/kernels-decompose-ice-1.c: New.
- * c-c++-common/goacc/kernels-decompose-ice-2.c: New.
- * gfortran.dg/goacc/kernels-decompose-1.f95: New.
- * gfortran.dg/goacc/kernels-decompose-2.f95: New.
- * c-c++-common/goacc/if-clause-2.c: Adjust.
- * gfortran.dg/goacc/kernels-tree.f95: Likewise.
+ PR fortran/70070
+ * gfortran.dg/pr70070.f90: New test.
-2020-11-13 Thomas Schwinge <thomas@codesourcery.com>
+2021-01-25 Martin Sebor <msebor@redhat.com>
- * c-c++-common/goacc/classify-parallel.c: Adjust.
- * gfortran.dg/goacc/classify-parallel.f95: Likewise.
- * c-c++-common/goacc/classify-serial.c: New.
- * gfortran.dg/goacc/classify-serial.f95: Likewise.
+ PR c++/98646
+ * g++.dg/warn/Wnonnull5.C: Adjust text of an expected warning.
+ * g++.dg/warn/Wnonnull10.C: New test.
+ * g++.dg/warn/Wnonnull9.C: New test.
-2020-11-13 Jason Merrill <jason@redhat.com>
+2021-01-25 Thomas Koenig <tkoenig@gcc.gnu.org>
- * g++.dg/cpp2a/feat-cxx2a.C: Check it.
+ * gfortran.dg/associate_57.f90: New test.
-2020-11-13 Jason Merrill <jason@redhat.com>
+2021-01-25 Thomas Koenig <tkoenig@gcc.gnu.org>
- * g++.dg/cpp0x/inh-ctor28.C: Adjust expected diagnostic.
- * g++.dg/cpp0x/inh-ctor33.C: Likewise.
- * g++.dg/cpp0x/using-enum-1.C: Add comment.
- * g++.dg/cpp0x/using-enum-2.C: Allowed in C++20.
- * g++.dg/cpp0x/using-enum-3.C: Likewise.
- * g++.dg/cpp1z/class-deduction69.C: Adjust diagnostic.
- * g++.dg/inherit/using5.C: Likewise.
- * g++.dg/cpp2a/using-enum-1.C: New test.
- * g++.dg/cpp2a/using-enum-2.C: New test.
- * g++.dg/cpp2a/using-enum-3.C: New test.
- * g++.dg/cpp2a/using-enum-4.C: New test.
- * g++.dg/cpp2a/using-enum-5.C: New test.
- * g++.dg/cpp2a/using-enum-6.C: New test.
- * g++.dg/debug/dwarf2/using-enum.C: New test.
-
-2020-11-13 Vladimir N. Makarov <vmakarov@redhat.com>
-
- * c-c++-common/asmgoto-2.c: Permit output in asm goto.
- * gcc.c-torture/compile/asmgoto-2.c: New.
- * gcc.c-torture/compile/asmgoto-3.c: New.
- * gcc.c-torture/compile/asmgoto-4.c: New.
- * gcc.c-torture/compile/asmgoto-5.c: New.
-
-2020-11-13 Andrew MacLeod <amacleod@redhat.com>
-
- * gcc.dg/tree-ssa/evrp20.c
- * gcc.dg/tree-ssa/evrp21.c
- * gcc.dg/tree-ssa/evrp22.c
-
-2020-11-13 Martin Liska <mliska@suse.cz>
-
- PR testsuite/97788
- * g++.dg/ubsan/pr61272.C: Move expected error location.
-
-2020-11-13 Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * gcc.c-torture/execute/index-1.c: Skip for the default MSP430 430X ISA.
-
-2020-11-13 Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * gcc.target/msp430/rtx-cost-O3-default.c: New test.
- * gcc.target/msp430/rtx-cost-O3-f5series.c: New test.
- * gcc.target/msp430/rtx-cost-Os-default.c: New test.
- * gcc.target/msp430/rtx-cost-Os-f5series.c: New test.
-
-2020-11-13 Jan Hubicka <jh@suse.cz>
-
- * c-c++-common/Wstringop-overflow-2.c: Disable ICF.
- * g++.dg/warn/Warray-bounds-8.C: Disable ICF.
-
-2020-11-13 Andrew MacLeod <amacleod@redhat.com>
-
- * gcc.dg/tree-ssa/pr78655.c: New.
-
-2020-11-13 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * gdc.dg/pr92216.d: Update scan-assember.
-
-2020-11-13 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97812
- * gcc.dg/torture/pr97812.c: New testcase.
-
-2020-11-13 Sudakshina Das <sudi.das@arm.com>
-
- * g++.dg/tree-ssa/pr90883.C: Remove xfail for aarch64.
- * gcc.dg/tree-prof/stringop-2.c: Add xfail for aarch64.
- * gcc.target/aarch64/memset-corner-cases.c: New test.
- * gcc.target/aarch64/memset-q-reg.c: New test.
-
-2020-11-13 Iain Sandoe <iain@sandoe.co.uk>
-
- PR objc/90707
- * obj-c++.dg/property/at-property-4.mm: Add basic nullability
- tests.
- * objc.dg/property/at-property-4.m: Likewise.
- * obj-c++.dg/attributes/nullability-00.mm: New test.
- * obj-c++.dg/property/nullability-00.mm: New test.
- * objc.dg/attributes/nullability-00.m: New test.
- * objc.dg/property/nullability-00.m: New test.
-
-2020-11-13 Iain Sandoe <iain@sandoe.co.uk>
-
- PR objc/77404
- * obj-c++.dg/attributes/class-attribute-1.mm:
- Add Wno-objc-root-class.
- * obj-c++.dg/attributes/class-attribute-2.mm: Likewise.
- * obj-c++.dg/attributes/class-attribute-3.mm: Likewise.
- * obj-c++.dg/attributes/method-deprecated-1.mm: Likewise.
- * obj-c++.dg/attributes/method-deprecated-2.mm: Likewise.
- * obj-c++.dg/attributes/method-deprecated-3.mm: Likewise.
- * obj-c++.dg/attributes/method-format-1.mm: Likewise.
- * obj-c++.dg/attributes/method-nonnull-1.mm: Likewise.
- * obj-c++.dg/attributes/method-noreturn-1.mm: Likewise.
- * obj-c++.dg/attributes/method-sentinel-1.mm: Likewise.
- * obj-c++.dg/attributes/nsobject-01.mm: Likewise.
- * obj-c++.dg/attributes/parameter-attribute-1.mm: Likewise.
- * obj-c++.dg/attributes/parameter-attribute-2.mm: Likewise.
- * obj-c++.dg/attributes/proto-attribute-1.mm: Likewise.
- * obj-c++.dg/attributes/proto-attribute-3.mm: Likewise.
- * obj-c++.dg/attributes/proto-attribute-4.mm: Likewise.
- * obj-c++.dg/attributes/unused-parameter-1.mm: Likewise.
- * obj-c++.dg/bad-receiver-type.mm: Likewise.
- * obj-c++.dg/bitfield-3.mm: Likewise.
- * obj-c++.dg/bitfield-5.mm: Likewise.
- * obj-c++.dg/class-extension-1.mm: Likewise.
- * obj-c++.dg/class-extension-2.mm: Likewise.
- * obj-c++.dg/class-extension-3.mm: Likewise.
- * obj-c++.dg/class-extension-4.mm: Likewise.
- * obj-c++.dg/class-protocol-1.mm: Likewise.
- * obj-c++.dg/comp-types-1.mm: Likewise.
- * obj-c++.dg/comp-types-10.mm: Likewise.
- * obj-c++.dg/comp-types-2.mm: Likewise.
- * obj-c++.dg/comp-types-3.mm: Likewise.
- * obj-c++.dg/comp-types-5.mm: Likewise.
- * obj-c++.dg/comp-types-6.mm: Likewise.
- * obj-c++.dg/comp-types-7.mm: Likewise.
- * obj-c++.dg/comp-types-8.mm: Likewise.
- * obj-c++.dg/demangle-2.mm: Likewise.
- * obj-c++.dg/demangle-3.mm: Likewise.
- * obj-c++.dg/duplicate-class-1.mm: Likewise.
- * obj-c++.dg/encode-1-next.mm: Likewise.
- * obj-c++.dg/encode-1.mm: Likewise.
- * obj-c++.dg/enhanced-proto-2.mm: Likewise.
- * obj-c++.dg/exceptions-1.mm: Likewise.
- * obj-c++.dg/exceptions-3.mm: Likewise.
- * obj-c++.dg/exceptions-4.mm: Likewise.
- * obj-c++.dg/exceptions-5.mm: Likewise.
- * obj-c++.dg/extern-c-1.mm: Likewise.
- * obj-c++.dg/fobjc-std-1.mm: Likewise.
- * obj-c++.dg/gnu-api-2-class-meta.mm: Likewise.
- * obj-c++.dg/gnu-api-2-class.mm: Likewise.
- * obj-c++.dg/gnu-api-2-ivar.mm: Likewise.
- * obj-c++.dg/gnu-api-2-method.mm: Likewise.
- * obj-c++.dg/gnu-api-2-objc.mm: Likewise.
- * obj-c++.dg/gnu-api-2-objc_msg_lookup.mm: Likewise.
- * obj-c++.dg/gnu-api-2-object.mm: Likewise.
- * obj-c++.dg/gnu-api-2-property.mm: Likewise.
- * obj-c++.dg/gnu-api-2-protocol.mm: Likewise.
- * obj-c++.dg/gnu-api-2-resolve-method.mm: Likewise.
- * obj-c++.dg/gnu-api-2-sel.mm: Likewise.
- * obj-c++.dg/invalid-method-2.mm: Likewise.
- * obj-c++.dg/ivar-invalid-type-1.mm: Likewise.
- * obj-c++.dg/ivar-problem-1.mm: Likewise.
- * obj-c++.dg/lto/lto.exp: Likewise.
- * obj-c++.dg/lto/trivial-1_0.mm: Likewise.
- * obj-c++.dg/method-1.mm: Likewise.
- * obj-c++.dg/method-12.mm: Likewise.
- * obj-c++.dg/method-18.mm: Likewise.
- * obj-c++.dg/method-19.mm: Likewise.
- * obj-c++.dg/method-20.mm: Likewise.
- * obj-c++.dg/method-3.mm: Likewise.
- * obj-c++.dg/method-4.mm: Likewise.
- * obj-c++.dg/method-5.mm: Likewise.
- * obj-c++.dg/method-8.mm: Likewise.
- * obj-c++.dg/method-9.mm: Likewise.
- * obj-c++.dg/method-namespace-1.mm: Likewise.
- * obj-c++.dg/plugin/diagnostic-test-expressions-1.mm:
- Likewise.
- * obj-c++.dg/pr23709.mm: Likewise.
- * obj-c++.dg/pragma-2.mm: Likewise.
- * obj-c++.dg/private-1.mm: Likewise.
- * obj-c++.dg/private-2.mm: Likewise.
- * obj-c++.dg/property/property.exp: Likewise.
- * obj-c++.dg/proto-lossage-1.mm: Likewise.
- * obj-c++.dg/proto-lossage-5.mm: Likewise.
- * obj-c++.dg/proto-qual-1.mm: Likewise.
- * obj-c++.dg/protocol-inheritance-1.mm: Likewise.
- * obj-c++.dg/protocol-inheritance-2.mm: Likewise.
- * obj-c++.dg/protocol-optional-1.mm: Likewise.
- * obj-c++.dg/selector-1.mm: Likewise.
- * obj-c++.dg/selector-2.mm: Likewise.
- * obj-c++.dg/selector-3.mm: Likewise.
- * obj-c++.dg/selector-4.mm: Likewise.
- * obj-c++.dg/strings/strings.exp: Likewise.
- * obj-c++.dg/stubify-1.mm: Likewise.
- * obj-c++.dg/stubify-2.mm: Likewise.
- * obj-c++.dg/super-dealloc-1.mm: Likewise.
- * obj-c++.dg/super-dealloc-2.mm: Likewise.
- * obj-c++.dg/sync-3.mm: Likewise.
- * obj-c++.dg/syntax-error-2.mm: Likewise.
- * obj-c++.dg/syntax-error-4.mm: Likewise.
- * obj-c++.dg/syntax-error-7.mm: Likewise.
- * obj-c++.dg/syntax-error-9.mm: Likewise.
- * obj-c++.dg/template-4.mm: Likewise.
- * obj-c++.dg/template-7.mm: Likewise.
- * obj-c++.dg/template-8.mm: Likewise.
- * obj-c++.dg/threedotthree-abi-1.mm: Likewise.
- * obj-c++.dg/torture/dg-torture.exp: Likewise.
- * obj-c++.dg/torture/strings/strings.exp: Likewise.
- * obj-c++.dg/try-catch-12.mm: Likewise.
- * obj-c++.dg/try-catch-13.mm: Likewise.
-
-2020-11-13 Iain Sandoe <iain@sandoe.co.uk>
-
- PR objc/77404
- * objc.dg/anon-1.m: Add Wno-objc-root-class.
- * objc.dg/attributes/class-attribute-1.m: Likewise.
- * objc.dg/attributes/class-attribute-2.m: Likewise.
- * objc.dg/attributes/class-attribute-3.m: Likewise.
- * objc.dg/attributes/method-deprecated-1.m: Likewise.
- * objc.dg/attributes/method-deprecated-2.m: Likewise.
- * objc.dg/attributes/method-deprecated-3.m: Likewise.
- * objc.dg/attributes/method-format-1.m: Likewise.
- * objc.dg/attributes/method-nonnull-1.m: Likewise.
- * objc.dg/attributes/method-noreturn-1.m: Likewise.
- * objc.dg/attributes/method-sentinel-1.m: Likewise.
- * objc.dg/attributes/nsobject-01.m: Likewise.
- * objc.dg/attributes/objc-exception-1.m: Likewise.
- * objc.dg/attributes/parameter-attribute-1.m: Likewise.
- * objc.dg/attributes/parameter-attribute-2.m: Likewise.
- * objc.dg/attributes/proto-attribute-1.m: Likewise.
- * objc.dg/attributes/proto-attribute-2.m: Likewise.
- * objc.dg/attributes/proto-attribute-3.m: Likewise.
- * objc.dg/attributes/proto-attribute-4.m: Likewise.
- * objc.dg/bitfield-2.m: Likewise.
- * objc.dg/break-in-ifstmt.m: Likewise.
- * objc.dg/class-1.m: Likewise.
- * objc.dg/class-extension-1.m: Likewise.
- * objc.dg/class-extension-2.m: Likewise.
- * objc.dg/class-extension-3.m: Likewise.
- * objc.dg/class-extension-4.m: Likewise.
- * objc.dg/class-protocol-1.m: Likewise.
- * objc.dg/comp-types-7.m: Likewise.
- * objc.dg/demangle-1.m: Likewise.
- * objc.dg/duplicate-class-1.m: Likewise.
- * objc.dg/encode-6-next.m: Likewise.
- * objc.dg/encode-6.m: Likewise.
- * objc.dg/enhanced-proto-2.m: Likewise.
- * objc.dg/exceptions-1.m: Likewise.
- * objc.dg/exceptions-3.m: Likewise.
- * objc.dg/exceptions-4.m: Likewise.
- * objc.dg/exceptions-5.m: Likewise.
- * objc.dg/fobjc-std-1.m: Likewise.
- * objc.dg/foreach-2.m: Likewise.
- * objc.dg/foreach-4.m: Likewise.
- * objc.dg/foreach-5.m: Likewise.
- * objc.dg/fsyntax-only.m: Likewise.
- * objc.dg/gnu-api-2-class-meta.m: Likewise.
- * objc.dg/gnu-api-2-class.m: Likewise.
- * objc.dg/gnu-api-2-ivar.m: Likewise.
- * objc.dg/gnu-api-2-method.m: Likewise.
- * objc.dg/gnu-api-2-objc.m: Likewise.
- * objc.dg/gnu-api-2-objc_msg_lookup.m: Likewise.
- * objc.dg/gnu-api-2-object.m: Likewise.
- * objc.dg/gnu-api-2-property.m: Likewise.
- * objc.dg/gnu-api-2-protocol.m: Likewise.
- * objc.dg/gnu-api-2-resolve-method.m: Likewise.
- * objc.dg/gnu-api-2-sel.m: Likewise.
- * objc.dg/incomplete-type-1.m: Likewise.
- * objc.dg/instancetype-0.m: Likewise.
- * objc.dg/invalid-method-2.m: Likewise.
- * objc.dg/ivar-invalid-type-1.m: Likewise.
- * objc.dg/ivar-problem-1.m: Likewise.
- * objc.dg/ivar-scope-1.m: Likewise.
- * objc.dg/ivar-scope-2.m: Likewise.
- * objc.dg/ivar-scope-4.m: Likewise.
- * objc.dg/ivar-visibility-1.m: Likewise.
- * objc.dg/ivar-visibility-2.m: Likewise.
- * objc.dg/ivar-visibility-3.m: Likewise.
- * objc.dg/ivar-visibility-4.m: Likewise.
- * objc.dg/local-decl-1.m: Likewise.
- * objc.dg/lto/lto.exp: Likewise.
- * objc.dg/lto/trivial-1_0.m: Likewise.
- * objc.dg/method-1.m: Likewise.
- * objc.dg/method-12.m: Likewise.
- * objc.dg/method-13.m: Likewise.
- * objc.dg/method-14.m: Likewise.
- * objc.dg/missing-proto-3.m: Likewise.
- * objc.dg/next-runtime-1.m: Likewise.
- * objc.dg/objc-foreach-1.m: Likewise.
- * objc.dg/objc-foreach-2.m: Likewise.
- * objc.dg/objc-foreach-3.m: Likewise.
- * objc.dg/objc-nofilename-1.m: Likewise.
- * objc.dg/param-1.m: Likewise.
- * objc.dg/pch/pch.exp: Likewise.
- * objc.dg/plugin/diagnostic-test-expressions-1.m: Likewise.
- * objc.dg/pr23709.m: Likewise.
- * objc.dg/private-1.m: Likewise.
- * objc.dg/private-2.m: Likewise.
- * objc.dg/property/property.exp: Likewise.
- * objc.dg/proto-hier-1.m: Likewise.
- * objc.dg/proto-hier-2.m: Likewise.
- * objc.dg/proto-lossage-1.m: Likewise.
- * objc.dg/proto-lossage-5.m: Likewise.
- * objc.dg/proto-qual-1.m: Likewise.
- * objc.dg/protocol-inheritance-1.m: Likewise.
- * objc.dg/protocol-inheritance-2.m: Likewise.
- * objc.dg/protocol-optional-1.m: Likewise.
- * objc.dg/selector-1.m: Likewise.
- * objc.dg/selector-2.m: Likewise.
- * objc.dg/selector-3.m: Likewise.
- * objc.dg/selector-4.m: Likewise.
- * objc.dg/shadow-1.m: Likewise.
- * objc.dg/shadow-2.m: Likewise.
- * objc.dg/special/load-category-1.m: Likewise.
- * objc.dg/special/load-category-2.m: Likewise.
- * objc.dg/special/load-category-3.m: Likewise.
- * objc.dg/special/special.exp: Likewise.
- * objc.dg/special/unclaimed-category-1.h: Likewise.
- * objc.dg/special/unclaimed-category-1.m: Likewise.
- * objc.dg/stabs-1.m: Likewise.
- * objc.dg/strings/strings.exp: Likewise.
- * objc.dg/stubify-1.m: Likewise.
- * objc.dg/stubify-2.m: Likewise.
- * objc.dg/super-class-2.m: Likewise.
- * objc.dg/super-dealloc-1.m: Likewise.
- * objc.dg/super-dealloc-2.m: Likewise.
- * objc.dg/sync-3.m: Likewise.
- * objc.dg/threedotthree-abi-1.m: Likewise.
- * objc.dg/torture/dg-torture.exp: Likewise.
- * objc.dg/torture/strings/strings.exp: Likewise.
- * objc.dg/try-catch-11.m: Likewise.
- * objc.dg/try-catch-12.m: Likewise.
- * objc.dg/type-size-2.m: Likewise.
- * objc.dg/type-size-3.m: Likewise.
- * objc.dg/type-size-4.m: Likewise.
- * objc.dg/type-size-5.m: Likewise.
- * objc.dg/undeclared-selector.m: Likewise.
- * objc.dg/volatile-1.m: Likewise.
-
-2020-11-13 Iain Sandoe <iain@sandoe.co.uk>
-
- PR objc/77404
- * objc.dg/attributes/root-class-01.m: New test.
- * objc.dg/root-class-00.m: New test.
- * obj-c++.dg/attributes/root-class-01.mm: New test.
- * obj-c++.dg/root-class-00.mm: New test.
-
-2020-11-13 Patrick Palka <ppalka@redhat.com>
-
- * g++.dg/cpp2a/concepts-decltype3.C: New test.
-
-2020-11-12 David Malcolm <dmalcolm@redhat.com>
-
- PR jit/87291
- * jit.dg/jit.exp: Load target-supports-dg.exp.
- Set dg-do-what-default.
- (jit-dg-test): Set dg-do-what and call dg-get-options, skipping
- the test if it's not supported on the given target.
- * jit.dg/test-asm.c: New test.
- * jit.dg/test-asm.cc: New test.
-
-2020-11-12 David Malcolm <dmalcolm@redhat.com>
-
- * jit.dg/test-debug-strings.c (create_code): Add tests of
- string literal escaping.
-
-2020-11-12 Joseph Myers <joseph@codesourcery.com>
-
- * gcc.dg/c2x-has-c-attribute-1.c, gcc.dg/c2x-has-c-attribute-2.c,
- gcc.dg/c2x-has-c-attribute-3.c, gcc.dg/c2x-has-c-attribute-4.c:
- New tests.
-
-2020-11-12 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/97782
- * gfortran.dg/goacc/classify-kernels-unparallelized.f95: Move dg-message
- one line up.
- * gfortran.dg/goacc/classify-kernels.f95: Likewise.
-
-2020-11-12 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- * gfortran.dg/entry_23.f: New test.
-
-2020-11-12 Alex Coplan <alex.coplan@arm.com>
-
- PR target/97730
- * gcc.target/aarch64/sve2/bcax_1.c (OP): Add missing bitwise not
- to match correct bcax semantics.
- * gcc.dg/vect/pr97730.c: New test.
-
-2020-11-12 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97806
- * gcc.dg/pr97806.c: New testcase.
-
-2020-11-12 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/97790
- * g++.dg/cpp2a/constexpr-dtor9.C: New test.
-
-2020-11-12 Jason Merrill <jason@redhat.com>
-
- PR debug/97060
- * gcc.dg/debug/dwarf2/pr97060.c: New test.
+ PR fortran/96843
+ * gfortran.dg/interface_assignment_7.f90: New test.
-2020-11-12 Kewen Lin <linkw@linux.ibm.com>
+2021-01-25 Jason Merrill <jason@redhat.com>
- * gcc.dg/tree-ssa/pr96789.c: Adjusted by disabling loop
- vectorization.
+ PR c++/98463
+ * g++.dg/cpp2a/no_unique_address8.C: New test.
-2020-11-12 David Malcolm <dmalcolm@redhat.com>
+2021-01-25 Richard Biener <rguenther@suse.de>
- * gcc.dg/analyzer/setjmp-5.c: Update expected path output to show
- an event where the pertinent stack frame is popped. Update
- expected message from final event to reference this event.
+ PR middle-end/98807
+ * gcc.dg/pr98807.c: New testcase.
-2020-11-12 David Malcolm <dmalcolm@redhat.com>
+2021-01-25 Eric Botcazou <ebotcazou@adacore.com>
- PR tree-optimization/97424
- * gcc.dg/analyzer/invalid-shift-1.c: New test.
+ * gnat.dg/thunk2.adb, gnat.dg/thunk2.ads: New test.
+ * gnat.dg/thunk2_pkg.ads: New helper.
-2020-11-11 Patrick Palka <ppalka@redhat.com>
+2021-01-25 Steve Kargl <kargl@gcc.gnu.org>
- PR c++/88115
- * g++.dg/abi/macro0.C: Adjust.
- * g++.dg/cpp0x/alignof7.C: New test.
- * g++.dg/cpp0x/alignof8.C: New test.
+ PR fortran/98517
+ * gfortran.dg/charlen_18.f90 : New test.
-2020-11-11 Patrick Palka <ppalka@redhat.com>
+2021-01-23 Anthony Sharp <anthonysharp15@gmail.com>
- PR c++/88115
- * g++.dg/cpp0x/alignof6.C: New test.
+ * g++.dg/lookup/scoped1.C: Modified testcase to run successfully
+ with changes.
+ * g++.dg/tc1/dr142.C: Same as above.
+ * g++.dg/tc1/dr52.C: Same as above.
+ * g++.old-deja/g++.brendan/visibility6.C: Same as above.
+ * g++.old-deja/g++.brendan/visibility8.C: Same as above.
+ * g++.old-deja/g++.jason/access8.C: Same as above.
+ * g++.old-deja/g++.law/access4.C: Same as above.
+ * g++.old-deja/g++.law/visibility12.C: Same as above.
+ * g++.old-deja/g++.law/visibility4.C: Same as above.
+ * g++.old-deja/g++.law/visibility8.C: Same as above.
+ * g++.old-deja/g++.other/access4.C: Same as above.
-2020-11-11 Marek Polacek <polacek@redhat.com>
+2021-01-23 Patrick Palka <ppalka@redhat.com>
- PR c++/97518
- * g++.dg/diagnostic/static_assert3.C: New test.
+ PR c++/88548
+ PR c++/97399
+ * g++.dg/cpp0x/this2.C: New test.
+ * g++.dg/template/pr97399.C: New test.
-2020-11-11 Jakub Jelinek <jakub@redhat.com>
+2021-01-23 David Edelsohn <dje.gcc@gmail.com>
- * gfortran.dg/gomp/workshare-reduction-3.f90: Use (?:_ull)? instead
- of (?:_ull) in the scan-tree-dump-times directives.
- * gfortran.dg/gomp/workshare-reduction-26.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-27.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-28.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-36.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-37.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-38.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-39.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-40.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-41.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-42.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-43.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-44.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-45.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-46.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-47.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-56.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-57.f90: Likewise.
-
-2020-11-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/bias2.adb: New test.
-
-2020-11-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/opt89.adb: New test.
-
-2020-11-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/shift1.adb: New test.
-
-2020-11-11 Richard Biener <rguenther@suse.de>
-
- PR testsuite/97797
- * gcc.dg/torture/ssa-fre-5.c: Use __SIZETYPE__ where
- appropriate.
- * gcc.dg/torture/ssa-fre-6.c: Likewise.
-
-2020-11-11 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97623
- * gcc.dg/tree-ssa/ssa-hoist-3.c: Adjust.
- * gcc.dg/tree-ssa/ssa-hoist-7.c: Likewise.
- * gcc.dg/tree-ssa/ssa-pre-30.c: Likewise.
-
-2020-11-11 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/cmp_1.c: New test.
- * gcc.target/aarch64/sve/cmp_2.c: Likewise.
- * gcc.target/aarch64/sve/cond_arith_1.c: Add --param
- aarch64-sve-compare-costs=0
- * gcc.target/aarch64/sve/cond_arith_1_run.c: Likewise.
- * gcc.target/aarch64/sve/cond_arith_3.c: Likewise.
- * gcc.target/aarch64/sve/cond_arith_3_run.c: Likewise.
- * gcc.target/aarch64/sve/mask_gather_load_7.c: Likewise.
- * gcc.target/aarch64/sve/mask_load_slp_1.c: Likewise.
- * gcc.target/aarch64/sve/vcond_11.c: Likewise.
- * gcc.target/aarch64/sve/vcond_11_run.c: Likewise.
-
-2020-11-11 Hongtao Liu <hongtao.liu@intel.com>
- Hongyu Wang <hongyu.wang@intel.com>
-
- * gcc.target/i386/avx512vl-vnni-1.c: Rename..
- * gcc.target/i386/avx512vl-vnni-1a.c: To This.
- * gcc.target/i386/avx512vl-vnni-1b.c: New test.
- * gcc.target/i386/avx512vl-vnni-2.c: Ditto.
- * gcc.target/i386/avx512vl-vnni-3.c: Ditto.
- * gcc.target/i386/avx-vnni-1.c: Ditto.
- * gcc.target/i386/avx-vnni-2.c: Ditto.
- * gcc.target/i386/avx-vnni-3.c: Ditto.
- * gcc.target/i386/avx-vnni-4.c: Ditto.
- * gcc.target/i386/avx-vnni-5.c: Ditto.
- * gcc.target/i386/avx-vnni-6.c: Ditto.
- * gcc.target/i386/avx-vpdpbusd-2.c: Ditto.
- * gcc.target/i386/avx-vpdpbusds-2.c: Ditto.
- * gcc.target/i386/avx-vpdpwssd-2.c: Ditto.
- * gcc.target/i386/avx-vpdpwssds-2.c: Ditto.
- * gcc.target/i386/vnni_inline_error.c: Ditto.
- * gcc.target/i386/avx512vnnivl-builtin.c: Ditto.
- * gcc.target/i386/avxvnni-builtin.c: Ditto.
- * gcc.target/i386/funcspec-56.inc: Add new target attribute.
- * gcc.target/i386/sse-12.c: Add -mavxvnni.
- * gcc.target/i386/sse-13.c: Ditto.
- * gcc.target/i386/sse-14.c: Ditto.
- * gcc.target/i386/sse-22.c: Ditto.
- * gcc.target/i386/sse-23.c: Ditto.
- * g++.dg/other/i386-2.C: Ditto.
- * g++.dg/other/i386-3.C: Ditto.
- * lib/target-supports.exp (check_effective_target_avxvnni):
- New proc.
-
-2020-11-11 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/workshare-reduction-26.f90: Add (?:_ull) to
- scan-tree-dump-times regex for -m32.
- * gfortran.dg/gomp/workshare-reduction-27.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-28.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-3.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-36.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-37.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-38.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-39.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-40.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-41.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-42.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-43.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-44.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-45.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-46.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-47.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-56.f90: Likewise.
- * gfortran.dg/gomp/workshare-reduction-57.f90: Likewise.
-
-2020-11-11 Jakub Jelinek <jakub@redhat.com>
-
- PR fortran/97768
- * gfortran.dg/pr97768_1.f90: New test.
- * gfortran.dg/pr97768_2.f90: New test.
-
-2020-11-11 Nagaraju Mekala <nmekala@xilinx.com>
-
- * gcc.target/microblaze/others/strings1.c: Update
- to include $LC label.
-
-2020-11-11 David Edelsohn <dje.gcc@gmail.com>
-
- * c-c++-common/zero-scratch-regs-10.c: Skip on powerpc*-*-*.
- * c-c++-common/zero-scratch-regs-11.c: Skip on powerpc*-*-*.
- * c-c++-common/zero-scratch-regs-5.c: Skip on powerpc*-*-aix*.
- * c-c++-common/zero-scratch-regs-8.c: Skip on powerpc*-*-*.
- * c-c++-common/zero-scratch-regs-9.c: Skip on powerpc*-*-*.
-
-2020-11-10 Marek Polacek <polacek@redhat.com>
-
- PR c++/97518
- * g++.dg/diagnostic/pr87386.C: Adjust expected output.
- * g++.dg/diagnostic/static_assert1.C: New test.
- * g++.dg/diagnostic/static_assert2.C: New test.
-
-2020-11-10 Marek Polacek <polacek@redhat.com>
-
- PR c++/52830
- PR c++/88982
- PR c++/90799
- PR c++/87765
- PR c++/89565
- * g++.dg/cpp0x/constexpr-52830.C: New test.
- * g++.dg/cpp0x/vt-88982.C: New test.
- * g++.dg/cpp1z/class-deduction76.C: New test.
- * g++.dg/cpp1z/constexpr-lambda26.C: New test.
- * g++.dg/cpp2a/nontype-class39.C: New test.
-
-2020-11-10 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/schedule-modifiers-2.f90: Remove some dg-error.
- * gfortran.dg/gomp/reduction4.f90: New test.
- * gfortran.dg/gomp/reduction5.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-1.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-2.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-3.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-4.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-5.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-6.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-7.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-8.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-9.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-10.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-11.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-12.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-13.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-14.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-15.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-16.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-17.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-18.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-19.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-20.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-21.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-22.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-23.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-24.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-25.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-26.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-27.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-28.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-29.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-30.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-31.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-32.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-33.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-34.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-35.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-36.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-37.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-38.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-39.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-40.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-41.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-42.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-43.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-44.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-45.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-46.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-47.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-48.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-49.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-50.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-51.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-52.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-53.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-54.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-55.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-56.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-57.f90: New test.
- * gfortran.dg/gomp/workshare-reduction-58.f90: New test.
-
-2020-11-10 Matthew Malcomson <matthew.malcomson@arm.com>
-
- * c-c++-common/ubsan/sanitize-recover-7.c: Update testcase.
-
-2020-11-10 Jakub Jelinek <jakub@redhat.com>
-
- PR c/97748
- * c-c++-common/Wunused-value-1.c: New test.
-
-2020-11-10 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97769
- * gcc.dg/vect/pr97769.c: New testcase.
-
-2020-11-10 Chung-Lin Tang <cltang@codesourcery.com>
-
- * c-c++-common/gomp/clauses-2.c: Remove dg-error cases now valid.
- * gfortran.dg/gomp/map-2.f90: Likewise.
- * c-c++-common/gomp/map-5.c: New testcase.
-
-2020-11-10 Ilya Leoshkevich <iii@linux.ibm.com>
-
- * gcc.target/s390/vector/long-double-callee-abi-scan.c: New test.
- * gcc.target/s390/vector/long-double-caller-abi-run.c: New test.
- * gcc.target/s390/vector/long-double-caller-abi-scan.c: New test.
- * gcc.target/s390/vector/long-double-copysign.c: New test.
- * gcc.target/s390/vector/long-double-fprx2-constant.c: New test.
- * gcc.target/s390/vector/long-double-from-double.c: New test.
- * gcc.target/s390/vector/long-double-from-float.c: New test.
- * gcc.target/s390/vector/long-double-from-i16.c: New test.
- * gcc.target/s390/vector/long-double-from-i32.c: New test.
- * gcc.target/s390/vector/long-double-from-i64.c: New test.
- * gcc.target/s390/vector/long-double-from-i8.c: New test.
- * gcc.target/s390/vector/long-double-from-u16.c: New test.
- * gcc.target/s390/vector/long-double-from-u32.c: New test.
- * gcc.target/s390/vector/long-double-from-u64.c: New test.
- * gcc.target/s390/vector/long-double-from-u8.c: New test.
- * gcc.target/s390/vector/long-double-to-double.c: New test.
- * gcc.target/s390/vector/long-double-to-float.c: New test.
- * gcc.target/s390/vector/long-double-to-i16.c: New test.
- * gcc.target/s390/vector/long-double-to-i32.c: New test.
- * gcc.target/s390/vector/long-double-to-i64.c: New test.
- * gcc.target/s390/vector/long-double-to-i8.c: New test.
- * gcc.target/s390/vector/long-double-to-u16.c: New test.
- * gcc.target/s390/vector/long-double-to-u32.c: New test.
- * gcc.target/s390/vector/long-double-to-u64.c: New test.
- * gcc.target/s390/vector/long-double-to-u8.c: New test.
- * gcc.target/s390/vector/long-double-vec-duplicate.c: New test.
- * gcc.target/s390/vector/long-double-wf.h: New test.
- * gcc.target/s390/vector/long-double-wfaxb.c: New test.
- * gcc.target/s390/vector/long-double-wfcxb-0001.c: New test.
- * gcc.target/s390/vector/long-double-wfcxb-0111.c: New test.
- * gcc.target/s390/vector/long-double-wfcxb-1011.c: New test.
- * gcc.target/s390/vector/long-double-wfcxb-1101.c: New test.
- * gcc.target/s390/vector/long-double-wfdxb.c: New test.
- * gcc.target/s390/vector/long-double-wfixb.c: New test.
- * gcc.target/s390/vector/long-double-wfkxb-0111.c: New test.
- * gcc.target/s390/vector/long-double-wfkxb-1011.c: New test.
- * gcc.target/s390/vector/long-double-wfkxb-1101.c: New test.
- * gcc.target/s390/vector/long-double-wflcxb.c: New test.
- * gcc.target/s390/vector/long-double-wflpxb.c: New test.
- * gcc.target/s390/vector/long-double-wfmaxb-2.c: New test.
- * gcc.target/s390/vector/long-double-wfmaxb-3.c: New test.
- * gcc.target/s390/vector/long-double-wfmaxb-disabled.c: New test.
- * gcc.target/s390/vector/long-double-wfmaxb.c: New test.
- * gcc.target/s390/vector/long-double-wfmsxb-disabled.c: New test.
- * gcc.target/s390/vector/long-double-wfmsxb.c: New test.
- * gcc.target/s390/vector/long-double-wfmxb.c: New test.
- * gcc.target/s390/vector/long-double-wfnmaxb-disabled.c: New test.
- * gcc.target/s390/vector/long-double-wfnmaxb.c: New test.
- * gcc.target/s390/vector/long-double-wfnmsxb-disabled.c: New test.
- * gcc.target/s390/vector/long-double-wfnmsxb.c: New test.
- * gcc.target/s390/vector/long-double-wfsqxb.c: New test.
- * gcc.target/s390/vector/long-double-wfsxb-1.c: New test.
- * gcc.target/s390/vector/long-double-wfsxb.c: New test.
- * gcc.target/s390/vector/long-double-wftcixb-1.c: New test.
- * gcc.target/s390/vector/long-double-wftcixb.c: New test.
-
-2020-11-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/opt88.adb: New test.
-
-2020-11-10 David Candler <david.candler@arm.com>
-
- * gcc.target/aarch64/advsimd-intrinsics/vqrshrn_high_n.c: Added skip
- directive.
- * gcc.target/aarch64/advsimd-intrinsics/vqrshrun_high_n.c: Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vqshrn_high_n.c: Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vqshrun_high_n.c: Likewise.
-
-2020-11-10 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/97764
- * gcc.c-torture/execute/pr97764.c: New test.
+ * gcc.target/powerpc/fold-vec-insert-char-p9.c: Adjust ilp32.
+ * gcc.target/powerpc/fold-vec-insert-float-p9.c: Same.
+ * gcc.target/powerpc/fold-vec-insert-int-p9.c: Same.
+ * gcc.target/powerpc/fold-vec-insert-longlong.c: Same.
+ * gcc.target/powerpc/fold-vec-insert-short-p9.c: Same.
+ * gcc.target/powerpc/pr79251.p9.c: Same.
-2020-11-10 Tobias Burnus <tobias@codesourcery.com>
+2021-01-22 Marek Polacek <polacek@redhat.com>
- PR fortran/95847
- * gfortran.dg/coverage.f90: New test.
+ PR c++/96623
+ * g++.dg/cpp0x/noexcept64.C: New test.
-2020-11-10 Richard Biener <rguenther@suse.de>
+2021-01-22 David Edelsohn <dje.gcc@gmail.com>
- PR tree-optimization/97760
- * gcc.dg/vect/pr97760.c: New testcase.
-
-2020-11-10 Aldy Hernandez <aldyh@redhat.com>
-
- * g++.dg/opt/pr97767.C: New test.
+ * g++.dg/eh/spbp.C: Remove skip on AIX.
-2020-11-10 hongyuw1 <hongyuw1@intel.com>
+2021-01-22 Jakub Jelinek <jakub@redhat.com>
- * gcc.target/i386/keylocker-aesdec128kl.c: Adjust regex patterns.
- * gcc.target/i386/keylocker-aesdec256kl.c: Likewise.
- * gcc.target/i386/keylocker-aesdecwide128kl.c: Likewise.
- * gcc.target/i386/keylocker-aesdecwide256kl.c: Likewise.
- * gcc.target/i386/keylocker-aesenc128kl.c: Likewise.
- * gcc.target/i386/keylocker-aesencwide128kl.c: Likewise.
- * gcc.target/i386/keylocker-aesencwide256kl.c: Likewise.
- * gcc.target/i386/keylocker-encodekey128.c: Likewise.
- * gcc.target/i386/keylocker-encodekey256.c: Likewise.
- * gcc.target/i386/keylocker-aesenc256kl.c: New test.
+ * gcc.target/powerpc/m128-check.h (CHECK_EXP, CHECK_FP_EXP): Fix a
+ typo, UINON_TYPE to UNION_TYPE.
-2020-11-10 Andrew MacLeod <amacleod@redhat.com>
+2021-01-22 Jakub Jelinek <jakub@redhat.com>
- * gcc.dg/pr97567-2.c: New.
+ * gcc.target/i386/m128-check.h (CHECK_EXP, CHECK_FP_EXP): Fix a typo,
+ UINON_TYPE to UNION_TYPE.
+ * gcc.target/i386/m256-check.h (CHECK_FP_EXP): Likewise.
+ * gcc.target/i386/m512-check.h (CHECK_ROUGH_EXP): Likewise.
-2020-11-09 Marek Polacek <polacek@redhat.com>
+2021-01-22 Jakub Jelinek <jakub@redhat.com>
- DR 1914
- * c-c++-common/attr-fallthrough-2.c: Adjust dg-warning.
- * g++.dg/cpp0x/fallthrough2.C: Likewise.
- * g++.dg/cpp0x/gen-attrs-60.C: Turn dg-error into dg-warning.
- * g++.dg/cpp1y/attr-deprecated-2.C: Likewise.
- * g++.dg/cpp2a/attr-likely2.C: Adjust dg-warning.
- * g++.dg/cpp2a/nodiscard-once.C: Turn dg-error into dg-warning.
- * g++.dg/cpp0x/gen-attrs-72.C: New test.
+ * gcc.target/powerpc/m128-check.h (check_##UINON_TYPE): Add
+ optimize ("no-strict-aliasing") attribute.
-2020-11-09 Patrick Palka <ppalka@redhat.com>
+2021-01-22 Jason Merrill <jason@redhat.com>
- * g++.dg/cpp2a/concepts-decltype2.C: New file.
+ PR c++/98744
+ * g++.dg/init/elide7.C: New test.
-2020-11-09 Patrick Palka <ppalka@redhat.com>
+2021-01-22 Jakub Jelinek <jakub@redhat.com>
- PR c++/93907
- * g++.dg/cpp2a/concepts-using3.C: New test, based off of
- concepts-using2.C.
+ PR sanitizer/95693
+ * g++.dg/ubsan/pr95693.C: New test.
-2020-11-09 Jason Merrill <jason@redhat.com>
+2021-01-22 Marek Polacek <polacek@redhat.com>
- * g++.dg/lookup/using26.C: Adjust location.
- * g++.old-deja/g++.other/using1.C: Adjust location.
+ PR c++/98545
+ * g++.dg/abi/mangle76.C: New test.
-2020-11-09 Marek Polacek <polacek@redhat.com>
+2021-01-22 Paul Thomas <pault@gcc.gnu.org>
- PR c++/97762
- * g++.dg/warn/Wvexing-parse8.C: New test.
+ PR fortran/98565
+ * gfortran.dg/associated_target_7.f90 : New test.
-2020-11-09 Patrick Palka <ppalka@redhat.com>
+2021-01-22 Martin Jambor <mjambor@suse.cz>
- * gcc.dg/pragma-diag-6.c: Adjust expected diagnostics
- accordingly.
+ PR tree-optimization/47059
+ * gcc.dg/tree-ssa/pr47059.c: New test.
-2020-11-09 Tobias Burnus <tobias@codesourcery.com>
+2021-01-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
- PR fortran/90111
- * gfortran.dg/goacc/specification-part.f90: New test.
+ PR tree-optimization/98766
+ * gcc.dg/pr98766.c: New test.
-2020-11-09 Richard Biener <rguenther@suse.de>
+2021-01-22 Nathan Sidwell <nathan@acm.org>
- PR tree-optimization/97761
- * gfortran.dg/vect/pr97761.f90: New testcase.
+ PR testsuite/98795
+ * g++.dg/modules/modules.exp (module_cmi_p): Avoid
+ embedded absolute paths.
+ (module_do_it): Append $std to test name.
-2020-11-09 Richard Biener <rguenther@suse.de>
+2021-01-22 Richard Biener <rguenther@suse.de>
- PR tree-optimization/97753
- * gcc.dg/vect/pr97753.c: New testcase.
+ PR middle-end/98793
+ * gcc.dg/pr98793.c: New testcase.
-2020-11-09 Richard Biener <rguenther@suse.de>
+2021-01-22 Xionghu Luo <luoxhu@linux.ibm.com>
- PR tree-optimization/97746
- * gcc.dg/vect/bb-slp-pr97746.c: New testcase.
+ * gcc.target/powerpc/pr79251.p8.c: New test.
+ * gcc.target/powerpc/fold-vec-insert-char-p8.c: Adjust
+ instruction counts.
+ * gcc.target/powerpc/fold-vec-insert-char-p9.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-double.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-float-p8.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-float-p9.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-int-p8.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-int-p9.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-longlong.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-short-p8.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-short-p9.c: Likewise.
+ * gcc.target/powerpc/vsx-builtin-7.c: Likewise.
-2020-11-09 Andrea Corallo <andrea.corallo@arm.com>
+2021-01-22 Xionghu Luo <luoxhu@linux.ibm.com>
- * gcc.target/arm/simd/vld1_lane_bf16_1.c: Require target to
- support and add -mfloat-abi=hard flag.
- * gcc.target/arm/simd/vld1_lane_bf16_indices_1.c: Likewise.
- * gcc.target/arm/simd/vld1q_lane_bf16_indices_1.c: Likewise.
- * gcc.target/arm/simd/vst1_lane_bf16_1.c: Likewise.
- * gcc.target/arm/simd/vst1_lane_bf16_indices_1.c: Likewise.
- * gcc.target/arm/simd/vstq1_lane_bf16_indices_1.c: Likewise.
+ * gcc.target/powerpc/pr79251.p9.c: New test.
+ * gcc.target/powerpc/pr79251-run.c: New test.
+ * gcc.target/powerpc/pr79251.h: New header.
-2020-11-08 Iain Sandoe <iain@sandoe.co.uk>
+2021-01-22 Richard Biener <rguenther@suse.de>
- * obj-c++.dg/property/at-property-4.mm: Test handling class
- attributes.
- * objc.dg/property/at-property-4.m: Likewise.
+ PR middle-end/98773
+ * gcc.dg/torture/pr98773.c: New testcase.
-2020-11-08 Iain Sandoe <iain@sandoe.co.uk>
+2021-01-22 Jakub Jelinek <jakub@redhat.com>
- * c-c++-common/zero-scratch-regs-10.c: Skip for powerpc
- Darwin.
- * c-c++-common/zero-scratch-regs-11.c: Likewise.
- * c-c++-common/zero-scratch-regs-8.c: Likewise.
- * c-c++-common/zero-scratch-regs-9.c: Likewise.
+ PR tree-optimization/90248
+ * gcc.dg/tree-ssa/copy-sign-1.c: Don't expect any copysign
+ builtins.
+ * gcc.dg/pr90248.c: New test.
-2020-11-08 Iain Sandoe <iain@sandoe.co.uk>
+2021-01-22 Jakub Jelinek <jakub@redhat.com>
- * gcc.target/i386/builtin_thread_pointer.c: Require native TLS.
+ PR tree-optimization/98255
+ * gcc.dg/pr98255.c: New test.
-2020-11-07 Marek Polacek <polacek@redhat.com>
+2021-01-22 Richard Biener <rguenther@suse.de>
- * c-c++-common/Wimplicit-fallthrough-20.c: Adjust dg-warning.
+ PR tree-optimization/98786
+ * gcc.dg/torture/pr98786.c: New testcase.
-2020-11-07 Iain Sandoe <iain@sandoe.co.uk>
+2021-01-22 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
- * obj-c++.dg/property/at-property-4.mm: Test atomic property
- attribute.
- * objc.dg/property/at-property-4.m: Likewise.
+ PR target/98636
+ * gcc.target/arm/pr98636.c: New test.
-2020-11-07 Iain Sandoe <iain@sandoe.co.uk>
+2021-01-22 liuhongt <hongtao.liu@intel.com>
- * obj-c++.dg/attributes/nsobject-01.mm: New test.
- * objc.dg/attributes/nsobject-01.m: New test.
+ PR target/96891
+ PR target/98348
+ * gcc.target/i386/avx512bw-pr96891-1.c: New test.
+ * gcc.target/i386/avx512f-pr96891-1.c: New test.
+ * gcc.target/i386/avx512f-pr96891-2.c: New test.
+ * gcc.target/i386/avx512f-pr96891-3.c: New test.
+ * g++.target/i386/avx512f-pr96891-1.C: New test.
+ * gcc.target/i386/bitwise_mask_op-3.c: Adjust testcase.
-2020-11-07 Iain Sandoe <iain@sandoe.co.uk>
+2021-01-22 Marek Polacek <polacek@redhat.com>
- * c-c++-common/zero-scratch-regs-10.c: XFAIL for
- powerpc-darwin.
- * c-c++-common/zero-scratch-regs-11.c: Likewise.
- * c-c++-common/zero-scratch-regs-8.c: Likewise.
- * c-c++-common/zero-scratch-regs-9.c: Likewise.
+ PR c++/97966
+ * g++.dg/cpp0x/noexcept63.C: New test.
-2020-11-07 Martin Uecker <muecker@gwdg.de>
+2021-01-21 David Edelsohn <dje.gcc@gmail.com>
- * c-c++-common/attr-fallthrough-2.c: Update compiler flags.
- * c-c++-common/Wimplicit-fallthrough-20.c: Adapt test.
- * gcc.dg/20031223-1.c: Update compiler flags and adapt test.
- * gcc.dg/c11-labels-1.c: New test.
- * gcc.dg/c11-labels-2.c: New test.
- * gcc.dg/c11-labels-3.c: New test.
- * gcc.dg/c2x-attr-syntax-3.c: Adapt test.
- * gcc.dg/c2x-labels-1.c: New test.
- * gcc.dg/c2x-labels-2.c: New test.
- * gcc.dg/c2x-labels-3.c: New test.
- * gcc.dg/decl-9.c: Update compiler flags and add error.
- * gcc.dg/gomp/barrier-2.c: Update compiler flags and add warning.
- * gcc.dg/gomp/declare-simd-5.c: Update compiler flags and adapt test.
- * gcc.dg/gomp/declare-variant-2.c: Update compiler flags and add error.
- * gcc.dg/label-compound-stmt-1.c: Update compiler flags.
- * gcc.dg/parse-decl-after-label.c: Update compiler flags.
+ * g++.dg/cpp2a/lambda-uneval1.C: Ignore preceding "l" and
+ intervening period.
+ * g++.dg/cpp2a/lambda-uneval5.C: Ignore preceding "l" and
+ explicitly check for intervening space, tab or period.
-2020-11-06 Peter Bergner <bergner@linux.ibm.com>
+2021-01-21 Vladimir N. Makarov <vmakarov@redhat.com>
- * gcc.target/powerpc/pr64505.c: Run everywhere. Use correct minimized
- test case.
+ PR rtl-optimization/98777
+ * gcc.target/riscv/pr98777.c: New.
-2020-11-06 Peter Bergner <bergner@linux.ibm.com>
+2021-01-21 Patrick Palka <ppalka@redhat.com>
- * gcc.target/powerpc/mma-alignment.c: New test.
+ PR c++/71879
+ * g++.dg/cpp0x/decltype-71879.C: New test.
-2020-11-06 Jeff Law <law@torsion.usersys.redhat.com>
+2021-01-21 Jakub Jelinek <jakub@redhat.com>
- PR target/91489
- * gcc.target/i386/ms_hook_prologue.c: Expand testcase
- to reproduce PR target/91489 issue.
+ PR c++/98672
+ * g++.dg/cpp1y/constexpr-98672.C: New test.
-2020-11-06 Joseph Myers <joseph@codesourcery.com>
+2021-01-21 Andrea Corallo <andrea.corallo@arm.com>
+ PR target/96372
* lib/target-supports.exp
- (check_effective_target_fenv_exceptions_dfp): New.
- * gcc.dg/dfp/builtin-snan-1.c, gcc.dg/dfp/builtin-snan-2.c: New
- tests.
-
-2020-11-06 Marek Polacek <polacek@redhat.com>
-
- PR c++/81660
- * g++.dg/warn/Wexceptions3.C: New test.
- * g++.dg/eh/pr42859.C: Add dg-warning.
- * g++.dg/torture/pr81659.C: Likewise.
-
-2020-11-06 Iain Sandoe <iain@sandoe.co.uk>
-
- * obj-c++.dg/property/at-property-1.mm: Adjust expected
- diagnostics.
- * obj-c++.dg/property/at-property-29.mm: Likewise.
- * obj-c++.dg/property/at-property-4.mm: Likewise.
- * obj-c++.dg/property/property-neg-2.mm: Likewise.
- * objc.dg/property/at-property-1.m: Likewise.
- * objc.dg/property/at-property-29.m: Likewise.
- * objc.dg/property/at-property-4.m: Likewise.
- * objc.dg/property/at-property-5.m: Likewise.
- * objc.dg/property/property-neg-2.m: Likewise.
-
-2020-11-06 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/67453
- * g++.dg/ext/attr-used-2.C: New test.
-
-2020-11-06 Iain Sandoe <iain@sandoe.co.uk>
-
- * gcc.dg/darwin-minversion-link.c: Allow for Darwin19 (macOS 10.15)
- and Darwin20 (macOS 11.0).
-
-2020-11-06 Andrew MacLeod <amacleod@redhat.com>
-
- * gcc.dg/pr97737.c: New.
- * gcc.dg/pr97741.c: New.
-
-2020-11-06 David Candler <david.candler@arm.com>
-
- * gcc.target/aarch64/advsimd-intrinsics/vqrshrn_high_n.c: New testcase.
- * gcc.target/aarch64/advsimd-intrinsics/vqrshrun_high_n.c: Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vqshrn_high_n.c: Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vqshrun_high_n.c: Likewise.
- * gcc.target/aarch64/narrow_high-intrinsics.c: Update expected assembler
- for sqshrun2, sqrshrun2, sqshrn2, uqshrn2, sqrshrn2 and uqrshrn2.
-
-2020-11-06 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/dup_lane_2.c: New test.
- * gcc.target/aarch64/sve/dup_lane_3.c: Likewise.
- * gcc.target/aarch64/sve/ext_4.c: Likewise.
- * gcc.target/aarch64/sve/rev_2.c: Likewise.
- * gcc.target/aarch64/sve/revhw_1.c: Likewise.
- * gcc.target/aarch64/sve/revhw_2.c: Likewise.
- * gcc.target/aarch64/sve/slp_perm_8.c: Likewise.
- * gcc.target/aarch64/sve/trn1_2.c: Likewise.
- * gcc.target/aarch64/sve/trn2_2.c: Likewise.
- * gcc.target/aarch64/sve/uzp1_2.c: Likewise.
- * gcc.target/aarch64/sve/uzp2_2.c: Likewise.
- * gcc.target/aarch64/sve/zip1_2.c: Likewise.
- * gcc.target/aarch64/sve/zip2_2.c: Likewise.
-
-2020-11-06 Martin Liska <mliska@suse.cz>
-
- * gcc.dg/tree-ssa/switch-4.c: New test.
-
-2020-11-06 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97706
- * gcc.dg/vect/bb-slp-pr97706.c: New testcase.
-
-2020-11-06 Kewen Lin <linkw@linux.ibm.com>
-
- PR gcov-profile/97461
- * gcc.dg/tree-prof/pr97461.c: Return aligned memory.
-
-2020-11-06 Thomas Schwinge <thomas@codesourcery.com>
-
- * gfortran.dg/goacc/loop-2-parallel-3.f95: Adjust.
-
-2020-11-06 Thomas Schwinge <thomas@codesourcery.com>
-
- * gfortran.dg/goacc/loop-6.f95: Remove.
-
-2020-11-06 Thomas Schwinge <thomas@codesourcery.com>
-
- * gfortran.dg/goacc/loop-5.f95: Remove.
-
-2020-11-06 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/goacc-gomp/goacc-gomp.exp: New.
- * gfortran.dg/goacc-gomp/atomic.f90: New test.
- * gfortran.dg/goacc/atomic.f90: New test.
-
-2020-11-06 Tobias Burnus <tobias@codesourcery.com>
-
- * c-c++-common/goacc-gomp/atomic.c: New test.
- * c-c++-common/goacc/atomic.c: New test.
-
-2020-11-06 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97732
- * gcc.dg/vect/bb-slp-pr97732.c: New testcase.
-
-2020-11-06 Olivier Hainque <hainque@adacore.com>
-
- * gcc.target/i386/fentryname1.c: Add dg-require-profiling.
- * gcc.target/i386/fentryname2.c: Likewise.
- * gcc.target/i386/fentryname3.c: Likewise.
- * gcc.target/i386/returninst1.c: Likewise.
- * gcc.target/i386/returninst2.c: Likewise.
- * gcc.target/i386/returninst3.c: Likewise.
-
-2020-11-06 Olivier Hainque <hainque@adacore.com>
-
- * g++.dg/pr57878.C: Add dg-require-effective-target fpic.
- * g++.dg/pr65032.C: Likewise.
- * g++.dg/pr84279.C: Likewise.
- * g++.dg/inherit/thunk8.C: Likewise.
- * g++.dg/opt/pr64411.C: Likewise.
-
-2020-11-06 Jan Hubicka <jh@suse.cz>
-
- * gcc.dg/ipa/modref-2.c: New test.
- * gcc.dg/lto/modref-2_0.c: New test.
-
-2020-11-06 Jeff Law <law@redhat.com>
-
- * gcc.dg/no-strict-overflow-4.c: Adjust expected output.
-
-2020-11-06 Eugene Rozenfeld <erozen@microsoft.com>
-
- * gcc.dg/self-right-shift.c: New test.
-
-2020-11-06 Kito Cheng <kito.cheng@sifive.com>
-
- PR target/96307
- * gcc.dg/pr96307.c: New.
- * gcc.target/riscv/pr96260.c: Move this test case from here to ...
- * gcc.dg/pr96260.c: ... here.
- * gcc.target/riscv/pr91441.c: Move this test case from here to ...
- * gcc.dg/pr91441.c: ... here.
- * lib/target-supports.exp (check_effective_target_no_fsanitize_address):
- New proc.
-
-2020-11-05 Marek Polacek <polacek@redhat.com>
-
- PR c++/78209
- * g++.dg/cpp1y/decltype-auto1.C: New test.
-
-2020-11-05 Marek Polacek <polacek@redhat.com>
-
- PR c++/97675
- * g++.old-deja/g++.eh/catch10.C: Adjust dg-warning.
- * g++.dg/warn/Wexceptions1.C: New test.
- * g++.dg/warn/Wexceptions2.C: New test.
-
-2020-11-05 Marek Polacek <polacek@redhat.com>
-
- PR c++/25814
- * g++.dg/cpp2a/fn-template16.C: Add a dg-warning.
- * g++.dg/cpp2a/fn-template7.C: Likewise.
- * g++.dg/lookup/pr80891-5.C: Likewise.
- * g++.dg/lto/pr79050_0.C: Add extern.
- * g++.dg/lto/pr84805_0.C: Likewise.
- * g++.dg/parse/pr58898.C: Add a dg-warning.
- * g++.dg/template/scope5.C: Likewise.
- * g++.old-deja/g++.brendan/recurse.C: Likewise.
- * g++.old-deja/g++.jason/template4.C: Likewise.
- * g++.old-deja/g++.law/arm4.C: Likewise.
- * g++.old-deja/g++.mike/for2.C: Likewise.
- * g++.old-deja/g++.other/local4.C: Likewise.
- * g++.old-deja/g++.pt/crash3.C: Likewise.
- * g++.dg/warn/Wvexing-parse.C: New test.
- * g++.dg/warn/Wvexing-parse2.C: New test.
- * g++.dg/warn/Wvexing-parse3.C: New test.
- * g++.dg/warn/Wvexing-parse4.C: New test.
- * g++.dg/warn/Wvexing-parse5.C: New test.
- * g++.dg/warn/Wvexing-parse6.C: New test.
- * g++.dg/warn/Wvexing-parse7.C: New test.
-
-2020-11-05 Andrew MacLeod <amacleod@redhat.com>
-
- * gcc.dg/pr97725.c: New.
-
-2020-11-05 Olivier Hainque <hainque@adacore.com>
-
- * gcc.dg/sms-12.c: Add dg-require-effective-target fpic.
-
-2020-11-05 Jan Hubicka <jh@suse.cz>
-
- * g++.dg/ipa/devirt-24.C: Update template.
-
-2020-11-05 Tamar Christina <tamar.christina@arm.com>
-
- * gcc.dg/vect/slp-11b.c: Guard statements.
-
-2020-11-05 Aldy Hernandez <aldyh@redhat.com>
-
- * gcc.dg/pr97721.c: New test.
-
-2020-11-05 qing zhao <qinzhao@gcc.gnu.org>
-
- PR target/97715
- * gcc.target/i386/zero-scratch-regs-32.c: New test.
-
-2020-11-05 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/97668
- * gcc.dg/analyzer/pr97668.c: New test.
- * gfortran.dg/analyzer/pr97668.f: New test.
-
-2020-11-05 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/bb-slp-69.c: New testcase.
-
-2020-11-05 Tamar Christina <tamar.christina@arm.com>
-
- * gcc.dg/vect/slp-11b.c: Update testcase.
- * gcc.dg/vect/slp-perm-6.c: Update target selector.
-
-2020-11-05 Kewen Lin <linkw@linux.ibm.com>
-
- PR target/96933
- * gcc.target/powerpc/pr96933-1.c: New test.
- * gcc.target/powerpc/pr96933-2.c: New test.
- * gcc.target/powerpc/pr96933-3.c: New test.
- * gcc.target/powerpc/pr96933-4.c: New test.
- * gcc.target/powerpc/pr96933.h: New test.
- * gcc.target/powerpc/pr96933-run.h: New test.
-
-2020-11-04 Tamar Christina <tamar.christina@arm.com>
-
- * gcc.dg/vect/slp-11b.c: Update output scan.
- * gcc.dg/vect/slp-perm-6.c: Likewise.
-
-2020-11-04 Andrew MacLeod <amacleod@redhat.com>
-
- * gcc.dg/pr97515.c: Check listing for folding of entire function.
-
-2020-11-04 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97709
- * gcc.dg/vect/bb-slp-pr97709.c: New testcase.
-
-2020-11-04 Jakub Jelinek <jakub@redhat.com>
+ (check_effective_target_arm_thumb2_no_arm_v8_1_lob): Define proc.
+ * gcc.target/arm/ivopts.c: Use target
+ 'arm_thumb2_no_arm_v8_1_lob'.
- PR tree-optimization/97690
- * gcc.dg/tree-ssa/phi-opt-22.c: New test.
- * gcc.dg/tree-ssa/ssa-ccp-11.c: Use -O2 instead of -O1.
- * gcc.dg/vect/bb-slp-pattern-2.c (foo): Use ? 2 : 7, ? 4 : 7 and
- ? 8 : 7 instead of ? 2 : 0, ? 4 : 0, ? 8 : 0.
+2021-01-21 Nathan Sidwell <nathan@acm.org>
-2020-11-04 Christophe Lyon <christophe.lyon@linaro.org>
+ PR c++/98530
+ * g++.dg/modules/stat-mem-1.h: New.
+ * g++.dg/modules/stat-mem-1_a.H: New.
+ * g++.dg/modules/stat-mem-1_b.C: New.
- * gcc.target/arm/pure-code/no-literal-pool-m0.c: Add dg-skip-if
- and -mfloat-abi=soft option.
- * gcc.target/arm/pure-code/no-literal-pool-m23.c: Likewise.
+2021-01-21 Paul Thomas <pault@gcc.gnu.org>
-2020-11-04 Jakub Jelinek <jakub@redhat.com>
+ PR fortran/96320
+ * gfortran.dg/module_procedure_5.f90 : New test.
+ * gfortran.dg/module_procedure_6.f90 : New test.
- PR c++/97670
- * c-c++-common/gomp/allocate-4.c: New test.
- * g++.dg/gomp/allocate-2.C: New test.
- * g++.dg/gomp/allocate-3.C: New test.
+2021-01-21 Richard Biener <rguenther@suse.de>
-2020-11-04 Joseph Myers <joseph@codesourcery.com>
+ PR testsuite/97299
+ * gcc.dg/vect/slp-reduc-3.c: Amend target selectors.
- * gcc.dg/c2x-attr-nodiscard-1.c, gcc.dg/c2x-attr-nodiscard-2.c,
- gcc.dg/c2x-attr-nodiscard-3.c, gcc.dg/c2x-attr-nodiscard-4.c: New
- tests.
- * gcc.dg/c2x-attr-syntax-5.c: Remove nodiscard test.
+2021-01-21 Richard Biener <rguenther@suse.de>
-2020-11-04 liuhongt <hongtao.liu@intel.com>
+ PR testsuite/98241
+ * gcc.dg/pr78973.c: Remove ilp32 XFAIL.
- * gcc.target/i386/pr97540.c: New test.
+2021-01-21 Richard Biener <rguenther@suse.de>
-2020-11-03 Jan Hubicka <jh@suse.cz>
+ * gcc.dg/Walloca-2.c: Un-XFAIL.
- * gcc.c-torture/execute/pr97695.c: New test.
+2021-01-21 liuhongt <hongtao.liu@intel.com>
-2020-11-03 Jason Merrill <jason@redhat.com>
+ PR rtl-optimization/98694
+ * gcc.target/i386/pr98694.c: New test.
- * g++.dg/Wclass-memaccess.C: Check that signed char and
- char16_t aren't treated as byte-access types.
+2021-01-20 Andrew MacLeod <amacleod@redhat.com>
-2020-11-03 Thomas Schwinge <thomas@codesourcery.com>
+ * gcc.dg/torture/ftrapv-2.c: Make overflow instruction unremovable.
- * c-c++-common/goacc/pr92793-1.c: Extend.
- * gfortran.dg/goacc/pr92793-1.f90: Likewise.
+2021-01-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
-2020-11-03 Jakub Jelinek <jakub@redhat.com>
+ * gcc.target/aarch64/vdup_lane_2.c: Scan for fmov rather than
+ dup.
- PR c++/97663
- * g++.dg/cpp1z/class-deduction75.C: New test.
+2021-01-20 Vladimir N. Makarov <vmakarov@redhat.com>
-2020-11-03 Kamlesh Kumar <kamleshbhalui@gmail.com>
+ PR rtl-optimization/98722
+ * g++.target/s390/pr98722.C: New.
- * g++.dg/DRs/dr2303.C: New test.
+2021-01-20 Eugene Rozenfeld <erozen@microsoft.com>
-2020-11-03 Olivier Hainque <hainque@adacore.com>
+ PR tree-optimization/96674
+ * gcc.dg/pr96674.c: New tests.
- * gcc.target/powerpc/pr67789.c: Add
- dg-require-effective-target fpic.
- * gcc.target/powerpc/pr83629.c: Likewise.
- * gcc.target/powerpc/pr84112.c: Likewise. Remove
- a superflous target test in the dg-do compile
- directive while at it.
+2021-01-20 Patrick Palka <ppalka@redhat.com>
-2020-11-03 Dennis Zhang <dennis.zhang@arm.com>
+ PR c++/95434
+ * g++.dg/cpp2a/lambda-generic9.C: New test.
- * gcc.target/aarch64/advsimd-intrinsics/bf16_get.c: New test.
- * gcc.target/aarch64/advsimd-intrinsics/bf16_get-be.c: New test.
+2021-01-20 Patrick Palka <ppalka@redhat.com>
-2020-11-03 Marek Polacek <polacek@redhat.com>
+ PR c++/82613
+ * g++.dg/parse/access12.C: New test.
+ * g++.dg/template/access35.C: New test.
- PR c++/97632
- * g++.dg/warn/Winit-list4.C: New test.
+2021-01-20 Richard Sandiford <richard.sandiford@arm.com>
-2020-11-03 Andrea Corallo <andrea.corallo@arm.com>
+ PR tree-optimization/98535
+ * gcc.target/aarch64/sve/pr98535.c: New file.
- * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_bf16_indices_1.c:
- Run it also for arm-*-*.
- * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/arm/simd/vstn_lane_bf16_1.c: New test.
-
-2020-11-03 Andrea Corallo <andrea.corallo@arm.com>
-
- * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_bf16_indices_1.c:
- Run it also for the arm backend.
- * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/arm/simd/vldn_lane_bf16_1.c: New test.
-
-2020-11-03 Andrea Corallo <andrea.corallo@arm.com>
-
- * gcc.target/arm/simd/vst1_bf16_1.c: New test.
-
-2020-11-03 Andrea Corallo <andrea.corallo@arm.com>
-
- * gcc.target/arm/simd/vld1_bf16_1.c: New test.
-
-2020-11-03 Andrea Corallo <andrea.corallo@arm.com>
-
- * gcc.target/arm/simd/vst1_lane_bf16_1.c: New testcase.
- * gcc.target/arm/simd/vstq1_lane_bf16_indices_1.c: Likewise.
- * gcc.target/arm/simd/vst1_lane_bf16_indices_1.c: Likewise.
-
-2020-11-03 Andrea Corallo <andrea.corallo@arm.com>
-
- * gcc.target/arm/simd/vld1_lane_bf16_1.c: New testcase.
- * gcc.target/arm/simd/vld1_lane_bf16_indices_1.c: Likewise.
- * gcc.target/arm/simd/vld1q_lane_bf16_indices_1.c: Likewise.
-
-2020-11-03 Dennis Zhang <dennis.zhang@arm.com>
-
- * gcc.target/aarch64/advsimd-intrinsics/bfcvt-compile.c
- (test_vcvt_f32_bf16, test_vcvtq_low_f32_bf16): New tests.
- (test_vcvtq_high_f32_bf16, test_vcvth_f32_bf16): Likewise.
-
-2020-11-03 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/80928
- * gcc.dg/vect/vect-outer-slp-2.c: New testcase.
- * gcc.dg/vect/vect-outer-slp-3.c: Likewise.
-
-2020-11-03 Uroš Bizjak <ubizjak@gmail.com>
-
- * gcc.target/i386/zero-scratch-regs-1.c: Add ia32 target
- selector where appropriate. Improve scan-assembler regexp.
- * gcc.target/i386/zero-scratch-regs-2.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-3.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-4.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-5.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-6.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-7.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-8.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-9.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-10.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-13.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-14.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-15.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-16.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-17.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-18.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-19.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-20.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-21.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-22.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-23.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-24.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-25.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-26.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-27.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-28.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-29.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-30.c: Ditto.
- * gcc.target/i386/zero-scratch-regs-31.c: Ditto.
-
-2020-11-03 Olivier Hainque <hainque@adacore.com>
-
- * gcc.dg/tree-ssa/pr71077.c: Add
- dg-require-effective-target lto.
-
-2020-11-03 Olivier Hainque <hainque@adacore.com>
-
- * gcc.target/i386/pr45352-1.c: Add dg-require-effective-target fpic.
- * gcc.target/i386/pr47602.c: Likewise.
- * gcc.target/i386/pr55151.c: Likewise.
- * gcc.target/i386/pr55458.c: Likewise.
- * gcc.target/i386/pr56348.c: Likewise.
- * gcc.target/i386/pr57097.c: Likewise.
- * gcc.target/i386/pr65753.c: Likewise.
- * gcc.target/i386/pr65915.c: Likewise.
- * gcc.target/i386/pr66232-5.c: Likewise.
- * gcc.target/i386/pr66334.c: Likewise.
- * gcc.target/i386/pr66819-2.c: Likewise.
- * gcc.target/i386/pr67265.c: Likewise.
- * gcc.target/i386/pr81481.c: Likewise.
- * gcc.target/i386/pr83994.c: Likewise.
-
-2020-11-03 Jan Hubicka <hubicka@ucw.cz>
-
- * gcc.c-torture/compile/pr97578.c: New test.
-
-2020-11-03 Richard Biener <rguenther@suse.de>
-
- PR testsuite/97688
- * gcc.dg/vect/tree-vect.h (check_vect): Fix the x86 cpuid
- check to always specify subleaf zero.
-
-2020-11-03 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97678
- * gcc.dg/vect/pr97678.c: New testcase.
-
-2020-11-03 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/attr_deprecated.f90: New test.
-
-2020-11-03 Thomas Schwinge <thomas@codesourcery.com>
-
- * c-c++-common/goacc/nested-reductions-1-kernels.c: Extend.
- * c-c++-common/goacc/nested-reductions-2-kernels.c: Likewise.
- * gfortran.dg/goacc/nested-reductions-1-kernels.f90: Likewise.
- * gfortran.dg/goacc/nested-reductions-2-kernels.f90: Likewise.
-
-2020-11-03 Thomas Schwinge <thomas@codesourcery.com>
-
- * c-c++-common/goacc/nested-reductions.c: Split file into...
- * c-c++-common/goacc/nested-reductions-1-kernels.c: ... this...
- * c-c++-common/goacc/nested-reductions-1-parallel.c: ..., this...
- * c-c++-common/goacc/nested-reductions-1-routine.c: ..., and this.
- * c-c++-common/goacc/nested-reductions-warn.c: Split file into...
- * c-c++-common/goacc/nested-reductions-2-kernels.c: ... this...
- * c-c++-common/goacc/nested-reductions-2-parallel.c: ..., this...
- * c-c++-common/goacc/nested-reductions-2-routine.c: ..., and this.
- * gfortran.dg/goacc/nested-reductions.f90: Split file into...
- * gfortran.dg/goacc/nested-reductions-1-kernels.f90: ... this...
- * gfortran.dg/goacc/nested-reductions-1-parallel.f90: ..., this...
- * gfortran.dg/goacc/nested-reductions-1-routine.f90: ..., and
- this.
- * gfortran.dg/goacc/nested-reductions-warn.f90: Split file into...
- * gfortran.dg/goacc/nested-reductions-2-kernels.f90: ... this...
- * gfortran.dg/goacc/nested-reductions-2-parallel.f90: ..., this...
- * gfortran.dg/goacc/nested-reductions-2-routine.f90: ..., and
- this.
-
-2020-11-03 Thomas Schwinge <thomas@codesourcery.com>
-
- PR fortran/92793
- * gfortran.dg/goacc/pr92793-1.f90: Adjust.
-
-2020-11-03 Thomas Schwinge <thomas@codesourcery.com>
-
- * c-c++-common/goacc/pr92793-1.c: Extend.
- * gfortran.dg/goacc/pr92793-1.f90: Likewise.
-
-2020-11-03 Kewen Lin <linkw@gcc.gnu.org>
-
- PR tree-optimization/96789
- * gcc.dg/tree-ssa/ssa-dse-28.c: Adjust.
- * gcc.dg/tree-ssa/ssa-dse-29.c: Likewise.
- * gcc.dg/vect/bb-slp-41.c: Likewise.
- * gcc.dg/tree-ssa/pr96789.c: New test.
-
-2020-11-03 Bernd Edlinger <bernd.edlinger@hotmail.de>
-
- PR target/97205
- * gcc.c-torture/compile/pr97205.c: New test.
-
-2020-11-02 Alan Modra <amodra@gmail.com>
-
- PR middle-end/97267
- * gcc.target/powerpc/pr97267.c: New test.
-
-2020-11-02 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/97140
- * gcc.target/i386/pr97140.c: New test.
-
-2020-11-02 Patrick Palka <ppalka@redhat.com>
-
- * g++.dg/cpp2a/concepts-complete1.C: Delete test that became
- ill-formed after P2104.
-
-2020-11-02 Carl Love <cel@us.ibm.com>
-
- * gcc.target/powerpc/bcd-2.c: Add include altivec.h.
- * gcc.target/powerpc/bcd-3.c: Add include altivec.h.
- * gcc.target/powerpc/bcd-4.c: New test.
-
-2020-11-02 Nathan Sidwell <nathan@acm.org>
-
- * g++.dg/concepts/pack-1.C: New.
- * g++.dg/lookup/using53.C: Add an enum.
- * g++.dg/template/error25.C: Relax 'export' error check.
-
-2020-11-02 Sudakshina Das <sudi.das@arm.com>
-
- PR target/97638
- * gcc.target/aarch64/pr97638.c: New test.a
-
-2020-11-02 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/slp-49.c: New testcase.
-
-2020-11-02 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc.target/arm/pure-code/no-literal-pool-m23.c: New.
-
-2020-11-02 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc.target/arm/pure-code/no-literal-pool-m0.c: New.
-
-2020-11-02 Thomas Schwinge <thomas@codesourcery.com>
-
- PR fortran/92793
- * gfortran.dg/goacc/pr92793-1.f90: Adjust.
-
-2020-11-02 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/97655
- * gfortran.dg/gomp/atomic.f90: Update tree-dump counts; move
- invalid OMP 5.0 code to ...
- * gfortran.dg/gomp/atomic-2.f90: ... here; update dg-error.
- * gfortran.dg/gomp/requires-9.f90: Update tree dump scan.
+2021-01-20 Tobias Burnus <tobias@codesourcery.com>
-2020-11-02 Richard Biener <rguenther@suse.de>
+ PR fortran/98763
+ * gfortran.dg/gomp/task-detach-1.f90: Use integer(1) to avoid
+ missing diagnostic issues with c_intptr_t == default integer kind.
- PR tree-optimization/97558
- * gcc.dg/vect/pr97558-2.c: New testcase.
+2021-01-20 Jakub Jelinek <jakub@redhat.com>
-2020-11-02 Aldy Hernandez <aldyh@redhat.com>
+ PR tree-optimization/98721
+ * gcc.dg/pr98721-1.c: New test.
+ * gcc.dg/pr98721-2.c: New test.
- PR tree-optimization/97505
- * gcc.dg/pr97505.c: New test.
+2021-01-20 Richard Biener <rguenther@suse.de>
-2020-11-02 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/98758
+ * gcc.dg/torture/pr98758.c: New testcase.
- PR tree-optimization/97558
- * gcc.dg/vect/pr97558.c: New testcase.
+2021-01-20 Jakub Jelinek <jakub@redhat.com>
-2020-11-02 Richard Biener <rguenther@suse.de>
+ PR c++/98742
+ * c-c++-common/gomp/task-detach-2.c: New test.
- PR tree-optimization/97650
- * gcc.dg/vect/bb-slp-pr97650.c: New testcase.
+2021-01-20 Tobias Burnus <tobias@codesourcery.com>
-2020-11-02 Kito Cheng <kito.cheng@sifive.com>
+ PR fortran/98757
+ PR fortran/98476
+ * gfortran.dg/gomp/is_device_ptr-2.f90: Fix dg-error.
- * gcc.target/riscv/arch-7.c: New.
- * gcc.target/riscv/attribute-10.c: Update test arch string.
+2021-01-19 David Edelsohn <dje.gcc@gmail.com>
-2020-11-02 Christophe Lyon <christophe.lyon@linaro.org>
+ * gcc.dg/cpp/ucs.c: Expect Invalid warning for 2byte wchar.
+ * gcc.dg/debug/dwarf2/inline6.c: Remove skip AIX.
+ * gcc.dg/debug/dwarf2/lang-c11.c: Remove skip AIX.
+ * gcc.dg/debug/dwarf2/pr41445-7.c: Remove skip AIX.
+ * gcc.dg/debug/dwarf2/pr41445-8.c: Remove skip AIX.
+ * gcc.dg/tree-ssa/builtin-sprintf-warn-20.c: Require 4byte wchar.
- PR target/96770
- * gcc.target/arm/pure-code/pr96770.c: New test.
+2021-01-19 Marek Polacek <polacek@redhat.com>
-2020-11-02 Christophe Lyon <christophe.lyon@linaro.org>
+ PR c++/98659
+ * g++.dg/template/deduce8.C: New test.
- PR target/96967
- * gcc.target/arm/pure-code/pr96767.c: New test.
+2021-01-19 Marek Polacek <polacek@redhat.com>
-2020-11-01 Iain Sandoe <iain@sandoe.co.uk>
+ PR c++/98687
+ * g++.dg/lookup/using64.C: New test.
+ * g++.dg/lookup/using65.C: New test.
- * obj-c++.dg/SEL-typedef.mm: New test.
- * objc.dg/SEL-typedef.m: New test.
+2021-01-19 Martin Sebor <msebor@redhat.com>
-2020-11-01 Iain Sandoe <iain@sandoe.co.uk>
+ PR middle-end/98664
+ * gcc.dg/Wvla-larger-than-4.c: Adjust expected output.
+ * gcc.dg/plugin/diagnostic-test-inlining-3.c: Same.
+ * g++.dg/warn/Wfree-nonheap-object-5.C: New test.
+ * gcc.dg/Wfree-nonheap-object-4.c: New test.
- * obj-c++.dg/property/at-property-1.mm: Adjust test after
- fixing spurious error output.
+2021-01-19 Patrick Palka <ppalka@redhat.com>
-2020-11-01 Iain Sandoe <iain@sandoe.co.uk>
-
- * gcc.target/i386/amxbf16-asmintel-1.c: Require masm_intel.
- * gcc.target/i386/amxint8-asmintel-1.c: Likewise.
- * gcc.target/i386/amxtile-asmintel-1.c: Likewise.
-
-2020-10-30 Qing Zhao <qing.zhao@oracle.com>
- H.J.Lu <hjl.tools@gmail.com>
-
- * c-c++-common/zero-scratch-regs-1.c: New test.
- * c-c++-common/zero-scratch-regs-10.c: New test.
- * c-c++-common/zero-scratch-regs-11.c: New test.
- * c-c++-common/zero-scratch-regs-2.c: New test.
- * c-c++-common/zero-scratch-regs-3.c: New test.
- * c-c++-common/zero-scratch-regs-4.c: New test.
- * c-c++-common/zero-scratch-regs-5.c: New test.
- * c-c++-common/zero-scratch-regs-6.c: New test.
- * c-c++-common/zero-scratch-regs-7.c: New test.
- * c-c++-common/zero-scratch-regs-8.c: New test.
- * c-c++-common/zero-scratch-regs-9.c: New test.
- * c-c++-common/zero-scratch-regs-attr-usages.c: New test.
- * gcc.target/i386/zero-scratch-regs-1.c: New test.
- * gcc.target/i386/zero-scratch-regs-10.c: New test.
- * gcc.target/i386/zero-scratch-regs-11.c: New test.
- * gcc.target/i386/zero-scratch-regs-12.c: New test.
- * gcc.target/i386/zero-scratch-regs-13.c: New test.
- * gcc.target/i386/zero-scratch-regs-14.c: New test.
- * gcc.target/i386/zero-scratch-regs-15.c: New test.
- * gcc.target/i386/zero-scratch-regs-16.c: New test.
- * gcc.target/i386/zero-scratch-regs-17.c: New test.
- * gcc.target/i386/zero-scratch-regs-18.c: New test.
- * gcc.target/i386/zero-scratch-regs-19.c: New test.
- * gcc.target/i386/zero-scratch-regs-2.c: New test.
- * gcc.target/i386/zero-scratch-regs-20.c: New test.
- * gcc.target/i386/zero-scratch-regs-21.c: New test.
- * gcc.target/i386/zero-scratch-regs-22.c: New test.
- * gcc.target/i386/zero-scratch-regs-23.c: New test.
- * gcc.target/i386/zero-scratch-regs-24.c: New test.
- * gcc.target/i386/zero-scratch-regs-25.c: New test.
- * gcc.target/i386/zero-scratch-regs-26.c: New test.
- * gcc.target/i386/zero-scratch-regs-27.c: New test.
- * gcc.target/i386/zero-scratch-regs-28.c: New test.
- * gcc.target/i386/zero-scratch-regs-29.c: New test.
- * gcc.target/i386/zero-scratch-regs-30.c: New test.
- * gcc.target/i386/zero-scratch-regs-31.c: New test.
- * gcc.target/i386/zero-scratch-regs-3.c: New test.
- * gcc.target/i386/zero-scratch-regs-4.c: New test.
- * gcc.target/i386/zero-scratch-regs-5.c: New test.
- * gcc.target/i386/zero-scratch-regs-6.c: New test.
- * gcc.target/i386/zero-scratch-regs-7.c: New test.
- * gcc.target/i386/zero-scratch-regs-8.c: New test.
- * gcc.target/i386/zero-scratch-regs-9.c: New test.
-
-2020-10-30 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/97556
- * gcc.dg/Warray-bounds-70.c: New test.
-
-2020-10-30 Tobias Burnus <tobias@codesourcery.com>
-
- * g++.dg/guality/guality.exp: Skip $rootme-based check if unset.
- * gcc.dg/guality/guality.exp: Likewise.
- * gfortran.dg/guality/guality.exp: Likewise.
- * lib/asan-dg.exp: Don't use $asan_saved_library_path if not set.
- * lib/tsan-dg.exp: Don't use $tsan_saved_library_path if not set.
- * lib/ubsan-dg.exp: Don't use $ubsan_saved_library_path if not set.
-
-2020-10-30 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/atomic-2.f90: New test.
- * gfortran.dg/gomp/atomic.f90: New test.
-
-2020-10-30 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97623
- * gcc.dg/tree-ssa/ssa-hoist-7.c: New testcase.
-
-2020-10-30 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97626
- * gcc.dg/vect/bb-slp-pr97626.c: New testcase.
-
-2020-10-30 Thomas Schwinge <thomas@codesourcery.com>
-
- PR fortran/92793
- * c-c++-common/goacc/clause-locations.c: Rewrite into...
- * c-c++-common/goacc/pr92793-1.c: ... this.
- * gfortran.dg/goacc/clause-locations.f90: Rewrite into...
- * gfortran.dg/goacc/pr92793-1.f90: ... this.
-
-2020-10-30 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97633
- * g++.dg/vect/slp-pr97636.cc: New testcase.
- * gcc.dg/vect/bb-slp-pr97633.c: Likewise.
-
-2020-10-30 Alex Coplan <alex.coplan@arm.com>
-
- PR target/96998
- * gcc.c-torture/compile/pr96998.c: New test.
-
-2020-10-30 Jakub Jelinek <jakub@redhat.com>
-
- * c-c++-common/gomp/allocate-3.c: New test.
-
-2020-10-30 Jakub Jelinek <jakub@redhat.com>
-
- * c-c++-common/gomp/allocate-1.c (qux): Add another test.
- * g++.dg/gomp/allocate-1.C: New test.
-
-2020-10-30 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/bb-slp-pr65935.c: Adjust.
-
-2020-10-30 Michael Meissner <meissner@linux.ibm.com>
-
- * gcc.target/powerpc/float128-mix-2.c: New test.
- * gcc.target/powerpc/float128-mix-3.c: New test.
- * gcc.target/powerpc/float128-mix.c: Update failure messages.
-
-2020-10-29 Marek Polacek <polacek@redhat.com>
-
- DR 625
- PR c++/97479
- * g++.dg/cpp0x/auto3.C: Update dg-error.
- * g++.dg/cpp0x/auto9.C: Likewise.
- * g++.dg/cpp2a/concepts-pr84979-2.C: Likewise.
- * g++.dg/cpp2a/concepts-pr84979-3.C: Likewise.
- * g++.dg/cpp2a/concepts-pr84979.C: Likewise.
- * g++.dg/DRs/dr625.C: New test.
-
-2020-10-29 Marek Polacek <polacek@redhat.com>
-
- PR c++/93107
- * g++.dg/cpp0x/initlist-deduce3.C: New test.
-
-2020-10-29 Marek Polacek <polacek@redhat.com>
-
- * g++.dg/cpp2a/enum-conv1.C: Remove unused code.
- * g++.dg/cpp2a/spaceship-err5.C: New test.
-
-2020-10-29 Patrick Palka <ppalka@redhat.com>
-
- PR c++/97412
- * g++.dg/cpp2a/concepts-variadic2.C: New test.
-
-2020-10-29 Jason Merrill <jason@redhat.com>
-
- PR c++/97388
- * g++.dg/cpp2a/constexpr-dtor8.C: New test.
-
-2020-10-29 Jakub Jelinek <jakub@redhat.com>
- Jason Merrill <jason@redhat.com>
-
- PR c++/97388
- * g++.dg/cpp2a/constexpr-dtor5.C: New test.
- * g++.dg/cpp2a/constexpr-dtor6.C: New test.
- * g++.dg/cpp2a/constexpr-dtor7.C: New test.
-
-2020-10-29 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/95808
- * g++.dg/cpp2a/constexpr-new15.C: New test.
-
-2020-10-29 Joseph Myers <joseph@codesourcery.com>
-
- * gcc.dg/c11-bool-1.c, gcc.dg/c2x-bool-1.c, gcc.dg/c99-bool-4.c:
- New tests.
-
-2020-10-29 Jakub Jelinek <jakub@redhat.com>
-
- * gcc.dg/pr97596.c: Require int128 effective target.
-
-2020-10-29 Andrew MacLeod <amacleod@redhat.com>
-
- * gcc.dg/pr97596.c: New.
-
-2020-10-29 Alexandre Oliva <oliva@adacore.com>
-
- * gnat.dg/sin_cos.ads: New.
- * gnat.dg/sin_cos.adb: New.
- * gcc.dg/sin_cos.c: New.
-
-2020-10-29 liuhongt <hongtao.liu@intel.com>
-
- * gcc.target/i386/keylocker-aesdec128kl.c: New test.
- * gcc.target/i386/keylocker-aesdec256kl.c: Likewise.
- * gcc.target/i386/keylocker-aesdecwide128kl.c: Likewise.
- * gcc.target/i386/keylocker-aesdecwide256kl.c: Likewise.
- * gcc.target/i386/keylocker-aesenc128kl.c: Likewise.
- * gcc.target/i386/keylocker-aesencwide128kl.c: Likewise.
- * gcc.target/i386/keylocker-aesencwide256kl.c: Likewise.
- * gcc.target/i386/keylocker-encodekey128.c: Likewise.
- * gcc.target/i386/keylocker-encodekey256.c: Likewise.
- * gcc.target/i386/keylocker-loadiwkey.c: Likewise.
- * g++.dg/other/i386-2.C: Add -mkl and -mwidekl.
- * g++.dg/other/i386-3.C: Likewise.
- * gcc.target/i386/sse-12.c: Likewise.
- * gcc.target/i386/sse-13.c: Likewise.
- * gcc.target/i386/sse-14.c: Likewise.
- * gcc.target/i386/sse-22.c: Add kl and widekl.
- * gcc.target/i386/sse-23.c: Likewise.
- * gcc.target/i386/funcspec-56.inc: Add new target attribute test.
-
-2020-10-29 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/bb-slp-pr65935.c: Adjust.
-
-2020-10-29 Andrew MacLeod <amacleod@redhat.com>
-
- * g++.dg/pr97609.C: New.
-
-2020-10-29 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/97608
- * gcc.dg/analyzer/malloc-1.c (test_42d): New.
- * gcc.dg/analyzer/pr97608.c: New test.
-
-2020-10-28 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/vsx-load-element-extend-char.c: Put "dg-do run"
- before "dg-do compile", and make them mutually exclusive.
- * gcc.target/powerpc/vsx-load-element-extend-int.c: Likewise.
- * gcc.target/powerpc/vsx-load-element-extend-longlong.c: Likewise.
- * gcc.target/powerpc/vsx-load-element-extend-short.c: Likewise.
- * gcc.target/powerpc/vsx-store-element-truncate-char.c: Likewise.
- * gcc.target/powerpc/vsx-store-element-truncate-int.c: Likewise.
- * gcc.target/powerpc/vsx-store-element-truncate-longlong.c: Likewise.
- * gcc.target/powerpc/vsx-store-element-truncate-short.c: Likewise.
- * gcc.target/powerpc/altivec-consts.c: Likewise, add -save-temps.
- * gcc.target/powerpc/le-altivec-consts.c: Likewise.
-
-2020-10-28 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/float128-type-1.c: Simplify target test.
- * gcc.target/powerpc/float128-type-2.c: Likewise.
-
-2020-10-28 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/fold-vec-extract-char.p9.c: Don't check addi
- count for ilp32.
- * gcc.target/powerpc/fold-vec-extract-int.p9.c: Likewise.
- * gcc.target/powerpc/fold-vec-extract-longlong.p7.c: Likewise.
- * gcc.target/powerpc/fold-vec-extract-longlong.p8.c: Likewise.
- * gcc.target/powerpc/fold-vec-insert-int-p9.c: Likewise.
-
-2020-10-28 Marek Polacek <polacek@redhat.com>
-
- * g++.dg/warn/mvp3.C: New test.
-
-2020-10-28 Marek Polacek <polacek@redhat.com>
-
- PR c++/97573
- * g++.dg/cpp0x/linkage2.C: Add dg-warning.
- * g++.dg/parse/attr3.C: Likewise.
- * g++.dg/cpp2a/enum-conv1.C: New test.
- * g++.dg/cpp2a/enum-conv2.C: New test.
- * g++.dg/cpp2a/enum-conv3.C: New test.
-
-2020-10-28 Marek Polacek <polacek@redhat.com>
-
- PR c++/96675
- PR c++/96742
- * g++.dg/warn/Wdiv-by-zero-3.C: Turn dg-warning into dg-bogus.
- * g++.dg/warn/Wtautological-compare3.C: New test.
- * g++.dg/warn/Wtype-limits5.C: New test.
- * g++.old-deja/g++.pt/crash10.C: Remove dg-warning.
-
-2020-10-28 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/sad-vectorize-1.c: Remove AIX skip.
- * gcc.target/powerpc/sad-vectorize-2.c: Remove AIX skip.
- * gcc.target/powerpc/sad-vectorize-3.c: Remove target.
- Require p9vector_hw.
- * gcc.target/powerpc/sad-vectorize-4.c: Remove target.
- Require p9vector_hw.
- * gcc.target/powerpc/signbit-1.c: Remove target.
- Require ppc_float128_sw.
- * gcc.target/powerpc/signbit-2.c: Remove target.
- Require ppc_float128_sw.
- * gcc.target/powerpc/signbit-3.c: Remove target.
- Require ppc_float128_sw.
-
-2020-10-28 Marek Polacek <polacek@redhat.com>
-
- PR c++/94799
- * g++.dg/template/lookup16.C: New test.
-
-2020-10-28 Marek Polacek <polacek@redhat.com>
-
- PR c++/86773
- * g++.dg/cpp1z/fold12.C: New test.
-
-2020-10-28 Tamar Christina <tamar.christina@arm.com>
-
- PR target/97535
- * gcc.target/aarch64/pr97535.c: Exclude ILP32.
-
-2020-10-28 Richard Sandiford <richard.sandiford@arm.com>
-
- PR tree-optimization/97457
- * gcc.dg/vect/pr97457.c: New test.
-
-2020-10-28 Joseph Myers <joseph@codesourcery.com>
-
- * gcc.dg/c11-parm-omit-1.c, gcc.dg/c11-parm-omit-2.c,
- gcc.dg/c11-parm-omit-3.c, gcc.dg/c11-parm-omit-4.c,
- gcc.dg/c2x-parm-omit-1.c, gcc.dg/c2x-parm-omit-2.c,
- gcc.dg/c2x-parm-omit-3.c, gcc.dg/c2x-parm-omit-4.c: New tests.
- * gcc.dg/noncompile/pr79758.c: Do not expect error for omitted
- parameter name.
-
-2020-10-28 Patrick Palka <ppalka@redhat.com>
-
- PR c++/95132
- * g++.dg/cpp2a/concepts-fn7.C: New test.
-
-2020-10-28 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/vadsdu-0.c: Remove target.
- * gcc.target/powerpc/vadsdu-1.c: Remove target.
- * gcc.target/powerpc/vadsdu-2.c: Remove target.
- * gcc.target/powerpc/vadsdu-3.c: Remove target.
- * gcc.target/powerpc/vadsdu-4.c: Remove target.
- * gcc.target/powerpc/vadsdu-5.c: Remove target.
- * gcc.target/powerpc/vadsdub-1.c: Remove target.
- * gcc.target/powerpc/vadsdub-2.c: Remove target.
- * gcc.target/powerpc/vadsduh-1.c: Remove target.
- * gcc.target/powerpc/vadsduh-2.c: Remove target.
- * gcc.target/powerpc/vadsduw-1.c: Remove target.
- * gcc.target/powerpc/vadsduw-2.c: Remove target.
- * gcc.target/powerpc/vslv-0.c: Remove target.
- * gcc.target/powerpc/vslv-1.c: Remove target.
- * gcc.target/powerpc/vsrv-0.c: Remove target.
- * gcc.target/powerpc/vsrv-1.c: Remove target.
-
-2020-10-28 David Edelsohn <dje.gcc@gmail.com>
- Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/byte-in-either-range-0.c: Remove target.
- * gcc.target/powerpc/byte-in-either-range-1.c: Remove target.
- * gcc.target/powerpc/byte-in-range-0.c: Remove target.
- * gcc.target/powerpc/byte-in-range-1.c: Remove target.
- * gcc.target/powerpc/byte-in-set-0.c: Remove target.
- * gcc.target/powerpc/byte-in-set-1.c: Remove target.
- * gcc.target/powerpc/byte-in-set-2.c: Remove target. Expect
- implicit declaration warning.
-
-2020-10-28 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/bb-slp-58.c: Require vect_double.
- * gcc.dg/vect/bb-slp-59.c: Likewise.
+ PR c++/41437
+ PR c++/58993
+ * g++.dg/opt/pr87974.C: Adjust.
+ * g++.dg/template/access34.C: New test.
+ * g++.dg/template/friend68.C: New test.
+ * g++.dg/template/friend69.C: New test.
-2020-10-28 Richard Biener <rguenther@suse.de>
+2021-01-19 Marek Polacek <polacek@redhat.com>
- PR tree-optimization/97615
- * gcc.dg/vect/bb-slp-pr97615.c: New testcase.
+ PR c++/98333
+ * g++.dg/cpp0x/noexcept62.C: New test.
-2020-10-28 Richard Biener <rguenther@suse.de>
+2021-01-19 Will Schmidt <will_schmidt@vnet.ibm.com>
- * gcc.dg/vect/bb-slp-68.c: New testcase.
+ * gcc.target/powerpc/pr88233.c: Update dg- stanzas.
-2020-10-28 Andrea Corallo <andrea.corallo@arm.com>
+2021-01-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
- (hbfloat16_t): Define type.
- (CHECK_FP): Make it working for bfloat types.
- * gcc.target/aarch64/advsimd-intrinsics/bf16_vstN_lane_1.c: New file.
- * gcc.target/aarch64/advsimd-intrinsics/bf16_vstN_lane_2.c: Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_bf16_indices_1.c:
- Likewise.
-
-2020-10-28 Andrea Corallo <andrea.corallo@arm.com>
-
- * gcc.target/aarch64/advsimd-intrinsics/bf16_vldN_lane_1.c: New
- testcase.
- * gcc.target/aarch64/advsimd-intrinsics/bf16_vldN_lane_2.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_bf16_indices_1.c:
- Likewise.
-
-2020-10-28 Jakub Jelinek <jakub@redhat.com>
-
- * c-c++-common/gomp/allocate-1.c: New test.
- * c-c++-common/gomp/allocate-2.c: New test.
- * c-c++-common/gomp/clauses-1.c (omp_allocator_handle_t): New typedef.
- (foo, bar, baz): Add allocate clauses where allowed.
-
-2020-10-28 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/vsx-load-element-extend-char.c: Add -save-temps.
- * gcc.target/powerpc/vsx-load-element-extend-int.c: Likewise.
- * gcc.target/powerpc/vsx-load-element-extend-longlong.c: Likewise.
- * gcc.target/powerpc/vsx-load-element-extend-short.c: Likewise.
- * gcc.target/powerpc/vsx-store-element-truncate-char.c: Likewise.
- * gcc.target/powerpc/vsx-store-element-truncate-int.c: Likewise.
- * gcc.target/powerpc/vsx-store-element-truncate-longlong.c: Likewise.
- * gcc.target/powerpc/vsx-store-element-truncate-short.c: Likewise.
-
-2020-10-28 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/vec-blend-runnable.c: Add save-temps.
- * gcc.target/powerpc/vec-insert-word-runnable.c: Likewise.
- * gcc.target/powerpc/vec-permute-ext-runnable.c: Likewise.
- * gcc.target/powerpc/vec-replace-word-runnable.c: Likewise.
- * gcc.target/powerpc/vec-splati-runnable.c: Likewise.
- * gcc.target/powerpc/vec-ternarylogic-3.c: Likewise.
- * gcc.target/powerpc/vec-ternarylogic-9.c: Likewise.
- * gcc.target/powerpc/vsx_mask-count-runnable.c: Likewise.
- * gcc.target/powerpc/vsx_mask-expand-runnable.c: Likewise.
- * gcc.target/powerpc/vsx_mask-extract-runnable.c: Likewise.
- * gcc.target/powerpc/vsx_mask-move-runnable.c: Likewise.
- * gcc.target/powerpc/vec-shift-double-runnable.c: Likewise,
- and correct assembly match.
-
-2020-10-27 Joseph Myers <joseph@codesourcery.com>
-
- * gcc.dg/c2x-attr-deprecated-4.c, gcc.dg/c2x-attr-fallthrough-4.c,
- gcc.dg/c2x-attr-maybe_unused-4.c: Allow duplicate attributes.
-
-2020-10-27 Andreas Krebbel <krebbel@linux.ibm.com>
-
- * gcc.target/s390/pr97497.c: New test.
-
-2020-10-27 Harald Anlauf <anlauf@gmx.de>
-
- * gfortran.dg/value_8.f90: New test.
-
-2020-10-27 Carl Love <cel@us.ibm.com>
-
- * gcc.target/powerpc/vec-blend-runnable.c: Change #ifdef
- DEBUG to #if DEBUG.
- Fix printf line so it is less then 80 characters long.
- * gcc.target/powerpc/vec-insert-word-runnable.c: Change
- #ifdef DEBUG to #if DEBUG.
- * gcc.target/powerpc/vec-permute-ext-runnable.c: Change
- #ifdef DEBUG to #if DEBUG.
- * gcc.target/powerpc/vec-replace-word-runnable.c: Change
- #ifdef DEBUG to #if DEBUG.
- Fix printf lines so they are less then 80 characters long.
- * gcc.target/powerpc/vec-shift-double-runnable.c: Change
- #ifdef DEBUG to #if DEBUG.
-
-2020-10-27 Tamar Christina <tamar.christina@arm.com>
-
- PR target/97535
- * gcc.target/aarch64/pr97535.c: New test.
-
-2020-10-27 Andrea Corallo <andrea.corallo@arm.com>
-
- * gcc.target/aarch64/advsimd-intrinsics/bf16_vect_copy_lane_1.c:
- New test.
- * gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_1.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_2.c:
- Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_1.c:
+ (CHECK_CUMULATIVE_SAT): Delete.
+ (CHECK_CUMULATIVE_SAT_NAMED): Likewise. Deleted related
+ variables.
+ * gcc.target/aarch64/advsimd-intrinsics/binary_sat_op.inc:
+ Remove uses of the above.
+ * gcc.target/aarch64/advsimd-intrinsics/unary_sat_op.inc:
Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_2.c:
+ * gcc.target/aarch64/advsimd-intrinsics/vqabs.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqadd.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqdmlXl.inc: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_lane.inc:
Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_1.c:
+ * gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_n.inc: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqdmlal.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqdmlal_lane.c:
Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_2.c:
+ * gcc.target/aarch64/advsimd-intrinsics/vqdmlal_n.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqdmlsl.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_lane.c:
Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_1.c:
+ * gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_n.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqdmulh.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqdmulh_lane.c:
Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_2.c:
+ * gcc.target/aarch64/advsimd-intrinsics/vqdmulh_n.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqdmull.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqdmull_lane.c:
Likewise.
-
-2020-10-27 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/bb-slp-67.c: New testcase.
-
-2020-10-27 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/92942
- * gcc.dg/Wstringop-overflow-56.c: New test.
- * gcc.dg/Wstringop-overflow-57.c: Same.
-
-2020-10-27 Martin Sebor <msebor@redhat.com>
-
- * gcc.dg/Wstringop-overflow-44.s: Remove.
-
-2020-10-27 Andrew MacLeod <amacleod@redhat.com>
-
- * gcc.dg/pr97567.c: Update to work with 32 bit targets.
-
-2020-10-27 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/97568
- * gcc.dg/analyzer/pr97568.c: New test.
-
-2020-10-27 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/97560
- PR testsuite/97590
- * g++.dg/pr97560.C: Require c++11 effective target and add comment
- with PR number.
-
-2020-10-27 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/bb-slp-54.c: New test.
- * gcc.dg/vect/bb-slp-55.c: Likewise.
- * gcc.dg/vect/bb-slp-56.c: Likewise.
- * gcc.dg/vect/bb-slp-57.c: Likewise.
- * gcc.dg/vect/bb-slp-58.c: Likewise.
- * gcc.dg/vect/bb-slp-59.c: Likewise.
- * gcc.dg/vect/bb-slp-60.c: Likewise.
- * gcc.dg/vect/bb-slp-61.c: Likewise.
- * gcc.dg/vect/bb-slp-62.c: Likewise.
- * gcc.dg/vect/bb-slp-63.c: Likewise.
- * gcc.dg/vect/bb-slp-64.c: Likewise.
- * gcc.dg/vect/bb-slp-65.c: Likewise.
- * gcc.dg/vect/bb-slp-66.c: Likewise.
- * gcc.dg/vect/vect-outer-slp-1.c: Likewise.
- * gfortran.dg/vect/O3-bb-slp-1.f: Likewise.
- * gfortran.dg/vect/O3-bb-slp-2.f: Likewise.
- * g++.dg/vect/simd-11.cc: Likewise.
-
-2020-10-27 Richard Biener <rguenther@suse.de>
-
- * gcc.target/i386/pr95866-1.c: Adjust.
-
-2020-10-27 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/swaps-p8-22.c: Enable only for aix and
- -m64 linux.
-
-2020-10-27 Martin Liska <mliska@suse.cz>
-
- PR gcov-profile/97461
- * gcc.dg/tree-prof/pr97461.c: New test.
-
-2020-10-27 Aldy Hernandez <aldyh@redhat.com>
-
- PR tree-optimization/97560
- * g++.dg/pr97560.C: New test.
-
-2020-10-27 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/vsx_mask-count-runnable.c: Separate options
- passed to dg-require-effective-target.
- * gcc.target/powerpc/vsx_mask-expand-runnable.c: Likewise.
- * gcc.target/powerpc/vsx_mask-extract-runnable.c: Likewise.
- * gcc.target/powerpc/vsx_mask-move-runnable.c: Likewise.
-
-2020-10-26 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/localentry-1.c: Remove -mpcrel from options.
- * gcc.target/powerpc/notoc-direct-1.c: Likewise.
- * gcc.target/powerpc/pr94740.c: Likewise.
-
-2020-10-26 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/bswap64-4.c: Comment.
-
-2020-10-26 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/pr93122.c: Replace -mcpu with -mdejagnu-cpu.
- * gcc.target/powerpc/vsx_mask-count-runnable.c: Likewise.
- * gcc.target/powerpc/vsx_mask-expand-runnable.c: Likewise.
- * gcc.target/powerpc/vsx_mask-extract-runnable.c: Likewise.
- * gcc.target/powerpc/vsx_mask-move-runnable.c: Likewise.
-
-2020-10-26 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/vsx-load-element-extend-char.c: Require int128.
- * gcc.target/powerpc/vsx-load-element-extend-int.c: Likewise.
- * gcc.target/powerpc/vsx-load-element-extend-longlong.c: Likewise.
- * gcc.target/powerpc/vsx-load-element-extend-short.c: Likewise.
- * gcc.target/powerpc/vsx-store-element-truncate-char.c: Likewise.
- * gcc.target/powerpc/vsx-store-element-truncate-int.c: Likewise.
- * gcc.target/powerpc/vsx-store-element-truncate-longlong.c: Likewise.
- * gcc.target/powerpc/vsx-store-element-truncate-short.c: Likewise.
- * gcc.target/powerpc/vsx_mask-count-runnable.c: Likewise.
- * gcc.target/powerpc/vsx_mask-expand-runnable.c: Likewise.
- * gcc.target/powerpc/vsx_mask-extract-runnable.c: Likewise.
- * gcc.target/powerpc/vsx_mask-move-runnable.c: Likewise.
-
-2020-10-26 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/cfuged-1.c,
- gcc.target/powerpc/cntlzdm-1.c,
- gcc.target/powerpc/cnttzdm-1.c,
- gcc.target/powerpc/dg-future-1.c,
- gcc.target/powerpc/lsbb-runnable.c,
- gcc.target/powerpc/mma-double-test.c,
- gcc.target/powerpc/mma-single-test.c,
- gcc.target/powerpc/p10-arch31.c,
- gcc.target/powerpc/p10-identify.c,
- gcc.target/powerpc/pdep-1.c,
- gcc.target/powerpc/pextd-1.c,
- gcc.target/powerpc/pr96787-2.c,
- gcc.target/powerpc/vec-blend-runnable.c,
- gcc.target/powerpc/vec-cfuged-1.c,
- gcc.target/powerpc/vec-clrl-1.c,
- gcc.target/powerpc/vec-clrl-3.c,
- gcc.target/powerpc/vec-clrr-1.c,
- gcc.target/powerpc/vec-clrr-3.c,
- gcc.target/powerpc/vec-cntlzm-1.c,
- gcc.target/powerpc/vec-cnttzm-1.c,
- gcc.target/powerpc/vec-extracth-1.c,
- gcc.target/powerpc/vec-extracth-3.c,
- gcc.target/powerpc/vec-extracth-5.c,
- gcc.target/powerpc/vec-extracth-7.c,
- gcc.target/powerpc/vec-extractl-1.c,
- gcc.target/powerpc/vec-extractl-3.c,
- gcc.target/powerpc/vec-extractl-5.c,
- gcc.target/powerpc/vec-extractl-7.c,
- gcc.target/powerpc/vec-gnb-1.c,
- gcc.target/powerpc/vec-insert-word-runnable.c,
- gcc.target/powerpc/vec-pdep-1.c,
- gcc.target/powerpc/vec-permute-ext-runnable.c,
- gcc.target/powerpc/vec-pext-1.c,
- gcc.target/powerpc/vec-replace-word-runnable.c,
- gcc.target/powerpc/vec-shift-double-runnable.c,
- gcc.target/powerpc/vec-splati-runnable.c,
- gcc.target/powerpc/vec-stril-1.c,
- gcc.target/powerpc/vec-stril-16.c,
- gcc.target/powerpc/vec-stril-17.c,
- gcc.target/powerpc/vec-stril-18.c,
- gcc.target/powerpc/vec-stril-19.c,
- gcc.target/powerpc/vec-stril-20.c,
- gcc.target/powerpc/vec-stril-21.c,
- gcc.target/powerpc/vec-stril-22.c,
- gcc.target/powerpc/vec-stril-23.c,
- gcc.target/powerpc/vec-stril-3.c,
- gcc.target/powerpc/vec-stril-5.c,
- gcc.target/powerpc/vec-stril-7.c,
- gcc.target/powerpc/vec-stril_p-1.c,
- gcc.target/powerpc/vec-stril_p-3.c,
- gcc.target/powerpc/vec-stril_p-5.c,
- gcc.target/powerpc/vec-stril_p-7.c,
- gcc.target/powerpc/vec-strir-1.c,
- gcc.target/powerpc/vec-strir-16.c,
- gcc.target/powerpc/vec-strir-17.c,
- gcc.target/powerpc/vec-strir-18.c,
- gcc.target/powerpc/vec-strir-19.c,
- gcc.target/powerpc/vec-strir-20.c,
- gcc.target/powerpc/vec-strir-21.c,
- gcc.target/powerpc/vec-strir-22.c,
- gcc.target/powerpc/vec-strir-23.c,
- gcc.target/powerpc/vec-strir-3.c,
- gcc.target/powerpc/vec-strir-5.c,
- gcc.target/powerpc/vec-strir-7.c,
- gcc.target/powerpc/vec-strir_p-1.c,
- gcc.target/powerpc/vec-strir_p-3.c,
- gcc.target/powerpc/vec-strir_p-5.c,
- gcc.target/powerpc/vec-strir_p-7.c,
- gcc.target/powerpc/vec-ternarylogic-1.c,
- gcc.target/powerpc/vec-ternarylogic-3.c,
- gcc.target/powerpc/vec-ternarylogic-5.c,
- gcc.target/powerpc/vec-ternarylogic-7.c,
- gcc.target/powerpc/vec-ternarylogic-9.c,
- gcc.target/powerpc/vsx_mask-count-runnable.c,
- gcc.target/powerpc/vsx_mask-expand-runnable.c,
- gcc.target/powerpc/vsx_mask-extract-runnable.c,
- gcc.target/powerpc/vsx_mask-move-runnable.c,
- gcc.target/powerpc/xxgenpc-runnable.c: Link testcase when it
- can't be run.
-
-2020-10-26 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/dimode_off.c: Add -mno-prefixed to options.
-
-2020-10-26 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/cprophard.c: Add -mno-pcrel to options.
- * gcc.target/powerpc/float128-hw3.c: Likewise.
- * gcc.target/powerpc/pr79439-1.c: Likewise.
- * gcc.target/powerpc/pr79439-2.c: Likewise.
- * gcc.target/powerpc/r2_shrink-wrap.c: Likewise.
-
-2020-10-26 Andrew MacLeod <amacleod@redhat.com>
-
- * gcc.dg/pr97567.c: New.
-
-2020-10-26 Aldy Hernandez <aldyh@redhat.com>
-
- * gcc.dg/pr97555.c: New test.
-
-2020-10-26 Ville Voutilainen <ville.voutilainen@gmail.com>
-
- * g++.dg/ext/is_nothrow_constructible1.C: New file.
- * g++.dg/ext/is_nothrow_constructible2.C: New file.
- * g++.dg/ext/is_nothrow_constructible3.C: New file.
- * g++.dg/ext/is_nothrow_constructible4.C: New file.
- * g++.dg/ext/is_nothrow_constructible5.C: New file.
- * g++.dg/ext/is_nothrow_constructible6.C: New file.
-
-2020-10-26 Jan Hubicka <jh@suse.cz>
-
- PR ipa/97576
- * gcc.c-torture/compile/pr97576.c: New test.
-
-2020-10-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
-
- PR tree-optimization/97546
- * gcc.target/aarch64/sve/acle/general/pr97546.c: New test.
-
-2020-10-26 Richard Biener <rguenther@suse.de>
-
- PR middle-end/97521
- * gcc.target/i386/pr97521.c: New testcase.
-
-2020-10-26 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/95458
- * gcc.target/i386/pr95458-1.c: New test.
- * gcc.target/i386/pr95458-2.c: Likewise.
-
-2020-10-26 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/95151
- * gcc.target/i386/pr95151-1.c: New test.
- * gcc.target/i386/pr95151-2.c: Likewise.
- * gcc.target/i386/pr95151-3.c: Likewise.
- * gcc.target/i386/pr95151-4.c: Likewise.
-
-2020-10-26 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97539
- * gcc.dg/pr97539.c: New testcase.
-
-2020-10-26 Arnaud Charlet <charlet@adacore.com>
-
- * gnat.dg/warn14.adb: Update expectations.
-
-2020-10-24 Marek Polacek <polacek@redhat.com>
-
- PR c++/96241
- * g++.dg/cpp0x/constexpr-96241.C: New test.
- * g++.dg/cpp1y/constexpr-96241.C: New test.
-
-2020-10-24 Aldy Hernandez <aldyh@redhat.com>
-
- * g++.dg/pr97538.C: New test.
-
-2020-10-23 Marek Polacek <polacek@redhat.com>
-
- * c-c++-common/Wsizeof-array-div1.c: Expect certain warnings on
- lp64 targets only.
- * g++.dg/warn/Wsizeof-array-div2.C: Only run on lp64 targets.
-
-2020-10-23 Marek Polacek <polacek@redhat.com>
-
- PR c++/91741
- * c-c++-common/Wsizeof-pointer-div.c: Add dg-warning.
- * c-c++-common/Wsizeof-array-div1.c: New test.
- * g++.dg/warn/Wsizeof-array-div1.C: New test.
- * g++.dg/warn/Wsizeof-array-div2.C: New test.
-
-2020-10-23 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/97552
- * gcc.dg/Wvla-parameter-2.c: Adjust text of expected warning.
- * gcc.dg/Wnonnull-5.c: New test.
-
-2020-10-23 Martin Sebor <msebor@redhat.com>
-
- PR c/97463
- * gcc.dg/pr97463.c: New test.
-
-2020-10-23 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/vec-rlmi-rlnm.c: Update xxlor expect.
-
-2020-10-23 Jonathan Wakely <jwakely@redhat.com>
-
- * g++.dg/compat/eh/filter2_y.C: Add noexcept(false) to
- destructor.
-
-2020-10-23 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/97164
- * c-c++-common/pr97164.c: New test.
- * gcc.c-torture/execute/pr36093.c: Move ...
- * gcc.dg/pr36093.c: ... here. Add dg-do compile and dg-error
- directives.
- * gcc.c-torture/execute/pr43783.c: Move ...
- * gcc.dg/pr43783.c: ... here. Add dg-do compile, dg-options and
- dg-error directives.
-
-2020-10-23 Dennis Zhang <dennis.zhang@arm.com>
-
- * gcc.target/arm/simd/mve-vsub_1.c: New test.
-
-2020-10-23 Richard Biener <rguenther@suse.de>
-
- Revert:
- 2020-10-23 Richard Biener <rguenther@suse.de>
-
- PR middle-end/97521
- * gcc.target/i386/pr97521.c: New testcase.
-
-2020-10-22 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/vec-splati-runnable.c: Don't abort on
- undefined output.
-
-2020-10-22 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/rlwimi-2.c: Adjust expected results for lp64.
- * gcc.target/powerpc/vec-rlmi-rlnm.c: Remove target and LP64.
- Adjust xxlor expected results.
-
-2020-10-22 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/flush-1.f90: New test.
- * gfortran.dg/gomp/flush-2.f90: New test.
-
-2020-10-22 Will Schmidt <will_schmidt@vnet.ibm.com>
-
- * gcc.target/powerpc/vsx-load-element-extend-char.c: New test.
- * gcc.target/powerpc/vsx-load-element-extend-int.c: New test.
- * gcc.target/powerpc/vsx-load-element-extend-longlong.c: New test.
- * gcc.target/powerpc/vsx-load-element-extend-short.c: New test.
- * gcc.target/powerpc/vsx-store-element-truncate-char.c: New test.
- * gcc.target/powerpc/vsx-store-element-truncate-int.c: New test.
- * gcc.target/powerpc/vsx-store-element-truncate-longlong.c: New test.
- * gcc.target/powerpc/vsx-store-element-truncate-short.c: New test.
-
-2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
-
- * ada/acats/run_all.sh: Define and substitute target_{max,min}_int.
- * ada/acats/support/macro.dfs: Parameterize {MAX,MIN}_INT.
- * gnat.dg/assert1.adb: Adjust conditionally to 128-bit integer types.
- * gnat.dg/size_clause1.adb: Do not expect a warning for LP64 targets.
- * gnat.dg/warn11.adb: Likewise.
- * gnat.dg/specs/rep_clause5.ads (Array_2_Type): Add alignment clause.
-
-2020-10-22 Patrick Palka <ppalka@redhat.com>
-
- PR c++/97328
- * g++.dg/cpp2a/constexpr-init19.C: New test.
- * g++.dg/cpp2a/constexpr-init20.C: New test.
-
-2020-10-22 Patrick Palka <ppalka@redhat.com>
-
- PR c++/96575
- * g++.dg/cpp1z/constexpr-96575.C: New test.
-
-2020-10-22 Patrick Palka <ppalka@redhat.com>
-
- PR c++/97511
- * g++.dg/template/shadow3.C: New test.
-
-2020-10-22 Richard Biener <rguenther@suse.de>
-
- PR middle-end/97521
- * gcc.target/i386/pr97521.c: New testcase.
-
-2020-10-22 Andreas Krebbel <krebbel@linux.ibm.com>
-
- * gcc.dg/pr97502.c: New test.
-
-2020-10-22 Andreas Krebbel <krebbel@linux.ibm.com>
-
- * gcc.dg/dfp/pr97439.c: New test.
-
-2020-10-22 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/97514
- * gcc.dg/analyzer/pr97514.c: New test.
-
-2020-10-22 David Malcolm <dmalcolm@redhat.com>
-
- * g++.dg/analyzer/ctor-dtor-1.C: New test.
- * g++.dg/analyzer/dyncast-1.C: New test.
- * g++.dg/analyzer/vfunc-1.C: New test.
-
-2020-10-22 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/97489
- * g++.dg/analyzer/pr97489.C: New test.
-
-2020-10-22 Martin Liska <mliska@suse.cz>
-
- PR c/94722
- * g++.dg/no-stack-protector-attr-2.C: New test.
- * g++.dg/no-stack-protector-attr-3.C: New test.
- * g++.dg/no-stack-protector-attr.C: New test.
-
-2020-10-22 liuhongt <hongtao.liu@intel.com>
-
- * gcc.target/i386/pr97249-1.c: New test.
-
-2020-10-22 Andrew MacLeod <amacleod@redhat.com>
-
- * gcc.dg/pr97520.c: New.
-
-2020-10-22 Dennis Zhang <dennis.zhang@arm.com>
-
- * gcc.target/arm/simd/mve-vmul_1.c: New test.
-
-2020-10-22 Andrew MacLeod <amacleod@redhat.com>
-
- PR tree-optimization/97515
- * gcc.dg/pr97515.c: New file.
-
-2020-10-21 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/fold-vec-extract-float.p9.c: rldicl and
- subfic only for target LE.
- * gcc.target/powerpc/fold-vec-extract-longlong.p9.c: xori only
- for target LE. Adjust mfvsrd and add mfvsrld for BE.
- * gcc.target/powerpc/fold-vec-extract-short.p9.c: vextuhrx for LE.
- vextuhlx for BE.
- * gcc.target/powerpc/p9-lxvx-stxvx-1.c: Remove target.
- * gcc.target/powerpc/p9-lxvx-stxvx-2.c: Remove target.
- * gcc.target/powerpc/p9-lxvx-stxvx-3.c: Remove target. Require
- float128
-
-2020-10-21 Martin Liska <mliska@suse.cz>
- Andrew MacLeod <amacleod@redhat.com>
-
- PR target/97360
- * gcc.target/powerpc/pr97360.c: New test.
-
-2020-10-21 Jan Hubicka <jh@suse.cz>
-
- PR ipa/97445
- * gcc.dg/ipa/inlinehint-5.c: New test.
-
-2020-10-21 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/p9-extract-1.c: Require lp64.
- * gcc.target/powerpc/p9-extract-2.c: Require lp64.
- * gcc.target/powerpc/p9-extract-3.c: Require lp64.
- * gcc.target/powerpc/p9-permute.c: Remove target.
- * gcc.target/powerpc/pr63335.c: Remove target.
- * gcc.target/powerpc/pr87507.c: Remove target.
- * gcc.target/powerpc/swaps-p8-1.c: Require LE and P8.
- * gcc.target/powerpc/swaps-p8-10.c: Remove target. Require P8.
- * gcc.target/powerpc/swaps-p8-11.c: Remove target. Require P8.
- * gcc.target/powerpc/swaps-p8-12.c: Require LE and P8.
- * gcc.target/powerpc/swaps-p8-13.c: Remove target. Require P8.
- * gcc.target/powerpc/swaps-p8-14.c: Remove target. Require P8.
- * gcc.target/powerpc/swaps-p8-15.c: Remove target. Require P8.
- * gcc.target/powerpc/swaps-p8-16.c: Remove target. Require P8.
- * gcc.target/powerpc/swaps-p8-17.c: Require P8.
- * gcc.target/powerpc/swaps-p8-18.c: Remove target. Require P8.
- * gcc.target/powerpc/swaps-p8-19.c: Remove target. Require P8.
- * gcc.target/powerpc/swaps-p8-2.c: Require LE and P8.
- * gcc.target/powerpc/swaps-p8-20.c: Remove target.
- * gcc.target/powerpc/swaps-p8-21.c: Remove target. Require Altivec.
- * gcc.target/powerpc/swaps-p8-22.c: Remove target. Require P8.
- * gcc.target/powerpc/swaps-p8-23.c: Require LE and P8.
- * gcc.target/powerpc/swaps-p8-24.c: Remove target. Require P8.
- * gcc.target/powerpc/swaps-p8-25.c: Require LE and P8.
- * gcc.target/powerpc/swaps-p8-26.c: Remove target. Require P8.
- * gcc.target/powerpc/swaps-p8-27.c: Remove target. Require P8.
- * gcc.target/powerpc/swaps-p8-28.c: Remove target.
- * gcc.target/powerpc/swaps-p8-29.c: Remove target.
- * gcc.target/powerpc/swaps-p8-3.c: Require LE and P8.
- * gcc.target/powerpc/swaps-p8-30.c: Remove target.
- * gcc.target/powerpc/swaps-p8-31.c: Remove target.
- * gcc.target/powerpc/swaps-p8-32.c: Remove target.
- * gcc.target/powerpc/swaps-p8-33.c: Remove target.
- * gcc.target/powerpc/swaps-p8-34.c: Remove target.
- * gcc.target/powerpc/swaps-p8-35.c: Remove target.
- * gcc.target/powerpc/swaps-p8-36.c: Remove target.
- * gcc.target/powerpc/swaps-p8-37.c: Remove target.
- * gcc.target/powerpc/swaps-p8-38.c: Remove target.
- * gcc.target/powerpc/swaps-p8-39.c: Remove target.
- * gcc.target/powerpc/swaps-p8-4.c: Require LE and P8.
- * gcc.target/powerpc/swaps-p8-40.c: Remove target.
- * gcc.target/powerpc/swaps-p8-41.c: Remove target.
- * gcc.target/powerpc/swaps-p8-42.c: Remove target.
- * gcc.target/powerpc/swaps-p8-43.c: Remove target.
- * gcc.target/powerpc/swaps-p8-44.c: Remove target.
- * gcc.target/powerpc/swaps-p8-45.c: Remove target.
- * gcc.target/powerpc/swaps-p8-46.c: Require LE.
- * gcc.target/powerpc/swaps-p8-5.c: Require LE and P8.
- * gcc.target/powerpc/swaps-p8-6.c: Remove target. Require P8.
- * gcc.target/powerpc/swaps-p8-7.c: Remove target. Require P8.
- * gcc.target/powerpc/swaps-p8-8.c: Remove target. Require P8.
- * gcc.target/powerpc/swaps-p8-9.c: Remove target. Require P8.
- * gcc.target/powerpc/vec-cmp.c: Require LP64.
- * gcc.target/powerpc/vec-cmpne.c: Remove target.
- * gcc.target/powerpc/vec-mul.c: Remove target.
- * gcc.target/powerpc/vec-set-char.c: Require LP64.
- * gcc.target/powerpc/vec-set-int.c: Require LP64.
- * gcc.target/powerpc/vec-set-short.c: Require LP64.
- * gcc.target/powerpc/vec-xxpermdi.c: Remove target. Require VSX.
- * gcc.target/powerpc/vsxcopy.c: Remove target. Require VSX.
-
-2020-10-21 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97500
- * gfortran.dg/pr97500.f90: New testcase.
-
-2020-10-21 liuhongt <hongtao.liu@intel.com>
-
- PR target/97506
- * gcc.target/i386/pr97506.c: New test.
-
-2020-10-21 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/97503
- * gcc.dg/tree-ssa/pr97503.c: New test.
-
-2020-10-21 Martin Liska <mliska@suse.cz>
-
- PR sanitizer/97414
- * g++.dg/asan/pr97414.C: New test.
-
-2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/multfixed.adb: Update expected exception message.
-
-2020-10-21 Andrea Corallo <andrea.corallo@arm.com>
-
- * gcc.target/aarch64/advsimd-intrinsics/vstX_lane.c (CMT):
- Adopt the same style used in the rest of the file.
-
-2020-10-21 Aldy Hernandez <aldyh@redhat.com>
-
- * gcc.dg/Walloca-1.c: Adjust for 32-bits.
-
-2020-10-22 Dennis Zhang <dennis.zhang@arm.com>
-
- * gcc.target/arm/simd/mve-vminmax_1.c: New test.
-
-2020-10-20 Jeff Law <law@redhat.com>
-
- * gcc.dg/Wbuiltin-declaration-mismatch-9.c: Improve pruning of
- invalid scanf call messages.
-
-2020-10-20 Andrew MacLeod <amacleod@redhat.com>
-
- PR tree-optimization/97505
- * gfortran.dg/pr97505.f90: New file.
-
-2020-10-20 Nathan Sidwell <nathan@acm.org>
-
- * g++.dg/lookup/local-extern.C: New.
-
-2020-10-20 Aldy Hernandez <aldyh@redhat.com>
-
- * gcc.dg/Wrestrict-22.c: New test.
- * g++.dg/torture/pr92421.C: Adjust for ranger.
-
-2020-10-20 Aldy Hernandez <aldyh@redhat.com>
-
- * gcc.dg/Walloca-1.c: Adjust for ranger.
- * gcc.dg/Walloca-12.c: Same.
- * gcc.dg/Walloca-13.c: Same.
- * gcc.dg/Walloca-2.c: Same.
- * gcc.dg/Walloca-3.c: Same.
- * gcc.dg/Walloca-6.c: Same.
- * gcc.dg/Wvla-larger-than-2.c: Same.
-
-2020-10-20 Tobias Burnus <tobias@codesourcery.com>
-
- * gcc.misc-tests/outputs.exp: Add ltrans_args dump files
- for 'lto save-temps'.
-
-2020-10-20 Aldy Hernandez <aldyh@redhat.com>
-
- * gcc.dg/pr97501.c: New test.
-
-2020-10-20 Nathan Sidwell <nathan@acm.org>
-
- * gcc.dg/cpp/endif.c: Move to ...
- * c-c++-common/cpp/endif.c: ... here.
- * gcc.dg/cpp/endif.h: Move to ...
- * c-c++-common/cpp/endif.h: ... here.
- * c-c++-common/cpp/eof-2.c: Adjust diagnostic.
- * c-c++-common/cpp/eof-3.c: Adjust diagnostic.
-
-2020-10-20 Marek Polacek <polacek@redhat.com>
-
- PR c++/82239
- * g++.dg/cpp0x/static_assert16.C: New test.
-
-2020-10-20 Arnaud Charlet <charlet@adacore.com>
-
- * gnat.dg/opt11.adb: Add new expected warning.
-
-2020-10-20 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97496
- * gcc.dg/vect/bb-slp-pr97496.c: New testcase.
-
-2020-10-20 Aldy Hernandez <aldyh@redhat.com>
-
- * gcc.dg/pr97488.c: Add target int128 predicate.
-
-2020-10-19 Andrew MacLeod <amacleod@redhat.com>
-
- * gcc.dg/pr97360-2.c: New test.
-
-2020-10-19 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/sad-vectorize-1.c: Remove target.
- * gcc.target/powerpc/sad-vectorize-2.c: Remove target.
- * gcc.target/powerpc/vec-extract-v16qi-df.c: Remove target.
- * gcc.target/powerpc/vec-extract-v16qi.c: Remove target.
- * gcc.target/powerpc/vec-extract-v16qiu-df.c: Remove target.
- * gcc.target/powerpc/vec-extract-v16qiu.c: Remove target.
- * gcc.target/powerpc/vec-extract-v2df.c: Remove target.
- * gcc.target/powerpc/vec-extract-v2di.c: Require lp64.
- * gcc.target/powerpc/vec-extract-v4sf.c: Remove target.
- * gcc.target/powerpc/vec-extract-v4si-df.c: Remove target.
- * gcc.target/powerpc/vec-extract-v4si.c: Remove target.
- * gcc.target/powerpc/vec-extract-v4siu-df.c: Remove target.
- * gcc.target/powerpc/vec-extract-v4siu.c: Remove target.
- * gcc.target/powerpc/vec-extract-v8hi-df.c: Remove target.
- * gcc.target/powerpc/vec-extract-v8hi.c: Remove target.
- * gcc.target/powerpc/vec-extract-v8hiu-df.c: Remove target.
- * gcc.target/powerpc/vec-extract-v8hiu.c: Remove target.
- * gcc.target/powerpc/vec-init-1.c: Remove target.
- * gcc.target/powerpc/vec-init-2.c: Require lp64.
- * gcc.target/powerpc/vec-init-3.c: Require lp64.
- * gcc.target/powerpc/vec-init-4.c: Remove target.
- * gcc.target/powerpc/vec-init-5.c: Remove target.
- * gcc.target/powerpc/vec-init-6.c: Require lp64.
- * gcc.target/powerpc/vec-init-7.c: Require lp64.
- * gcc.target/powerpc/vec-init-8.c: Remove target.
- * gcc.target/powerpc/vec-init-9.c: Require lp64.
- * gcc.target/powerpc/vec-setup-double.c: Remove target.
- * gcc.target/powerpc/vec-setup-long.c: Remove target.
- * gcc.target/powerpc/vsu/vec-xl-len-13.c: Correct expected warnings.
- * gcc.target/powerpc/vsu/vsu.exp: Enable on AIX.
-
-2020-10-19 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/fold-vec-extract-char.p7.c: Remove target.
- * gcc.target/powerpc/fold-vec-extract-char.p8.c: Remove target.
- * gcc.target/powerpc/fold-vec-extract-char.p9.c: Remove target.
- Expect 3 addi for ilp32.
- * gcc.target/powerpc/fold-vec-extract-double.p7.c: Remove target.
- Add -mbig-endian for Linux.
- * gcc.target/powerpc/fold-vec-extract-double.p8.c: Remove target.
- * gcc.target/powerpc/fold-vec-extract-float.p7.c: Remove target.
- * gcc.target/powerpc/fold-vec-extract-float.p8.c: Remove target.
- * gcc.target/powerpc/fold-vec-extract-float.p9.c: Require lp64.
- * gcc.target/powerpc/fold-vec-extract-int.p7.c: Remove target.
- * gcc.target/powerpc/fold-vec-extract-int.p8.c: Remove target.
- * gcc.target/powerpc/fold-vec-extract-int.p9.c: Remove target.
- Expect 3 addi for ilp32.
- * gcc.target/powerpc/fold-vec-extract-longlong.p7.c: Remove target.
- Expect 4 addi for ilp32.
- * gcc.target/powerpc/fold-vec-extract-longlong.p8.c: Remove target.
- Expect 4 addi for ilp32.
- * gcc.target/powerpc/fold-vec-extract-longlong.p9.c: Require lp64.
- * gcc.target/powerpc/fold-vec-extract-short.p7.c: Remove target.
- * gcc.target/powerpc/fold-vec-extract-short.p8.c: Remove target.
- * gcc.target/powerpc/fold-vec-extract-short.p9.c: Require lp64.
- * gcc.target/powerpc/fold-vec-insert-char-p8.c: Remove target.
- * gcc.target/powerpc/fold-vec-insert-char-p9.c: Remove target.
- * gcc.target/powerpc/fold-vec-insert-double.c: Remove target.
- * gcc.target/powerpc/fold-vec-insert-float-p8.c: Remove target.
- * gcc.target/powerpc/fold-vec-insert-float-p9.c: Remove target.
- * gcc.target/powerpc/fold-vec-insert-int-p8.c: Remove target.
- * gcc.target/powerpc/fold-vec-insert-int-p9.c: Remove target.
- Require 8 addi for ilp32.
- * gcc.target/powerpc/fold-vec-insert-longlong.c: Remove target.
- * gcc.target/powerpc/fold-vec-insert-short-p8.c: Remove target.
- * gcc.target/powerpc/fold-vec-insert-short-p9.c: Remove target.
- * gcc.target/powerpc/fold-vec-select-double.c: Remove target.
- * gcc.target/powerpc/fold-vec-select-float.c: Remove target.
- * gcc.target/powerpc/fold-vec-splats-int.c: Require lp64.
- * gcc.target/powerpc/fold-vec-splats-longlong.c: Require lp64.
-
-2020-10-19 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/97438
- * g++.dg/coroutines/pr97438.C: New test.
-
-2020-10-19 Martin Jambor <mjambor@suse.cz>
-
- PR tree-optimization/97456
- * gcc.dg/tree-ssa/pr97456.c: New test.
-
-2020-10-19 Nathan Sidwell <nathan@acm.org>
-
- * c-c++-common/cpp/pr97471.c: New.
-
-2020-10-19 Aldy Hernandez <aldyh@redhat.com>
-
- * gcc.dg/pr97488.c: New test.
-
-2020-10-19 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97486
- * gcc.dg/vect/bb-slp-pr97486.c: New testcase.
-
-2020-10-19 Aldy Hernandez <aldyh@redhat.com>
-
- * gcc.dg/pr97467.c: New test.
-
-2020-10-19 Li Jia He <helijia@gcc.gnu.org>
-
- PR tree-optimization/66552
- * gcc.dg/pr66552.c: New testcase.
-
-2020-10-18 Harald Anlauf <anlauf@gmx.de>
-
- * gfortran.dg/matmul_20.f90: New test.
-
-2020-10-17 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/p9-dimode1.c: Remove target.
- * gcc.target/powerpc/p9-dimode2.c: Remove target.
- * gcc.target/powerpc/p9-fpcvt-1.c: Remove target.
- * gcc.target/powerpc/p9-fpcvt-2.c: Require lp64.
- * gcc.target/powerpc/p9-minmax-1.c: Remove target.
- * gcc.target/powerpc/p9-minmax-2.c: Remove target.
- * gcc.target/powerpc/p9-minmax-3.c: Remove target.
- * gcc.target/powerpc/p9-splat-1.c: Require lp64.
- * gcc.target/powerpc/p9-splat-2.c: Remove target.
- * gcc.target/powerpc/p9-splat-3.c: Remove target.
- * gcc.target/powerpc/p9-splat-4.c: Require lp64.
- * gcc.target/powerpc/p9-vbpermd.c: Require lp64.
- * gcc.target/powerpc/p9-vneg.c: Require lp64.
- * gcc.target/powerpc/p9-vparity.c: Require lp64.
- * gcc.target/powerpc/p9-vpermr.c: Require LE.
- * gcc.target/powerpc/p9-xxbr-1.c: Remove target.
- * gcc.target/powerpc/p9-xxbr-2.c: Require lp64.
- * gcc.target/powerpc/p9-xxbr-3.c: Require lp64.
-
-2020-10-17 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/builtins-3-p9.c: Remove le.
-
-2020-10-17 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/pr96139-a.c: Remove -m32.
- * gcc.target/powerpc/pr96139-b.c: Remove -m64.
-
-2020-10-16 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95979
- * gfortran.dg/index_4.f90: New test.
-
-2020-10-16 Andrew MacLeod <amacleod@redhat.com>
-
- PR tree-optimization/97462
- * gcc.dg/pr97462.c: New file.
-
-2020-10-16 Nathan Sidwell <nathan@acm.org>
-
- PR c++/97460
- * g++.dg/template/pr97460.C: New.
-
-2020-10-16 Nathan Sidwell <nathan@acm.org>
-
- PR c++/96258
- * g++.dg/parse/pr96258.C: New.
-
-2020-10-16 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- PR target/97327
- * gcc.target/arm/mve/intrinsics/pr97327.c: New test.
-
-2020-10-16 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/bb-slp-53.c: New testcase.
-
-2020-10-16 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- PR target/97291
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_s64.c: Modify.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_u64.c:
+ * gcc.target/aarch64/advsimd-intrinsics/vqdmull_n.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqmovn.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqmovun.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqneg.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh.inc: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh_lane.inc:
Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_f32.c:
+ * gcc.target/aarch64/advsimd-intrinsics/vqrdmlah.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqrdmlah_lane.c:
Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_s32.c:
+ * gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh_lane.c:
Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_u32.c:
+ * gcc.target/aarch64/advsimd-intrinsics/vqrdmulh.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_lane.c:
Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_u32.c: Likewise.
-
-2020-10-16 Jan Hubicka <jh@suse.cz>
-
- PR testsuite/97426
- * gcc.dg/tree-ssa/modref-4.c: Fix return test.
-
-2020-10-16 Martin Liska <mliska@suse.cz>
-
- PR ipa/97404
- * gcc.c-torture/execute/pr97404.c: New test.
-
-2020-10-16 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97428
- * gcc.dg/vect/vect-complex-5.c: Expect to SLP.
- * gcc.dg/vect/pr97428.c: Likewise.
-
-2020-10-15 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/builtins-1-p9-runnable.c: Adjust for big endian.
- * gcc.target/powerpc/builtins-7-p9-runnable.c: Same.
-
-2020-10-15 Jason Merrill <jason@redhat.com>
-
- PR c++/95844
- * g++.dg/cpp2a/spaceship-eq10.C: New test.
-
-2020-10-15 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/builtins-5-p9-runnable.c: Require lp64.
- * gcc.target/powerpc/builtins-msum-runnable.c: Require int128.
- * gcc.target/powerpc/float128-cmp2-runnable.c: Require float128.
- * gcc.target/powerpc/fold-vec-extract-double.p9.c: Require lp64.
-
-2020-10-15 Marek Polacek <polacek@redhat.com>
-
- PR c++/97406
- PR c++/85901
- * g++.dg/diagnostic/ptrtomem1.C: New test.
- * g++.dg/diagnostic/ptrtomem2.C: New test.
-
-2020-10-15 Tom de Vries <tdevries@suse.de>
-
- * gcc.dg/atomic/c11-atomic-exec-6.c: Xfail execution for nvptx.
- * gcc.dg/atomic/c11-atomic-exec-7.c: Same.
- * gcc.dg/atomic/stdatomic-op-5.c: Same.
-
-2020-10-15 Tom de Vries <tdevries@suse.de>
-
- PR target/97436
- * gcc.target/nvptx/atomic_fetch-3.c: Remove.
-
-2020-10-15 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/bb-slp-52.c: New testcase.
-
-2020-10-15 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97482
- * gcc.dg/vect/pr97428.c: New testcase.
-
-2020-10-15 Tom de Vries <tdevries@suse.de>
-
- * gcc.dg/tree-ssa/pr84512.c: Remove xfail for nvptx.
-
-2020-10-15 Tom de Vries <tdevries@suse.de>
-
- * c-c++-common/ident-0b.c: Require effective target ident_directive.
-
-2020-10-15 Tom de Vries <tdevries@suse.de>
-
- * gcc.c-torture/compile/limits-externdecl.c: Remove dg-skip-if for
- nvptx.
-
-2020-10-15 Tom de Vries <tdevries@suse.de>
-
- * gcc.dg/attr-alloc_size-11.c: Don't xfail for nvptx.
- * gcc.dg/tree-ssa/20040204-1.c: Same.
-
-2020-10-15 Tom de Vries <tdevries@suse.de>
-
- * gcc.c-torture/execute/pr68185.c: Remove dg-skip-if for nvptx.
-
-2020-10-15 Tom de Vries <tdevries@suse.de>
-
- * gcc.c-torture/execute/981019-1.c: Remove dg-skip-if for nvptx.
-
-2020-10-15 Tom de Vries <tdevries@suse.de>
-
- * gcc.c-torture/compile/pr42717.c: Remove nvptx xfail.
- * gcc.c-torture/compile/pr61684.c: Same.
- * gcc.c-torture/execute/pr20601-1.c: Same.
- * gcc.c-torture/execute/pr52129.c: Same.
- * gcc.c-torture/execute/pr59221.c: Same.
- * gcc.dg/pr68671.c: Same.
-
-2020-10-15 Jakub Jelinek <jakub@redhat.com>
-
- * gcc.dg/ipa/modref-1.c: Remove space between param offset: and number
- in scan-ipa-dump.
- (b): Declare return type to void.
- (main): Declare return type to int. Change c to array of 3 chars.
- * gcc.dg/tree-ssa/modref-4.c: Remove space between param offset: and
- number in scan-ipa-dump. Use modref1 instead of modref2.
- (b): Declare return type to void.
- (main): Declare return type to int. Change c to array of 3 chars.
-
-2020-10-15 Kito Cheng <kito.cheng@sifive.com>
-
- * gcc.target/riscv/mcpu-1.c: New.
- * gcc.target/riscv/mcpu-2.c: Ditto.
- * gcc.target/riscv/mcpu-3.c: Ditto.
- * gcc.target/riscv/mcpu-4.c: Ditto.
- * gcc.target/riscv/mcpu-5.c: Ditto.
- * gcc.target/riscv/mcpu-6.c: Ditto.
- * gcc.target/riscv/mcpu-7.c: Ditto.
-
-2020-10-15 Hongyu Wang <hongyu.wang@intel.com>
-
- * gcc.target/i386/hreset-1.c: New test.
- * gcc.target/i386/funcspec-56.inc: Add new target attribute.
- * gcc.target/i386/x86gprintrin-1.c: Add -mhreset.
- * gcc.target/i386/x86gprintrin-2.c: Ditto.
- * gcc.target/i386/x86gprintrin-3.c: Ditto.
- * gcc.target/i386/x86gprintrin-4.c: Add mhreset.
- * gcc.target/i386/x86gprintrin-5.c: Ditto.
-
-2020-10-15 Hongtao Liu <hongtao.liu@intel.com>
-
- * gcc.target/i386/funcspec-56.inc: Add new target attribute.
- * gcc.target/i386/uintr-1.c: New test.
- * gcc.target/i386/uintr-2.c: Ditto.
- * gcc.target/i386/uintr-3.c: Ditto.
- * gcc.target/i386/uintr-4.c: Ditto.
- * gcc.target/i386/uintr-5.c: Ditto.
- * gcc.target/i386/x86gprintrin-1.c: Add -muintr for 64bit target.
- * gcc.target/i386/x86gprintrin-2.c: Ditto.
- * gcc.target/i386/x86gprintrin-3.c: Ditto.
- * gcc.target/i386/x86gprintrin-4.c: Add muintr for 64bit target.
- * gcc.target/i386/x86gprintrin-5.c: Ditto.
-
-2020-10-14 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/97391
- * gcc.dg/Warray-bounds-68.c: New test.
-
-2020-10-14 Martin Sebor <msebor@redhat.com>
-
- PR c/97413
- * gcc.dg/Wvla-parameter-8.c: New test.
-
-2020-10-14 Tom de Vries <tdevries@suse.de>
-
- * lib/target-supports.exp (check_compile): Save and restore
- $compiler_flags when calling ${tool}_target_compile.
-
-2020-10-14 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93388
- * gcc.dg/analyzer/data-model-21.c: New test.
-
-2020-10-14 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/97394
- * gcc.dg/analyzer/setjmp-pr93378.c: Use test-setjmp.h rather than
- <setjmp.h>.
- * gcc.dg/analyzer/sigsetjmp-5.c: Likewise.
- * gcc.dg/analyzer/sigsetjmp-6.c: Likewise.
- * gcc.dg/analyzer/test-setjmp.h: Don't include <setjmp.h>.
- Provide decls of jmp_buf, sigjmp_buf, setjmp, sigsetjmp,
- longjmp, and siglongjmp.
-
-2020-10-14 Jason Merrill <jason@redhat.com>
-
- PR c++/97358
- * g++.dg/cpp0x/lambda/lambda-variadic11.C: New test.
-
-2020-10-14 Sunil K Pandey <skpgkp2@gmail.com>
-
- PR target/95483
- * gcc.target/i386/avx-1.c: Add test.
- * gcc.target/i386/avx2-vbroadcastsi128-1.c: Ditto.
- * gcc.target/i386/avx2-vbroadcastsi128-2.c: Ditto.
- * gcc.target/i386/avx512bw-vmovdqu16-1.c: Ditto.
- * gcc.target/i386/avx512bw-vmovdqu8-1.c: Ditto.
- * gcc.target/i386/avx512dq-vreducesd-1.c: Ditto.
- * gcc.target/i386/avx512dq-vreducesd-2.c: Ditto.
- * gcc.target/i386/avx512dq-vreducess-1.c: Ditto.
- * gcc.target/i386/avx512dq-vreducess-2.c: Ditto.
- * gcc.target/i386/avx512er-vrcp28sd-1.c: Ditto.
- * gcc.target/i386/avx512er-vrcp28sd-2.c: Ditto.
- * gcc.target/i386/avx512er-vrcp28ss-1.c: Ditto.
- * gcc.target/i386/avx512er-vrcp28ss-2.c: Ditto.
- * gcc.target/i386/avx512er-vrsqrt28sd-1.c: Ditto.
- * gcc.target/i386/avx512er-vrsqrt28sd-2.c: Ditto.
- * gcc.target/i386/avx512er-vrsqrt28ss-1.c: Ditto.
- * gcc.target/i386/avx512er-vrsqrt28ss-2.c: Ditto.
- * gcc.target/i386/avx512f-vcvtsd2si-1.c: Ditto.
- * gcc.target/i386/avx512f-vcvtsd2si64-1.c: Ditto.
- * gcc.target/i386/avx512f-vcvtsd2ss-1.c: Ditto.
- * gcc.target/i386/avx512f-vcvtsi2sd64-1.c: Ditto.
- * gcc.target/i386/avx512f-vcvtsi2ss-1.c: Ditto.
- * gcc.target/i386/avx512f-vcvtsi2ss64-1.c: Ditto.
- * gcc.target/i386/avx512f-vcvtss2sd-1.c: Ditto.
- * gcc.target/i386/avx512f-vcvtss2si-1.c: Ditto.
- * gcc.target/i386/avx512f-vcvtss2si64-1.c: Ditto.
- * gcc.target/i386/avx512f-vscalefsd-1.c: Ditto.
- * gcc.target/i386/avx512f-vscalefsd-2.c: Ditto.
- * gcc.target/i386/avx512f-vscalefss-1.c: Ditto.
- * gcc.target/i386/avx512f-vscalefss-2.c: Ditto.
- * gcc.target/i386/avx512f-vsqrtsd-1.c: Ditto.
- * gcc.target/i386/avx512f-vsqrtsd-2.c: Ditto.
- * gcc.target/i386/avx512f-vsqrtss-1.c: Ditto.
- * gcc.target/i386/avx512f-vsqrtss-2.c: Ditto.
- * gcc.target/i386/avx512vl-vmovdqa32-1.c: Ditto.
- * gcc.target/i386/avx512vl-vmovdqa64-1.c: Ditto.
- * gcc.target/i386/sse-13.c: Ditto.
- * gcc.target/i386/sse-23.c: Ditto.
- * gcc.target/i386/avx512dq-vreducepd-3.c: New test.
- * gcc.target/i386/avx512dq-vreducepd-4.c: New test.
- * gcc.target/i386/avx512dq-vreduceps-3.c: New test.
- * gcc.target/i386/avx512dq-vreduceps-4.c: New test.
- * gcc.target/i386/avx512f-vcvtsi2sd-1.c: New test.
- * gcc.target/i386/pr95483-1.c: New test.
- * gcc.target/i386/pr95483-2.c: New test.
- * gcc.target/i386/pr95483-3.c: New test.
- * gcc.target/i386/pr95483-4.c: New test.
- * gcc.target/i386/pr95483-5.c: New test.
- * gcc.target/i386/pr95483-6.c: New test.
- * gcc.target/i386/pr95483-7.c: New test.
-
-2020-10-14 Jakub Jelinek <jakub@redhat.com>
-
- PR target/97387
- * gcc.target/i386/pr97387-1.c: New test.
- * gcc.target/i386/pr97387-2.c: New test.
-
-2020-10-14 Aldy Hernandez <aldyh@redhat.com>
-
- * gcc.dg/pr97396.c: New test.
-
-2020-10-14 Jan Hubicka <jh@suse.cz>
-
- * gcc.dg/ipa/modref-1.c: New test.
- * gcc.dg/tree-ssa/modref-4.c: New test.
-
-2020-10-14 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/97390
- * gfortran.dg/goacc/warn_truncated.f90: New test.
-
-2020-10-14 Nathan Sidwell <nathan@acm.org>
-
- * g++.dg/lookup/extern-redecl2.C: New.
-
-2020-10-14 Steven G. Kargl <kargl@gcc.gnu.org>
- Mark Eggleston <markeggleston@gcc.gnu.org>
-
- PR fortran/95614
- * gfortran.dg/pr95614_1.f90: New test.
- * gfortran.dg/pr95614_2.f90: New test.
- * gfortran.dg/pr95614_3.f90: New test.
- * gfortran.dg/pr95614_4.f90: New test.
-
-2020-10-14 Kito Cheng <kito.cheng@sifive.com>
-
- PR target/96759
- * g++.target/riscv/pr96759.C: New.
- * gcc.target/riscv/pr96759.c: New.
-
-2020-10-13 Jakub Jelinek <jakub@redhat.com>
-
- PR rtl-optimization/97386
- * gcc.c-torture/execute/pr97386-1.c: New test.
- * gcc.c-torture/execute/pr97386-2.c: New test.
-
-2020-10-13 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/arm/stack-protector-5.c: Use -Os rather than -O2.
- * gcc.target/arm/stack-protector-6.c: Likewise.
-
-2020-10-13 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97382
- * gcc.dg/vect/no-vfa-vect-dv-2.c: Remove same align dump
- scanning.
- * gcc.dg/vect/vect-103.c: Likewise.
- * gcc.dg/vect/vect-91.c: Likewise.
- * gfortran.dg/vect/vect-4.f90: Likewise.
-
-2020-10-13 Martin Liska <mliska@suse.cz>
-
- PR middle-end/97392
- * g++.dg/asan/asan_test.C: Disable -Wstringop-overflow.
- * gcc.dg/asan/pr80166.c: Likewise.
-
-2020-10-12 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/97258
- * gcc.dg/analyzer/callbacks-1.c: New test.
- * gcc.dg/analyzer/callbacks-2.c: New test.
- * gcc.dg/analyzer/callbacks-3.c: New test.
-
-2020-10-12 Andrew MacLeod <amacleod@redhat.com>
-
- * gcc.dg/pr97381.c: New test.
-
-2020-10-12 Aldy Hernandez <aldyh@redhat.com>
+ * gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_n.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqrshl.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqrshrn_n.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqrshrun_n.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqshl.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqshl_n.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqshlu_n.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqshrn_n.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqshrun_n.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqsub.c: Likewise.
- * gcc.dg/pr97378.c: New test.
+2021-01-19 Jeff Law <law@redhat.com>
-2020-10-12 David Malcolm <dmalcolm@redhat.com>
+ * gcc.dg/debug/dwarf2/dwarf-float.c: Force dwarf-4 generation
+ and update expected output.
- PR c/83347
- PR middle-end/90404
- PR analyzer/95007
- * gcc.dg/analyzer/write-to-const-1.c: New test.
- * gcc.dg/analyzer/write-to-string-literal-1.c: New test.
+2021-01-19 Richard Biener <rguenther@suse.de>
-2020-10-12 Martin Sebor <msebor@redhat.com>
+ PR ipa/98330
+ * g++.dg/pr98330.C: New testcase.
+ * gcc.dg/pr98330.c: Likewise.
- PR c++/97201
- * g++.dg/warn/Wplacement-new-size-8.C: Adjust expected message.
- * g++.dg/warn/Warray-bounds-10.C: New test.
- * g++.dg/warn/Warray-bounds-11.C: New test.
- * g++.dg/warn/Warray-bounds-12.C: New test.
- * g++.dg/warn/Warray-bounds-13.C: New test.
+2021-01-19 Richard Biener <rguenther@suse.de>
-2020-10-12 Martin Sebor <msebor@redhat.com>
+ PR ipa/97673
+ * gfortran.dg/pr97673.f90: New testcase.
- PR middle-end/97342
- PR middle-end/97023
- PR middle-end/96384
- * c-c++-common/Wrestrict.c: Adjust comment.
- * gcc.dg/Wstringop-overflow-34.c: Remove xfail.
- * gcc.dg/Wstringop-overflow-43.c: Remove xfails. Adjust regex patterns.
- * gcc.dg/pr51683.c: Prune out expected warning.
- * gcc.target/i386/pr60693.c: Same.
- * g++.dg/warn/Wplacement-new-size-8.C: New test.
- * gcc.dg/Wstringop-overflow-41.c: New test.
- * gcc.dg/Wstringop-overflow-44.s: New test.
- * gcc.dg/Wstringop-overflow-45.c: New test.
- * gcc.dg/Wstringop-overflow-46.c: New test.
- * gcc.dg/Wstringop-overflow-47.c: New test.
- * gcc.dg/Wstringop-overflow-49.c: New test.
- * gcc.dg/Wstringop-overflow-50.c: New test.
- * gcc.dg/Wstringop-overflow-51.c: New test.
- * gcc.dg/Wstringop-overflow-52.c: New test.
- * gcc.dg/Wstringop-overflow-53.c: New test.
- * gcc.dg/Wstringop-overflow-54.c: New test.
- * gcc.dg/Wstringop-overflow-55.c: New test.
- * gcc.dg/Wstringop-overread-5.c: New test.
+2021-01-19 Tobias Burnus <tobias@codesourcery.com>
-2020-10-12 Martin Sebor <msebor@redhat.com>
+ PR fortran/98476
+ * gfortran.dg/gomp/map-3.f90: Update expected scan-dump-tree.
+ * gfortran.dg/gomp/is_device_ptr-2.f90: New test.
+ * gfortran.dg/gomp/use_device_ptr-1.f90: New test.
- PR c++/96511
- PR middle-end/96384
- * g++.dg/init/strlen.C: Add expected warning.
- * g++.dg/warn/Wplacement-new-size-1.C: Relax warnings.
- * g++.dg/warn/Wplacement-new-size-2.C: Same.
- * g++.dg/warn/Wplacement-new-size-6.C: Same.
- * gcc.dg/Warray-bounds-58.c: Adjust
- * gcc.dg/Wstringop-overflow-37.c: Same.
- * g++.dg/warn/Wplacement-new-size-7.C: New test.
+2021-01-19 Martin Jambor <mjambor@suse.cz>
-2020-10-12 Christophe Lyon <christophe.lyon@linaro.org>
+ PR ipa/98690
+ * g++.dg/ipa/pr98690.C: New test.
- PR tree-optimization/97357
- * gcc.dg/pr97357.c: Call setjmp instead of _setjmp.
+2021-01-18 Jeff Law <law@redhat.com>
-2020-10-12 Richard Biener <rguenther@suse.de>
+ * gcc.dg/debug/dwarf2/pr41445-7.c: Fix expected output.
- * gcc.dg/vect/bb-slp-50.c: New testcase.
- * gcc.dg/vect/bb-slp-51.c: Likewise.
+2021-01-18 Patrick Palka <ppalka@redhat.com>
-2020-10-12 Martin Liska <mliska@suse.cz>
+ * g++.dg/cpp1z/class-deduction77.C: New test.
- PR tree-optimization/97079
- * gcc.target/aarch64/sve/pr97079.c: New test.
+2021-01-18 Jakub Jelinek <jakub@redhat.com>
-2020-10-12 Duan bo <duanbo3@huawei.com>
+ PR tree-optimization/98727
+ * gcc.c-torture/execute/pr98727.c: New test.
- PR target/96757
- * gcc.target/aarch64/pr96757.c: New test.
+2021-01-18 John David Anglin <danglin@gcc.gnu.org>
-2020-10-12 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+ PR testsuite/97987
+ * gcc.c-torture/compile/asmgoto-2.c: Skip on hppa.
+ * gcc.c-torture/compile/asmgoto-5.c: Likewise.
- PR target/97349
- * gcc.target/aarch64/simd/pr97349.c: New test.
+2021-01-18 John David Anglin <danglin@gcc.gnu.org>
-2020-10-12 Aldy Hernandez <aldyh@redhat.com>
+ * g++.dg/no-stack-protector-attr-3.C: Don't compile on hppa*-*-*.
+ * g++.dg/no-stack-protector-attr.C: Likewise.
- * gcc.dg/pr97371.c: New test.
+2021-01-18 David Malcolm <dmalcolm@redhat.com>
-2020-10-12 Richard Biener <rguenther@suse.de>
+ * gcc.dg/analyzer/attr-malloc-1.c: New test.
+ * gcc.dg/analyzer/attr-malloc-2.c: New test.
+ * gcc.dg/analyzer/attr-malloc-4.c: New test.
+ * gcc.dg/analyzer/attr-malloc-5.c: New test.
+ * gcc.dg/analyzer/attr-malloc-6.c: New test.
+ * gcc.dg/analyzer/attr-malloc-CVE-2019-19078-usb-leak.c: New test.
+ * gcc.dg/analyzer/attr-malloc-misuses.c: New test.
- PR tree-optimization/97357
- * gcc.dg/pr97357.c: New testcase.
+2021-01-18 Richard Biener <rguenther@suse.de>
-2020-10-12 Mark Eggleston <markeggleston@gcc.gnu.org>
+ PR testsuite/97494
+ * gcc.dg/vect/slp-11b.c: Adjust.
- PR fortran/96099
- * gfortran.dg/pr96099_1.f90: New test.
- * gfortran.dg/pr96099_2.f90: New test.
-
-2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
-
- * obj-c++.dg/plugin/diagnostic-test-expressions-1.mm:
- Adjust testcase to include expressions for @selector and
- @protocol. XFAIL where this is still not sufficient to obtain
- a disgnostic range.
-
-2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
-
- * objc-obj-c++-shared/TestsuiteObject.h: Add dummy retain and
- release method declarations.
- * objc-obj-c++-shared/TestsuiteObject.m: Add dummy retain and
- release implementations.
-
-2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
-
- * obj-c++.dg/objc-gc-3.mm:i Skip for Darwin >= 16.
-
-2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
-
- * obj-c++.dg/cxx-ivars-3.mm: Skip for macOS >= 10.7.
-
-2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
-
- * obj-c++.dg/gnu-api-2-class-meta.mm: Add a flag to cause NeXT
- headers to expose prototypes for messaging.
- * obj-c++.dg/gnu-api-2-class.mm: Likewise.
- * obj-c++.dg/gnu-api-2-objc.mm: Skip this because of the extra
- protocols pulled in by system headers.
-
-2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
-
- * objc.dg/plugin/diagnostic-test-expressions-1.m: Use assignment
- expressions for @selector and @protocol to obtain a useful
- diagnostic range.
-
-2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
-
- * objc.dg/call-super-2.m: Remove inclusion of runtime.h.
- Add a FIXME about the test portability.
-
-2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
-
- * objc.dg/torture/forward-1.m: Implement forwarding using the
- native NeXT (NSInvocation) method for Darwin.
-
-2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
-
- * objc.dg/ivar-scope-4.m: Add inititialize method to the
- root class.
-
-2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
-
- * objc.dg/gnu-api-2-class-meta.m: Add a flag to cause NeXT
- headers to expose prototypes for messaging. Mark the root
- class if the objc_root_class attribute is available. Use
- char ** as the second arg to main.
- * objc.dg/gnu-api-2-class.m: Use dispatch prototype.
- * objc.dg/gnu-api-2-objc.m: Skip on NeXT because of extra
- prototypes pulled in by headers.
-
-2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
-
- * objc.dg/objc-gc-4.m: Disable for macOS 10.15 and 11.x.
-
-2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
-
- * objc-obj-c++-shared/TestsuiteObject.h: If the compiler
- supports objc_root_object attributes, then mark the testsuite
- object accordingly.
- * objc-obj-c++-shared/TestsuiteObject.m: Avoid direct access
- to isa, which is an error for modern Objective-C.
- * objc/execute/class-tests-1.h: Declare a string function we
- use locally (avoid pulling in the whole of string.h).
-
-2020-10-10 Iain Sandoe <iain@sandoe.co.uk>
-
- * gcc.dg/darwin-sections.c: Adjust test for renamed BSS and common
- sections. Cater for 64 and 128 bit long doubles.
-
-2020-10-10 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/97250
- * gcc.target/i386/x86-64-v2.c: Verify that
- __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 is defined.
- * gcc.target/i386/x86-64-v3.c: Likewise.
- * gcc.target/i386/x86-64-v4.c: Likewise.
-
-2020-10-10 Aldy Hernandez <aldyh@redhat.com>
-
- * gcc.dg/pr97359.c: New test.
-
-2020-10-09 Vladimir Makarov <vmakarov@redhat.com>
-
- PR rtl-optimization/97313
- * gcc.target/i386/pr97313.c: New.
-
-2020-10-09 H.J. Lu <hjl.tools@gmail.com>
-
- * gcc.target/i386/avx-1.c (__builtin_ia32_lwpval32): New to
- support <lwpintrin.h> included in <x86gprintrin.h>.
- (__builtin_ia32_lwpval64): Likewise.
- (__builtin_ia32_lwpins32): Likewise.
- (__builtin_ia32_lwpins64): Likewise.
- (__builtin_ia32_bextri_u32): New to support <tbmintrin.h>
- included in <x86gprintrin.h>.
- (__builtin_ia32_bextri_u64): Likewise.
- * gcc.target/i386/x86gprintrin-1.c: New test.
- * gcc.target/i386/x86gprintrin-2.c: Likewise.
- * gcc.target/i386/x86gprintrin-3.c: Likewise.
- * gcc.target/i386/x86gprintrin-4.c: Likewise.
- * gcc.target/i386/x86gprintrin-4a.c: Likewise.
- * gcc.target/i386/x86gprintrin-5.c: Likewise.
- * gcc.target/i386/x86gprintrin-5a.c: Likewise.
- * gcc.target/i386/x86gprintrin-5b.c: Likewise.
- * gcc.target/i386/x86gprintrin-6.c: Likewise.
-
-2020-10-09 Richard Biener <rguenther@suse.de>
-
- * lib/target-supports.exp (check_effective_target_vect_masked_load):
- New effective target.
- * gcc.dg/vect/pr65947-3.c: Update.
-
-2020-10-09 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97334
- * gcc.dg/vect/bb-slp-pr65935.c: Amend.
-
-2020-10-09 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97347
- * g++.dg/vect/pr97347.cc: New testcase.
-
-2020-10-09 Andrew MacLeod <amacleod@redhat.com>
-
- * gcc.dg/pr97317.c: New test.
-
-2020-10-09 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/94801
- PR target/97312
- * gcc.dg/tree-ssa/pr94801.c: New test.
-
-2020-10-09 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/97325
- * gcc.c-torture/execute/pr97325.c: New test.
-
-2020-10-09 Aldy Hernandez <aldyh@redhat.com>
-
- PR testsuite/97337
- * gcc.dg/pr97315-1.c: Moved to...
- * g++.dg/opt/pr97315-1.C: ...here.
-
-2020-10-09 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/bb-slp-phis-1.c: New testcase.
-
-2020-10-08 Jason Merrill <jason@redhat.com>
-
- PR c++/96805
- * g++.dg/cpp0x/alias-decl-pr96805.C: New test.
-
-2020-10-08 Christophe Lyon <christophe.lyon@linaro.org>
-
- PR target/96914
- * gcc.target/arm/mve/intrinsics/vcvtnq_u32_f32.c: New test.
-
-2020-10-08 Martin Liska <mliska@suse.cz>
- Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/bb-slp-22.c: Adjust.
- * gfortran.dg/pr68627.f: Likewise.
-
-2020-10-08 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97330
- * gcc.dg/torture/pr97330-1.c: New testcase.
- * gcc.dg/torture/pr97330-2.c: Likewise.
-
-2020-10-08 Richard Biener <rguenther@suse.de>
-
- * g++.dg/vect/slp-pr50819.cc: Adjust.
- * gcc.dg/vect/bb-slp-1.c: Adjust.
- * gcc.dg/vect/bb-slp-10.c: Adjust.
- * gcc.dg/vect/bb-slp-11.c: Adjust.
- * gcc.dg/vect/bb-slp-13.c: Adjust.
- * gcc.dg/vect/bb-slp-14.c: Adjust.
- * gcc.dg/vect/bb-slp-15.c: Adjust.
- * gcc.dg/vect/bb-slp-16.c: Adjust.
- * gcc.dg/vect/bb-slp-17.c: Adjust.
- * gcc.dg/vect/bb-slp-18.c: Adjust.
- * gcc.dg/vect/bb-slp-19.c: Adjust.
- * gcc.dg/vect/bb-slp-2.c: Adjust.
- * gcc.dg/vect/bb-slp-20.c: Adjust.
- * gcc.dg/vect/bb-slp-21.c: Adjust.
- * gcc.dg/vect/bb-slp-22.c: Adjust.
- * gcc.dg/vect/bb-slp-23.c: Adjust.
- * gcc.dg/vect/bb-slp-24.c: Adjust.
- * gcc.dg/vect/bb-slp-25.c: Adjust.
- * gcc.dg/vect/bb-slp-26.c: Adjust.
- * gcc.dg/vect/bb-slp-27.c: Adjust.
- * gcc.dg/vect/bb-slp-28.c: Adjust.
- * gcc.dg/vect/bb-slp-29.c: Adjust.
- * gcc.dg/vect/bb-slp-3.c: Adjust.
- * gcc.dg/vect/bb-slp-30.c: Adjust.
- * gcc.dg/vect/bb-slp-31.c: Adjust.
- * gcc.dg/vect/bb-slp-34.c: Adjust.
- * gcc.dg/vect/bb-slp-35.c: Adjust.
- * gcc.dg/vect/bb-slp-36.c: Adjust.
- * gcc.dg/vect/bb-slp-38.c: Adjust.
- * gcc.dg/vect/bb-slp-4.c: Adjust.
- * gcc.dg/vect/bb-slp-45.c: Adjust.
- * gcc.dg/vect/bb-slp-46.c: Adjust.
- * gcc.dg/vect/bb-slp-48.c: Adjust.
- * gcc.dg/vect/bb-slp-5.c: Adjust.
- * gcc.dg/vect/bb-slp-6.c: Adjust.
- * gcc.dg/vect/bb-slp-7.c: Adjust.
- * gcc.dg/vect/bb-slp-8.c: Adjust.
- * gcc.dg/vect/bb-slp-8a.c: Adjust.
- * gcc.dg/vect/bb-slp-8b.c: Adjust.
- * gcc.dg/vect/bb-slp-9.c: Adjust.
- * gcc.dg/vect/bb-slp-div-2.c: Adjust.
- * gcc.dg/vect/bb-slp-over-widen-1.c: Adjust.
- * gcc.dg/vect/bb-slp-over-widen-2.c: Adjust.
- * gcc.dg/vect/bb-slp-pattern-2.c: Adjust.
- * gcc.dg/vect/bb-slp-pow-1.c: Adjust.
- * gcc.dg/vect/bb-slp-pr58135.c: Adjust.
- * gcc.dg/vect/bb-slp-pr65935.c: Adjust.
- * gcc.dg/vect/bb-slp-pr78205.c: Adjust.
- * gcc.dg/vect/bb-slp-pr81635-1.c: Adjust.
- * gcc.dg/vect/bb-slp-pr81635-3.c: Adjust.
- * gcc.dg/vect/bb-slp-pr95839-2.c: Adjust.
- * gcc.dg/vect/bb-slp-pr95839.c: Adjust.
- * gcc.dg/vect/bb-slp-pr95866.c: Adjust.
- * gcc.dg/vect/bb-slp-subgroups-1.c: Adjust.
- * gcc.dg/vect/bb-slp-subgroups-2.c: Adjust.
- * gcc.dg/vect/bb-slp-subgroups-3.c: Adjust.
- * gcc.dg/vect/fast-math-bb-slp-call-1.c: Adjust.
- * gcc.dg/vect/no-tree-reassoc-bb-slp-12.c: Adjust.
- * gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c: Adjust.
- * gfortran.dg/vect/pr62283-2.f: Adjust.
- * gcc.target/i386/pr68961.c: Adjust.
- * gcc.target/i386/pr84101.c: Adjust.
- * gcc.dg/vect/bb-slp-pr81635-2.c: Adjust.
- * gcc.dg/vect/bb-slp-pr81635-4.c: Adjust.
- * gcc.dg/vect/fast-math-bb-slp-call-2.c: Adjust.
- * gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c: Adjust.
- * gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp.c: Adjust.
- * gcc.dg/vect/bb-slp-div-1.c: Adjust.
- * gcc.dg/vect/bb-slp-pr90006.c: Adjust.
- * g++.dg/vect/slp-pr50413.cc: Adjust.
-
-2020-10-08 Christophe Lyon <christophe.lyon@linaro.org>
-
- PR target/96914
- * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_u16.c: Remove.
- * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_u32.c: Remove.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u16.c: Remove.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u32.c: Remove.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u8.c: Remove.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u16.c: Remove.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u32.c: Remove.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u8.c: Remove.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u16.c: Remove.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u32.c: Remove.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u8.c: Remove.
-
-2020-10-08 Christophe Lyon <christophe.lyon@linaro.org>
-
- PR target/96914
- * gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s16.c: New test.
- * gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s32.c: New test.
- * gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s8.c: New test.
- * gcc.target/arm/mve/intrinsics/vqdmlashq_n_s16.c: New test.
- * gcc.target/arm/mve/intrinsics/vqdmlashq_n_s32.c: New test.
- * gcc.target/arm/mve/intrinsics/vqdmlashq_n_s8.c: New test.
-
-2020-10-08 Jakub Jelinek <jakub@redhat.com>
-
- PR target/97322
- * gcc.dg/pr97322.c: New test.
-
-2020-10-08 Aldy Hernandez <aldyh@redhat.com>
-
- * gcc.dg/pr97315-2.c: New test.
-
-2020-10-08 Aldy Hernandez <aldyh@redhat.com>
-
- * gcc.dg/pr97315-1.c: New test.
-
-2020-10-08 Jakub Jelinek <jakub@redhat.com>
-
- PR sanitizer/97294
- * gcc.dg/asan/pr97294.c: New test.
-
-2020-10-08 Patrick Palka <ppalka@redhat.com>
-
- PR c++/97052
- * g++.dg/cpp2a/concepts-defarg2.C: New test.
-
-2020-10-08 Patrick Palka <ppalka@redhat.com>
-
- PR c++/96229
- * g++.dg/cpp2a/concepts-class2.C: New test.
-
-2020-10-07 Marek Polacek <polacek@redhat.com>
-
- PR c++/97010
- * g++.dg/cpp2a/fn-template21.C: New test.
- * g++.dg/cpp2a/fn-template22.C: New test.
-
-2020-10-07 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97307
- * gcc.dg/tree-ssa/ssa-sink-17.c: New testcase.
- * gcc.dg/vect/pr65947-3.c: XFAIL.
-
-2020-10-07 Patrick Palka <ppalka@redhat.com>
-
- PR c++/88115
- PR libstdc++/97273
- * g++.dg/template/alignof3.C: New test.
-
-2020-10-07 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/97116
- * g++.dg/analyzer/pr97116.C: New test.
-
-2020-10-07 David Malcolm <dmalcolm@redhat.com>
-
- * g++.dg/analyzer/analyzer.exp (DEFAULT_CXXFLAGS): Remove
- -fdiagnostics-path-format=separate-events.
- * gcc.dg/analyzer/analyzer.exp (DEFAULT_CFLAGS): Likewise.
- * gcc.dg/plugin/diagnostic-path-format-default.c: Rename to...
- * gcc.dg/plugin/diagnostic-path-format-plain.c: ...this. Remove
- dg-options directive. Copy remainder of test from
- diagnostic-path-format-separate-events.c.
- * gcc.dg/plugin/diagnostic-test-paths-2.c: Add
- -fdiagnostics-path-format=inline-events to options.
- Fix expected output for location of conditional within "for" loop.
- * gcc.dg/plugin/plugin.exp (plugin_test_list): Update for
- renaming.
- * gfortran.dg/analyzer/analyzer.exp (DEFAULT_FFLAGS): Remove
- -fdiagnostics-path-format=separate-events.
-
-2020-10-07 Nathan Sidwell <nathan@acm.org>
-
- * g++.dg/cpp0x/lambda/lambda-sfinae1.C: Avoid ill-formed local extern
- * g++.dg/init/pr42844.C: Add expected error.
- * g++.dg/lookup/extern-redecl1.C: Likewise.
- * g++.dg/lookup/koenig15.C: Avoid ill-formed.
- * g++.dg/lto/pr95677.C: New.
- * g++.dg/other/nested-extern-1.C: Correct expected behabviour.
- * g++.dg/other/nested-extern-2.C: Likewise.
- * g++.dg/other/nested-extern.cc: Split ...
- * g++.dg/other/nested-extern-1.cc: ... here ...
- * g++.dg/other/nested-extern-2.cc: ... here.
- * g++.dg/template/scope5.C: Avoid ill-formed
- * g++.old-deja/g++.law/missed-error2.C: Allow extension.
- * g++.old-deja/g++.pt/crash3.C: Add expected error.
-
-2020-10-07 Martin Jambor <mjambor@suse.cz>
-
- PR ipa/96394
- * gcc.dg/tree-prof/pr96394.c: New test.
-
-2020-10-07 Jakub Jelinek <jakub@redhat.com>
-
- * gcc.dg/gomp/simd-2.c: New test.
- * gcc.dg/gomp/simd-3.c: New test.
-
-2020-10-06 Marek Polacek <polacek@redhat.com>
-
- PR c++/97297
- * g++.dg/cpp2a/typename18.C: New test.
-
-2020-10-06 Tobias Burnus <tobias@codesourcery.com>
-
- PR middle-end/90861
- * c-c++-common/goacc/declare-pr90861.c: Remove xfail.
-
-2020-10-06 Andrew MacLeod <amacleod@redhat.com>
-
- * gcc.dg/pr81192.c: Disable EVRP pass.
- * gcc.dg/tree-ssa/pr77445-2.c: Ditto.
- * gcc.dg/tree-ssa/ssa-dom-thread-6.c: Adjust.
- * gcc.dg/tree-ssa/ssa-dom-thread-7.c: Ditto.
-
-2020-10-06 Dennis Zhang <dennis.zhang@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vreinterpretq_f16.c: Use additional
- option -fno-ipa-icf and change the instruction count from 8 to 16.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_u8.c: Likewise.
-
-2020-10-06 Jakub Jelinek <jakub@redhat.com>
-
- PR rtl-optimization/97282
- * gcc.target/i386/pr97282.c: New test.
-
-2020-10-06 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/97289
- * c-c++-common/gomp/pr97289.c: New test.
-
-2020-10-06 Joe Ramsay <Joe.Ramsay@arm.com>
-
- * gcc.target/arm/cortex-m55-nodsp-flag-hard.c: New test.
- * gcc.target/arm/cortex-m55-nodsp-flag-softfp.c: New test.
- * gcc.target/arm/cortex-m55-nodsp-nofp-flag-softfp.c: New test.
- * gcc.target/arm/cortex-m55-nofp-flag-hard.c: New test.
- * gcc.target/arm/cortex-m55-nofp-flag-softfp.c: New test.
- * gcc.target/arm/cortex-m55-nofp-nomve-flag-softfp.c: New test.
- * gcc.target/arm/cortex-m55-nomve-flag-hard.c: New test.
- * gcc.target/arm/cortex-m55-nomve-flag-softfp.c: New test.
- * gcc.target/arm/cortex-m55-nomve.fp-flag-hard.c: New test.
- * gcc.target/arm/cortex-m55-nomve.fp-flag-softfp.c: New test.
- * gcc.target/arm/multilib.exp: Add tests for -mcpu=cortex-m55.
-
-2020-10-05 Nathan Sidwell <nathan@acm.org>
-
- * c-c++-common/spellcheck-reserved.c: Restore diagnostic.
-
-2020-10-04 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/97272
- * gfortran.dg/pr97272.f90: New test.
-
-2020-10-03 Jan Hubicka <jh@suse.cz>
-
- * gcc.dg/tree-ssa/modref-3.c: New test.
-
-2020-10-02 Nathan Sidwell <nathan@acm.org>
-
- * c-c++-common/spellcheck-reserved.c: Adjust diagnostic.
- * g++.dg/spellcheck-typenames.C: Adjust diagnostic.
-
-2020-10-02 Nathan Sidwell <nathan@acm.org>
-
- * g++.dg/inherit/pr97268.C: New.
-
-2020-10-02 Martin Jambor <mjambor@suse.cz>
-
- * gcc.dg/ipa/ipcp-loophint-1.c: New test.
-
-2020-10-02 Joe Ramsay <Joe.Ramsay@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c: Add test for mismatched
- width of scalar argument.
- * gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxavq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxavq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxavq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmavq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmavq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmavq_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmavq_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmvq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmvq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmvq_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmvq_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_u8.c: Likewise.
-
-2020-10-02 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/arm/armv8_2-fp16-arith-2.c (float16_t): Use _Float16_t
- rather than __fp16.
- (float16x4_t, float16x4_t): Likewise.
- (fp16_abs): Use __builtin_fabsf16.
-
-2020-10-02 Alex Coplan <alex.coplan@arm.com>
-
- * gcc.target/aarch64/extend-syntax.c: Fix assembler checks for
- ilp32, disable check-function-bodies on ilp32.
- * gcc.target/aarch64/subsp.c: Only check second scan-assembler
- on lp64 since the code on ilp32 is missing the optimization
- needed for this test to pass.
-
-2020-10-02 Jason Merril <jason@redhat.com>
-
- * g++.dg/pr94314.C: new/delete no longer omitted.
-
-2020-10-02 Richard Biener <rguenther@suse.de>
-
- * g++.dg/tree-ssa/pta-delete-1.C: New testcase.
-
-2020-10-01 Richard Sandiford <richard.sandiford@arm.com>
-
- * lib/target-supports.exp (check_effective_target_vect_cond_mixed): Add
- arm neon targets.
- * gcc.target/arm/neon-compare-1.c: New test.
- * gcc.target/arm/neon-compare-2.c: Likewise.
- * gcc.target/arm/neon-compare-3.c: Likewise.
- * gcc.target/arm/neon-compare-4.c: Likewise.
- * gcc.target/arm/neon-compare-5.c: Likewise.
- * gcc.target/arm/neon-vcond-gt.c: Expect comparisons with zero.
- * gcc.target/arm/neon-vcond-ltgt.c: Likewise.
- * gcc.target/arm/neon-vcond-unordered.c: Likewise.
-
-2020-10-01 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/movtf_1.c: Restrict the asm matching to lp64.
- * gcc.target/aarch64/movti_1.c: Likewise.
-
-2020-10-01 Andrea Corallo <andrea.corallo@arm.com>
-
- PR target/96375
- * gcc.target/arm/lob1.c: Fix missing flag.
- * gcc.target/arm/lob2.c: Likewise.
- * gcc.target/arm/lob3.c: Likewise.
- * gcc.target/arm/lob4.c: Likewise.
- * gcc.target/arm/lob5.c: Likewise.
- * gcc.target/arm/lob6.c: Likewise.
- * lib/target-supports.exp
- (check_effective_target_arm_v8_1_lob_ok): Return 1 only for
- cortex-m targets, add '-mthumb' flag.
-
-2020-10-01 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97236
- * gcc.dg/vect/pr97236.c: New testcase.
-
-2020-10-01 Jan Hubicka <jh@suse.cz>
-
- PR ipa/97243
- * gcc.c-torture/compile/pr97243.c: New test.
-
-2020-10-01 Jan Hubicka <jh@suse.cz>
-
- PR ipa/97244
- * gcc.dg/ipa/remref-2a.c: Add -fno-ipa-modref
-
-2020-10-01 Tom de Vries <tdevries@suse.de>
-
- * gcc.dg/pr94600-1.c: Force 32-bit alignment for a0 for !non_strict_align
- targets. Remove target clauses from scan tests.
- * gcc.dg/pr94600-3.c: Same.
-
-2020-10-01 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/96994
- * g++.dg/cpp2a/consteval18.C: New test.
-
-2020-10-01 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/97195
- * g++.dg/cpp2a/constexpr-new14.C: New test.
-
-2020-10-01 Richard Biener <rguenther@suse.de>
-
- * g++.dg/vect/pr97255.cc: New testcase.
-
-2020-10-01 Florian Weimer <fweimer@redhat.com>
-
- PR target/97250
- * gcc.target/i386/x86-64-v2.c: New test.
- * gcc.target/i386/x86-64-v3.c: New test.
- * gcc.target/i386/x86-64-v3-haswell.c: New test.
- * gcc.target/i386/x86-64-v3-skylake.c: New test.
- * gcc.target/i386/x86-64-v4.c: New test.
-
-2020-10-01 Marek Polacek <polacek@redhat.com>
-
- PR c++/90210
- * g++.dg/cpp1z/class-deduction73.C: New test.
-
-2020-09-30 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/97189
- * gcc.dg/attr-access-2.c: Adjust caret location.
- * gcc.dg/Wvla-parameter-6.c: New test.
- * gcc.dg/Wvla-parameter-7.c: New test.
-
-2020-09-30 Martin Sebor <msebor@redhat.com>
-
- PR c/97206
- * gcc.dg/Warray-parameter-7.c: New test.
- * gcc.dg/Warray-parameter-8.c: New test.
- * gcc.dg/Wvla-parameter-5.c: New test.
-
-2020-09-30 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/96827
- * gcc.target/i386/pr96827.c: New test.
-
-2020-09-30 Christophe Lyon <christophe.lyon@linaro.org>
-
- PR target/94595
- * gcc.target/arm/thumb2-cond-cmp-1.c: Skip if arm_cortex_m.
- * gcc.target/arm/thumb2-cond-cmp-2.c: Skip if arm_cortex_m.
- * gcc.target/arm/thumb2-cond-cmp-3.c: Skip if arm_cortex_m.
- * gcc.target/arm/thumb2-cond-cmp-4.c: Skip if arm_cortex_m.
-
-2020-09-30 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/pr37027.c: Amend.
- * gcc.dg/vect/pr67790.c: Likewise.
- * gcc.dg/vect/pr92324-4.c: Likewise.
- * gcc.dg/vect/pr92558.c: Likewise.
- * gcc.dg/vect/pr95495.c: Likewise.
- * gcc.dg/vect/slp-reduc-1.c: Likewise.
- * gcc.dg/vect/slp-reduc-2.c: Likewise.
- * gcc.dg/vect/slp-reduc-3.c: Likewise.
- * gcc.dg/vect/slp-reduc-4.c: Likewise.
- * gcc.dg/vect/slp-reduc-5.c: Likewise.
- * gcc.dg/vect/slp-reduc-7.c: Likewise.
- * gcc.dg/vect/vect-reduc-in-order-4.c: Likewise.
-
-2020-09-30 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- PR target/96795
- * gcc.target/arm/mve/intrinsics/mve_fp_vaddq_n.c: New Test.
- * gcc.target/arm/mve/intrinsics/mve_vaddq_n.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmasq_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmasq_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmavq_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmavq_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmvq_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmvq_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmavq_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmavq_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmavq_p_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmavq_p_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmvq_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmvq_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmvq_p_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmvq_p_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsetq_lane_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsetq_lane_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_f32-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_f16-1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_f32-1.c: Likewise.
-
-2020-09-30 Joel Hutton <joel.hutton@arm.com>
-
- PR target/96837
- * gcc.dg/vect/bb-slp-49.c: New test.
-
-2020-09-30 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/97242
- * gfortran.dg/contiguous_11.f90: New test.
- * gfortran.dg/contiguous_4.f90: Update.
- * gfortran.dg/contiguous_7.f90: Update.
-
-2020-09-30 Paul Thomas <pault@gcc.gnu.org>
-
- PR fortran/97045
- * gfortran.dg/select_type_50.f90 : New test.
-
-2020-09-30 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/97184
- * gcc.target/i386/movdir64b.c: New test.
- * gcc.target/i386/movdiri32.c: Likewise.
- * gcc.target/i386/movdiri64.c: Likewise.
- * lib/target-supports.exp (check_effective_target_movdir): New.
-
-2020-09-30 Tom de Vries <tdevries@suse.de>
-
- * gcc.dg/pr94600-1.c: Use effective target
- (non_strict_align || pcc_bitfield_type_matters).
- * gcc.dg/pr94600-3.c: Same.
-
-2020-09-30 Jakub Jelinek <jakub@redhat.com>
-
- * gcc.target/i386/amxint8-dpbssd-2.c: Require effective targets
- amx_tile and amx_int8.
- * gcc.target/i386/amxint8-dpbsud-2.c: Likewise.
- * gcc.target/i386/amxint8-dpbusd-2.c: Likewise.
- * gcc.target/i386/amxint8-dpbuud-2.c: Likewise.
- * gcc.target/i386/amxbf16-dpbf16ps-2.c: Require effective targets
- amx_tile and amx_bf16.
- * gcc.target/i386/amxtile-2.c: Require effective target amx_tile.
-
-2020-09-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
-
- PR target/97150
- * gcc.target/aarch64/pr97150.c: New test.
-
-2020-09-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
-
- PR target/96313
- * gcc.target/aarch64/pr96313.c: New test.
- * gcc.target/aarch64/scalar_intrinsics.c (test_vqmovunh_s16):
- Adjust return type.
- (test_vqmovuns_s32): Likewise.
- (test_vqmovund_s64): Likewise.
-
-2020-09-30 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/movtf_1.c: New test.
- * gcc.target/aarch64/movti_1.c: Likewise.
-
-2020-09-29 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/97188
- * gcc.dg/Wstringop-overflow-23.c: Adjust text of expected warnings.
- * gcc.dg/Wnonnull-4.c: New test.
-
-2020-09-29 Marek Polacek <polacek@redhat.com>
-
- PR c++/94695
- * g++.dg/warn/Wrange-loop-construct.C: New test.
-
-2020-09-29 David Edelsohn <dje.gcc@gmail.com>
-
- * g++.dg/debug/dwarf2/align-1.C: Remove AIX XFAIL.
- * g++.dg/debug/dwarf2/align-2.C: Same.
- * g++.dg/debug/dwarf2/align-3.C: Same.
- * g++.dg/debug/dwarf2/align-4.C: Same.
- * g++.dg/debug/dwarf2/align-5.C: Same.
- * g++.dg/debug/dwarf2/align-6.C: Same.
- * g++.dg/debug/dwarf2/defaulted-member-function-1.C: Same.
- * g++.dg/debug/dwarf2/defaulted-member-function-2.C: Same.
- * g++.dg/debug/dwarf2/defaulted-member-function-3.C: Same.
- * g++.dg/debug/dwarf2/inline-var-1.C: Same.
- * g++.dg/debug/dwarf2/inline-var-2.C: Same.
- * g++.dg/debug/dwarf2/inline-var-3.C: Same.
- * g++.dg/debug/dwarf2/noreturn-function.C: Same.
- * g++.dg/debug/dwarf2/ptrdmem-1.C: Same.
- * g++.dg/debug/dwarf2/ref-2.C: Same.
- * g++.dg/debug/dwarf2/ref-3.C: Same.
- * g++.dg/debug/dwarf2/ref-4.C: Same.
- * g++.dg/debug/dwarf2/refqual-1.C: Same.
- * g++.dg/debug/dwarf2/refqual-2.C: Same.
- * gcc.dg/debug/dwarf2/align-1.c: Same.
- * gcc.dg/debug/dwarf2/align-2.c: Same.
- * gcc.dg/debug/dwarf2/align-3.c: Same.
- * gcc.dg/debug/dwarf2/align-4.c: Same.
- * gcc.dg/debug/dwarf2/align-5.c: Same.
- * gcc.dg/debug/dwarf2/align-6.c: Same.
- * gcc.dg/debug/dwarf2/align-as-1.c: Same.
- * gcc.dg/debug/dwarf2/dwarf2-macro.c: Same.
- * gcc.dg/debug/dwarf2/dwarf2-macro2.c: Same.
- * gcc.dg/debug/dwarf2/lang-c89.c: Same.
- * gcc.dg/debug/dwarf2/noreturn-function-attribute.c: Same.
- * gcc.dg/debug/dwarf2/noreturn-function-keyword.c: Same.
- * gcc.dg/debug/dwarf2/pr71855.c: Same.
- * gcc.dg/debug/dwarf2/inline5.c: Add XFAIL on AIX.
-
-2020-09-29 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/95188
- * gcc.dg/analyzer/signal-registration-loc.c: New test.
-
-2020-09-29 David Edelsohn <dje.gcc@gmail.com>
-
- * g++.dg/spellcheck-inttypes.C: Define _STD_TYPES_T on AIX.
- * gcc.dg/spellcheck-inttypes.c: Same.
-
-2020-09-29 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97241
- * gcc.dg/vect/pr97241.c: New testcase.
-
-2020-09-29 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97238
- * gcc.dg/pr97238.c: New testcase.
-
-2020-09-29 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/arm/armv8_2-fp16-arith-2.c: Expect FP16 vectorization
- even without -ffast-math.
-
-2020-09-29 Kito Cheng <kito.cheng@sifive.com>
-
- * gcc.target/riscv/predef-3.c: Update testcase.
- * gcc.target/riscv/predef-6.c: Ditto.
-
-2020-09-29 Martin Liska <mliska@suse.cz>
-
- PR tree-optimization/96979
- * g++.dg/tree-ssa/pr96979.C: New test.
-
-2020-09-29 Martin Liska <mliska@suse.cz>
-
- Revert:
- 2020-09-29 Martin Liska <mliska@suse.cz>
-
- PR tree-optimization/96979
- * g++.dg/tree-ssa/pr96979.C: New test.
-
-2020-09-29 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.dg/ipa/symver1.c: Skip on AIX.
-
-2020-09-28 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/97233
- * gcc.dg/analyzer/pr97233.c: New test.
-
-2020-09-28 Paul A. Clarke <pc@us.ibm.com>
-
- * gcc.target/powerpc/sse4_1-pinsrb.c: New test.
- * gcc.target/powerpc/sse4_1-pinsrd.c: New test.
- * gcc.target/powerpc/sse4_1-pinsrq.c: New test.
-
-2020-09-28 liuhongt <hongtao.liu@intel.com>
-
- * lib/target-supports.exp (check_effective_target_amx_tile,
- check_effective_target_amx_int8,
- check_effective_target_amx_bf16): New proc.
- * g++.dg/other/i386-2.C: Add -mamx-tile, -mamx-int8, -mamx-bf16.
- * g++.dg/other/i386-3.C: Ditto.
- * gcc.target/i386/sse-12.c: Ditto.
- * gcc.target/i386/sse-13.c: Ditto.
- * gcc.target/i386/sse-14.c: Ditto.
- * gcc.target/i386/sse-22.c: Ditto.
- * gcc.target/i386/sse-23.c: Ditto.
- * gcc.target/i386/funcspec-56.inc: Add new target attribute.
- * gcc.target/i386/amx-check.h: New header file.
- * gcc.target/i386/amxbf16-asmatt-1.c: New test.
- * gcc.target/i386/amxint8-asmatt-1.c: New test.
- * gcc.target/i386/amxtile-asmatt-1.c: Ditto.
- * gcc.target/i386/amxbf16-asmintel-1.c: Ditto.
- * gcc.target/i386/amxint8-asmintel-1.c: Ditto.
- * gcc.target/i386/amxtile-asmintel-1.c: Ditto.
- * gcc.target/i386/amxbf16-dpbf16ps-2.c: Ditto.
- * gcc.target/i386/amxint8-dpbssd-2.c: Ditto.
- * gcc.target/i386/amxint8-dpbsud-2.c: Ditto.
- * gcc.target/i386/amxint8-dpbusd-2.c: Ditto.
- * gcc.target/i386/amxint8-dpbuud-2.c: Ditto.
- * gcc.target/i386/amxtile-2.c: Ditto.
-
-2020-09-28 Mark Eggleston <markeggleston@gcc.gnu.org>
-
- Revert:
- 2020-09-28 Steven G. Kargl <kargl@gcc.gnu.org>
- Mark Eggleston <markeggleston@gcc.gnu.org>
-
- PR fortran/95614
- * gfortran.dg/pr95614_1.f90: New test.
- * gfortran.dg/pr95614_2.f90: New test.
-
-2020-09-28 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/addr16.adb: New test.
- * gnat.dg/addr16_pkg.ads: New helper.
-
-2020-09-27 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/97073
- * gcc.c-torture/execute/pr97073.c: New test.
-
-2020-09-27 Steven G. Kargl <kargl@gcc.gnu.org>
- Mark Eggleston <markeggleston@gcc.gnu.org>
-
- PR fortran/95614
- * gfortran.dg/pr95614_1.f90: New test.
- * gfortran.dg/pr95614_2.f90: New test.
-
-2020-09-26 Paul Thomas <pault@gcc.gnu.org>
-
- PR fortran/96495
- * gfortran.dg/alloc_comp_result_2.f90 : Restore original.
- * gfortran.dg/alloc_comp_result_3.f90 : New test.
-
-2020-09-26 Jan Hubicka <jh@suse.cz>
-
- * gcc.dg/lto/modref-1_0.c: New test.
- * gcc.dg/lto/modref-1_1.c: New test.
- * gcc.dg/tree-ssa/modref-2.c: New test.
-
-2020-09-26 Jakub Jelinek <jakub@redhat.com>
-
- * gcc.dg/vect/vect-simd-17.c: Expect 11 or more vectorized loops.
- * gcc.dg/vect/vect-simd-18.c: New test.
- * gcc.dg/vect/vect-simd-19.c: New test.
- * gcc.dg/vect/vect-simd-20.c: New test.
-
-2020-09-26 Jan Hubicka <jh@suse.cz>
-
- * gcc.dg/ipa/ipa-pta-13.c: Disable modref.
-
-2020-09-26 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/94355
- * g++.dg/analyzer/placement-new.C: New test.
-
-2020-09-26 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96646
- PR analyzer/96841
- * gcc.dg/analyzer/pr96646.c: New test.
- * gcc.dg/analyzer/pr96841.c: New test.
-
-2020-09-25 Richard Biener <rguenther@suse.de>
-
- PR middle-end/96814
- * gcc.target/i386/pr96814.c: New testcase.
-
-2020-09-25 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/arm/mve/intrinsics/mve-vldstr16-no-writeback.c: Allow
- the store to use GPRs instead of FPRs. Add scan-assembler-nots
- for writeback.
- * gcc.target/arm/armv8_1m-fp16-move-1.c: New test.
- * gcc.target/arm/armv8_1m-fp32-move-1.c: Likewise.
- * gcc.target/arm/armv8_1m-fp64-move-1.c: Likewise.
-
-2020-09-25 Christophe Lyon <christophe.lyon@linaro.org>
+2021-01-18 Christophe Lyon <christophe.lyon@linaro.org>
PR target/71233
- * gcc.target/aarch64/advsimd-intrinsics/vtrn_half.c: Remove
- declarations of vector, vector2, vector_res for float64x2 type.
- * gcc.target/aarch64/advsimd-intrinsics/vuzp_half.c: Likewise.
- * gcc.target/aarch64/advsimd-intrinsics/vzip_half.c: Likewise.
-
-2020-09-25 Richard Biener <rguenther@suse.de>
-
- PR testsuite/97204
- * gcc.target/i386/sse2-mmx-pinsrw.c: Fix.
-
-2020-09-25 Jakub Jelinek <jakub@redhat.com>
-
- * gcc.dg/vect/vect-simd-17.c: New test.
-
-2020-09-25 Tom de Vries <tdevries@suse.de>
-
- * gcc.dg/analyzer/pr93355-localealias.c: Require effective target
- alloca.
+ * gcc.target/arm/simd/vceqz_p64.c: Use arm_crypto options.
+ * gcc.target/arm/simd/vceqzq_p64.c: Likewise.
-2020-09-25 Tom de Vries <tdevries@suse.de>
+2021-01-18 Richard Biener <rguenther@suse.de>
- * lib/target-supports.exp (check_effective_target_ident_directive): New proc.
- * c-c++-common/ident-1b.c: Require effective target ident_directive.
- * c-c++-common/ident-2b.c: Same.
+ PR testsuite/97299
+ * gcc.dg/vect/slp-reduc-3.c: Guard VEC_PERM_EXPR scan.
-2020-09-24 Nathan Sidwell <nathan@acm.org>
+2021-01-18 David Edelsohn <dje.gcc@gmail.com>
- * g++.dg/template/local-var1.C: New.
+ * gcc.target/powerpc/fold-vec-extract-char.p7.c: Adjust addi count.
+ * gcc.target/powerpc/fold-vec-extract-double.p7.c: Same.
+ * gcc.target/powerpc/fold-vec-extract-float.p7.c: Same.
+ * gcc.target/powerpc/fold-vec-extract-float.p8.c: Same.
+ * gcc.target/powerpc/fold-vec-extract-int.p7.c: Same.
+ * gcc.target/powerpc/fold-vec-extract-int.p8.c: Same.
+ * gcc.target/powerpc/fold-vec-extract-short.p7.c: Same.
+ * gcc.target/powerpc/fold-vec-extract-short.p8.c: Same.
+ * gcc.target/powerpc/sse-andnps-1.c: Restrict to LE.
+ * gcc.target/powerpc/sse-movhps-1.c: Restrict to LE.
+ * gcc.target/powerpc/sse-movlps-1.c: Restrict to LE.
+ * gcc.target/powerpc/sse2-andnpd-1.c: Restrict to LE.
-2020-09-24 Nathan Sidwell <nathan@acm.org>
+2021-01-17 David Edelsohn <dje.gcc@gmail.com>
- * g++.dg/template/local-fn4.C: Add target c++11
+ * g++.dg/debug/dwarf2/inline-ns-2.C: Skip on AIX.
+ * g++.dg/debug/dwarf2/inline-var-2.C: Skip on AIX.
+ * g++.dg/debug/dwarf2/inline-var-3.C: Skip on AIX.
+ * g++.dg/debug/dwarf2/lang-cpp11.C: Skip on AIX.
+ * g++.dg/debug/dwarf2/lang-cpp14.C: Skip on AIX.
+ * g++.dg/debug/dwarf2/lang-cpp17.C: Skip on AIX.
+ * g++.dg/debug/dwarf2/lang-cpp20.C: Skip on AIX.
+ * gcc.dg/debug/dwarf2/inline6.c: Skip on AIX.
+ * gcc.dg/debug/dwarf2/lang-c11.c: Skip on AIX.
+ * gcc.dg/debug/dwarf2/pr41445-7.c: Skip on AIX.
+ * gcc.dg/debug/dwarf2/pr41445-8.c: Skip on AIX.
-2020-09-24 Nathan Sidwell <nathan@acm.org>
+2021-01-17 Martin Jambor <mjambor@suse.cz>
- PR c++/97186
- * g++.dg/template/local10.C: Rename ...
- * g++.dg/template/local-fn3.C: .. here. Require lto.
- * g++.dg/template/local-fn4.C: New.
+ PR ipa/98222
+ * gcc.dg/ipa/pr98222.c: New test.
-2020-09-24 Jan Hubicka <jh@suse.cz>
+2021-01-16 Jakub Jelinek <jakub@redhat.com>
- * gcc.dg/tree-ssa/modref-1.c: New test.
+ * gfortran.dg/iso_fortran_binding_uint8_array_driver.c: Include
+ ../../../libgfortran/ISO_Fortran_binding.h rather than
+ ISO_Fortran_binding.h.
-2020-09-24 Tom de Vries <tdevries@suse.de>
+2021-01-16 Kwok Cheung Yeung <kcy@codesourcery.com>
- * gcc.dg/tls/thr-cse-1.c: Scan final dump instead of assembly for
- nvptx.
+ * c-c++-common/gomp/task-detach-1.c: New.
+ * g++.dg/gomp/task-detach-1.C: New.
+ * gcc.dg/gomp/task-detach-1.c: New.
+ * gfortran.dg/gomp/task-detach-1.f90: New.
-2020-09-24 Tom de Vries <tdevries@suse.de>
+2021-01-16 Jakub Jelinek <jakub@redhat.com>
- * gcc.dg/independent-cloneids-1.c: Use scan-rtl-dump instead of
- scan-assembler.
+ PR tree-optimization/96669
+ * gcc.dg/tree-ssa/pr96669-1.c: Adjust regexp.
+ * gcc.dg/tree-ssa/pr96669-2.c: New test.
-2020-09-24 Richard Biener <rguenther@suse.de>
+2021-01-16 Jakub Jelinek <jakub@redhat.com>
- PR tree-optimization/97085
- * gcc.dg/pr97192.c: New testcase.
+ PR tree-optimization/96271
+ * gcc.target/i386/pr96271.c: New test.
-2020-09-24 Paul Thomas <pault@gcc.gnu.org>
+2021-01-15 Carl Love <cel@us.ibm.com>
- PR fortran/96495
- * gfortran.dg/alloc_comp_result_2.f90 : New test.
+ * gcc.target/powerpc/builtins-1-p10-runnable.c: New test file.
-2020-09-24 Tom de Vries <tdevries@suse.de>
+2021-01-15 Harris Snyder <hsnyder@structura.bio>
- * gcc.dg/pr87314-1.c: Add nvptx-specific scan-assembler directive.
+ * gfortran.dg/iso_fortran_binding_uint8_array.f90: New test.
+ * gfortran.dg/iso_fortran_binding_uint8_array_driver.c: New test.
-2020-09-24 Richard Sandiford <richard.sandiford@arm.com>
+2021-01-15 Nathan Sidwell <nathan@acm.org>
- * gcc.target/arm/stack-protector-5.c: New test.
- * gcc.target/arm/stack-protector-6.c: Likewise.
+ PR c++/98538
+ * g++.dg/template/pr98538.C: New.
-2020-09-24 Richard Sandiford <richard.sandiford@arm.com>
+2021-01-15 Nathan Sidwell <nathan@acm.org>
- * gcc.target/arm/stack-protector-3.c: New test.
- * gcc.target/arm/stack-protector-4.c: Likewise.
+ PR preprocessor/95253
+ * g++.dg/modules/dep-1_a.C: Adjust expected output.
+ * g++.dg/modules/dep-1_b.C: Likewise.
+ * g++.dg/modules/dep-2.C: Likewise.
-2020-09-24 Richard Biener <rguenther@suse.de>
+2021-01-15 Jakub Jelinek <jakub@redhat.com>
- PR tree-optimization/97085
- * gcc.dg/vect/pr97085.c: New testcase.
+ PR tree-optimization/96669
+ * gcc.dg/tree-ssa/pr96669-1.c: New test.
-2020-09-24 Tom de Vries <tdevries@suse.de>
+2021-01-15 Jakub Jelinek <jakub@redhat.com>
- * gcc.dg/pr94600-1.c: Require effective target non_strict_align for
- scan-rtl-dump-times.
- * gcc.dg/pr94600-3.c: Same.
+ PR tree-optimization/96681
+ * gcc.dg/tree-ssa/pr96681.c: New test.
-2020-09-24 Tom de Vries <tdevries@suse.de>
+2021-01-15 Jason Merrill <jason@redhat.com>
- * c-c++-common/builtin-has-attribute-3.c: Compile with -DSKIP_ALIAS
- for effective target ! alias.
+ PR c++/98642
+ * g++.dg/cpp1z/elide5.C: New test.
-2020-09-24 Kewen Lin <linkw@linux.ibm.com>
+2021-01-15 Jason Merrill <jason@redhat.com>
- PR tree-optimization/97075
- * gcc.target/powerpc/p9-vec-length-full-6.c: Adjust.
+ * g++.dg/cpp1z/elide4.C: New test.
-2020-09-24 David Malcolm <dmalcolm@redhat.com>
+2021-01-15 Jason Merrill <jason@redhat.com>
- PR analyzer/93355
- * gcc.dg/analyzer/pr93355-localealias-feasibility.c: New test.
- * gcc.dg/analyzer/pr93355-localealias-simplified.c: New test.
- * gcc.dg/analyzer/pr93355-localealias.c: New test.
+ PR c++/63707
+ * g++.dg/cpp0x/initlist-array13.C: New test.
-2020-09-24 David Malcolm <dmalcolm@redhat.com>
+2021-01-15 Alexandre Oliva <oliva@adacore.com>
- * gcc.dg/analyzer/feasibility-2.c: New test.
-
-2020-09-23 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/97175
- * gcc.dg/Wstringop-overflow-44.c: New test.
-
-2020-09-23 Jan Hubicka <jh@suse.cz>
-
- * gcc.dg/tree-ssa/local-pure-const.c: Update template.
-
-2020-09-23 Martin Sebor <msebor@redhat.com>
-
- PR c/97131
- * gcc.dg/Warray-parameter-6.c: New test.
-
-2020-09-23 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/stack-protector-5.c: New test.
- * gcc.target/aarch64/stack-protector-6.c: Likewise.
- * gcc.target/aarch64/stack-protector-7.c: Likewise.
-
-2020-09-23 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/stack-protector-3.c: New test.
- * gcc.target/aarch64/stack-protector-4.c: Likewise.
-
-2020-09-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
-
- PR target/71233
- * gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
- (clean_results): Add float64x2_t cleanup.
- (DECL_VARIABLE_128BITS_VARIANTS): Add float64x2_t variable.
- * gcc.target/aarch64/advsimd-intrinsics/vreinterpret_p128.c: Add
- testing of vreinterpretq_f64_p128, vreinterpretq_p128_f64.
-
-2020-09-23 Nathan Sidwell <nathan@acm.org>
-
- PR c++/97171
- * g++.dg/template/local10.C: New.
-
-2020-09-23 Marek Polacek <polacek@redhat.com>
-
- PR c/97125
- * c-c++-common/Wduplicated-branches-15.c: New test.
+ * gcc.dg/analyzer/alloca-leak.c: Drop alloca.h, use builtin.
+ * gcc.dg/analyzer/data-model-1.c: Likewise.
+ * gcc.dg/analyzer/malloc-1.c: Likewise.
+ * gcc.dg/analyzer/malloc-paths-8.c: Likewise.
-2020-09-23 Richard Biener <rguenther@suse.de>
+2021-01-15 Jakub Jelinek <jakub@redhat.com>
- PR middle-end/96453
- * gcc.dg/pr96453.c: New testcase.
+ PR tree-optimization/96671
+ * gcc.dg/tree-ssa/pr96671-1.c: New test.
+ * gcc.dg/tree-ssa/pr96671-2.c: New test.
-2020-09-23 Richard Biener <rguenther@suse.de>
+2021-01-15 Jakub Jelinek <jakub@redhat.com>
- PR middle-end/96466
- * gcc.dg/pr96466.c: New testcase.
+ PR tree-optimization/98597
+ * gcc.dg/uninit-38.c: Expect a space in between type name and asterisk.
+ Expect for now a (char *) cast for VLAs.
+ * gcc.dg/uninit-40.c: New test.
-2020-09-23 Richard Sandiford <richard.sandiford@arm.com>
+2021-01-15 Nathan Sidwell <nathan@acm.org>
- * gcc.target/powerpc/p9-vec-length-epil-1.c: Do not expect the
- single-iteration epilogues of the 64-bit loops to be vectorized.
- * gcc.target/powerpc/p9-vec-length-epil-7.c: Likewise.
- * gcc.target/powerpc/p9-vec-length-epil-8.c: Likewise.
+ PR c++/98591
+ * g++.dg/modules/pr98591.H: New file.
-2020-09-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+2021-01-15 Richard Sandiford <richard.sandiford@arm.com>
- PR target/71233
- * gcc.target/aarch64/simd/vrndns_f32_1.c: New test.
+ PR target/88836
+ * gcc.target/aarch64/sve/acle/general/ldff1_8.c: New test.
+ * gcc.target/aarch64/sve/ptest_1.c: Likewise.
-2020-09-23 Richard Biener <rguenther@suse.de>
+2021-01-15 Marius Hillenbrand <mhillen@linux.ibm.com>
- PR tree-optimization/97173
- * gcc.dg/vect/pr97173.c: New testcase.
+ * gcc.target/s390/s390.exp: Call lib atomic-dg.exp to link
+ libatomic into testcases in gcc.target/s390/md.
+ * gcc.target/s390/md/atomic_exchange-1.c: Remove no unnecessary
+ -latomic.
-2020-09-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+2021-01-15 Christophe Lyon <christophe.lyon@linaro.org>
PR target/71233
- * gcc.target/aarch64/simd/trn_zip_p64_1.c: New test.
+ * gcc.target/aarch64/advsimd-intrinsics/p64_p128.c: Add tests for
+ vceqz_p64, vceqq_p64 and vceqzq_p64.
+ * gcc.target/arm/simd/vceqz_p64.c: New test.
+ * gcc.target/arm/simd/vceqzq_p64.c: New test.
-2020-09-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+2021-01-15 Christophe Lyon <christophe.lyon@linaro.org>
- PR target/71233
- * gcc.target/aarch64/simd/vldrq_p128_1.c: New test.
-
-2020-09-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+ Revert:
+ 2021-01-15 Christophe Lyon <christophe.lyon@linaro.org>
PR target/71233
- * gcc.target/aarch64/simd/vstrq_p128_1.c: New test.
-
-2020-09-23 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97151
- * g++.dg/cpp1y/new1.C: Adjust for two more handled transforms.
-
-2020-09-23 Martin Liska <mliska@suse.cz>
-
- PR gcov-profile/97069
- * g++.dg/gcov/pr97069.C: New test.
-
-2020-09-23 Tom de Vries <tdevries@suse.de>
-
- * gcc.dg/Warray-bounds-63.c: Add require-effective-target alloca.
- * gcc.dg/Warray-bounds-66.c: Same.
- * gcc.dg/atomic/stdatomic-vm.c: Same.
-
-2020-09-22 Patrick Palka <ppalka@redhat.com>
-
- PR c++/95310
- * g++.dg/concepts/diagnostic15.C: New test.
-
-2020-09-22 Patrick Palka <ppalka@redhat.com>
+ * gcc.target/aarch64/advsimd-intrinsics/p64_p128.c: Add tests for
+ vceqz_p64, vceqq_p64 and vceqzq_p64.
- PR c++/96652
- * g++.dg/cpp0x/decltype-96652.C: New test.
+2021-01-15 Martin Liska <mliska@suse.cz>
-2020-09-22 Jakub Jelinek <jakub@redhat.com>
+ * lib/gcov.exp: Use 'env python3' for execution of pytests.
+ Check that pytest accepts all needed options first.
+ Improve formatting of PASS/FAIL lines.
- PR c++/97145
- * g++.dg/asan/pr97145.C: New test.
+2021-01-15 Richard Biener <rguenther@suse.de>
-2020-09-22 David Faust <david.faust@oracle.com>
+ PR testsuite/96147
+ * gcc.dg/vect/bb-slp-32.c: Align p.
- * gcc.target/bpf/diag-sdiv.c: New test.
- * gcc.target/bpf/diag-smod.c: New test.
- * gcc.target/bpf/xbpf-sdiv-1.c: New test.
- * gcc.target/bpf/xbpf-smod-1.c: New test.
+2021-01-15 Richard Biener <rguenther@suse.de>
-2020-09-22 Nathan Sidwell <nathan@acm.org>
+ PR testsuite/96147
+ * gcc.dg/vect/bb-slp-9.c: Scan for a vector load transform.
- * g++.old-deja/g++.pt/friend34.C: Check injected friend is still
- invisible.
+2021-01-15 Richard Biener <rguenther@suse.de>
-2020-09-22 Marek Polacek <polacek@redhat.com>
+ PR testsuite/96147
+ * gcc.dg/vect/slp-45.c: Key scanning on
+ vect_hw_misalign.
- * g++.dg/ext/timevar1.C: Also prune N%.
+2021-01-15 Richard Biener <rguenther@suse.de>
-2020-09-22 Marek Polacek <polacek@redhat.com>
+ PR testsuite/96147
+ * gcc.dg/vect/slp-43.c: Remove ! vect_hw_misalign scan.
- * g++.dg/ext/timevar2.C: Also prune N%.
-
-2020-09-22 Martin Liska <mliska@suse.cz>
-
- PR tree-optimization/96979
- * g++.dg/tree-ssa/pr96979.C: New test.
-
-2020-09-22 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
-
- * gcc.target/s390/load-and-test-fp-1.c: Change test to include all
- possible combinations of dead/live registers and comparisons (equality,
- relational).
- * gcc.target/s390/load-and-test-fp-2.c: Same as load-and-test-fp-1.c
- but for fast math.
- * gcc.target/s390/load-and-test-fp.h: New test included by
- load-and-test-fp-{1,2}.c.
-
-2020-09-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
-
- PR target/71233
- * gcc.target/aarch64/simd/vcls_unsigned_1.c: New test.
-
-2020-09-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+2021-01-15 Christophe Lyon <christophe.lyon@linaro.org>
PR target/71233
- * gcc.target/aarch64/simd/vceq_poly_1.c: New test.
-
-2020-09-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
-
- PR target/71233
- * gcc.target/aarch64/simd/vadd_poly_1.c: New test.
-
-2020-09-22 Jan Hubicka <jh@suse.cz>
-
- * gcc.target/i386/m128-check.h: Add no-strict-aliasing
-
-2020-09-21 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/97130
- * gcc.dg/analyzer/pr97130.c: New test.
-
-2020-09-21 Marek Polacek <polacek@redhat.com>
-
- PR c++/90583
- DR 1722
- * g++.dg/cpp0x/lambda/lambda-conv14.C: New test.
-
-2020-09-21 Marek Polacek <polacek@redhat.com>
-
- * g++.dg/warn/Wctad-maybe-unsupported.C: New test.
- * g++.dg/warn/Wctad-maybe-unsupported2.C: New test.
- * g++.dg/warn/Wctad-maybe-unsupported3.C: New test.
- * g++.dg/warn/Wctad-maybe-unsupported.h: New file.
-
-2020-09-21 Martin Sebor <msebor@redhat.com>
-
- PR c/50584
- * gcc.dg/ipa/ipa-sra-1.c: Use a plain pointer for argv instead of array.
- * gcc.dg/ipa/ipa-sra-12.c: Same.
- * gcc.dg/ipa/ipa-sra-13.c: Same.
- * gcc.dg/ipa/ipa-sra-14.c: Same.
- * gcc.dg/ipa/ipa-sra-15.c: Same.
-
-2020-09-21 Harald Anlauf <anlauf@gmx.de>
- Paul Thomas <pault@gcc.gnu.org>
-
- * gfortran.dg/check_bits_2.f90: New test.
-
-2020-09-21 Iain Sandoe <iain@sandoe.co.uk>
-
- * gcc.dg/ipa/symver1.c: Skip for Darwin.
-
-2020-09-21 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc.target/arm/csinc-1.c: Use dg-add-options
- arm_arch_v8_1m_main.
- * gcc.target/arm/csinv-1.c: Likewise.
- * gcc.target/arm/csneg.c: Likewise.
-
-2020-09-21 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97139
- * gcc.dg/vect/pr97139.c: New testcase.
-
-2020-09-21 Marek Polacek <polacek@redhat.com>
-
- PR c++/97099
- * g++.dg/cpp1z/class-deduction74.C: New test.
-
-2020-09-21 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97135
- * gcc.dg/torture/pr97135.c: New testcase.
-
-2020-09-21 Martin Liska <mliska@suse.cz>
-
- PR tree-optimization/96915
- * gcc.target/aarch64/sve/pr96915.c: New test.
-
-2020-09-21 Andrea Corallo <andrea.corallo@arm.com>
-
- PR target/96968
- * gcc.target/aarch64/pr96968.c: New test.
-
-2020-09-21 Martin Liska <mliska@suse.cz>
-
- * g++.dg/ext/timevar1.C: Prune more possible number values.
- * g++.dg/ext/timevar2.C: Likewise.
-
-2020-09-20 Marek Polacek <polacek@redhat.com>
-
- PR c++/90199
- * g++.dg/cpp1y/constexpr-90199.C: New test.
-
-2020-09-19 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/82608
- PR middle-end/94195
- PR c/50584
- PR middle-end/84051
- * c-c++-common/Warray-bounds.c: Adjust.
- * gcc.dg/Wbuiltin-declaration-mismatch-9.c: Adjust.
- * gcc.dg/Warray-bounds-63.c: New test.
- * gcc.dg/Warray-bounds-64.c: New test.
- * gcc.dg/Warray-bounds-65.c: New test.
- * gcc.dg/Warray-bounds-66.c: New test.
- * gcc.dg/Warray-bounds-67.c: New test.
-
-2020-09-19 Martin Sebor <msebor@redhat.com>
-
- PR c/50584
- * c-c++-common/Wsizeof-pointer-memaccess1.c: Disable new expected
- warnings.
- * g++.dg/ext/attr-access.C: Update text of expected warnings.
- * gcc.dg/Wstringop-overflow-23.c: Same.
- * gcc.dg/Wstringop-overflow-24.c: Same.
- * gcc.dg/attr-access-none.c: Same.
- * gcc.dg/dfp/composite-type.c: Prune expected warnings.
- * gcc.dg/torture/pr57147-1.c: Add a member to an otherwise empty
- struct to avoid a warning.
- * gcc.dg/torture/pr57147-3.c: Same.
- * gcc.dg/Warray-bounds-30.c: Adjust.
- * gcc.dg/attr-access-none.c: Same.
- * gcc.dg/Wstringop-overflow-40.c: New test.
- * gcc.dg/attr-access-2.c: New test.
-
-2020-09-19 Martin Sebor <msebor@redhat.com>
-
- * gcc.dg/uninit-37.c: New test.
-
-2020-09-19 Martin Sebor <msebor@redhat.com>
-
- PR c/50584
- * gcc.dg/attr-access-read-write-2.c: Adjust text of expected message.
- * c-c++-common/Warray-bounds-6.c: Correct C++ declaration, adjust
- text of expected diagnostics.
- * gcc.dg/Wbuiltin-declaration-mismatch-9.c: Prune expected warning.
- * gcc.dg/Warray-parameter-2.c: New test.
- * gcc.dg/Warray-parameter-3.c: New test.
- * gcc.dg/Warray-parameter-4.c: New test.
- * gcc.dg/Warray-parameter-5.c: New test.
- * gcc.dg/Warray-parameter.c: New test.
- * gcc.dg/Wvla-parameter-2.c: New test.
- * gcc.dg/Wvla-parameter-3.c: New test.
- * gcc.dg/Wvla-parameter.c: New test.
- * gcc.dg/Wvla-parameter-4.c: New file.
-
-2020-09-19 Sandra Loosemore <sandra@codesourcery.com>
-
- * gcc.dg/gomp/block-7.c: Update expected error message wording.
-
-2020-09-19 Harald Anlauf <anlauf@gmx.de>
-
- * gfortran.dg/pr97036.f90: New test.
-
-2020-09-19 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/96861
- * gcc.target/i386/pr96861.c: New test.
-
-2020-09-19 Patrick Palka <ppalka@redhat.com>
-
- PR c++/96531
- PR c++/97103
- * g++.dg/cpp2a/concepts-ttp2.C: New test.
- * g++.dg/cpp2a/concepts-variadic1.C: New test.
-
-2020-09-19 Patrick Palka <ppalka@redhat.com>
-
- PR c++/97051
- * g++.dg/cpp2a/is-constant-evaluated11.C: New test.
-
-2020-09-19 liuhongt <hongtao.liu@intel.com>
-
- * gcc.target/i386/pr95021-3.c: Add -mtune=generic.
-
-2020-09-18 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/97105
- * g++.dg/template/pr97105.C: New test.
-
-2020-09-18 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/strdup-1.c: New test.
- * gcc.dg/analyzer/strndup-1.c: New test.
-
-2020-09-18 Sudi Das <sudi.das@arm.com>
- Omar Tahir <omar.tahir@arm.com>
-
- * gcc.target/arm/csneg.c: New test.
-
-2020-09-18 Sudi Das <sudi.das@arm.com>
- Omar Tahir <omar.tahir@arm.com>
-
- * gcc.target/arm/csinc-1.c: New test.
-
-2020-09-18 Sudi Das <sudi.das@arm.com>
- Omar Tahir <omar.tahir@arm.com>
-
- * gcc.target/arm/csinv-1.c: New test.
-
-2020-09-18 H.J. Lu <hjl.tools@gmail.com>
- Richard Sandiford <richard.sandiford@arm.com>
-
- PR middle-end/91957
- * g++.target/i386/pr97054.C: New test.
- * gcc.target/i386/pr82673.c: Remove redundant extra message.
-
-2020-09-18 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/97081
- * gcc.dg/vect/pr97081-2.c: New test.
-
-2020-09-18 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97081
- * gcc.dg/vect/pr97081.c: New testcase.
-
-2020-09-18 Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * gcc.target/msp430/operand-modifiers.c: Extend test to handle new
- modifiers.
- * gcc.target/msp430/operand-modifiers-bad.c: New test.
-
-2020-09-18 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/97095
- * gfortran.dg/pr97095.f: New testcase.
-
-2020-09-17 Tom de Vries <tdevries@suse.de>
-
- * lib/target-supports.exp (check_effective_target_non_strict_prototype):
- New proc.
- * gcc.c-torture/compile/pr71109.c: Require effective target
- non_strict_prototype.
- * gcc.c-torture/compile/pr83051-2.c: Same.
- * gcc.c-torture/compile/pr89663-1.c: Same.
- * gcc.c-torture/compile/pr89663-2.c: Same.
- * gcc.c-torture/compile/pr96796.c: Same.
-
-2020-09-17 Yeting Kuo <fakepaper56@gmail.com>
-
- * gcc.target/riscv/shorten-memrefs-8.c: New test.
-
-2020-09-17 Marek Polacek <polacek@redhat.com>
-
- PR c++/87530
- PR c++/58156
- PR c++/68828
- PR c++/86002
- PR c++/91525
- PR c++/96223
- PR c++/87032
- PR c++/35098
- * g++.dg/cpp0x/move-return4.C: New test.
- * g++.dg/cpp0x/vt-58156.C: New test.
- * g++.dg/cpp2a/concepts-pr68828.C: New test.
- * g++.dg/cpp2a/concepts-pr86002.C: New test.
- * g++.dg/cpp2a/concepts-pr91525.C: New test.
- * g++.dg/cpp2a/constexpr-indeterminate1.C: New test.
- * g++.dg/cpp2a/desig17.C: New test.
- * g++.dg/ext/attrib62.C: New test.
-
-2020-09-17 Patrick Palka <ppalka@redhat.com>
-
- PR c/80076
- * c-c++-common/Wmisleading-indentation-5.c: New test.
-
-2020-09-17 Mark Wielaard <mark@klomp.org>
-
- * gcc.dg/debug/dwarf2/inline2.c: Add -gdwarf-2.
- * g++.dg/debug/dwarf2/inline-var-1.C: Likewise.
- * gcc.dg/debug/dwarf2/pr41445-5.c: Likewise.
- * gcc.dg/debug/dwarf2/pr41445-6.c: Likewise.
- * gcc.dg/debug/dwarf2/inline6.c: New variant with -gdwarf-5.
- * g++.dg/debug/dwarf2/inline-var-3.C: Likewise.
- * gcc.dg/debug/dwarf2/pr41445-7.c: Likewise.
- * gcc.dg/debug/dwarf2/pr41445-8.c: Likewise.
-
-2020-09-17 Andre Corallo <andrea.corallo@arm.com>
-
- * gcc.target/aarch64/sve/clastb_8.c: Fix a dg-final scan
- directive.
-
-2020-09-17 Patrick Palka <ppalka@redhat.com>
-
- PR c++/96409
- PR c++/96410
- * g++.dg/cpp2a/concepts-lambda13.C: New test.
- * g++.dg/cpp2a/concepts-lambda14.C: New test.
-
-2020-09-17 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/tree-ssa/ssa-fre-88.c: New testcase.
-
-2020-09-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc.dg/pr97078.c: New test.
-
-2020-09-17 liuhongt <hongtao.liu@intel.com>
-
- * gcc.target/i386/xsave-avx-1.c: New test.
-
-2020-09-16 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96653
- * gcc.dg/analyzer/loop-0-up-to-n-by-1-with-iter-obj.c: Update
- expected number of exploded nodes.
- * gcc.dg/analyzer/malloc-vs-local-1a.c: Update expected number
- of exploded nodes.
- * gcc.dg/analyzer/pr96653.c: Remove -Wno-analyzer-too-complex.
-
-2020-09-16 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/bzip2-arg-parse-1.c: New test.
- * gcc.dg/analyzer/loop-n-down-to-1-by-1.c: Remove xfail.
- * gcc.dg/analyzer/pr94851-1.c: Add xfail.
-
-2020-09-16 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/getchar-1.c: New test.
-
-2020-09-16 Martin Sebor <msebor@redhat.com>
-
- PR c/78666
- PR c/96126
- * gcc.dg/attr-alloc_align-5.c: New test.
- * gcc.dg/attr-alloc_size-13.c: New test.
- * gcc.dg/attr-section.c: New test.
- * c-c++-common/builtin-has-attribute-3.c: Add xfails due to expected
- warnings to be cleaned up.
-
-2020-09-16 Marek Polacek <polacek@redhat.com>
-
- PR preprocessor/96935
- * gcc.dg/format/pr96935.c: New test.
-
-2020-09-16 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/96295
- * g++.dg/warn/Wuninitialized-11.C: New test.
-
-2020-09-16 Nathan Sidwell <nathan@acm.org>
-
- * g++.dg/gomp/udr-2.C: Add additional expected error.
-
-2020-09-16 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/concat4.adb: New test.
-
-2020-09-16 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/97061
- * gfortran.dg/gomp/openmp-simd-6.f90: New test.
-
-2020-09-16 Andrea Corallo <andrea.corallo@arm.com>
-
- * gcc.target/aarch64/sve/cost_model_10.c: New test.
- * gcc.target/aarch64/sve/clastb_8.c: Update test for new
- vectorization strategy.
- * gcc.target/aarch64/sve/cost_model_5.c: Likewise.
- * gcc.target/aarch64/sve/struct_vect_14.c: Likewise.
- * gcc.target/aarch64/sve/struct_vect_15.c: Likewise.
- * gcc.target/aarch64/sve/struct_vect_16.c: Likewise.
- * gcc.target/aarch64/sve/struct_vect_17.c: Likewise.
-
-2020-09-16 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/97032
- * gcc.target/i386/pr97032.c: New test.
-
-2020-09-16 Feng Xue <fxue@os.amperecomputing.com>
-
- PR testsuite/97066
- * gcc.dg/ifcvt-3.c: Modified to suppress simplification.
- * gcc.dg/tree-ssa/20030807-10.c: Likewise.
-
-2020-09-16 Jojo R <jiejie_rong@c-sky.com>
-
- * lib/target-supports.exp (check_profiling_available): Refine name of elf target.
-
-2020-09-16 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/97053
- * gcc.dg/store_merging_31.c: New test.
- * gcc.dg/store_merging_32.c: New test.
-
-2020-09-16 Kewen Lin <linkw@linux.ibm.com>
-
- PR target/97019
- * gcc.target/powerpc/pr97019.c: New test.
-
-2020-09-16 Jojo R <jiejie_rong@c-sky.com>
-
- * gcc.dg/builtin-apply2.c : Skip if CSKY.
- * gcc.dg/torture/stackalign/builtin-apply-2.c : Likewise.
-
-2020-09-15 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96650
- * gcc.dg/analyzer/pr96650-1-notrans.c: New test.
- * gcc.dg/analyzer/pr96650-1-trans.c: New test.
- * gcc.dg/analyzer/pr96650-2-notrans.c: New test.
- * gcc.dg/analyzer/pr96650-2-trans.c: New test.
-
-2020-09-15 Feng Xue <fxue@os.amperecomputing.com>
-
- PR tree-optimization/94234
- * gcc.dg/pr94234-3.c: New test.
-
-2020-09-15 H.J. Lu <hjl.tools@gmail.com>
-
- * gcc.target/i386/pr78904-4a.c: Compile with -mtune=generic.
-
-2020-09-15 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/bb-slp-48.c: New testcase.
- * gcc.dg/vect/bb-slp-7.c: Adjust.
-
-2020-09-15 Andre Vieira <andre.simoesdiasvieira@arm.com>
-
- * gcc.target/arm/pr95646.c: Fix testism.
-
-2020-09-15 Jakub Jelinek <jakub@redhat.com>
-
- PR target/97028
- * gcc.target/i386/avx512f-pr97028.c: Untested fix.
-
-2020-09-15 Feng Xue <fxue@os.amperecomputing.com>
-
- PR tree-optimization/94234
- * gcc.dg/pr94234-2.c: New test.
-
-2020-09-14 Jose E. Marchesi <jose.marchesi@oracle.com>
-
- * gcc.target/bpf/nop-1.c: New test.
-
-2020-09-14 Iain Sandoe <iain@sandoe.co.uk>
-
- * gcc.target/i386/avx512f-broadcast-pr87767-1.c: Make the test
- run as non-dynamic for m32 Darwin.
- * gcc.target/i386/avx512f-broadcast-pr87767-3.c: Likewise.
- * gcc.target/i386/avx512f-broadcast-pr87767-5.c: Likewise.
- * gcc.target/i386/avx512f-broadcast-pr87767-7.c: Likewise.
- * gcc.target/i386/avx512vl-broadcast-pr87767-1.c: Likewise.
- * gcc.target/i386/avx512vl-broadcast-pr87767-3.c: Likewise.
- * gcc.target/i386/avx512vl-broadcast-pr87767-5.c: Likewise.
- * gcc.target/i386/avx512f-broadcast-pr87767-6.c: Adjust dg-requires
- clause.
-
-2020-09-14 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96653
- * gcc.dg/analyzer/pr96653.c: New test.
-
-2020-09-14 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/rhbz1878600.c: New test.
-
-2020-09-14 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/pr97029.c: New test.
-
-2020-09-14 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/thunk1.adb: New test.
- * gnat.dg/thunk1_pkg1.ads: New helper.
- * gnat.dg/thunk1_pkg2.ads: Likewise.
- * gnat.dg/thunk1_pkg2.adb: Likewise.
-
-2020-09-12 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/97002
- * gdc.dg/pr97002.d: New test.
-
-2020-09-11 Nathan Sidwell <nathan@acm.org>
-
- * g++.dg/concepts/local-extern.C: New file.
-
-2020-09-11 Will Schmidt <will_schmidt@vnet.ibm.com>
-
- * gcc.target/powerpc/pr96139-a.c: Specify -mvsx option and update the
- dg-require stanza to match.
- * gcc.target/powerpc/pr96139-b.c: Same.
- * gcc.target/powerpc/pr96139-c.c: Specify -maltivec option and update
- the dg-require stanza to match.
-
-2020-09-11 Sunil K Pandey <skpgkp2@gmail.com>
-
- PR target/97018
- * gcc.target/i386/l_fma_double_1.c: Add option -mno-avx512f.
- * gcc.target/i386/l_fma_double_2.c: Likewise.
- * gcc.target/i386/l_fma_double_3.c: Likewise.
- * gcc.target/i386/l_fma_double_4.c: Likewise.
- * gcc.target/i386/l_fma_double_5.c: Likewise.
- * gcc.target/i386/l_fma_double_6.c: Likewise.
- * gcc.target/i386/l_fma_float_1.c: Likewise.
- * gcc.target/i386/l_fma_float_2.c: Likewise.
- * gcc.target/i386/l_fma_float_3.c: Likewise.
- * gcc.target/i386/l_fma_float_4.c: Likewise.
- * gcc.target/i386/l_fma_float_5.c: Likewise.
- * gcc.target/i386/l_fma_float_6.c: Likewise.
-
-2020-09-11 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/96903
- * gcc.dg/Wstringop-overflow-42.c:: Add comment.
- * gcc.dg/Wstringop-overflow-43.c: New test.
-
-2020-09-11 Nathan Sidwell <nathan@acm.org>
-
- * obj-c++.dg/syntax-error-9.mm: Adjust expected errors.
-
-2020-09-11 Andrew Stubbs <ams@codesourcery.com>
-
- * gcc.dg/gimplefe-44.c: Require exceptions.
-
-2020-09-11 Andrea Corallo <andrea.corallo@arm.com>
-
- * jit.dg/all-non-failing-tests.h: Add test-blob.c.
- * jit.dg/test-global-set-initializer.c: New testcase.
-
-2020-09-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/pack27.adb: New test.
- * gnat.dg/pack27_pkg.ads: New helper.
-
-2020-09-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/specs/discr7.ads: New test.
-
-2020-09-11 Tom de Vries <tdevries@suse.de>
-
- * gcc.target/nvptx/int128.c: New test.
-
-2020-09-11 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96798
- * gcc.dg/analyzer/memcpy-1.c: New test.
- * gcc.dg/analyzer/strcpy-1.c: New test.
-
-2020-09-10 Alex Coplan <alex.coplan@arm.com>
-
- * gcc.target/aarch64/acle/armv8-r.c: New test.
-
-2020-09-10 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * gdc.dg/Waddress.d: New test.
- * gdc.dg/Wcastresult1.d: New test.
- * gdc.dg/Wcastresult2.d: New test.
-
-2020-09-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/specs/size_clause5.ads: New test.
-
-2020-09-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/discr59.adb: New test.
- * gnat.dg/discr59_pkg1.ads: New helper.
- * gnat.dg/discr59_pkg2.ads: Likewise.
-
-2020-09-10 Jakub Jelinek <jakub@redhat.com>
-
- PR target/96939
- * gcc.target/arm/lto/pr96939_0.c: New test.
- * gcc.target/arm/lto/pr96939_1.c: New file.
-
-2020-09-10 Tom de Vries <tdevries@suse.de>
-
- * gcc.dg/analyzer/vla-1.c: Add require-effective-target alloca.
-
-2020-09-10 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96043
- * gcc.dg/vect/costmodel/x86_64/costmodel-pr69297.c: Adjust.
-
-2020-09-09 Marek Polacek <polacek@redhat.com>
-
- PR c++/77841
- * g++.old-deja/g++.ext/arrnew2.C: Expect the error only in C++17
- and less.
- * g++.old-deja/g++.robertl/eb58.C: Adjust dg-error.
- * g++.old-deja/g++.robertl/eb63.C: Expect the error only in C++17
- and less.
- * g++.dg/cpp2a/new-array5.C: New test.
- * g++.dg/cpp2a/paren-init36.C: New test.
- * g++.dg/cpp2a/paren-init37.C: New test.
- * g++.dg/pr84729.C: Adjust dg-error.
-
-2020-09-09 Marek Polacek <polacek@redhat.com>
-
- PR c++/95164
- * g++.dg/cpp0x/initlist123.C: New test.
-
-2020-09-09 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/94355
- * g++.dg/analyzer/new-1.C: New test.
- * g++.dg/analyzer/new-vs-malloc.C: New test.
-
-2020-09-09 Marek Polacek <polacek@redhat.com>
-
- * g++.dg/warn/Wnonnull6.C: Use target c++14.
-
-2020-09-09 Marek Polacek <polacek@redhat.com>
-
- * g++.dg/cpp0x/auto-96647.C: Moved to...
- * g++.dg/cpp1y/auto-96647.C: ...here. Use target c++14.
-
-2020-09-09 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/96955
- * gcc.target/i386/builtin_thread_pointer.c: Update scan-assembler
- for x32.
-
-2020-09-09 Patrick Palka <ppalka@redhat.com>
-
- PR c++/96647
- * g++.dg/cpp0x/auto-96647.C: New test.
- * g++.dg/cpp0x/error9.C: New test.
- * g++.dg/cpp2a/concepts-fn6.C: New test.
-
-2020-09-09 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/vect-live-6.c: New testcase.
-
-2020-09-09 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/combined-if.f90: Update scan-tree-dump-times for
- 'omp simd.*if' for nvptx even more.
-
-2020-09-09 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/vect-cond-13.c: New testcase.
- * gcc.target/i386/pr87007-4.c: Adjust.
- * gcc.target/i386/pr87007-5.c: Likewise.
-
-2020-09-09 liuhongt <hongtao.liu@intel.com>
-
- * gcc.target/i386/builtin_thread_pointer.c: New test.
-
-2020-09-09 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/95109
- PR fortran/94690
- * gfortran.dg/gomp/combined-if.f90: Update scan-tree-dump-times for
- 'omp simd.*if'.
- * gfortran.dg/gomp/openmp-simd-5.f90: New test.
-
-2020-09-08 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96949
- * gfortran.dg/analyzer/pr96949.f90: New test.
-
-2020-09-08 Aldy Hernandez <aldyh@redhat.com>
-
- PR tree-optimization/96967
- * gcc.dg/tree-ssa/pr96967.c: New file.
-
-2020-09-08 Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * gcc.target/msp430/mcpu-is-430.c: New test.
- * gcc.target/msp430/mcpu-is-430x.c: New test.
- * gcc.target/msp430/mcpu-is-430xv2.c: New test.
-
-2020-09-07 Harald Anlauf <anlauf@gmx.de>
-
- * gfortran.dg/pr96711.f90: New test.
-
-2020-09-07 Richard Sandiford <richard.sandiford@arm.com>
-
- PR rtl-optimization/96796
- * gcc.c-torture/compile/pr96796.c: New test.
-
-2020-09-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * gcc.target/msp430/430x-default-isa.c: New test.
-
-2020-09-07 Iain Sandoe <iain@sandoe.co.uk>
-
- * gcc.dg/pubtypes-2.c: Amend Pub Info Length.
- * gcc.dg/pubtypes-3.c: Likewise.
- * gcc.dg/pubtypes-4.c: Likewise.
-
-2020-09-07 Alex Coplan <alex.coplan@arm.com>
-
- * gcc.target/aarch64/adds3.c: Fix test w.r.t. new syntax.
- * gcc.target/aarch64/cmp.c: Likewise.
- * gcc.target/aarch64/subs3.c: Likewise.
- * gcc.target/aarch64/subsp.c: Likewise.
- * gcc.target/aarch64/extend-syntax.c: New test.
-
-2020-09-07 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/96896
- * gfortran.dg/ptr_func_assign_4.f08: Update dg-error.
- * gfortran.dg/ptr-func-3.f90: New test.
-
-2020-09-07 liuhongt <hongtao.liu@intel.com>
-
- * gcc.dg/vect/slp-46.c: Add --param vect-epilogues-nomask=0 to
- void backend interference.
-
-2020-09-07 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/bb-slp-46.c: New testcase.
- * gcc.dg/vect/bb-slp-47.c: Likewise.
- * gcc.dg/vect/bb-slp-32.c: Adjust.
-
-2020-09-07 liuhongt <hongtao.liu@intel.com>
-
- * gcc.target/i386/pr92658-avx512bw-trunc.c: Add
- -mprefer-vector-width=512 to avoid impact of different default
- tune which gcc is built with.
-
-2020-09-06 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
-
- * gfortran.dg/coarray_fail_st.f90: Adjust test.
-
-2020-09-04 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/96924
- * gdc.dg/simd13927b.d: Removed.
- * gdc.dg/pr96924.d: New test.
-
-2020-09-04 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96698
- PR tree-optimization/96920
- * gfortran.dg/vect/pr96920.f90: New testcase.
- * gcc.dg/vect/pr96920.c: Likewise.
-
-2020-09-04 Christophe Lyon <christophe.lyon@linaro.org>
-
- PR target/96769
- * gcc.target/arm/pure-code/pr96769.c: New test.
-
-2020-09-04 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96931
- * gcc.dg/pr96931.c: New testcase.
-
-2020-09-04 David Faust <david.faust@oracle.com>
-
- * gcc.target/bpf/xbpf-indirect-call-1.c: New test.
-
-2020-09-04 Kewen Lin <linkw@gcc.gnu.org>
-
- * gcc.target/powerpc/pr92398.p9+.c: Replace p9+ with has_arch_pwr9.
- * gcc.target/powerpc/pr92398.p9-.c: Replace p9+ with has_arch_pwr9,
- and replace p8 with has_arch_pwr8 && !has_arch_pwr9.
- * lib/target-supports.exp (check_effective_target_p8): Remove.
- (check_effective_target_p9+): Remove.
-
-2020-09-03 Martin Jambor <mjambor@suse.cz>
-
- PR tree-optimization/96820
- * gcc.dg/tree-ssa/pr96820.c: New test.
-
-2020-09-03 Will Schmidt <will_schmidt@vnet.ibm.com>
-
- * gcc.target/powerpc/pr96139-a.c: New test.
- * gcc.target/powerpc/pr96139-b.c: New test.
- * gcc.target/powerpc/pr96139-c.c: New test.
-
-2020-09-03 Harald Anlauf <anlauf@gmx.de>
-
- * gfortran.dg/iall_masked.f90: New test.
-
-2020-09-03 Marek Polacek <polacek@redhat.com>
-
- PR c++/92812
- * g++.dg/cpp0x/constexpr-array23.C: Adjust dg-error.
- * g++.dg/cpp0x/initlist69.C: Likewise.
- * g++.dg/diagnostic/mem-init1.C: Likewise.
- * g++.dg/init/array28.C: Likewise.
- * g++.dg/cpp2a/paren-init33.C: New test.
- * g++.dg/cpp2a/paren-init34.C: New test.
- * g++.dg/cpp2a/paren-init35.C: New test.
- * g++.old-deja/g++.brendan/crash60.C: Adjust dg-error.
- * g++.old-deja/g++.law/init10.C: Likewise.
- * g++.old-deja/g++.other/array3.C: Likewise.
-
-2020-09-03 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/96862
- * g++.dg/cpp1z/constexpr-96862.C: New test.
-
-2020-09-03 Hongtao Liu <hongtao.liu@intel.com>
-
- PR target/87767
- * gcc.target/i386/avx2-broadcast-pr87767-1.c: New test.
- * gcc.target/i386/avx512f-broadcast-pr87767-1.c: New test.
- * gcc.target/i386/avx512f-broadcast-pr87767-2.c: New test.
- * gcc.target/i386/avx512f-broadcast-pr87767-3.c: New test.
- * gcc.target/i386/avx512f-broadcast-pr87767-4.c: New test.
- * gcc.target/i386/avx512f-broadcast-pr87767-5.c: New test.
- * gcc.target/i386/avx512f-broadcast-pr87767-6.c: New test.
- * gcc.target/i386/avx512f-broadcast-pr87767-7.c: New test.
- * gcc.target/i386/avx512vl-broadcast-pr87767-1.c: New test.
- * gcc.target/i386/avx512vl-broadcast-pr87767-1.c: New test.
- * gcc.target/i386/avx512vl-broadcast-pr87767-2.c: New test.
- * gcc.target/i386/avx512vl-broadcast-pr87767-3.c: New test.
- * gcc.target/i386/avx512vl-broadcast-pr87767-4.c: New test.
- * gcc.target/i386/avx512vl-broadcast-pr87767-5.c: New test.
- * gcc.target/i386/avx512vl-broadcast-pr87767-6.c: New test.
-
-2020-09-03 liuhongt <hongtao.liu@intel.com>
-
- PR target/96246
- PR target/96855
- PR target/96856
- PR target/96857
- * g++.target/i386/avx512bw-pr96246-2.C: Add runtime check for
- AVX512BW.
- * g++.target/i386/avx512vl-pr96246-2.C: Add runtime check for
- AVX512BW and AVX512VL
- * g++.target/i386/avx512f-helper.h: New header.
- * gcc.target/i386/pr92658-avx512f.c: Add
- -mprefer-vector-width=512 to avoid impact of different default
- mtune which gcc is built with.
- * gcc.target/i386/avx512bw-pr95488-1.c: Ditto.
- * gcc.target/i386/pr92645-4.c: Add -mno-avx512f to avoid
- impact of different default march which gcc is built with.
-
-2020-09-02 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/96869
- * gdc.dg/simd.d: Removed.
- * gdc.dg/cast1.d: New test.
- * gdc.dg/gdc213.d: Compile with target vect_sizes_16B_8B.
- * gdc.dg/gdc284.d: Likewise.
- * gdc.dg/gdc67.d: Likewise.
- * gdc.dg/pr96869.d: New test.
- * gdc.dg/simd1.d: New test.
- * gdc.dg/simd10447.d: New test.
- * gdc.dg/simd12776.d: New test.
- * gdc.dg/simd13841.d: New test.
- * gdc.dg/simd13927.d: New test.
- * gdc.dg/simd15123.d: New test.
- * gdc.dg/simd15144.d: New test.
- * gdc.dg/simd16087.d: New test.
- * gdc.dg/simd16697.d: New test.
- * gdc.dg/simd17237.d: New test.
- * gdc.dg/simd17695.d: New test.
- * gdc.dg/simd17720a.d: New test.
- * gdc.dg/simd17720b.d: New test.
- * gdc.dg/simd19224.d: New test.
- * gdc.dg/simd19627.d: New test.
- * gdc.dg/simd19628.d: New test.
- * gdc.dg/simd19629.d: New test.
- * gdc.dg/simd19630.d: New test.
- * gdc.dg/simd2a.d: New test.
- * gdc.dg/simd2b.d: New test.
- * gdc.dg/simd2c.d: New test.
- * gdc.dg/simd2d.d: New test.
- * gdc.dg/simd2e.d: New test.
- * gdc.dg/simd2f.d: New test.
- * gdc.dg/simd2g.d: New test.
- * gdc.dg/simd2h.d: New test.
- * gdc.dg/simd2i.d: New test.
- * gdc.dg/simd2j.d: New test.
- * gdc.dg/simd7951.d: New test.
- * gdc.dg/torture/array2.d: New test.
- * gdc.dg/torture/array3.d: New test.
- * gdc.dg/torture/simd16488a.d: New test.
- * gdc.dg/torture/simd16488b.d: New test.
- * gdc.dg/torture/simd16703.d: New test.
- * gdc.dg/torture/simd19223.d: New test.
- * gdc.dg/torture/simd19607.d: New test.
- * gdc.dg/torture/simd3.d: New test.
- * gdc.dg/torture/simd4.d: New test.
- * gdc.dg/torture/simd7411.d: New test.
- * gdc.dg/torture/simd7413a.d: New test.
- * gdc.dg/torture/simd7413b.d: New test.
- * gdc.dg/torture/simd7414.d: New test.
- * gdc.dg/torture/simd9200.d: New test.
- * gdc.dg/torture/simd9304.d: New test.
- * gdc.dg/torture/simd9449.d: New test.
- * gdc.dg/torture/simd9910.d: New test.
- * gdc.dg/simd13927b.d: New file.
-
-2020-09-02 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * lib/gdc-utils.exp (gdc-convert-test): Handle LINK directive.
- Set PERMUTE_ARGS as DEFAULT_DFLAGS only for runnable tests.
- (gdc-do-test): Set default action of compilable tests to compile.
- Test SHARED_OPTION on runnable_cxx tests.
-
-2020-09-02 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * gdc.dg/dg.exp: Remove torture options.
- * gdc.dg/gdc115.d: Move test to gdc.dg/torture.
- * gdc.dg/gdc131.d: Likewise.
- * gdc.dg/gdc141.d: Likewise.
- * gdc.dg/gdc17.d: Likewise.
- * gdc.dg/gdc171.d: Likewise.
- * gdc.dg/gdc179.d: Likewise.
- * gdc.dg/gdc186.d: Likewise.
- * gdc.dg/gdc187.d: Likewise.
- * gdc.dg/gdc191.d: Likewise.
- * gdc.dg/gdc198.d: Likewise.
- * gdc.dg/gdc200.d: Likewise.
- * gdc.dg/gdc210.d: Likewise.
- * gdc.dg/gdc240.d: Likewise.
- * gdc.dg/gdc242b.d: Likewise.
- * gdc.dg/gdc248.d: Likewise.
- * gdc.dg/gdc250.d: Likewise.
- * gdc.dg/gdc273.d: Likewise.
- * gdc.dg/gdc283.d: Likewise.
- * gdc.dg/gdc285.d: Likewise.
- * gdc.dg/gdc286.d: Likewise.
- * gdc.dg/gdc309.d: Likewise.
- * gdc.dg/gdc35.d: Likewise.
- * gdc.dg/gdc36.d: Likewise.
- * gdc.dg/gdc51.d: Likewise.
- * gdc.dg/gdc57.d: Likewise.
- * gdc.dg/gdc66.d: Likewise.
- * gdc.dg/imports/gdc36.d: Likewise.
- * gdc.dg/init1.d: Likewise.
- * gdc.dg/pr92309.d: Likewise.
- * gdc.dg/pr94424.d: Likewise.
- * gdc.dg/pr94777b.d: Likewise.
- * gdc.dg/pr96152.d: Likewise.
- * gdc.dg/pr96153.d: Likewise.
- * gdc.dg/pr96156.d: Likewise.
- * gdc.dg/pr96157a.d: Likewise.
- * gdc.dg/torture/torture.exp: New file.
- * gdc.dg/torture/gdc115.d: New file.
- * gdc.dg/torture/gdc131.d: New file.
- * gdc.dg/torture/gdc141.d: New file.
- * gdc.dg/torture/gdc17.d: New file.
- * gdc.dg/torture/gdc171.d: New file.
- * gdc.dg/torture/gdc179.d: New file.
- * gdc.dg/torture/gdc186.d: New file.
- * gdc.dg/torture/gdc187.d: New file.
- * gdc.dg/torture/gdc191.d: New file.
- * gdc.dg/torture/gdc198.d: New file.
- * gdc.dg/torture/gdc200.d: New file.
- * gdc.dg/torture/gdc210.d: New file.
- * gdc.dg/torture/gdc240.d: New file.
- * gdc.dg/torture/gdc242b.d: New file.
- * gdc.dg/torture/gdc248.d: New file.
- * gdc.dg/torture/gdc250.d: New file.
- * gdc.dg/torture/gdc273.d: New file.
- * gdc.dg/torture/gdc283.d: New file.
- * gdc.dg/torture/gdc285.d: New file.
- * gdc.dg/torture/gdc286.d: New file.
- * gdc.dg/torture/gdc309.d: New file.
- * gdc.dg/torture/gdc35.d: New file.
- * gdc.dg/torture/gdc36.d: New file.
- * gdc.dg/torture/gdc51.d: New file.
- * gdc.dg/torture/gdc57.d: New file.
- * gdc.dg/torture/gdc66.d: New file.
- * gdc.dg/torture/imports/gdc36.d: New file.
- * gdc.dg/torture/init1.d: New file.
- * gdc.dg/torture/pr92309.d: New file.
- * gdc.dg/torture/pr94424.d: New file.
- * gdc.dg/torture/pr94777b.d: New file.
- * gdc.dg/torture/pr96152.d: New file.
- * gdc.dg/torture/pr96153.d: New file.
- * gdc.dg/torture/pr96156.d: New file.
- * gdc.dg/torture/pr96157a.d: New file.
-
-2020-09-02 Jonathan Wakely <jwakely@redhat.com>
-
- PR c++/60304
- * g++.dg/warn/Wconversion-null-5.C: New test.
-
-2020-09-02 Jonathan Wakely <jwakely@redhat.com>
-
- * g++.old-deja/g++.abi/cxa_vec.C: Include <exception> for
- std::set_terminate.
-
-2020-09-02 Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * gcc.dg/pr55940.c: Skip for msp430 unless -mlarge is specified.
-
-2020-09-02 Jakub Jelinek <jakub@redhat.com>
-
- PR fortran/96859
- * gfortran.dg/pr96859.f90: New test.
-
-2020-09-01 Martin Sebor <msebor@redhat.com>
-
- * gcc.dg/Wstringop-overflow.c: Remove xfails.
- * gcc.dg/Wstringop-overflow-42.c: New test.
- * gcc.dg/Wstringop-overread-4.c: New test.
-
-2020-09-01 Marek Polacek <polacek@redhat.com>
-
- PR c++/77841
- * g++.dg/cpp0x/initlist-new4.C: New test.
-
-2020-09-01 Peter Bergner <bergner@linux.ibm.com>
-
- PR target/96808
- * gcc.target/powerpc/pr96808.c: New test.
-
-2020-09-01 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96792
- * gcc.dg/analyzer/pr96792.c: New test.
-
-2020-09-01 Steven G. Kargl <kargl@gcc.gnu.org>
-
- PR fortran/95398
- * gfortran.dg/pr95398.f90: New test.
-
-2020-09-01 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/96867
- * c-c++-common/gomp/pr96867.c: New test.
-
-2020-09-01 Kewen Lin <linkw@gcc.gnu.org>
-
- * lib/target-supports.exp
- (check_effective_target_vect_len_load_store): Call check function
- check_effective_target_has_arch_pwr9.
-
-2020-08-31 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96798
- * gcc.dg/analyzer/memset-1.c (test_5a): New.
-
-2020-08-31 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96860
- * gcc.dg/analyzer/pr96860-1.c: New test.
- * gcc.dg/analyzer/pr96860-2.c: New test.
-
-2020-08-31 Marek Polacek <polacek@redhat.com>
- Jason Merrill <jason@redhat.com>
-
- PR c++/93529
- * g++.dg/cpp0x/sfinae4.C: Adjust expected result after P1009.
- * g++.dg/cpp2a/new-array1.C: New test.
- * g++.dg/cpp2a/new-array2.C: New test.
- * g++.dg/cpp2a/new-array3.C: New test.
- * g++.dg/cpp2a/new-array4.C: New test.
-
-2020-08-31 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96763
- * g++.dg/analyzer/pr96763.C: New test.
-
-2020-08-31 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96764
- * gcc.dg/analyzer/pr96764.c: New test.
-
-2020-08-31 Aldy Hernandez <aldyh@redhat.com>
-
- PR tree-optimization/96818
- * g++.dg/pr96818.C: New file.
- * gcc.dg/pr96818.c: New file.
-
-2020-08-31 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96854
- * gcc.dg/vect/pr96854.c: New testcase.
-
-2020-08-31 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc.target/aarch64/strcmpopt_6.c: Suppress -Wstringop-overread.
-
-2020-08-31 liuhongt <hongtao.liu@intel.com>
-
- * gcc.target/i386/avx512f-pr96551-1.c: New test.
- * gcc.target/i386/avx512f-pr96551-2.c: New test.
-
-2020-08-31 Feng Xue <fxue@os.amperecomputing.com>
-
- PR ipa/96806
- * g++.dg/ipa/pr96806.C: New test.
-
-2020-08-31 Kewen Lin <linkw@gcc.gnu.org>
-
- * gcc.dg/vect/bb-slp-pr69907.c: Adjust for partial vector usages.
- * gcc.dg/vect/slp-3.c: Likewise.
- * gcc.dg/vect/slp-multitypes-11.c: Likewise.
- * gcc.dg/vect/slp-perm-1.c: Likewise.
- * gcc.dg/vect/slp-perm-5.c: Likewise.
- * gcc.dg/vect/slp-perm-6.c: Likewise.
- * gcc.dg/vect/slp-perm-7.c: Likewise.
- * gcc.dg/vect/slp-perm-8.c: Likewise.
- * gcc.dg/vect/slp-perm-9.c: Likewise.
- * gcc.dg/vect/vect-version-2.c: Likewise.
- * lib/target-supports.exp (check_vect_partial_vector_usage): New
- function.
- (check_effective_target_vect_len_load_store): Likewise.
- (check_effective_target_vect_partial_vectors_usage_1): Likewise.
- (check_effective_target_vect_partial_vectors_usage_2): Likewise.
- (check_effective_target_vect_partial_vectors): Likewise.
-
-2020-08-30 Martin Sebor <msebor@redhat.com>
-
- * gcc.dg/Wstringop-overread-3.c: New test.
-
-2020-08-30 José Rui Faustino de Sousa <jrfsousa@gmail.com>
-
- PR fortran/96728
- * gfortran.dg/PR96728.f90: New test.
-
-2020-08-30 José Rui Faustino de Sousa <jrfsousa@gmail.com>
-
- PR fortran/96727
- * gfortran.dg/PR96727.f90: New test.
-
-2020-08-30 José Rui Faustino de Sousa <jrfsousa@gmail.com>
-
- PR fortran/96726
- * gfortran.dg/PR96726.f90: New test.
-
-2020-08-30 Steve Kargl <sgk@troutmask.apl.washington.edu>
-
- * gfortran.dg/PR95352.f90: New test.
-
-2020-08-30 José Rui Faustino de Sousa <jrfsousa@gmail.com>
-
- PR fortran/94110
- * gfortran.dg/PR94110.f90: New test.
-
-2020-08-28 Martin Sebor <msebor@redhat.com>
-
- * c-c++-common/Warray-bounds-7.c: Adjust expected warnings.
- * c-c++-common/Wrestrict.c: Remove xfail.
- * c-c++-common/attr-nonstring-3.c: Adjust text of expected warnings.
- * c-c++-common/attr-nonstring-6.c: Suppress -Wstringop-overread
- instead of -Wstringop-overflow.
- * c-c++-common/attr-nonstring-8.c: Adjust text of expected warnings.
- * g++.dg/torture/Wsizeof-pointer-memaccess1.C: Also suppress
- -Wstringop-overread.
- * g++.dg/torture/Wsizeof-pointer-memaccess2.C: Same.
- * gcc.dg/Warray-bounds-39.c: Adjust expected warnings.
- * gcc.dg/Warray-bounds-40.c: Also suppress -Wstringop-overread.
- * gcc.dg/Warray-bounds-58.c: Remove xfail. Also expect
- -Wstringop-overread. Adjust text of expected warnings.
- * gcc.dg/Wsizeof-pointer-memaccess1.c: Also suppress
- -Wstringop-overread.
- * gcc.dg/Wstringop-overflow-22.c: Adjust text of expected warnings.
- * gcc.dg/Wstringop-overflow-33.c: Expect -Wstringop-overread.
- * gcc.dg/Wstringop-overflow-9.c: Expect -Wstringop-overread.
- * gcc.dg/attr-nonstring-2.c: Adjust text of expected warnings.
- * gcc.dg/attr-nonstring-3.c: Same.
- * gcc.dg/attr-nonstring-4.c: Same.
- * gcc.dg/attr-nonstring.c: Expect -Wstringop-overread.
- * gcc.dg/builtin-stringop-chk-5.c: Adjust comment.
- * gcc.dg/builtin-stringop-chk-8.c: Enable -Wstringop-overread instead
- of -Wstringop-overflow.
- * gcc.dg/pr78902.c: Also expect -Wstringop-overread.
- * gcc.dg/pr79214.c: Adjust text of expected warnings.
- * gcc.dg/strcmpopt_10.c: Suppress valid -Wno-stringop-overread.
- * gcc.dg/strlenopt-57.c: Also expect -Wstringop-overread.
- * gcc.dg/torture/Wsizeof-pointer-memaccess1.c: Also suppress valid
- -Wno-stringop-overread.
- * gcc.dg/tree-ssa/builtins-folding-gimple-ub.c: Same.
- * gcc.dg/uninit-33.c: Same.
- * gcc.dg/warn-strnlen-no-nul-2.c: Adjust text of expected warning.
- * gcc.dg/warn-strnlen-no-nul.c: Same.
- * gcc.target/i386/strcmpopt_6.c: Suppress -Wstringop-overread.
- * gcc.dg/Wstringop-overread-2.c: New test.
- * gcc.dg/Wstringop-overread.c: New test.
-
-2020-08-28 Martin Sebor <msebor@redhat.com>
-
- PR c/96596
- * gcc.dg/Wbuiltin-declaration-mismatch-16.c: New test.
-
-2020-08-28 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/94672
- * gfortran.dg/optional_assumed_charlen_2.f90: New test.
-
-2020-08-28 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
-
- PR target/96357
- * gcc.target/aarch64/sve/pr96357.c: New test.
-
-2020-08-28 Alex Coplan <alex.coplan@arm.com>
-
- * gcc.target/aarch64/mem-shift-canonical.c: Skip on ILP32.
-
-2020-08-28 Paul Thomas <pault@gcc.gnu.org>
-
- PR fortran/96624
- * gfortran.dg/reshape_8.f90 : New test.
-
-2020-08-28 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc.dg/pr96579.c: Compile only with target dfp.
-
-2020-08-28 Uros Bizjak <ubizjak@gmail.com>
-
- * gcc.target/i386/double_mask_reg-1.c: New test.
-
-2020-08-27 John David Anglin <danglin@gcc.gnu.org>
-
- * gcc.target/hppa/shadd-2.c: Adjust times to 4.
-
-2020-08-27 Jakub Jelinek <jakub@redhat.com>
-
- PR target/65146
- * gcc.target/i386/pr65146.c: New test.
-
-2020-08-27 Bill Schmidt <wschmidt@linux.ibm.com>
-
- PR target/96787
- * gcc.target/powerpc/pr96787-1.c: New.
- * gcc.target/powerpc/pr96787-2.c: New.
-
-2020-08-27 Mark Eggleston <markeggleston@gcc.gnu.org>
-
- PR fortran/95882
- * gfortran.dg/pr95882_1.f90: New test.
- * gfortran.dg/pr95882_2.f90: New test.
- * gfortran.dg/pr95882_3.f90: New test.
- * gfortran.dg/pr95882_4.f90: New test.
- * gfortran.dg/pr95882_5.f90: New test.
-
-2020-08-27 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96522
- * gcc.dg/torture/pr96522.c: New testcase.
-
-2020-08-27 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/tree-ssa/loop-19.c: Adjust.
- * gcc.dg/tree-ssa/loop-2.c: Likewise.
- * gcc.dg/tree-ssa/loop-3.c: Likewise.
-
-2020-08-27 Alex Coplan <alex.coplan@arm.com>
-
- * gcc.target/aarch64/mem-shift-canonical.c: New test.
-
-2020-08-27 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96579
- * gcc.dg/pr96579.c: New testcase.
-
-2020-08-27 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96565
- * gcc.dg/tree-ssa/ssa-dse-40.c: New testcase.
- * gcc.dg/builtin-object-size-4.c: Adjust.
-
-2020-08-26 Jeff Law <law@redhat.com>
-
- * gcc.target/i386/387-7.c: Add dg-require-effective-target c99_runtime.
- * gcc.target/i386/387-9.c: Likewise.
- * g++.target/i386/avx512bw-pr96246-1.C: Likewise.
- * gcc.target/i386/avx512f-rint-sfix-vec-2.c: Likewise.
- * gcc.target/i386/avx512f-rintf-sfix-vec-2.c: Likewise.
- * g++.target/i386/avx512vl-pr96246-1.C: Likewise.
- * gcc.target/i386/pr61403.c: Likewise.
- * gcc.target/i386/sse4_1-ceil-sfix-vec.c: Likewise.
- * gcc.target/i386/sse4_1-ceilf-sfix-vec.c: Likewise.
- * gcc.target/i386/sse4_1-floor-sfix-vec.c: Likewise.
- * gcc.target/i386/sse4_1-floorf-sfix-vec.c: Likewise.
- * gcc.target/i386/sse4_1-rint-sfix-vec.c: Likewise.
- * gcc.target/i386/sse4_1-rintf-sfix-vec.c: Likewise.
- * gcc.target/i386/sse4_1-round-sfix-vec.c: Likewise.
- * gcc.target/i386/sse4_1-roundf-sfix-vec.c: Likewise.
-
-2020-08-26 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/96802
- * gcc.target/i386/pr96802-1.c: New test.
- * gcc.target/i386/pr96802-2.c: Likewise.
-
-2020-08-26 Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * gcc.target/msp430/emulate-srli.c: Fix expected assembler text.
- * gcc.target/msp430/max-inline-shift-430-no-opt.c: New test.
- * gcc.target/msp430/max-inline-shift-430.c: New test.
- * gcc.target/msp430/max-inline-shift-430x.c: New test.
-
-2020-08-26 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96698
- * gcc.dg/vect/pr96698.c: New testcase.
-
-2020-08-26 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96783
- * gcc.dg/vect/pr96783-1.c: New testcase.
- * gcc.dg/vect/pr96783-2.c: Likewise.
-
-2020-08-26 Nathan Sidwell <nathan@acm.org>
-
- * g++.dg/lookup/operator-1.C: New.
- * g++.dg/lookup/operator-2.C: New.
-
-2020-08-26 Qian Jianhua <qianjh@cn.fujitsu.com>
-
- * gcc.target/aarch64/insv_1.c: Add '#' in scan-assembler
-
-2020-08-26 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/96156
- * gdc.dg/pr96156.d: New test.
-
-2020-08-26 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/96153
- * gdc.dg/pr96153.d: Add new tests.
-
-2020-08-26 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/96157
- * gdc.dg/pr96157a.d: New test.
- * gdc.dg/pr96157b.d: New test.
-
-2020-08-26 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * lib/gdc-utils.exp (gdc-convert-test): Clear PERMUTE_ARGS for
- fail_compilation tests if not set by test file.
-
-2020-08-26 Martin Liska <mliska@suse.cz>
-
- * lib/target-supports-dg.exp: Add dg-require-symver.
- * lib/target-supports.exp: Likewise.
- * gcc.dg/ipa/symver1.c: New test.
-
-2020-08-26 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/declare-target-4.f90: New test.
- * gfortran.dg/gomp/declare-target-5.f90: New test.
-
-2020-08-26 liuhongt <hongtao.liu@intel.com>
-
- PR target/96667
- * gcc.target/i386/avx512bw-pr96246-1.c: Moved to...
- * g++.target/i386/avx512bw-pr96246-1.C: ...here.
- * gcc.target/i386/avx512bw-pr96246-2.c: Moved to...
- * g++.target/i386/avx512bw-pr96246-2.C: ...here.
- * gcc.target/i386/avx512vl-pr96246-1.c: Moved to...
- * g++.target/i386/avx512vl-pr96246-1.C: ...here.
- * gcc.target/i386/avx512vl-pr96246-2.c: Moved to...
- * g++.target/i386/avx512vl-pr96246-2.C: ...here.
-
-2020-08-26 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/94858
- * gcc.dg/analyzer/loop-start-up-to-end-by-1.c: Remove xfail.
- * gcc.dg/analyzer/pr94858-1.c: New test.
- * gcc.dg/analyzer/pr94858-2.c: New test.
- * gcc.dg/analyzer/torture/loop-inc-ptr-2.c: Update expected number
- of enodes.
- * gcc.dg/analyzer/torture/loop-inc-ptr-3.c: Likewise.
-
-2020-08-26 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96777
- * gcc.dg/analyzer/pr96777.c: New test.
-
-2020-08-25 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/95863
- * gcc.target/i386/pr95863-1.c: New test.
- * gcc.target/i386/pr95863-2.c: Likewise.
-
-2020-08-25 Tobias Burnus <tobias@codesourcery.com>
-
- PR c/96678
- * c-c++-common/gomp/map-4.c: New test.
- * c-c++-common/gomp/depend-1.c: Update dg-error.
- * c-c++-common/gomp/map-1.c: Likewise.
- * c-c++-common/gomp/reduction-1.c: Likewise.
- * g++.dg/gomp/depend-1.C: Likewise.
- * g++.dg/gomp/depend-2.C: Likewise.
-
-2020-08-25 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/acle/general/attributes_1.c: Rename
- __ARM_FEATURE_SVE_VECTOR_OPERATIONS to
- __ARM_FEATURE_SVE_VECTOR_OPERATORS.
-
-2020-08-25 Richard Sandiford <richard.sandiford@arm.com>
-
- * g++.target/aarch64/sve/acle/general-c++/attributes_2.C: New test.
- * g++.target/aarch64/sve/acle/general-c++/mangle_6.C: Likewise.
- * g++.target/aarch64/sve/acle/general-c++/mangle_7.C: Likewise.
- * g++.target/aarch64/sve/acle/general-c++/mangle_8.C: Likewise.
- * g++.target/aarch64/sve/acle/general-c++/mangle_9.C: Likewise.
- * g++.target/aarch64/sve/acle/general-c++/mangle_10.C: Likewise.
- * gcc.target/aarch64/sve/acle/general/attributes_7.c: Check the
- error messages reported when arm_sve_vector_bits is applied to
- SVE tuple types or to existing fixed-length SVE types.
-
-2020-08-25 Richard Sandiford <richard.sandiford@arm.com>
-
- * g++.target/aarch64/sve/acle/general-c++/mangle_1.C: Add a leading
- "u" to the mangling of each SVE vector and predicate type.
- * g++.target/aarch64/sve/acle/general-c++/mangle_2.C: Likewise.
- * g++.target/aarch64/sve/acle/general-c++/mangle_3.C: Likewise.
- * g++.target/aarch64/sve/acle/general-c++/mangle_5.C: Likewise.
-
-2020-08-25 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96548
- PR tree-optimization/96760
- * gcc.dg/torture/pr96548.c: New testcase.
- * gcc.dg/torture/pr96760.c: Likewise.
-
-2020-08-25 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/96722
- * g++.dg/opt/pr96722.C: New test.
-
-2020-08-25 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/96758
- * gcc.dg/strcmpopt_12.c: New test.
-
-2020-08-25 Martin Jambor <mjambor@suse.cz>
-
- PR tree-optimization/96730
- * gcc.dg/tree-ssa/pr96730.c: New test.
-
-2020-08-25 Roger Sayle <roger@nextmovesoftware.com>
-
- PR tree-optimization/21137
- * gcc.dg/pr21137.c: New test.
-
-2020-08-25 Richard Biener <rguenther@suse.de>
-
- PR debug/96690
- * g++.dg/lto/pr96690_0.C: New testcase.
-
-2020-08-25 Hongtao Liu <hongtao.liu@intel.com>
-
- * gcc.target/i386/pr96755.c: New test.
-
-2020-08-25 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/96715
- * gcc.dg/tree-ssa/copy-sign-3.c: New test.
-
-2020-08-25 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/96721
- * g++.dg/opt/flifetime-dse8.C: New test.
-
-2020-08-25 Jakub Jelinek <jakub@redhat.com>
-
- PR target/95450
- * gcc.target/powerpc/pr95450.c: New test.
-
-2020-08-25 Jason Merrill <jason@redhat.com>
-
- * g++.dg/other/final8.C: Adjust expected output.
-
-2020-08-24 Mark Eggleston <markeggleston@gcc.gnu.org>
-
- PR fortran/96486
- * gfortran.dg/pr96486.f90: New test.
-
-2020-08-24 Christophe Lyon <christophe.lyon@linaro.org>
-
- PR target/94538
- * gcc.target/arm/pure-code/pr94538-1.c: New test.
- * gcc.target/arm/pure-code/pr94538-2.c: New test.
-
-2020-08-24 Martin Liska <mliska@suse.cz>
-
- * gcc.dg/vect/bb-slp-38.c: Adjust pattern as now we only process
- a single vectorization and now 2 partial.
- * gcc.dg/vect/bb-slp-45.c: New test.
-
-2020-08-24 Hans-Peter Nilsson <hp@axis.com>
-
- PR target/93372
- * gcc.target/cris/pr93372-47.c: New test.
-
-2020-08-23 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/96744
- * gcc.target/i386/pr96744-1.c: New test.
- * gcc.target/i386/pr96744-2.c: Likewise.
- * gcc.target/i386/pr96744-3a.c: Likewise.
- * gcc.target/i386/pr96744-3b.c: Likewise.
- * gcc.target/i386/pr96744-4.c: Likewise.
- * gcc.target/i386/pr96744-5.c: Likewise.
- * gcc.target/i386/pr96744-6.c: Likewise.
- * gcc.target/i386/pr96744-7.c: Likewise.
- * gcc.target/i386/pr96744-8a.c: Likewise.
- * gcc.target/i386/pr96744-8b.c: Likewise.
- * gcc.target/i386/pr96744-9.c: Likewise.
-
-2020-08-23 Paul Thomas <pault@gcc.gnu.org>
-
- PR fortran/92785
- * gfortran.dg/unlimited_polymorphic_31.f03: Change to stop 1.
-
-2020-08-23 Paul Thomas <pault@gcc.gnu.org>
-
- PR fortran/96737
- * gfortran.dg/pr96737.f90: Add option -g.
-
-2020-08-23 Paul Thomas <pault@gcc.gnu.org>
-
- PR fortran/96737
- * gfortran.dg/pr96737.f90: New test.
-
-2020-08-22 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/94851
- * gcc.dg/analyzer/pr94851-1.c: New test.
- * gcc.dg/analyzer/pr94851-3.c: New test.
- * gcc.dg/analyzer/pr94851-4.c: New test.
-
-2020-08-22 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/malloc-ipa-8-double-free.c: Drop
- -fanalyzer-verbose-state-changes.
-
-2020-08-21 Hongtao Liu <hongtao.liu@intel.com>
-
- * gcc.target/i386/pr96262-1.c: New test.
-
-2020-08-21 liuhongt <hongtao.liu@intel.com>
-
- * gcc.target/i386/bitwise_mask_op-1.c: New test.
- * gcc.target/i386/bitwise_mask_op-2.c: New test.
- * gcc.target/i386/bitwise_mask_op-3.c: New test.
- * gcc.target/i386/avx512bw-pr88465.c: New testcase.
- * gcc.target/i386/avx512bw-kunpckwd-1.c: Adjust testcase.
- * gcc.target/i386/avx512bw-kunpckwd-3.c: Ditto.
- * gcc.target/i386/avx512dq-kmovb-5.c: Ditto.
- * gcc.target/i386/avx512f-kmovw-5.c: Ditto.
- * gcc.target/i386/pr55342.c: Ditto.
-
-2020-08-21 liuhongt <hongtao.liu@intel.com>
-
- * gcc.target/i386/spill_to_mask-1.c: New tests.
- * gcc.target/i386/spill_to_mask-2.c: New tests.
- * gcc.target/i386/spill_to_mask-3.c: New tests.
- * gcc.target/i386/spill_to_mask-4.c: New tests.
-
-2020-08-21 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/95152
- * gcc.dg/analyzer/pr95152-4.c: New test.
- * gcc.dg/analyzer/pr95152-5.c: New test.
-
-2020-08-20 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96723
- * g++.dg/analyzer/pr96723.C: New test.
-
-2020-08-20 Paul Thomas <pault@gcc.gnu.org>
-
- PR fortran/96100
- PR fortran/96101
- * gfortran.dg/char_length_23.f90: New test.
-
-2020-08-20 Joe Ramsay <Joe.Ramsay@arm.com>
-
- PR target/96683
- * gcc.target/arm/mve/intrinsics/vst1q_f16.c: New test.
- * gcc.target/arm/mve/intrinsics/vst1q_s16.c: New test.
- * gcc.target/arm/mve/intrinsics/vst1q_s8.c: New test.
- * gcc.target/arm/mve/intrinsics/vst1q_u16.c: New test.
- * gcc.target/arm/mve/intrinsics/vst1q_u8.c: New test.
-
-2020-08-20 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/pr67500.f90: New file.
-
-2020-08-20 Christophe Lyon <christophe.lyon@linaro.org>
-
- * lib/target-supports.exp (arm_soft_ok): Remove arm32 check.
-
-2020-08-20 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc.target/arm/pure-code/pure-code.exp: Skip for
- arm*-*-uclinuxfdpiceabi. Fix missing closing bracket.
-
-2020-08-20 Mark Eggleston <markeggleston@gcc.gnu.org>
-
- PR fortran/96436
- * gfortran.dg/pr96436_1.f90: New test.
- * gfortran.dg/pr96436_2.f90: New test.
- * gfortran.dg/pr96436_3.f90: New test.
- * gfortran.dg/pr96436_4.f90: New test.
- * gfortran.dg/pr96436_5.f90: New test.
- * gfortran.dg/pr96436_6.f90: New test.
- * gfortran.dg/pr96436_7.f90: New test.
- * gfortran.dg/pr96436_8.f90: New test.
- * gfortran.dg/pr96436_9.f90
- * gfortran.dg/pr96436_10.f90
-
-2020-08-20 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96713
- * gcc.dg/analyzer/pr96713.c: New test.
-
-2020-08-19 Jason Merrill <jason@redhat.com>
-
- DR 2369
- * g++.dg/concepts/diagnostic10.C: Adjust expexcted errors.
- * g++.dg/concepts/diagnostic13.C: Adjust expexcted errors.
- * g++.dg/concepts/diagnostic2.C: Adjust expexcted errors.
- * g++.dg/concepts/diagnostic3.C: Adjust expexcted errors.
- * g++.dg/concepts/diagnostic4.C: Adjust expexcted errors.
- * g++.dg/concepts/diagnostic5.C: Adjust expexcted errors.
- * g++.dg/concepts/diagnostic9.C: Adjust expexcted errors.
- * g++.dg/concepts/expression2.C: Adjust expexcted errors.
- * g++.dg/concepts/fn5.C: Adjust expexcted errors.
- * g++.dg/concepts/placeholder5.C: Adjust expexcted errors.
- * g++.dg/concepts/pr67595.C: Adjust expexcted errors.
- * g++.dg/cpp2a/concepts-pr78752-2.C: Adjust expexcted errors.
- * g++.dg/cpp2a/concepts-pr84140.C: Adjust expexcted errors.
- * g++.dg/cpp2a/concepts-recursive-sat3.C: Adjust expexcted errors.
- * g++.dg/cpp2a/concepts-requires18.C: Adjust expexcted errors.
- * g++.dg/cpp2a/concepts-requires19.C: Adjust expexcted errors.
- * g++.dg/cpp2a/concepts3.C: Adjust expexcted errors.
- * g++.dg/cpp2a/concepts-nondep1.C: New test.
- * g++.dg/cpp2a/concepts-nondep1a.C: New test.
-
-2020-08-19 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96643
- * g++.dg/analyzer/pr96643.C: New test.
-
-2020-08-19 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96705
- * gcc.dg/analyzer/pr96705.c: New test.
-
-2020-08-19 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96699
- * gcc.dg/analyzer/pr96699.c: New test.
-
-2020-08-19 Bill Schmidt <wschmidt@linux.ibm.com>
-
- * gcc.target/powerpc/pcrel-sibcall-1.c: Adjust.
-
-2020-08-19 Feng Xue <fxue@os.amperecomputing.com>
-
- PR tree-optimization/94234
- * gcc.dg/pr94234-1.c: New test.
-
-2020-08-19 Peixin Qiao <qiaopeixin@huawei.com>
-
- * gcc.target/aarch64/mgeneral-regs_7.c: New test.
-
-2020-08-19 Pat Bernardi <bernardi@adacore.com>
-
- * gcc.dg/sinatan-2.c: Add dg-require-effective-target c99_runtime.
- * gcc.dg/sinhovercosh-1.c: Likewise.
- * gcc.dg/tanhbysinh.c: Likewise.
-
-2020-08-19 Tom de Vries <tdevries@suse.de>
-
- PR target/96494
- * lib/target-supports.exp (check_effective_target_sync_int_long):
- Return 1 for nvptx.
- (check_effective_target_sync_int_long_stack): New proc.
- * gcc.dg/pr86314.c: Require effective target sync_int_long_stack.
-
-2020-08-19 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96651
- * gcc.dg/analyzer/pr96651-1.c: New test.
- * gcc.dg/analyzer/pr96651-2.c: New test.
-
-2020-08-19 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96648
- * gcc.dg/analyzer/pr96648.c: New test.
-
-2020-08-18 Peter Bergner <bergner@linux.ibm.com>
-
- * gcc.target/powerpc/mma-builtin-3.c: Rename xvcvbf16sp to xvcvbf16spn.
-
-2020-08-18 Jason Merrill <jason@redhat.com>
-
- PR c++/96199
- * g++.dg/cpp1z/class-deduction-spec1.C: New test.
-
-2020-08-18 Jason Merrill <jason@redhat.com>
-
- PR c++/96199
- * g++.dg/cpp2a/class-deduction-alias4.C: New test.
-
-2020-08-18 Harald Anlauf <anlauf@gmx.de>
-
- * gfortran.dg/minmax_char_3.f90: New test.
- * gfortran.dg/min_max_kind.f90: New test.
- * gfortran.dg/pr96613.f90: New test.
-
-2020-08-18 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/96665
- PR middle-end/78257
- * gcc.dg/memcmp-5.c: New test.
-
-2020-08-18 Martin Sebor <msebor@redhat.com>
-
- PR tree-optimization/96670
- * gcc.dg/memchr-2.c: New test.
- * gcc.dg/memcmp-6.c: New test.
-
-2020-08-18 Roger Sayle <roger@nextmovesoftware.com>
- Zdenek Sojka <zsojka@seznam.cz>
-
- PR rtl-optimization/96298
- * gcc.dg/pr96298.c: New test.
- * gcc.target/i386/pr96298.c: New test.
-
-2020-08-18 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/96301
- * gdc.dg/pr96301a.d: New test.
- * gdc.dg/pr96301b.d: New test.
- * gdc.dg/pr96301c.d: New test.
-
-2020-08-18 liuhongt <hongtao.liu@intel.com>
-
- * gcc.target/i386/pr96562-1.c: New test.
-
-2020-08-18 Jakub Jelinek <jakub@redhat.com>
-
- PR c/96571
- * gcc.dg/Wunused-var-4.c: New test.
-
-2020-08-18 liuhongt <hongtao.liu@intel.com>
-
- PR target/96574
- * gcc.target/i386/pr92865-1.c: Adjust testcase.
-
-2020-08-18 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96641
- * g++.dg/analyzer/pr96641.C: New test.
-
-2020-08-17 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96644
- * gcc.dg/analyzer/pr96644.c: New test.
-
-2020-08-17 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96639
- * gcc.dg/analyzer/pr96639.c: New test.
-
-2020-08-17 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96642
- * gcc.dg/analyzer/pr96642.c: New test.
-
-2020-08-17 Uroš Bizjak <ubizjak@gmail.com>
-
- * gcc.target/i386/rdrand-1.c (dg-final): Update scan string.
- * gcc.target/i386/rdrand-2.c (dg-final): Ditto.
- * gcc.target/i386/rdrand-3.c (dg-final): Ditto.
-
-2020-08-17 liuhongt <hongtao.liu@intel.com>
-
- * gcc.target/i386/endbr_immediate.c: New test.
-
-2020-08-14 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/78257
- * gcc.dg/memchr.c: New test.
- * gcc.dg/memcmp-2.c: New test.
- * gcc.dg/memcmp-3.c: New test.
- * gcc.dg/memcmp-4.c: New test.
-
-2020-08-14 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96611
- * gcc.dg/analyzer/pr96611.c: New test.
-
-2020-08-14 Jason Merrill <jason@redhat.com>
-
- PR c++/90254
- PR c++/93711
- * g++.dg/cpp1z/aggr-base10.C: New test.
- * g++.dg/cpp2a/no_unique_address7.C: New test.
- * g++.dg/cpp2a/no_unique_address7a.C: New test.
-
-2020-08-14 Lewis Hyatt <lhyatt@gmail.com>
-
- * lib/prune.exp: Change TEST_ALWAYS_FLAGS to use -fdiagnostics-plain-output.
- * lib/c-compat.exp: Adapt to the prune.exp change.
-
-2020-08-14 Tom de Vries <tdevries@suse.de>
-
- * gcc.dg/torture/pr92088-1.c: Add require-effective-target alloca.
- * gcc.dg/torture/pr92088-2.c: Same.
- * gcc.dg/torture/pr93124.c: Same.
- * gcc.dg/torture/pr94479.c: Same.
- * gcc.dg/tree-ssa/builtin-sprintf-warn-22.c: Same.
-
-2020-08-13 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/96598
- * gcc.dg/analyzer/pr96598.c: New test.
-
-2020-08-13 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93032
- PR analyzer/93938
- PR analyzer/94011
- PR analyzer/94099
- PR analyzer/94399
- PR analyzer/94458
- PR analyzer/94503
- PR analyzer/94640
- PR analyzer/94688
- PR analyzer/94689
- PR analyzer/94839
- PR analyzer/95026
- PR analyzer/95042
- PR analyzer/95240
- * g++.dg/analyzer/pr93212.C: Add dg-warning for dangling
- reference.
- * g++.dg/analyzer/pr93950.C: Remove xfail.
- * g++.dg/analyzer/pr94011.C: New test.
- * g++.dg/analyzer/pr94028.C: Remove leak false positives; mark as
- failing on C++98.
- * g++.dg/analyzer/pr94503.C: New test.
- * g++.dg/analyzer/pr95042.C: New test.
- * gcc.dg/analyzer/CVE-2005-1689-dedupe-issue-2.c: New test.
- * gcc.dg/analyzer/CVE-2005-1689-dedupe-issue.c: Add xfail.
- * gcc.dg/analyzer/CVE-2005-1689-minimal.c:
- Include "analyzer-decls.h".
- (test_4, test_5, test_6, test_7, test_8): New tests.
- * gcc.dg/analyzer/abs-1.c: New test.
- * gcc.dg/analyzer/aliasing-1.c: New test.
- * gcc.dg/analyzer/aliasing-2.c: New test.
- * gcc.dg/analyzer/analyzer-decls.h (__analyzer_describe): New
- decl.
- (__analyzer_dump_num_heap_regions): Remove.
- * gcc.dg/analyzer/attribute-nonnull.c: Add dg-warnings for cases
- where NULL is directly used as an argument.
- * gcc.dg/analyzer/bzero-1.c: New test.
- * gcc.dg/analyzer/casts-1.c: New test.
- * gcc.dg/analyzer/casts-2.c: New test.
- * gcc.dg/analyzer/compound-assignment-1.c
- (test_4): Remove xfail from leak false positive.
- (called_by_test_5a): Add "allocated here" expected message.
- (called_by_test_5b): Make expected leak message more precise.
- * gcc.dg/analyzer/compound-assignment-3.c: Update expected leak
- message.
- * gcc.dg/analyzer/compound-assignment-4.c: New test.
- * gcc.dg/analyzer/compound-assignment-5.c: New test.
- * gcc.dg/analyzer/conditionals-notrans.c: Remove xfails.
- * gcc.dg/analyzer/data-model-1.c (test_12d): Update expected
- results.
- (test_13): Remove xfail.
- (test_14): Remove xfail.
- (test_15): Remove xfail.
- (test_16): Remove xfails. Add out-of-bounds access.
- (test_16_alt): Remove xfails.
- (test_23): Remove xfail.
- (test_24): Remove xfail.
- (test_25): Remove xfail.
- (test_26): Update expected result. Remove xfail. Add xfail.
- (test_27): Remove xfails.
- (test_29): Add __analyzer_eval pointer comparisons.
- (test_41): Generalize expected output for u.ptr comparison with
- NULL for targets where this could be known to be false.
- (test_42): Remove xfail.
- (test_51): Remove xfails.
- * gcc.dg/analyzer/data-model-13.c: Update for improvements to
- source location and wording of leak message.
- * gcc.dg/analyzer/data-model-14.c: Remove -fanalyzer-fine-grained.
- (test_1): Update for improvement to expected message.
- (test_2): Remove xfail.
- * gcc.dg/analyzer/data-model-18.c: Remove xfail.
- * gcc.dg/analyzer/data-model-20.c: New test.
- * gcc.dg/analyzer/data-model-5.c: Add dg-warning for deref of
- NULL. Add xfailing false leak.
- * gcc.dg/analyzer/data-model-5b.c: Add xfailing false leak.
- * gcc.dg/analyzer/data-model-5c.c: Update xfailing false leak.
- * gcc.dg/analyzer/data-model-5d.c: Reimplement.
- * gcc.dg/analyzer/data-model-6.c: Delete test.
- * gcc.dg/analyzer/data-model-8.c: Remove xfail.
- * gcc.dg/analyzer/describe-1.c: New test.
- * gcc.dg/analyzer/dot-output.c: Remove xfail.
- * gcc.dg/analyzer/explode-1.c: Add expected leak warning.
- * gcc.dg/analyzer/explode-2.c: Add expected leak warnings. Mark
- double-free warnings as xfail for now.
- * gcc.dg/analyzer/feasibility-1.c: New test.
- * gcc.dg/analyzer/first-field-1.c: New test.
- * gcc.dg/analyzer/first-field-2.c: New test.
- * gcc.dg/analyzer/init.c: New test.
- * gcc.dg/analyzer/leak-2.c: New test.
- * gcc.dg/analyzer/loop-0-up-to-n-by-1-with-iter-obj.c: New test.
- * gcc.dg/analyzer/loop-0-up-to-n-by-1.c: New test.
- * gcc.dg/analyzer/loop-2a.c: Update expected behavior.
- * gcc.dg/analyzer/loop-3.c: Mark use-after-free as xfail. Add
- expected warning about deref of unchecked pointer.
- * gcc.dg/analyzer/loop-4.c: Remove -fno-analyzer-state-purge.
- Update expected behavior.
- * gcc.dg/analyzer/loop-n-down-to-1-by-1.c: New test.
- * gcc.dg/analyzer/loop-start-down-to-end-by-1.c: New test.
- * gcc.dg/analyzer/loop-start-down-to-end-by-step.c: New test.
- * gcc.dg/analyzer/loop-start-to-end-by-step.c: New test.
- * gcc.dg/analyzer/loop-start-up-to-end-by-1.c: New test.
- * gcc.dg/analyzer/loop.c: Remove -fno-analyzer-state-purge.
- Update expected behavior.
- * gcc.dg/analyzer/malloc-1.c: Remove xfails from leak false
- positives. Update expected wording of global_link.m_ptr leak.
- (test_49): New test.
- * gcc.dg/analyzer/malloc-4.c: Remove leak false positive. Update
- expected wording of leak warning.
- * gcc.dg/analyzer/malloc-in-loop.c: New test.
- * gcc.dg/analyzer/malloc-ipa-8-double-free.c: Update expected path
- to show call to wrapped_malloc.
- * gcc.dg/analyzer/malloc-ipa-8-unchecked.c: Remove
- -fanalyzer-verbose-state-changes.
- * gcc.dg/analyzer/malloc-paths-9.c: Remove comment about duplicate
- warnings. Remove duplicate use-after-free paths.
- * gcc.dg/analyzer/malloc-vs-local-1a.c: Add dg-warning for deref
- of unchecked pointer. Update expected number of enodes.
- * gcc.dg/analyzer/malloc-vs-local-2.c: Likewise.
- * gcc.dg/analyzer/malloc-vs-local-3.c: Add dg-warning for deref of
- unchecked pointer. Update expected number of enodes. Avoid
- overspecifying the leak message.
- * gcc.dg/analyzer/memset-1.c: New test.
- * gcc.dg/analyzer/paths-3.c: Update expected number of enodes.
- * gcc.dg/analyzer/paths-4.c: Likewise.
- * gcc.dg/analyzer/paths-6.c: Likewise.
- * gcc.dg/analyzer/paths-7.c: Likewise.
- * gcc.dg/analyzer/pr93032-mztools-simplified.c: New test.
- * gcc.dg/analyzer/pr93032-mztools.c: New test.
- * gcc.dg/analyzer/pr93382.c: Mark taint tests as failing.
- * gcc.dg/analyzer/pr93938.c: New test.
- * gcc.dg/analyzer/pr94099.c: Replace uninit dg-warning with
- dg-warning for NULL dereference.
- * gcc.dg/analyzer/pr94399.c: New test.
- * gcc.dg/analyzer/pr94447.c: Add dg-warning for NULL dereference.
- * gcc.dg/analyzer/pr94458.c: New test.
- * gcc.dg/analyzer/pr94640.c: New test.
- * gcc.dg/analyzer/pr94688.c: New test.
- * gcc.dg/analyzer/pr94689.c: New test.
- * gcc.dg/analyzer/pr94839.c: New test.
- * gcc.dg/analyzer/pr95026.c: New test.
- * gcc.dg/analyzer/pr95240.c: New test.
- * gcc.dg/analyzer/refcounting-1.c: New test.
- * gcc.dg/analyzer/single-field.c: New test.
- * gcc.dg/analyzer/stale-frame-1.c: New test.
- * gcc.dg/analyzer/symbolic-1.c: New test.
- * gcc.dg/analyzer/symbolic-2.c: New test.
- * gcc.dg/analyzer/symbolic-3.c: New test.
- * gcc.dg/analyzer/symbolic-4.c: New test.
- * gcc.dg/analyzer/symbolic-5.c: New test.
- * gcc.dg/analyzer/symbolic-6.c: New test.
- * gcc.dg/analyzer/taint-1.c: Mark the "gets unchecked value"
- events as failing for now. Update dg-message directives to avoid
- relying on numbering.
- * gcc.dg/analyzer/torture/loop-inc-ptr-1.c: New test.
- * gcc.dg/analyzer/torture/loop-inc-ptr-2.c: New test.
- * gcc.dg/analyzer/torture/loop-inc-ptr-3.c: New test.
- * gcc.dg/analyzer/unknown-fns-2.c: New test.
- * gcc.dg/analyzer/unknown-fns-3.c: New test.
- * gcc.dg/analyzer/unknown-fns-4.c: New test.
- * gcc.dg/analyzer/unknown-fns.c: Update dg-warning to reflect fixed
- source location for leak diagnostic.
- * gcc.dg/analyzer/use-after-free.c: New test.
- * gcc.dg/analyzer/vla-1.c: New test.
- * gcc.dg/analyzer/zlib-4.c: Rewrite to avoid "exit" calls. Add
- expected leak warnings.
- * gfortran.dg/analyzer/pr93993.f90: Remove leak of tm warning,
- which seems to have been a false positive.
-
-2020-08-13 Peter Bergner <bergner@linux.ibm.com>
-
- PR target/96506
- * gcc.target/powerpc/pr96506.c: New test.
-
-2020-08-13 Andre Vehreschild <vehre@gcc.gnu.org>
-
- PR fortran/93671
- * gfortran.dg/coarray/pr93671.f90: New test.
-
-2020-08-13 Richard Sandiford <richard.sandiford@arm.com>
-
- Revert:
- 2020-08-13 Peixin Qiao <qiaopeixin@huawei.com>
-
- * gcc.target/aarch64/mgeneral-regs_1.c: Add the comment that
- -mgeneral-regs-only is compatible with the use of vector type
- used in the test case.
-
-2020-08-13 Kwok Cheung Yeung <kcy@codesourcery.com>
-
- * gcc.target/nvptx/ia64-sync-5.c: New.
-
-2020-08-13 Martin Liska <mliska@suse.cz>
-
- PR ipa/96482
- * gcc.dg/ipa/pr96482-2.c: New test.
-
-2020-08-13 Hongtao Liu <hongtao.liu@intel.com>
-
- * gcc.target/i386/avx512bw-pr96246-1.c: New test.
- * gcc.target/i386/avx512bw-pr96246-2.c: New test.
- * gcc.target/i386/avx512vl-pr96246-1.c: New test.
- * gcc.target/i386/avx512vl-pr96246-2.c: New test.
- * gcc.target/i386/avx512bw-vmovdqu16-1.c: Adjust test.
- * gcc.target/i386/avx512bw-vmovdqu8-1.c: Ditto.
- * gcc.target/i386/avx512f-vmovapd-1.c: Ditto.
- * gcc.target/i386/avx512f-vmovaps-1.c: Ditto.
- * gcc.target/i386/avx512f-vmovdqa32-1.c: Ditto.
- * gcc.target/i386/avx512f-vmovdqa64-1.c: Ditto.
- * gcc.target/i386/avx512vl-pr92686-movcc-1.c: Ditto.
- * gcc.target/i386/avx512vl-pr96246-1.c: Ditto.
- * gcc.target/i386/avx512vl-pr96246-2.c: Ditto.
- * gcc.target/i386/avx512vl-vmovapd-1.c: Ditto.
- * gcc.target/i386/avx512vl-vmovaps-1.c: Ditto.
- * gcc.target/i386/avx512vl-vmovdqa32-1.c: Ditto.
- * gcc.target/i386/avx512vl-vmovdqa64-1.c: Ditto.
-
-2020-08-13 Hans-Peter Nilsson <hp@axis.com>
-
- PR middle-end/94600
- * gcc.dg/pr94600-5.c, gcc.dg/pr94600-6.c, gcc.dg/pr94600-7.c,
- gcc.dg/pr94600-8.c: Align t0 to 4-byte boundary.
-
-2020-08-13 Marek Polacek <polacek@redhat.com>
-
- PR c++/92812
- * g++.dg/cpp2a/paren-init27.C: New test.
- * g++.dg/cpp2a/paren-init28.C: New test.
- * g++.dg/cpp2a/paren-init29.C: New test.
- * g++.dg/cpp2a/paren-init30.C: New test.
- * g++.dg/cpp2a/paren-init31.C: New test.
- * g++.dg/cpp2a/paren-init32.C: New test.
-
-2020-08-12 Roger Sayle <roger@nextmovesoftware.com>
- Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/96558
- * gcc.dg/pr96558.c: New test.
-
-2020-08-12 Martin Liska <mliska@suse.cz>
-
- PR ipa/96482
- * gcc.dg/ipa/pr96482.c: New test.
-
-2020-08-12 Peixin Qiao <qiaopeixin@huawei.com>
-
- * gcc.target/aarch64/mgeneral-regs_1.c: Add the comment that
- -mgeneral-regs-only is compatible with the use of vector type
- used in the test case.
-
-2020-08-12 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/nontemporal-1.f90: New test.
- * gfortran.dg/gomp/nontemporal-2.f90: New test.
-
-2020-08-12 Tom de Vries <tdevries@suse.de>
-
- * gcc.target/nvptx/ia64-sync-1.c: New test.
- * gcc.target/nvptx/ia64-sync-2.c: New test.
- * gcc.target/nvptx/ia64-sync-3.c: New test.
- * gcc.target/nvptx/ia64-sync-4.c: New test.
-
-2020-08-12 Kwok Cheung Yeung <kcy@codesourcery.com>
-
- PR testsuite/96519
- * gcc.dg/ia64-sync-5.c (AC, init_qi, test_qi): Change element type to
- signed char.
-
-2020-08-12 Tom de Vries <tdevries@suse.de>
-
- PR testsuite/96566
- * lib/target-supports.exp (check_effective_target_large_initializer):
- New proc.
- * gcc.dg/builtin-object-size-21.c: Require large_initializer.
- * gcc.dg/strlenopt-55.c: Same.
-
-2020-08-12 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc.target/arm/stack-protector-1.c: Adapt code to Cortex-M
- restrictions.
-
-2020-08-12 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc.target/arm/multilib.exp: Fix parameter passing for gcc_opts.
-
-2020-08-12 Andreas Krebbel <krebbel@linux.ibm.com>
-
- PR target/96308
- * g++.dg/pr96308.C: New test.
-
-2020-08-12 Andreas Krebbel <krebbel@linux.ibm.com>
-
- PR target/96456
- * gcc.target/s390/pr96456.c: New test.
-
-2020-08-12 Alan Modra <amodra@gmail.com>
-
- PR target/96525
- * gcc.target/powerpc/pr96493.c: Make it a link test when no
- power10_hw. Require power10_ok.
-
-2020-08-11 David Edelsohn <dje.gcc@gmail.com>
-
- * g++.dg/opt/flifetime-dse2.C: Remove AIX xfail.
- * g++.dg/opt/flifetime-dse4.C: Remove AIX xfail.
-
-2020-08-11 Tom de Vries <tdevries@suse.de>
-
- * gcc.dg/Warray-bounds-46.c: Add missing require-effective-target
- directive.
- * gcc.dg/Warray-bounds-48.c: Same.
- * gcc.dg/Warray-bounds-50.c: Same.
- * gcc.dg/Wreturn-local-addr-2.c: Same.
- * gcc.dg/Wreturn-local-addr-3.c: Same.
- * gcc.dg/Wreturn-local-addr-4.c: Same.
- * gcc.dg/Wreturn-local-addr-6.c: Same.
- * gcc.dg/Wstack-usage.c: Same.
- * gcc.dg/Wstringop-overflow-15.c: Same.
- * gcc.dg/Wstringop-overflow-23.c: Same.
- * gcc.dg/Wstringop-overflow-25.c: Same.
- * gcc.dg/Wstringop-overflow-27.c: Same.
- * gcc.dg/Wstringop-overflow-39.c: Same.
- * gcc.dg/analyzer/alloca-leak.c: Same.
- * gcc.dg/analyzer/data-model-1.c: Same.
- * gcc.dg/analyzer/data-model-16.c: Same.
- * gcc.dg/analyzer/malloc-1.c: Same.
- * gcc.dg/analyzer/malloc-paths-8.c: Same.
- * gcc.dg/analyzer/pr93546.c: Same.
- * gcc.dg/analyzer/setjmp-1.c: Same.
- * gcc.dg/analyzer/setjmp-2.c: Same.
- * gcc.dg/analyzer/setjmp-3.c: Same.
- * gcc.dg/analyzer/setjmp-4.c: Same.
- * gcc.dg/analyzer/setjmp-5.c: Same.
- * gcc.dg/analyzer/setjmp-6.c: Same.
- * gcc.dg/analyzer/setjmp-7.c: Same.
- * gcc.dg/analyzer/setjmp-7a.c: Same.
- * gcc.dg/analyzer/setjmp-8.c: Same.
- * gcc.dg/analyzer/setjmp-9.c: Same.
- * gcc.dg/analyzer/setjmp-pr93378.c: Same.
- * gcc.dg/gimplefe-44.c: Same.
- * gcc.dg/pr84131.c: Same.
- * gcc.dg/pr93986.c: Same.
- * gcc.dg/pr95133.c: Same.
- * gcc.dg/pr95857.c: Same.
- * gcc.dg/strlenopt-83.c: Same.
- * gcc.dg/strlenopt-84.c: Same.
- * gcc.dg/strlenopt-91.c: Same.
- * gcc.dg/uninit-32.c: Same.
- * gcc.dg/uninit-36.c: Same.
-
-2020-08-11 Jakub Jelinek <jakub@redhat.com>
-
- PR c/96545
- * c-c++-common/pr96545.c: New test.
-
-2020-08-11 Jakub Jelinek <jakub@redhat.com>
-
- PR rtl-optimization/96539
- * gcc.target/i386/pr96539.c: New test.
-
-2020-08-11 Jakub Jelinek <jakub@redhat.com>
-
- PR c/96549
- * gcc.c-torture/execute/pr96549.c: New test.
-
-2020-08-11 Jan Hubicka <hubicka@ucw.cz>
-
- * gcc.dg/ipa/ipa-clone-2.c: Lower threshold from 500 to 400.
-
-2020-08-10 Marek Polacek <polacek@redhat.com>
-
- PR c++/88003
- * g++.dg/cpp1y/auto-fn61.C: New test.
-
-2020-08-10 Marek Polacek <polacek@redhat.com>
-
- * lib/gcc-dg.exp (gcc-dg-test-1): Handle dg-ice.
- (cleanup-after-saved-dg-test): Reset expect_ice.
- * lib/prune.exp (prune_ices): New.
- * lib/target-supports-dg.exp (dg-ice): New.
-
-2020-08-10 Roger Sayle <roger@nextmovesoftware.com>
-
- * gcc.target/i386/minmax-12.c: New test.
-
-2020-08-10 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/96556
- * gfortran.dg/do_check_15.f90: New test.
-
-2020-08-10 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/96497
- * g++.dg/cpp2a/spaceship-constexpr3.C: New test.
-
-2020-08-10 Patrick Palka <ppalka@redhat.com>
-
- * g++.dg/cpp2a/concepts-fn5.C: New test.
- * g++.dg/concepts/fn8.C: Generalize dg-error directive to accept
- "no matching function ..." diagnostic.
- * g++.dg/cpp2a/concepts-fn1.C: Likewise.
- * g++.dg/cpp2a/concepts-ts2.C: Likewise.
- * g++.dg/cpp2a/concepts-ts3.C: Likewise.
-
-2020-08-10 Marc Glisse <marc.glisse@inria.fr>
-
- PR tree-optimization/95433
- * gcc.dg/tree-ssa/pr95433-2.c: New file.
-
-2020-08-10 Paul Thomas <pault@gcc.gnu.org>
-
- PR fortran/96312
- * gfortran.dg/pr96312.f90: New test.
-
-2020-08-10 Paul Thomas <pault@gcc.gnu.org>
-
- PR fortran/96102
- * gfortran.dg/pr96102.f90: New test.
-
-2020-08-10 Hongtao Liu <hongtao.liu@intel.com>
-
- * gcc.target/i386/pr92865-1.c: Adjust testcase.
-
-2020-08-09 Roger Sayle <roger@nextmovesoftware.com>
-
- PR target/71321
- * gcc.target/i386/pr71321.c: Check that the code doesn't use
- the 4B zero displacement lea, not that it uses lea.
-
-2020-08-09 Iain Sandoe <iain@sandoe.co.uk>
-
- * gcc.dg/torture/fp-int-convert-timode-3.c: XFAIL run.
- * gcc.dg/torture/fp-int-convert-timode-4.c: Likewise.
-
-2020-08-09 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/pr44194-1.c: Skip for mmix.
-
-2020-08-09 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/pr30957-1.c: xfail for mmix.
-
-2020-08-08 Peter Bergner <bergner@linux.ibm.com>
-
- PR target/96530
- * gcc.target/powerpc/pr96530.c: New test.
-
-2020-08-08 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/96424
- * c-c++-common/gomp/pr96424.c: New test.
-
-2020-08-07 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96514
- * gcc.dg/pr96514.c: New testcase.
-
-2020-08-07 Jose E. Marchesi <jose.marchesi@oracle.com>
-
- * gcc.target/bpf/diag-funargs-2.c: Remove trailing whitespaces.
- * gcc.target/bpf/skb-ancestor-cgroup-id.c: Likewise.
- * gcc.target/bpf/helper-xdp-adjust-meta.c: Likewise.
- * gcc.target/bpf/helper-xdp-adjust-head.c: Likewise.
- * gcc.target/bpf/helper-tcp-check-syncookie.c: Likewise.
- * gcc.target/bpf/helper-sock-ops-cb-flags-set.c
- * gcc.target/bpf/helper-sysctl-set-new-value.c: Likewise.
- * gcc.target/bpf/helper-sysctl-get-new-value.c: Likewise.
- * gcc.target/bpf/helper-sysctl-get-name.c: Likewise.
- * gcc.target/bpf/helper-sysctl-get-current-value.c: Likewise.
- * gcc.target/bpf/helper-strtoul.c: Likewise.
- * gcc.target/bpf/helper-strtol.c: Likewise.
- * gcc.target/bpf/helper-sock-map-update.c: Likewise.
- * gcc.target/bpf/helper-sk-storage-get.c: Likewise.
- * gcc.target/bpf/helper-sk-storage-delete.c: Likewise.
- * gcc.target/bpf/helper-sk-select-reuseport.c: Likewise.
- * gcc.target/bpf/helper-sk-release.c: Likewise.
- * gcc.target/bpf/helper-sk-redirect-map.c: Likewise.
- * gcc.target/bpf/helper-sk-lookup-upd.c: Likewise.
- * gcc.target/bpf/helper-sk-lookup-tcp.c: Likewise.
- * gcc.target/bpf/helper-skb-change-head.c: Likewise.
- * gcc.target/bpf/helper-skb-cgroup-id.c: Likewise.
- * gcc.target/bpf/helper-skb-adjust-room.c: Likewise.
- * gcc.target/bpf/helper-set-hash.c: Likewise.
- * gcc.target/bpf/helper-setsockopt.c: Likewise.
- * gcc.target/bpf/helper-redirect-map.c: Likewise.
- * gcc.target/bpf/helper-rc-repeat.c: Likewise.
- * gcc.target/bpf/helper-rc-keydown.c: Likewise.
- * gcc.target/bpf/helper-probe-read-str.c: Likewise.
- * gcc.target/bpf/helper-perf-prog-read-value.c: Likewise.
- * gcc.target/bpf/helper-perf-event-read-value.c: Likewise.
- * gcc.target/bpf/helper-override-return.c: Likewise.
- * gcc.target/bpf/helper-msg-redirect-map.c: Likewise.
- * gcc.target/bpf/helper-msg-pull-data.c: Likewise.
- * gcc.target/bpf/helper-msg-cork-bytes.c: Likewise.
- * gcc.target/bpf/helper-msg-apply-bytes.c: Likewise.
- * gcc.target/bpf/helper-lwt-seg6-store-bytes.c: Likewise.
- * gcc.target/bpf/helper-lwt-seg6-adjust-srh.c: Likewise.
- * gcc.target/bpf/helper-lwt-seg6-action.c: Likewise.
- * gcc.target/bpf/helper-lwt-push-encap.c: Likewise.
- * gcc.target/bpf/helper-get-socket-uid.c: Likewise.
- * gcc.target/bpf/helper-get-socket-cookie.c: Likewise.
- * gcc.target/bpf/helper-get-local-storage.c: Likewise.
- * gcc.target/bpf/helper-get-current-cgroup-id.c: Likewise.
- * gcc.target/bpf/helper-getsockopt.c: Likewise.
- * gcc.target/bpf/diag-funargs-3.c: Likewise.
-
-2020-08-07 Kwok Cheung Yeung <kcy@codesourcery.com>
- Tom de Vries <tdevries@suse.de>
-
- * gcc.dg/ia64-sync-5.c: New test.
-
-2020-08-07 Michael Meissner <meissner@linux.ibm.com>
-
- * gcc.target/powerpc/bswap-brd.c: New test.
- * gcc.target/powerpc/bswap-brw.c: New test.
- * gcc.target/powerpc/bswap-brh.c: New test.
-
-2020-08-07 Alan Modra <amodra@gmail.com>
-
- * gcc.target/powerpc/pr96493.c: New file.
-
-2020-08-06 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/arm/stack-protector-1.c: New test.
- * gcc.target/arm/stack-protector-2.c: Likewise.
-
-2020-08-06 Peter Bergner <bergner@linux.ibm.com>
-
- PR target/96446
- * gcc.target/powerpc/pr96446.c: New test.
-
-2020-08-06 Roger Sayle <roger@nextmovesoftware.com>
-
- * gcc.target/i386/minmax-9.c: Restrict test to !ia32.
-
-2020-08-06 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/96480
- * gcc.dg/tree-ssa/pr96480.c: New test.
-
-2020-08-06 Jose E. Marchesi <jose.marchesi@oracle.com>
-
- * gcc.target/bpf/helper-bind.c: Adjust to new kernel helpers
- mechanism.
- * gcc.target/bpf/helper-bpf-redirect.c: Likewise.
- * gcc.target/bpf/helper-clone-redirect.c: Likewise.
- * gcc.target/bpf/helper-csum-diff.c: Likewise.
- * gcc.target/bpf/helper-csum-update.c: Likewise.
- * gcc.target/bpf/helper-current-task-under-cgroup.c: Likewise.
- * gcc.target/bpf/helper-fib-lookup.c: Likewise.
- * gcc.target/bpf/helper-get-cgroup-classid.c: Likewise.
- * gcc.target/bpf/helper-get-current-cgroup-id.c: Likewise.
- * gcc.target/bpf/helper-get-current-comm.c: Likewise.
- * gcc.target/bpf/helper-get-current-pid-tgid.c: Likewise.
- * gcc.target/bpf/helper-get-current-task.c: Likewise.
- * gcc.target/bpf/helper-get-current-uid-gid.c: Likewise.
- * gcc.target/bpf/helper-get-hash-recalc.c: Likewise.
- * gcc.target/bpf/helper-get-listener-sock.c: Likewise.
- * gcc.target/bpf/helper-get-local-storage.c: Likewise.
- * gcc.target/bpf/helper-get-numa-node-id.c: Likewise.
- * gcc.target/bpf/helper-get-prandom-u32.c: Likewise.
- * gcc.target/bpf/helper-get-route-realm.c: Likewise.
- * gcc.target/bpf/helper-get-smp-processor-id.c: Likewise.
- * gcc.target/bpf/helper-get-socket-cookie.c: Likewise.
- * gcc.target/bpf/helper-get-socket-uid.c: Likewise.
- * gcc.target/bpf/helper-get-stack.c: Likewise.
- * gcc.target/bpf/helper-get-stackid.c: Likewise.
- * gcc.target/bpf/helper-getsockopt.c: Likewise.
- * gcc.target/bpf/helper-ktime-get-ns.c: Likewise.
- * gcc.target/bpf/helper-l3-csum-replace.c: Likewise.
- * gcc.target/bpf/helper-l4-csum-replace.c: Likewise.
- * gcc.target/bpf/helper-lwt-push-encap.c: Likewise.
- * gcc.target/bpf/helper-lwt-seg6-action.c: Likewise.
- * gcc.target/bpf/helper-lwt-seg6-adjust-srh.c: Likewise.
- * gcc.target/bpf/helper-lwt-seg6-store-bytes.c: Likewise.
- * gcc.target/bpf/helper-map-delete-elem.c: Likewise.
- * gcc.target/bpf/helper-map-lookup-elem.c: Likewise.
- * gcc.target/bpf/helper-map-peek-elem.c: Likewise.
- * gcc.target/bpf/helper-map-pop-elem.c: Likewise.
- * gcc.target/bpf/helper-map-push-elem.c: Likewise.
- * gcc.target/bpf/helper-map-update-elem.c: Likewise.
- * gcc.target/bpf/helper-msg-apply-bytes.c: Likewise.
- * gcc.target/bpf/helper-msg-cork-bytes.c: Likewise.
- * gcc.target/bpf/helper-msg-pop-data.c: Likewise.
- * gcc.target/bpf/helper-msg-pull-data.c: Likewise.
- * gcc.target/bpf/helper-msg-push-data.c: Likewise.
- * gcc.target/bpf/helper-msg-redirect-hash.c: Likewise.
- * gcc.target/bpf/helper-msg-redirect-map.c: Likewise.
- * gcc.target/bpf/helper-override-return.c: Likewise.
- * gcc.target/bpf/helper-perf-event-output.c: Likewise.
- * gcc.target/bpf/helper-perf-event-read-value.c: Likewise.
- * gcc.target/bpf/helper-perf-event-read.c: Likewise.
- * gcc.target/bpf/helper-perf-prog-read-value.c: Likewise.
- * gcc.target/bpf/helper-probe-read-str.c: Likewise.
- * gcc.target/bpf/helper-probe-read.c: Likewise.
- * gcc.target/bpf/helper-probe-write-user.c: Likewise.
- * gcc.target/bpf/helper-rc-keydown.c: Likewise.
- * gcc.target/bpf/helper-rc-pointer-rel.c: Likewise.
- * gcc.target/bpf/helper-rc-repeat.c: Likewise.
- * gcc.target/bpf/helper-redirect-map.c: Likewise.
- * gcc.target/bpf/helper-set-hash-invalid.c: Likewise.
- * gcc.target/bpf/helper-set-hash.c: Likewise.
- * gcc.target/bpf/helper-setsockopt.c: Likewise.
- * gcc.target/bpf/helper-sk-fullsock.c: Likewise.
- * gcc.target/bpf/helper-sk-lookup-tcp.c: Likewise.
- * gcc.target/bpf/helper-sk-lookup-upd.c: Likewise.
- * gcc.target/bpf/helper-sk-redirect-hash.c: Likewise.
- * gcc.target/bpf/helper-sk-redirect-map.c: Likewise.
- * gcc.target/bpf/helper-sk-release.c: Likewise.
- * gcc.target/bpf/helper-sk-select-reuseport.c: Likewise.
- * gcc.target/bpf/helper-sk-storage-delete.c: Likewise.
- * gcc.target/bpf/helper-sk-storage-get.c: Likewise.
- * gcc.target/bpf/helper-skb-adjust-room.c: Likewise.
- * gcc.target/bpf/helper-skb-cgroup-id.c: Likewise.
- * gcc.target/bpf/helper-skb-change-head.c: Likewise.
- * gcc.target/bpf/helper-skb-change-proto.c: Likewise.
- * gcc.target/bpf/helper-skb-change-tail.c: Likewise.
- * gcc.target/bpf/helper-skb-change-type.c: Likewise.
- * gcc.target/bpf/helper-skb-ecn-set-ce.c: Likewise.
- * gcc.target/bpf/helper-skb-get-tunnel-key.c: Likewise.
- * gcc.target/bpf/helper-skb-get-tunnel-opt.c: Likewise.
- * gcc.target/bpf/helper-skb-get-xfrm-state.c: Likewise.
- * gcc.target/bpf/helper-skb-load-bytes-relative.c: Likewise.
- * gcc.target/bpf/helper-skb-load-bytes.c: Likewise.
- * gcc.target/bpf/helper-skb-pull-data.c: Likewise.
- * gcc.target/bpf/helper-skb-set-tunnel-key.c: Likewise.
- * gcc.target/bpf/helper-skb-set-tunnel-opt.c: Likewise.
- * gcc.target/bpf/helper-skb-store-bytes.c: Likewise.
- * gcc.target/bpf/helper-skb-under-cgroup.c: Likewise.
- * gcc.target/bpf/helper-skb-vlan-pop.c: Likewise.
- * gcc.target/bpf/helper-skb-vlan-push.c: Likewise.
- * gcc.target/bpf/helper-skc-lookup-tcp.c: Likewise.
- * gcc.target/bpf/helper-sock-hash-update.c: Likewise.
- * gcc.target/bpf/helper-sock-map-update.c: Likewise.
- * gcc.target/bpf/helper-sock-ops-cb-flags-set.c: Likewise.
- * gcc.target/bpf/helper-spin-lock.c: Likewise.
- * gcc.target/bpf/helper-spin-unlock.c: Likewise.
- * gcc.target/bpf/helper-strtol.c: Likewise.
- * gcc.target/bpf/helper-strtoul.c: Likewise.
- * gcc.target/bpf/helper-sysctl-get-current-value.c: Likewise.
- * gcc.target/bpf/helper-sysctl-get-name.c: Likewise.
- * gcc.target/bpf/helper-sysctl-get-new-value.c: Likewise.
- * gcc.target/bpf/helper-sysctl-set-new-value.c: Likewise.
- * gcc.target/bpf/helper-tail-call.c: Likewise.
- * gcc.target/bpf/helper-tcp-check-syncookie.c: Likewise.
- * gcc.target/bpf/helper-tcp-sock.c: Likewise.
- * gcc.target/bpf/helper-trace-printk.c: Likewise.
- * gcc.target/bpf/helper-xdp-adjust-head.c: Likewise.
- * gcc.target/bpf/helper-xdp-adjust-meta.c: Likewise.
- * gcc.target/bpf/helper-xdp-adjust-tail.c: Likewise.
- * gcc.target/bpf/skb-ancestor-cgroup-id.c: Likewise.
-
-2020-08-06 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96491
- * gcc.dg/torture/pr96491.c: New testcase.
-
-2020-08-06 Roger Sayle <roger@nextmovesoftware.com>
- Uroš Bizjak <ubizjak@gmail.com>
-
- * gcc.target/i386/minmax-8.c: New test.
- * gcc.target/i386/minmax-9.c: New test.
- * gcc.target/i386/minmax-10.c: New test.
- * gcc.target/i386/minmax-11.c: New test.
-
-2020-08-05 Patrick Palka <ppalka@redhat.com>
- Jason Merrill <jason@redhat.com>
-
- PR c++/96282
- * g++.dg/cpp0x/constexpr-array26.C: New test.
- * g++.dg/cpp0x/constexpr-array27.C: New test.
- * g++.dg/cpp2a/constexpr-init18.C: New test.
-
-2020-08-05 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/96469
- * gfortran.dg/do_check_14.f90: New test.
-
-2020-08-05 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/96469
- * gfortran.dg/do_check_4.f90: Hide change in index variable
- from compile-time analysis.
- * gfortran.dg/do_check_13.f90: New test.
-
-2020-08-05 Marc Glisse <marc.glisse@inria.fr>
-
- PR tree-optimization/95906
- PR target/70314
- * gcc.dg/tree-ssa/andnot-2.c: New file.
- * gcc.dg/tree-ssa/pr95906.c: Likewise.
- * gcc.target/i386/pr70314.c: Likewise.
-
-2020-08-05 Richard Sandiford <richard.sandiford@arm.com>
-
- PR target/96191
- * gcc.target/aarch64/stack-protector-1.c: New test.
- * gcc.target/aarch64/stack-protector-2.c: Likewise.
-
-2020-08-05 2020-08-04 Carl Love <cel@us.ibm.com>
-
- * gcc.target/powerpc/vec-blend-runnable.c: New test.
- * gcc.target/powerpc/vec-permute-ext-runnable.c: New test.
-
-2020-08-05 2020-08-04 Carl Love <cel@us.ibm.com>
-
- * gcc.target/powerpc/vec-splati-runnable.c: New test.
-
-2020-08-05 2020-08-04 Carl Love <cel@us.ibm.com>
-
- * gcc.target/powerpc/vec-shift-double-runnable.c: New test file.
-
-2020-08-05 2020-08-04 Carl Love <cel@us.ibm.com>
-
- * gcc.target/powerpc/vec-replace-word-runnable.c: New test.
-
-2020-08-05 2020-08-04 Carl Love <cel@us.ibm.com>
-
- * gcc.target/powerpc/vec-insert-word-runnable.c: New test case.
-
-2020-08-04 Roger Sayle <roger@nextmovesoftware.com>
-
- * gcc.target/nvptx/mul-hi.c: New test.
- * gcc.target/nvptx/umul-hi.c: New test.
-
-2020-08-04 Marek Polacek <polacek@redhat.com>
-
- PR c++/96082
- * g++.dg/template/template-keyword3.C: New test.
-
-2020-08-04 Nathan Sidwell <nathan@acm.org>
-
- * g++.dg/template/pr39425.C: Adjust errors, (unbounded
- template recursion).
- * g++.old-deja/g++.pt/spec20.C: Remove fallout diagnostics.
-
-2020-08-04 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/collapse1.f90: Add dg-error.
- * gfortran.dg/gomp/collapse2.f90: New test.
-
-2020-08-04 Roger Sayle <roger@nextmovesoftware.com>
-
- PR rtl-optimization/60473
- * gcc.target/i386/pr60473.c: New test.
-
-2020-08-04 Marc Glisse <marc.glisse@inria.fr>
-
- PR tree-optimization/95433
- * gcc.c-torture/execute/pr23135.c: Add -fwrapv to avoid
- undefined behavior.
- * gcc.dg/tree-ssa/pr95433.c: New file.
-
-2020-08-04 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/96153
- * gdc.dg/pr96153.d: New test.
-
-2020-08-04 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94024
- * g++.dg/diagnostic/mem-init1.C: New test.
-
-2020-08-04 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/88240
- * gcc.target/i386/pr88240.c: New testcase.
-
-2020-08-04 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/lastprivate-conditional-3.f90: Enable some
- previously disabled 'lastprivate(conditional:' dg-warnings.
-
-2020-08-04 Sudakshina Das <sudi.das@arm.com>
-
- * gcc.target/aarch64/cpymem-q-reg_1.c: New test.
- * gcc.target/aarch64/large_struct_copy_2.c: Update for ldp q regs.
-
-2020-08-04 Andrea Corallo <andrea.corallo@arm.com>
-
- * gcc.target/aarch64/acle/jcvt_2.c: New testcase.
- * lib/target-supports.exp
- (check_effective_target_aarch64_fjcvtzs_hw): Add new check for
- FJCVTZS hw.
-
-2020-08-04 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/96426
- * gcc.c-torture/compile/pr96426.c: New test.
-
-2020-08-04 Jakub Jelinek <jakub@redhat.com>
-
- PR debug/96354
- * g++.dg/opt/pr96354.C: New test.
-
-2020-08-04 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/96429
- * gdc.dg/pr96429.d: New test.
-
-2020-08-04 Paul Thomas <pault@gcc.gnu.org>
-
- PR fortran/96325
- * gfortran.dg/pr96325.f90: Change from run to compile.
-
-2020-08-04 Xionghu Luo <luoxhu@linux.ibm.com>
-
- PR rtl-optimization/71309
- * gcc.target/powerpc/pr71309.c: New test.
-
-2020-08-03 Segher Boessenkool <segher@kernel.crashing.org>
-
- * gcc.target/powerpc/vector_float.c: Skip if not lp64.
-
-2020-08-03 Marek Polacek <polacek@redhat.com>
-
- DR 2032
- PR c++/96218
- * g++.dg/cpp1y/var-templ67.C: New test.
-
-2020-08-03 Jakub Jelinek <jakub@redhat.com>
-
- PR target/96402
- * gcc.target/aarch64/pr96402.c: New test.
-
-2020-08-03 Julian Brown <julian@codesourcery.com>
- Thomas Schwinge <thomas@codesourcery.com>
-
- * gfortran.dg/goacc/attach-descriptor.f90: Update pattern output. Add
- scanning of gimplify dump.
-
-2020-08-03 Martin Jambor <mjambor@suse.cz>
-
- * lib/target-supports.exp (check_effective_target_offload_hsa):
- Removed.
- * c-c++-common/gomp/gridify-1.c: Removed test.
- * c-c++-common/gomp/gridify-2.c: Likewise.
- * c-c++-common/gomp/gridify-3.c: Likewise.
- * c-c++-common/gomp/hsa-indirect-call-1.c: Likewise.
- * gfortran.dg/gomp/gridify-1.f90: Likewise.
- * gcc.dg/gomp/gomp.exp: Do not pass -Wno-hsa to tests.
- * g++.dg/gomp/gomp.exp: Likewise.
- * gfortran.dg/gomp/gomp.exp: Likewise.
-
-2020-08-03 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.dg/pr96377-1.c: Add -Wno-psabi.
- * gcc.dg/pr96377-2.c: Likewise.
-
-2020-08-03 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/96254
- * gdc.dg/pr96254a.d: New test.
- * gdc.dg/pr96254b.d: New test.
-
-2020-08-02 Paul Thomas <pault@gcc.gnu.org>
-
- PR target/96320
- * gfortran.dg/module_procedure_4.f90 : New test.
-
-2020-08-02 Paul Thomas <pault@gcc.gnu.org>
-
- PR fortran/96325
- * gfortran.dg/pr96325.f90: New test.
- * gfortran.dg/pr91589.f90: Update error message.
-
-2020-08-01 Richard Sandiford <richard.sandiford@arm.com>
-
- PR c/96377
- * gcc.dg/pr96377-1.c: New test.
- * gcc.dg/pr96377-2.c: Likewise.
- * gcc.dg/pr96377-3.c: Likewise.
- * gcc.dg/pr96377-4.c: Likewise.
- * gcc.dg/pr96377-5.c: Likewise.
- * gcc.dg/pr96377-6.c: Likewise.
- * gcc.target/aarch64/pr96377-1.c: Likewise.
- * gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c: Likewise.
- * gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c: Likewise.
- * g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C: Likewise.
- * g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C: Likewise.
-
-2020-08-01 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/loop-8.c: Skip for mmix.
-
-2020-07-31 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/96182
- * g++.dg/cpp1y/constexpr-96182.C: New test.
- * g++.dg/other/error35.C (S<T>::g()): Add return statement.
- * g++.dg/cpp1y/pr63996.C (foo): Likewise.
- * g++.dg/cpp1y/constexpr-return2.C (f): Likewise.
- * g++.dg/cpp1y/var-templ44.C (make_array): Add throw 1.
-
-2020-07-31 Roger Sayle <roger@nextmovesoftware.com>
- Tom de Vries <tdevries@suse.de>
-
- * gcc.target/nvptx/v2si-cvt.c: Simplify source. Remove
- scan-assembler directives. Mention PR96403.
-
-2020-07-31 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * gdc.dg/compilable.d: Removed.
- * gdc.dg/gdc108.d: New test.
- * gdc.dg/gdc115.d: New test.
- * gdc.dg/gdc121.d: New test.
- * gdc.dg/gdc122.d: New test.
- * gdc.dg/gdc127.d: New test.
- * gdc.dg/gdc131.d: New test.
- * gdc.dg/gdc133.d: New test.
- * gdc.dg/gdc141.d: New test.
- * gdc.dg/gdc142.d: New test.
- * gdc.dg/gdc15.d: New test.
- * gdc.dg/gdc17.d: New test.
- * gdc.dg/gdc170.d: New test.
- * gdc.dg/gdc171.d: New test.
- * gdc.dg/gdc179.d: New test.
- * gdc.dg/gdc183.d: New test.
- * gdc.dg/gdc186.d: New test.
- * gdc.dg/gdc187.d: New test.
- * gdc.dg/gdc19.d: New test.
- * gdc.dg/gdc191.d: New test.
- * gdc.dg/gdc194.d: New test.
- * gdc.dg/gdc196.d: New test.
- * gdc.dg/gdc198.d: New test.
- * gdc.dg/gdc200.d: New test.
- * gdc.dg/gdc204.d: New test.
- * gdc.dg/gdc210.d: New test.
- * gdc.dg/gdc212.d: New test.
- * gdc.dg/gdc213.d: New test.
- * gdc.dg/gdc218.d: New test.
- * gdc.dg/gdc223.d: New test.
- * gdc.dg/gdc231.d: New test.
- * gdc.dg/gdc239.d: New test.
- * gdc.dg/gdc24.d: New test.
- * gdc.dg/gdc240.d: New test.
- * gdc.dg/gdc241.d: New test.
- * gdc.dg/gdc242a.d: New test.
- * gdc.dg/gdc242b.d: New test.
- * gdc.dg/gdc248.d: New test.
- * gdc.dg/gdc250.d: New test.
- * gdc.dg/gdc251.d: New test.
- * gdc.dg/gdc253a.d: New test.
- * gdc.dg/gdc253b.d: New test.
- * gdc.dg/gdc255.d: New test.
- * gdc.dg/gdc256.d: New test.
- * gdc.dg/gdc261.d: New test.
- * gdc.dg/gdc27.d: New test.
- * gdc.dg/gdc273.d: New test.
- * gdc.dg/gdc280.d: New test.
- * gdc.dg/gdc284.d: New test.
- * gdc.dg/gdc285.d: New test.
- * gdc.dg/gdc286.d: New test.
- * gdc.dg/gdc300.d: New test.
- * gdc.dg/gdc309.d: New test.
- * gdc.dg/gdc31.d: New test.
- * gdc.dg/gdc35.d: New test.
- * gdc.dg/gdc36.d: New test.
- * gdc.dg/gdc37.d: New test.
- * gdc.dg/gdc4.d: New test.
- * gdc.dg/gdc43.d: New test.
- * gdc.dg/gdc47.d: New test.
- * gdc.dg/gdc51.d: New test.
- * gdc.dg/gdc57.d: New test.
- * gdc.dg/gdc66.d: New test.
- * gdc.dg/gdc67.d: New test.
- * gdc.dg/gdc71.d: New test.
- * gdc.dg/gdc77.d: New test.
- * gdc.dg/imports/gdc239.d: Remove phobos dependency.
- * gdc.dg/imports/gdc241a.d: Updated imports.
- * gdc.dg/imports/gdc241b.d: Likewise.
- * gdc.dg/imports/gdc251a.d: Likewise.
- * gdc.dg/imports/gdc253.d: Rename to...
- * gdc.dg/imports/gdc253a.d: ...this.
- * gdc.dg/imports/gdc253b.d: New.
- * gdc.dg/imports/gdc36.d: New.
- * gdc.dg/imports/runnable.d: Removed.
- * gdc.dg/link.d: Removed.
- * gdc.dg/runnable.d: Removed.
- * gdc.dg/runnable2.d: Removed.
- * gdc.dg/simd.d: Remove phobos dependency.
-
-2020-07-31 Martin Sebor <msebor@redhat.com>
-
- PR c++/96003
- * g++.dg/warn/Wnonnull7.C: New test.
-
-2020-07-31 Richard Biener <rguenther@suse.de>
-
- PR debug/96383
- * gcc.dg/debug/dwarf2/pr96383-1.c: New testcase.
- * gcc.dg/debug/dwarf2/pr96383-2.c: Likewise.
-
-2020-07-31 Kewen Lin <linkw@linux.ibm.com>
-
- * gcc.target/aarch64/sve/cost_model_2.c: Adjust due to cost model
- change.
-
-2020-07-31 Richard Biener <rguenther@suse.de>
-
- PR middle-end/96369
- * c-c++-common/pr96369.c: New testcase.
-
-2020-07-31 Martin Liska <mliska@suse.cz>
-
- * gcc.dg/tree-prof/indir-call-prof-malloc.c: New test.
-
-2020-07-31 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/torture/20200727-0.c: New testcase.
-
-2020-07-31 Patrick Palka <ppalka@redhat.com>
-
- PR c++/96197
- * g++.dg/cpp1y/constexpr-array8.C: New test.
-
-2020-07-30 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/96152
- * gdc.dg/pr96152.d: New test.
-
-2020-07-30 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/96154
- * gdc.dg/pr96154a.d: New test.
- * gdc.dg/pr96154b.d: New test.
-
-2020-07-30 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/96140
- * gdc.dg/pr96140.d: New test.
-
-2020-07-30 Will Schmidt <will_schmidt@vnet.ibm.com>
-
- * gcc.target/powerpc/lsbb-runnable.c: New test.
- * gcc.target/powerpc/lsbb.c: New test.
-
-2020-07-30 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * gdc.dg/array1.d: New test.
-
-2020-07-30 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * gdc.dg/intrinsics.d: Add ror and rol tests.
-
-2020-07-30 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * gdc.dg/intrinsics.d: New test.
-
-2020-07-30 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96370
- * gcc.dg/pr96370.c: New testcase.
-
-2020-07-30 Roger Sayle <roger@nextmovesoftware.com>
- Tom de Vries <tdevries@suse.de>
-
- * gcc.target/nvptx/v2si-vec-set-extract.c: New test.
-
-2020-07-30 Patrick Palka <ppalka@redhat.com>
-
- PR c++/64194
- * g++.dg/cpp1y/auto-fn60.C: New test.
-
-2020-07-30 Patrick Palka <ppalka@redhat.com>
-
- PR c++/95486
- * g++.dg/cpp2a/class-deduction-alias3.C: New test.
-
-2020-07-30 Patrick Palka <ppalka@redhat.com>
-
- PR c++/96106
- * g++.dg/concepts/abbrev7.C: New test.
-
-2020-07-30 Patrick Palka <ppalka@redhat.com>
-
- PR c++/96164
- * g++.dg/cpp2a/concepts-explicit-inst5.C: New test.
-
-2020-07-29 Roger Sayle <roger@nextmovesoftware.com>
-
- * gcc.target/nvptx/recip-1.c: New test.
-
-2020-07-29 Jason Merrill <jason@redhat.com>
-
- PR c++/91427
- * g++.dg/coroutines/co-return-syntax-10-movable.C: Extend.
- * g++.dg/cpp0x/Wredundant-move1.C: Adjust for C++20.
- * g++.dg/cpp0x/Wredundant-move7.C: Adjust for C++20.
- * g++.dg/cpp0x/Wredundant-move9.C: Adjust for C++20.
- * g++.dg/cpp0x/elision_neg.C: Adjust for C++20.
- * g++.dg/cpp0x/move-return2.C: Adjust for C++20.
- * g++.dg/cpp0x/ref-qual20.C: Adjust for C++20.
- * g++.dg/cpp2a/implicit-move1.C: New test.
- * g++.dg/cpp2a/implicit-move2.C: New test.
- * g++.dg/cpp2a/implicit-move3.C: New test.
-
-2020-07-29 Jason Merrill <jason@redhat.com>
-
- PR c++/91212
- * g++.dg/cpp0x/move-return3.C: New test.
-
-2020-07-29 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/order-3.f90: New test.
- * gfortran.dg/gomp/order-4.f90: New test.
-
-2020-07-29 Tiziano Müller <tiziano.mueller@chem.uzh.ch>
-
- * c-c++-common/cpp/has-include-1-traditional.c: New.
-
-2020-07-29 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/map-3.f90: New test.
- * gfortran.dg/gomp/map-4.f90: New test.
-
-2020-07-29 Joe Ramsay <joe.ramsay@arm.com>
-
- * gcc.target/arm/mve/intrinsics/mve-vldstr16-no-writeback.c: New file.
-
-2020-07-29 Mark Eggleston <markeggleston@gcc.gnu.org>
-
- PR fortran/96319
- * gfortran.dg/pr96319.f90: New test.
-
-2020-07-29 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96349
- * gcc.dg/torture/pr96349.c: New testcase.
-
-2020-07-29 Mark Eggleston <markeggleston@gcc.gnu.org>
-
- PR fortran/53298
- * gfortran.dg/pr53298.f90: New test.
-
-2020-07-29 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/requires-1.f90: New test.
- * gfortran.dg/gomp/requires-2.f90: New test.
- * gfortran.dg/gomp/requires-3.f90: New test.
- * gfortran.dg/gomp/requires-4.f90: New test.
- * gfortran.dg/gomp/requires-5.f90: New test.
- * gfortran.dg/gomp/requires-6.f90: New test.
- * gfortran.dg/gomp/requires-7.f90: New test.
- * gfortran.dg/gomp/requires-8.f90: New test.
- * gfortran.dg/gomp/requires-9.f90: New test.
-
-2020-07-28 Sergei Trofimovich <siarheit@google.com>
-
- PR ipa/96291
- * gcc.dg/lto/pr96291_0.c: New testcase.
- * gcc.dg/lto/pr96291_1.c: Support file.
- * gcc.dg/lto/pr96291_2.c: Likewise.
- * gcc.dg/lto/pr96291.h: Likewise.
-
-2020-07-28 Roger Sayle <roger@nextmovesoftware.com>
- Richard Biener <rguenther@suse.de>
-
- * gcc.dg/fold-popcount-5.c: New test.
- * gcc.dg/fold-parity-1.c: Likewise.
- * gcc.dg/fold-parity-2.c: Likewise.
- * gcc.dg/fold-parity-3.c: Likewise.
- * gcc.dg/fold-parity-4.c: Likewise.
- * gcc.dg/fold-parity-5.c: Likewise.
-
-2020-07-28 Nathan Sidwell <nathan@acm.org>
-
- * lib/options.exp: Fix spello
-
-2020-07-28 Jakub Jelinek <jakub@redhat.com>
- Mark Wielaard <mark@klomp.org>
-
- PR c++/96328
- * g++.dg/diagnostic/pr96328.C: New test.
-
-2020-07-28 Jakub Jelinek <jakub@redhat.com>
-
- PR preprocessor/96323
- * c-c++-common/cpp/pr96323.c: New test.
-
-2020-07-28 Roger Sayle <roger@nextmovesoftware.com>
- Tom de Vries <tdevries@suse.de>
-
- * gcc.target/nvptx/cvt.c: New test.
- * gcc.target/nvptx/shift16.c: New test.
-
-2020-07-28 Jakub Jelinek <jakub@redhat.com>
-
- * g++.dg/cpp2a/nontype-subob1.C: Allow s1, i1 or x1 instead of l1 for
- targets with short, int or long long ssize_t.
-
-2020-07-28 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/96335
- * gcc.dg/pr96335.c: New test.
-
-2020-07-27 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/torture/pr39074-2.c: Adjust for mmix.
- * gcc.dg/torture/pr39074.c, gcc.dg/torture/pta-callused-1.c: Ditto.
-
-2020-07-27 Nathan Sidwell <nathan@acm.org>
-
- * g++.dg/lookup/missing-std-include-10.h: New.
- * g++.dg/lookup/missing-std-include-10.C: New.
- * g++.dg/lookup/missing-std-include-11.C: New.
-
-2020-07-27 Martin Sebor <msebor@redhat.com>
-
- PR tree-optimization/84079
- * gcc.dg/Warray-bounds-62.c: New test.
-
-2020-07-27 Martin Liska <mliska@suse.cz>
-
- PR tree-optimization/96128
- * gcc.target/s390/vector/pr96128.c: New test.
-
-2020-07-27 H.J. Lu <hjl.tools@gmail.com>
-
- PR bootstrap/96203
- * gcc.target/i386/pr96203-1.c: New test.
- * gcc.target/i386/pr96203-2.c: Likewise.
-
-2020-07-27 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/tree-ssa/vector-4.c: Adjust for mmix.
-
-2020-07-27 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/tree-ssa/ssa-dse-26.c: Adjust for mmix.
-
-2020-07-27 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/tree-ssa/ssa-dom-cse-2.c: xfail scan for mmix.
-
-2020-07-27 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/tree-ssa/reassoc-20.c: Adjust for mmix.
-
-2020-07-26 Patrick Palka <ppalka@redhat.com>
-
- PR c++/79504
- * g++.dg/cpp0x/decltype79.C: New test.
-
-2020-07-26 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/tree-ssa/forwprop-36.c: Adjust for mmix.
-
-2020-07-26 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/torture/pr59330.c: Disable for mmix.
-
-2020-07-25 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/abi/pure-virtual1.C: Add dynamic_lookup option
- for Darwin.
-
-2020-07-25 Martin Sebor <msebor@redhat.com>
-
- PR c++/96310
- * g++.dg/warn/Wnonnull8.C: New file.
-
-2020-07-24 Segher Boessenkool <segher@kernel.crashing.org>
-
- * gcc.target/powerpc/pr95907.c: New.
-
-2020-07-24 Hans-Peter Nilsson <hp@bitrange.com>
-
- * c-c++-common/pr56493.c: Allow ":" in label, for mmix.
-
-2020-07-24 Hans-Peter Nilsson <hp@bitrange.com>
-
- * c-c++-common/patchable_function_entry-decl.c,
- c-c++-common/patchable_function_entry-default.c,
- c-c++-common/patchable_function_entry-definition.c: Adjust for mmix.
-
-2020-07-24 Sunil K Pandey <skpgkp2@gmail.com>
-
- PR target/96192
- * c-c++-common/pr96192-1.c: New test.
-
-2020-07-24 Alexandre Oliva <oliva@adacore.com>
-
- * lib/scanoffload.exp (scoff-testname, scoff-adjust): New.
- (scoff): Call them.
-
-2020-07-24 Alexandre Oliva <oliva@adacore.com>
-
- PR driver/96230
- * gcc.misc-tests/outputs.exp: Add tests with -dumpbase-ext,
- with identical -dumpbase, with -dumpbase "", and without any
- -dumpbase.
- (outest): Fix "" expansion in expected outputs, skip
- adjustments.
-
-2020-07-24 Alexandre Oliva <oliva@adacore.com>
-
- PR testsuite/95720
- * lib/gcc-defs.exp (gcc_adjust_linker_flags_list): Split out of...
- (gcc_adjust_linker_flags): ... this. Protect gluefile and
- wrap_flags.
- * gcc.misc-tests/outputs.exp: Use gcc_adjust_linker_flags_list.
-
-2020-07-24 Dominique d'Humieres <dhumieres.dominique@free.fr>
-
- PR fortran/93567
- * gfortran.dg/round_3.f08: Add test cases.
-
-2020-07-24 Dominique d'Humieres <dhumieres.dominique@free.fr>
-
- PR fortran/93592
- * gfortran.dg/fmt_en.f90: Adjust test.
- * gfortran.dg/fmt_en_rd.f90: New test.
- * gfortran.dg/fmt_en_rn.f90: New test.
- * gfortran.dg/fmt_en_ru.f90: New test.
- * gfortran.dg/fmt_en_rz.f90: New test.
-
-2020-07-24 Patrick Palka <ppalka@redhat.com>
-
- PR c++/81339
- * g++.dg/cpp0x/decltype78.C: New test.
-
-2020-07-24 Thomas Schwinge <thomas@codesourcery.com>
-
- * lib/scandump.exp (scan-dump-dem-not): Fix TCL syntax error.
-
-2020-07-24 H.J. Lu <hjl.tools@gmail.com>
-
- PR middle-end/95886
- * gcc.target/i386/memcpy-pr95886.c: Restrict test to !ia32.
-
-2020-07-23 Martin Sebor <msebor@redhat.com>
-
- PR testsuite/95886
- * gcc.target/i386/memcpy-pr95886.c: Restrict test to LP64.
-
-2020-07-23 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/lastprivate-conditional-1.f90: New test.
- * gfortran.dg/gomp/lastprivate-conditional-2.f90: New test.
- * gfortran.dg/gomp/lastprivate-conditional-3.f90: New test.
- * gfortran.dg/gomp/lastprivate-conditional-4.f90: New test.
- * gfortran.dg/gomp/lastprivate-conditional-5.f90: New test.
-
-2020-07-23 Kito Cheng <kito.cheng@sifive.com>
-
- PR target/96260
- * gcc.target/riscv/pr91441.c: Update warning message.
- * gcc.target/riscv/pr96260.c: New.
-
-2020-07-23 Hans-Peter Nilsson <hp@bitrange.com>
-
- * c-c++-common/builtin-has-attribute-4.c: Require visibility.
-
-2020-07-22 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/cancel-2.f90: New test.
- * gfortran.dg/gomp/cancel-3.f90: New test.
- * gfortran.dg/gomp/if-1.f90: New test.
-
-2020-07-22 Peter Bergner <bergner@linux.ibm.com>
-
- PR target/96236
- * gcc.target/powerpc/mma-double-test.c: Update storing results for
- correct little-endian ordering.
- * gcc.target/powerpc/mma-single-test.c: Likewise.
-
-2020-07-22 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/95237
- * c-c++-common/pr95237-6.c: Only run for x86 targets.
-
-2020-07-22 Tobias Burnus <tobias@codesourcery.com>
-
- * c-c++-common/gomp/critical-hint-1.c: Moved to libgomp/.
- * c-c++-common/gomp/critical-hint-2.c: Moved to libgomp/.
- * gfortran.dg/gomp/critical-hint-1.f90: Moved to libgomp/.
- * gfortran.dg/gomp/critical-hint-2.f90: Moved to libgomp/.
-
-2020-07-22 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
-
- * gcc.target/aarch64/ldp_vec_v2sf.c: New test.
- * gcc.target/aarch64/ldp_vec_v2si.c: New test.
- * gcc.target/aarch64/stp_vec_v2df.c: New test.
- * gcc.target/aarch64/stp_vec_v2di.c: New test.
- * gcc.target/aarch64/stp_vec_v2sf.c: New test.
- * gcc.target/aarch64/stp_vec_v2si.c: New test.
-
-2020-07-22 Tobias Burnus <tobias@codesourcery.com>
-
- * g++.dg/gomp/critical-3.C: Add nameless critical with hint testcase.
- * c-c++-common/gomp/critical-hint-1.c: New test.
- * c-c++-common/gomp/critical-hint-2.c: New test.
- * gfortran.dg/gomp/critical-hint-1.f90: New test.
- * gfortran.dg/gomp/critical-hint-2.f90: New test.
-
-2020-07-22 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/no_profile_instrument_function-attr-1.c: Adjust scanned
- regex for NO_DOT_IN_LABEL.
-
-2020-07-21 Sunil K Pandey <skpgkp2@gmail.com>
-
- PR target/95237
- * c-c++-common/pr95237-1.c: New test.
- * c-c++-common/pr95237-2.c: New test.
- * c-c++-common/pr95237-3.c: New test.
- * c-c++-common/pr95237-4.c: New test.
- * c-c++-common/pr95237-5.c: New test.
- * c-c++-common/pr95237-6.c: New test.
- * c-c++-common/pr95237-7.c: New test.
- * c-c++-common/pr95237-8.c: New test.
- * c-c++-common/pr95237-9.c: New test.
-
-2020-07-21 Peter Bergner <bergner@linux.ibm.com>
-
- PR target/92488
- * gcc.target/powerpc/convert-fp-128.c (bl): Update POWER9 count.
-
-2020-07-21 Nathan Sidwell <nathan@acm.org>
-
- * g++.dg/parse/pr96257.C: New.
-
-2020-07-21 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/89574
- * gfortran.dg/pr89574.f90: New file.
-
-2020-07-21 Sandra Loosemore <sandra@codesourcery.com>
-
- * lib/profopt.exp (auto-profopt-execute): Pass -DFOR_AUTOFDO_TESTING
- on command line for both compiles.
- * gcc.dg/tree-prof/cold_partition_label.c: Scale down for
- non-FDO testing.
- * gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c: Likewise.
- * gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c: Likewise.
- * gcc.dg/tree-prof/indir-call-prof-topn.c: Likewise.
- * gcc.dg/tree-prof/section-attr-1.c: Likewise.
- * gcc.dg/tree-prof/section-attr-2.c: Likewise.
- * gcc.dg/tree-prof/section-attr-3.c: Likewise.
-
-2020-07-21 Dimitar Dimitrov <dimitar@dinux.eu>
-
- * gcc.dg/attr-copy-4.c: Unpacked may still have alignment of 1
- on targets with default_packed.
- * gcc.dg/c11-align-9.c: Remove AVR target filter and replace
- with default_packed filter.
-
-2020-07-21 Dimitar Dimitrov <dimitar@dinux.eu>
-
- * gcc.dg/pr53037-1.c: Relax warning pattern.
-
-2020-07-21 Dimitar Dimitrov <dimitar@dinux.eu>
-
- * c-c++-common/Waddress-of-packed-member-2.c: Add dg-warning for
- ignored attribute if target is default_packed.
- * c-c++-common/Wattributes.c: Ditto.
- * c-c++-common/attr-copy.c: Ditto.
- * c-c++-common/builtin-has-attribute-4.c: Ditto.
- * c-c++-common/pr51628-29.c: Ditto.
- * c-c++-common/pr51628-30.c: Ditto.
- * c-c++-common/pr51628-32.c: Ditto.
- * gcc.dg/Wattributes-6.c: Ditto.
- * gcc.dg/attr-copy-4.c: Ditto.
- * gcc.dg/attr-copy-8.c: Ditto.
-
-2020-07-21 Dimitar Dimitrov <dimitar@dinux.eu>
-
- * c-c++-common/Waddress-of-packed-member-1.c: Filter dg-warning
- for targets who pack by default.
- * c-c++-common/Waddress-of-packed-member-2.c: Ditto.
- * c-c++-common/pr51628-13.c: Ditto.
- * c-c++-common/pr51628-15.c: Ditto.
- * c-c++-common/pr51628-16.c: Ditto.
- * c-c++-common/pr51628-26.c: Ditto.
- * c-c++-common/pr51628-27.c: Ditto.
- * c-c++-common/pr51628-28.c: Ditto.
- * c-c++-common/pr51628-29.c: Ditto.
- * c-c++-common/pr51628-3.c: Ditto.
- * c-c++-common/pr51628-30.c: Ditto.
- * c-c++-common/pr51628-31.c: Ditto.
- * c-c++-common/pr51628-32.c: Ditto.
- * c-c++-common/pr51628-33.c: Ditto.
- * c-c++-common/pr51628-35.c: Ditto.
- * c-c++-common/pr51628-4.c: Ditto.
- * c-c++-common/pr51628-5.c: Ditto.
- * c-c++-common/pr51628-6.c: Ditto.
- * c-c++-common/pr51628-8.c: Ditto.
- * c-c++-common/pr51628-9.c: Ditto.
- * c-c++-common/pr88664-2.c: Ditto.
- * gcc.dg/pr51628-17.c: Ditto.
- * gcc.dg/pr51628-19.c: Ditto.
- * gcc.dg/pr51628-20.c: Ditto.
- * gcc.dg/pr51628-21.c: Ditto.
- * gcc.dg/pr51628-22.c: Ditto.
- * gcc.dg/pr51628-24.c: Ditto.
- * gcc.dg/pr51628-25.c: Ditto.
- * gcc.dg/pr51628-34.c: Ditto.
- * gcc.dg/pr88928.c: Ditto.
-
-2020-07-21 Kito Cheng <kito.cheng@sifive.com>
-
- * gcc.dg/analyzer/signal-1.c: Add dg-require-effective-target
- signal.
- * gcc.dg/analyzer/signal-2.c: Ditto.
- * gcc.dg/analyzer/signal-3.c: Ditto.
- * gcc.dg/analyzer/signal-4a.c: Ditto.
- * gcc.dg/analyzer/signal-4b.c: Ditto.
- * gcc.dg/analyzer/signal-5.c: Ditto.
- * gcc.dg/analyzer/signal-6.c: Ditto.
- * gcc.dg/analyzer/signal-exit.c: Ditto.
-
-2020-07-21 Xionghu Luo <luoxhu@linux.ibm.com>
-
- PR rtl-optimization/89310
- * gcc.target/powerpc/pr89310.c: New test.
-
-2020-07-21 Kewen Lin <linkw@linux.ibm.com>
-
- * gcc.target/powerpc/p9-vec-length-1.h: New test.
- * gcc.target/powerpc/p9-vec-length-2.h: New test.
- * gcc.target/powerpc/p9-vec-length-3.h: New test.
- * gcc.target/powerpc/p9-vec-length-4.h: New test.
- * gcc.target/powerpc/p9-vec-length-5.h: New test.
- * gcc.target/powerpc/p9-vec-length-6.h: New test.
- * gcc.target/powerpc/p9-vec-length-7.h: New test.
- * gcc.target/powerpc/p9-vec-length-8.h: New test.
- * gcc.target/powerpc/p9-vec-length-epil-1.c: New test.
- * gcc.target/powerpc/p9-vec-length-epil-2.c: New test.
- * gcc.target/powerpc/p9-vec-length-epil-3.c: New test.
- * gcc.target/powerpc/p9-vec-length-epil-4.c: New test.
- * gcc.target/powerpc/p9-vec-length-epil-5.c: New test.
- * gcc.target/powerpc/p9-vec-length-epil-6.c: New test.
- * gcc.target/powerpc/p9-vec-length-epil-7.c: New test.
- * gcc.target/powerpc/p9-vec-length-epil-8.c: New test.
- * gcc.target/powerpc/p9-vec-length-epil-run-1.c: New test.
- * gcc.target/powerpc/p9-vec-length-epil-run-2.c: New test.
- * gcc.target/powerpc/p9-vec-length-epil-run-3.c: New test.
- * gcc.target/powerpc/p9-vec-length-epil-run-4.c: New test.
- * gcc.target/powerpc/p9-vec-length-epil-run-5.c: New test.
- * gcc.target/powerpc/p9-vec-length-epil-run-6.c: New test.
- * gcc.target/powerpc/p9-vec-length-epil-run-7.c: New test.
- * gcc.target/powerpc/p9-vec-length-epil-run-8.c: New test.
- * gcc.target/powerpc/p9-vec-length-full-1.c: New test.
- * gcc.target/powerpc/p9-vec-length-full-2.c: New test.
- * gcc.target/powerpc/p9-vec-length-full-3.c: New test.
- * gcc.target/powerpc/p9-vec-length-full-4.c: New test.
- * gcc.target/powerpc/p9-vec-length-full-5.c: New test.
- * gcc.target/powerpc/p9-vec-length-full-6.c: New test.
- * gcc.target/powerpc/p9-vec-length-full-7.c: New test.
- * gcc.target/powerpc/p9-vec-length-full-8.c: New test.
- * gcc.target/powerpc/p9-vec-length-full-run-1.c: New test.
- * gcc.target/powerpc/p9-vec-length-full-run-2.c: New test.
- * gcc.target/powerpc/p9-vec-length-full-run-3.c: New test.
- * gcc.target/powerpc/p9-vec-length-full-run-4.c: New test.
- * gcc.target/powerpc/p9-vec-length-full-run-5.c: New test.
- * gcc.target/powerpc/p9-vec-length-full-run-6.c: New test.
- * gcc.target/powerpc/p9-vec-length-full-run-7.c: New test.
- * gcc.target/powerpc/p9-vec-length-full-run-8.c: New test.
- * gcc.target/powerpc/p9-vec-length-run-1.h: New test.
- * gcc.target/powerpc/p9-vec-length-run-2.h: New test.
- * gcc.target/powerpc/p9-vec-length-run-3.h: New test.
- * gcc.target/powerpc/p9-vec-length-run-4.h: New test.
- * gcc.target/powerpc/p9-vec-length-run-5.h: New test.
- * gcc.target/powerpc/p9-vec-length-run-6.h: New test.
- * gcc.target/powerpc/p9-vec-length-run-7.h: New test.
- * gcc.target/powerpc/p9-vec-length-run-8.h: New test.
- * gcc.target/powerpc/p9-vec-length.h: New test.
-
-2020-07-21 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/independent-cloneids-1.c: Skip for mmix.
- flag_stack_usage_info.
-
-2020-07-21 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/cdce3.c: Update matched line-number.
-
-2020-07-20 Jason Merrill <jason@redhat.com>
-
- * g++.dg/opt/flifetime-dse7.C: New test.
-
-2020-07-20 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp1z/nontype2.C: No error in C++20.
- * g++.dg/template/nontype25.C: No error in C++20.
- * g++.dg/template/nontype8.C: No error in C++20.
- * g++.dg/cpp2a/nontype-subob1.C: New test.
- * g++.dg/cpp2a/nontype-subob2.C: New test.
- * g++.dg/cpp1z/nontype3.C: Now C++17-only.
- * g++.dg/cpp2a/feat-cxx2a.C: Adjust expected value.
-
-2020-07-20 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp2a/class-deduction-aggr7.C: New test.
-
-2020-07-20 Yang Yang <yangyang305@huawei.com>
-
- * gcc.target/aarch64/sve/pr96195.c: New test.
-
-2020-07-20 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/95750
- * gcc.target/i386/pr95750.c: New test.
-
-2020-07-20 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/95189
- PR middle-end/95886
- * gcc.dg/memcmp-pr95189.c: New test.
- * gcc.dg/strncmp-3.c: New test.
- * gcc.target/i386/memcpy-pr95886.c: New test.
-
-2020-07-20 Alex Coplan <alex.coplan@arm.com>
-
- PR jit/69435
- * jit.dg/jit.exp (fixed_host_execute): Fix regex patterns to
- always explicitly match newlines.
-
-2020-07-20 Jakub Jelinek <jakub@redhat.com>
-
- PR libstdc++/93121
- * gcc.dg/tree-ssa/pr93121-2.c: New test.
-
-2020-07-20 Jakub Jelinek <jakub@redhat.com>
-
- PR libstdc++/93121
- * gcc.dg/tree-ssa/pr93121-1.c: New test.
-
-2020-07-20 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/const-uniq-1.c: Adjust scanned pattern for mmix.
-
-2020-07-20 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/cdce3.c: Skip for mmix.
-
-2020-07-20 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/pr87485.c: Require scheduling.
-
-2020-07-19 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/95973
- PR target/96238
- * gcc.target/i386/pr95973.c: New test.
-
-2020-07-19 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/96018
- * gfortran.dg/implicit_pure_5.c: New file.
- * gfortran.dg/implicit_pure_5.f90: New file.
-
-2020-07-19 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/attr-copy-6.c: Require visibility.
-
-2020-07-19 Hans-Peter Nilsson <hp@bitrange.com>
-
- * gcc.dg/Wno-frame-address.c: Skip for cris and mmix.
-
-2020-07-18 Jakub Jelinek <jakub@redhat.com>
-
- * c-c++-common/cpp/pragma-eof.c: Use .+3 instead of 6 in
- dg-error.
-
-2020-07-18 David Edelsohn <dje.gcc@gmail.com>
-
- * gfortran.dg/goacc/finalize-1.f: Adjust regex for 32 bits.
-
-2020-07-18 Hans-Peter Nilsson <hp@bitrange.com>
-
- * c-c++-common/cpp/pragma-eof.c: Require fopenmp.
-
-2020-07-18 Peter Bergner <bergner@linux.ibm.com>
-
- PR target/92488
- * gcc.target/powerpc/convert-fp-128.c (bl, drsp, drdpq): Update counts.
- (__dpd_trunctdsd2): Make conditional on !hard_dfp.
- (__dpd_extendsddd2, __dpd_extendsdtd2, __dpd_truncddsd2,
- __dpd_extendddtd2, __dpd_trunctddd2): Use !hard_dfp.
- * gcc.target/powerpc/pr92488.c: New test.
-
-2020-07-17 Marek Polacek <polacek@redhat.com>
-
- PR c++/79815
- * g++.dg/cpp1y/auto-fn59.C: New test.
-
-2020-07-17 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/96186
- PR target/88713
- * gcc.target/i386/pr88713-3.c: New test.
-
-2020-07-17 Tamar Christina <tamar.christina@arm.com>
-
- * gcc.target/aarch64/cpunative/aarch64-cpunative.exp: New test.
- * gcc.target/aarch64/cpunative/info_0: New test.
- * gcc.target/aarch64/cpunative/info_1: New test.
- * gcc.target/aarch64/cpunative/info_10: New test.
- * gcc.target/aarch64/cpunative/info_11: New test.
- * gcc.target/aarch64/cpunative/info_12: New test.
- * gcc.target/aarch64/cpunative/info_13: New test.
- * gcc.target/aarch64/cpunative/info_14: New test.
- * gcc.target/aarch64/cpunative/info_15: New test.
- * gcc.target/aarch64/cpunative/info_2: New test.
- * gcc.target/aarch64/cpunative/info_3: New test.
- * gcc.target/aarch64/cpunative/info_4: New test.
- * gcc.target/aarch64/cpunative/info_5: New test.
- * gcc.target/aarch64/cpunative/info_6: New test.
- * gcc.target/aarch64/cpunative/info_7: New test.
- * gcc.target/aarch64/cpunative/info_8: New test.
- * gcc.target/aarch64/cpunative/info_9: New test.
- * gcc.target/aarch64/cpunative/native_cpu_0.c: New test.
- * gcc.target/aarch64/cpunative/native_cpu_1.c: New test.
- * gcc.target/aarch64/cpunative/native_cpu_10.c: New test.
- * gcc.target/aarch64/cpunative/native_cpu_11.c: New test.
- * gcc.target/aarch64/cpunative/native_cpu_12.c: New test.
- * gcc.target/aarch64/cpunative/native_cpu_13.c: New test.
- * gcc.target/aarch64/cpunative/native_cpu_14.c: New test.
- * gcc.target/aarch64/cpunative/native_cpu_15.c: New test.
- * gcc.target/aarch64/cpunative/native_cpu_2.c: New test.
- * gcc.target/aarch64/cpunative/native_cpu_3.c: New test.
- * gcc.target/aarch64/cpunative/native_cpu_4.c: New test.
- * gcc.target/aarch64/cpunative/native_cpu_5.c: New test.
- * gcc.target/aarch64/cpunative/native_cpu_6.c: New test.
- * gcc.target/aarch64/cpunative/native_cpu_7.c: New test.
- * gcc.target/aarch64/cpunative/native_cpu_8.c: New test.
- * gcc.target/aarch64/cpunative/native_cpu_9.c: New test.
-
-2020-07-17 Tamar Christina <tamar.christina@arm.com>
-
- * lib/gcc-dg.exp (dg-set-compiler-env-var, dg-set-target-env-var): Add
- verbose output.
-
-2020-07-17 Andrew Pinski <apinksi@marvell.com>
- Dmitrij Pochepko <dmitrij.pochepko@bell-sw.com>
-
- PR target/93720
- * gcc.target/aarch64/vins-1.c: New test.
- * gcc.target/aarch64/vins-2.c: New test.
- * gcc.target/aarch64/vins-3.c: New test.
-
-2020-07-17 Andrew Pinski <apinksi@marvell.com>
- Dmitrij Pochepko <dmitrij.pochepko@bell-sw.com>
-
- PR target/82199
- * gcc.target/aarch64/vdup_n_3.c: New test.
- * gcc.target/aarch64/vzip_1.c: New test.
- * gcc.target/aarch64/vzip_2.c: New test.
- * gcc.target/aarch64/vzip_3.c: New test.
- * gcc.target/aarch64/vzip_4.c: New test.
-
-2020-07-17 Andreas Krebbel <krebbel@linux.ibm.com>
-
- PR target/96127
- * gcc.target/s390/pr96127.c: New test.
-
-2020-07-17 Kewen Lin <linkw@linux.ibm.com>
-
- * gcc.target/powerpc/conv-vectorize-1.c: Add option
- -fno-vect-cost-model.
- * gcc.target/powerpc/conv-vectorize-2.c: Likewise.
-
-2020-07-16 Julian Brown <julian@codesourcery.com>
- Thomas Schwinge <thomas@codesourcery.com>
-
- * gfortran.dg/goacc/attach-descriptor.f90: New test.
-
-2020-07-16 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/95591
- PR c++/95599
- PR c++/95823
- PR c++/95824
- PR c++/95895
- * g++.dg/coroutines/pr95591.C: New test.
- * g++.dg/coroutines/pr95599.C: New test.
- * g++.dg/coroutines/pr95823.C: New test.
- * g++.dg/coroutines/pr95824.C: New test.
-
-2020-07-16 Jonathan Wakely <jwakely@redhat.com>
-
- PR testsuite/96014
- * g++.dg/analyzer/pr94028.C: Replace dynamic exception
- specification with noexcept-specifier for C++11 and later.
-
-2020-07-16 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/96189
- * gcc.target/i386/pr96189-1.c: New test.
-
-2020-07-16 Marek Polacek <polacek@redhat.com>
-
- DR 188
- * g++.dg/DRs/dr188.C: New test.
-
-2020-07-15 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/96189
- * gcc.target/i386/pr96189.c: New test.
-
-2020-07-15 Nathan Sidwell <nathan@acm.org>
-
- * g++.dg/parse/pragma-recovery.C: New.
-
-2020-07-15 Jakub Jelinek <jakub@redhat.com>
-
- PR target/96174
- * gcc.target/i386/avx512f-vcmppd-3.c: New test.
- * gcc.target/i386/avx512f-vcmpps-3.c: New test.
-
-2020-07-15 Jakub Jelinek <jakub@redhat.com>
-
- PR target/96176
- * gcc.target/i386/pr96176.c: New test.
-
-2020-07-14 Marek Polacek <polacek@redhat.com>
-
- PR c++/59978
- * g++.dg/cpp0x/vt-59978.C: New test.
-
-2020-07-14 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/95443
- * gcc.target/i386/pr95443-1.c (simple_strstr): Replace
- __glibc_unlikely with __builtin_expect.
-
-2020-07-14 Marek Polacek <polacek@redhat.com>
-
- PR c++/95789
- PR c++/96104
- PR c++/96179
- * g++.dg/conversion/ref4.C: New test.
- * g++.dg/conversion/ref5.C: New test.
- * g++.dg/conversion/ref6.C: New test.
-
-2020-07-14 Lewis Hyatt <lhyatt@gmail.com>
-
- PR preprocessor/49973
- PR other/86904
- * c-c++-common/Wmisleading-indentation-3.c: Adjust expected output
- for new defaults.
- * c-c++-common/Wmisleading-indentation.c: Likewise.
- * c-c++-common/diagnostic-format-json-1.c: Likewise.
- * c-c++-common/diagnostic-format-json-2.c: Likewise.
- * c-c++-common/diagnostic-format-json-3.c: Likewise.
- * c-c++-common/diagnostic-format-json-4.c: Likewise.
- * c-c++-common/diagnostic-format-json-5.c: Likewise.
- * c-c++-common/missing-close-symbol.c: Likewise.
- * g++.dg/diagnostic/bad-binary-ops.C: Likewise.
- * g++.dg/parse/error4.C: Likewise.
- * g++.old-deja/g++.brendan/crash11.C: Likewise.
- * g++.old-deja/g++.pt/overload2.C: Likewise.
- * g++.old-deja/g++.robertl/eb109.C: Likewise.
- * gcc.dg/analyzer/malloc-paths-9.c: Likewise.
- * gcc.dg/bad-binary-ops.c: Likewise.
- * gcc.dg/format/branch-1.c: Likewise.
- * gcc.dg/format/pr79210.c: Likewise.
- * gcc.dg/plugin/diagnostic-test-expressions-1.c: Likewise.
- * gcc.dg/plugin/diagnostic-test-string-literals-1.c: Likewise.
- * gcc.dg/redecl-4.c: Likewise.
- * gfortran.dg/diagnostic-format-json-1.F90: Likewise.
- * gfortran.dg/diagnostic-format-json-2.F90: Likewise.
- * gfortran.dg/diagnostic-format-json-3.F90: Likewise.
- * go.dg/arrayclear.go: Add a comment explaining why adding a
- comment was necessary to work around a dejagnu bug.
- * c-c++-common/diagnostic-units-1.c: New test.
- * c-c++-common/diagnostic-units-2.c: New test.
- * c-c++-common/diagnostic-units-3.c: New test.
- * c-c++-common/diagnostic-units-4.c: New test.
- * c-c++-common/diagnostic-units-5.c: New test.
- * c-c++-common/diagnostic-units-6.c: New test.
- * c-c++-common/diagnostic-units-7.c: New test.
- * c-c++-common/diagnostic-units-8.c: New test.
-
-2020-07-14 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/goacc/finalize-1.f: Relax scan-tree-dump-times
- pattern to work on 32bit-pointer systems.
-
-2020-07-14 David Edelsohn <dje.gcc@gmail.com>
-
- * g++.dg/ipa/pr83667.C: Allow 0 or more dots between THUNK and 0.
-
-2020-07-14 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/96194
- * g++.dg/opt/pr96194.C: New test.
-
-2020-07-14 Marek Polacek <polacek@redhat.com>
-
- PR c++/95820
- * g++.dg/cpp1y/auto-fn58.C: New test.
-
-2020-07-14 Steven G. Kargl <kargl@gcc.gnu.org>
-
- PR fortran/95612
- * gfortran.dg/pr95612.f90: New test.
-
-2020-07-14 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/goacc/finalize-1.f: Update dump scan pattern.
- * gfortran.dg/gomp/map-1.f90: Update dg-error.
- * gfortran.dg/gomp/map-2.f90: New test.
-
-2020-07-14 Steven G. Kargl <kargl@gcc.gnu.org>
-
- PR fortran/96038
- * gfortran.dg/pr96038.f90: New test.
-
-2020-07-13 Aaron Sawdey <acsawdey@linux.ibm.com>
-
- * lib/target-supports.exp (is-effective-target):
- Reorder to put powerpc stuff together.
- (is-effective-target-keyword): Add power10_hw.
-
-2020-07-13 Nathan Sidwell <nathan@acm.org>
-
- * lib/scanlang.exp (scan-lang-dump): Fix breakage.
- (scan-lang-dump-times, scan-lang-dump-not): New.
-
-2020-07-13 Aaron Sawdey <acsawdey@linux.ibm.com>
-
- * lib/target-supports.exp (check_ppc_mma_hw_available):
- New function.
- (is-effective-target): Add ppc_mma_hw.
- (is-effective-target-keyword): Add ppc_mma_hw.
- * gcc.target/powerpc/mma-supported.c: New file.
- * gcc.target/powerpc/mma-single-test.c: Require ppc_mma_hw.
- * gcc.target/powerpc/mma-double-test.c: Require ppc_mma_hw.
-
-2020-07-13 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/95443
- * gcc.target/i386/pr95443-1.c: New test.
- * gcc.target/i386/pr95443-2.c: Likewise.
-
-2020-07-13 Marek Polacek <polacek@redhat.com>
-
- PR c++/95288
- * g++.dg/diagnostic/enum2.C: New test.
-
-2020-07-13 Jakub Jelinek <jakub@redhat.com>
-
- PR ipa/96130
- * gcc.dg/torture/pr96130.c: New test.
-
-2020-07-13 Mark Eggleston <markeggleston@gcc.gnu.org>
-
- PR fortran/45337
- * gfortran.dg/pr45337_1.f90: New test.
- * gfortran.dg/pr45337_2.f90: New test.
-
-2020-07-13 Marek Polacek <polacek@redhat.com>
-
- PR c++/96077
- * g++.dg/parse/enum14.C: New test.
-
-2020-07-13 Nathan Sidwell <nathan@acm.org>
-
- * lib/scanlang.exp (scan-lang-dump-not): Fix 3-arg case.
-
-2020-07-13 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96163
- * g++.dg/vect/pr96163.cc: New testcase.
-
-2020-07-13 Steven G. Kargl <kargl@gcc.gnu.org>
-
- PR fortran/95981
- * gfortran.dg/pr95981.f90: New test.
-
-2020-07-13 Szabolcs Nagy <szabolcs.nagy@arm.com>
-
- PR target/94891
- * gcc.target/aarch64/return_address_sign_1.c: Update test.
- * gcc.target/aarch64/return_address_sign_b_1.c: Likewise.
-
-2020-07-13 Richard Sandiford <richard.sandiford@arm.com>
-
- PR middle-end/95114
- * g++.target/aarch64/pr95114.C: New test.
-
-2020-07-13 Julian Brown <julian@codesourcery.com>
- Thomas Schwinge <thomas@codesourcery.com>
-
- * gfortran.dg/goacc/finalize-1.f: Update expected dump output.
-
-2020-07-13 Richard Biener <rguenther@suse.de>
-
- PR testsuite/96180
- * gcc.dg/torture/pr96133.c: Align global variable.
-
-2020-07-13 Hans-Peter Nilsson <hp@axis.com>
-
- * gcc.target/cris/pr93372-44.c, gcc.target/cris/pr93372-46.c: New.
-
-2020-07-13 Hans-Peter Nilsson <hp@axis.com>
-
- PR target/93372
- * gcc.target/cris/pr93372-45.c: New test.
-
-2020-07-13 Hans-Peter Nilsson <hp@axis.com>
-
- PR middle-end/94600
- * gcc.dg/pr94600-1.c, gcc.dg/pr94600-2.c, gcc.dg/pr94600-3.c,
- gcc.dg/pr94600-4.c, gcc.dg/pr94600-5.c, gcc.dg/pr94600-6.c,
- gcc.dg/pr94600-7.c, gcc.dg/pr94600-8.c: New tests.
-
-2020-07-13 Xionghu Luo <luoxhu@linux.ibm.com>
-
- * gcc.target/powerpc/vector_float.c: New test.
-
-2020-07-12 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/93492
- * gcc.target/i386/pr93492-1.c: Require Linux target.
- * gcc.target/i386/pr93492-2.c: Likewise.
- * gcc.target/i386/pr93492-3.c: Likewise.
- * gcc.target/i386/pr93492-4.c: Likewise.
- * gcc.target/i386/pr93492-5.c: Likewise.
-
-2020-07-11 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/96073
- * gfortran.dg/interface_48.f90: New test.
-
-2020-07-11 Richard Sandiford <richard.sandiford@arm.com>
-
- PR tree-optimization/96146
- * gcc.target/aarch64/sve/acle/general/pr96146.c: New test.
-
-2020-07-11 Simon Cook <simon.cook@embecosm.com>
-
- * gcc.target/riscv/read-thread-pointer.c: Fix escaping on
- regular expression.
-
-2020-07-10 Joseph Myers <joseph@codesourcery.com>
-
- * gcc.dg/c11-bool-limits-1.c, gcc.dg/c2x-bool-limits-1.c: New
- tests.
-
-2020-07-10 Rajalakshmi Srinivasaraghavan <rajis@linux.vnet.ibm.com>
- Aaron Sawdey <acsawdey@linux.ibm.com>
-
- * gcc.target/powerpc/p10-identify.c: New file.
- * gcc.target/powerpc/p10-arch31.c: New file.
- * gcc.target/powerpc/mma-single-test.c: New file.
- * gcc.target/powerpc/mma-double-test.c: New file.
-
-2020-07-10 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95980
- * gfortran.dg/pr95980_2.f90: New file.
-
-2020-07-10 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/96086
- * gfortran.dg/pr96086.f90: New file.
-
-2020-07-10 Richard Sandiford <richard.sandiford@arm.com>
-
- PR target/92789
- PR target/95726
- * g++.target/arm/pr95726.C: New test.
-
-2020-07-10 Carl Love <cel@us.ibm.com>
-
- * gcc.target/powerpc/vsx_mask-count-runnable.c: New test case.
- * gcc.target/powerpc/vsx_mask-expand-runnable.c: New test case.
- * gcc.target/powerpc/vsx_mask-extract-runnable.c: New test case.
- * gcc.target/powerpc/vsx_mask-move-runnable.c: New test case.
-
-2020-07-10 Martin Liska <mliska@suse.cz>
-
- PR gcov-profile/96148
- * lib/scanwpaipa.exp: Fix wpa dump file suffix the same way
- as other in the file.
-
-2020-07-10 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp2a/nontype-class-union1.C: New test.
-
-2020-07-10 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp0x/pr81246.C: No error in C++20.
- * g++.dg/cpp0x/variadic74.C: No error in C++20.
- * g++.dg/cpp1z/nontype-auto3.C: No error in C++20.
- * g++.dg/template/crash106.C: No error in C++20.
- * g++.dg/template/crash119.C: No error in C++20.
- * g++.dg/template/nontype12.C: No error in C++20.
- * g++.dg/template/void3.C: Don't require follow-on message.
- * g++.dg/template/void7.C: Don't require follow-on message.
- * g++.dg/template/void9.C: Don't require follow-on message.
- * g++.dg/cpp2a/nontype-class-equiv1.C: New file.
-
-2020-07-10 Jason Merrill <jason@redhat.com>
-
- PR c++/96105
- PR c++/96052
- PR c++/95976
- * g++.dg/cpp2a/no_unique_address4.C: New test.
- * g++.dg/cpp2a/no_unique_address5.C: New test.
- * g++.dg/cpp2a/no_unique_address6.C: New test.
-
-2020-07-10 Andrea Corallo <andrea.corallo@arm.com>
- Mihail-Calin Ionescu <mihail.ionescu@arm.com>
- Iain Apreotesei <iain.apreotesei@arm.com>
-
- * gcc.target/arm/lob.h: New header.
- * gcc.target/arm/lob1.c: New testcase.
- * gcc.target/arm/lob2.c: Likewise.
- * gcc.target/arm/lob3.c: Likewise.
- * gcc.target/arm/lob4.c: Likewise.
- * gcc.target/arm/lob5.c: Likewise.
- * gcc.target/arm/lob6.c: Likewise.
- * gcc.target/arm/unsigned-extend-2.c: Do not run when generating
- low loop overhead.
- * gcc.target/arm/ivopts.c: Fix check for low loop overhead.
- * lib/target-supports.exp (check_effective_target_arm_v8_1_lob)
- (check_effective_target_arm_thumb2_ok_no_arm_v8_1_lob): New procs.
-
-2020-07-10 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96133
- * gcc.dg/torture/pr96133.c: New testcase.
-
-2020-07-10 Cui,Lili <lili.cui@intel.com>
-
- * gcc.target/i386/funcspec-56.inc: Handle new march.
- * g++.target/i386/mv16.C: Handle new march
-
-2020-07-09 Julian Brown <julian@codesourcery.com>
- Thomas Schwinge <thomas@codesourcery.com>
-
- PR middle-end/95270
- * c-c++-common/goacc/mdc-1.c: Update expected dump output for zero
- bias.
-
-2020-07-09 Julian Brown <julian@codesourcery.com>
-
- * gfortran.dg/goacc/mapping-tests-3.f90: New test.
- * gfortran.dg/goacc/mapping-tests-4.f90: New test.
-
-2020-07-09 Peter Bergner <bergner@linux.ibm.com>
-
- PR target/96125
- * gcc.target/powerpc/pr96125.c: New test.
-
-2020-07-09 Patrick Palka <ppalka@redhat.com>
-
- PR c++/96132
- * g++.dg/template/incomplete12.C: New test.
-
-2020-07-09 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/88713
- * gcc.target/i386/pr88713-1.c: New test.
- * gcc.target/i386/pr88713-2.c: Likewise.
-
-2020-07-09 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/bb-slp-10.c: Adjust.
- * gcc.dg/vect/slp-45.c: Likewise.
- * gcc.dg/vect/vect-109.c: Likewise.
-
-2020-07-09 Bin Cheng <bin.cheng@linux.alibaba.com>
-
- PR tree-optimization/95804
- * gcc.dg/tree-ssa/pr95804.c: New test.
-
-2020-07-09 Omar Tahir <omar.tahir@arm.com>
-
- * gcc.target/aarch64/nospill.c: New test.
-
-2020-07-09 Matthew Malcomson <matthew.malcomson@arm.com>
-
- * gcc.target/aarch64/sls-mitigation/sls-miti-blr-bti.c: New test.
- * gcc.target/aarch64/sls-mitigation/sls-miti-blr.c: New test.
-
-2020-07-09 Matthew Malcomson <matthew.malcomson@arm.com>
-
- * gcc.target/aarch64/sls-mitigation/sls-miti-retbr.c: New test.
- * gcc.target/aarch64/sls-mitigation/sls-miti-retbr-pacret.c:
- New test.
- * gcc.target/aarch64/sls-mitigation/sls-mitigation.exp: New file.
- * lib/target-supports.exp (check_effective_target_aarch64_asm_sb_ok):
- New proc.
-
-2020-07-09 Kewen Lin <linkw@linux.ibm.com>
-
- * gcc.target/aarch64/sve/clastb_1.c: Update dumping string.
- * gcc.target/aarch64/sve/clastb_2.c: Likewise.
- * gcc.target/aarch64/sve/clastb_3.c: Likewise.
- * gcc.target/aarch64/sve/clastb_4.c: Likewise.
- * gcc.target/aarch64/sve/clastb_5.c: Likewise.
- * gcc.target/aarch64/sve/clastb_6.c: Likewise.
- * gcc.target/aarch64/sve/clastb_7.c: Likewise.
-
-2020-07-09 Kito Cheng <kito.cheng@sifive.com>
-
- * gcc.target/riscv/read-thread-pointer.c: New.
-
-2020-07-09 Kito Cheng <kito.cheng@sifive.com>
-
- * gcc.target/riscv/save-restore-9.c: New.
-
-2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc.dg/sso-11.c: New test.
- * gcc.dg/sso/sso.exp: Pass -Wno-scalar-storage-order.
- * gcc.dg/sso/memcpy-1.c: New test.
-
-2020-07-08 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/96085
- * gfortran.dg/pr96085.f90: New file.
-
-2020-07-08 Patrick Palka <ppalka@redhat.com>
-
- PR c++/95497
- * g++.dg/cpp2a/concepts-pr95497.C: New test.
-
-2020-07-08 Will Schmidt <will_schmidt@vnet.ibm.com>
-
- * gcc.target/powerpc/builtins-msum-runnable.c: New test.
- * gcc.target/powerpc/vsx-builtin-msum.c: New test.
-
-2020-07-08 Richard Sandiford <richard.sandiford@arm.com>
-
- PR middle-end/95694
- * gcc.dg/pr95694.c: New test.
-
-2020-07-08 Marek Polacek <polacek@redhat.com>
-
- PR c++/96103
- * g++.dg/cpp0x/decltype77.C: New test.
-
-2020-07-07 Marek Polacek <polacek@redhat.com>
-
- PR c++/92427
- * g++.dg/ext/flexary37.C: New test.
-
-2020-07-07 Patrick Palka <ppalka@redhat.com>
-
- PR c++/95303
- * g++.dg/concepts/diagnostic14.C: New test.
-
-2020-07-07 Aaron Sawdey <acsawdey@linux.ibm.com>
-
- * lib/target-supports.exp (check_power10_hw_available):
- Return 0 for passing test.
-
-2020-07-07 Nathan Sidwell <nathan@acm.org>
-
- * c-c++-common/cpp/pragma-eof.c: New
-
-2020-07-07 Nathan Sidwell <nathan@acm.org>
-
- * c-c++-common/cpp/line-2.c: New.
- * c-c++-common/cpp/line-2.h: New.
- * c-c++-common/cpp/line-3.c: New.
- * c-c++-common/cpp/line-4.c: New.
- * c-c++-common/cpp/line-4.h: New.
-
-2020-07-07 Martin Sebor <msebor@redhat.com>
-
- PR c++/96063
- * g++.dg/warn/Wmismatched-tags-7.C: New test.
- * g++.dg/warn/Wmismatched-tags-8.C: New test.
-
-2020-07-07 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/slp-47.c: New testcase.
- * gcc.dg/vect/slp-48.c: Likewise.
-
-2020-07-06 Martin Sebor <msebor@redhat.com>
-
- PR c++/95984
- * g++.dg/warn/Wnonnull6.C: New test.
-
-2020-07-06 Nathan Sidwell <nathan@acm.org>
-
- * g++.dg/eh/builtin10.C: Adjust expected errors.
- * g++.dg/eh/builtin11.C: Likewise.
- * g++.dg/eh/builtin5.C: Likewise.
- * g++.dg/eh/builtin6.C: Likewise.
- * g++.dg/eh/builtin7.C: Likewise.
- * g++.dg/eh/builtin9.C: Likewise.
- * g++.dg/parse/crash55.C: Likewise.
-
-2020-07-06 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95980
- * gfortran.dg/pr95980.f90: New file.
-
-2020-07-06 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95709
- * gfortran.dg/pr95709.f90: New file.
-
-2020-07-06 Jonathan Wakely <jwakely@redhat.com>
-
- * g++.old-deja/g++.bugs/900404_04.C: Add c++98_only selector to
- dg-error for extra ';'.
- * g++.old-deja/g++.law/missed-error2.C: Likewise.
-
-2020-07-06 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96075
- * gcc.dg/vect/slp-46.c: New testcase.
-
-2020-07-06 Roger Sayle <roger@nextmovesoftware.com>
-
- * gcc.target/nvptx/vadd_add.c: New test.
- * gcc.target/nvptx/vsub_add.c: New test.
-
-2020-07-06 Hans-Peter Nilsson <hp@axis.com>
-
- * gcc.target/cris/peep2-movulsr.c: New test.
-
-2020-07-05 Hans-Peter Nilsson <hp@axis.com>
-
- * gcc.target/cris/pr93372-39.c: New test.
-
-2020-07-05 Hans-Peter Nilsson <hp@axis.com>
-
- * gcc.target/cris/pr93372-36.c, gcc.target/cris/pr93372-37.c,
- gcc.target/cris/pr93372-38.c: New tests.
-
-2020-07-05 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/27318
- * gfortran.dg/error_recovery_1.f90: Adjust test case.
- * gfortran.dg/use_15.f90: Likewise.
- * gfortran.dg/interface_47.f90: New test.
-
-2020-07-04 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/pr9xxxx-mismatched-traits-and-promise-prev.C: Moved to...
- * g++.dg/coroutines/pr94760-mismatched-traits-and-promise-prev.C: ...here.
-
-2020-07-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/opt87.adb: New test.
- * gnat.dg/opt87_pkg.ads: New helper.
- * gnat.dg/opt87_pkg.adb: Likewise.
-
-2020-07-03 Martin Jambor <mjambor@suse.cz>
-
- PR ipa/96040
- * gcc.dg/ipa/pr96040.c: New test.
-
-2020-07-03 Roger Sayle <roger@nextmovesoftware.com>
-
- * gcc.target/nvptx/popc-1.c: New test.
- * gcc.target/nvptx/popc-2.c: New test.
- * gcc.target/nvptx/popc-3.c: New test.
- * gcc.target/nvptx/mul-wide.c: New test.
- * gcc.target/nvptx/umul-wide.c: New test.
-
-2020-07-03 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp-2.c: New
- testcase.
-
-2020-07-03 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.dg/fixits-pr84852-1.c: Enclose negative line number in braces.
- * gcc.dg/fixits-pr84852-2.c: Same.
- * gcc.dg/pr89410-1.c: Same.
- * gcc.dg/pr89410-2.c: Same.
-
-2020-07-02 David Edelsohn <dje.gcc@gmail.com>
-
- * gfortran.dg/pr95690.f90: Solaris error appears on line 5.
-
-2020-07-02 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.dg/pr26570.c: dg-prune function not inlinable warning.
-
-2020-07-02 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/93423
- * gfortran.dg/pr93423.f90: New file.
-
-2020-07-02 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/93337
- * gfortran.dg/pr93337.f90: New file.
-
-2020-07-02 Jason Merrill <jason@redhat.com>
- Jakub Jelinek <jakub@redhat.com>
-
- * g++.dg/cpp2a/consteval-virtual1.C: New test.
- * g++.dg/cpp2a/consteval-virtual2.C: New test.
- * g++.dg/cpp2a/consteval-virtual3.C: New test.
- * g++.dg/cpp2a/consteval-virtual4.C: New test.
- * g++.dg/cpp2a/consteval-virtual5.C: New test.
-
-2020-07-02 Martin Jambor <mjambor@suse.cz>
-
- PR debug/95343
- * gcc.dg/guality/pr95343.c: New test.
-
-2020-07-02 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/95857
- * gcc.dg/pr95857.c: New test.
-
-2020-07-02 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/96022
- * g++.dg/vect/pr96022.cc: New testcase.
-
-2020-07-02 Felix Yang <felix.yang@huawei.com>
-
- PR tree-optimization/95961
- * gcc.target/aarch64/sve/pr95961.c: New test.
-
-2020-07-02 Jakub Jelinek <jakub@redhat.com>
-
- * c-c++-common/gomp/loop-7.c: New test.
-
-2020-07-02 Steven G. Kargl <kargl@gcc.gnu.org>
-
- PR fortran/95584
- * gfortran.dg/pr95584.f90: New test.
-
-2020-07-02 Kewen Lin <linkw@linux.ibm.com>
-
- * g++.dg/vect/slp-pr56812.cc: Ignore line number for basic block
- vectorization messages.
-
-2020-07-01 Omar Tahir <omar.tahir@arm.com>
-
- * gcc.target/aarch64/bti-4.c: New test.
-
-2020-07-01 Jeff Law <law@redhat.com>
-
- PR tree-optimization/94882
- * gcc.dg/tree-ssa/pr94882.c: New test.
- * gcc.dg/tree-ssa/pr94882-1.c: New test.
- * gcc.dg/tree-ssa/pr94882-2.c: New test.
- * gcc.dg/tree-ssa/pr94882-3.c: New test.
-
-2020-07-01 Jonathan Wakely <jwakely@redhat.com>
-
- PR testsuite/96014
- * g++.dg/analyzer/pr94028.C: Make operator new non-throwing so
- that the compiler doesn't implicitly mark it as returning
- non-null.
-
-2020-07-01 David Edelsohn <dje.gcc@gmail.com>
-
- * gfortran.dg/pr95690.f90: Adjust dg-error line number.
-
-2020-07-01 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/direct-move-double1.c: Require lp64.
- * gcc.target/powerpc/direct-move-float1.c: Same.
- * gcc.target/powerpc/direct-move-float3.c: Same.
- * gcc.target/powerpc/direct-move-vint1.c: Same.
- * gcc.target/powerpc/vsx-vector-5.c: Same.
- * gcc.target/powerpc/vsx-vector-6.p7.c: Same.
- * gcc.target/powerpc/vsx-vector-6.p8.c: Same.
- * gcc.target/powerpc/vsx-vector-6.p9.c: Same.
-
-2020-07-01 Andrea Corallo <andrea.corallo@arm.com>
-
- * gcc.target/aarch64/get_fpcr64_1.c: New test.
- * gcc.target/aarch64/set_fpcr64_1.c: New test.
- * gcc.target/aarch64/get_fpsr64_1.c: New test.
- * gcc.target/aarch64/set_fpsr64_1.c: New test.
-
-2020-07-01 Steven G. Kargl <kargl@gcc.gnu.org>
-
- PR fortran/95446
- * gfortran.dg/elemental_optional_args_6.f90: Remove check
- for warnings that were erroneously output.
- * gfortran.dg/pr95446.f90: New test.
-
-2020-07-01 Christophe Lyon <christophe.lyon@linaro.org>
-
- PR target/94743
- * gcc.target/arm/handler-align.c: Add -mgeneral-regs-only.
-
-2020-07-01 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95839
- * gcc.dg/vect/bb-slp-pr95839-2.c: New testcase.
-
-2020-07-01 Martin Liska <mliska@suse.cz>
-
- * g++.dg/gcov/loop.C: Use -H option instead of -j option.
-
-2020-07-01 Steven G. Kargl <kargl@gcc.gnu.org>
-
- PR fortran/95829
- * gfortran.dg/pr95829.f90: New test.
-
-2020-07-01 Christophe Lyon <christophe.lyon@linaro.org>
-
- PR target/94743
- * gcc.target/arm/pr94743-1-hard.c: Add missing quotes in expected
- warning.
- * gcc.target/arm/pr94743-1-softfp.c: Likewise.
-
-2020-07-01 Kito Cheng <kito.cheng@sifive.com>
-
- * gcc.target/riscv/attribute-13.c: New.
-
-2020-07-01 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/direct-move-double1.c: Remove lp64 requirement.
- * gcc.target/powerpc/direct-move-double2.c: Same.
- * gcc.target/powerpc/direct-move-float1.c: Same.
- * gcc.target/powerpc/direct-move-float2.c: Same.
- * gcc.target/powerpc/direct-move-float3.c: Same.
- * gcc.target/powerpc/direct-move-vint1.c: Same.
- * gcc.target/powerpc/direct-move-vint2.c: Same.
- * gcc.target/powerpc/direct-move-long1.c: Remove linux requirement..
- * gcc.target/powerpc/direct-move-long2.c: Same.
-
-2020-07-01 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/20030218-1.c: Delete.
- * gcc.target/powerpc/20030505.c: Delete.
- * gcc.target/powerpc/20081204-1.c: Delete.
- * gcc.target/powerpc/bcd-1.c: Remove dg-skip-if SPE.
- * gcc.target/powerpc/bcd-2.c: Same.
- * gcc.target/powerpc/bcd-3.c: Same.
- * gcc.target/powerpc/direct-move-double1.c: Same.
- * gcc.target/powerpc/direct-move-double2.c: Same.
- * gcc.target/powerpc/direct-move-float1.c: Same.
- * gcc.target/powerpc/direct-move-float2.c: Same.
- * gcc.target/powerpc/direct-move-float3.c: Same.
- * gcc.target/powerpc/direct-move-long1.c: Same.
- * gcc.target/powerpc/direct-move-long2.c: Same.
- * gcc.target/powerpc/direct-move-vint1.c: Same.
- * gcc.target/powerpc/direct-move-vint2.c: Same.
- * gcc.target/powerpc/extend-divide-1.c: Same.
- * gcc.target/powerpc/extend-divide-2.c: Same.
- * gcc.target/powerpc/pack01.c: Same.
- * gcc.target/powerpc/pack02.c: Same.
- * gcc.target/powerpc/pack03.c: Same.
- * gcc.target/powerpc/pr52457.c: Same.
- * gcc.target/powerpc/pr88845.c: Same.
- * gcc.target/powerpc/quad-atomic.c: Same.
- * gcc.target/powerpc/recip-6.c: Same.
- * gcc.target/powerpc/recip-7.c: Same.
-
-2020-07-01 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/p8vector-int128-1.c: Require int128 not lp64.
- * gcc.target/powerpc/p8vector-int128-2.c: Same.
-
-2020-07-01 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/pr90763.c: Adjust requirements.
- * gcc.target/powerpc/vsx-vector-1.c: Same.
- * gcc.target/powerpc/vsx-vector-2.c: Same.
- * gcc.target/powerpc/vsx-vector-3.c: Same.
- * gcc.target/powerpc/vsx-vector-4.c: Same.
- * gcc.target/powerpc/vsx-vector-5.c: Same.
- * gcc.target/powerpc/vsx-vector-6.p7.c: Same.
- * gcc.target/powerpc/vsx-vector-6.p8.c: Same.
- * gcc.target/powerpc/vsx-vector-6.p9.c: Same.
- * gcc.target/powerpc/vsx-vector-abss.c: Same.
- * gcc.target/powerpc/vsx-vectorize-1.c: Same.
- * gcc.target/powerpc/vsx-vectorize-2.c: Same.
- * gcc.target/powerpc/vsx-vectorize-3.c: Same.
- * gcc.target/powerpc/vsx-vectorize-4.c: Same.
- * gcc.target/powerpc/vsx-vectorize-5.c: Same.
- * gcc.target/powerpc/vsx-vectorize-6.c: Same.
- * gcc.target/powerpc/vsx-vectorize-7.c: Same.
- * gcc.target/powerpc/vsx-vectorize-8.c: Same.
-
-2020-07-01 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/ppc-spe.c: Delete.
- * gcc.target/powerpc/ppc-spe64-1.c: Delete.
- * gcc.target/powerpc/pr60102.c: Delete.
- * gcc.target/powerpc/pr60158.c: Delete.
- * gcc.target/powerpc/pr60735.c: Delete.
- * gcc.target/powerpc/pr78458.c: Delete.
- * gcc.target/powerpc/pr80343.c: Delete.
- * gcc.target/powerpc/spe-evmerge.c: Delete.
- * gcc.target/powerpc/spe-small-data-1.c: Delete.
- * gcc.target/powerpc/spe-small-data-2.c: Delete.
- * gcc.target/powerpc/spe-unwind-1.c: Delete.
- * gcc.target/powerpc/spe-vector-memcpy.c: Delete.
- * gcc.target/powerpc/spe-vector-memset.c: Delete.
- * gcc.target/powerpc/spe1.c: Delete.
-
-2020-06-30 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/builtins-2-p9-runnable.c: lp64 to int128.
- * gcc.target/powerpc/builtins-6-p9-runnable.c: Same.
- * gcc.target/powerpc/builtins-6-runnable.c: Same.
- * gcc.target/powerpc/builtins-revb-runnable.c: Same.
-
-2020-06-30 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/88379
- * gfortran.dg/pr88379.f90: New file.
-
-2020-06-30 Richard Sandiford <richard.sandiford@arm.com>
-
- PR target/92789
- PR target/95726
- * g++.target/aarch64/pr95726.C: New test.
-
-2020-06-30 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/builtins-1-p9-runnable.c: Fix target requirements.
- * gcc.target/powerpc/builtins-1.c: Same.
- * gcc.target/powerpc/builtins-2-p9-runnable.c: Same.
- * gcc.target/powerpc/builtins-2.c: Same.
- * gcc.target/powerpc/builtins-3-p9-runnable.c: Same.
- * gcc.target/powerpc/builtins-3-p9.c: Same.
- * gcc.target/powerpc/builtins-3-runnable-p8.c: Same.
- * gcc.target/powerpc/builtins-3.c: Same.
- * gcc.target/powerpc/builtins-4-p9-runnable.c: Same.
- * gcc.target/powerpc/builtins-4.c: Same.
- * gcc.target/powerpc/builtins-5-p9-runnable.c: Same.
- * gcc.target/powerpc/builtins-5.c: Same.
- * gcc.target/powerpc/builtins-6-p9-runnable.c: Same.
- * gcc.target/powerpc/builtins-6-runnable.c: Same.
- * gcc.target/powerpc/builtins-7-p9-runnable.c: Same.
- * gcc.target/powerpc/builtins-7-runnable.c: Same.
- * gcc.target/powerpc/builtins-8-p9-runnable.c: Same.
- * gcc.target/powerpc/builtins-8-runnable.c: Same.
- * gcc.target/powerpc/cpu-builtin-1.c: Same.
- * gcc.target/powerpc/float128-fma1.c: Same.
- * gcc.target/powerpc/float128-hw.c: Same.
- * gcc.target/powerpc/float128-hw10.c: Same.
- * gcc.target/powerpc/float128-hw11.c: Same.
- * gcc.target/powerpc/float128-hw2.c: Same.
- * gcc.target/powerpc/float128-hw3.c: Same.
- * gcc.target/powerpc/float128-hw4.c: Same.
- * gcc.target/powerpc/float128-hw5.c: Same.
- * gcc.target/powerpc/float128-hw6.c: Same.
- * gcc.target/powerpc/float128-hw7.c: Same.
- * gcc.target/powerpc/float128-hw8.c: Same.
- * gcc.target/powerpc/float128-hw9.c: Same.
- * gcc.target/powerpc/float128-minmax.c: Same.
- * gcc.target/powerpc/float128-odd.c: Same.
- * gcc.target/powerpc/float128-sqrt1.c: Same.
-
-2020-06-30 David Edelsohn <dje.gcc@gmail.com>
-
- * gfortran.dg/analyzer/pr93993.f90: Expect leak tm warning.
-
-2020-06-30 Thomas Schwinge <thomas@codesourcery.com>
-
- * lib/scanoffload.exp (scoff) <offload_targets>: Skip HSA.
-
-2020-06-30 Christophe Lyon <christophe.lyon@linaro.org>
-
- PR target/94743
- * gcc.misc-tests/arm-isr.c: Add -mgeneral-regs-only.
- * gcc.target/arm/empty_fiq_handler.c: Add -mgeneral-regs-only.
- * gcc.target/arm/interrupt-1.c: Add -mgeneral-regs-only.
- * gcc.target/arm/interrupt-2.c: Add -mgeneral-regs-only.
- * gcc.target/arm/pr70830.c: Add -mgeneral-regs-only.
- * gcc.target/arm/pr94743-1-hard.c: New test.
- * gcc.target/arm/pr94743-1-soft.c: New test.
- * gcc.target/arm/pr94743-1-softfp.c: New test.
- * gcc.target/arm/pr94743-2.c: New test.
- * gcc.target/arm/pr94743-3.c: New test.
-
-2020-06-30 Yang Yang <yangyang305@huawei.com>
-
- PR tree-optimization/95855
- * gcc.dg/tree-ssa/split-path-12.c: New testcase.
-
-2020-06-30 David Edelsohn <dje.gcc@gmail.com>
-
- * g++.dg/cpp0x/constexpr-is_literal.C: Limit test to -std=c++14.
-
-2020-06-30 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/95355
- * gfortran.dg/select_type_49.f90: New file.
-
-2020-06-30 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/95963
- * g++.dg/cpp1z/launder9.C: New test.
-
-2020-06-29 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95978
- * gfortran.dg/pr95978.f90: New file.
-
-2020-06-29 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/95743
- * gfortran.dg/recursive_check_16.f90: New file.
-
-2020-06-29 David Edelsohn <dje.gcc@gmail.com>
-
- * gfortran.dg/char4-subscript.f90: Simplify regex.
- Accept big endian or little endian output.
-
-2020-06-29 Marek Polacek <polacek@redhat.com>
-
- PR c++/94553
- * g++.dg/cpp1y/pr68578.C: Adjust dg-error.
- * g++.dg/cpp1y/var-templ66.C: New test.
- * g++.dg/cpp2a/concepts-redecl1.C: New test.
-
-2020-06-29 Marek Polacek <polacek@redhat.com>
-
- PR c++/95568
- * g++.dg/cpp2a/class-deduction-aggr5.C: New test.
- * g++.dg/cpp2a/class-deduction-aggr6.C: New test.
-
-2020-06-29 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/71706
- * gfortran.dg/pr71706.f90: New file.
-
-2020-06-29 Martin Liska <mliska@suse.cz>
-
- PR c++/86568
- * c-c++-common/builtin-arith-overflow-1.c (generic_3, typed_3_null):
- Fix coding style.
-
-2020-06-29 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95916
- * gcc.dg/vect/pr95916.c: New testcase.
-
-2020-06-29 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/86568
- * c-c++-common/builtin-arith-overflow-1.c (generic_3, typed_3_null):
- Adjust dg-warning.
-
-2020-06-29 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/86568
- * c-c++-common/builtin-arith-overflow-1.c (generic_3, typed_3_null):
- Adjust dg-warning.
-
-2020-06-29 Kaipeng Zhou <zhoukaipeng3@huawei.com>
-
- PR tree-optimization/95854
- * gcc.dg/pr95854.c: New test.
-
-2020-06-29 Frederik Harwath <frederik@codesourcery.com>
-
- * lib/scandump.exp (glob-dump-file): New proc.
- (scan-dump): Use glob-dump-file for file name expansion.
- (scan-dump-times): Likewise.
- (scan-dump-dem): Likewise.
- (scan-dump-dem-not): Likewise.
-
-2020-06-28 Martin Sebor <msebor@redhat.com>
-
- PR c++/86568
- * g++.dg/warn/Wnonnull5.C: New test.
- * c-c++-common/pr28656.c: Adjust text of expected warning.
- * c-c++-common/pr66208.c: Same.
- * g++.dg/cpp0x/nullptr22.C: Same.
- * g++.dg/ext/attr-nonnull.C: Same.
- * g++.dg/ext/attrib49.C: Same.
- * g++.dg/pr71973-2.C: Same.
- * g++.dg/warn/Wnonnull3.C: Same.
- * g++.dg/warn/Wnonnull4.C: Same.
- * obj-c++.dg/attributes/method-nonnull-1.mm: Same.
- * objc.dg/attributes/method-nonnull-1.m: Same.
-
-2020-06-28 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95340
- * gfortran.dg/pr95340.f90: New file.
-
-2020-06-28 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/95711
- * g++.dg/coroutines/pr95711.C: New test.
-
-2020-06-28 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95880
- * gfortran.dg/pr95880.f90: New file.
-
-2020-06-28 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/95519
- * g++.dg/coroutines/torture/pr95519-02-final_suspend.C:
- Amend log messages.
- * g++.dg/coroutines/torture/pr95519-03-return-value.C:
- Likewise.
- * g++.dg/coroutines/torture/pr95519-04-yield-value.C:
- Likewise.
- * g++.dg/coroutines/torture/pr95519-05-gro.C: Likewise.
-
-2020-06-28 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/prefix-large-dd.c: Require DFP.
- * gcc.target/powerpc/prefix-large-sd.c: Require DFP.
- * gcc.target/powerpc/prefix-large-kf.c: Require float128.
- * gcc.target/powerpc/prefix-pcrel-dd.c: Require DFP.
- * gcc.target/powerpc/prefix-pcrel-sd.c: Require DFP.
- * gcc.target/powerpc/prefix-pcrel-kf.c: Require float128.
-
-2020-06-27 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95881
- * gfortran.dg/pr95881.f90: New file.
-
-2020-06-27 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/95903
- * c-c++-common/pr95903.c: New test.
-
-2020-06-27 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/95736
- * g++.dg/coroutines/pr95736.C: New test.
-
-2020-06-27 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/coro-bad-grooaf-01-grooaf-expected.C: New test.
-
-2020-06-27 Michael Meissner <meissner@linux.ibm.com>
-
- * gcc.target/powerpc/prefix-add.c: New test.
- * gcc.target/powerpc/prefix-si-constant.c: New test.
- * gcc.target/powerpc/prefix-di-constant.c: New test.
- * gcc.target/powerpc/prefix-ds-dq.c: New test.
- * gcc.target/powerpc/prefix-no-update.c: New test.
- * gcc.target/powerpc/prefix-large-dd.c: New test.
- * gcc.target/powerpc/prefix-large-df.c: New test.
- * gcc.target/powerpc/prefix-large-di.c: New test.
- * gcc.target/powerpc/prefix-large-hi.c: New test.
- * gcc.target/powerpc/prefix-large-kf.c: New test.
- * gcc.target/powerpc/prefix-large-qi.c: New test.
- * gcc.target/powerpc/prefix-large-sd.c: New test.
- * gcc.target/powerpc/prefix-large-sf.c: New test.
- * gcc.target/powerpc/prefix-large-si.c: New test.
- * gcc.target/powerpc/prefix-large-udi.c: New test.
- * gcc.target/powerpc/prefix-large-uhi.c: New test.
- * gcc.target/powerpc/prefix-large-uqi.c: New test.
- * gcc.target/powerpc/prefix-large-usi.c: New test.
- * gcc.target/powerpc/prefix-large-v2df.c: New test.
- * gcc.target/powerpc/prefix-large.h: Include file for new tests.
- * gcc.target/powerpc/prefix-pcrel-dd.c: New test.
- * gcc.target/powerpc/prefix-pcrel-df.c: New test.
- * gcc.target/powerpc/prefix-pcrel-di.c: New test.
- * gcc.target/powerpc/prefix-pcrel-hi.c: New test.
- * gcc.target/powerpc/prefix-pcrel-kf.c: New test.
- * gcc.target/powerpc/prefix-pcrel-qi.c: New test.
- * gcc.target/powerpc/prefix-pcrel-sd.c: New test.
- * gcc.target/powerpc/prefix-pcrel-sf.c: New test.
- * gcc.target/powerpc/prefix-pcrel-si.c: New test.
- * gcc.target/powerpc/prefix-pcrel-udi.c: New test.
- * gcc.target/powerpc/prefix-pcrel-uhi.c: New test.
- * gcc.target/powerpc/prefix-pcrel-uqi.c: New test.
- * gcc.target/powerpc/prefix-pcrel-usi.c: New test.
- * gcc.target/powerpc/prefix-pcrel-v2df.c: New test.
- * gcc.target/powerpc/prefix-pcrel.h: Include file for new tests.
- * gcc.target/powerpc/prefix-stack-protect.c: New test.
-
-2020-06-26 Yichao Yu <yyc1992@gmail.com>
-
- * gcc.target/i386/pr95778-1.c: New test.
- * gcc.target/i386/pr95778-2.c: New test.
-
-2020-06-26 Peter Bergner <bergner@linux.ibm.com>
-
- * gcc.target/powerpc/cpu-builtin-1.c: Add tests for power10, arch_3_1
- and mma.
-
-2020-06-26 Marek Polacek <polacek@redhat.com>
-
- * c-c++-common/torture/vector-subscript-3.c: In C++17, define away
- the keyword register.
- * g++.dg/cpp1z/attributes-enum-1a.C: Only run pre-C++17.
- * g++.dg/cpp1z/fold7a.C: Likewise.
- * g++.dg/cpp1z/nontype3a.C: Likewise.
- * g++.dg/cpp1z/utf8-2a.C: Likewise.
- * g++.dg/parse/error11.C: Update expected diagnostics for C++17.
- * g++.dg/torture/pr34850.C: Add -Wno-attribute-warning.
- * g++.dg/torture/pr49394.C: In C++17, use noexcept(false).
- * g++.dg/torture/pr82154.C: Use -std=c++14.
- * lib/target-supports.exp: Set to C++17.
- * obj-c++.dg/try-catch-9.mm: Use -Wno-register.
-
-2020-06-26 Kwok Cheung Yeung <kcy@codesourcery.com>
-
- * gfortran.dg/gomp/combined-if.f90: Adjust expected number
- of matches depending on whether nvptx offloading is supported.
- * lib/target-supports.exp
- (check_effective_target_offload_nvptx): New.
-
-2020-06-26 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/opt86_pkg.ads: New helper.
- * gnat.dg/opt86a.adb: New test.
- * gnat.dg/opt86b.adb: Likewise.
- * gnat.dg/opt86c.adb: Likewise.
-
-2020-06-26 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * gdc.dg/pr95250.d: Updated.
-
-2020-06-26 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/95519
- * g++.dg/coroutines/torture/pr95519-00-return_void.C: New test.
- * g++.dg/coroutines/torture/pr95519-01-initial-suspend.C: New test.
- * g++.dg/coroutines/torture/pr95519-02-final_suspend.C: New test.
- * g++.dg/coroutines/torture/pr95519-03-return-value.C: New test.
- * g++.dg/coroutines/torture/pr95519-04-yield-value.C: New test.
- * g++.dg/coroutines/torture/pr95519-05-gro.C: New test.
- * g++.dg/coroutines/torture/pr95519-06-grooaf.C: New test.
- * g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C: New test.
+ * gcc.target/aarch64/advsimd-intrinsics/p64_p128.c: Add tests for
+ vceqz_p64, vceqq_p64 and vceqzq_p64.
-2020-06-26 Iain Sandoe <iain@sandoe.co.uk>
+2021-01-15 Richard Biener <rguenther@suse.de>
- * g++.dg/coroutines/coro1-allocators.h (BAD_GROOAF_STATIC):
- New.
- * g++.dg/coroutines/coro-bad-grooaf-00-static.C: New test.
+ PR testsuite/96098
+ * gcc.dg/vect/bb-slp-pr68892.c: Remove.
-2020-06-26 Richard Biener <rguenther@suse.de>
+2021-01-15 Christophe Lyon <christophe.lyon@linaro.org>
- PR tree-optimization/95897
- * gcc.dg/vect/pr95897.c: New testcase.
+ * gcc.target/arm/simd/mve-vshr.c: Add tests for vshr.
-2020-06-25 Marek Polacek <polacek@redhat.com>
+2021-01-15 Christophe Lyon <christophe.lyon@linaro.org>
- PR c++/91104
- * g++.dg/cpp1y/lambda-generic-variadic21.C: New test.
+ * gcc.target/arm/simd/mve-vshl.c: Add tests for vshl.
-2020-06-25 Harald Anlauf <anlauf@gmx.de>
+2021-01-15 Richard Biener <rguenther@suse.de>
- PR fortran/95828
- * gfortran.dg/pr95828.f90: New file.
+ PR tree-optimization/98685
+ * gcc.dg/vect/bb-slp-pr98685.c: New testcase.
-2020-06-25 Harald Anlauf <anlauf@gmx.de>
+2021-01-15 Tamar Christina <tamar.christina@arm.com>
- PR fortran/95826
- * gfortran.dg/pr95826.f90: New file.
+ * gcc.dg/vect/complex/complex-mla-template.c: Fix sed.
+ * gcc.dg/vect/complex/complex-mls-template.c: Likewise.
-2020-06-25 Iain Buclaw <ibuclaw@gdcproject.org>
+2021-01-14 David Malcolm <dmalcolm@redhat.com>
- PR d/95250
- * gdc.dg/pr95250.d: New test.
+ * gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v1.c:
+ New file.
+ * gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v2.c:
+ New file.
+ * gcc.dg/plugin/plugin.exp (plugin_test_list): Add them.
-2020-06-25 Iain Buclaw <ibuclaw@gdcproject.org>
+2021-01-14 Tamar Christina <tamar.christina@arm.com>
- PR d/95173
- * gdc.dg/pr95173.d: New test.
+ * gcc.dg/vect/complex/complex-mla-template.c: New test.
+ * gcc.dg/vect/complex/complex-mls-template.c: New test.
+ * gcc.dg/vect/complex/complex-mul-template.c: New test.
+ * gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c: New test.
+ * gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c: New test.
+ * gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c: New test.
+ * gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-complex-mla-double.c: New test.
+ * gcc.dg/vect/complex/fast-math-complex-mla-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-complex-mla-half-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-complex-mls-double.c: New test.
+ * gcc.dg/vect/complex/fast-math-complex-mls-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-complex-mls-half-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-complex-mul-double.c: New test.
+ * gcc.dg/vect/complex/fast-math-complex-mul-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-complex-mul-half-float.c: New test.
-2020-06-25 Iain Buclaw <ibuclaw@gdcproject.org>
+2021-01-14 Marek Polacek <polacek@redhat.com>
- * gdc.dg/init1.d: New test.
+ * g++.dg/template/pr98372.C: Only run in C++14 and up.
-2020-06-25 Iain Buclaw <ibuclaw@gdcproject.org>
+2021-01-14 Harald Anlauf <anlauf@gmx.de>
- * gdc.dg/asm1.d: Don't use deprecated asm syntax.
- * gdc.dg/compilable.d: Add public to selective import.
- * gdc.dg/lto/ltotests_0.d: Explicitly catch Throwable.
- * gdc.dg/runnable.d: Remove empty statement.
+ * substr_10.f90: New test.
+ * substr_9.f90: New test.
-2020-06-25 Tobias Burnus <tobias@codesourcery.com>
+2021-01-14 Alexandre Oliva <oliva@adacore.com>
- PR fortran/95837
- * gfortran.dg/char4-subscript.f90: New test.
-
-2020-06-25 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95839
- * gcc.dg/vect/bb-slp-pr95839.c: New testcase.
-
-2020-06-25 Tobias Burnus <tobias@codesourcery.com>
- Kwok Cheung Yeung <kcy@codesourery.com>
-
- PR fortran/95869
- * gfortran.dg/gomp/combined-if.f90 (test_target_parallel): Re-enable.
- * gfortran.dg/gomp/pr95869.f90: New.
-
-2020-06-25 Kwok Cheung Yeung <kcy@codesourcery.com>
-
- * gfortran.dg/gomp/combined-if.f90: New.
-
-2020-06-25 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95866
- * gcc.dg/vect/bb-slp-pr95866.c: New testcase.
-
-2020-06-24 Will Schmidt <will_schmidt@vnet.ibm.com>
-
- PR target/94954
- * gcc.target/powerpc/builtins-1-p9-runnable.c: Update.
-
-2020-06-24 Alexandre Oliva <oliva@adacore.com>
-
- PR testsuite/95416
- PR testsuite/95577
- * gcc.misc-tests/outputs.exp (gsplit_dwarf): Move -g into it.
- (outest): Introduce conditionals and string/variable/expr
- expansion. Drop special-casing of $aout and .dwo.
- (gspd): New conditional. Guard all .dwo files with it.
- (ltop): New conditional. Guard files created by the LTO
- plugin with it. Guard files created by fat LTO compilation
- with its negation. Add a few -fno-use-linker-plugin tests
- guarded by it.
-
-2020-06-24 Nicholas Krause <xerofoify@gmail.com>
-
- PR c++/95672
- * g++.dg/template/pr95672.C: New test.
-
-2020-06-24 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/95518
- PR c++/95813
- * g++.dg/coroutines/pr95518.C: New test.
- * g++.dg/coroutines/pr95813.C: New test.
-
-2020-06-24 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/void-gro-non-class-coro.C: Moved to...
- * g++.dg/coroutines/coro-bad-gro-01-void-gro-non-class-coro.C: ...here.
- * g++.dg/coroutines/coro-bad-gro-00-class-gro-scalar-return.C: New test.
-
-2020-06-24 Jason Merrill <jason@redhat.com>
-
- PR c++/95719
- * g++.dg/tree-ssa/final4.C: New test.
-
-2020-06-24 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95827
- * gfortran.dg/pr95827.f90: New file.
-
-2020-06-24 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95866
- * gcc.target/i386/pr95866-1.c: New testcase.
-
-2020-06-24 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/95660
- * gcc.target/i386/builtin_target.c (check_detailed): Updated.
-
-2020-06-24 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/95843
- * gcc.target/i386/builtin_target.c: Include <stdlib.h>,
- ../../../common/config/i386/i386-cpuinfo.h and
- ../../../common/config/i386/cpuinfo.h.
- (check_amd_cpu_model): Removed.
- (check_intel_cpu_model): Likewise,
- (CHECK___builtin_cpu_is): New.
- (gcc_assert): New. Defined as assert.
- (gcc_unreachable): New. Defined as abort.
- (inline): New. Defined as empty.
- (ISA_NAMES_TABLE_START): Likewise.
- (ISA_NAMES_TABLE_END): Likewise.
- (ISA_NAMES_TABLE_ENTRY): New.
- (check_features): Include
- "../../../common/config/i386/i386-isas.h".
- (check_detailed): Call cpu_indicator_init. Always call
- check_features. Call get_amd_cpu instead of check_amd_cpu_model.
- Call get_intel_cpu instead of check_intel_cpu_model.
-
-2020-06-24 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95856
- * gcc.dg/vect/pr95856.c: New testcase.
-
-2020-06-24 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/95810
- * gcc.dg/ubsan/pr95810.c: New test.
-
-2020-06-23 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp2a/class-deduction-aggr3.C: New test.
- * g++.dg/cpp2a/class-deduction-aggr4.C: New test.
-
-2020-06-23 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- * gfortran.fortran-torture/execute/forall_5.f90: Make forall
- statement conforming.
-
-2020-06-23 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/95477
- * g++.dg/coroutines/pr95477.C: New test.
- * g++.dg/coroutines/void-gro-non-class-coro.C: New test.
-
-2020-06-23 Andre Vieira <andre.simoesdiasvieira@arm.com>
-
- PR target/95646
- * gcc.target/arm/pr95646.c: New test.
-
-2020-06-23 Alexandre Oliva <oliva@adacore.com>
-
- * lib/scanoffload.exp: New.
- * lib/scanoffloadrtl.exp: Load it. Replace ".o" with ""
- globally, and use scanoffload's scoff wrapper to fill it in.
- * lib/scanoffloadtree.exp: Likewise.
-
-2020-06-23 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/95812
- * gfortran.dg/dependency_59.f90: New test.
-
-2020-06-23 Steven G. Kargl <kargl@gcc.gnu.org>
-
- PR fortran/95586
- * gfortran.dg/pr95586_1.f90: New test.
- * gfortran.dg/pr95586_2.f90: New test.
-
-2020-06-22 Segher Boessenkool <segher@kernel.crashing.org>
-
- * gcc.target/powerpc/cfuged-0.c: I protest.
- * gcc.target/powerpc/cfuged-1.c: I protest.
- * gcc.target/powerpc/clone3.c: I protest.
- * gcc.target/powerpc/cntlzdm-0.c: I protest.
- * gcc.target/powerpc/cntlzdm-1.c: I protest.
- * gcc.target/powerpc/cnttzdm-0.c: I protest.
- * gcc.target/powerpc/cnttzdm-1.c: I protest.
- * gcc.target/powerpc/cpu-future.c: I protest.
- * gcc.target/powerpc/dg-future-0.c: I protest.
- * gcc.target/powerpc/dg-future-1.c: I protest.
- * gcc.target/powerpc/localentry-1.c: I protest.
- * gcc.target/powerpc/localentry-detect-1.c: I protest.
- * gcc.target/powerpc/mma-builtin-1.c: I protest.
- * gcc.target/powerpc/mma-builtin-2.c: I protest.
- * gcc.target/powerpc/mma-builtin-3.c: I protest.
- * gcc.target/powerpc/mma-builtin-4.c: I protest.
- * gcc.target/powerpc/mma-builtin-5.c: I protest.
- * gcc.target/powerpc/mma-builtin-6.c: I protest.
- * gcc.target/powerpc/notoc-direct-1.c: I protest.
- * gcc.target/powerpc/pcrel-sibcall-1.c: I protest.
- * gcc.target/powerpc/pdep-0.c: I protest.
- * gcc.target/powerpc/pdep-1.c: I protest.
- * gcc.target/powerpc/pextd-0.c: I protest.
- * gcc.target/powerpc/pextd-1.c: I protest.
- * gcc.target/powerpc/pr93122.c: I protest.
- * gcc.target/powerpc/pr94740.c: I protest.
- * gcc.target/powerpc/setbceq.c: I protest.
- * gcc.target/powerpc/setbcge.c: I protest.
- * gcc.target/powerpc/setbcgt.c: I protest.
- * gcc.target/powerpc/setbcle.c: I protest.
- * gcc.target/powerpc/setbclt.c: I protest.
- * gcc.target/powerpc/setbcne.c: I protest.
- * gcc.target/powerpc/setnbceq.c: I protest.
- * gcc.target/powerpc/setnbcge.c: I protest.
- * gcc.target/powerpc/setnbcgt.c: I protest.
- * gcc.target/powerpc/setnbcle.c: I protest.
- * gcc.target/powerpc/setnbclt.c: I protest.
- * gcc.target/powerpc/setnbcne.c: I protest.
- * gcc.target/powerpc/vec-cfuged-0.c: I protest.
- * gcc.target/powerpc/vec-cfuged-1.c: I protest.
- * gcc.target/powerpc/vec-clrl-0.c: I protest.
- * gcc.target/powerpc/vec-clrl-1.c: I protest.
- * gcc.target/powerpc/vec-clrl-2.c: I protest.
- * gcc.target/powerpc/vec-clrl-3.c: I protest.
- * gcc.target/powerpc/vec-clrr-0.c: I protest.
- * gcc.target/powerpc/vec-clrr-1.c: I protest.
- * gcc.target/powerpc/vec-clrr-2.c: I protest.
- * gcc.target/powerpc/vec-clrr-3.c: I protest.
- * gcc.target/powerpc/vec-cntlzm-0.c: I protest.
- * gcc.target/powerpc/vec-cntlzm-1.c: I protest.
- * gcc.target/powerpc/vec-cnttzm-0.c: I protest.
- * gcc.target/powerpc/vec-cnttzm-1.c: I protest.
- * gcc.target/powerpc/vec-extracth-0.c: I protest.
- * gcc.target/powerpc/vec-extracth-1.c: I protest.
- * gcc.target/powerpc/vec-extracth-2.c: I protest.
- * gcc.target/powerpc/vec-extracth-3.c: I protest.
- * gcc.target/powerpc/vec-extracth-4.c: I protest.
- * gcc.target/powerpc/vec-extracth-5.c: I protest.
- * gcc.target/powerpc/vec-extracth-6.c: I protest.
- * gcc.target/powerpc/vec-extracth-7.c: I protest.
- * gcc.target/powerpc/vec-extracth-be-0.c: I protest.
- * gcc.target/powerpc/vec-extracth-be-1.c: I protest.
- * gcc.target/powerpc/vec-extracth-be-2.c: I protest.
- * gcc.target/powerpc/vec-extracth-be-3.c: I protest.
- * gcc.target/powerpc/vec-extractl-0.c: I protest.
- * gcc.target/powerpc/vec-extractl-1.c: I protest.
- * gcc.target/powerpc/vec-extractl-2.c: I protest.
- * gcc.target/powerpc/vec-extractl-3.c: I protest.
- * gcc.target/powerpc/vec-extractl-4.c: I protest.
- * gcc.target/powerpc/vec-extractl-5.c: I protest.
- * gcc.target/powerpc/vec-extractl-6.c: I protest.
- * gcc.target/powerpc/vec-extractl-7.c: I protest.
- * gcc.target/powerpc/vec-extractl-be-0.c: I protest.
- * gcc.target/powerpc/vec-extractl-be-1.c: I protest.
- * gcc.target/powerpc/vec-extractl-be-2.c: I protest.
- * gcc.target/powerpc/vec-extractl-be-3.c: I protest.
- * gcc.target/powerpc/vec-gnb-0.c: I protest.
- * gcc.target/powerpc/vec-gnb-1.c: I protest.
- * gcc.target/powerpc/vec-gnb-2.c: I protest.
- * gcc.target/powerpc/vec-pdep-0.c: I protest.
- * gcc.target/powerpc/vec-pdep-1.c: I protest.
- * gcc.target/powerpc/vec-pext-0.c: I protest.
- * gcc.target/powerpc/vec-pext-1.c: I protest.
- * gcc.target/powerpc/vec-stril-0.c: I protest.
- * gcc.target/powerpc/vec-stril-1.c: I protest.
- * gcc.target/powerpc/vec-stril-10.c: I protest.
- * gcc.target/powerpc/vec-stril-11.c: I protest.
- * gcc.target/powerpc/vec-stril-12.c: I protest.
- * gcc.target/powerpc/vec-stril-13.c: I protest.
- * gcc.target/powerpc/vec-stril-14.c: I protest.
- * gcc.target/powerpc/vec-stril-15.c: I protest.
- * gcc.target/powerpc/vec-stril-16.c: I protest.
- * gcc.target/powerpc/vec-stril-17.c: I protest.
- * gcc.target/powerpc/vec-stril-18.c: I protest.
- * gcc.target/powerpc/vec-stril-19.c: I protest.
- * gcc.target/powerpc/vec-stril-2.c: I protest.
- * gcc.target/powerpc/vec-stril-20.c: I protest.
- * gcc.target/powerpc/vec-stril-21.c: I protest.
- * gcc.target/powerpc/vec-stril-22.c: I protest.
- * gcc.target/powerpc/vec-stril-23.c: I protest.
- * gcc.target/powerpc/vec-stril-3.c: I protest.
- * gcc.target/powerpc/vec-stril-4.c: I protest.
- * gcc.target/powerpc/vec-stril-5.c: I protest.
- * gcc.target/powerpc/vec-stril-6.c: I protest.
- * gcc.target/powerpc/vec-stril-7.c: I protest.
- * gcc.target/powerpc/vec-stril-8.c: I protest.
- * gcc.target/powerpc/vec-stril-9.c: I protest.
- * gcc.target/powerpc/vec-stril_p-0.c: I protest.
- * gcc.target/powerpc/vec-stril_p-1.c: I protest.
- * gcc.target/powerpc/vec-stril_p-10.c: I protest.
- * gcc.target/powerpc/vec-stril_p-11.c: I protest.
- * gcc.target/powerpc/vec-stril_p-2.c: I protest.
- * gcc.target/powerpc/vec-stril_p-3.c: I protest.
- * gcc.target/powerpc/vec-stril_p-4.c: I protest.
- * gcc.target/powerpc/vec-stril_p-5.c: I protest.
- * gcc.target/powerpc/vec-stril_p-6.c: I protest.
- * gcc.target/powerpc/vec-stril_p-7.c: I protest.
- * gcc.target/powerpc/vec-stril_p-8.c: I protest.
- * gcc.target/powerpc/vec-stril_p-9.c: I protest.
- * gcc.target/powerpc/vec-strir-0.c: I protest.
- * gcc.target/powerpc/vec-strir-1.c: I protest.
- * gcc.target/powerpc/vec-strir-10.c: I protest.
- * gcc.target/powerpc/vec-strir-11.c: I protest.
- * gcc.target/powerpc/vec-strir-12.c: I protest.
- * gcc.target/powerpc/vec-strir-13.c: I protest.
- * gcc.target/powerpc/vec-strir-14.c: I protest.
- * gcc.target/powerpc/vec-strir-15.c: I protest.
- * gcc.target/powerpc/vec-strir-16.c: I protest.
- * gcc.target/powerpc/vec-strir-17.c: I protest.
- * gcc.target/powerpc/vec-strir-18.c: I protest.
- * gcc.target/powerpc/vec-strir-19.c: I protest.
- * gcc.target/powerpc/vec-strir-2.c: I protest.
- * gcc.target/powerpc/vec-strir-20.c: I protest.
- * gcc.target/powerpc/vec-strir-21.c: I protest.
- * gcc.target/powerpc/vec-strir-22.c: I protest.
- * gcc.target/powerpc/vec-strir-23.c: I protest.
- * gcc.target/powerpc/vec-strir-3.c: I protest.
- * gcc.target/powerpc/vec-strir-4.c: I protest.
- * gcc.target/powerpc/vec-strir-5.c: I protest.
- * gcc.target/powerpc/vec-strir-6.c: I protest.
- * gcc.target/powerpc/vec-strir-7.c: I protest.
- * gcc.target/powerpc/vec-strir-8.c: I protest.
- * gcc.target/powerpc/vec-strir-9.c: I protest.
- * gcc.target/powerpc/vec-strir_p-0.c: I protest.
- * gcc.target/powerpc/vec-strir_p-1.c: I protest.
- * gcc.target/powerpc/vec-strir_p-10.c: I protest.
- * gcc.target/powerpc/vec-strir_p-11.c: I protest.
- * gcc.target/powerpc/vec-strir_p-2.c: I protest.
- * gcc.target/powerpc/vec-strir_p-3.c: I protest.
- * gcc.target/powerpc/vec-strir_p-4.c: I protest.
- * gcc.target/powerpc/vec-strir_p-5.c: I protest.
- * gcc.target/powerpc/vec-strir_p-6.c: I protest.
- * gcc.target/powerpc/vec-strir_p-7.c: I protest.
- * gcc.target/powerpc/vec-strir_p-8.c: I protest.
- * gcc.target/powerpc/vec-strir_p-9.c: I protest.
- * gcc.target/powerpc/vec-ternarylogic-0.c: I protest.
- * gcc.target/powerpc/vec-ternarylogic-1.c: I protest.
- * gcc.target/powerpc/vec-ternarylogic-10.c: I protest.
- * gcc.target/powerpc/vec-ternarylogic-2.c: I protest.
- * gcc.target/powerpc/vec-ternarylogic-3.c: I protest.
- * gcc.target/powerpc/vec-ternarylogic-4.c: I protest.
- * gcc.target/powerpc/vec-ternarylogic-5.c: I protest.
- * gcc.target/powerpc/vec-ternarylogic-6.c: I protest.
- * gcc.target/powerpc/vec-ternarylogic-7.c: I protest.
- * gcc.target/powerpc/vec-ternarylogic-8.c: I protest.
- * gcc.target/powerpc/vec-ternarylogic-9.c: I protest.
- * gcc.target/powerpc/xxgenpc-runnable.c: I protest.
- * lib/target-supports.exp: Stuff.
-
-2020-06-22 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/mve_scalar_shifts1.c: Modify.
- * gcc.target/arm/mve/intrinsics/mve_scalar_shifts2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_scalar_shifts3.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_scalar_shifts4.c: Likewise.
- * lib/target-supports.exp (check_effective_target_arm_mve_hw): Define.
-
-2020-06-22 Steven G. Kargl <kargl@gcc.gnu.org>
-
- PR fortran/95708
- * gfortran.dg/pr95708.f90: New test.
-
-2020-06-22 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/95791
- * gcc.target/i386/pr95791.c: New test.
-
-2020-06-22 Steven G. Kargl <kargl@gcc.gnu.org>
-
- PR fortran/95585
- * gfortran.dg/pr95585.f90: New test.
-
-2020-06-22 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95770
- * gcc.dg/pr95770.c: New testcase.
-
-2020-06-22 Kito Cheng <kito.cheng@sifive.com>
-
- * g++.target/riscv/frflags.C: New.
-
-2020-06-21 Peter Bergner <bergner@linux.ibm.com>
-
- * gcc.target/powerpc/mma-builtin-1.c: New file.
- * gcc.target/powerpc/mma-builtin-2.c: New file.
- * gcc.target/powerpc/mma-builtin-3.c: New file.
- * gcc.target/powerpc/mma-builtin-4.c: New file.
- * gcc.target/powerpc/mma-builtin-5.c: New file.
- * gcc.target/powerpc/mma-builtin-6.c: New file.
-
-2020-06-20 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/95505
- * g++.dg/coroutines/pr95505.C: New test.
-
-2020-06-20 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp2a/concepts-return-req1.C: Expect error.
- * g++.dg/cpp2a/concepts-p2113a.C: New test.
- * g++.dg/cpp2a/concepts-p2113b.C: New test.
-
-2020-06-20 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95707
- * gfortran.dg/pr95707.f90: New file.
-
-2020-06-20 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95688
- * gfortran.dg/pr95688.f90: New file.
-
-2020-06-20 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95687
- * gfortran.dg/pr95687.f90: New file.
-
-2020-06-20 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95689
- * gfortran.dg/pr95689.f90: New file.
-
-2020-06-20 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95587
- * gfortran.dg/pr95587.f90: New file.
-
-2020-06-20 Bin Cheng <bin.cheng@linux.alibaba.com>
-
- PR tree-optimization/95638
- * g++.dg/tree-ssa/pr95638.C: New test.
-
-2020-06-19 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.dg/tree-ssa/popcount4ll.c: Add target lp64.
- * gcc.dg/tree-ssa/popcount5ll.c: Same.
-
-2020-06-19 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp2a/spaceship-friend1.C: New test.
- * g++.dg/cpp2a/spaceship-err4.C: Adjust diagnostic.
-
-2020-06-19 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.target/powerpc/vec-extracth-be-0.c: Apply -mbig
- conditionally for powerpc64le*-*-*.
- * gcc.target/powerpc/vec-extracth-be-1.c: Same.
- * gcc.target/powerpc/vec-extracth-be-2.c: Same.
- * gcc.target/powerpc/vec-extracth-be-3.c: Same.
- * gcc.target/powerpc/vec-extractl-be-0.c: Same.
- * gcc.target/powerpc/vec-extractl-be-1.c: Same.
- * gcc.target/powerpc/vec-extractl-be-2.c: Same.
- * gcc.target/powerpc/vec-extractl-be-3.c: Same.
-
-2020-06-19 Przemyslaw Wirkus <Przemyslaw.Wirkus@arm.com>
-
- PR tree-optimization/94880
- * gcc.dg/tree-ssa/pr94880.c: New Test.
-
-2020-06-19 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95761
- * gcc.dg/torture/pr95761.c: New testcase.
-
-2020-06-18 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp2a/spaceship-ref1.C: New test.
- * g++.dg/cpp2a/spaceship-synth-neg4.C: New test.
- * g++.dg/cpp2a/spaceship-union1.C: New test.
-
-2020-06-18 Uroš Bizjak <ubizjak@gmail.com>
-
- * gcc.target/i386/pr78904-1a.c: New test.
- * gcc.target/i386/pr78904-1b.c: Ditto.
- * gcc.target/i386/pr78904-2a.c: Ditto.
- * gcc.target/i386/pr78904-2b.c: Ditto.
- * gcc.target/i386/pr78904-3a.c: Ditto.
- * gcc.target/i386/pr78904-3b.c: Ditto.
- * gcc.target/i386/pr78904-4a.c: Ditto.
- * gcc.target/i386/pr78904-4b.c: Ditto.
- * gcc.target/i386/pr78904-5a.c: Ditto.
- * gcc.target/i386/pr78904-5b.c: Ditto.
- * gcc.target/i386/pr78904-6a.c: Ditto.
- * gcc.target/i386/pr78904-6b.c: Ditto.
- * gcc.target/i386/pr78967-1a.c: Ditto.
- * gcc.target/i386/pr78967-1b.c: Ditto.
- * gcc.target/i386/pr78967-2a.c: Ditto.
- * gcc.target/i386/pr78967-2b.c: Ditto.
-
-2020-06-18 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/95667
- PR middle-end/92814
- * gcc.dg/Wstringop-overflow-25.c: Remove xfails.
- * gcc.dg/Wstringop-overflow-39.c: New test.
-
-2020-06-18 Marek Polacek <polacek@redhat.com>
-
- PR c++/95735
- * g++.dg/cpp2a/concepts-err2.C: New test.
-
-2020-06-18 Christophe Lyon <christophe.lyon@linaro.org>
-
- * g++.target/aarch64/pr94052.C: Give z::ad public access.
-
-2020-06-18 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/map-alloc-comp-1.f90: New test.
-
-2020-06-18 Marek Polacek <polacek@redhat.com>
-
- PR c++/95728
- * g++.dg/template/cast6.C: New test.
-
-2020-06-18 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/95699
- * gcc.dg/tree-ssa/pr95699.c: New test.
-
-2020-06-18 Jakub Jelinek <jakub@redhat.com>
-
- PR target/95713
- * gcc.dg/pr95713.c: New test.
-
-2020-06-17 Thomas Schwinge <thomas@codesourcery.com>
-
- * c-c++-common/gomp/default-1.c: Update.
- * c-c++-common/gomp/defaultmap-3.c: Likewise.
- * c-c++-common/gomp/order-4.c: Likewise.
- * g++.dg/gomp/parallel-2.C: Likewise.
- * g++.dg/gomp/predetermined-1.C: Likewise.
- * g++.dg/gomp/sharing-1.C: Likewise.
- * gcc.dg/gomp/appendix-a/a.24.1.c: Likewise.
- * gcc.dg/gomp/parallel-2.c: Likewise.
- * gcc.dg/gomp/pr44085.c: Likewise.
- * gcc.dg/gomp/sharing-1.c: Likewise.
- * gcc.dg/gomp/vla-1.c: Likewise.
- * gfortran.dg/gomp/appendix-a/a.24.1.f90: Likewise.
- * gfortran.dg/gomp/crayptr3.f90: Likewise.
- * gfortran.dg/gomp/pr33439.f90: Likewise.
- * gfortran.dg/gomp/pr44036-1.f90: Likewise.
- * gfortran.dg/gomp/pr44085.f90: Likewise.
- * gfortran.dg/gomp/pr44536.f90: Likewise.
- * gfortran.dg/gomp/pr94672.f90: Likewise.
- * gfortran.dg/gomp/sharing-1.f90: Likewise.
- * gfortran.dg/gomp/sharing-2.f90: Likewise.
- * gfortran.dg/gomp/sharing-3.f90: Likewise.
-
-2020-06-17 Thomas Schwinge <thomas@codesourcery.com>
-
- * c-c++-common/gomp/hsa-indirect-call-1.c: New file.
-
-2020-06-17 Jonathan Wakely <jwakely@redhat.com>
-
- PR c++/66159
- * g++.dg/warn/forward-inner.C: Check alias-declaration using
- elaborated-type-specifier.
-
-2020-06-17 Bin Cheng <bin.cheng@linux.alibaba.com>
- Kaipeng Zhou <zhoukaipeng3@huawei.com>
- Bin Cheng <bin.cheng@linux.alibaba.com>
- Kaipeng Zhou <zhoukaipeng3@huawei.com>
-
- PR tree-optimization/95199
- * gcc.target/aarch64/sve/pr95199.c: New test.
-
-2020-06-17 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp2a/spaceship-synth9.C: New test.
-
-2020-06-17 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp2a/concepts-ca107.C: New test.
-
-2020-06-17 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp2a/consteval17.C: New test.
-
-2020-06-17 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp0x/pr62101.C: Expect error.
- * g++.dg/cpp0x/pr80259.C: Expect error.
- * g++.dg/cpp2a/concepts-friend8.C: New test.
-
-2020-06-17 Jonathan Wakely <jwakely@redhat.com>
-
- * c-c++-common/pr95378.c: New test.
-
-2020-06-17 Andreas Krebbel <krebbel@linux.ibm.com>
-
- * gcc.target/s390/20200617.c: New test.
-
-2020-06-17 Marek Polacek <polacek@redhat.com>
-
- PR c++/95508
- * g++.dg/template/conv16.C: New test.
-
-2020-06-17 Patrick Palka <ppalka@redhat.com>
-
- PR testsuite/95716
- * g++.dg/ext/pr85503.C: Give ai::cv public access.
-
-2020-06-17 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95717
- * g++.dg/torture/pr95717.C: New testcase.
-
-2020-06-17 Martin Liska <mliska@suse.cz>
-
- PR testsuite/95720
- * gcc.misc-tests/gcov-pr94029.c: Remove not needed remove-gcda.
- * lib/gcov.exp: Delete properly .gcov files.
-
-2020-06-17 Martin Liska <mliska@suse.cz>
-
- * g++.dg/vect/vec-cond-expr-eh.C: New test.
-
-2020-06-17 liuhongt <hongtao.liu@intel.com>
-
- * gcc.target/i386/avx2-shiftqihi-constant-1.c: New test.
- * gcc.target/i386/avx2-shiftqihi-constant-2.c: Ditto.
- * gcc.target/i386/avx512bw-shiftqihi-constant-1.c: Ditto.
- * gcc.target/i386/avx512bw-shiftqihi-constant-2.c: Ditto.
- * gcc.target/i386/sse2-shiftqihi-constant-1.c: Ditto.
- * gcc.target/i386/sse2-shiftqihi-constant-2.c: Ditto.
-
-2020-06-16 Jonathan Wakely <jwakely@redhat.com>
-
- * g++.dg/torture/pr95493-1.C: New test.
-
-2020-06-16 Aldy Hernandez <aldyh@redhat.com>
-
- * g++.dg/tree-ssa/pr95649.C: New test.
- * gcc.dg/tree-ssa/pr95649.c: New test.
-
-2020-06-16 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/goacc/pure-elemental-procedures-2.f90: New test.
-
-2020-06-16 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/pr79154-simd.f90: New test.
-
-2020-06-16 Marek Polacek <polacek@redhat.com>
-
- PR c++/95369
- * g++.dg/cpp2a/desig11.C: Adjust dg-error.
- * g++.dg/cpp2a/desig16.C: New test.
-
-2020-06-16 Marek Polacek <polacek@redhat.com>
-
- PR c++/95560
- * g++.dg/warn/Wshadow-local-3.C: New test.
-
-2020-06-16 Jakub Jelinek <jakub@redhat.com>
-
- * c-c++-common/asan/inline.c: Add -ffat-lto-objects to dg-options.
- * c-c++-common/asan/inline-kernel.c: Likewise.
- * c-c++-common/ubsan/inline.c: Likewise.
-
-2020-06-16 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/mve_vaddq_m.c: New test.
-
-2020-06-16 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/mve_scalar_shifts1.c: New test.
- * gcc.target/arm/mve/intrinsics/mve_scalar_shifts2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_scalar_shifts3.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_scalar_shifts4.c: Likewise.
-
-2020-06-16 Jakub Jelinek <jakub@redhat.com>
-
- * c-c++-common/gomp/loop-6.c: New test.
- * gcc.dg/gomp/loop-1.c: Don't expect diagnostics on valid
- non-rectangular loops.
- * gcc.dg/gomp/loop-2.c: New test.
- * g++.dg/gomp/loop-1.C: Don't expect diagnostics on valid
- non-rectangular loops.
- * g++.dg/gomp/loop-2.C: Likewise.
- * g++.dg/gomp/loop-5.C: New test.
- * g++.dg/gomp/loop-6.C: New test.
-
-2020-06-16 Jakub Jelinek <jakub@redhat.com>
-
- * c-c++-common/gomp/schedule-modifiers-2.c: New test.
-
-2020-06-16 Tobias Burnus <tobias@codesourcery.com>
-
- PR middle-end/95622
- * lib/target-supports.exp (check_effective_target_offloading_enabled):
- New.
- * c-c++-common/goacc/kernels-alias-ipa-pta-2.c: Use it for xfail.
- * c-c++-common/goacc/kernels-alias-ipa-pta-4.c: Likewise.
- * c-c++-common/goacc/kernels-alias-ipa-pta.c: Likewise.
-
-2020-06-16 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/gomp/pr79154-1.f90: Update dg-*;
- add an impure elemental example.
- * gfortran.dg/gomp/pr79154-2.f90: Likewise.
-
-2020-06-16 Patrick Palka <ppalka@redhat.com>
-
- PR c++/41437
- PR c++/47346
- * g++.dg/cpp2a/concepts-using2.C: Adjust.
- * g++.dg/lto/20081219_1.C: Adjust.
- * g++.dg/lto/20091002-1_0.C: Adjust.
- * g++.dg/lto/pr65475c_0.C: Adjust.
- * g++.dg/opt/dump1.C: Adjust.
- * g++.dg/other/pr53574.C: Adjust.
- * g++.dg/template/access30.C: New test.
- * g++.dg/template/access31.C: New test.
- * g++.dg/wrappers/wrapper-around-type-pack-expansion.C: Adjust.
-
-2020-06-16 Richard Biener <rguenther@suse.de>
-
- PR middle-end/95690
- * gfortran.dg/pr95690.f90: New testcase.
-
-2020-06-16 Thomas Schwinge <thomas@codesourcery.com>
-
- PR tree-optimization/94988
- * gcc.dg/graphite/pr80906.c: Un-XFAIL.
-
-2020-06-16 Thomas Schwinge <thomas@codesourcery.com>
-
- * gcc.dg/lto/pr52634_0.c: Further adjust 'dg-lto-options'.
-
-2020-06-16 Kito Cheng <kito.cheng@sifive.com>
-
- PR target/95683
- * gcc.target/riscv/pr95683.c: New.
-
-2020-06-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/aggr30.ads, gnat.dg/aggr30.adb: New test.
-
-2020-06-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/opt85.ads, gnat.dg/opt85.adb: New test.
-
-2020-06-15 Max Filippov <jcmvbkbc@gmail.com>
-
- * gcc.target/xtensa/mabi-call0.c: New test.
- * gcc.target/xtensa/mabi-windowed.c: New test.
-
-2020-06-15 Martin Jambor <mjambor@suse.cz>
-
- * lib/brig.exp (brig_target_compile): Strip hsail extension when
- gnerating the name of the binary brig file.
-
-2020-06-15 Hongtao Liu <hongtao.liu@intel.com>
-
- * gcc.target/i386/avx512bw-pr95488-1.c: New test.
- * gcc.target/i386/avx512bw-pr95488-2.c: Ditto.
- * gcc.target/i386/avx512vl-pr95488-1.c: Ditto.
- * gcc.target/i386/avx512vl-pr95488-2.c: Ditto.
-
-2020-06-14 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95088
- * gfortran.dg/pr95088.f90: New file.
-
-2020-06-14 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- * gfortran.dg/random_seed_4.f90: New test.
-
-2020-06-14 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/94109
- * gfortran.dg/finalize_34.f90: Adjust free counts.
- * gfortran.dg/finalize_36.f90: New test.
-
-2020-06-14 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR testsuite/95575
- * lib/gdc-utils.exp (gdc-do-test): Re-add $subdir link and inclusion
- in filename.
-
-2020-06-13 Martin Sebor <msebor@redhat.com>
-
- * gcc.dg/builtin-stringop-chk-5.c: Make assertions independent of
- data model.
-
-2020-06-13 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- * gfortran.dg/finalize_36.f90: Remove accidentally
- committed test case.
-
-2020-06-13 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR libfortran/95313
- * gfortran.dg/finalize_36.f90: New file.
-
-2020-06-12 Marco Elver <elver@google.com>
-
- * c-c++-common/tsan/func_entry_exit.c: New test.
- * c-c++-common/tsan/func_entry_exit_disabled.c: New test.
-
-2020-06-12 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/bb-slp-44.c: New testcase.
-
-2020-06-12 Felix Yang <felix.yang@huawei.com>
-
- PR tree-optimization/95570
- * gcc.dg/vect/pr95570.c: New test.
-
-2020-06-12 Arnaud Charlet <charlet@adacore.com>
-
- * gnat.dg/rep_clause8.adb: Update error location.
-
-2020-06-12 Alexandre Oliva <oliva@adacore.com>
-
- * lib/prune.exp (prune_gcc_output): Match any executable name
- in collect messages.
-
-2020-06-12 H.J. Lu <hjl.tools@gmail.com>
-
- PR target/93492
- * gcc.target/i386/pr93492-1.c: New test.
- * gcc.target/i386/pr93492-2.c: Likewise.
- * gcc.target/i386/pr93492-3.c: Likewise.
- * gcc.target/i386/pr93492-4.c: Likewise.
- * gcc.target/i386/pr93492-5.c: Likewise.
-
-2020-06-11 Patrick Palka <ppalka@redhat.com>
-
- PR c++/93467
- * g++.dg/cpp2a/concepts-friend6.C: New test.
- * g++.dg/cpp2a/concepts-friend7.C: New test.
-
-2020-06-11 Harald Anlauf <anlauf@gmx.de>
- Steven G. Kargl <kargl@gcc.gnu.org>
-
- PR fortran/95611
- * gfortran.dg/pr95611.f90: New file.
-
-2020-06-11 Steven G. Kargl <kargl@gcc.gnu.org>
- Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95544
- * gfortran.dg/pr95544.f90: New file.
-
-2020-06-11 Tamar Christina <tamar.christina@arm.com>
-
- * lib/target-supports.exp (check_effective_target_exceptions_enabled):
- Mark as C++ test input.
-
-2020-06-11 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95503
- * gfortran.dg/pr95503.f90: New test.
-
-2020-06-11 José Rui Faustino de Sousa <jrfsousa@gmail.com>
-
- PR fortran/95331
- * gfortran.dg/PR95331.f90: New test.
-
-2020-06-11 David Edelsohn <dje.gcc@gmail.com>
-
- * g++.dg/abi/pure-virtual1.C: XFAIL AIX.
-
-2020-06-11 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.dg/spellcheck-inttypes.c: Don't include inttypes.h on AIX.
-
-2020-06-11 José Rui Faustino de Sousa <jrfsousa@gmail.com>
-
- PR fortran/52351
- PR fortran/85868
- * gfortran.dg/coarray_lib_comm_1.f90: Adjust match test for
- the newly generated descriptor.
- * gfortran.dg/PR85868A.f90: New test.
- * gfortran.dg/PR85868B.f90: New test.
-
-2020-06-11 José Rui Faustino de Sousa <jrfsousa@gmail.com>
-
- PR fortran/94022
- * gfortran.dg/PR94022.f90: New test.
-
-2020-06-11 Kito Cheng <kito.cheng@sifive.com>
-
- * gcc.target/riscv/pr95252.c: New.
-
-2020-06-10 Alexandre Oliva <oliva@adacore.com>
-
- PR rtl-optimization/51447
- * gcc.c-torture/execute/pr51447.c (main): Preserve call-saved
- register.
-
-2020-06-10 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/95440
- * g++.dg/coroutines/pr95440.C: New test.
-
-2020-06-10 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/95353
- PR middle-end/92939
- * c-c++-common/Wstringop-truncation.c: Remove an xfail.
- * gcc.dg/Warray-bounds-46.c: Remove a bogus warning.
- * gcc.dg/Wrestrict-9.c: Disable -Wstringop-overflow.
- * gcc.dg/Wstringop-overflow-12.c: Remove xfails.
- * gcc.dg/Wstringop-overflow-28.c: Same.
- * gcc.dg/builtin-stringop-chk-4.c: Same.
- * gcc.dg/builtin-stringop-chk-5.c: Same.
- * gcc.dg/builtin-stringop-chk-8.c: Same.
- * gcc.dg/strlenopt-74.c: Avoid buffer overflow.
- * gcc.dg/Wstringop-overflow-34.c: New test.
- * gcc.dg/Wstringop-overflow-35.c: New test.
- * gcc.dg/Wstringop-overflow-36.c: New test.
- * gcc.dg/Wstringop-overflow-37.c: New test.
- * gcc.dg/Wstringop-overflow-38.c: New test.
-
-2020-06-10 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95576
- * g++.dg/vect/pr95576.cc: New testcase.
-
-2020-06-10 Haijian Zhang <z.zhanghaijian@huawei.com>
-
- PR target/95523
- * gcc.target/aarch64/sve/pr95523.c: New test.
-
-2020-06-10 Marek Polacek <polacek@redhat.com>
-
- PR c++/95562
- * g++.dg/cpp0x/noexcept60.C: New test.
-
-2020-06-10 Aldy Hernandez <aldyh@redhat.com>
-
- * gcc.dg/tree-ssa/ssa-dse-30.c: Adjust test for folding of
- memmove happening later.
-
-2020-06-10 Tamar Christina <tamar.christina@arm.com>
-
- * gcc.target/aarch64/asimd-mull-elem.c: New test.
-
-2020-06-10 Qian Chao <qianchao9@huawei.com>
-
- PR tree-optimization/95569
- * gcc.dg/tm/pr95569.c: New test.
-
-2020-06-09 Michael Meissner <meissner@linux.ibm.com>
-
- * gcc.target/powerpc/clone3.c: New test for using 'future' with
- the target_clones attribute.
-
-2020-06-09 Martin Liska <mliska@suse.cz>
-
- * c-c++-common/asan/inline-kernel.c: Add missing
- -fno-sanitize-address option.
-
-2020-06-09 Jason Merrill <jason@redhat.com>
-
- PR c++/95552
- * g++.dg/ext/vla23.C: New test.
-
-2020-06-09 Marco Elver <elver@google.com>
-
- * c-c++-common/tsan/volatile.c: New test.
-
-2020-06-09 Michael Meissner <meissner@linux.ibm.com>
-
- * lib/target-supports.exp (check_effective_target_powerpc_pcrel):
- New.
- (check_effective_target_powerpc_prefixed_addr): New.
-
-2020-06-09 Martin Liska <mliska@suse.cz>
-
- * c-c++-common/asan/inline.c: New test.
- * c-c++-common/asan/inline-kernel.c: New test.
- * c-c++-common/tsan/inline.c: New test.
- * c-c++-common/ubsan/inline.c: New test.
-
-2020-06-09 Joe Ramsay <joe.ramsay@arm.com>
-
- * gcc.target/aarch64/sve/logical_unpacked_abs.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_bic_1.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_bic_2.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_bic_3.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_bic_4.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_neg.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_not.c: New test.
-
-2020-06-09 Jakub Jelinek <jakub@redhat.com>
-
- PR c/95580
- * gcc.dg/pr95580.c: New test.
-
-2020-06-09 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/95527
- * gcc.dg/tree-ssa/pr95527.c: New test.
-
-2020-06-09 Jakub Jelinek <jakub@redhat.com>
-
- * g++.dg/torture/pr95493.C: Add -Wno-psabi -w to dg-additional-options.
-
-2020-06-09 Max Filippov <jcmvbkbc@gmail.com>
-
- * g++.target/xtensa/pr95571.C: New test.
- * g++.target/xtensa/xtensa.exp: New testsuite.
-
-2020-06-09 Segher Boessenkool <segher@kernel.crashing.org>
-
- * gcc.target/powerpc/fold-vec-perm-char.c: Allow both vperm/vpermr and
- xxperm/xxpermr.
- * gcc.target/powerpc/fold-vec-perm-double.c: Ditto.
- * gcc.target/powerpc/fold-vec-perm-float.c: Ditto.
- * gcc.target/powerpc/fold-vec-perm-int.c: Ditto.
- * gcc.target/powerpc/fold-vec-perm-longlong.c: Ditto.
- * gcc.target/powerpc/fold-vec-perm-pixel.c: Ditto.
- * gcc.target/powerpc/fold-vec-perm-short.c: Ditto.
- * gcc.target/powerpc/lvsl-lvsr.c: Ditto.
- * gcc.target/powerpc/vec-mult-char-2.c: Ditto.
- * gcc.target/powerpc/vsx-vector-6.p9.c: Also allow xxpermr.
-
-2020-06-09 Michael Meissner <meissner@linux.ibm.com>
-
- * gcc.target/powerpc/clone3.c: New test for using 'future' with
- the target_clones attribute.
-
-2020-06-09 Michael Meissner <meissner@linux.ibm.com>
-
- * lib/target-supports.exp (check_effective_target_powerpc_pcrel):
- New.
- (check_effective_target_powerpc_prefixed_addr): New.
-
-2020-06-08 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95195
- * gfortran.dg/namelist_97.f90: Adjust testcase.
-
-2020-06-08 Mark Eggleston <markeggleston@gcc.gnu.org>
-
- PR fortran/92993
- * gfortran.dg/pr92993.f90: New test.
-
-2020-06-08 Jakub Jelinek <jakub@redhat.com>
-
- PR target/95528
- * g++.dg/opt/pr95528.C: New test.
-
-2020-06-08 Jakub Jelinek <jakub@redhat.com>
-
- PR lto/95548
- * g++.dg/torture/pr95548.C: Change from dg-do compile to dg-do link,
- add return type for main, for __SIZEOF_INT128__ test with __uint128_t
- enumerator constants and add a test with unsigned long long
- enumerators for all targets.
-
-2020-06-07 Roger Sayle <roger@nextmovesoftware.com>
-
- * gcc.target/i386/parity-3.c: New test.
- * gcc.target/i386/parity-4.c: Likewise.
- * gcc.target/i386/parity-5.c: Likewise.
- * gcc.target/i386/parity-6.c: Likewise.
- * gcc.target/i386/parity-7.c: Likewise.
- * gcc.target/i386/parity-8.c: Likewise.
- * gcc.target/i386/parity-9.c: Likewise.
-
-2020-06-07 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95091
- * gfortran.dg/pr95091.f90: New file.
-
-2020-06-07 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR tree-optimization/50439
- * gfortran.dg/loop_interchange_2.f: New test.
-
-2020-06-06 Jan Hubicka <hubicka@ucw.cz>
-
- * g++.dg/torture/pr95548.C: New test.
-
-2020-06-05 Martin Sebor <msebor@redhat.com>
-
- * g++.dg/warn/Wnonnull5.C: Temporarily remove.
-
-2020-06-05 Marek Polacek <polacek@redhat.com>
-
- PR c++/95369
- * g++.dg/cpp2a/nontype-class38.C: New test.
-
-2020-06-05 Mark Wielaard <mark@klomp.org>
-
- * gcc.dg/missing-header-fixit-3.c: Add
- -Wno-implicit-function-declaration.
- * gcc.dg/missing-header-fixit-4.c: Add new expected output.
- * gcc.dg/missing-header-fixit-5.c: New testcase.
- * gcc.dg/Wbuiltin-declaration-mismatch-ignore.c: Likewise.
-
-2020-06-05 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp0x/constexpr-ptrsub2.C: New test.
-
-2020-06-05 Thomas Schwinge <thomas@codesourcery.com>
- Julian Brown <julian@codesourcery.com>
-
- * c-c++-common/goacc/struct-enter-exit-data-1.c: New file.
-
-2020-06-05 Martin Sebor <msebor@redhat.com>
-
- * c-c++-common/goacc/uninit-use-device-clause.c: Adjust.
- * c-c++-common/pr59223.c: Same.
- * g++.dg/warn/Wnonnull5.C: Same.
- * gcc.dg/pr59924.c: Same.
- * gcc.dg/ubsan/pr81981.c: Same.
- * gcc.dg/ubsan/pr89284.c: Same.
- * gfortran.dg/goacc/uninit-use-device-clause.f95: Same.
-
-2020-06-05 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95539
- * gcc.dg/vect/pr95539.c: New testcase.
-
-2020-06-05 Felix Yang <felix.yang@huawei.com>
-
- PR target/95254
- * gcc.target/aarch64/pr95254.c: New test.
- * gcc.target/i386/pr67609.c: Check "movq\t%xmm0" instead of "movdqa".
-
-2020-06-05 Jakub Jelinek <jakub@redhat.com>
-
- PR target/95535
- * gcc.target/i386/pr95535-1.c: New test.
- * gcc.target/i386/pr95535-2.c: New test.
-
-2020-06-05 Richard Biener <rguenther@suse.de>
-
- PR middle-end/95493
- * g++.dg/torture/pr95493.C: New testcase.
-
-2020-06-04 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/10138
- PR middle-end/95136
- * c-c++-common/Wsizeof-pointer-memaccess1.c: Prune out valid
- Wuninitialized.
- * c-c++-common/uninit-pr51010.c: Adjust expected warning format.
- * c-c++-common/goacc/uninit-dim-clause.c: Same.
- * c-c++-common/goacc/uninit-firstprivate-clause.c: Same.
- * c-c++-common/goacc/uninit-if-clause.c: Same.
- * c-c++-common/gomp/pr70550-1.c: Same.
- * c-c++-common/gomp/pr70550-2.c: Adjust.
- * g++.dg/20090107-1.C: Same.
- * g++.dg/20090121-1.C: Same.
- * g++.dg/ext/attr-access.C: Avoid -Wuninitialized.
- * gcc.dg/tree-ssa/forwprop-6.c: Prune out -Wuninitialized.
- * gcc.dg/Warray-bounds-52.c: Prune out valid -Wuninitialized.
- * gcc.dg/Warray-bounds-53.c: Same.
- * gcc.dg/Warray-bounds-54.c: Same.
- * gcc.dg/Wstringop-overflow-33.c: New test.
- * gcc.dg/attr-access-none.c: New test.
- * gcc.dg/attr-access-read-only.c: Adjust.
- * gcc.dg/attr-access-read-write.c: Same.
- * gcc.dg/attr-access-write-only.c: Same.
- * gcc.dg/pr71581.c: Adjust text of expected warning.
- * gcc.dg/uninit-15.c: Same.
- * gcc.dg/uninit-32.c: New test.
- * gcc.dg/uninit-33.c: New test.
- * gcc.dg/uninit-34.c: New test.
- * gcc.dg/uninit-36.c: New test.
- * gcc.dg/uninit-B-O0.c: Adjust text of expected warning.
- * gcc.dg/uninit-I-O0.c: Same.
- * gcc.dg/uninit-pr19430-O0.c: Same.
- * gcc.dg/uninit-pr19430.c: Same.
- * gcc.dg/uninit-pr95136.c: New test.
- * gfortran.dg/assignment_4.f90: Expect -Wuninitialized.
- * gfortran.dg/goacc/uninit-dim-clause.f95: Adjust text of expected
- warning.
- * gfortran.dg/goacc/uninit-firstprivate-clause.f95
- * gfortran.dg/goacc/uninit-if-clause.f95
- * gfortran.dg/pr66545_2.f90
-
-2020-06-04 Jason Merrill <jason@redhat.com>
-
- PR c++/93310
- * g++.dg/cpp2a/constexpr-virtual16.C: New test.
- * g++.dg/cpp2a/constexpr-virtual17.C: New test.
- * g++.dg/cpp2a/constexpr-new12.C: Adjust diagnostic.
-
-2020-06-04 Jason Merrill <jason@redhat.com>
-
- PR c++/95158
- * g++.dg/template/virtual5.C: New test.
-
-2020-06-04 Steven G. Kargl <kargl@gcc.gnu.org>
- Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95500
- * gfortran.dg/pr95500.f90: New test.
-
-2020-06-04 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/95346
- * g++.dg/coroutines/pr95346.C: New test.
-
-2020-06-04 Vladimir Makarov <vmakarov@redhat.com>
-
- PR middle-end/95464
- * gcc.target/i386/pr95464.c: New.
-
-2020-06-04 Martin Jambor <mjambor@suse.cz>
-
- PR ipa/95113
- * gcc.dg/ipa/pr95113.c: New test.
-
-2020-06-04 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- PR target/94735
- * gcc.target/arm/mve/intrinsics/mve_vstore_scatter_base.c: New test.
- * gcc.target/arm/mve/intrinsics/mve_vstore_scatter_base_p.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vstore_scatter_offset.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vstore_scatter_offset_p.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset_p.c:
- Likewise.
-
-2020-06-04 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vbicq_f16.c: Modify.
- * gcc.target/arm/mve/intrinsics/vbicq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_u8.c: Likewise.
-
-2020-06-04 Hongtao Liu <hongtao.liu@inte.com>
-
- * gcc.target/i386/avx512f-vcvtps2ph-pr95254.c: New test.
- * gcc.target/i386/avx512vl-vcvtps2ph-pr95254.c: Ditto.
-
-2020-06-04 Arnaud Charlet <charlet@adacore.com>
-
- * gnat.dg/openacc1.adb: Remove testcase.
-
-2020-06-04 Hao Liu <hliu@os.amperecomputing.com>
-
- PR tree-optimization/89430
- * gcc.dg/tree-ssa/pr89430-1.c: Remove xfail.
- * gcc.dg/tree-ssa/pr89430-2.c: Remove xfail.
- * gcc.dg/tree-ssa/pr89430-5.c: Remove xfail.
- * gcc.dg/tree-ssa/pr89430-6.c: Remove xfail.
- * gcc.dg/tree-ssa/pr89430-7-comp-ref.c: New test.
- * gcc.dg/tree-ssa/pr89430-8-mem-ref-size.c: New test.
- * gcc.dg/tree-ssa/ssa-pre-17.c: Add -fno-tree-cselim.
-
-2020-06-04 Andreas Schwab <schwab@suse.de>
-
- PR libfortran/59227
- * gfortran.dg/erf_3.F90: Remove XFAIL on ia64-*-linux*.
-
-2020-06-04 Hongtao.liu <hongtao.liu@intel.com>
-
- * gcc.target/i386/pr92658-avx512bw-trunc.c: Adjust testcase.
-
-2020-06-04 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/82304
- PR c++/95307
- * g++.dg/template/pr79650.C: Expect different diagnostics and expect
- it on all lines that do pointer to integer casts.
- * g++.dg/cpp1y/constexpr-shift1.C: Expect different diagnostics.
- * g++.dg/cpp1y/constexpr-82304.C: New test.
- * g++.dg/cpp0x/constexpr-95307.C: New test.
-
-2020-06-03 Mark Wielaard <mark@klomp.org>
-
- * g++.dg/spellcheck-inttypes.C: Add string-literal testcases.
-
-2020-06-03 Mark Wielaard <mark@klomp.org>
-
- * gcc.dg/spellcheck-inttypes.c: New test.
- * g++.dg/spellcheck-inttypes.C: Likewise.
-
-2020-06-03 Mark Wielaard <mark@klomp.org>
-
- * c-c++-common/missing-close-func-paren.c: New test.
-
-2020-06-03 Vitor Guidi <vitor.guidi@usp.br>
-
- * gcc.dg/tanhbysinh.c: New testcase.
-
-2020-06-03 Patrick Palka <ppalka@redhat.com>
-
- * g++.dg/cpp2a/concepts-partial-spec8.C: New test.
-
-2020-06-03 Patrick Palka <ppalka@redhat.com>
-
- PR c++/92103
- * g++.dg/cpp2a/concepts-partial-spec7.C: New test.
-
-2020-06-03 Jan Hubicka <hubicka@ucw.cz>
-
- * g++.dg/lto/pr84805_0.C: Update.
-
-2020-06-03 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/95345
- * g++.dg/coroutines/pr95345.C: New test.
-
-2020-06-03 Jason Merrill <jason@redhat.com>
-
- PR c++/95232
- * g++.dg/ubsan/vla-2.C: New test.
-
-2020-06-03 José Rui Faustino de Sousa <jrfsousa@gmail.com>
-
- PR fortran/95214
- PR fortran/66833
- PR fortran/67938
- * gfortran.dg/PR95214.f90: New test.
-
-2020-06-03 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95487
- * g++.dg/vect/pr95487.cc: New testcase.
-
-2020-06-03 David Malcolm <dmalcolm@redhat.com>
-
- PR jit/95306
- * jit.dg/test-pr95306-builtin-types.c (create_code): Add
- test of getting __atomic_load.
-
-2020-06-03 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95495
- * gcc.dg/vect/pr95495.c: New testcase.
-
-2020-06-03 Thomas Schwinge <thomas@codesourcery.com>
- Tobias Burnus <tobias@codesourcery.com>
-
- PR middle-end/94874
- * c-c++-common/gomp/pr94874.c: New.
-
-2020-06-02 David Malcolm <dmalcolm@redhat.com>
-
- PR jit/95426
- * jit.dg/all-non-failing-tests.h: Add note about...
- * jit.dg/test-builtin-unreachable.c: New test.
-
-2020-06-02 Jason Merrill <jason@redhat.com>
-
- PR c++/95193
- * g++.dg/cpp1z/lambda-this7.C: New test.
-
-2020-06-02 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/95050
- * g++.dg/coroutines/pr95050.C: New test.
-
-2020-06-02 Alexandre Oliva <oliva@adacore.com>
-
- * gcc.misc-tests/outputs.exp: Spell ldscript correctly.
- * lib/gcc-defs.exp (gcc_adjust_linker_flags): Likewise.
-
-2020-06-02 Felix Yang <felix.yang@huawei.com>
-
- PR target/95459
- * gcc.target/aarch64/mgeneral-regs_6.c: New test.
-
-2020-06-02 Andrew Stubbs <ams@codesourcery.com>
-
- * gcc.dg/intermod-1.c: Don't use -mlocal-symbol-id.
-
-2020-06-02 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
-
- * gcc.target/s390/vector/align-1.c: Change target architecture
- to z13.
- * gcc.target/s390/vector/align-2.c: Change target architecture
- to z13.
-
-2020-06-02 Kito Cheng <kito.cheng@sifive.com>
-
- * lib/ubsan-dg.exp (orig_ubsan_options_saved): New
- (orig_ubsan_options): Ditto.
- (ubsan_init): Store UBSAN_OPTIONS and set UBSAN_OPTIONS.
- (ubsan_finish): Restore UBSAN_OPTIONS.
-
-2020-06-02 Patrick Palka <ppalka@redhat.com>
-
- PR c++/92633
- PR c++/92838
- * g++.dg/cpp2a/concepts-lambda11.C: New test.
- * g++.dg/cpp2a/concepts-lambda12.C: New test.
-
-2020-06-01 Jason Merrill <jason@redhat.com>
-
- PR c++/95466
- * g++.dg/ubsan/vptr-17.C: New test.
-
-2020-06-01 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/95350
- * g++.dg/coroutines/torture/func-params-08.C: Adjust test to
- reflect that all rvalue refs are dangling.
- * g++.dg/coroutines/torture/func-params-09-awaitable-parms.C:
- Likewise.
- * g++.dg/coroutines/pr95350.C: New test.
-
-2020-06-01 Feng Xue <fxue@os.amperecomputing.com>
-
- PR ipa/93429
- * gcc.dg/ipa/ipcp-agg-8.c: Change dump string.
- * gcc.dg/ipa/ipcp-agg-13.c: New test.
-
-2020-05-31 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/95087
- * g++.dg/coroutines/co-return-syntax-08-bad-return.C:
- Adjust the testcase to do the compile (rather than an
- -fsyntax-only parse).
-
-2020-05-31 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/94361
- * gfortran.dg/finalize_28.f90: Adjusted free counts.
- * gfortran.dg/finalize_33.f90: Likewise.
- * gfortran.dg/finalize_34.f90: Likewise.
- * gfortran.dg/finalize_35.f90: New test.
-
-2020-05-31 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/95052
- * gcc.dg/pr95052.c: New test.
-
-2020-05-31 Jim Wilson <jimw@sifive.com>
-
- * gcc.target/riscv/zero-extend-5.c: New.
-
-2020-05-30 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95373
- * gfortran.dg/pr95373_1.f90: Adjust error messages.
- * gfortran.dg/pr95373_2.f90: Adjust error message.
-
-2020-05-30 Patrick Palka <ppalka@redhat.com>
-
- PR c++/95386
- * g++.dg/concepts/pr95386.C: New test.
-
-2020-05-29 Segher Boessenkool <segher@kernel.crashing.org>
-
- * gcc.target/powerpc/vsx-vector-6.p9.c: Allow xxperm as perm as well.
-
-2020-05-29 Patrick Palka <ppalka@redhat.com>
- Jason Merrill <jason@redhat.com>
-
- PR c++/95181
- * g++.dg/concepts/pr95181.C: New test.
- * g++.dg/concepts/pr95181-2.C: New test.
-
-2020-05-29 Jason Merrill <jason@redhat.com>
-
- PR c++/95371
- * g++.dg/cpp2a/concepts-ttp1.C: New test.
-
-2020-05-29 Jakub Jelinek <jakub@redhat.com>
-
- PR libfortran/95390
- * gfortran.dg/findloc_8.f90: New test.
-
-2020-05-29 Marek Polacek <polacek@redhat.com>
-
- PR c++/95344
- * c-c++-common/Wparentheses-2.c: New test.
-
-2020-05-29 Jason Merrill <jason@redhat.com>
-
- PR c++/95311
- * g++.dg/ubsan/vptr-16.C: New test.
-
-2020-05-29 Patrick Palka <ppalka@redhat.com>
-
- PR c++/92652
- PR c++/93698
- PR c++/94128
- * g++.dg/cpp2a/concepts-lambda8.C: New test.
- * g++.dg/cpp2a/concepts-lambda9.C: New test.
- * g++.dg/cpp2a/concepts-lambda10.C: New test.
-
-2020-05-29 Patrick Palka <ppalka@redhat.com>
-
- PR c++/95241
- * g++.dg/cpp0x/constexpr-array25.C: New test.
-
-2020-05-29 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95272
- * gcc.dg/vect/pr95272.c: New testcase.
-
-2020-05-29 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95403
- * gfortran.dg/vect/pr95403.f: New testcase.
-
-2020-05-29 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/95315
- * gcc.dg/gomp/pr95315-2.c: New test.
-
-2020-05-29 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/95052
- * gcc.target/i386/pr95052.c: New test.
-
-2020-05-29 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95393
- * gcc.dg/tree-ssa/phi-opt-21.c: New testcase.
- * g++.dg/vect/slp-pr87105.cc: Adjust.
-
-2020-05-29 Joe Ramsay <joe.ramsay@arm.com>
-
- * gcc.target/aarch64/sve/load_const_offset_2.c: Force using packed
- vectors.
- * gcc.target/aarch64/sve/logical_unpacked_and_1.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_and_2.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_and_3.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_and_4.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_and_5.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_and_6.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_and_7.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_eor_1.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_eor_2.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_eor_3.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_eor_4.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_eor_5.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_eor_6.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_eor_7.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_orr_1.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_orr_2.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_orr_3.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_orr_4.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_orr_5.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_orr_6.c: New test.
- * gcc.target/aarch64/sve/logical_unpacked_orr_7.c: New test.
- * gcc.target/aarch64/sve/scatter_store_6.c: Force using packed vectors.
- * gcc.target/aarch64/sve/scatter_store_7.c: Force using packed vectors.
- * gcc.target/aarch64/sve/strided_load_3.c: Force using packed vectors.
- * gcc.target/aarch64/sve/strided_store_3.c: Force using packed vectors.
- * gcc.target/aarch64/sve/unpack_signed_1.c: Force using packed vectors.
-
-2020-05-28 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/95328
- * g++.dg/cpp1z/decomp53.C: New test.
-
-2020-05-28 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95373
- * gfortran.dg/pr95373_1.f90: New test.
- * gfortran.dg/pr95373_2.f90: New test.
-
-2020-05-28 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp1z/pr86648.C: Expect error.
- * g++.dg/cpp1z/static2.C: Expect error.
- * g++.dg/cpp0x/nsdmi16.C: New test.
-
-2020-05-28 Marek Polacek <polacek@redhat.com>
-
- * g++.dg/cpp0x/initlist-array12.C: Fix the definition of
- initializer_list for ilp32 target.
-
-2020-05-28 Marek Polacek <polacek@redhat.com>
-
- * g++.dg/ext/tmplattr10.C: Only run in c++11.
-
-2020-05-28 H.J. Lu <hjl.tools@gmail.com>
-
- * gcc.dg/builtin-bswap-10.c: Check "! int128" instead of ilp32
-
-2020-05-28 Steven G. Kargl <kargl@gcc.gnu.org>
- Mark Eggleston <markeggleston@gcc.gnu.org>
-
- PR fortran/94397
- * gfortran.dg/pr94397.F90: New test.
-
-2020-05-28 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/shrink_wrap_1.c: New test.
-
-2020-05-28 Richard Sandiford <richard.sandiford@arm.com>
-
- PR testsuite/95361
- * gcc.target/aarch64/sve/pr95361.c: New test.
-
-2020-05-28 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95273
- PR tree-optimization/95356
- * gcc.target/i386/pr95356.c: New testcase.
-
-2020-05-28 Richard Biener <rguenther@suse.de>
-
- PR testsuite/95363
- * gcc.dg/vect/bb-slp-pr95271.c: Fix on ilp32 targets.
-
-2020-05-28 Alexandre Oliva <oliva@adacore.com>
-
- * lib/gcc-defs.exp: Avoid introducing empty arguments between
- consecutive blanks in board linking options.
- * gcc.misc-tests/outputs.exp: Likewise. Document
- -gsplit-dwarf testing, skip LTO tests if -flto is not
- supported, detect the default linker output name, cope with
- the need for an explicit executable output.
-
-2020-05-27 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc.dg/builtin-bswap-10.c: New test.
- * gcc.dg/builtin-bswap-11.c: Likewise.
- * gcc.dg/builtin-bswap-12.c: Likewise.
- * gcc.target/i386/builtin-bswap-5.c: Likewise.
-
-2020-05-27 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95090
- * gfortran.dg/pr95090.f90: New test.
-
-2020-05-27 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/95355
- * gcc.target/i386/pr95355.c: New test.
-
-2020-05-27 David Malcolm <dmalcolm@redhat.com>
-
- PR jit/95314
- * jit.dg/all-non-failing-tests.h: Add test-pr95314-rvalue-reuse.c.
- * jit.dg/test-pr95314-rvalue-reuse.c: New test.
-
-2020-05-27 Jason Merrill <jason@redhat.com>
-
- PR c++/95319
- * g++.dg/cpp0x/initlist-array12.C: New test.
-
-2020-05-27 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/50392
- * gfortran.dg/pr50392.f: New test.
-
-2020-05-27 Uroš Bizjak <ubizjak@gmail.com>
-
- * gcc.target/i386/vperm-v2sf.c: New test.
-
-2020-05-27 Jason Merrill <jason@redhat.com>
-
- * g++.dg/cpp2a/spaceship-synth2.C: Add
- -Wzero-as-null-pointer-constant.
-
-2020-05-27 Jason Merrill <jason@redhat.com>
-
- PR c++/95222
- * g++.dg/ext/tmplattr10.C: New test.
-
-2020-05-27 Nathan Sidwell <nathan@acm.org>
-
- PR c++/95263
- * g++.dg/template/pr95263.C: New file.
-
-2020-05-27 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95295
- * gcc.dg/torture/pr95295-3.c: New testcase.
-
-2020-05-27 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95335
- * gcc.dg/vect/bb-slp-pr95335.c: New testcase.
-
-2020-05-27 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/95315
- * gcc.dg/gomp/pr95315.c: New test.
-
-2020-05-26 David Malcolm <dmalcolm@redhat.com>
-
- PR jit/95306
- * jit.dg/all-non-failing-tests.h: Add test-builtin-memcpy.c and
- test-pr95306-builtin-types.c.
- * jit.dg/test-builtin-memcpy.c: New test.
- * jit.dg/test-error-gcc_jit_context_get_builtin_function-unimplemented-type.c:
- New test.
- * jit.dg/test-pr95306-builtin-types.c: New test.
-
-2020-05-26 Harald Anlauf <anlauf@gmx.de>
- Steven G. Kargl <kargl@gcc.gnu.org>
-
- PR libfortran/95104
- * gfortran.dg/pr95104.f90: New test.
-
-2020-05-26 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95195
- * gfortran.dg/namelist_97.f90: New test.
-
-2020-05-26 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95089
- * gfortran.dg/pr95089.f90: New test.
-
-2020-05-26 David Malcolm <dmalcolm@redhat.com>
-
- PR jit/95296
- * jit.dg/test-error-gcc_jit_context_new_global-void-type.c: New
- test.
- * jit.dg/test-error-gcc_jit_function_new_local-void-type.c: New
- test.
- * jit.dg/test-fuzzer.c (fuzzer_init): Allow for make_random_type
- to return NULL.
- (get_random_type): Allow for elements in f->types to be NULL.
-
-2020-05-26 Uroš Bizjak <ubizjak@gmail.com>
-
- * gcc.target/i386/vperm-v2si.c: New test.
- * gcc.target/i386/vperm-v4hi.c: Ditto.
-
-2020-05-26 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C: Check for
- promise destruction via a global variable.
-
-2020-05-26 Alexandre Oliva <oliva@adacore.com>
-
- * gcc.misc-tests/outputs.exp: New.
- * gcc.misc-tests/outputs-0.c: New.
- * gcc.misc-tests/outputs-1.c: New.
- * gcc.misc-tests/outputs-2.c: New.
- * lib/gcc-defs.exp (gcc_adjusted_linker_flags): New.
- (gcc_adjust_linker_flags): New.
- (dg-additional-files-options): Call it. Pass -dumpbase ""
- when there are additional sources.
- * lib/profopt.exp (profopt-execute): Pass the executable
- suffix with -dumpbase-ext.
- * lib/scandump.exp (dump-base): Mention -dumpbase "" use.
- * lib/scanltranstree.exp: Adjust dump suffix expectation.
- * lib/scanwpaipa.exp: Likewise.
-
-2020-05-26 Hongtao Liu <hongtao.liu@intel.com>
- Uroš Bizjak <ubizjak@gmail.com>
-
- * gcc.target/i386/pr95211.c: New test.
-
-2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/opt84.adb: New test.
-
-2020-05-25 Uroš Bizjak <ubizjak@gmail.com>
-
- * gcc.target/i386/sse2-mmx-18a.c (dg-options): Remove -mno-avx512vl.
- * gcc.target/i386/sse2-mmx-19a.c (dg-options): Remove -mno-avx.
- * gcc.target/i386/sse2-mmx-18b.c: Remove.
- * gcc.target/i386/sse2-mmx-18c.c: Ditto.
- * gcc.target/i386/sse2-mmx-19b.c: Ditto.
- * gcc.target/i386/sse2-mmx-19c.c: Ditto.
- * gcc.target/i386/sse2-mmx-19d.c: Ditto.
- * gcc.target/i386/sse2-mmx-19e.c: Ditto.
-
-2020-05-25 Martin Jambor <mjambor@suse.cz>
-
- * brig.dg/test/gimple/packed.hsail: Fix scan dump patterns.
-
-2020-05-25 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95308
- * g++.dg/torture/pr95308.C: New testcase.
-
-2020-05-25 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95295
- * gcc.dg/torture/pr95295-1.c: New testcase.
- * gcc.dg/torture/pr95295-2.c: Likewise.
- * gcc.dg/torture/pr95283.c: Likewise.
-
-2020-05-25 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95271
- * gcc.dg/vect/bb-slp-pr95271.c: New testcase.
-
-2020-05-25 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95297
- * g++.dg/vect/pr95297.cc: New testcase.
- * g++.dg/vect/pr95290.cc: Likewise.
-
-2020-05-25 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95284
- * g++.dg/torture/pr95284.C: New testcase.
-
-2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/renaming16.adb: New test.
- * gnat.dg/renaming16_pkg.ads: New helper.
-
-2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/array40.adb: New test.
- * gnat.dg/array40_pkg.ads: New helper.
-
-2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/array39.adb: New test.
- * gnat.dg/array39_pkg.ads: New helper.
- * gnat.dg/array39_pkg.adb: Likewise.
-
-2020-05-25 Hongtao Liu <hongtao.liu@intel.com>
-
- * gcc.target/i386/pr95125-avx.c: New test.
- * gcc.target/i386/pr95125-avx512f.c: Ditto.
-
-2020-05-24 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95106
- * gfortran.dg/equiv_11.f90: New test.
-
-2020-05-23 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94038
- * g++.dg/warn/pr94038-3.C: New test.
-
-2020-05-22 Mark Wielaard <mark@klomp.org>
-
- * gcc.dg/spellcheck-stdint.c: New test.
- * g++.dg/spellcheck-stdint.C: Likewise.
-
-2020-05-22 Mark Wielaard <mark@klomp.org>
-
- * gcc.dg/spellcheck-stdbool.c: New test.
-
-2020-05-22 Mark Wielaard <mark@klomp.org>
-
- * gcc.dg/analyzer/signal-exit.c: New testcase.
-
-2020-05-22 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/95255
- * gcc.target/i386/pr95255.c: New test.
-
-2020-05-22 Hongtao.liu <hongtao.liu@intel.com>
-
- * gcc.target/i386/pr92658-avx512f.c: New test.
- * gcc.target/i386/pr92658-avx512vl.c: Ditto.
- * gcc.target/i386/pr92658-avx512bw-trunc.c: Ditto.
-
-2020-05-22 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95268
- * g++.dg/torture/pr95268.C: New testcase.
-
-2020-05-22 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95248
- * gcc.dg/torture/pr95248.c: New testcase.
-
-2020-05-21 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94038
- * g++.dg/warn/pr94038-2.C: New test.
-
-2020-05-21 Martin Liska <mliska@suse.cz>
-
- PR target/95229
- * g++.target/i386/pr95229.C: Fix
- error: unnamed type with no linkage used
- to declare variable ‘<unnamed class> e’ with linkage
- with -std=gnu++98.
-
-2020-05-21 Nathan Sidwell <nathan@acm.org>
-
- * c-c++-common/cpp/cmd-1.c: Delete.
- * c-c++-common/cpp/cmd-1.h: Delete.
-
-2020-05-21 Martin Liska <mliska@suse.cz>
-
- * gcc.target/aarch64/target_attr_20.c: New test.
- * gcc.target/aarch64/target_attr_21.c: New test.
-
-2020-05-20 Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * g++.dg/warn/Wconversion-null-2.C: Add explicit declarations for l()
- and g() with int, long, long long and __int20 arguments.
- * g++.dg/warn/Wconversion-null.C: Likewise.
-
-2020-05-20 Marek Polacek <polacek@redhat.com>
-
- DR 2237
- * g++.dg/DRs/dr2237.C: New test.
- * g++.dg/parse/constructor2.C: Add dg-error for C++20.
- * g++.dg/parse/dtor12.C: Likewise.
- * g++.dg/parse/dtor4.C: Likewise.
- * g++.dg/template/dtor4.C: Adjust dg-error.
- * g++.dg/template/error34.C: Likewise.
- * g++.old-deja/g++.other/inline15.C: Only run for C++17 and lesses.
- * g++.old-deja/g++.pt/ctor2.C: Add dg-error for C++20.
-
-2020-05-20 Marek Polacek <polacek@redhat.com>
-
- DR 2289
- PR c++/94553
- * g++.dg/cpp1z/decomp52.C: New test.
-
-2020-05-20 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/95229
- * g++.target/i386/pr95229.C: New test.
-
-2020-05-20 Mark Eggleston <markeggleston@gcc.gnu.org>
-
- PR fortran/39695
- * gfortran.dg/pr39695_1.f90: New test.
- * gfortran.dg/pr39695_2.f90: New test.
- * gfortran.dg/pr39695_3.f90: New test.
- * gfortran.dg/pr39695_4.f90: New test.
-
-2020-05-20 Patrick Palka <ppalka@redhat.com>
-
- PR c++/95223
- * g++.dg/template/typename23.C: New test.
-
-2020-05-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- PR target/94959
- * gcc.target/arm/mve/intrinsics/mve_vector_float2.c: Modify.
- * gcc.target/arm/mve/intrinsics/mve_vldr.c: New test.
- * gcc.target/arm/mve/intrinsics/mve_vldr_z.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vstr.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vstr_p.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_f16.c: Modify.
- * gcc.target/arm/mve/intrinsics/vld1q_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_z_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_z_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_z_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_float.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_int.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c: Likewise.
-
-2020-05-20 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95219
- * tree-vect-loop.c (vectorizable_induction): Reduce
- group_size before computing the number of required IVs.
-
-2020-05-20 Richard Biener <rguenther@suse.de>
-
- PR middle-end/95231
- * g++.dg/other/pr95231.C: New testcase.
-
-2020-05-30 Richard Biener <rguenther@suse.de>
-
- PR c/95141
- * gcc.dg/pr95141.c: New testcase.
-
-2020-05-19 Alex Coplan <alex.coplan@arm.com>
-
- PR target/94591
- * gcc.c-torture/execute/pr94591.c: New test.
-
-2020-05-19 Nathan Sidwell <nathan@acm.org>
-
- * c-c++-common/raw-string-14.c: Adjust errors.
- * c-c++-common/raw-string-16.c: Likewise.
- * c-c++-common/raw-string-5.c: Likewise.
-
-2020-05-19 Richard Biener <rguenther@suse.de>
-
- * gcc.target/i386/pr92645-4.c: Adjust expected pattern.
-
-2020-05-19 Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * c-c++-common/builtin-has-attribute-7.c: Require size24plus.
- * c-c++-common/cpp/pr63831-1.c: Store result in _has_cpp_attribute in a
- long.
- * c-c++-common/pr81376.c: Skip scan-tree-dump for short_eq_int. Extend
- test for short_eq_int.
- * g++.dg/abi/scoped1.C: Skip dg-warning tests for short_eq_int.
- * g++.dg/cpp0x/constexpr-70001-1.C: Require size24plus.
- * g++.dg/cpp0x/constexpr-bitfield3.C: Require int32plus.
- * g++.dg/cpp0x/enum13.C: Skip dg-warning for short_eq_int.
- * g++.dg/cpp0x/initlist5.C: Add dg-error for short_eq_int.
- * g++.dg/cpp0x/initlist7.C: Add dg-warning for !int32plus.
- * g++.dg/cpp0x/nullptr04.C: Skip dg-error for ptr_eq_short.
- * g++.dg/cpp0x/variadic-value1.C: Add typedef for int32_t.
- * g++.dg/cpp1y/constexpr-arith-overflow.C: Fix test for
- sizeof(int) == sizeof(short).
- * g++.dg/cpp1y/digit-sep-neg.C: Add typedef for int32_t.
- * g++.dg/cpp1y/pr57644.C: Add typedef for uint32_t.
- * g++.dg/cpp1y/pr77321.C: Require size24plus.
- * g++.dg/cpp1y/var-templ4.C: Add typedef for int32_t.
- * g++.dg/cpp1z/direct-enum-init1.C: Skip dg-error for short_eq_int.
- * g++.dg/delayedfold/fwrapv1.C: Skip for int16.
- * g++.dg/expr/bitfield9.C: Add typedef for int32_t.
- * g++.dg/ext/attribute-test-1.C: Add typedef for uint32_t.
- * g++.dg/ext/bitfield1.C: Add typedef for int32_t.
- * g++.dg/ext/flexary13.C: Add typedef for int32_t.
- * g++.dg/ext/utf-cvt.C: Adjust dg-warning for int16.
- * g++.dg/ext/vector28.C: Add typedef for int32_t.
- * g++.dg/ext/vla15.C: Add typedef for int32_t.
- * g++.dg/init/array11.C: Require size32plus.
- * g++.dg/init/array15.C: Require size24plus.
- * g++.dg/init/array4.C: Require size20plus.
- * g++.dg/init/const7.C: Skip dg-message for ptr_eq_short.
- * g++.dg/init/new38.C: Relax regex in dg-error.
- * g++.dg/init/new44.C: Skip dg-error for msp430_small.
- Adjust test for 16-bit size_t.
- Add special case for msp430 -mlarge.
- * g++.dg/init/value9.C: Add typedef for int32_t.
- * g++.dg/ipa/pr77333.C: Add typedef for int32_t.
- * g++.dg/lto/20080908-1_0.C: Add typedef for int32_t.
- * g++.dg/opt/pr55717.C: Add typedef for uint32_t.
- * g++.dg/opt/pr60597.C: Add typedef for int32_t.
- * g++.dg/opt/pr81715.C: Require size20plus.
- * g++.dg/opt/reload3.C: Add typedef for uint32_t.
- * g++.dg/opt/temp2.C: Require size20plus.
- * g++.dg/opt/thunk1.C: Likewise.
- * g++.dg/other/error23.C: Dont assume __SIZEOF_INT__ == 4.
- * g++.dg/other/pr31078.C: Adjust typedef for 32-bit int.
- * g++.dg/parse/concat1.C: Skip dg-error for size20plus.
- * g++.dg/parse/defarg5.C: Add typedef for int32_t and uint32_t.
- * g++.dg/pr48484.C: Add typedef for int32_t.
- * g++.dg/pr53037-2.C: Likewise.
- * g++.dg/pr53037-3.C: Likewise.
- * g++.dg/pr66655.C: Use int32_t.
- * g++.dg/pr66655.h: Add typedef for int32_t.
- * g++.dg/pr66655_1.cc: Use int32_t.
- * g++.dg/pr67351.C: Define 32-bit uint.
- * g++.dg/template/array30.C: Add typedef for int32_t.
- * g++.dg/template/constant1.C: Extend test for 8-bit and 16-bit int.
- * g++.dg/template/constant2.C: Likewise.
- * g++.dg/template/friend18.C: Add typedef for int32_t.
- * g++.dg/template/pr68978.C: Likewise.
- * g++.dg/torture/pr37421.C: Require int_eq_float.
- * g++.dg/torture/pr88861.C: Handle 16-bit int.
- * g++.dg/tree-ssa/pr19807.C: Likewise.
- * g++.dg/tree-ssa/pr27291.C: Fix typedef for uint32_t.
- * g++.dg/tree-ssa/pr49516.C: Fix typedefs for int{16,32}_t and
- uint{32,64}_t.
- * g++.dg/warn/Wconversion-integer.C: Add typedefs for {u,}int32_t.
- * g++.dg/warn/Wconversion-null-2.C: Adjust g() declaration.
- * g++.dg/warn/Wconversion-null.C: Likewise.
- * g++.dg/warn/Wconversion3.C: Skip dg-warning for short_eq_int.
- * g++.dg/warn/Wduplicated-branches1.C: Add dg-warning for short_eq_int.
- * g++.dg/warn/Wplacement-new-size-5.C: Add typedef for int32_t.
- * g++.dg/warn/Wplacement-new-size.C: Likewise.
- * g++.dg/warn/Wstrict-aliasing-5.C: Add typedef for uint32_t.
- * g++.dg/warn/Wstrict-aliasing-bogus-signed-unsigned.C: Add typedef for
- {u,}int32_t.
- * g++.dg/warn/Wtype-limits-Wextra.C: Adjust dg-warning for
- short_eq_int.
- * g++.dg/warn/Wtype-limits.C: Likewise.
- * g++.old-deja/g++.brendan/enum11.C: Add typedef for uint32_t.
- * g++.old-deja/g++.bugs/900227_01.C: Skip dg-error for ptr_eq_short.
- * g++.old-deja/g++.mike/ns15.C: Require size20plus.
- * g++.old-deja/g++.other/exprstmt1.C: Add typedef for uint32_t.
- * g++.old-deja/g++.other/inline12.C: Adjust udword typedef.
- * g++.old-deja/g++.other/new6.C: Add typedef for int32_t.
- * g++.old-deja/g++.pt/crash16.C: Skip for int16.
- * g++.old-deja/g++.robertl/eb76.C: Likewise.
- * g++.old-deja/g++.warn/flow1.C: Add typedef for int32_t.
- * gcc.dg/Walloca-14.c: Adjust -Walloca-larger-than= parameter for
- !ptr32plus.
- * gcc.dg/Warray-bounds-32.c: Adjust dg-warning for size20plus.
- * gcc.dg/Wbuiltin-declaration-mismatch-4.c: Adjust dg-warning for
- short_eq_int.
- Handle case where ptrdiff_t/size_t is __int20.
- * gcc.dg/concat2.c: Skip dg-error for size20plus.
- * gcc.dg/fold-convmaxconv-1.c: Add typedef for {u,}int32_t.
- * gcc.dg/fold-convminconv-1.c: Likewise.
- * gcc.dg/graphite/scop-4.c: Require size20plus.
- * gcc.dg/loop-versioning-1.c: Adjust test for small size_t.
- * gcc.dg/loop-versioning-2.c: Require size20plus.
- * gcc.dg/lto/20081210-1_0.c: Adjust typedef for uintptr_t.
- * gcc.dg/lto/pr85870_0.c: Add typedef for uint32_t.
- * gcc.dg/lto/pr85870_1.c: Likewise.
- * gcc.dg/pr36227.c: Adjust typedef for ptrcast.
- * gcc.dg/pr42611.c: First check for size_t equality with void *
- before trying other types.
- * gcc.dg/pr59963-2.c: Skip dg-warning for int16 instead of
- xfail.
- * gcc.dg/pr68317.c: Add typedef for int32_t.
- * gcc.dg/pr78973.c: Adjust dg-warning for int16.
- * gcc.dg/pr85859.c: Cast using __INTPTR_TYPE__ instead of long.
- * gcc.dg/pr86179.c: Add typedef for {u,}int32_t.
- * gcc.dg/torture/20181024-1.c: Require size32plus.
- * gcc.dg/torture/pr71598-2.c: Skip for short_eq_int.
- * gcc.dg/torture/pr86034.c: Add typedef for int32_t.
- * gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Adjust dg-warning
- for int16 and msp430 -mlarge.
- * gcc.dg/tree-ssa/integer-addr.c: Use __INTPTR_MAX__ for a large
- constant that is a valid address.
- * gcc.dg/tree-ssa/loop-interchange-10.c: Add typedef for
- int32_t.
- * gcc.dg/tree-ssa/pr84436-3.c: Adjust dg-final for int16.
- * gcc.dg/tree-ssa/pr84648.c: Add typedef for uint32_t.
- * gcc.dg/tree-ssa/scev-8.c: Cast to char if sizeof(int) ==
- sizeof(short).
- * gcc.dg/tree-ssa/ssa-dom-thread-8.c: Adjust test for msp430 -mlarge.
- * lib/target-supports.exp (check_effective_target_size24plus): New.
- (check_effective_target_short_eq_int): New.
- (check_effective_target_ptr_eq_short): New.
- (check_effective_target_msp430_small): New.
- (check_effective_target_msp430_large): New.
-
-2020-05-19 Jose E. Marchesi <jose.marchesi@oracle.com>
-
- * gcc.target/bpf/xbpf-callee-saved-regs-1.c: New test.
- * gcc.target/bpf/xbpf-callee-saved-regs-2.c: Likewise.
-
-2020-05-19 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/92658
- * gcc.target/i386/pr92658-sse4.c: New test.
- * gcc.target/i386/pr92658-avx2.c: New test.
- * gcc.target/i386/pr92658-avx512bw.c: New test.
-
-2020-05-19 Kito Cheng <kito.cheng@sifive.com>
-
- * gcc.target/riscv/arch-6.c: New.
- * gcc.target/riscv/attribute-11.c: New.
- * gcc.target/riscv/attribute-12.c: New.
-
-2020-05-19 Kito Cheng <kito.cheng@sifive.com>
-
- * gcc.target/riscv/arch-3.c: Adjust option.
- * gcc.target/riscv/arch-5.c: New.
- * gcc.target/riscv/attribute-9.c: Adjust option and test
- condition.
-
-2020-05-19 Patrick Palka <ppalka@redhat.com>
-
- PR c++/66439
- * g++.dg/cpp2a/concepts-ts4.C: Expect a "type/value mismatch"
- diagnostic.
- * g++.dg/cpp2a/concepts-ts6.C: Likewise.
- * g++.dg/template/error56.C: Likewise.
- * g++.dg/template/error59.C: New test.
-
-2020-05-18 Marek Polacek <polacek@redhat.com>
-
- PR c++/94955
- * g++.dg/cpp0x/constexpr-shift2.C: New test.
-
-2020-05-18 Marek Polacek <polacek@redhat.com>
-
- PR c++/94937
- * g++.dg/cpp1z/constexpr-if34.C: New test.
- * g++.dg/cpp2a/is-constant-evaluated10.C: New test.
-
-2020-05-18 Martin Sebor <msebor@redhat.com>
-
- PR c++/94923
- * g++.dg/Wclass-memaccess.C: Add tests for std::byte.
-
-2020-05-18 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/92815
- * gcc.dg/builtin-object-size-20.c: Adjust to avoid failures in
- ILP32 mode.
-
-2020-05-18 Marek Polacek <polacek@redhat.com>
-
- PR c++/90915
- * g++.dg/ext/builtin-has-attribute.C: New test.
-
-2020-05-18 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/92815
- * gcc.dg/Warray-bounds-56.c: Remove xfails.
- * gcc.dg/builtin-object-size-20.c: New test.
- * gcc.dg/builtin-object-size-21.c: New test.
-
-2020-05-18 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/94940
- * gcc.dg/Warray-bounds-61.c: New test.
-
-2020-05-18 Marek Polacek <polacek@redhat.com>
-
- DR 1512
- PR c++/87699
- * g++.dg/cpp0x/constexpr-array-ptr10.C: Change dg-warning to dg-error
- and adjust the expected messages in dg-error.
- * g++.dg/expr/composite-ptr-type.C: New test.
- * g++.dg/expr/ptr-comp1.C: New test.
- * g++.dg/expr/ptr-comp2.C: New test.
- * g++.dg/expr/ptr-comp3.C: New test.
- * g++.dg/overload/builtin4.C: New test.
- * g++.dg/warn/Wextra-3.C: Change dg-warning to dg-error.
-
-2020-05-18 Marek Polacek <polacek@redhat.com>
-
- * g++.dg/overload/builtin5.C: New test.
-
-2020-05-18 Doug Rupp <rupp@adacore.com>
-
- * gcc.target/powerpc/pr71763.c: Require powerpc_vsx_ok.
-
-2020-05-18 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95053
- * gfortran.dg/dec_structure_23.f90: Adjust to new error messages.
- * gfortran.dg/pr93499.f90: Adjust to new error messages.
- * gfortran.dg/pr95053_2.f90: New test.
- * gfortran.dg/pr95053_3.f90: New test.
-
-2020-05-18 Marek Polacek <polacek@redhat.com>
-
- PR c++/95143
- * g++.dg/cpp0x/sfinae66.C: New test.
-
-2020-05-18 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/95169
- * gcc.target/i386/pr95169.c: New test.
-
-2020-05-18 Alex Coplan <alex.coplan@arm.com>
-
- * gcc.c-torture/compile/packed-aligned-1.c: New test.
- * gcc.c-torture/execute/packed-aligned.c: New test.
-
-2020-05-18 Richard Biener <rguenther@suse.de>
-
- PR middle-end/95171
- * gcc.dg/pr95171.c: New testcase.
-
-2020-05-18 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95172
- * gcc.dg/torture/pr95172.c: New testcase.
-
-2020-05-17 H.J. Lu <hongjiu.lu@intel.com>
-
- PR target/95021
- * c-c++-common/dfp/func-vararg-mixed-2.c: Removed.
- * gcc.target/i386/pr95021-1.c: New test.
- * gcc.target/i386/pr95021-2.c: Likewise.
- * gcc.target/i386/pr95021-3.c: Likewise.
- * gcc.target/i386/pr95021-4.c: Likewise.
- * gcc.target/i386/pr95021-5.c: Likewise.
-
-2020-05-17 H.J. Lu <hongjiu.lu@intel.com>
-
- * gcc.target/i386/strncmp-1.c: New test.
-
-2020-05-16 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/co-return-syntax-10-movable.C: New test.
-
-2020-05-16 Patrick Palka <ppalka@redhat.com>
-
- PR c++/57943
- * g++.dg/cpp0x/decltype76.C: New test.
-
-2020-05-15 Jason Merrill <jason@redhat.com>
-
- * g++.dg/coroutines/coro.h: Always #include <utility>.
- * g++.dg/coroutines/coroutines.exp (DEFAULT_COROFLAGS): Use
- -std=c++20.
-
-2020-05-15 Segher Boessenkool <segher@kernel.crashing.org>
-
- * gcc.target/powerpc/vec-gnb-0.c: Use int128 effective target.
- * gcc.target/powerpc/vec-gnb-1.c: Ditto.
- * gcc.target/powerpc/vec-gnb-2.c: Ditto.
- * gcc.target/powerpc/vec-ternarylogic-8.c: Ditto.
- * gcc.target/powerpc/vec-ternarylogic-9.c: Ditto.
- * gcc.target/powerpc/vec-ternarylogic-10.c: Ditto.
-
-2020-05-15 Segher Boessenkool <segher@kernel.crashing.org>
-
- * gcc.target/powerpc/cnttzdm-0.c: Use lp64.
-
-2020-05-15 Segher Boessenkool <segher@kernel.crashing.org>
-
- * gcc.target/powerpc/cntlzdm-0.c: Use lp64 instead of powerpc64.
- * gcc.target/powerpc/cntlzdm-1.c: Ditto.
- * gcc.target/powerpc/cnttzdm-1.c: Ditto.
- * gcc.target/powerpc/pdep-0.c: Ditto.
- * gcc.target/powerpc/pdep-1.c: Ditto.
- * gcc.target/powerpc/pextd-0.c: Ditto.
- * gcc.target/powerpc/pextd-1.c: Ditto.
-
-2020-05-15 Segher Boessenkool <segher@kernel.crashing.org>
-
- * gcc.target/powerpc/pdep-0.c: Change -mcpu= to -mdejagnu-cpu=.
- * gcc.target/powerpc/pdep-1.c: Ditto.
- * gcc.target/powerpc/pextd-0.c: Ditto.
- * gcc.target/powerpc/pextd-1.c: Ditto.
- * gcc.target/powerpc/pr90763.c: Ditto.
- * gcc.target/powerpc/pr91275.c: Ditto.
- * gcc.target/powerpc/pr92796.c: Ditto.
- * gcc.target/powerpc/pr93658.c: Ditto.
- * gcc.target/powerpc/pr93800.c: Ditto.
- * gcc.target/powerpc/setbceq.c: Ditto.
- * gcc.target/powerpc/setbcge.c: Ditto.
- * gcc.target/powerpc/setbcgt.c: Ditto.
- * gcc.target/powerpc/setbcle.c: Ditto.
- * gcc.target/powerpc/setbclt.c: Ditto.
- * gcc.target/powerpc/setbcne.c: Ditto.
- * gcc.target/powerpc/setnbceq.c: Ditto.
- * gcc.target/powerpc/setnbcge.c: Ditto.
- * gcc.target/powerpc/setnbcgt.c: Ditto.
- * gcc.target/powerpc/setnbcle.c: Ditto.
- * gcc.target/powerpc/setnbclt.c: Ditto.
- * gcc.target/powerpc/setnbcne.c: Ditto.
- * gcc.target/powerpc/xxgenpc-runnable.c: Ditto.
-
-2020-05-15 Patrick Palka <ppalka@redhat.com>
-
- PR c++/90996
- * g++.dg/cpp1y/pr90996.C: Turn into execution test to verify that each
- PLACEHOLDER_EXPR gets correctly resolved.
-
-2020-05-15 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/94690
- * gfortran.dg/gomp/openmp-simd-4.f90: New test.
-
-2020-05-15 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95133
- * gcc.dg/pr95133.c: New testcase.
-
-2020-05-15 Tobias Burnus <tobias@codesourcery.com>
-
- PR middle-end/94635
- * gfortran.dg/gomp/target-exit-data.f90: New.
-
-2020-05-15 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/95046
- * gcc.target/i386/pr95046-8.c: New test.
-
-2020-05-15 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/33315
- * gcc.dg/tree-ssa/ssa-sink-13.c: New testcase.
- * gcc.dg/tree-ssa/ssa-sink-14.c: Likewise.
- * gcc.dg/tree-ssa/split-path-7.c: Disable sinking.
-
-2020-05-14 Xiong Hu Luo <luoxhu@linux.ibm.com>
-
- PR rtl-optimization/37451, part of PR target/61837
- * gcc.target/powerpc/doloop-2.c: New test.
-
-2020-05-14 H.J. Lu <hongjiu.lu@intel.com>
-
- PR jit/94778
- * jit.dg/jit.exp: Skip jit tests for targets that don't support
- -lgccjit.
- * lib/target-supports.exp (check_effective_target_lgccjit): New.
-
-2020-05-14 Andrew Stubbs <ams@codesourcery.com>
-
- * testsuite/gcc.target/gcn/gcn.exp: New file.
- * testsuite/gcc.target/gcn/vcc-clobber.c: New file.
-
-2020-05-14 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/95046
- * gcc.target/i386/pr95046-7.c: New test.
-
-2020-05-14 Patrick Palka <ppalka@redhat.com>
-
- PR c++/78446
- * g++.dg/template/sfinae31.C: New test.
-
-2020-05-14 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/95046
- * gcc.target/i386/pr95046-6.c: New test.
-
-2020-05-14 Richard Sandiford <richard.sandiford@arm.com>
-
- PR target/95105
- * gcc.target/aarch64/sve/acle/general/attributes_8.c: New test.
- * g++.target/aarch64/sve/acle/general-c++/attributes_1.C: Likewise.
-
-2020-05-14 Richard Biener <rguenther@suse.de>
-
- PR testsuite/94703
- * gcc.dg/tree-ssa/pr94703.c: Skip for strict-align targets.
-
-2020-05-14 Richard Biener <rguenther@suse.de>
-
- PR middle-end/95118
- * gcc.dg/pr95118.c: New testcase.
-
-2020-05-14 Jakub Jelinek <jakub@redhat.com>
-
- * c-c++-common/gomp/declare-variant-14.c: New test.
-
- PR middle-end/95108
- * gcc.dg/gomp/pr95108.c: New test.
-
-2020-05-14 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/95046
- * gcc.target/i386/pr95046-5.c: New test.
-
-2020-05-14 Andreas Krebbel <krebbel@linux.ibm.com>
-
- * gcc.target/s390/stack-clash-2.c: New test.
-
-2020-05-14 Andreas Krebbel <krebbel@linux.ibm.com>
-
- * gcc.target/s390/stack-clash-1.c: New test.
-
-2020-05-14 Andreas Krebbel <krebbel@linux.ibm.com>
-
- * gcc.target/s390/stack-clash-3.c: New test.
-
-2020-05-13 Kelvin Nilsen <kelvin@gcc.gnu.org>
-
- * gcc.target/powerpc/vec-extracth-0.c: New.
- * gcc.target/powerpc/vec-extracth-1.c: New.
- * gcc.target/powerpc/vec-extracth-2.c: New.
- * gcc.target/powerpc/vec-extracth-3.c: New.
- * gcc.target/powerpc/vec-extracth-4.c: New.
- * gcc.target/powerpc/vec-extracth-5.c: New.
- * gcc.target/powerpc/vec-extracth-6.c: New.
- * gcc.target/powerpc/vec-extracth-7.c: New.
- * gcc.target/powerpc/vec-extracth-be-0.c: New.
- * gcc.target/powerpc/vec-extracth-be-1.c: New.
- * gcc.target/powerpc/vec-extracth-be-2.c: New.
- * gcc.target/powerpc/vec-extracth-be-3.c: New.
- * gcc.target/powerpc/vec-extractl-0.c: New.
- * gcc.target/powerpc/vec-extractl-1.c: New.
- * gcc.target/powerpc/vec-extractl-2.c: New.
- * gcc.target/powerpc/vec-extractl-3.c: New.
- * gcc.target/powerpc/vec-extractl-4.c: New.
- * gcc.target/powerpc/vec-extractl-5.c: New.
- * gcc.target/powerpc/vec-extractl-6.c: New.
- * gcc.target/powerpc/vec-extractl-7.c: New.
- * gcc.target/powerpc/vec-extractl-be-0.c: New.
- * gcc.target/powerpc/vec-extractl-be-1.c: New.
- * gcc.target/powerpc/vec-extractl-be-2.c: New.
- * gcc.target/powerpc/vec-extractl-be-3.c: New.
-
-2020-05-13 Patrick Palka <ppalka@redhat.com>
-
- PR c++/79706
- * g++.dg/template/sfinae30.C: New test.
-
-2020-05-13 Patrick Palka <ppalka@redhat.com>
-
- PR c++/95020
- * g++.dg/cpp2a/concepts-lambda7.C: New test.
-
-2020-05-13 Marek Polacek <polacek@redhat.com>
-
- PR c++/95066
- * g++.dg/cpp2a/explicit16.C: New test.
-
-2020-05-13 Jason Merrill <jason@redhat.com>
-
- * lib/target-supports.exp (check_effective_target_c++20_only)
- (check_effective_target_c++20): New.
-
-2020-05-13 Jakub Jelinek <jakub@redhat.com>
-
- PR testsuite/95110
- * gcc.dg/tree-ssa/pr94969.c: Swap scan-tree-dump-not arguments.
-
-2020-05-13 Marek Polacek <polacek@redhat.com>
-
- * g++.dg/parse/attr4.C: Use c++11 in a target selector.
-
-2020-05-13 Mark Eggleston <markeggleston@gcc.gnu.org>
-
- PR fortran/93497
- * gfortran.dg/pr88025.f90: Change in wording of error.
- * gfortran.dg/pr93497.f90: New test.
- * gfortran.dg/pr93714_1.f90: Change in wording of errors.
- * gfortran.dg/pr93714_2.f90: Change in wording of errors.
-
-2020-05-13 Patrick Palka <ppalka@redhat.com>
-
- PR c++/70642
- * g++.dg/cpp0x/alias-decl-70.C: New test.
-
-2020-05-13 Jakub Jelinek <jakub@redhat.com>
-
- PR debug/95080
- * g++.dg/opt/pr95080.C: New test.
-
- PR tree-optimization/95060
- * gcc.target/i386/avx512f-pr95060.c: New test.
- * gcc.target/i386/fma_double_1.c: Adjust expected insn counts.
- * gcc.target/i386/fma_double_2.c: Likewise.
- * gcc.target/i386/fma_double_3.c: Likewise.
- * gcc.target/i386/fma_double_4.c: Likewise.
- * gcc.target/i386/fma_double_5.c: Likewise.
- * gcc.target/i386/fma_double_6.c: Likewise.
- * gcc.target/i386/fma_float_1.c: Likewise.
- * gcc.target/i386/fma_float_2.c: Likewise.
- * gcc.target/i386/fma_float_3.c: Likewise.
- * gcc.target/i386/fma_float_4.c: Likewise.
- * gcc.target/i386/fma_float_5.c: Likewise.
- * gcc.target/i386/fma_float_6.c: Likewise.
- * gcc.target/i386/l_fma_double_1.c: Likewise.
- * gcc.target/i386/l_fma_double_2.c: Likewise.
- * gcc.target/i386/l_fma_double_3.c: Likewise.
- * gcc.target/i386/l_fma_double_4.c: Likewise.
- * gcc.target/i386/l_fma_double_5.c: Likewise.
- * gcc.target/i386/l_fma_double_6.c: Likewise.
- * gcc.target/i386/l_fma_float_1.c: Likewise.
- * gcc.target/i386/l_fma_float_2.c: Likewise.
- * gcc.target/i386/l_fma_float_3.c: Likewise.
- * gcc.target/i386/l_fma_float_4.c: Likewise.
- * gcc.target/i386/l_fma_float_5.c: Likewise.
- * gcc.target/i386/l_fma_float_6.c: Likewise.
-
-2020-05-13 Martin Liska <mliska@suse.cz>
-
- PR sanitizer/95051
- * gcc.dg/asan/pr95051.c: Simplify options as -fsanitize=address
- and -O2 were enough to trigger the original ICE.
-
-2020-05-13 Christophe Lyon <christophe.lyon@linaro.org>
-
- PR preprocessor/95013
- * gcc.dg/unclosed-init.c: Add missing comment in dg-error.
-
-2020-05-13 Bin Cheng <bin.cheng@linux.alibaba.com>
-
- PR tree-optimization/94969
- * gcc.dg/tree-ssa/pr94969.c: New test.
-
-2020-05-12 Craig Blackmore <craig.blackmore@embecosm.com>
-
- * gcc.target/riscv/shorten-memrefs-1.c: New test.
- * gcc.target/riscv/shorten-memrefs-2.c: New test.
- * gcc.target/riscv/shorten-memrefs-3.c: New test.
- * gcc.target/riscv/shorten-memrefs-4.c: New test.
- * gcc.target/riscv/shorten-memrefs-5.c: New test.
- * gcc.target/riscv/shorten-memrefs-6.c: New test.
- * gcc.target/riscv/shorten-memrefs-7.c: New test.
-
-2020-05-12 Nathan Sidwell <nathan@acm.org>
-
- PR preprocessor/95013
- * c-c++-common/goacc/pr79428-1.c: Adjust EOF diagnostic location.
- * c-c++-common/gomp/pr79428-2.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/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.
- * gcc.dg/empty-source-2.c: Likewise.
- * gcc.dg/empty-source-3.c: Likewise.
- * gcc.dg/noncompile/pr30552-3.c: Likewise.
- * gcc.dg/noncompile/pr35447-1.c: Likewise.
- * gcc.dg/pr20245-1.c: Likewise.
- * gcc.dg/pr28419.c: Likewise.
- * gcc.dg/rtl/truncated-rtl-file.c: Likewise.
- * gcc.dg/unclosed-init.c: Likewise.
- * obj-c++.dg/property/property-neg-6.mm: Likewise.
- * obj-c++.dg/syntax-error-10.mm: Likewise.
- * obj-c++.dg/syntax-error-8.mm: Likewise.
- * obj-c++.dg/syntax-error-9.mm: Likewise.
-
-2020-05-12 Marek Polacek <polacek@redhat.com>
-
- PR c++/95074
- * g++.dg/lookup/koenig15.C: New test.
-
-2020-05-12 Jakub Jelinek <jakub@redhat.com>
-
- PR sanitizer/95051
- * gcc.dg/asan/pr95051.c: Add -fno-sanitize=all to dg-options.
-
-2020-05-12 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/95046
- * gcc.target/i386/pr95046-4.c: New test.
-
-2020-05-12 Patrick Palka <ppalka@redhat.com>
-
- PR c++/78752
- * g++.dg/cpp2a/concepts-pr78752-2.C: New test.
-
-2020-05-12 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/95046
- * gcc.target/i386/pr95046-3.c: New test.
-
-2020-05-12 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/95046
- * gcc.target/i386/pr95046-2.c: New test.
-
-2020-05-12 Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * gcc.c-torture/execute/noinit-attribute.c: Skip for msp430
- in the large memory model.
-
-2020-05-12 Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * gcc.target/msp430/region-attribute-misuse.c: Allow a .bss section to
- be created.
-
-2020-05-12 Martin Liska <mliska@suse.cz>
-
- PR sanitizer/95033
- PR sanitizer/95051
- * g++.dg/asan/function-argument-4.C: New test.
- * gcc.dg/asan/pr95033.c: New test.
- * gcc.dg/asan/pr95051.c: New test.
-
-2020-05-12 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/95063
- * g++.dg/gomp/pr95063.C: New test.
-
-2020-05-12 Richard Sandiford <richard.sandiford@arm.com>
-
- PR tree-optimization/94980
- * gcc.target/i386/pr94980.c: New test.
-
-2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
-
- * gcc.target/powerpc/vec-clzm-0.c: Rename to...
- * gcc.target/powerpc/vec-cntlzm-0.c: ...this.
- * gcc.target/powerpc/vec-clzm-1.c: Rename to...
- * gcc.target/powerpc/vec-cntlzm-1.c: ...this.
- * gcc.target/powerpc/vec-ctzm-0.c: Rename to...
- * gcc.target/powerpc/vec-cnttzm-0.c: ...this.
- * gcc.target/powerpc/vec-ctzm-1.c: Rename to...
- * gcc.target/powerpc/vec-cnttzm-1.c: ...this.
- * gcc.target/powerpc/vec-gnb-8.c: Rename to...
- * gcc.target/powerpc/vec-gnb-0.c: ...this, deleting the old file.
- * gcc.target/powerpc/vec-gnb-9.c: Rename to...
- * gcc.target/powerpc/vec-gnb-1.c: ...this, deleting the old file.
- * gcc.target/powerpc/vec-gnb-10.c: Rename to...
- * gcc.target/powerpc/vec-gnb-2.c: ...this, deleting the old file.
- * gcc.target/powerpc/vec-gnb-3.c: Delete.
- * gcc.target/powerpc/vec-gnb-4.c: Delete.
- * gcc.target/powerpc/vec-gnb-5.c: Delete.
- * gcc.target/powerpc/vec-gnb-6.c: Delete.
- * gcc.target/powerpc/vec-gnb-7.c: Delete.
-
-2020-05-11 Carl Love <cel@us.ibm.com>
-
- * gcc.target/powerpc/xxgenpc-runnable.c: New.
-
-2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
-
- * gcc.target/powerpc/vec-stril-0.c: New.
- * gcc.target/powerpc/vec-stril-1.c: New.
- * gcc.target/powerpc/vec-stril-10.c: New.
- * gcc.target/powerpc/vec-stril-11.c: New.
- * gcc.target/powerpc/vec-stril-12.c: New.
- * gcc.target/powerpc/vec-stril-13.c: New.
- * gcc.target/powerpc/vec-stril-14.c: New.
- * gcc.target/powerpc/vec-stril-15.c: New.
- * gcc.target/powerpc/vec-stril-16.c: New.
- * gcc.target/powerpc/vec-stril-17.c: New.
- * gcc.target/powerpc/vec-stril-18.c: New.
- * gcc.target/powerpc/vec-stril-19.c: New.
- * gcc.target/powerpc/vec-stril-2.c: New.
- * gcc.target/powerpc/vec-stril-20.c: New.
- * gcc.target/powerpc/vec-stril-21.c: New.
- * gcc.target/powerpc/vec-stril-22.c: New.
- * gcc.target/powerpc/vec-stril-23.c: New.
- * gcc.target/powerpc/vec-stril-3.c: New.
- * gcc.target/powerpc/vec-stril-4.c: New.
- * gcc.target/powerpc/vec-stril-5.c: New.
- * gcc.target/powerpc/vec-stril-6.c: New.
- * gcc.target/powerpc/vec-stril-7.c: New.
- * gcc.target/powerpc/vec-stril-8.c: New.
- * gcc.target/powerpc/vec-stril-9.c: New.
- * gcc.target/powerpc/vec-stril_p-0.c: New.
- * gcc.target/powerpc/vec-stril_p-1.c: New.
- * gcc.target/powerpc/vec-stril_p-10.c: New.
- * gcc.target/powerpc/vec-stril_p-11.c: New.
- * gcc.target/powerpc/vec-stril_p-2.c: New.
- * gcc.target/powerpc/vec-stril_p-3.c: New.
- * gcc.target/powerpc/vec-stril_p-4.c: New.
- * gcc.target/powerpc/vec-stril_p-5.c: New.
- * gcc.target/powerpc/vec-stril_p-6.c: New.
- * gcc.target/powerpc/vec-stril_p-7.c: New.
- * gcc.target/powerpc/vec-stril_p-8.c: New.
- * gcc.target/powerpc/vec-stril_p-9.c: New.
- * gcc.target/powerpc/vec-strir-0.c: New.
- * gcc.target/powerpc/vec-strir-1.c: New.
- * gcc.target/powerpc/vec-strir-10.c: New.
- * gcc.target/powerpc/vec-strir-11.c: New.
- * gcc.target/powerpc/vec-strir-12.c: New.
- * gcc.target/powerpc/vec-strir-13.c: New.
- * gcc.target/powerpc/vec-strir-14.c: New.
- * gcc.target/powerpc/vec-strir-15.c: New.
- * gcc.target/powerpc/vec-strir-16.c: New.
- * gcc.target/powerpc/vec-strir-17.c: New.
- * gcc.target/powerpc/vec-strir-18.c: New.
- * gcc.target/powerpc/vec-strir-19.c: New.
- * gcc.target/powerpc/vec-strir-2.c: New.
- * gcc.target/powerpc/vec-strir-20.c: New.
- * gcc.target/powerpc/vec-strir-21.c: New.
- * gcc.target/powerpc/vec-strir-22.c: New.
- * gcc.target/powerpc/vec-strir-23.c: New.
- * gcc.target/powerpc/vec-strir-3.c: New.
- * gcc.target/powerpc/vec-strir-4.c: New.
- * gcc.target/powerpc/vec-strir-5.c: New.
- * gcc.target/powerpc/vec-strir-6.c: New.
- * gcc.target/powerpc/vec-strir-7.c: New.
- * gcc.target/powerpc/vec-strir-8.c: New.
- * gcc.target/powerpc/vec-strir-9.c: New.
- * gcc.target/powerpc/vec-strir_p-0.c: New.
- * gcc.target/powerpc/vec-strir_p-1.c: New.
- * gcc.target/powerpc/vec-strir_p-10.c: New.
- * gcc.target/powerpc/vec-strir_p-11.c: New.
- * gcc.target/powerpc/vec-strir_p-2.c: New.
- * gcc.target/powerpc/vec-strir_p-3.c: New.
- * gcc.target/powerpc/vec-strir_p-4.c: New.
- * gcc.target/powerpc/vec-strir_p-5.c: New.
- * gcc.target/powerpc/vec-strir_p-6.c: New.
- * gcc.target/powerpc/vec-strir_p-7.c: New.
- * gcc.target/powerpc/vec-strir_p-8.c: New.
- * gcc.target/powerpc/vec-strir_p-9.c: New.
-
-2020-05-11 Kelvin Nilsen <wschmidt@linux.ibm.com>
-
- * gcc.target/powerpc/vec-ternarylogic-0.c: New.
- * gcc.target/powerpc/vec-ternarylogic-1.c: New.
- * gcc.target/powerpc/vec-ternarylogic-10.c: New.
- * gcc.target/powerpc/vec-ternarylogic-2.c: New.
- * gcc.target/powerpc/vec-ternarylogic-3.c: New.
- * gcc.target/powerpc/vec-ternarylogic-4.c: New.
- * gcc.target/powerpc/vec-ternarylogic-5.c: New.
- * gcc.target/powerpc/vec-ternarylogic-6.c: New.
- * gcc.target/powerpc/vec-ternarylogic-7.c: New.
- * gcc.target/powerpc/vec-ternarylogic-8.c: New.
- * gcc.target/powerpc/vec-ternarylogic-9.c: New.
-
-2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
-
- * gcc.target/powerpc/pdep-0.c: New.
- * gcc.target/powerpc/pdep-1.c: New.
- * gcc.target/powerpc/pextd-0.c: New.
- * gcc.target/powerpc/pextd-1.c: New.
-
-2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
-
- * gcc.target/powerpc/vec-clrl-0.c: New.
- * gcc.target/powerpc/vec-clrl-1.c: New.
- * gcc.target/powerpc/vec-clrr-0.c: New.
- * gcc.target/powerpc/vec-clrr-1.c: New.
-
-2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
-
- * gcc.target/powerpc/cntlzdm-0.c: New test.
- * gcc.target/powerpc/cntlzdm-1.c: New test.
- * gcc.target/powerpc/cnttzdm-0.c: New test.
- * gcc.target/powerpc/cnttzdm-1.c: New test.
-
-2020-05-11 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/95053
- * gfortran.dg/pr95053.f: New test.
-
-2020-05-11 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/95046
- * gcc.target/i386/pr95046-1.c (test_sqrt): Add.
-
-2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
-
- * gcc.target/powerpc/vec-cfuged-0.c: New test.
- * gcc.target/powerpc/vec-cfuged-1.c: New test.
-
-2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
-
- * gcc.target.powerpc/cfuged-0.c: New test.
- * gcc.target.powerpc/cfuged-1.c: New test.
-
-2020-05-11 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/95049
- * gcc.dg/torture/pr95049.c: New testcase.
-
-2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
- Bill Schmidt <wschmidt@linux.ibm.com>
-
- * gcc.target/powerpc/vec-gnb-0.c: New test.
- * gcc.target/powerpc/vec-gnb-1.c: New test.
- * gcc.target/powerpc/vec-gnb-10.c: New test.
- * gcc.target/powerpc/vec-gnb-2.c: New test.
- * gcc.target/powerpc/vec-gnb-3.c: New test.
- * gcc.target/powerpc/vec-gnb-4.c: New test.
- * gcc.target/powerpc/vec-gnb-5.c: New test.
- * gcc.target/powerpc/vec-gnb-6.c: New test.
- * gcc.target/powerpc/vec-gnb-7.c: New test.
- * gcc.target/powerpc/vec-gnb-8.c: New test.
- * gcc.target/powerpc/vec-gnb-9.c: New test.
-
-2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
-
- * gcc.target/powerpc/vec-pdep-0.c: New.
- * gcc.target/powerpc/vec-pdep-1.c: New.
- * gcc.target/powerpc/vec-pext-0.c: New.
- * gcc.target/powerpc/vec-pext-1.c: New.
-
-2020-05-11 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/94988
- PR tree-optimization/95025
- * gcc.dg/torture/pr94988.c: New testcase.
- * gcc.dg/torture/pr95025.c: Likewise.
- * gcc.dg/torture/pr95045.c: Likewise.
- * g++.dg/asan/pr95025.C: New testcase.
-
-2020-05-11 Jakub Jelinek <jakub@redhat.com>
- Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/94672
- * gfortran.dg/gomp/pr94672.f90: New.
- * gfortran.dg/missing_optional_dummy_6a.f90: Update scan-tree.
-
-2020-05-11 Felix Yang <felix.yang@huawei.com>
-
- PR target/94991
- * gcc.target/aarch64/mgeneral-regs_5.c: New test.
-
-2020-05-11 Alex Coplan <alex.coplan@arm.com>
-
- * gcc.target/aarch64/csinv-neg.c: New test.
-
-2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
-
- * gcc.target/powerpc/vec-clzm-0.c: New test.
- * gcc.target/powerpc/vec-clzm-1.c: New test.
- * gcc.target/powerpc/vec-ctzm-0.c: New test.
- * gcc.target/powerpc/vec-ctzm-1.c: New test.
-
-2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
-
- * gcc.target/powerpc/dg-future-0.c: New.
- * gcc.target/powerpc/dg-future-1.c: New.
- * lib/target-supports.exp (check_powerpc_future_hw_available):
- Replace -mfuture with -mcpu=future.
- (check_effective_target_powerpc_future_ok): Likewise.
- (is-effective-target): Add powerpc_future_hw.
-
-2020-05-11 Kito Cheng <kito.cheng@sifive.com>
-
- * gcc/testsuite/g++.dg/ipa/pr94856.C: Require fgnu-tm.
-
-2020-05-11 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/95046
- * gcc.target/i386/pr95046-1.c: New test.
-
-2020-05-11 Mark Eggleston <markeggleston@gcc.gnu.org>
-
- PR fortran/59107
- * gfortran.dg/pr59107.f90: New test.
-
-2020-05-11 Xiong Hu Luo <luoxhu@linux.ibm.com>
-
- PR tree-optimization/83403
- * gcc.dg/tree-ssa/pr83403-1.c: New test.
- * gcc.dg/tree-ssa/pr83403-2.c: New test.
- * gcc.dg/tree-ssa/pr83403.h: New header.
-
-2020-05-10 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/93499
- * gfortran.dg/pr93499.f90: New test.
-
-2020-05-09 Jakub Jelinek <jakub@redhat.com>
-
- PR testsuite/95008
- * gcc.dg/two-types-6.c: Remove dg-warning directive that never
- triggered.
- * gcc.dg/analyzer/pr93382.c: Properly escape ()s in the diagnostic
- message.
-
-2020-05-09 Hans-Peter Nilsson <hp@axis.com>
-
- * gcc.target/cris/: Adjust for removing crisv32-* and cris-linux-*.
- * gcc.dg/20020919-1.c, gcc.dg/pr31866.c, gcc.dg/pr46647.c,
- gcc.dg/sibcall-10.c, gcc.dg/sibcall-3.c, gcc.dg/sibcall-4.c,
- gcc.dg/sibcall-9.c, gcc.dg/torture/cris-asm-mof-1.c,
- gcc.dg/torture/cris-volatile-1.c, gcc.dg/torture/pr38948.c,
- gcc.dg/tree-ssa/20040204-1.c, gcc.dg/tree-ssa/loop-1.c,
- gcc.dg/weak/typeof-2.c, lib/target-supports.exp: Remove remaining
- traces of crisv32-*.
-
-2020-05-08 Vladimir Makarov <vmakarov@redhat.com>
-
- * gcc.target/i386/pr92807-1.c: Improve the regex.
-
-2020-05-08 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/95003
- * g++.dg/coroutines/torture/pr95003.C: New test.
-
-2020-05-08 Nathan Sidwell <nathan@acm.org>
-
- * gcc.dg/cpp/counter-[23].c: Move to c-c+_-common/cpp.
- * gcc.dg/cpp/dir-only-*: Likewise.
- * c-c++-common/cpp/dir-only-[78].c: New.
-
-2020-05-08 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/vect/bb-slp-pr68892.c: Adjust for not supported
- SLP permutations becoming builds from scalars.
- * gcc.dg/vect/bb-slp-pr78205.c: Likewise.
- * gcc.dg/vect/bb-slp-34.c: Likewise.
-
-2020-05-08 Nathan Sidwell <nathan@acm.org>
-
- * c-c++-common/raw-string-6.c: Adjust EOF error location.
- * 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/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/crash10.C: Likewise.
- * g++.dg/parse/crash18.C: Likewise.
- * g++.dg/parse/crash35.C: Likewise.
- * g++.dg/parse/crash59.C: Likewise.
- * g++.dg/parse/crash61.C: Likewise.
- * g++.dg/parse/crash67.C: Likewise.
- * g++.dg/parse/ctor3.C: Likewise.
- * g++.dg/parse/error14.C: Likewise.
- * g++.dg/parse/error5.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/pr46852.C: Likewise.
- * g++.dg/pr46868.C: Likewise.
- * g++.dg/template/crash115.C: Likewise.
- * g++.dg/template/crash43.C: Likewise.
- * g++.dg/template/error-recovery1.C: Likewise.
- * g++.dg/template/error57.C: Likewise.
- * g++.old-deja/g++.other/crash31.C: Likewise.
-
-2020-05-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/addr15.adb: New test.
-
-2020-05-08 Richard Biener <rguenther@suse.de>
-
- * gnat.dg/opt83.adb: New testcase.
-
-2020-05-08 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/94786
- * gcc.dg/tree-ssa/pr94786.c: New test.
-
- PR target/94857
- * gcc.target/i386/pr94857.c: New test.
-
- PR tree-optimization/94783
- * gcc.dg/tree-ssa/pr94783.c: New test.
-
- PR tree-optimization/94956
- * gcc.target/i386/pr94956.c: New test.
-
- PR tree-optimization/94913
- * gcc.dg/tree-ssa/pr94913.c: New test.
-
-2020-05-07 Segher Boessenkool <segher@kernel.crashing.org>
-
- * gcc.target/powerpc/setnbc.h: New.
- * gcc.target/powerpc/setnbceq.c: New.
- * gcc.target/powerpc/setnbcge.c: New.
- * gcc.target/powerpc/setnbcgt.c: New.
- * gcc.target/powerpc/setnbcle.c: New.
- * gcc.target/powerpc/setnbclt.c: New.
- * gcc.target/powerpc/setnbcne.c: New.
-
-2020-05-07 Segher Boessenkool <segher@kernel.crashing.org>
-
- * gcc.target/powerpc/setbc.h: New.
- * gcc.target/powerpc/setbceq.c: New.
- * gcc.target/powerpc/setbcge.c: New.
- * gcc.target/powerpc/setbcgt.c: New.
- * gcc.target/powerpc/setbcle.c: New.
- * gcc.target/powerpc/setbclt.c: New.
- * gcc.target/powerpc/setbcne.c: New.
-
-2020-05-07 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/94817
- PR c++/94829
- * g++.dg/coroutines/coro-missing-final-suspend.C: New test.
- * g++.dg/coroutines/coro-missing-initial-suspend.C: New test.
- * g++.dg/coroutines/coro-missing-promise-yield.C: Check for
- continuation of compilation.
- * g++.dg/coroutines/coro-missing-promise.C: Likewise.
- * g++.dg/coroutines/coro-missing-ret-value.C: Likewise
- * g++.dg/coroutines/coro-missing-ret-void.C: Likewise
- * g++.dg/coroutines/coro-missing-ueh-3.C: Likewise
- * g++.dg/coroutines/pr94817.C: New test.
- * g++.dg/coroutines/pr94829.C: New test.
-
-2020-05-07 Marek Polacek <polacek@redhat.com>
-
- PR c++/94590 - Detect long double -> double narrowing.
- * g++.dg/cpp0x/Wnarrowing18.C: New test.
-
-2020-05-07 Marek Polacek <polacek@redhat.com>
-
- PR c++/94255
- * g++.dg/template/spec41.C: New test.
-
-2020-05-07 Marek Polacek <polacek@redhat.com>
-
- P1957R2
- * g++.dg/cpp0x/initlist92.C: Don't expect an error in C++20 only.
-
-2020-05-07 Manfred Schwarb <manfred99@gmx.ch>
-
- * gcc.dg/20050121-1.c: Fix broken dg directives.
- * gcc.dg/analzyer/pr93382.c: Likewise.
- * gcc.dg/autopar/pr68460.c: Likewise.
- * gcc.dg/c90-fordecl-1.c: Likewise.
- * gcc.dg/cpp/trad/funlike-5.c: Likewise.
- * gcc.dg/debug/dwarf2/dwarf-dfp.c: Likewise.
- * gcc.dg/debug/dwarf2/dwarf-float.c: Likewise.
- * gcc.dg/lto/pr52634_0.c: Likewise.
- * gcc.dg/pr32069.c: Likewise.
- * gcc.dg/pr35445.c: Likewise.
- * gcc.dg/pr40172-3.c: Likewise.
- * gcc.dg/pr87347.c: Likewise.
- * gcc.dg/pr88660.c: Likewise.
- * gcc.dg/pr89689.c: Likewise.
- * gcc.dg/sinatan-2.c: Likewise.
- * gcc.dg/sinhatanh-1.c: Likewise.
- * gcc.dg/sinhovercosh-1.c: Likewise.
- * gcc.dg/tls/opt-9.c: Likewise.
- * gcc.dg/torture/builtins-1.c: Likewise.
- * gcc.dg/torture/pr51106-1.c: Likewise.
- * gcc.dg/torture/pr51106-2.c: Likewise.
- * gcc.dg/torture/pr80281.c: Likewise.
- * gcc.dg/torture/pr92252.c: Likewise.
- * gcc.dg/tree-ssa/pr79448-2.c: Likewise.
- * gcc.dg/tree-ssa/pr79448.c: Likewise.
- * gcc.dg/tree-ssa/pr92163.c: Likewise.
- * gcc.dg/tree-ssa/reassoc-28.c: Likewise.
- * gcc.dg/tree-ssa/upcast-1.c: Likewise.
- * gcc.dg/two-types-6.c: Likewise.
- * gcc.dg/ubsan/c-shift-1.c: Likewise.
- * gcc.dg/var-expand3.c: Likewise.
- * gcc.dg/vect/costmodel/x86_64/costmodel-pr30843.c: Likewise.
- * gcc.dg/vect/pr71264.c: Likewise.
-
-2020-05-07 Marek Polacek <polacek@redhat.com>
-
- * g++.dg/other/operator1.C: Adjust expected message.
- * g++.dg/overload/operator2.C: Likewise.
- * g++.dg/template/error30.C: Likewise.
- * g++.old-deja/g++.jason/operator.C: Likewise.
-
-2020-05-07 Richard Biener <rguenther@suse.de>
-
- PR middle-end/94703
- * gcc.dg/tree-ssa/pr94703.c: New testcase.
-
-2020-05-07 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/94946
- * g++.dg/ext/attr-parm-1.C: Enable the test also for lp64 x86, use
- sysv_abi and ms_abi attributes in that case instead of fastcall and
- no attribute.
-
- PR c/94968
- * gcc.dg/pr94968.c: New test.
-
-2020-05-07 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/57359
- * gcc.dg/torture/pr57359-1.c: New testcase.
- * gcc.dg/torture/pr57359-1.c: Likewise.
- * gcc.dg/tree-ssa/ssa-lim-14.c: Likewise.
- * gcc.dg/graphite/pr80906.c: XFAIL.
-
-2020-05-07 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/debug16.adb: New test.
-
-2020-05-06 Marek Polacek <polacek@redhat.com>
-
- PR c++/94938
- * g++.dg/warn/Wdiv-by-zero-3.C: New test.
- * g++.dg/warn/Wtype-limits4.C: New test.
- * g++.dg/warn/template-2.C: New test.
- * g++.old-deja/g++.pt/crash10.C: Add dg-warning.
-
-2020-05-06 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/94970
- * gdc.dg/pr94970.d: New test.
-
-2020-05-06 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/94951
- * g++.dg/warn/Wstrict-aliasing-bogus-tmpl.C: New test.
-
- PR c++/94907
- * g++.dg/cpp2a/spaceship-synth8.C: New test.
-
-2020-05-06 qing zhao <qing.zhao@oracle.com>
-
- PR c/94230
- * gcc.dg/plugin/location-overflow-test-1.c (fn_1): New message to
- provide hint to use the new -flarge-source-files option.
-
-2020-05-06 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/94913
- * gcc.target/i386/pr94913-1.c: New test.
- * gcc.target/i386/pr94913-2.c: Ditto.
-
-2020-05-06 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/94963
- * gcc.dg/pr94963.c: New testcase.
-
-2020-05-06 Hongtao Liu <hongtao.liu@intel.com>
-
- * g++.dg/other/i386-2.c: Add -mtsxldtrk.
- * g++.dg/other/i386-3.c: Likewise.
- * gcc.target/i386/sse-12.c: Likewise.
- * gcc.target/i386/sse-13.c: Likewise.
- * gcc.target/i386/sse-14.c: Likewise.
- * gcc.target/i386/sse-22.c: Likewsie.
- * gcc.target/i386/sse-23.c: Likewise.
- * gcc.target/i386/tsxldtrk-1.c: New test.
- * gcc.target/i386/funcspec-56.inc: Add target attribute tests
- for tsxldtrk.
-
-2020-05-06 Hongtao Liu <hongtao.liu@intel.com>
-
- * gcc.target/i386/funcspec-56.inc: Add enqcmd, avx512bf16,
- avx512vp2intersect.
-
-2020-05-06 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/94921
- * match.pd (~(~X - Y) -> X + Y, ~(~X + Y) -> X - Y): New
- simplifications.
-
- PR rtl-optimization/94873
- * gcc.dg/pr94873.c: New test.
-
-2020-05-06 Hongtao.liu <hongtao.liu@intel.com>
- Wei Xiao <wei3.xiao@intel.com>
-
- * gcc/testsuite/gcc.target/i386/serialize-1.c: New test.
- * gcc/testsuite/g++.dg/other/i386-2.C: Add -mserialize.
- * gcc/testsuite/g++.dg/other/i386-3.C: Ditto.
- * gcc/testsuite/gcc.target/i386/funcspec-56.inc: Ditto.
- * gcc/testsuite/gcc.target/i386/sse-12.c: Ditto.
- * gcc/testsuite/gcc.target/i386/sse-13.c: Ditto.
- * gcc/testsuite/gcc.target/i386/sse-14.c: Ditto.
- * gcc/testsuite/gcc.target/i386/sse-22.c: Ditto.
- * gcc/testsuite/gcc.target/i386/sse-23.c: Ditto.
-
-2020-05-05 H.J. Lu <hongjiu.lu@intel.com>
-
- PR testsuite/84324
- * objc/execute/exceptions/matcher-1.m (my_exception_matcher):
- Change return type to int.
-
-2020-05-05 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/93366
- * gfortran.dg/pr93366.f90: New test.
-
-2020-05-05 Michael Meissner <meissner@linux.ibm.com>
-
- * gcc.dg/nextafter-2.c: Delete changes meant for a private branch.
- * gcc.target/powerpc/pr70117.c: Likewise.
-
-2020-05-05 Dimitar Dimitrov <dimitar@dinux.eu>
-
- * gcc.target/pru/clobber-sp.c: New test.
-
-2020-05-05 Dimitar Dimitrov <dimitar@dinux.eu>
-
- * gcc.target/pru/lra-framepointer-fragmentation-1.c: Update test to
- take into account additional available registers.
- * gcc.target/pru/lra-framepointer-fragmentation-2.c: Ditto.
-
-2020-05-05 Marek Polacek <polacek@redhat.com>
-
- PR c++/94799
- * g++.dg/lookup/this1.C: Adjust dg-error.
- * g++.dg/template/lookup12.C: New test.
- * g++.dg/template/lookup13.C: New test.
- * g++.dg/template/lookup14.C: New test.
- * g++.dg/template/lookup15.C: New test.
-
-2020-05-05 Martin Liska <mliska@suse.cz>
-
- * gcc.dg/spellcheck-options-22.c: New test.
-
-2020-05-05 Martin Liska <mliska@suse.cz>
-
- * g++.dg/concepts/diagnostic1.C: Merge dg-options and
- dg-additional-options if len <= 120 chars.
- * g++.dg/cpp1y/new1.C: Likewise.
- * g++.dg/cpp1y/new2.C: Likewise.
- * g++.dg/debug/dwarf2/pr61433.C: Likewise.
- * g++.dg/init/new18.C: Likewise.
- * g++.dg/ipa/devirt-19.C: Likewise.
- * g++.dg/ipa/devirt-52.C: Likewise.
- * g++.dg/ipa/pr44372.C: Likewise.
- * g++.dg/ipa/pr58371.C: Likewise.
- * g++.dg/ipa/pr63587-2.C: Likewise.
- * g++.dg/ipa/pr78211.C: Likewise.
- * g++.dg/opt/dump1.C: Likewise.
- * g++.dg/opt/pr44919.C: Likewise.
- * g++.dg/opt/pr47615.C: Likewise.
- * g++.dg/opt/pr82159-2.C: Likewise.
- * g++.dg/other/pr52048.C: Likewise.
- * g++.dg/pr57662.C: Likewise.
- * g++.dg/pr59510.C: Likewise.
- * g++.dg/pr67989.C: Likewise.
- * g++.dg/pr81194.C: Likewise.
- * g++.dg/template/canon-type-8.C: Likewise.
- * g++.dg/template/crash107.C: Likewise.
- * g++.dg/template/show-template-tree-3.C: Likewise.
- * g++.dg/tm/cgraph_edge.C: Likewise.
- * g++.dg/torture/20141013.C: Likewise.
- * g++.dg/torture/pr34641.C: Likewise.
- * g++.dg/torture/pr34850.C: Likewise.
- * g++.dg/torture/pr36745.C: Likewise.
- * g++.dg/torture/pr40991.C: Likewise.
- * g++.dg/torture/pr48271.C: Likewise.
- * g++.dg/torture/pr53602.C: Likewise.
- * g++.dg/torture/pr53752.C: Likewise.
- * g++.dg/torture/pr54838.C: Likewise.
- * g++.dg/torture/pr58252.C: Likewise.
- * g++.dg/tree-ssa/pr22444.C: Likewise.
- * g++.dg/tree-ssa/pr24351-3.C: Likewise.
- * g++.dg/tree-ssa/pr27283.C: Likewise.
- * g++.dg/tree-ssa/pr27291.C: Likewise.
- * g++.dg/tree-ssa/pr27548.C: Likewise.
- * g++.dg/tree-ssa/pr42337.C: Likewise.
- * g++.dg/ubsan/pr65583.C: Likewise.
- * g++.old-deja/g++.robertl/eb27.C: Likewise.
- * gcc.dg/tree-ssa/dse-points-to.c: Likewise.
- * gcc.target/arm/simd/vmmla_1.c: Likewise.
- * gcc.target/i386/vect-pr67800.c: Likewise.
- * gcc.target/mips/cfgcleanup-jalr2.c: Likewise.
- * gcc.target/mips/cfgcleanup-jalr3.c: Likewise.
-
-2020-05-05 Richard Biener <rguenther@suse.de>
-
- PR testsuite/92177
- * gcc.dg/vect/bb-slp-22.c: Adjust.
-
-2020-05-05 Richard Biener <rguenther@suse.de>
-
- PR ipa/94947
- * gcc.dg/torture/pr94947-1.c: New testcase.
- * gcc.dg/torture/pr94947-2.c: Likewise.
-
-2020-05-05 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/aggr29.adb: New test.
-
-2020-05-05 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/94949
- * gcc.dg/torture/pr94949.c: New testcase.
-
-2020-05-05 Alex Coplan <alex.coplan@arm.com>
-
- * gcc.target/aarch64/mvn_zero_ext.c: New test.
-
-2020-05-05 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/94800
- * gcc.dg/tree-ssa/pr94800.c: New test.
- * gcc.dg/tree-ssa/popcount5.c: New test.
- * gcc.dg/tree-ssa/popcount5l.c: New test.
- * gcc.dg/tree-ssa/popcount5ll.c: New test.
-
- PR target/94942
- * gcc.target/i386/pr94942.c: New test.
-
- PR tree-optimization/94914
- * gcc.target/i386/pr94914.c: New test.
-
-2020-05-04 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94038
- * g++.dg/warn/pr94038.C: New test.
-
-2020-05-04 Richard Sandiford <richard.sandiford@arm.com>
-
- PR middle-end/94941
- * gcc.target/aarch64/sve/acle/general/unoptimized_1.c: New test.
-
-2020-05-04 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/94795
- * gcc.target/i386/pr94795-1.c: New test.
- * gcc.target/i386/pr94795-2.c: Ditto.
-
-2020-05-04 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/39612
- * gcc.dg/tree-ssa/pr39612.c: New testcase.
-
-2020-05-04 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/94650
- * gcc.targeti/i386/pr94650.c: New test.
-
-2020-05-04 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/94718
- * gcc.dg/tree-ssa/pr94718-4.c: New test.
- * gcc.dg/tree-ssa/pr94718-5.c: New test.
-
- PR tree-optimization/94718
- * gcc.dg/tree-ssa/pr94718-3.c: New test.
-
- PR tree-optimization/94718
- * gcc.dg/tree-ssa/pr94718-1.c: New test.
- * gcc.dg/tree-ssa/pr94718-2.c: New test.
-
-2020-05-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat.dg/limited1_inner.adb (Finalize): Use 'Unrestricted_Access.
-
-2020-05-02 H.J. Lu <hongjiu.lu@intel.com>
-
- PR fortran/94788
- * lib/gfortran.exp (gfortran_target_compile): Get asan library
- from TEST_ALWAYS_FLAGS.
-
-2020-05-02 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/94788
- * gfortran.dg/asan: New directory.
- * gfortran.dg/asan/asan.exp: New file.
- * gfortran.dg/asan/pointer_assign_16.f90: New test case.
-
-2020-05-01 H.J. Lu <hongjiu.lu@intel.com>
-
- PR target/93492
- * c-c++-common/patchable_function_entry-error-1.c: New test.
- * c-c++-common/patchable_function_entry-error-2.c: Likewise.
- * c-c++-common/patchable_function_entry-error-3.c: Likewise.
-
-2020-05-01 Patrick Palka <ppalka@redhat.com>
-
- PR c++/90880
- * g++.dg/template/sfinae29.C: New test.
-
-2020-05-01 Marek Polacek <polacek@redhat.com>
-
- PR c++/94885
- * g++.dg/cpp2a/paren-init26.C: New test.
-
-2020-05-01 Andreas Tobler <andreast@gcc.gnu.org>
-
- * gcc.dg/asan/pr87930.c: Enable on x86_64 FreeBSD.
- * c-c++-common/asan/asan-interface-1.c: Likewise.
- * c-c++-common/asan/clone-test-1.c: Likewise.
- * c-c++-common/asan/no-asan-stack.c: Likewise.
- * c-c++-common/asan/pr59063-1.c: Likewise.
- * c-c++-common/asan/pr59063-2.c: Likewise.
- * g++.dg/asan/asan_test.C: Likewise.
- * g++.dg/asan/asan_test_utils.h: Likewise.
- * g++.dg/asan/interception-failure-test-1.C: Likewise.
- * g++.dg/asan/interception-malloc-test-1.C: Likewise.
-
-2020-04-30 Peter Bergner <bergner@linux.ibm.com>
-
- PR rtl-optimization/94740
- * gcc.target/powerpc/pr94740.c: New test.
-
-2020-04-30 Jakub Jelinek <jakub@redhat.com>
-
- PR c/94842
- * gcc.dg/pr94842.c: New test.
-
-2020-04-30 Martin Jambor <mjambor@suse.cz>
-
- PR ipa/94856
- * g++.dg/ipa/pr94856.C: New test.
-
-2020-04-30 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/94886
- * g++.dg/coroutines/pr94886-folly-3.C: New test.
-
-2020-04-30 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/94883
- * g++.dg/coroutines/pr94883-folly-2.C: New test.
-
-2020-04-30 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/94879
- * g++.dg/coroutines/pr94xxx-folly-1.C: New test.
-
-2020-04-30 Marek Polacek <polacek@redhat.com>
-
- PR c++/94775
- * g++.dg/warn/Warray-bounds-10.C: New test.
-
-2020-04-30 Szabolcs Nagy <szabolcs.nagy@arm.com>
-
- PR target/94748
- * gcc.target/aarch64/pr94748.c: New test.
-
-2020-04-30 Andreas Krebbel <krebbel@linux.ibm.com>
-
- * gcc.target/s390/zvector/vec_load_len_r.c: New test.
- * gcc.target/s390/zvector/vec_store_len_r.c: New test.
-
-2020-04-29 Jakub Jelinek <jakub@redhat.com>
-
- PR target/94704
- * g++.target/s390/s390.exp: New file.
- * g++.target/s390/pr94704-1.C: New test.
- * g++.target/s390/pr94704-2.C: New test.
- * g++.target/s390/pr94704-3.C: New test.
- * g++.target/s390/pr94704-4.C: New test.
-
-2020-04-29 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94830
- * g++.dg/concepts/diagnostics12.C: Clarify the dg-message now
- that the corresponding diagnostic is deterministic.
- * g++.dg/concepts/diagnostics13.C: New test.
-
-2020-04-29 H.J. Lu <hongjiu.lu@intel.com>
-
- PR target/93654
- * gcc.target/i386/pr93654.c: New test.
-
-2020-04-29 Richard Sandiford <richard.sandiford@arm.com>
-
- * lib/target-supports.exp: Add v8a_hard to the list of arm_arch_*
- targets.
- * g++.target/arm/no_unique_address_1.C: New test.
- * g++.target/arm/no_unique_address_2.C: Likewise.
-
-2020-04-29 Richard Biener <rguenther@suse.de>
- Li Zekun <lizekun1@huawei.com>
-
- PR lto/94822
- * gcc.dg/lto/pr94822_0.c: New testcase.
- * gcc.dg/lto/pr94822_1.c: Alternate file.
- * gcc.dg/lto/pr94822.h: Likewise.
-
-2020-04-29 Richard Sandiford <richard.sandiford@arm.com>
-
- * g++.target/aarch64/no_unique_address_1.C: New test.
- * g++.target/aarch64/no_unique_address_2.C: Likewise.
-
-2020-04-29 Richard Sandiford <richard.sandiford@arm.com>
-
- * g++.target/arm/mve.exp: Restore the original dg-do-what-default
- before finishing.
-
-2020-04-29 Jakub Jelinek <jakub@redhat.com>
-
- PR target/94707
- * g++.target/powerpc/pr94707-1.C: New test.
- * g++.target/powerpc/pr94707-2.C: New test.
- * g++.target/powerpc/pr94707-3.C: New test.
- * g++.target/powerpc/pr94707-4.C: New test.
- * g++.target/powerpc/pr94707-5.C: New test.
- * g++.target/powerpc/pr94707-4.C: New test.
-
-2020-04-29 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94819
- * g++.dg/cpp2a/concepts-inherit-ctor10.C: New test.
- * g++.dg/cpp2a/concepts-inherit-ctor11.C: New test.
-
- PR c++/94808
- * g++.dg/concepts/diagnostic12.C: New test.
- * g++.dg/concepts/diagnostic5.C: Adjust dg-message.
-
-2020-04-28 Alexandre Oliva <oliva@adacore.com>
-
- PR target/94812
- * gcc.target/powerpc/test_mffsl.c: Call mffsl only once.
- Reinterpret the doubles as long longs for compares. Mask out
- mffs bits that are not expected from mffsl.
-
-2020-04-28 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/94816
- * g++.dg/analyzer/pr94816.C: New test.
-
-2020-04-28 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/94447
- PR analyzer/94639
- PR analyzer/94732
- PR analyzer/94754
- * gcc.dg/analyzer/data-model-1.c: Mark "use of uninitialized
- value" warnings as xfail for now.
- * gcc.dg/analyzer/data-model-5b.c: Remove uninitialized warning.
- * gcc.dg/analyzer/pr94099.c: Mark "uninitialized" warning as xfail
- for now.
- * gcc.dg/analyzer/pr94447.c: New test.
- * gcc.dg/analyzer/pr94639.c: New test.
- * gcc.dg/analyzer/pr94732.c: New test.
- * gcc.dg/analyzer/pr94754.c: New test.
- * gcc.dg/analyzer/zlib-6.c: Mark "uninitialized" warning as xfail
- for now.
-
-2020-04-28 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/94809
- * gcc.c-torture/execute/pr94809.c: New test.
-
-2020-04-28 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/94760
- * g++.dg/coroutines/pr94760-mismatched-traits-and-promise-prev.C:
- New test.
-
-2020-04-28 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/94759
- * g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C: Adjust for
- updated error messages.
- * g++.dg/coroutines/coro-bad-alloc-01-bad-op-del.C: Likewise.
- * g++.dg/coroutines/coro-bad-alloc-02-no-op-new-nt.C: Likewise.
- * g++.dg/coroutines/coro-missing-promise.C: Likewise.
- * g++.dg/coroutines/pr93458-5-bad-coro-type.C: Liekwise.
- * g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C: New test.
-
-2020-04-27 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/94701
- * g++.dg/coroutines/torture/local-var-06-structured-binding.C:
- New test.
-
-2020-04-27 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/93956
- PR fortran/94788
- * gfortran.dg/pointer_assign_13.f90: Remove.
-
-2020-04-27 Jakub Jelinek <jakub@redhat.com>
-
- PR target/94780
- * gcc.dg/pr94780.c: New test.
-
-2020-04-27 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94772
- * g++.dg/cpp1y/constexpr-tracking-const23.C: New test.
- * g++.dg/cpp1y/constexpr-tracking-const24.C: New test.
- * g++.dg/cpp1y/constexpr-tracking-const25.C: New test.
-
-2020-04-27 Szabolcs Nagy <szabolcs.nagy@arm.com>
-
- PR target/94697
- * gcc.target/aarch64/pr94697.c: Require lp64.
-
-2020-04-27 Jakub Jelinek <jakub@redhat.com>
-
- PR c/94755
- * c-c++-common/pr94755.c: New test.
-
-2020-04-27 Felix Yang <felix.yang@huawei.com>
-
- PR tree-optimization/94784
- * gcc.dg/pr94784.c: New test.
-
-2020-04-27 Szabolcs Nagy <szabolcs.nagy@arm.com>
-
- PR target/94515
- * g++.target/aarch64/pr94515-1.C: New test.
- * g++.target/aarch64/pr94515-2.C: New test.
-
-2020-04-26 Marek Polacek <polacek@redhat.com>
-
- PR c++/90320
- * g++.dg/cpp0x/explicit13.C: New test.
- * g++.dg/cpp0x/explicit14.C: New test.
-
-2020-04-27 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/89418
- * lib/gdc-utils.exp (gdc-convert-test): Add dg-skip-if for compilable
- tests that depend on the phobos standard library.
-
-2020-04-27 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/94777
- * gdc.dg/pr94777a.d: New test.
- * gdc.dg/pr94777b.d: New test.
-
-2020-04-26 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/94752
- * g++.dg/coroutines/pr94752.C: New test.
-
-2020-04-26 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/94737
- * gfortran.dg/binding_label_tests_34.f90: New test case.
-
-2020-04-25 David Edelsohn <dje.gcc@gmail.com>
-
- * g++.dg/debug/dwarf2/pr61433.C: Unfail AIX.
- * g++.dg/opt/pr48549.C: Same.
- * g++.dg/opt/pr60002.C: Same.
- * g++.dg/opt/pr80436.C: Same.
- * g++.dg/opt/pr83084.C: Same.
- * g++.dg/other/pr42685.C: Same.
- * gcc.dg/pr41241.c: Same.
- * gcc.dg/pr42629.c: Same.
- * gcc.dg/pr42630.c: Same.
- * gcc.dg/pr42719.c: Same.
- * gcc.dg/pr42728.c: Same.
- * gcc.dg/pr42889.c: Same.
- * gcc.dg/pr42916.c: Same.
- * gcc.dg/pr43084.c: Same.
- * gcc.dg/pr43670.c: Same.
- * gcc.dg/pr44023.c: Same.
- * gcc.dg/pr44971.c: Same.
- * gcc.dg/pr45449.c: Same.
- * gcc.dg/pr46771.c: Same.
- * gcc.dg/pr47684.c: Same.
- * gcc.dg/pr47881.c: Same.
- * gcc.dg/pr48768.c: Same.
- * gcc.dg/pr50017.c: Same.
- * gcc.dg/pr56023.c: Same.
- * gcc.dg/pr64935-1.c: Same.
- * gcc.dg/pr64935-2.c: Same.
- * gcc.dg/pr65521.c: Same.
- * gcc.dg/pr65779.c: Same.
- * gcc.dg/pr65980.c: Same.
- * gcc.dg/pr66688.c: Same.
- * gcc.dg/pr70405.c: Same.
- * gcc.dg/vect/pr49352.c: Same.
-
-2020-04-25 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.dg/ipa/ipa-sra-19.c: Add -Wno-psabi option on AIX.
-
-2020-04-25 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.dg/spellcheck-options-21.c: Require LTO.
-
-2020-04-25 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.dg/debug/dwarf2/pr82718-1.c: Skip on AIX.
- * gcc.dg/debug/dwarf2/pr82718-2.c: Skip on AIX.
-
-2020-04-25 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/94578
- * gfortran.dg/pointer_assign_14.f90: New test.
- * gfortran.dg/pointer_assign_15.f90: New test.
-
-2020-04-25 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C:
- Enable test.
-
-2020-04-25 Patrick Palka <ppalka@redhat.com>
-
- * g++.dg/concepts/diagnostic11.C: New test.
-
-2020-04-25 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/94742
- * g++.dg/warn/Wreturn-type-12.C: New test.
-
- PR tree-optimization/94734
- PR tree-optimization/89430
- * gcc.dg/tree-ssa/pr89430-1.c: Add xfail.
- * gcc.dg/tree-ssa/pr89430-2.c: Add xfail.
- * gcc.dg/tree-ssa/pr89430-5.c: Add xfail.
- * gcc.dg/tree-ssa/pr89430-6.c: Add xfail.
- * gcc.c-torture/execute/pr94734.c: New test.
-
-2020-04-24 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/94383
- * g++.dg/compat/struct-layout-1.exp: Use the -std=c++14 vs. -std=c++17
- ABI compatibility testing even with ALT_CXX_UNDER_TEST, as long as
- that compiler accepts -std=c++14 and -std=c++17 options.
-
-2020-04-24 Andrew Stubbs <ams@codesourcery.com>
-
- * lib/target-supports.exp (available_vector_sizes): Add amdgcn.
- (check_effective_target_vect_cmdline_needed): Disable for amdgcn.
- (check_effective_target_vect_pack_trunc): Add amdgcn.
-
-2020-04-24 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/94288
- * g++.dg/coroutines/pr94288.C: New test.
-
-2020-04-24 Alexandre Oliva <oliva@adacore.com>
-
- * lib/target-supports.exp (check_effective_target_fileio): New.
- * gcc.c-torture/execute/fprintf-2.c: Require it.
- * gcc.c-torture/execute/printf-2.c: Likewise.
- * gcc.c-torture/execute/user-printf.c: Likewise.
-
-2020-04-24 Haijian Zhang <z.zhanghaijian@huawei.com>
-
- PR rtl-optimization/94708
- * gfortran.dg/pr94708.f90: New test.
-
-2020-04-23 David Edelsohn <dje.gcc@gmail.com>
-
- * gcc.dg/torture/pr90020.c: Skip on AIX.
-
-2020-04-23 David Edelsohn <dje.gcc@gmail.com>
-
- * g++.dg/cpp0x/lambda/pr94426-1.C: Require LTO.
-
-2020-04-23 Martin Sebor <msebor@redhat.com>
-
- PR driver/90983
- * gcc.dg/Wframe-larger-than-3.c: New test.
- * gcc.dg/Wlarger-than4.c: New test.
- * gcc.dg/Wstack-usage.c: New test.
-
-2020-04-23 Patrick Palka <ppalka@redhat.com>
-
- * g++.dg/cpp0x/dependent3.C: New test.
-
- PR c++/94645
- * g++.dg/cpp2a/concepts-lambda6.C: New test.
-
-2019-04-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * g++.dg/opt/store-merging-4.C: New test.
-
-2020-04-23 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/94288
- * g++.dg/coroutines/torture/co-await-18-if-cond.C: New test.
- * g++.dg/coroutines/torture/co-await-19-while-cond.C: New test.
- * g++.dg/coroutines/torture/co-await-20-do-while-cond.C: New test.
- * g++.dg/coroutines/torture/co-await-21-switch-value.C: New test.
- * g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C: New test.
- * g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C: New test.
-
-2020-04-23 Marek Polacek <polacek@redhat.com>
-
- PR c++/94733
- * g++.dg/tm/attrib-5.C: New test.
-
-2020-04-23 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/94724
- * gcc.c-torture/execute/pr94724.c: New test.
-
-2020-04-23 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/93956
- * gfortran.dg/pointer_assign_13.f90: New test.
-
-2020-04-23 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C: Adjust for
- changed inline namespace.
- * g++.dg/coroutines/coro-bad-alloc-01-bad-op-del.C: Likewise.
- * g++.dg/coroutines/coro-bad-alloc-02-no-op-new-nt.C: Likewise
- * g++.dg/coroutines/coro.h: Likewise
-
-2020-04-23 Szabolcs Nagy <szabolcs.nagy@arm.com>
-
- PR target/94697
- * gcc.target/aarch64/pr94697.c: New test.
-
-2020-04-23 Felix Yang <felix.yang@huawei.com>
-
- PR target/94678
- * gcc.target/aarch64/pragma_cpp_predefs_2.c: Fix typos, pop_pragma ->
- pop_options. Add tests for general-regs-only.
- * gcc.target/aarch64/pragma_cpp_predefs_3.c: Add tests for
- general-regs-only.
-
-2020-04-23 Andrew Stubbs <ams@codesourcery.com>
- Thomas Schwinge <thomas@codesourcery.com>
-
- PR middle-end/93488
-
- * c-c++-common/goacc/pr93488.c: New file.
-
-2020-04-23 Richard Sandiford <richard.sandiford@arm.com>
-
- PR tree-optimization/94727
- * gcc.dg/vect/pr94727.c: New test.
-
-2020-04-23 Szabolcs Nagy <szabolcs.nagy@arm.com>
-
- PR target/94514
- * g++.target/aarch64/pr94514.C: Require lp64.
- * gcc.target/aarch64/pr94514.c: Likewise.
-
-2020-04-23 Jakub Jelinek <jakub@redhat.com>
-
- PR target/94707
- * g++.dg/tree-ssa/pr27830.C: Use -Wpsabi -w for -std=c++17 and higher.
-
- PR c/94705
- * gcc.dg/pr94705.c: New test.
-
-2020-04-22 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94719
- PR c++/94549
- * g++.dg/cpp2a/concepts-inherit-ctor9.C: New test.
-
-2020-04-22 Marek Polacek <polacek@redhat.com>
-
- PR c++/93807
- * g++.dg/cpp2a/fn-template20.C: New test.
-
-2020-04-22 Duan bo <duanbo3@huawei.com>
-
- PR testsuite/94712
- * gcc.target/aarch64/pr63304_1.c: Require lp64 target.
- * gcc.target/aarch64/pr70120-2.c: Likewise.
- * gcc.target/aarch64/pr94530.c: Likewise.
- * gcc.target/aarch64/reload-valid-spoff.c: Likewise.
-
-2020-04-22 Felix Yang <felix.yang@huawei.com>
-
- PR target/94678
- * gcc.target/aarch64/sve/acle/general/nosve_6.c: New test.
-
-2020-04-22 José Rui Faustino de Sousa <jrfsousa@gmail.com>
-
- PR fortran/90350
- * gfortran.dg/PR90350.f90: New test.
-
-2020-04-22 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR c++/90448
- * g++.dg/cpp1y/lambda-generic-variadic20.C: New.
-
-2020-04-22 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/94647
- * c-c++-common/Warray-bounds-2.c: Replace a large value harcoded
- in an expected warning with a pattern.
-
-2020-04-22 Christophe Lyon <christophe.lyon@linaro.org>
-
- * lib/target-supports.exp (check_effective_target_arm_dsp)
- (check_effective_target_arm_crc_ok_nocache)
- (check_effective_target_arm_coproc1_ok_nocache)
- (check_effective_target_arm_coproc2_ok_nocache)
- (check_effective_target_arm_coproc3_ok_nocache)
- (check_effective_target_arm_coproc4_ok_nocache): Include
- arm_acle.h.
-
-2020-04-22 Christophe Lyon <christophe.lyon@linaro.org>
-
- gcc/testsuite/
- * lib/target-supports.exp (arm_v8m_main_cde, arm_v8m_main_cde_fp)
- (arm_v8_1m_main_cde_mve, arm_v8_1m_main_cde_mve_fp): Include
- arm_cde.h and arm_mve.h as ineeded.
-
-2020-04-22 Christophe Lyon <christophe.lyon@linaro.org>
-
- * lib/target-supports.exp
- (check_effective_target_arm_v8_1m_mve_ok_nocache): Include
- arm_mve.h.
-
-2020-04-22 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc.target/arm/mve/intrinsics/mve_vector_float.c: Use
- arm_v8_1m_mve_fp.
- * gcc.target/arm/mve/intrinsics/mve_vector_float1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_float2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_int.c: Use
- arm_v8_1m_mve.
- * gcc.target/arm/mve/intrinsics/mve_vector_int1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_int2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_uint.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_uint1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_uint2.c: Likewise.
-
-2020-04-22 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc.target/arm/mve/intrinsics/mve_move_gpr_to_gpr.c: Remove
- useless options.
-
-2020-04-22 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc.target/arm/mve/intrinsics/mve_fp_fpu1.c: Use arm_hard_ok
- effective target and arm_v8_1m_mve_fp options.
- * gcc.target/arm/mve/intrinsics/mve_fp_fpu2.c: Use arm_softfp_ok
- effective target and arm_v8_1m_mve_fp options.
- * gcc.target/arm/mve/intrinsics/mve_fpu1.c: Use arm_hard_ok
- effective target and arm_v8_1m_mve options.
- * gcc.target/arm/mve/intrinsics/mve_fpu2.c: Use arm_softfp_ok
- effective target and arm_v8_1m_mve options.
-
-2020-04-22 Christophe Lyon <christophe.lyon@linaro.org>
-
- * lib/target-supports.exp (arm_softfp_ok): New effective target.
- (arm_hard_ok): Likewise.
-
-2020-04-22 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/94709
- * gfortran.dg/gomp/warn_truncated.f: New.
- * gfortran.dg/gomp/warn_truncated.f90: New.
-
-2020-04-22 Richard Sandiford <richard.sandiford@arm.com>
-
- PR tree-optimization/94700
- * gcc.target/aarch64/sve/acle/general/pr94700.c: New test.
-
-2020-04-22 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/torture/local-var-0.C: Rename to...
- * g++.dg/coroutines/torture/local-var-00-const.C: ...this.
- * g++.dg/coroutines/torture/local-var-1.C: Rename to...
- * g++.dg/coroutines/torture/local-var-01-single.C: ...this.
- * g++.dg/coroutines/torture/local-var-2.C: Rename to...
- * g++.dg/coroutines/torture/local-var-02-conditional.C: ...this.
- * g++.dg/coroutines/torture/local-var-3.C: Rename to...
- * g++.dg/coroutines/torture/local-var-03-with-awaits.C: ...this.
- * g++.dg/coroutines/torture/local-var-4.C: Rename to...
- * g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C: this.
- * g++.dg/coroutines/torture/local-var-5-awaitable.C: Rename to...
- * g++.dg/coroutines/torture/local-var-05-awaitable.C: ...this.
-
-2020-04-22 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/94682
- * g++.dg/coroutines/promise-parm-preview-this.C: New test.
-
-2020-04-22 Christophe Lyon <christophe.lyon@linaro.org>
-
- * lib/gcc-dg.exp (schedule-cleanups): Accept --save-temps.
-
-2020-04-22 Martin Sebor <msebor@redhat.com>
-
- PR c++/94510
- * g++.dg/init/array58.C: New test.
- * g++.dg/init/array59.C: New test.
- * g++.dg/cpp2a/nontype-class34.C: New test.
- * g++.dg/cpp2a/nontype-class35.C: New test.
-
-2020-04-22 Patrick Palka <ppalka@redhat.com>
-
- PR c++/67825
- * g++.dg/concepts/diagnostic10.C: New test.
- * g++.dg/cpp2a/concepts-pr67178.C: Adjust dg-message.
-
-2020-04-21 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94549
- * g++.dg/concepts/inherit-ctor3.C: Adjust expected diagnostics.
- * g++.dg/cpp2a/concepts-inherit-ctor4.C: Likewise.
- * g++.dg/cpp2a/concepts-inherit-ctor8.C: New test.
-
-2020-04-21 Jonathan Wakely <jwakely@redhat.com>
-
- PR c++/94149
- * g++.dg/cpp2a/paren-init24.C: Fix FIXMEs.
-
-2020-04-21 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/94647
- * c-c++-common/Warray-bounds-2.c: Adjust a test case and add a new one.
- * c-c++-common/Warray-bounds-3.c: Add tests for missing warnings.
- * c-c++-common/Wrestrict.c: Invert bounds in printed ranges.
- * gcc.dg/Warray-bounds-59.c: New test.
- * gcc.dg/Wrestrict-10.c: Add a missing warning.
- * gcc.dg/Wrestrict-5.c: Adjust text of expected warning.
- * gcc.dg/Wrestrict-6.c: Expect to see a range of overlap offsets.
-
-2020-04-21 Szabolcs Nagy <szabolcs.nagy@arm.com>
-
- PR target/94514
- * g++.target/aarch64/pr94514.C: New test.
- * gcc.target/aarch64/pr94514.c: New test.
-
-2020-04-21 Richard Sandiford <richard.sandiford@arm.com>
-
- PR tree-optimization/94683
- * gcc.target/aarch64/sve/acle/general/pr94683.c: New test.
-
-2020-04-21 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/94383
- * g++.dg/compat/struct-layout-1.exp: If !$use_alt, add -c to generator
- args.
- * g++.dg/compat/struct-layout-1_generate.c (dg_options): Add another
- %s to the start of dg-options arg.
- (cxx14_vs_cxx17, do_cxx14_vs_cxx17): New variables.
- (switchfiles): If cxx14_vs_cxx17, prepend -std=c++14 -DCXX14_VS_CXX17
- or -std=c++17 -DCXX17_VS_CXX14 - randomly - to dg-options.
- (output): Don't append further fields once one with flexible array
- member is added.
- (generate_random_tests): Don't use toplevel unions if cxx14_vs_cxx17.
- (main): If -c, emit second set of tests for -std=c++14 vs. -std=c++17
- testing.
- * g++.dg/compat/struct-layout-1_x1.h (empty_base): New type.
- (EMPTY_BASE): Define.
- (TX): Use EMPTY_BASE.
- * g++.dg/compat/struct-layout-1_y1.h (empty_base): New type.
- (EMPTY_BASE): Define.
- (TX): Use EMPTY_BASE.
-
- PR c/94641
- * c-c++-common/ubsan/pr94641.c: New test.
-
-2020-04-21 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94597
- * g++.dg/cpp2a/concepts-conv2.C: New test.
-
-2020-04-21 Duan bo <duanbo3@huawei.com>
-
- PR target/94577
- * gcc.target/aarch64/pr94577.c: New test.
-
-2020-04-21 Jakub Jelinek <jakub@redhat.com>
-
- PR c/94686
- * gcc.c-torture/compile/pr94686.c: New test.
-
-2020-04-21 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/94661
- * g++.dg/coroutines/ramp-return-a.C: New test.
- * g++.dg/coroutines/ramp-return-b.C: New test.
- * g++.dg/coroutines/ramp-return-c.C: New test.
-
-2020-04-17 Marek Polacek <polacek@redhat.com>
-
- PR c++/94592
- * g++.dg/cpp2a/nontype-class34.C: New test.
- * g++.dg/cpp2a/nontype-class35.C: New test.
-
-2020-04-20 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94628
- * g++.dg/cpp0x/variadic179.C: New test.
- * g++.dg/cpp0x/variadic180.C: New test.
-
-2020-04-20 Marek Polacek <polacek@redhat.com>
-
- PR c++/94505 - bogus -Wparentheses warning with fold-expression.
- * g++.dg/cpp1z/fold11.C: New test.
-
-2020-04-20 Andreas Krebbel <krebbel@linux.ibm.com>
-
- * g++.dg/pr94666.C: New test.
-
-2020-04-20 Andreas Krebbel <krebbel@linux.ibm.com>
-
- PR target/94613
- * gcc.target/s390/zvector/pr94613.c: New test.
- * gcc.target/s390/zvector/vec_sel-1.c: New test.
-
-2020-04-20 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/cost_model_8.c: New test.
- * gcc.target/aarch64/sve/cost_model_9.c: Likewise.
- * gcc.target/aarch64/sve/pr89007-1.c: Add -msve-vector-bits=512.
- * gcc.target/aarch64/sve/pr89007-2.c: Likewise.
-
-2020-04-20 Richard Sandiford <richard.sandiford@arm.com>
-
- PR target/94668
- * gcc.target/aarch64/sve/pr94668.c: New test.
-
-2020-04-20 Jan Hubicka <hubicka@ucw.cz>
-
- PR ipa/94582
- PR ipa/94582
- * g++.dg/torture/pr94582.C: New test.
-
-2020-04-20 Harald Anlauf <anlauf@gmx.de>
-
- PR fortran/93364
- * gfortran.dg/pr93364.f90: New test.
-
-2020-04-20 Steve Kargl <kargl@gcc.gnu.org>
- Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/91800
- * gfortran.dg/hollerith_9.f90: New test.
-
-2020-04-19 David Edelsohn <dje.gcc@gmail.com>
-
- * g++.dg/debug/dwarf2/pr85550.C: Skip AIX.
- * g++.dg/debug/pr94272.C: Skip AIX.
- * g++.dg/debug/pr94281.C: Skip AIX.
- * g++.dg/debug/pr94323.C: Skip AIX.
-
-2020-04-19 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: Require
- C++17.
- * g++.dg/coroutines/torture/co-ret-15-default-return_void.C: Likewise.
-
-2020-04-19 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/94347
- * gfortran.dg/char_pointer_init_12.f90: New test.
-
-2020-04-19 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/57129
- * gfortran.dg/subroutine_as_type.f90: New test.
-
-2020-04-19 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/93500
- * gfortran.dg/arith_divide_3.f90: New test.
-
-2020-04-19 Jakub Jelinek <jakub@redhat.com>
-
- PR objc/94637
- * objc.dg/pr94637.m: New test.
-
-2020-04-18 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * lib/gdc-utils.exp (gdc-convert-test): Add dg-skip-if for tests that
- depending on the phobos standard library.
-
-2020-04-18 Jeff Law <law@redhat.com>
-
- PR debug/94439
- * gcc.dg/torture/pr94439.c: New test.
-
-2020-04-18 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * gdc.dg/link.d: Use d_runtime_has_std_library effective target.
- * gdc.dg/runnable.d: Move phobos tests to...
- * gdc.dg/runnable2.d: ...here. New test.
- * lib/target-supports.exp
- (check_effective_target_d_runtime_has_std_library): New.
-
-2020-04-18 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94632
- * g++.dg/template/canon-type-14.C: New test.
-
- PR c++/92187
- * g++.dg/concepts/abbrev5.C: New test.
- * g++.dg/concepts/abbrev6.C: New test.
-
-2020-04-17 Jeff Law <law@redhat.com>
-
- PR rtl-optimization/90275
- * gcc.c-torture/compile/pr90275-2.c: New test.
-
-2020-04-17 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94483
- * g++.dg/cpp2a/lambda-pack-init5.C: New test.
-
- PR c++/88754
- * g++.dg/parse/ambig10.C: New test.
-
-2020-04-17 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/94090
- * gfortran.dg/interface_46.f90: New test.
-
-2020-04-17 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/cost_model_2.c: New test.
- * gcc.target/aarch64/sve/cost_model_3.c: Likewise.
- * gcc.target/aarch64/sve/cost_model_4.c: Likewise.
- * gcc.target/aarch64/sve/cost_model_5.c: Likewise.
- * gcc.target/aarch64/sve/cost_model_6.c: Likewise.
- * gcc.target/aarch64/sve/cost_model_7.c: Likewise.
-
-2020-04-17 Jakub Jelinek <jakub@redhat.com>
- Jeff Law <law@redhat.com>
-
- PR target/94567
- * gcc.c-torture/execute/pr94567.c: New test.
-
-2020-04-17 Nathan Sidwell <nathan@acm.org>
-
- PR c++/94608
- * g++.dg/lto/pr83720_0.C: Add fn def to avoid warning on arm ABI.
-
-2020-04-17 Jakub Jelinek <jakub@redhat.com>
-
- PR rtl-optimization/94618
- * g++.dg/opt/pr94618.C: New test.
-
- PR tree-optimization/94621
- * gcc.c-torture/compile/pr94621.c: New test.
-
- PR c++/94314
- * g++.dg/pr94314-4.C: Require c++14 rather than c++11.
-
-2020-04-16 Peter Bergner <bergner@linux.ibm.com>
-
- PR rtl-optimization/93974
- * g++.dg/pr93974.C: New test.
-
-2020-04-16 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/cpp0x/lambda/pr94426-2.C: Adjust scan-asms to test
- for the change on more platforms.
-
-2020-04-16 Martin Jambor <mjambor@suse.cz>
-
- PR ipa/93621
- * g++.dg/ipa/pr93621.C: New test.
-
-2020-04-16 Richard Sandiford <richard.sandiford@arm.com>
-
- PR target/94606
- * gcc.dg/vect/pr94606.c: New test.
-
-2020-04-16 Martin Liska <mliska@suse.cz>
- Jakub Jelinek <jakub@redhat.com>
-
- PR c++/94314
- * g++.dg/pr94314.C: Do not use dg-additional-options
- and remove not needed stdio.h include.
- * g++.dg/pr94314-2.C: Likewise.
- * g++.dg/pr94314-3.C: Likewise.
- * g++.dg/pr94314-4.C: New test.
-
-2020-04-16 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94475
- * g++.dg/conversion/err-recover2.C: New test.
- * g++.dg/diagnostic/pr84138.C: Remove now-bogus warning.
- * g++.dg/warn/Wsign-compare-8.C: Remove now-bogus warning.
-
-2020-04-16 Richard Sandiford <richard.sandiford@arm.com>
-
- PR rtl-optimization/94605
- * gcc.target/aarch64/sve/pr94605.c: New test.
-
-2020-04-16 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/graphite/interchange-1.c: Remove scan for tiled.
- * gcc.dg/graphite/interchange-10.c: Likewise.
- * gcc.dg/graphite/interchange-11.c: Likewise.
- * gcc.dg/graphite/interchange-3.c: Likewise.
- * gcc.dg/graphite/interchange-4.c: Likewise.
- * gcc.dg/graphite/interchange-7.c: Likewise.
- * gcc.dg/graphite/interchange-9.c: Likewise.
- * gcc.dg/graphite/uns-interchange-9.c: Likewise.
- * gfortran.dg/graphite/interchange-3.f90: Likewise.
-
-2020-04-16 Martin Jambor <mjambor@suse.cz>
-
- PR tree-optimization/94598
- * gcc.dg/tree-ssa/pr94598.c: New test.
-
-2020-04-16 Jakub Jelinek <jakub@redhat.com>
-
- PR ipa/92372
- * gcc.c-torture/pr92372.c: Move ...
- * gcc.c-torture/compile/pr92372.c: ... here.
-
- PR c++/94571
- * g++.dg/cpp1z/decomp51.C: New test.
-
-2020-04-15 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/94603
- * gcc.target/i386/pr94603.c: New test.
-
-2020-04-15 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/mve_vec_duplicate.c: New test.
-
-2020-04-15 Jakub Jelinek <jakub@redhat.com>
-
- PR c/94593
- * c-c++-common/gomp/requires-1.c: Fix a typo, requries -> requires.
- Move directives to file scope.
- (i): Remove.
- * c-c++-common/gomp/requires-2.c: Move directives to file scope.
- (i, foo): Remove.
- * c-c++-common/gomp/requires-4.c: Move directives to file scope.
- * gcc.dg/gomp/requires-1.c: New test.
- * g++.dg/gomp/requires-1.C: New test.
- * g++.dg/gomp/requires-2.C: New test.
-
-2020-04-15 Richard Biener <rguenther@suse.de>
-
- PR middle-end/94539
- * gcc.dg/alias-14.c: Make dg-do run.
-
-2020-04-13 Max Filippov <jcmvbkbc@gmail.com>
-
- PR target/94584
- * gcc.target/xtensa/pr94584.c: New test.
-
-2020-04-14 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/94359
- * g++.dg/coroutines/torture/symmetric-transfer-00-basic.C:
- Expect a run fail for targets without arbitrary indirect
- tail-calls.
-
-2020-04-14 Patrick Palka <ppalka@redhat.com>
-
- PR c++/93207
- * g++.dg/concepts/variadic5.C: New test.
-
- PR c++/85278
- * g++.dg/concepts/diagnostic9.C: New test.
-
- PR c++/94034
- * g++.dg/cpp0x/constexpr-empty15.C: New test.
- * g++.dg/cpp1y/constexpr-nsdmi6a.C: New test.
- * g++.dg/cpp1y/constexpr-nsdmi6b.C: New test.
- * g++.dg/cpp1y/constexpr-nsdmi7a.C: New test.
- * g++.dg/cpp1y/constexpr-nsdmi7b.C: New test.
-
-2020-04-14 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/94573
- * gcc.dg/store_merging_30.c: New test.
-
-2020-04-14 Yang Yang <yangyang305@huawei.com>
-
- PR tree-optimization/94574
- * gcc.dg/pr94574.c: New test.
-
-2020-04-14 H.J. Lu <hongjiu.lu@intel.com>
-
- PR target/94561
- * gcc.target/i386/pr94561.c: New test.
-
-2020-04-14 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/use_rename_10.f90: New.
- * gfortran.dg/use_rename_11.f90: New.
-
-2020-04-13 Marek Polacek <polacek@redhat.com>
-
- PR c++/94588
- * g++.dg/diagnostic/redeclaration-1.C: Add dg-message.
-
-2020-04-13 Martin Sebor <msebor@redhat.com>
-
- PR c/92326
- * c-c++-common/Warray-bounds-8.c: New test.
- * gcc.dg/Warray-bounds-46.c: Adjust expected format of flexible array
- memebrs in diagnostics.
- * gcc.dg/Warray-bounds-49.c: Same.
-
-2020-04-13 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94521
- * g++.dg/cpp2a/lambda-uneval12.C: New test.
-
- PR c++/94470
- * g++.dg/cpp1y/constexpr-nsdmi8.C: New test.
- * g++.dg/cpp1y/constexpr-nsdmi9.C: New test.
- * g++.dg/init/array57.C: New test.
-
-2020-04-13 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/coro-pre-proc.C: Update coroutines builtin
- define, per n4861.
- * g++.dg/coroutines/coro.h: Likewise.
-
-2020-04-13 Iain Sandoe <iain@sandoe.co.uk>
-
- * gcc.dg/darwin-version-1.c: Use -mmacosx-version-min= 10.8
- for system versions 10.14 and 10.15.
-
-2020-04-13 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/87644
- * gfortran.dg/variable_parameter.f90: New test.
-
-2020-04-13 Linus Koenig <link@sig-st.de>
-
- PR fortran/94192
- * gfortran.dg/bound_resolve_after_error_1.f90: New test.
-
-2020-04-13 Nathan Sidwell <nathan@acm.org>
-
- PR c++/94426
- * g++.dg/cpp0x/lambda/pr94426-[12].C: New.
- * g++.dg/abi/lambda-vis.C: Drop a warning.
- * g++.dg/cpp0x/lambda/lambda-mangle.C: Lambda visibility on
- variable changes.
- * g++.dg/opt/dump1.C: Drop warnings of no import.
-
-2020-04-13 Jozef Lawrynowicz <jozef.l@mittosystems.com>
-
- * gcc.target/msp430/operand-modifiers.c: New test.
-
-2020-04-12 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/94091
- * gfortran.dg/char_length_22.f90: New test.
-
-2020-04-12 Iain Sandoe <iain@sandoe.co.uk>
-
- * gcc.target/i386/indirect-thunk-1.c: Adjust for fno-common
- change, removing indirections for vars in .data.
- * gcc.target/i386/indirect-thunk-2.c: Likewise.
- * gcc.target/i386/indirect-thunk-3.c: Likewise.
- * gcc.target/i386/indirect-thunk-4.c: Likewise.
- * gcc.target/i386/indirect-thunk-attr-1.c: Likewise.
- * gcc.target/i386/indirect-thunk-attr-2.c: Likewise.
- * gcc.target/i386/indirect-thunk-attr-3.c: Likewise.
- * gcc.target/i386/indirect-thunk-attr-4.c: Likewise.
- * gcc.target/i386/indirect-thunk-attr-5.c: Likewise.
- * gcc.target/i386/indirect-thunk-attr-6.c: Likewise.
- * gcc.target/i386/indirect-thunk-extern-1.c: Likewise.
- * gcc.target/i386/indirect-thunk-extern-2.c: Likewise.
- * gcc.target/i386/indirect-thunk-extern-3.c: Likewise.
- * gcc.target/i386/indirect-thunk-extern-4.c: Likewise.
- * gcc.target/i386/indirect-thunk-inline-1.c: Likewise.
- * gcc.target/i386/indirect-thunk-inline-2.c: Likewise.
- * gcc.target/i386/indirect-thunk-inline-3.c: Likewise.
- * gcc.target/i386/indirect-thunk-inline-4.c: Likewise.
-
-2020-04-11 Marek Polacek <polacek@redhat.com>
-
- PR c++/86327
- * g++.dg/cpp1y/constexpr-return5.C: New test.
-
-2020-04-11 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/94494
- * gcc.target/i386/pr94494.c: New test.
-
-2020-04-11 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/94482
- * gcc.dg/torture/pr94482.c: Add -Wno-psabi -w. Don't add -msse
- and sse_runtime effective target on x86, instead only add -msse2
- if target is sse2_runtime.
-
-2020-04-10 Iain Sandoe <iain@sandoe.co.uk>
-
- PR c++/94528
- * g++.dg/coroutines/pr94528.C: New test.
-
-2020-04-10 Marek Polacek <polacek@redhat.com>
-
- PR c++/94149
- * g++.dg/cpp2a/paren-init24.C: New test.
- * g++.dg/cpp2a/paren-init25.C: New test.
- * g++.dg/ext/is_constructible5.C: New test.
-
-2020-04-10 Fritz Reese <foreese@gcc.gnu.org>
-
- * gfortran.dg/asynchronous_5.f03: Fix typo in testcase and add
- IMPLICIT NONE.
-
-2020-04-10 Fritz Reese <foreese@gcc.gnu.org>
-
- * gfortran.dg/asynchronous_5.f03: Add -fdump-tree-original and fix
- patterns for scan-tree-dump.
-
-2020-04-10 Thomas Schwinge <thomas@codesourcery.com>
-
- PR middle-end/89433
- PR middle-end/93465
- * c-c++-common/goacc-gomp/pr93465-1.c: New file.
-
-2020-04-10 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * lib/gdc.exp (gdc_link_flags): Remove libdruntime library paths.
-
-2020-04-10 Bin Cheng <bin.cheng@linux.alibaba.com>
-
- * g++.dg/coroutines/co-await-syntax-10.C: New test.
- * g++.dg/coroutines/co-await-syntax-11.C: New test.
-
-2020-04-09 Fritz Reese <foreese@gcc.gnu.org>
-
- PR fortran/87923
- * gfortran.dg/f2003_io_8.f03: Fix expected error messages.
- * gfortran.dg/io_constraints_8.f90: Likewise.
- * gfortran.dg/iomsg_2.f90: Likewise.
- * gfortran.dg/pr66725.f90: Likewise.
- * gfortran.dg/pr88205.f90: Likewise.
- * gfortran.dg/write_check4.f90: Likewise.
- * gfortran.dg/asynchronous_5.f03: New test.
- * gfortran.dg/io_constraints_15.f90: Likewise.
- * gfortran.dg/io_constraints_16.f90: Likewise.
- * gfortran.dg/io_constraints_17.f90: Likewise.
- * gfortran.dg/io_constraints_18.f90: Likewise.
- * gfortran.dg/io_tags_1.f90: Likewise.
- * gfortran.dg/io_tags_10.f90: Likewise.
- * gfortran.dg/io_tags_2.f90: Likewise.
- * gfortran.dg/io_tags_3.f90: Likewise.
- * gfortran.dg/io_tags_4.f90: Likewise.
- * gfortran.dg/io_tags_5.f90: Likewise.
- * gfortran.dg/io_tags_6.f90: Likewise.
- * gfortran.dg/io_tags_7.f90: Likewise.
- * gfortran.dg/io_tags_8.f90: Likewise.
- * gfortran.dg/io_tags_9.f90: Likewise.
- * gfortran.dg/write_check5.f90: Likewise.
-
-2020-04-09 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/acle/general/attributes_1.c: New test.
- * gcc.target/aarch64/sve/acle/general/attributes_2.c: Likewise.
- * gcc.target/aarch64/sve/acle/general/attributes_3.c: Likewise.
- * gcc.target/aarch64/sve/acle/general/attributes_4.c: Likewise.
- * gcc.target/aarch64/sve/acle/general/attributes_5.c: Likewise.
- * gcc.target/aarch64/sve/acle/general/attributes_6.c: Likewise.
- * gcc.target/aarch64/sve/acle/general/attributes_7.c: Likewise.
- * gcc.target/aarch64/sve/pcs/struct.h: New file.
- * gcc.target/aarch64/sve/pcs/struct_1_128.c: New test.
- * gcc.target/aarch64/sve/pcs/struct_1_256.c: Likewise.
- * gcc.target/aarch64/sve/pcs/struct_1_512.c: Likewise.
- * gcc.target/aarch64/sve/pcs/struct_1_1024.c: Likewise.
- * gcc.target/aarch64/sve/pcs/struct_1_2048.c: Likewise.
- * gcc.target/aarch64/sve/pcs/struct_2_128.c: Likewise.
- * gcc.target/aarch64/sve/pcs/struct_2_256.c: Likewise.
- * gcc.target/aarch64/sve/pcs/struct_2_512.c: Likewise.
- * gcc.target/aarch64/sve/pcs/struct_2_1024.c: Likewise.
- * gcc.target/aarch64/sve/pcs/struct_2_2048.c: Likewise.
- * gcc.target/aarch64/sve/pcs/struct_3_128.c: Likewise.
- * gcc.target/aarch64/sve/pcs/struct_3_256.c: Likewise.
- * gcc.target/aarch64/sve/pcs/struct_3_512.c: Likewise.
- * lib/target-supports.exp (check_effective_target_aarch64_sve128_hw)
- (check_effective_target_aarch64_sve512_hw)
- (check_effective_target_aarch64_sve1024_hw)
- (check_effective_target_aarch64_sve2048_hw): New procedures.
-
-2020-04-09 Matthew Malcomson <matthew.malcomson@arm.com>
-
- * g++.target/arm/cde_mve.C: New test.
-
-2020-04-09 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc.target/arm/cmse/cmse-15.c: Use check-function-bodies.
-
-2020-04-09 Christophe Lyon <christophe.lyon@linaro.org>
-
- * lib/scanasm.exp (check-function-bodies): Use non-greedy regexp
- when extracting the target selector.
-
-2020-04-09 Martin Jambor <mjambor@suse.cz>
-
- PR tree-optimization/94482
- * gcc.dg/torture/pr94482.c: New test.
- * gcc.dg/tree-ssa/pr94482-2.c: Likewise.
-
-2020-04-09 Marek Polacek <polacek@redhat.com>
-
- PR c++/93790
- * g++.dg/cpp2a/paren-init23.C: New test.
- * g++.dg/init/aggr14.C: New test.
-
-2020-04-09 Jan Hubicka <hubicka@ucw.cz>
-
- PR tree-optimization/91322
- * g++.dg/lto/alias-4_0.C: Fix typo.
- * g++.dg/lto/alias-4_0.C: Avoid conflict with va_list on ARM and add
- a template testing that
-
-2020-04-09 Richard Sandiford <richard.sandiford@arm.com>
-
- * lib/scanasm.exp (check-function-bodies): Treat the third
- parameter as a list of option regexps and require each regexp
- to match. Check for cases in which a target/xfail selector
- was mistakenly passed to the options argument.
- * gcc.target/aarch64/sve/pcs/args_1.c: Add an empty options list
- to the invocation of check-function-bodies.
- * gcc.target/aarch64/sve/pcs/args_2.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_3.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_4.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_1.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_1_1024.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_1_128.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_1_2048.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_1_256.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_1_512.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_2.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_3.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_4.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_4_1024.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_4_128.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_4_2048.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_4_256.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_4_512.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_5.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_5_1024.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_5_128.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_5_2048.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_5_256.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_5_512.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_6.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_6_1024.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_6_128.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_6_2048.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_6_256.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_6_512.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_2_be_nowrap.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_2_be_wrap.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_2_le_nowrap.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_2_le_wrap.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_3.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_4_be.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_4_le.c: Likewise.
- * gcc.target/aarch64/sve/pcs/stack_clash_2_128.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_1.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_f16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_f32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_f64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_s16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_s32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_s64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_s8.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_u16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_u32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_u64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_u8.c: Likewise.
-
-2020-04-09 Richard Biener <rguenther@suse.de>
-
- PR testsuite/93369
- * g++.dg/lto/pr64076_0.C: Add -shared -fPIC.
- * g++.dg/lto/pr64076_1.C: Add -fPIC.
-
-2020-04-09 Andrea Corallo <andrea.corallo@arm.com>
-
- * gcc.target/aarch64/pr94530.c: New test.
-
-2020-04-09 Bin Cheng <bin.cheng@linux.alibaba.com>
-
- PR tree-optimization/93674
- * g++.dg/pr93674.C: New test.
-
-2020-04-08 Sandra Loosemore <sandra@codesourcery.com>
-
- * g++.dg/tree-ssa/pr93940.C: Require pthread target.
-
-2020-04-09 Kewen Lin <linkw@gcc.gnu.org>
-
- PR testsuite/94079
- * gfortran.dg/vect/pr83232.f90: Expect 2 rather than 3 times SLP on
- non-vect_hw_misalign targets.
-
-2020-04-08 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/94526
- * gcc.dg/pr94526.c: New test.
-
- PR tree-optimization/94524
- * gcc.c-torture/execute/pr94524-1.c: New test.
- * gcc.c-torture/execute/pr94524-2.c: New test.
-
- PR c++/94314
- * g++.dg/pr94314.C (A::operator new, B::operator new, C::operator new):
- Use __SIZE_TYPE__ instead of unsigned long.
- * g++.dg/pr94314-3.C (base::operator new, B::operator new): Likewise.
-
- PR middle-end/94120
- PR testsuite/94533
- * g++.dg/declare-pr94120.C: Move test to ...
- * g++.dg/goacc/declare-pr94120.C: ... here. Add dg-error directives.
-
-2020-04-08 Marek Polacek <polacek@redhat.com>
-
- PR c++/94507 - ICE-on-invalid with lambda template.
- * g++.dg/cpp2a/lambda-generic7.C: New test.
-
-2020-04-08 Alexandre Oliva <oliva@adacore.com>
-
- * gcc.target/arm/fp16-aapcs-3.c: Explicitly use the
- -mfp16-format=alternative option.
-
-2020-04-08 H.J. Lu <hongjiu.lu@intel.com>
-
- PR target/94417
- * gcc.target/i386/pr94417-1.c: New test.
- * gcc.target/i386/pr94417-2.c: Likewise.
- * gcc.target/i386/pr94417-3.c: Likewise.
-
-2020-04-08 Jakub Jelinek <jakub@redhat.com>
-
- PR target/94438
- * gcc.target/i386/avx512bw-pr94438.c: New test.
- * gcc.target/i386/avx512vlbw-pr94438.c: New test.
-
-2020-04-08 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/93871
- * gfortran.dg/dec_math_5.f90: Move to ...
- * gfortran.dg/ieee/dec_math_1.f90: ... here; change
- dg-options to dg-additional-options.
-
-2020-04-08 Alexandre Oliva <oliva@adacore.com>
-
- * gcc.dg/tls/pr78796.c: Require tls_runtime.
-
-2020-04-08 Martin Liska <mliska@suse.cz>
-
- PR c++/94314
- * g++.dg/pr94314-2.C: New test.
- * g++.dg/pr94314-3.C: New test.
- * g++.dg/pr94314.C: New test.
-
-2020-04-08 Dennis Zhang <dennis.zhang@arm.com>
-
- * gcc.target/arm/acle/cde_v_1.c: New test.
- * gcc.target/arm/acle/cde_v_1_err.c: New test.
- * gcc.target/arm/acle/cde_v_1_mve.c: New test.
-
-2020-04-08 Patrick Palka <ppalka@redhat.com>
-
- Core issues 1001 and 1322
- PR c++/92010
- * g++.dg/cpp2a/lambda-uneval11.c: New test.
- * g++.dg/template/array33.C: New test.
- * g++.dg/template/array34.C: New test.
- * g++.dg/template/defarg22.C: New test.
-
-2020-04-08 Dennis Zhang <dennis.zhang@arm.com>
-
- * gcc.target/arm/pragma_cde.c: New test.
- * lib/target-supports.exp (arm_v8m_main_cde_ok): New target support
- option.
- (arm_v8m_main_cde_fp, arm_v8_1m_main_cde_mve): Likewise.
-
-2020-04-08 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/94325
- * g++.dg/ubsan/vptr-15.C: New test.
-
-2020-04-08 Marek Polacek <polacek@redhat.com>
-
- PR c++/94478 - ICE with defaulted comparison operator
- * g++.dg/cpp2a/spaceship-err4.C: New test.
-
-2020-04-08 Alexandre Oliva <oliva@adacore.com>
-
- * gcc.target/arm/polytypes.c: Add quotes around
- -flax-vector-conversions.
-
-2020-04-08 Jakub Jelinek <jakub@redhat.com>
-
- PR rtl-optimization/94516
- * gcc.dg/torture/pr94516.c: New test.
-
-2020-04-08 Tobias Burnus <tobias@codesourcery.com>
-
- PR middle-end/94120
- * c-c++-common/goacc/declare-pr94120.c: New.
- * g++.dg/declare-pr94120.C: New.
-
-2020-04-07 Jakub Jelinek <jakub@redhat.com>
-
- PR rtl-optimization/94291
- PR rtl-optimization/84169
- * gcc.dg/pr94291.c: New test.
-
-2020-04-07 Richard Biener <rguenther@suse.de>
-
- PR middle-end/94479
- * gcc.dg/torture/pr94479.c: New testcase.
-
-2020-04-01 Fritz Reese <foreese@gcc.gnu.org>
-
- PR fortran/93871
- * gfortran.dg/dec_math.f90: Extend coverage to real(10) and real(16).
- * gfortran.dg/dec_math_2.f90: New test.
- * gfortran.dg/dec_math_3.f90: Likewise.
- * gfortran.dg/dec_math_4.f90: Likewise.
- * gfortran.dg/dec_math_5.f90: Likewise.
-
-2020-04-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
-
- * g++.target/arm/mve.exp: New.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_f16: Fix testism.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_f32: Likewise.
-
-2020-04-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vuninitializedq_float.c: Fix testism.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_int.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c: Likewise.
-
-2020-04-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
-
- * gcc.target/arm/mve/intrinsics/mve_vec_extracts_from_memory.c: New
- test.
-
-2020-04-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
-
- * gcc.target/arm/mve/intrinsics/mve_immediates_1_n.c: New test.
-
-2020-04-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
-
- * gcc.target/arm/mve/intrinsics/mve_load_from_array.c: New test.
- * gcc.target/arm/mve/intrinsics/mve_vector_float.c: Remove
- scan-assembler.
- * gcc.target/arm/mve/intrinsics/mve_vector_float1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_int1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_int2.c: Likewise.
-
-2020-04-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vmulq_n_f16.c: Fix test.
- * gcc.target/arm/mve/intrinsics/vmulq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_u8.c: Likewise.
-
-2020-04-07 Patrick Palka <ppalka@redhat.com>
-
- PR c++/90996
- * g++.dg/cpp1y/pr90996.C: New test.
-
-2020-04-07 Jakub Jelinek <jakub@redhat.com>
-
- PR target/94509
- * gcc.target/i386/avx512bw-pr94509-1.c: New test.
- * gcc.target/i386/avx512bw-pr94509-2.c: New test.
-
- PR c++/94512
- * g++.dg/gomp/pr94512.C: New test.
-
- PR target/94488
- * gcc.c-torture/compile/pr94488.c: New test.
-
- PR target/94500
- * gcc.target/i386/avx512bw-pr94500.c: New test.
-
-2020-04-06 Steven G. Kargl <kargl@gcc.gnu.org>
-
- PR fortran/93686
- * gfortran.dg/pr93686_1.f90: New test.
- * gfortran.dg/pr93686_2.f90: Likewise.
- * gfortran.dg/pr93686_3.f90: Likewise.
- * gfortran.dg/pr93686_4.f90: Likewise.
-
-2020-04-06 Joel Brobecker <brobecker@adacore.com>
-
- * gcc.target/arm/div64-unwinding.c: Skip on vxworks_kernel targets.
-
-2020-04-04 Marek Polacek <polacek@redhat.com>
-
- PR c++/94155 - crash in gimplifier with paren init of aggregates.
- * g++.dg/cpp2a/paren-init22.C: New test.
-
-2020-04-05 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/torture/co-await-14-template-traits.C: Rename...
- * g++.dg/coroutines/torture/co-await-16-template-traits.C: to this.
- * g++.dg/coroutines/torture/co-await-15-capture-comp-ref.C: Rename..
- * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: to this.
-
-2020-04-05 Nagaraju Mekala <nmekala@xilix.com>
-
- * gcc.target/microblaze/others/builtin-trap.c: Update expected output.
-
-2020-04-04 Hannes Domani <ssbssa@yahoo.de>
- Jakub Jelinek <jakub@redhat.com>
-
- PR debug/94459
- * g++.dg/debug/pr94459.C: New test.
-
-2020-04-04 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94205
- PR c++/79937
- * g++.dg/cpp1y/pr79937-5.C: New test.
- * g++.dg/cpp1z/lambda-this6.C: New test.
-
- PR c++/94219
- PR c++/94205
- * g++.dg/cpp1y/constexpr-nsdmi3.C: New test.
- * g++.dg/cpp1y/constexpr-nsdmi4.C: New test.
- * g++.dg/cpp1y/constexpr-nsdmi5.C: New test.
- * g++.dg/cpp1z/lambda-this5.C: New test.
-
-2020-04-04 Jan Hubicka <hubicka@ucw.cz>
-
- PR ipa/93940
- * g++.dg/tree-ssa/pr93940.C: New test.
-
-2020-04-04 Jakub Jelinek <jakub@redhat.com>
-
- PR rtl-optimization/94468
- * g++.dg/opt/pr94468.C: New test.
-
- PR debug/94441
- * g++.dg/opt/pr94441.C: New test.
-
- PR c++/94477
- * g++.dg/gomp/pr94477.C: New test.
-
-2020-04-03 H.J. Lu <hongjiu.lu@intel.com>
-
- PR target/94467
- * gcc.target/i386/pr94467-1.c: New test.
- * gcc.target/i386/pr94467-2.c: Likewise.
-
-2020-04-03 Jakub Jelinek <jakub@redhat.com>
-
- PR target/94460
- * gcc.target/i386/avx2-pr94460.c: New test.
-
-2020-04-03 Patrick Palka <ppalka@redhat.com>
-
- PR c++/93211
- PR c++/90711
- * g++.dg/template/koenig11.C: New test.
-
-2020-04-03 Andre Vieira <andre.simoesdiasvieira@arm.com>
-
- * gcc.target/arm/mve/intrinsics/mve_vector_float.c: Put -mfpu=auto back.
- * gcc.target/arm/mve/intrinsics/mve_vector_float1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_float2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_int.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_int1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_int2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_uint.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_uint1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_uint2.c: Likewise.
-
-2020-04-03 Tamar Christina <tamar.christina@arm.com>
-
- PR target/94396
- * gcc.target/aarch64/options_set_11.c: New test.
- * gcc.target/aarch64/options_set_12.c: New test.
- * gcc.target/aarch64/options_set_13.c: New test.
- * gcc.target/aarch64/options_set_14.c: New test.
- * gcc.target/aarch64/options_set_15.c: New test.
- * gcc.target/aarch64/options_set_16.c: New test.
- * gcc.target/aarch64/options_set_17.c: New test.
- * gcc.target/aarch64/options_set_18.c: New test.
- * gcc.target/aarch64/options_set_19.c: New test.
- * gcc.target/aarch64/options_set_20.c: New test.
- * gcc.target/aarch64/options_set_21.c: New test.
- * gcc.target/aarch64/options_set_22.c: New test.
- * gcc.target/aarch64/options_set_23.c: New test.
- * gcc.target/aarch64/options_set_24.c: New test.
- * gcc.target/aarch64/options_set_25.c: New test.
- * gcc.target/aarch64/options_set_26.c: New test.
-
-2020-04-03 Kewen Lin <linkw@gcc.gnu.org>
-
- PR tree-optimization/94443
- * gcc.dg/vect/pr94443.c: New test.
-
-2020-04-02 Sandra Loosemore <sandra@codesourcery.com>
-
- * lib/target-supports.exp (check_effective_target_sigsetjmp): Test
- for __sigsetjmp as well as sigsetjmp.
-
-2020-04-02 Fritz Reese <foreese@gcc.gnu.org>
-
- PR fortran/85982
- * gfortran.dg/dec_structure_28.f90: New test.
-
-2020-04-02 Tobias Burnus <tobias@codesourcery.com>
-
- * gfortran.dg/dtio_35.f90: New.
-
-2020-04-02 Richard Biener <rguenther@suse.de>
-
- PR c/94392
- * gcc.dg/torture/pr94392.c: New testcase.
-
-2020-04-02 Jakub Jelinek <jakub@redhat.com>
-
- PR target/94435
- * gcc.target/aarch64/pr94435.c: New test.
-
-2020-04-02 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- PR target/94317
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c: Modify.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c: Likewise.
-
-2020-04-02 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/93522
- * gfortran.dg/select_rank_4.f90: New.
-
-2020-04-02 Mark Eggleston <mark.eggleston@codethink.com>
-
- PR fortran/93498
- * gfortran.dg/pr93498_1.f90: New test.
- * gfortran.dg/pr93498_2.f90: New test.
-
-2020-04-02 Mark Eggleston <mark.eggleston@codethink.com>
- Steven G. Kargl <kargl@gcc.gnu.org>
-
- PR fortran/94030
- * gfortran.dg/pr94030_1.f90: New test.
- * gfortran.dg/pr94030_2.f90: New test.
-
-2020-04-01 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/94315
- * gdc.dg/pr93038.d: Split scan-file into multiple tests.
- * gdc.dg/pr93038b.d: Likewise.
-
-2020-04-01 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/94321
- * gdc.dg/pr92216.d: Update to work on targets with 16 or 32-bit
- pointers.
-
-2020-04-01 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/94378
- * gcc.dg/analyzer/compound-assignment-1.c: New test.
- * gcc.dg/analyzer/compound-assignment-2.c: New test.
- * gcc.dg/analyzer/compound-assignment-3.c: New test.
-
-2020-04-01 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/94436
- * gcc.dg/pr94436.c: New test.
-
- PR middle-end/94423
- * gcc.dg/ubsan/pr94423.c: New test.
-
-2020-04-01 Kewen Lin <linkw@gcc.gnu.org>
-
- PR tree-optimization/94043
- * gfortran.dg/graphite/vect-pr94043.f90: New test.
-
-2020-04-01 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/90136
- * gdc.dg/pr90136a.d: New test.
- * gdc.dg/pr90136b.d: New test.
- * gdc.dg/pr90136c.d: New test.
-
-2020-03-31 Andrea Corallo <andrea.corallo@arm.com>
-
- * jit.dg/test-version.c: New testcase.
- * jit.dg/all-non-failing-tests.h: Add test-version.c.
-
-2020-03-31 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/94424
- * gdc.dg/pr94424.d: New test.
-
-2020-03-31 Felix Yang <felix.yang@huawei.com>
-
- PR tree-optimization/94398
- * gcc.target/aarch64/pr94398.c: New test.
-
-2020-03-31 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vbicq_n_s16.c: Modify.
- * gcc.target/arm/mve/intrinsics/vbicq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_n_u32.c: Likewise.
-
-2020-03-31 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u16.c: Modify.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_f32.c: Likewise.
-
-2020-03-31 Jakub Jelinek <jakub@redhat.com>
-
- PR target/94368
- * gcc.dg/pr94368.c: New test.
-
- PR middle-end/94412
- * gcc.c-torture/execute/pr94412.c: New test.
-
- PR tree-optimization/94403
- * g++.dg/tree-ssa/pr94403.C: New test.
-
- PR rtl-optimization/94344
- * gcc.dg/pr94344.c: New test.
-
-2020-03-30 David Malcolm <dmalcolm@redhat.com>
-
- * jit.dg/all-non-failing-tests.h: Add test-empty.c
-
-2020-03-30 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/94385
- * c-c++-common/pr94385.c: New test.
-
-2020-03-30 Will Schmidt <will_schmidt@vnet.ibm.com>
-
- * gcc.target/powerpc/pragma_power6.c: New.
- * gcc.target/powerpc/pragma_power7.c: New.
- * gcc.target/powerpc/pragma_power8.c: New.
- * gcc.target/powerpc/pragma_power9.c: New.
- * gcc.target/powerpc/pragma_misc9.c: New.
- * gcc.target/powerpc/vsu/vec-all-nez-7.c: Update error message.
- * gcc.target/powerpc/vsu/vec-any-eqz-7.c: Update error message.
-
-2020-03-30 Will Schmidt <will_schmidt@vnet.ibm.com>
-
- * gcc.target/powerpc/bswap64-4.c: Update scan-assembler
- expected results.
-
-2020-03-30 Jakub Jelinek <jakub@redhat.com>
-
- PR target/94343
- * gcc.target/i386/avx512f-pr94343.c: New test.
- * gcc.target/i386/avx512vl-pr94343.c: New test.
-
-2020-03-30 Martin Liska <mliska@suse.cz>
-
- PR rtl-optimization/87716
- * gcc.target/i386/pr57193.c: XFAIL a test-case.
-
-2020-03-30 Martin Liska <mliska@suse.cz>
-
- PR testsuite/94402
- * gfortran.dg/vect/vect-8.f90: Allow 22 or 23 loops
- to be vectorized (based on libmvec presence).
-
-2020-03-30 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93069
- * gcc.target/i386/avx512vl-pr93069.c: New test.
- * gcc.dg/vect/pr93069.c: New test.
-
-2020-03-29 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * lib/gdc-utils.exp: (gdc-convert-args): Handle compilation test
- arguments -D, -H, -X, and set compilable_output_file_ext.
- (gdc-convert-test): Document and add cases DFLAGS and
- EXTRA_CPP_SOURCES. Add dg-final entry for output generation tests,
- and set compilable_do_what to compile.
- (gdc-do-test): Define compilable_do_what, default to assemble.
-
-2020-03-29 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * gdc.test/runnable_cxx/runnable_cxx.exp: New file.
- * lib/gdc-utils.exp (gdc-do-test): Add case for runnable_cxx.
- * lib/gdc.exp (gdc_include_flags): Only add flags for libstdc++-v3 if
- GDC_INCLUDE_CXX_FLAGS is true.
- (gdc_link_flags): Likewise.
- (gdc_init): Move setting of default gdc test flags to...
- (gdc_target_compile): ...here.
-
-2020-03-29 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * gdc.test/compilable/compilable.exp: New file.
- * gdc.test/fail_compilation/fail_compilation.exp: New file.
- * gdc.test/runnable/runnable.exp: New file.
- * gdc.test/gdc-test.exp: Move and rename to...
- * lib/gdc-utils.exp: ...this. Remove load_lib gdc-dg.exp.
- (dmd2dg): Rename to...
- (gdc-convert-test): ...this.
- (gdc-do-test): Add testcases parameter and remove subdir handling.
-
-2020-03-28 Roman Zhuykov <zhroma@ispras.ru>
-
- * gcc.dg/torture/pr87197-debug-sms.c: Move to ...
- * gcc.dg/sms-compare-debug-1.c: ... this. Add -O2.
- * gcc.c-torture/execute/pr70127-debug-sms.c: Move to ...
- * gcc.dg/sms-compare-debug-2.c: ... this. Add -O2.
-
-2020-03-28 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/94348
- * gfortran.dg/module_procedure_3.f90: New.
-
-2020-03-28 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94306
- * g++.dg/concepts/diagnostic8.C: New test.
-
- PR c++/94252
- * g++.dg/concepts/diagnostic7.C: New test.
- * g++.dg/concepts/pr94252.C: New test.
- * g++.dg/cpp2a/concepts-requires18.C: Adjust to expect an additional
- diagnostic.
-
- * g++.dg/concepts/diagnostic1.C: Pass -fconcepts-diagnostics-depth=2.
- * g++.dg/concepts/diagnostic5.C: Adjust expected diagnostics.
- * g++.dg/cpp2a/concepts-iconv1.C: Pass -fconcepts-diagnostics-depth=2.
- * g++.dg/cpp2a/concepts-requires5.C: Likewise.
-
- * g++.dg/concepts/diagnostic2.C: Expect "no operand" instead of
- "neither operand".
- * g++.dg/concepts/diagnostic5.C: New test.
-
-2020-03-28 Jakub Jelinek <jakub@redhat.com>
-
- PR c/93573
- * gcc.dg/pr93573-1.c: New test.
- * gcc.dg/pr93573-2.c: New test.
-
- PR tree-optimization/94329
- * gfortran.dg/pr94329.f90: New test.
-
-2020-03-27 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/94339
- * g++.dg/ext/attr-copy-2.C: Revert the last changes.
-
-2020-03-27 Martin Sebor <msebor@redhat.com>
-
- PR c++/94346
- * c-c++-common/attr-copy.c: New test.
-
-2020-03-27 Martin Sebor <msebor@redhat.com>
-
- PR c++/94098
- * g++.dg/ext/attr-access-2.C: New test.
-
-2020-03-27 Martin Sebor <msebor@redhat.com>
-
- PR c++/94078
- PR c++/93824
- PR c++/93810
- * g++.dg/warn/Wmismatched-tags-3.C: New test.
- * g++.dg/warn/Wmismatched-tags-4.C: New test.
- * g++.dg/warn/Wmismatched-tags-5.C: New test.
- * g++.dg/warn/Wmismatched-tags-6.C: New test.
- * g++.dg/warn/Wredundant-tags-3.C: Remove xfails.
- * g++.dg/warn/Wredundant-tags-6.C: New test.
- * g++.dg/warn/Wredundant-tags-7.C: New test.
-
-2020-03-27 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/data-model-5b.c: Add xfail for new false
- positive leak.
- * gcc.dg/analyzer/data-model-5c.c: Likewise.
- * gcc.dg/analyzer/malloc-5.c: New test.
-
-2020-03-27 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/dot-output.c: Check that
- dot-output.c.supergraph-eg.dot is valid.
-
-2020-03-27 Richard Biener <rguenther@suse.de>
-
- PR debug/94273
- * g++.dg/debug/pr94273.C: New testcase.
-
-2020-03-27 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/93957
- * gfortran.dg/assumed_rank_19.f90: New.
-
-2020-03-27 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/93363
- * gfortran.dg/associate_51.f90: Fix test case.
- * gfortran.dg/associate_53.f90: New.
-
-2020-03-27 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/94326
- * g++.dg/other/pr94326.C: New test.
-
- PR c++/94339
- * g++.dg/other/pr94339.C: New test.
- * g++.dg/ext/attr-copy-2.C: Comment out failing tests due to PR94346.
-
-2020-03-27 Roman Zhuykov <zhroma@ispras.ru>
-
- * gcc.c-torture/execute/pr70127-debug-sms.c: New test.
- * gcc.dg/torture/pr87197-debug-sms.c: New test.
-
-2020-03-27 Marek Polacek <polacek@redhat.com>
-
- PR c++/94336 - template keyword accepted before destructor names.
- * g++.dg/template/template-keyword2.C: New test.
-
-2020-03-27 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/torture/symmetric-transfer-00-basic.C:
- Add <cstdio>.
-
-2020-03-26 Marek Polacek <polacek@redhat.com>
-
- DR 1710
- PR c++/94057 - template keyword in a typename-specifier.
- * g++.dg/cpp1y/alias-decl1.C: New test.
- * g++.dg/cpp1y/alias-decl2.C: New test.
- * g++.dg/cpp1y/alias-decl3.C: New test.
- * g++.dg/parse/missing-template1.C: Update dg-error.
- * g++.dg/parse/template3.C: Likewise.
- * g++.dg/template/error4.C: Likewise.
- * g++.dg/template/meminit2.C: Likewise.
- * g++.dg/template/dependent-name5.C: Likewise.
- * g++.dg/template/dependent-name7.C: New test.
- * g++.dg/template/dependent-name8.C: New test.
- * g++.dg/template/dependent-name9.C: New test.
- * g++.dg/template/dependent-name10.C: New test.
- * g++.dg/template/dependent-name11.C: New test.
- * g++.dg/template/dependent-name12.C: New test.
- * g++.dg/template/dependent-name13.C: New test.
- * g++.dg/template/dr1794.C: New test.
- * g++.dg/template/dr314.C: New test.
- * g++.dg/template/dr1710.C: New test.
- * g++.dg/template/dr1710-2.C: New test.
- * g++.old-deja/g++.pt/crash38.C: Update dg-error.
-
-2020-03-26 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C: Amend
- to n4849 behaviour.
- * g++.dg/coroutines/torture/symmetric-transfer-00-basic.C: New
- test.
-
-2020-03-26 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C: New test.
-
-2020-03-26 Martin Liska <mliska@suse.cz>
-
- * gcc.target/i386/pr81213.c: Do not scan assembler
- and add one missing PR entry.
-
-2020-03-26 Jakub Jelinek <jakub@redhat.com>
-
- PR debug/94323
- * g++.dg/debug/pr94323.C: New test.
-
-2020-03-26 Martin Liska <mliska@suse.cz>
-
- PR testsuite/94334
- * gcc.dg/lto/pr94271_0.c: Skip for non-x86 targets
- and add ifunc effective target.
- * gcc.target/i386/pr81213-2.c: Add ifunc effective target.
-
-2020-03-26 Jakub Jelinek <jakub@redhat.com>
-
- PR debug/94281
- * g++.dg/debug/pr94281.C: New test.
-
- PR c++/81349
- * g++.dg/cpp1z/pr81349.C: New test.
-
- PR c++/94272
- * g++.dg/debug/pr94272.C: New test.
-
-2020-03-26 Felix Yang <felix.yang@huawei.com>
-
- PR tree-optimization/94269
- * gcc.dg/pr94269.c: New test.
-
-2020-03-25 Andrew Stubbs <ams@codesourcery.com>
-
- * gcc.dg/vect/bb-slp-pr69907.c: Disable the dump scan for amdgcn.
- * lib/target-supports.exp (check_effective_target_vect_unpack):
- Add amdgcn.
-
-2020-03-25 Jakub Jelinek <jakub@redhat.com>
-
- PR target/94292
- * gcc.dg/pr94292.c: New test.
-
-2020-03-25 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/94004
- * gcc.dg/Walloca-larger-than-3.c: New test.
- * gcc.dg/Walloca-larger-than-3.h: New test header.
- * gcc.dg/Wvla-larger-than-4.c: New test.
-
-2020-03-25 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94265
- * g++.dg/warn/Wduplicated-cond1.C: New test.
-
-2020-03-25 Martin Sebor <msebor@redhat.com>
-
- PR tree-optimization/94131
- * gcc.dg/pr94131.c: New test.
-
-2020-03-25 Sandra Loosemore <sandra@codesourcery.com>
-
- * gcc.dg/pr92301.c (main): Allow argc to be 0 to support
- embedded targets.
-
-2020-03-25 Jakub Jelinek <jakub@redhat.com>
-
- PR debug/94296
- * gcc.dg/cleanup-13.c: Add a comment that the test is not
- -fcompare-debug compatible with certain other options.
-
- PR target/94308
- * gcc.target/i386/pr94308.c: New test.
-
-2020-03-25 Martin Liska <mliska@suse.cz>
-
- PR target/93274
- PR ipa/94271
- * gcc.target/i386/pr81213-2.c: New test.
- * gcc.target/i386/pr81213.c: Add additional source.
- * gcc.dg/lto/pr94271_0.c: New test.
- * gcc.dg/lto/pr94271_1.c: New test.
-
-2020-03-25 Jakub Jelinek <jakub@redhat.com>
-
- PR debug/94280
- * gfortran.dg/iso_c_binding_compiler_1.f90: Add dg-skip-if for
- -fcompare-debug.
- * gfortran.dg/iso_c_binding_compiler_3.f90: Likewise.
- * gfortran.dg/unlimited_polymorphic_31.f03: Likewise.
-
-2020-03-25 Mark Eggleston <mark.eggleston@codethink.com>
-
- PR fortran/93484
- * gfortran.dg/pr93484_1.f90: New test.
- * gfortran.dg/pr93484_2.f90: New test.
-
-2020-03-25 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/94303
- * g++.dg/torture/pr94303.C: New test.
-
- PR c++/94223
- * g++.dg/opt/pr94223.C: New test.
-
- PR tree-optimization/94300
- * gcc.target/i386/avx512f-pr94300.c: New test.
-
- PR debug/94283
- * gcc.dg/pr94283.c: New test.
-
-2020-03-24 Sandra Loosemore <sandra@codesourcery.com>
-
- * gcc.dg/analyzer/sigsetjmp-5.c: Require sigsetjmp support.
+ * gcc.dg/analyzer/sigsetjmp-5.c: Use sigjmp_buf.
* gcc.dg/analyzer/sigsetjmp-6.c: Likewise.
- * lib/target-supports.exp (check_effective_target_sigsetjmp): New.
-
-2020-03-24 Marek Polacek <polacek@redhat.com>
-
- PR c++/94190 - wrong no post-decrement operator error in template.
- * g++.dg/conversion/op7.C: New test.
-
-2020-03-24 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc/arm/vfp-1.c: Use arm_fp__ok effective-target.
- * gcc.target/arm/vfp-ldmdbd.c: Likewise.
- * gcc.target/arm/vfp-ldmiad.c: Likewise.
- * gcc.target/arm/vfp-stmdbd.c: Likewise.
- * gcc.target/arm/vfp-stmiad.c: Likewise.
- * gcc.target/arm/vnmul-1.c: Likewise.
- * gcc.target/arm/vnmul-3.c: Likewise.
- * gcc.target/arm/vnmul-4.c: Likewise.
-
-2020-03-24 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc.target/arm/cmp-2.c: Move double-precision tests to...
- * gcc.target/arm/cmp-3.c: ...here (new file)
-
-2020-03-24 Christophe Lyon <christophe.lyon@linaro.org>
-
- * lib/target-supports.exp
- (check_effective_target_arm_fp_dp_ok_nocache): New.
- (check_effective_target_arm_fp_dp_ok): New.
- (add_options_for_arm_fp_dp): New.
-
-2020-03-24 Jakub Jelinek <jakub@redhat.com>
-
- PR target/94286
- * gcc.dg/pr94286.c: New test.
-
- PR debug/94285
- * gfortran.dg/pr94285.f90: New test.
-
- PR debug/94283
- * gcc.target/i386/pr94283.c: New test.
-
- PR debug/94277
- * gcc.dg/pr94277.c: New test.
-
-2020-03-23 Jeff Law <law@redhat.com>
-
- PR target/94144
- PR target/94238
- * gcc.c-torture/compile/pr94144.c: New test.
- * gcc.c-torture/compile/pr94238.c: New test.
-
-2020-03-23 Patrick Palka <ppalka@redhat.com>
-
- PR c++/93805
- * g++.dg/warn/Wnoexcept2.C: New test.
-
-2020-03-23 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/91993
- * g++.dg/warn/Wconversion-pr91993.C: New test.
- * g++.dg/ubsan/pr91993.C: New test.
- * c-c++-common/ubsan/float-cast-overflow-1.c: Add -Wno-overflow
- to dg-options.
- * c-c++-common/ubsan/float-cast-overflow-2.c: Likewise.
- * c-c++-common/ubsan/float-cast-overflow-4.c: Likewise.
-
-2020-03-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
- Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vshlcq_m_s16.c: New test.
- * gcc.target/arm/mve/intrinsics/vshlcq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlcq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlcq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlcq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlcq_m_u8.c: Likewise.
-
-2020-03-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/asrl.c: New test.
- * gcc.target/arm/mve/intrinsics/lsll.c: Likewise.
- * gcc.target/arm/mve/intrinsics/sqrshr.c: Likewise.
- * gcc.target/arm/mve/intrinsics/sqrshrl_sat48.c: Likewise.
- * gcc.target/arm/mve/intrinsics/sqrshrl_sat64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/sqshl.c: Likewise.
- * gcc.target/arm/mve/intrinsics/sqshll.c: Likewise.
- * gcc.target/arm/mve/intrinsics/srshr.c: Likewise.
- * gcc.target/arm/mve/intrinsics/srshrl.c: Likewise.
- * gcc.target/arm/mve/intrinsics/uqrshl.c: Likewise.
- * gcc.target/arm/mve/intrinsics/uqrshll_sat48.c: Likewise.
- * gcc.target/arm/mve/intrinsics/uqrshll_sat64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/uqshl.c: Likewise.
- * gcc.target/arm/mve/intrinsics/uqshll.c: Likewise.
- * gcc.target/arm/mve/intrinsics/urshr.c: Likewise.
- * gcc.target/arm/mve/intrinsics/urshrl.c: Likewise.
- * lib/target-supports.exp:
- (check_effective_target_arm_v8_1m_mve_fp_ok_nocache): Modify to not
- support MVE floating point in Big Endian mode.
- (check_effective_target_arm_v8_1m_mve_ok_nocache): Modify to not
- support MVE integer in Big Endian mode.
-
-2020-03-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
- Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c: New test.
- * gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsetq_lane_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsetq_lane_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsetq_lane_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsetq_lane_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsetq_lane_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsetq_lane_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsetq_lane_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsetq_lane_u8.c: Likewise.
-
-2020-03-23 Andrea Corallo <andrea.corallo@arm.com>
-
- * jit.dg/all-non-failing-tests.h: Add test-long-string-literal.c.
- * jit.dg/test-long-string-literal.c: New testcase.
-
-2020-03-23 Andre Vieira <andre.simoesdiasvieira@arm.com>
-
- * gcc.target/arm/mve/intrinsics/mve_fp_fpu1.c: Remove dg-do.
- * gcc.target/arm/mve/intrinsics/mve_fp_fpu2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_fpu1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_fpu2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_fpu3.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_libcall1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_libcall2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_move_gpr_to_gpr.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_float.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_float1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_float2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_int.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_int1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_int2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_uint.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_uint1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_uint2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vadciq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vadciq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vadciq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vadciq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vadcq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vadcq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vadcq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vadcq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddlvaq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddlvaq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddlvaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddlvaq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddlvq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddlvq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddlvq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddlvq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot180_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot180_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot270_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot270_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot90_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot90_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vctp16q.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vctp16q_m.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vctp32q.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vctp32q_m.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vctp64q.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vctp64q_m.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vctp8q.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vctp8q_m.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_m_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_m_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_m_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_m_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_x_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_x_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_x_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_x_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtbq_f16_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtbq_f32_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtbq_m_f16_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtbq_m_f32_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtbq_x_f32_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_m_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_m_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_m_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_m_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_x_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_x_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_x_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_x_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_m_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_m_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_m_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_m_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_x_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_x_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_x_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_x_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_m_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_m_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_m_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_m_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_x_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_x_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_x_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_x_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_f16_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_f16_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_f32_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_f32_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_f16_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_f16_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_f32_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_f32_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_n_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_n_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_n_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_n_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_n_f16_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_n_f16_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_n_f32_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_n_f32_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_n_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_n_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_n_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_n_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_f16_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_f16_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_f32_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_f32_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_n_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_n_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_n_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_n_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvttq_f16_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvttq_f32_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvttq_m_f16_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvttq_m_f32_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvttq_x_f32_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_x_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_x_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmasq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmasq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmsq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmsq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmsq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmsq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld2q_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld2q_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld2q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld2q_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld2q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld2q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld2q_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld2q_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld4q_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld4q_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld4q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld4q_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld4q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld4q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld4q_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld4q_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_z_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_z_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_z_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_z_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_z_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_z_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_z_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_z_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxaq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxaq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxavq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxavq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxavq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminaq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminaq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminaq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminaq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminaq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmaq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmaq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmaq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmaq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmavq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmavq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmavq_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmavq_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmvq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmvq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmvq_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmvq_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavxq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavxq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavaq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavaxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavaxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovnbq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovnbq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovnbq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovnbq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovnbq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovnbq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovnbq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovnbq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovntq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovntq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovntq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovntq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovntq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovntq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovntq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovntq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_poly_p16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_poly_p8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_poly_p16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_poly_p8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpnot.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqabsq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqabsq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqabsq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqabsq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqabsq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqabsq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmullbq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmullbq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmullbq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmullbq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmullbq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmullbq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulltq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulltq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulltq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulltq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulltq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulltq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovnbq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovnbq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovnbq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovnbq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovnbq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovnbq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovnbq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovnbq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovntq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovntq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovntq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovntq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovntq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovntq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovntq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovntq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovunbq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovunbq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovunbq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovunbq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovuntq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovuntq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovuntq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovuntq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqnegq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqnegq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqnegq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqnegq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqnegq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqnegq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrntq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrntq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrntq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrntq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshruntq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshruntq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_r_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_r_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_r_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_r_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_r_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_r_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_r_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_r_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_r_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_r_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_r_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_r_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshluq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshluq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshluq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshluq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshluq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshluq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrnbq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrnbq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrnbq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrnbq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrntq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrntq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrntq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrntq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrunbq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrunbq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshruntq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshruntq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev16q_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev16q_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev16q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev16q_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev16q_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev16q_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlsldavhaq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlsldavhaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlsldavhq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlsldavhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlsldavhxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlsldavhxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndaq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndaq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndaq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndaq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndaq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndaq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndmq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndmq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndmq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndmq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndmq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndmq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndnq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndnq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndnq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndnq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndnq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndnq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndpq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndpq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndpq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndpq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndpq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndpq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndxq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndxq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndxq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndxq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndxq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndxq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrnbq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrnbq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrnbq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrnbq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrntq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrntq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrntq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrntq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsbciq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsbciq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsbciq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsbciq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsbcq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsbcq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlcq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlcq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlcq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlcq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlcq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlcq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_r_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_r_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_r_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_r_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_r_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_r_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_r_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_r_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_r_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_r_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_r_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_r_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrnbq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrnbq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrnbq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrnbq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst2q_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst2q_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst2q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst2q_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst2q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst2q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst2q_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst2q_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst4q_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst4q_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst4q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst4q_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst4q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst4q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst4q_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst4q_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_float.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_int.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c: Likewise.
- * gcc.target/arm/mve/mve.exp: Change default dg-do to assemble.
- * lib/target-supports.exp: Add --save-temps to mve options.
-
-2020-03-23 Mark Eggleston <mark.eggleston@codethink.com>
-
- PR fortran/93365
- PR fortran/93600
- * gfortran.dg/pr93365.f90: New test.
- * gfortran.dg/pr93600_1.f90: New test.
- * gfortran.dg/pr93600_2.f90: New test.
-
-2020-03-23 Tobias Burnus <tobias@codesourcery.com>
-
- * lib/target-supports.exp (check_effective_target_offload_gcn):
- Check for -foffload=amdgcn-amdhsa not ...=amdgcn-unknown-amdhsa.
-
-2020-03-22 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/93038
- * gdc.dg/pr93038b.d: New test.
-
-2020-03-22 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/abi/lambda-vis.C: Amend assembler match
- strings for targets using a USER_LABEL_PREFIX.
-
-2020-03-22 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/93038
- * gdc.dg/fileimports/pr93038.txt: New test.
- * gdc.dg/pr93038.d: New test.
-
-2020-03-21 Patrick Palka <ppalka@redhat.com>
-
- PR c++/94066
- * g++.dg/cpp1y/constexpr-union2.C: New test.
- * g++.dg/cpp1y/constexpr-union3.C: New test.
- * g++.dg/cpp1y/constexpr-union4.C: New test.
- * g++.dg/cpp1y/constexpr-union5.C: New test.
- * g++.dg/cpp1y/pr94066.C: New test.
- * g++.dg/cpp1y/pr94066-2.C: New test.
- * g++.dg/cpp1y/pr94066-3.C: New test.
- * g++.dg/cpp2a/constexpr-union1.C: New test.
-
-2020-03-21 Tamar Christina <tamar.christina@arm.com>
-
- PR target/94052
- * gcc.target/aarch64/pr94052.C: New test.
-
-2020-03-20 Martin Jambor <mjambor@suse.cz>
-
- PR tree-optimization/93435
- * gcc.dg/tree-ssa/pr93435.c: New test.
-
-2020-03-20 Jan Hubicka <hubicka@ucw.cz>
-
- PR ipa/93347
- * g++.dg/torture/pr93347.C: New test.
-
-2020-03-20 Patrick Palka <ppalka@redhat.com>
-
- PR c++/69694
- * g++.dg/cpp0x/decltype74.C: New test.
- * g++.dg/cpp0x/decltype75.C: New test.
-
-2020-03-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
- Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vld1q_z_f16.c: New test.
- * gcc.target/arm/mve/intrinsics/vld1q_z_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_z_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld2q_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld2q_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld2q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld2q_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld2q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld2q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld2q_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld2q_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld4q_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld4q_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld4q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld4q_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld4q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld4q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld4q_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld4q_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst2q_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst2q_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst2q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst2q_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst2q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst2q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst2q_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst2q_u8.c: Likewise.
-
-2020-03-20 Richard Sandiford <richard.sandiford@arm.com>
-
- PR middle-end/94072
- * gcc.target/aarch64/pr94072.c: New test.
-
-2020-03-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
- Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vadciq_m_s32.c: New test.
- * gcc.target/arm/mve/intrinsics/vadciq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vadciq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vadciq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vadcq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vadcq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vadcq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vadcq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsbciq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsbciq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsbciq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsbciq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsbcq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsbcq_u32.c: Likewise.
-
-2020-03-20 Patrick Palka <ppalka@redhat.com>
-
- * g++.dg/concepts/diagnostic6.C: New test.
-
-2020-03-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vabdq_x_f16.c: New test.
- * gcc.target/arm/mve/intrinsics/vabdq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_x_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_x_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_x_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_x_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtbq_x_f32_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_x_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_x_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_x_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_x_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_x_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_x_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_x_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_x_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_x_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_x_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_x_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_x_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_f16_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_f16_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_f32_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_f32_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_n_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_n_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_n_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_n_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_x_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvttq_x_f32_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_x_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_x_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev16q_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev16q_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndaq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndaq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndmq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndmq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndnq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndnq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndpq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndpq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndxq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndxq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_x_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_x_u8.c: Likewise.
-
-2020-03-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
- Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c: New test.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_s64.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_u64.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_f32.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_s32.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_u32.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_u32.c: Likewise.
-
-2020-03-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
- Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vddupq_m_n_u16.c: New test.
- * gcc.target/arm/mve/intrinsics/vddupq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vddupq_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vidupq_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_wb_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_wb_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/viwdupq_wb_u8.c: Likewise.
-
-2020-03-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vuninitializedq_float.c: New test.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_int.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vreinterpretq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_float.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_int.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c: Likewise.
-
-2020-03-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
- Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vaddq_f16.c: New test.
- * gcc.target/arm/mve/intrinsics/vaddq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_u8.c: Likewise.
-
-2020-03-20 Andre Vieira <andre.simoesdiasvieira@arm.com>
-
- * gcc.target/arm/mve/intrinsics/mve_fp_fpu1.c: Fix testisms.
- * gcc.target/arm/mve/intrinsics/mve_fp_fpu2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_fpu1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_fpu2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_fpu3.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_libcall1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_libcall2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_float.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_float1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_float2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_int.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_int1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_int2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_uint.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_uint1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_uint2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_m_n_u32.c: Likewise.
-
-2020-03-20 Andre Vieira <andre.simoesdiasvieira@arm.com>
-
- * gcc.target/arm/mve/intrinsics/mve_move_gpr_to_gpr.c: New test.
-
-2020-03-20 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/94224
- * g++.dg/tree-ssa/pr94224.C: New test.
-
-2020-03-19 Jan Hubicka <hubicka@ucw.cz>
-
- PR ipa/94202
- * g++.dg/torture/pr94202.C: New test.
-
-2020-03-19 Jakub Jelinek <jakub@redhat.com>
-
- PR gcov-profile/94029
- * gcc.misc-tests/gcov-pr94029.c: New test.
-
-2020-03-19 Jan Hubicka <hubicka@ucw.cz>
-
- PR ipa/92372
- * gcc.c-torture/pr92372.c: New test.
- * gcc.dg/attr-flatten-1.c: New test.
-
-2020-03-19 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/94211
- * gcc.dg/pr94211.c: New test.
-
-2020-03-19 Richard Biener <rguenther@suse.de>
-
- PR middle-end/94216
- * g++.dg/torture/pr94216.C: New testcase.
-
-2020-03-18 Martin Sebor <msebor@redhat.com>
-
- PR ipa/92799
- * gcc.dg/attr-weakref-5.c: New test.
-
-2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_s64.c: New test.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_s64.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_u64.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_s64.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_u64.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_f16.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_f16.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_f32.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_f32.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_s32.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_u32.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_s32.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_u32.c:
- Likewise.
-
-2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vst1q_f16.c: New test.
- * gcc.target/arm/mve/intrinsics/vst1q_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst1q_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s16.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s32.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u16.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u32.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s16.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s32.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u16.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u32.c:
- Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrhq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_u32.c: Likewise.
-
-2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vld1q_f16.c: New test.
- * gcc.target/arm/mve/intrinsics/vld1q_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_z_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_z_u32.c: Likewise.
-
-2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vld1q_f16.c: New test.
- * gcc.target/arm/mve/intrinsics/vld1q_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vld1q_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrhq_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_z_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_z_u32.c: Likewise.
-
-2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s16.c: New test.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_z_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_z_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_z_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_z_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_z_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_u32.c: Likewise.
-
-2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vstrbq_p_s16.c: New test.
- * gcc.target/arm/mve/intrinsics/vstrbq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_u32.c: Likewise.
-
-2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s16.c: New test.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrbq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_u32.c: Likewise.
-
-2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vstrbq_s16.c: New test.
- * gcc.target/arm/mve/intrinsics/vstrbq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrbq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_u32.c: Likewise.
-
-2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vabdq_m_f16.c: New test.
- * gcc.target/arm/mve/intrinsics/vabdq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_n_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_n_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_n_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_n_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmsq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmsq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_f32.c: Likewise.
-
-2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmullbq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmullbq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulltq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulltq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlsldavhaq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_m_n_u32.c: Likewise.
-
-2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vabdq_m_s16.c: New test.
- * gcc.target/arm/mve/intrinsics/vabdq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_n_u8.c: Likewise.
-
-2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vabavq_p_s16.c: New test.
- * gcc.target/arm/mve/intrinsics/vabavq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshluq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshluq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshluq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_m_u8.c: Likewise.
-
-2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vabsq_m_f16.c: New test.
- * gcc.target/arm/mve/intrinsics/vabsq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddlvaq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddlvaq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtbq_m_f16_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtbq_m_f32_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_m_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_m_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_m_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_m_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_m_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_m_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_m_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_m_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_m_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_m_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_m_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_m_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvttq_m_f16_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvttq_m_f32_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_m_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_m_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmaq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmasq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmasq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmsq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vfmsq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmaq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmaq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmavq_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmavq_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmvq_p_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmvq_p_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaxq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavaxq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavxq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavxq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavaq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavaxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavaxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovnbq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovnbq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovnbq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovnbq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovntq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovntq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovntq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovntq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovnbq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovnbq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovnbq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovnbq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovntq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovntq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovntq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovntq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovunbq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovunbq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovuntq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovuntq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrntq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrntq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrntq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrntq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshruntq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshruntq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrnbq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrnbq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrnbq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrnbq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrntq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrntq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrntq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrntq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrunbq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshrunbq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshruntq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshruntq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev16q_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev16q_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlsldavhaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlsldavhq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlsldavhxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndaq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndaq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndmq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndmq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndnq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndnq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndpq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndpq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndxq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndxq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrnbq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrnbq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrnbq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrnbq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrntq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrntq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrntq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrntq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrnbq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrnbq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrnbq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrnbq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrntq_n_u32.c: Likewise.
-
-2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vabsq_m_s16.c: New test.
- * gcc.target/arm/mve/intrinsics/vabsq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminaq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminaq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminaq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavaxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavxq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavxq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlasq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavaxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpselq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqabsq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqabsq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqabsq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmladhxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqnegq_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqnegq_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqnegq_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_r_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_r_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_r_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_r_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_r_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_m_r_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_m_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_m_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_m_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_m_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_m_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_m_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_r_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_r_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_r_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_r_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_r_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_m_r_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsliq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsriq_n_u8.c: Likewise.
-
-2020-03-18 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/94047
- * gcc.dg/analyzer/pr94047.c: New test.
-
-2020-03-18 Richard Biener <rguenther@suse.de>
-
- PR middle-end/94206
- * gcc.dg/torture/pr94206.c: New testcase.
-
-2020-03-18 Duan bo <duanbo3@huawei.com>
-
- PR target/94201
- * gcc.target/aarch64/pr94201.c:New test.
-
-2020-03-18 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/acle/general/cpy_1.c: Leave gaps for in the
- check-function-bodies patterns for p15 to be saved.
- * gcc.target/aarch64/sve/pcs/args_1.c (callee_pred): Expect two
- predicates to be saved.
- * gcc.target/aarch64/sve/pcs/saves_1_be_nowrap.c (test_1): Expect
- p12-p15 to be saved and restored.
- (test_2): Remove p12-p15 from the clobber list.
- * gcc.target/aarch64/sve/pcs/saves_1_be_wrap.c (test_1): Expect
- p12-p15 to be saved and restored.
- (test_2): Remove p12-p15 from the clobber list.
- * gcc.target/aarch64/sve/pcs/saves_1_le_nowrap.c (test_1): Expect
- p12-p15 to be saved and restored.
- (test_2): Remove p12-p15 from the clobber list.
- * gcc.target/aarch64/sve/pcs/saves_1_le_wrap.c (test_1): Expect
- p12-p15 to be saved and restored.
- (test_2): Remove p12-p15 from the clobber list.
- * gcc.target/aarch64/sve/pcs/saves_2_be_nowrap.c: Expect p12-p15
- to be saved and restored.
- * gcc.target/aarch64/sve/pcs/saves_2_be_wrap.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_2_le_nowrap.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_2_le_wrap.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_4_be.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_4_le.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_5_be.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_5_le.c: Likewise.
- * gcc.target/aarch64/sve/pcs/stack_clash_1.c (test_1): Likewise.
- (test_2): Remove p12-p15 from the clobber list.
- * gcc.target/aarch64/sve/pcs/stack_clash_1_128.c (test_1): Expect
- p12-p15 to be saved and restored.
- (test_2): Remove p12-p15 from the clobber list.
- * gcc.target/aarch64/sve/pcs/stack_clash_1_256.c (test_1): Expect
- p12-p15 to be saved and restored.
- (test_2): Remove p12-p15 from the clobber list.
- (test_4): Expect only 16 bytes of stack to be allocated for the
- predicate save slot.
- * gcc.target/aarch64/sve/pcs/stack_clash_1_512.c (test_1): Expect
- p12-p15 to be saved and restored.
- (test_2): Remove p12-p15 from the clobber list.
- (test_4): Expect only 16 bytes of stack to be allocated for the
- predicate save slot.
- * gcc.target/aarch64/sve/pcs/stack_clash_1_1024.c (test_1): Expect
- p12-p15 to be saved and restored.
- (test_2): Remove p12-p15 from the clobber list.
- (test_4): Expect only 16 bytes of stack to be allocated for the
- predicate save slot.
- * gcc.target/aarch64/sve/pcs/stack_clash_1_2048.c (test_1): Expect
- p12-p15 to be saved and restored.
- (test_2): Remove p12-p15 from the clobber list.
- (test_4): Expect only 32 bytes of stack to be allocated for the
- predicate save slot.
- * gcc.target/aarch64/sve/pcs/stack_clash_2_256.c: Use z16 rather
- than p4 to create a vector-sized save slot.
- * gcc.target/aarch64/sve/pcs/stack_clash_2_512.c: Likewise.
- * gcc.target/aarch64/sve/pcs/stack_clash_2_1024.c: Likewise.
- * gcc.target/aarch64/sve/pcs/stack_clash_2_2048.c: Likewise.
-
-2020-03-18 Tobias Burnus <tobias@codesourcery.com>
-
- * g++.dg/goacc/firstprivate-mappings-1.C: Only set DO_LONG_DOUBLE if
- not defined; update comments.
- * c-c++-common/goacc/firstprivate-mappings-1.c: Likewise.
-
-2020-03-18 Richard Biener <rguenther@suse.de>
-
- PR middle-end/94188
- * gcc.dg/pr94188.c: New testcase.
-
-2020-03-18 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/91759
- * g++.dg/cpp1z/class-deduction72.C: New test.
-
-2020-03-17 Uroš Bizjak <ubizjak@gmail.com>
-
- * g++.dg/debug/dwarf2/const2b.C (dg-do): Fix target selector.
-
-2020-03-17 Jakub Jelinek <jakub@redhat.com>
-
- PR c/94172
- * gcc.dg/pr94172-1.c: New test.
- * gcc.dg/pr94172-2.c: New test.
-
- PR c++/90995
- * g++.dg/cpp0x/enum40.C: New test.
-
-2020-03-17 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/advsimd-intrinsics/bfcvt-nosimd.c: Skip for
- -fno-fat-lto-objects. Use tabs rather than spaces in the
- check-function-bodies code.
-
-2020-03-17 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/torture/coro-torture.exp: Ensure that
- DEFAULT_CXXFLAGS has a value, even if unset by a higher level.
-
-2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vabavq_s16.c: New test.
- * gcc.target/arm/mve/intrinsics/vabavq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabavq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_m_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_m_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_m_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_m_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_m_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_m_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_f16_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_f16_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_f32_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_m_f32_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlcq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlcq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlcq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlcq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlcq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlcq_u8.c: Likewise.
-
-2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vabdq_f16.c: New test.
- * gcc.target/arm/mve/intrinsics/vabdq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddlvaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddlvaq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot180_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot180_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot270_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot270_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot90_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmulq_rot90_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vctp16q_m.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vctp32q_m.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vctp64q_m.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vctp8q_m.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtbq_f16_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvttq_f16_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmaq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmaq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmavq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmavq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmvq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminnmvq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavxq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlaldavxq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsldavxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovnbq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovnbq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovnbq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovnbq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovntq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovntq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovntq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovntq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_poly_p16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_poly_p8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_poly_p16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_poly_p8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmullbq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmullbq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmullbq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmullbq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulltq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulltq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulltq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulltq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovnbq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovnbq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovnbq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovnbq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovntq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovntq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovntq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovntq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovunbq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovunbq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovuntq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqmovuntq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlaldavhxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlsldavhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmlsldavhxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshllbq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlltq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_f32.c: Likewise.
-
-2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vabdq_s16.c: New test.
- * gcc.target/arm/mve/intrinsics/vabdq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabdq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvaq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_p_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_p_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_p_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_p_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_p_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vandq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbicq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vbrsrq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot270_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcaddq_rot90_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpcsq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpeqq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgeq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpgtq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmphiq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpleq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpltq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/veorq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhaddq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vhsubq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxaq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxaq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxavq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxavq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxavq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmaxvq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminaq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminaq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminaq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminavq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vminvq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmladavxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavxq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavxq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmlsdavxq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulhq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmullbq_int_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulltq_int_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmulq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vornq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vorrq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqaddq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqdmulhq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrdmulhq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqrshlq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_r_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_r_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_r_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_r_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_r_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_r_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshlq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshluq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshluq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqshluq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqsubq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrhaddq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrmulhq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshlq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrshrq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_r_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_r_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_r_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_r_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_r_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_r_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_u8.c: Likewise.
-
-2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vaddlvq_p_s32.c: New test.
- * gcc.target/arm/mve/intrinsics/vaddlvq_p_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcmpneq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshlq_u8.c: Likewise.
-
-2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vcreateq_s16.c: New test.
- * gcc.target/arm/mve/intrinsics/vcreateq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_s64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_u64.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_n_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_n_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_n_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_n_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vshrq_n_u8.c: Likewise.
-
-2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vbrsrq_n_f16.c: New test.
- * gcc.target/arm/mve/intrinsics/vbrsrq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcreateq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_n_f16_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_n_f16_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_n_f32_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_n_f32_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vsubq_n_f32.c: Likewise.
-
-2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vctp16q.c: New test.
- * gcc.target/arm/mve/intrinsics/vctp32q.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vctp64q.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vctp8q.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vpnot.c: Likewise.
-
-2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vabsq_s16.c: New test.
- * gcc.target/arm/mve/intrinsics/vabsq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vabsq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddlvq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddlvq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vaddvq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclsq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vclzq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtaq_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtmq_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtnq_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_s16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtpq_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_n_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_n_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovlbq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmovltq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqabsq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqabsq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqabsq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqnegq_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqnegq_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vqnegq_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev16q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev16q_u8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_u8.c: Likewise.
-
-2020-03-17 Mihail Ionescu <mihail.ionescu@arm.com>
-
- * gcc.target/arm/multilib.exp: Add new v8.1-M entry.
-
-2020-03-17 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/94015
- * gcc.dg/pr94015.c: New test.
-
-2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vcvtq_s16_f16.c: New test.
- * gcc.target/arm/mve/intrinsics/vcvtq_s32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_u16_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_u32_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_n_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vmvnq_n_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_u8.c: Likewise.
-
-2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vabsq_f16.c: New test.
- * gcc.target/arm/mve/intrinsics/vabsq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtbq_f32_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_f16_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_f16_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_f32_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvtq_f32_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vcvttq_f32_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_n_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vdupq_n_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vnegq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev32q_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrev64q_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndaq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndaq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndmq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndmq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndnq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndnq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndpq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndpq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndq_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndxq_f16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vrndxq_f32.c: Likewise.
-
-2020-03-16 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/vst4q_f16.c: New test.
- * gcc.target/arm/mve/intrinsics/vst4q_f32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst4q_s16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst4q_s32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst4q_s8.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst4q_u16.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst4q_u32.c: Likewise.
- * gcc.target/arm/mve/intrinsics/vst4q_u8.c: Likewise.
-
-2020-03-17 Jakub Jelinek <jakub@redhat.com>
-
- PR target/94185
- * g++.target/i386/pr94185.C (l): Use 4294967295U instead of 4294967295
- to avoid FAIL with -m32 -std=c++98.
-
-2020-03-17 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc.target/aarch64/sve/acle/general-c/sizeless-1.c: Remove
- superfluous dg-error.
- * gcc.target/aarch64/sve/acle/general-c/sizeless-2.c: Likewise.
-
-2020-03-17 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/94189
- * gcc.dg/pr94189.c: New test.
-
-2020-03-17 Martin Liska <mliska@suse.cz>
-
- PR lto/94157
- * gcc.dg/lto/pr94157_0.c: Add gas effective
- target filter.
-
-2020-03-16 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/92309
- * gdc.dg/pr92309.d: New test.
-
-2020-03-16 Iain Buclaw <ibuclaw@gdcproject.org>
-
- PR d/92216
- * gdc.dg/imports/pr92216.d: New.
- * gdc.dg/pr92216.d: New test.
-
-2020-03-16 Jakub Jelinek <jakub@redhat.com>
-
- PR c/94179
- * gcc.c-torture/compile/pr94179.c: New test.
-
-2020-03-16 Vladimir Makarov <vmakarov@redhat.com>
-
- PR target/94185
- * g++.target/i386/pr94185.C: New test.
-
-2020-03-16 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/acle/general-c/sizeless-1.c: Add a test
- name to .-1 dg-error tests.
- * gcc.target/aarch64/sve/acle/general-c/sizeless-2.c: Likewise.
-
-2020-03-16 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/mve_libcall1.c: New test.
- * gcc.target/arm/mve/intrinsics/mve_libcall2.c: Likewise.
-
-2020-03-16 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/mve_fp_fpu1.c: New test.
- * gcc.target/arm/mve/intrinsics/mve_fp_fpu2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_fpu1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_fpu2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_fpu3.c: Likewise.
-
-
-2020-03-16 Andre Vieira <andre.simoesdiasvieira@arm.com>
- Mihail Ionescu <mihail.ionescu@arm.com>
- Srinath Parvathaneni <srinath.parvathaneni@arm.com>
-
- * gcc.target/arm/mve/intrinsics/mve_vector_float.c: New test.
- * gcc.target/arm/mve/intrinsics/mve_vector_float1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_float2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_int.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_int1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_int2.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_uint.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_uint1.c: Likewise.
- * gcc.target/arm/mve/intrinsics/mve_vector_uint2.c: Likewise.
- * gcc.target/arm/mve/mve.exp: New file.
- * lib/target-supports.exp
- (check_effective_target_arm_v8_1m_mve_fp_ok_nocache): Proc to check
- armv8.1-m.main+mve.fp and returning corresponding options.
- (check_effective_target_arm_v8_1m_mve_fp_ok): Proc to call
- check_effective_target_arm_v8_1m_mve_fp_ok_nocache to check support of
- MVE with floating point on the current target.
- (add_options_for_arm_v8_1m_mve_fp): Proc to call
- check_effective_target_arm_v8_1m_mve_fp_ok to return corresponding
- compiler options for MVE with floating point.
- (check_effective_target_arm_v8_1m_mve_ok_nocache): Modify to test and
- return hard float-abi on success.
-
-2020-03-16 H.J. Lu <hongjiu.lu@intel.com>
-
- PR target/89229
- * gcc.target/i386/pr89229-7a.c: New test.
- * gcc.target/i386/pr89229-7b.c: Likewise.
- * gcc.target/i386/pr89229-7c.c: Likewise.
-
-2020-03-16 Iain Buclaw <ibuclaw@gdcproject.org>
-
- * gdc.dg/asm1.d: Add new test for ICE in asm parser.
- * gdc.dg/asm5.d: New test.
-
-2020-03-16 Jakub Jelinek <jakub@redhat.com>
-
- PR debug/94167
- * gcc.dg/pr94167.c: New test.
-
- PR tree-optimization/94166
- * gcc.dg/pr94166.c: New test.
-
-2020-03-16 Bin Cheng <bin.cheng@linux.alibaba.com>
-
- PR tree-optimization/94125
- * gcc.dg/tree-ssa/pr94125.c: New test.
-
-2020-03-15 H.J. Lu <hongjiu.lu@intel.com>
-
- PR target/89229
- * gcc.target/i386/pr89229-6a.c: New test.
- * gcc.target/i386/pr89229-6b.c: Likewise.
- * gcc.target/i386/pr89229-6c.c: Likewise.
-
-2020-03-15 Lewis Hyatt <lhyatt@gmail.com>
-
- * gcc.misc-tests/help.exp: Adapt to new output for
- -Walloc-size-larger-than= option.
-
-2020-03-14 H.J. Lu <hongjiu.lu@intel.com>
-
- PR target/89229
- * gcc.target/i386/pr89229-5a.c: New test.
- * gcc.target/i386/pr89229-5b.c: Likewise.
- * gcc.target/i386/pr89229-5c.c: Likewise.
-
-2020-03-14 Segher Boessenkool <segher@kernel.crashing.org>
-
- PR target/94176
- * gcc.target/powerpc/fold-vec-mule-misc.c: Use vmx_hw selector.
-
-2020-03-13 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/94099
- PR analyzer/94105
- * gcc.dg/analyzer/pr94099.c: New test.
- * gcc.dg/analyzer/pr94105.c: New test.
-
-2020-03-13 Vasee Vinayagamoorthy <vaseeharan.vinayagamoorthy@arm.com>
-
- * gcc.target/aarch64/advsimd-intrinsics/bfcvt-nosimd.c: Fix DejaGnu
- typo.
-
-2020-03-13 Martin Sebor <msebor@redhat.com>
-
- PR c/94040
- * gcc.dg/Wbuiltin-declaration-mismatch-12.c: Relax test to look
- for warning name rather than the exact text.
- * gcc.dg/Wbuiltin-declaration-mismatch-14.c: New test.
- * gcc.dg/Wbuiltin-declaration-mismatch-15.c: New test.
- * gcc.dg/pr62090.c: Prune expected warning.
- * gcc.dg/pr89314.c: Look for warning name rather than text.
- * gcc.dg/torture/pr54261-1.c: Correct built-in declartion.
-
-2020-03-13 Uroš Bizjak <ubizjak@gmail.com>
-
- * gcc.target/i386/pr64409.c: Do not limit compilation to x32 targets.
- (dg-error): Quote 'ms_abi' attribute.
- * gcc.target/i386/pr71958.c: Do not limit compilation to x32 targets.
- Require maybe_x32 effective target.
- (dg-options): Add -mx32.
- (dg-error): Quote 'ms_abi' attribute.
- * gcc.target/i386/pr90096.c (dg-error): Update relative
- location of target x32 error.
-
-2020-03-13 Patrick Palka <ppalka@redhat.com>
-
- PR c++/67960
- * g++.dg/diagnostic/pr67960.C: New test.
- * g++.dg/diagnostic/pr67960-2.C: New test.
-
-2020-03-13 Martin Liska <mliska@suse.cz>
-
- PR lto/94157
- * gcc.dg/lto/pr94157_0.c: New test.
-
-2020-03-13 Kewen Lin <linkw@gcc.gnu.org>
-
- PR testsuite/93935
- * gcc.dg/vect/bb-slp-over-widen-2.c: Expect basic block vectorized
- messages only on vect_hw_misalign targets.
-
-2020-03-13 H.J. Lu <hongjiu.lu@intel.com>
-
- PR target/89229
- * gcc.target/i386/pr89229-4a.c: New test.
- * gcc.target/i386/pr89229-4b.c: Likewise.
- * gcc.target/i386/pr89229-4c.c: Likewise.
-
-2019-03-13 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc.c-torture/compile/20200313-1.c: New test.
-
-2020-03-12 Jeff Law <law@redhat.com>
-
- PR rtl-optimization/90275
- * gcc.c-torture/compile/pr90275.c: New test.
-
-2020-03-12 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/94103
- * gcc.target/i386/pr94103.c: New testcase.
-
-2020-03-12 Tobias Burnus <tobias@codesourcery.com>
-
- PR middle-end/94120
- * gfortran.dg/goacc/pr78260-2.f90: Correct scan-tree-dump-times.
- Extend test case to result variables.
- * gfortran.dg/goacc/declare-2.f95: Actually check module-declaration
- restriction of OpenACC.
- * gfortran.dg/goacc/declare-3.f95: Remove case where this
- restriction is violated.
- * gfortran.dg/goacc/pr94120-1.f90: New.
- * gfortran.dg/goacc/pr94120-2.f90: New.
- * gfortran.dg/goacc/pr94120-3.f90: New.
-
-2020-03-12 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/94130
- * gcc.c-torture/execute/pr94130.c: New test.
- PR c++/93907
- * g++.dg/cpp2a/concepts-using2.C (cc): Use long long instead of
- __int128 if __SIZEOF_INT128__ isn't defined.
+2021-01-14 Alexandre Oliva <oliva@adacore.com>
-2020-03-06 Marek Polacek <polacek@redhat.com>
+ * gcc.dg/analyzer/sensitive-1.c: Declare getpass.
- PR c++/94074 - wrong modifying const object error for COMPONENT_REF.
- * g++.dg/cpp1y/constexpr-tracking-const17.C: New test.
- * g++.dg/cpp1y/constexpr-tracking-const18.C: New test.
- * g++.dg/cpp1y/constexpr-tracking-const19.C: New test.
- * g++.dg/cpp1y/constexpr-tracking-const20.C: New test.
- * g++.dg/cpp1y/constexpr-tracking-const21.C: New test.
- * g++.dg/cpp1y/constexpr-tracking-const22.C: New test.
+2021-01-14 Harald Anlauf <anlauf@gmx.de>
-2020-03-11 Jakub Jelinek <jakub@redhat.com>
+ PR fortran/98661
+ * gfortran.dg/pr98661.f90: New test.
- PR target/94134
- * gcc.c-torture/execute/pr94134.c: New test.
-
-2020-03-11 Kito Cheng <kito.cheng@sifive.com>
-
- * gcc.target/riscv/interrupt-2.c: Update testcase and expected output.
-
-2020-03-11 Richard Biener <rguenther@suse.de>
-
- * gcc.dg/torture/20200311-1.c: New testcase.
-
-2020-03-11 Matthew Malcomson <matthew.malcomson@arm.com>
-
- * lib/scanasm.exp (parse_function_bodies): Lines starting with '@' also
- counted as fluff.
-
-2020-03-11 Richard Wai <richard@annexi-strayline.com>
-
- * gnat.dg/subpools1.adb: New test.
-
-2020-03-11 Jakub Jelinek <jakub@redhat.com>
-
- PR target/94121
- * gcc.dg/pr94121.c: New test.
-
- PR middle-end/94111
- * gcc.dg/dfp/pr94111.c: New test.
-
- PR tree-optimization/94114
- * gcc.dg/pr94114.c: New test.
-
-2020-03-10 Marek Polacek <polacek@redhat.com>
-
- PR c++/94124 - wrong conversion error with non-viable overload.
- * g++.dg/cpp0x/initlist-overload1.C: New test.
-
-2020-03-10 Jiufu Guo <guojiufu@linux.ibm.com>
-
- PR target/93709
- * gcc.target/powerpc/p9-minmax-3.c: New test.
-
-2020-03-10 Will Schmidt <will_schmidt@vnet.ibm.com>
-
- PR target/90763
- * gcc.target/powerpc/pr90763.c: New.
-
-2020-03-10 Uroš Bizjak <ubizjak@gmail.com>
-
- * g++.dg/pr80481.C (dg-final): Scan for SSE reg-reg moves only.
-
-2020-03-10 Jeff Law <law@redhat.com>
+2021-01-14 Harald Anlauf <anlauf@gmx.de>
Revert:
- 2020-02-29 Jeff Law <law@redhat.com>
-
- * gcc.target/xstormy16/sfr/06_sfrw_to_var.c: Update expected output.
-
-2020-03-10 Jakub Jelinek <jakub@redhat.com>
-
- PR target/94088
- * gcc.target/i386/pr94088.c: New test.
-
-2020-03-09 Marek Polacek <polacek@redhat.com>
-
- PR c++/92031 - bogus taking address of rvalue error.
- PR c++/91465 - ICE with template codes in check_narrowing.
- PR c++/93870 - wrong error when converting template non-type arg.
- PR c++/94068 - ICE with template codes in check_narrowing.
- * g++.dg/cpp0x/conv-tmpl2.C: New test.
- * g++.dg/cpp0x/conv-tmpl3.C: New test.
- * g++.dg/cpp0x/conv-tmpl4.C: New test.
- * g++.dg/cpp0x/conv-tmpl5.C: New test.
- * g++.dg/cpp0x/conv-tmpl6.C: New test.
- * g++.dg/cpp1z/conv-tmpl1.C: New test.
-
-2020-03-09 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/94067
- * g++.dg/warn/Wconversion-pr94067.C: New test.
-
-2020-03-09 Marek Polacek <polacek@redhat.com>
-
- PR c++/94050 - ABI issue with alignas on armv7hl.
- * g++.dg/abi/align3.C: New test.
-
-2020-03-09 Christophe Lyon <christophe.lyon@linaro.org>
-
- * gcc.target/arm/fuse-caller-save.c: Fix DejaGnu typo.
-
-2020-03-09 Martin Liska <mliska@suse.cz>
-
- PR target/93800
- * gcc.target/powerpc/pr93800.c: New test.
-
-2020-03-09 Bin Cheng <bin.cheng@linux.alibaba.com>
-
- * g++.dg/coroutines/torture/co-ret-15-default-return_void.C: New.
-
-2020-03-09 Kewen Lin <linkw@gcc.gnu.org>
-
- PR testsuite/94019
- * gcc.dg/vect/vect-over-widen-17.c: Don't expect vector char if it's
- without misaligned vector access support.
-
-2020-03-09 Kewen Lin <linkw@gcc.gnu.org>
-
- PR testsuite/94023
- * gcc.dg/vect/slp-perm-12.c: Expect loop vectorized messages only on
- vect_hw_misalign targets.
-
-2020-03-08 Paul Thomas <pault@gcc.gnu.org>
-
- PR fortran/93581
- * gfortran.dg/inquiry_type_ref_6.f90 : New test.
-
-2020-03-08 Patrick Palka <ppalka@redhat.com>
-
- PR c++/93729
- * g++.dg/concepts/pr93729.C: New test.
-
- * g++.dg/concepts/diagnostic4.C: New test.
-
-2020-03-08 H.J. Lu <hongjiu.lu@intel.com>
-
- PR target/89229
- PR target/89346
- * gcc.target/i386/pr89229-3c.c: Include "pr89229-3a.c", instead
- of "pr89229-5a.c".
-
-2020-03-06 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/malloc-4.c: Update expected output of leak to
- reflect fix to region_model::get_representative_path_var, adding
- the missing "*" from the cast.
-
-2020-03-06 Wilco Dijkstra <wdijkstr@arm.com>
-
- * gcc.target/aarch64/fmla_intrinsic_1.c: Check for correct lane syntax.
- * gcc.target/aarch64/fmls_intrinsic_1.c: Likewise.
- * gcc.target/aarch64/mla_intrinsic_1.c: Likewise.
- * gcc.target/aarch64/mls_intrinsic_1.c: Likewise.
-
-2020-03-06 Claudiu Zissulescu <claziss@synopsys.com>
-
- * gcc.target/arc/tumaddsidi4.c: Step-up optimization level.
-
-2020-03-06 Delia Burduv <delia.burduv@arm.com>
-
- * gcc.target/arm/simd/bf16_vldn_1.c: New test.
-
-2020-03-06 Delia Burduv <delia.burduv@arm.com>
-
- * gcc.target/arm/simd/bf16_vstn_1.c: New test.
-
-2020-03-06 Kito Cheng <kito.cheng@sifive.com>
-
- * gcc.target/riscv/pr93304.c: Update expected output and comment.
-
-2020-03-06 Delia Burduv <delia.burduv@arm.com>
-
- * gcc.target/aarch64/advsimd-intrinsics/bfcvt-compile.c: New test.
- * gcc.target/aarch64/advsimd-intrinsics/bfcvt-nobf16.c: New test.
- * gcc.target/aarch64/advsimd-intrinsics/bfcvt-nosimd.c: New test.
- * gcc.target/aarch64/advsimd-intrinsics/bfcvtnq2-untied.c: New test.
-
-2020-03-06 Kito Cheng <kito.cheng@sifive.com>
-
- PR tree-optimization/90883
- * g++.dg/tree-ssa/pr90883.c: Add --param max-inline-insns-size=1.
- Add aarch64-*-* mips*-*-* to XFAIL.
-
-2020-03-05 H.J. Lu <hongjiu.lu@intel.com>
-
- PR target/89229
- PR target/89346
- * gcc.target/i386/avx512vl-vmovdqa64-1.c: Updated.
- * gcc.target/i386/pr89229-2a.c: New test.
- * gcc.target/i386/pr89229-2b.c: Likewise.
- * gcc.target/i386/pr89229-2c.c: Likewise.
- * gcc.target/i386/pr89229-3a.c: Likewise.
- * gcc.target/i386/pr89229-3b.c: Likewise.
- * gcc.target/i386/pr89229-3c.c: Likewise.
- * gcc.target/i386/pr89346.c: Likewise.
-
-2020-03-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
-
- * g++.dg/pr80481.C: Disable epilogue vectorization.
-
-2020-03-05 Joseph Myers <joseph@codesourcery.com>
-
- PR c/93577
- * gcc.dg/pr93577-1.c, gcc.dg/pr93577-2.c, gcc.dg/pr93577-3.c,
- gcc.dg/pr93577-4.c, gcc.dg/pr93577-5.c, gcc.dg/pr93577-6.c: New
- tests.
- * gcc.dg/vla-init-1.c: Expect fewer errors about VLA initializer.
-
-2020-03-05 Jeff Law <law@redhat.com>
-
- PR tree-optimization/91890
- * gcc.dg/pragma-diag-8.c: New test.
-
-2020-03-05 Jakub Jelinek <jakub@redhat.com>
-
- PR target/94046
- * g++.target/i386/pr94046-1.C: New test.
- * g++.target/i386/pr94046-2.C: New test.
-
-2020-03-05 Uroš Bizjak <ubizjak@gmail.com>
-
- * g++.dg/asan/asan_test.C (dg-options): Add
- -Wno-alloc-size-larger-than.
-
-2020-03-05 Jakub Jelinek <jakub@redhat.com>
-
- PR target/90311
- * gcc.c-torture/execute/pr90311.c: New test.
-
-2020-03-05 Jeff Law <law@redhat.com>
-
- * gcc.target/arm/fuse-caller-save.c: Generalize expected output.
-
-2020-03-05 Mark Eggleston <mark.eggleston@codethink.com>
-
- PR fortran/93792
- * gfortran.dg/pr93792.f90: New test.
-
-2020-03-05 Delia Burduv <delia.burduv@arm.com>
-
- * gcc.target/arm/simd/bf16_ma_1.c: New test.
- * gcc.target/arm/simd/bf16_ma_2.c: New test.
- * gcc.target/arm/simd/bf16_mmla_1.c: New test.
-
-2020-03-05 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/93399
- * gcc.dg/pr93399.c: New test.
-
- PR tree-optimization/93582
- * gcc.dg/tree-ssa/pr93582-11.c: New test.
-
-2020-03-04 Martin Sebor <msebor@redhat.com>
-
- PR c++/90938
- * g++.dg/init/array55.C: New test.
- * g++.dg/init/array56.C: New test.
- * g++.dg/cpp2a/nontype-class33.C: New test.
-
-2020-03-04 Martin Sebor <msebor@redhat.com>
-
- PR tree-optimization/93986
- * gcc.dg/pr93986.c: New test.
-
-2020-03-04 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/94028
- * g++.dg/analyzer/pr94028.C: New test.
-
-2020-03-04 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/81401
- * gcc.dg/tree-ssa/builtin-sprintf-warn-24.c: New test.
-
-2020-03-04 Will Schmidt <will_schmidt@vnet.ibm.com>
-
- * gcc.target/powerpc/20050603-3.c: Remove XFAILS.
-
-2020-03-04 Will Schmidt <will_schmidt@vnet.ibm.com>
-
- * gcc.target/powerpc/pr93122.c: Add dg-require.
-
-2020-03-04 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93993
- * gcc.dg/analyzer/expect-1.c: New test.
- * gcc.dg/analyzer/malloc-4.c: New test.
- * gfortran.dg/analyzer/pr93993.f90: Remove xfail from dg-bogus.
- Move location of leak warning and update message.
-
-2020-03-04 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93993
- * gfortran.dg/analyzer/pr93993.f90: New test.
-
-2020-03-04 Martin Liska <mliska@suse.cz>
-
- * gcc.target/i386/pr91623.c: Add -fcommon in order
- to re-trigger the needed code for the test-case which
- was added in r10-2910-g9151048d854e352a9b83b771c6711b8221c73f7e.
-
-2020-03-04 Jakub Jelinek <jakub@redhat.com>
-
- PR debug/93888
- * g++.dg/guality/pr93888.C: New test.
-
-2020-02-04 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/93964
- * gcc.dg/graphite/pr93964.c: New testcase.
-
-2020-03-04 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/94001
- * gcc.dg/pr94001.c: New test.
-
-2020-03-04 Kito Cheng <kito.cheng@sifive.com>
-
- PR target/93995
- * gcc.dg/pr93995.c: New.
-
-2020-03-03 Marek Polacek <polacek@redhat.com>
-
- PR c++/90505 - mismatch in template argument deduction.
- * g++.dg/template/deduce4.C: New test.
- * g++.dg/template/deduce5.C: New test.
- * g++.dg/template/deduce6.C: New test.
- * g++.dg/template/deduce7.C: New test.
-
-2020-03-03 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/93998
- * g++.dg/ext/pr93998.C: New test.
-
-2020-03-03 Dennis Zhang <dennis.zhang@arm.com>
-
- * gcc.target/arm/simd/bf16_cvt_1.c: New test.
-
-2020-03-03 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/93582
- * gcc.dg/tree-ssa/pr93582-10.c: New test.
- * gcc.dg/pr93582.c: New test.
- * gcc.c-torture/execute/pr93582.c: New test.
-
-2020-03-03 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/93946
- * gcc.dg/torture/pr93946-1.c: New testcase.
- * gcc.dg/torture/pr93946-2.c: Likewise.
-
-2020-03-03 Jakub Jelinek <jakub@redhat.com>
-
- PR rtl-optimization/94002
- * gcc.dg/pr94002.c: New test.
-
- PR tree-optimization/93927
- * gcc.c-torture/compile/pr93927-1.c: New test.
- * gcc.c-torture/compile/pr93927-2.c: New test.
-
-2020-03-03 Jun Ma <JunMa@linux.alibaba.com>
-
- * g++.dg/coroutines/torture/co-await-15-capture-comp-ref.C: New test.
-
-2020-03-03 Jun Ma <JunMa@linux.alibaba.com>
-
- * g++.dg/coroutines/torture/co-await-14-template-traits.C: New test.
+ 2021-01-14 Harald Anlauf <anlauf@gmx.de>
-2020-03-02 David Malcolm <dmalcolm@redhat.com>
+ PR fortran/98661
+ * gfortran.dg/pr98661.f90: New test.
- * gcc.dg/analyzer/CVE-2005-1689-dedupe-issue.c: Add
- -fanalyzer-show-duplicate-count.
+2021-01-14 Harald Anlauf <anlauf@gmx.de>
-2020-03-02 David Malcolm <dmalcolm@redhat.com>
+ PR fortran/98661
+ * gfortran.dg/pr98661.f90: New test.
- PR analyzer/93959
- * g++.dg/analyzer/cstdlib-2.C: New test.
- * g++.dg/analyzer/cstdlib.C: New test.
+2021-01-14 Martin Liska <mliska@suse.cz>
-2020-03-02 Iain Sandoe <iain@sandoe.co.uk>
- Jun Ma <JunMa@linux.alibaba.com>
+ * g++.dg/gcov/gcov-17.C: New test.
+ * g++.dg/gcov/test-gcov-17.py: New test.
- * g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C:
- * g++.dg/coroutines/torture/lambda-09-init-captures.C: New test.
- * g++.dg/coroutines/torture/lambda-10-mutable.C: New test.
+2021-01-14 H.J. Lu <hjl.tools@gmail.com>
-2020-03-02 Uroš Bizjak <ubizjak@gmail.com>
+ PR target/98667
+ * gcc.target/i386/pr98667-1.c: New file.
+ * gcc.target/i386/pr98667-2.c: Likewise.
+ * gcc.target/i386/pr98667-3.c: Likewise.
- PR target/93997
- * gcc.target/i386/pr93997.c: New test.
+2021-01-14 Richard Biener <rguenther@suse.de>
-2020-03-02 Martin Sebor <msebor@redhat.com>
+ PR tree-optimization/98674
+ * gcc.dg/vect/pr98674.c: New testcase.
- PR tree-optimization/92982
- * gcc.dg/strlenopt-94.c: New test.
+2021-01-14 H.J. Lu <hjl.tools@gmail.com>
-2020-03-02 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/torture/func-params-09-awaitable-parms.C: New test.
- * g++.dg/coroutines/torture/local-var-5-awaitable.C: New test.
-
-2020-03-02 Jeff Law <law@redhat.com>
-
- * gcc.target/arm/fuse-caller-save.c: Update expected output.
-
-2020-03-02 Martin Liska <mliska@suse.cz>
-
- * gcc.dg/vect/bb-slp-19.c: The comment
- does not align with fact that we started
- to SLP the testcase.
-
-2020-03-02 Kewen Lin <linkw@gcc.gnu.org>
-
- * gcc.dg/tree-ssa/scev-8.c: Revise check string.
- * gcc.dg/tree-ssa/scev-9.c: Ditto.
- * gcc.dg/tree-ssa/scev-10.c: Ditto.
- * gcc.dg/tree-ssa/scev-11.c: Ditto.
- * gcc.dg/tree-ssa/scev-12.c: Ditto.
-
-2020-03-01 Martin Sebor <msebor@redhat.com>
-
- PR c++/92721
- g++.dg/ext/attr-access.C: New test.
-
-2020-03-01 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/93926
- * gcc.dg/Wbuiltin-declaration-mismatch-13.c: New test.
-
-2020-03-01 Martin Sebor <msebor@redhat.com>
-
- PR c/93812
- * gcc.dg/format/proto.c: New test.
-
-2020-03-01 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/93829
- * gcc.dg/Wstringop-overflow-32.c: New test.
-
-2020-03-01 Segher Boessenkool <segher@kernel.crashing.org>
-
- PR testsuite/91797
- * gcc.target/powerpc/pr68805.c: Update expected output.
-
- PR testsuite/91799
- * gcc.target/powerpc/pr88233.c: Update expected output and
- add target selector.
-
-2020-03-01 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/torture/class-07-data-member.C: New test.
-
-2020-03-01 Paul Thomas <pault@gcc.gnu.org>
-
- PR fortran/92976
- * gfortran.dg/select_type_48.f90 : New test.
-
-2020-03-01 Paul Thomas <pault@gcc.gnu.org>
-
- PR fortran/92959
- * gfortran.dg/associated_8.f90 : New test.
-
-2020-02-29 Iain Sandoe <iain@sandoe.co.uk>
+ PR target/98676
+ * gcc.target/i386/pr95021-1.c: Add -mpreferred-stack-boundary=4
+ -mno-stackrealign.
+ * gcc.target/i386/pr95021-3.c: Likewise.
- * g++.dg/coroutines/coro1-ret-int-yield-int.h: Add templated
- awaitable.
- * g++.dg/coroutines/torture/co-await-15-return-non-triv.C: New test.
+2021-01-14 Nathan Sidwell <nathan@acm.org>
-2020-02-29 John David Anglin <danglin@gcc.gnu.org>
+ PR c++/98372
+ * g++.dg/cpp0x/constexpr-52830.C: Restore dg-ice
+ * g++.dg/template/pr98372.C: New.
- PR ada/91100
- * gnat.dg/socket1.adb: Disable on hppa*-*-hpux*.
+2021-01-14 Jakub Jelinek <jakub@redhat.com>
- * g++.dg/pr90981.C: Skip on hppa*-*-hpux*.
- * gcc.dg/gnu2x-attrs-1.c: Add dg-require-alias.
- * gcc.dg/pr90756.c: Add -fno-common option on hppa*-*-hpux*.
- * gcc.dg/torture/20190327-1.c: Likewise.
- * gcc.dg/spellcheck-options-21.c: Skip on 32-bit hppa*-*-hpux*.
- * gcc.dg/strlenopt-68.c: Skip on hppa*-*-hpux*.
- * gcc.dg/torture/pr90020.c: Likewise.
- * gcc.dg/ucnid-16-utf8.c: Add dg-require-iconv "latin1".
+ PR target/98670
+ * gcc.target/i386/pr98670.c: New test.
- PR ipa/92548
- * gcc.dg/ipa/ipa-sra-12.c: xfail parameter split test on 32-bit
- hppa*-*-hpux*.
- * gcc.dg/ipa/ipa-sra-14.c: Likewise.
- * gcc.dg/ipa/ipcp-agg-12.c: xfail adding extra caller test.
+2021-01-14 Jakub Jelinek <jakub@redhat.com>
- * g++.dg/ext/visibility/ref-temp1.C: Require visibility.
- * gfortran.dg/pr90988_4.f: Likewise.
- * gfortran.dg/pr91372.f90: Likewise.
+ PR tree-optimization/96688
+ * gcc.dg/tree-ssa/pr96688.c: New test.
+ * gcc.dg/tree-ssa/reassoc-37.c: Adjust scan-tree-dump regex.
+ * gcc.target/i386/pr66821.c: Likewise.
-2020-02-29 Jeff Law <law@redhat.com>
+2021-01-14 Richard Sandiford <richard.sandiford@arm.com>
- * gcc.target/or1k/return-2.c: Update expected output.
+ * gcc.target/aarch64/sve/cost_model_11.c: New test.
+ * gcc.target/aarch64/sve/mask_struct_load_5.c: Use
+ -fno-vect-cost-model.
- * gcc.target/xstormy16/sfr/06_sfrw_to_var.c: Update expected output.
+2021-01-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
-2020-02-28 Iain Sandoe <iain@sandoe.co.uk>
+ * gcc.target/aarch64/narrow_high-intrinsics.c: Update uqxtn2 and
+ sqxtn2 scan-assembler-times.
- * g++.dg/coroutines/torture/func-params-08.C: Update
- to suspend for each co_await operation.
+2021-01-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
-2020-02-28 Paul Thomas <pault@gcc.gnu.org>
+ * gcc.target/aarch64/narrow_high-intrinsics.c: Adjust
+ scan-assembler-times for xtn2.
- PR fortran/92785
- * gfortran.dg/unlimited_polymorphic_31.f03 : New test.
+2021-01-13 Marek Polacek <polacek@redhat.com>
-2020-02-28 Jakub Jelinek <jakub@redhat.com>
+ PR c++/98231
+ * g++.dg/lookup/using63.C: New test.
- P1937R2 - Fixing inconsistencies between const{expr,eval} functions
- * g++.dg/cpp2a/consteval3.C: Change dg-error about taking address of
- immediate function in unevaluated contexts into dg-bogus.
- * g++.dg/cpp2a/consteval16.C: New test.
+2021-01-13 Jakub Jelinek <jakub@redhat.com>
- PR middle-end/92152
- * g++.dg/torture/pr92152.C (size_t): Use decltype (sizeof (0)) instead
- of hardcoding unsigned long.
- (uint64_t): Use unsigned long long instead of unsigned long.
+ PR tree-optimization/96691
+ * gcc.dg/tree-ssa/pr96691.c: New test.
-2020-02-27 Michael Meissner <meissner@linux.ibm.com>
+2021-01-13 Richard Biener <rguenther@suse.de>
- PR target/93932
- * gcc.target/powerpc/fold-vec-extract-longlong.p8.c: Adjust
- instruction counts.
+ PR tree-optimization/92645
+ * gcc.target/i386/pr92645-7.c: New testcase.
+ * gcc.dg/tree-ssa/ssa-fre-54.c: Adjust.
+ * gcc.dg/pr69047.c: Likewise.
-2020-02-27 Martin Jambor <mjambor@suse.cz>
- Feng Xue <fxue@os.amperecomputing.com>
+2021-01-13 Richard Sandiford <richard.sandiford@arm.com>
- PR ipa/93707
- * gcc.dg/ipa/pr93707.c: New test.
+ * gcc.target/aarch64/sve/mls_2.c: New test.
+ * g++.target/aarch64/sve/cond_mls_1.C: Likewise.
+ * g++.target/aarch64/sve/cond_mls_2.C: Likewise.
+ * g++.target/aarch64/sve/cond_mls_3.C: Likewise.
+ * g++.target/aarch64/sve/cond_mls_4.C: Likewise.
+ * g++.target/aarch64/sve/cond_mls_5.C: Likewise.
-2020-02-27 Jan Hubicka <hubicka@ucw.cz>
+2021-01-13 Richard Sandiford <richard.sandiford@arm.com>
- PR middle-end/92152
- * gcc.dg/tree-ssa/alias-access-path-12.c: New testcase.
- * g++.dg/torture/pr92152.C: New testcase.
- * gcc.dg/torture/pr92152.c: New testcase.
- * gcc.dg/tree-ssa/20030807-7.c: xfail.
- * gcc.dg/tree-ssa/alias-access-path-4.c: xfail one case.
- * gcc.dg/tree-ssa/alias-access-path-5.c: xfail one case.
+ * gcc.target/aarch64/sve/mla_2.c: New test.
+ * g++.target/aarch64/sve/cond_mla_1.C: Likewise.
+ * g++.target/aarch64/sve/cond_mla_2.C: Likewise.
+ * g++.target/aarch64/sve/cond_mla_3.C: Likewise.
+ * g++.target/aarch64/sve/cond_mla_4.C: Likewise.
+ * g++.target/aarch64/sve/cond_mla_5.C: Likewise.
-2020-02-27 Mihail Ionescu <mihail.ionescu@arm.com>
+2021-01-13 Richard Biener <rguenther@suse.de>
- * gcc.target/arm/bf16_dup.c: New test.
- * gcc.target/arm/bf16_reinterpret.c: Likewise.
+ PR tree-optimization/92645
+ * gcc.target/i386/pr92645-6.c: New testcase.
-2020-02-27 Will Schmidt <will_schmidt@vnet.ibm.com>
+2021-01-13 Richard Sandiford <richard.sandiford@arm.com>
- * lib/target_supports.exp (check_effective_target_has_arch_pwr5): New.
- (check_effective_target_has_arch_pwr6): New.
- (check_effective_target_has_arch_pwr7): New.
- (check_effective_target_has_arch_pwr8): New.
- (check_effective_target_has_arch_pwr9): New.
- * gcc.target/powerpc/pr92132-fp-1.c: Add target check.
+ * gcc.target/aarch64/sve/sel_1.c: Require aarch64_variant_pcs.
+ * gcc.target/aarch64/sve/sel_2.c: Likewise.
+ * gcc.target/aarch64/sve/sel_3.c: Likewise.
+2021-01-13 Jakub Jelinek <jakub@redhat.com>
-2020-02-27 Bill Schmidt <wschmidt@linux.ibm.com>
+ PR target/95905
+ * gcc.target/i386/pr95905-2.c: Use scan-assembler-times instead of
+ scan-assembler. Add tests with zero vector as first __builtin_shuffle
+ operand.
+ * gcc.target/i386/pr95905-3.c: New test.
+ * gcc.target/i386/pr95905-4.c: New test.
- * gcc.target/powerpc/ppc64-abi-1.c: Compile with -mno-pcrel.
- * gcc.target/powerpc/ppc64-abi-2.c: Likewise.
+2021-01-13 Martin Liska <mliska@suse.cz>
-2020-02-27 Alexandre Oliva <oliva@adacore.com>
+ PR tree-optimization/98455
+ * gcc.dg/tree-ssa/pr98455.c: New test.
- * gcc.target/aarch64/vect-mull.x (SH): Undefine.
+2021-01-13 Richard Biener <rguenther@suse.de>
-2020-02-27 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/98640
+ * gcc.dg/torture/pr98640.c: New testcase.
- PR tree-optimization/93508
- * gcc.dg/tree-ssa/ssa-fre-85.c: New testcase.
+2021-01-13 Jakub Jelinek <jakub@redhat.com>
-2020-02-27 Richard Biener <rguenther@suse.de>
+ PR target/96938
+ * gcc.target/i386/pr96938.c: New test.
- PR tree-optimization/93953
- * gcc.dg/pr93953.c: New testcase.
+2021-01-13 Jakub Jelinek <jakub@redhat.com>
-2020-02-27 Jakub Jelinek <jakub@redhat.com>
+ PR target/95905
+ * gcc.target/i386/pr95905-1.c: New test.
+ * gcc.target/i386/pr95905-2.c: New test.
- PR c/93949
- * gcc.c-torture/compile/pr93949.c: New test.
+2021-01-13 Julian Brown <julian@codesourcery.com>
- PR tree-optimization/93582
- PR tree-optimization/93945
- * gcc.dg/tree-ssa/pr93582-9.c: New test.
- * gcc.c-torture/execute/pr93945.c: New test.
+ * gcc.target/gcn/fpdiv.c: New test.
-2020-02-26 Marek Polacek <polacek@redhat.com>
+2021-01-12 Martin Sebor <msebor@redhat.com>
- PR c++/93789 - ICE with invalid array bounds.
- * g++.dg/ext/vla22.C: New test.
+ PR c/98597
+ PR c/98592
+ * g++.dg/warn/Wuninitialized-13.C: New test.
+ gcc.dg/uninit-39.c: New test.
+ #
+ * gcc.dg/uninit-39.c: New file.
-2020-02-26 David Malcolm <dmalcolm@redhat.com>
+2021-01-12 Christophe Lyon <christophe.lyon@linaro.org>
- PR analyzer/93950
- * g++.dg/analyzer/pr93950.C: New test.
+ PR target/97875
+ * gcc.target/arm/simd/mve-vneg.c: Update test.
-2020-02-26 David Malcolm <dmalcolm@redhat.com>
+2021-01-12 Vladimir N. Makarov <vmakarov@redhat.com>
- PR analyzer/93947
- * gcc.dg/analyzer/torture/pr93947.c: New test.
+ PR target/97969
+ * gcc.target/arm/pr97969.c: New.
-2020-02-26 Iain Sandoe <iain@sandoe.co.uk>
+2021-01-12 Patrick Palka <ppalka@redhat.com>
- * g++.dg/coroutines/coro1-refs-and-ctors.h: New.
- * g++.dg/coroutines/torture/func-params-07.C: New test.
- * g++.dg/coroutines/torture/func-params-08.C: New test.
+ PR c++/98611
+ * g++.dg/cpp2a/concepts-ctad1.C: New test.
+ * g++.dg/cpp2a/concepts-ctad2.C: New test.
-2020-02-26 Peter Bergner <bergner@linux.ibm.com>
+2021-01-12 Richard Biener <rguenther@suse.de>
- PR target/93913
- * gcc.target/powerpc/fold-vec-st-char.c (scan-assembler-times): Allow
- stxv and stxvx instructions as well.
- * gcc.target/powerpc/fold-vec-st-float.c: Likewise.
- * gcc.target/powerpc/fold-vec-st-int.c: Likewise.
- * gcc.target/powerpc/fold-vec-st-short.c: Likewise.
+ PR tree-optimization/98550
+ * g++.dg/opt/pr98550.C: New testcase.
-2020-02-26 Patrick Palka <ppalka@redhat.com>
+2021-01-12 Jakub Jelinek <jakub@redhat.com>
- * g++.dg/concepts/diagnostic2.C: New test.
- * g++.dg/concepts/diagnostic3.C: New test.
+ PR tree-optimization/98629
+ * gcc.c-torture/compile/pr98629.c: New test.
-2020-02-26 Marek Polacek <polacek@redhat.com>
+2021-01-12 Jakub Jelinek <jakub@redhat.com>
- PR c++/93676 - value-init crash in template.
- * g++.dg/cpp0x/nsdmi-template19.C: New test.
+ PR tree-optimization/95731
+ * gcc.dg/tree-ssa/pr95731.c: New test.
+ * gcc.c-torture/execute/pr95731.c: New test.
-2020-02-26 Marek Polacek <polacek@redhat.com>
+2021-01-12 Marek Polacek <polacek@redhat.com>
- PR c++/93862 - ICE with static_cast when converting from int[].
- * g++.dg/cpp0x/rv-cast7.C: New test.
+ PR c++/98620
+ * g++.dg/warn/Wmissing-field-initializers-2.C: New test.
-2020-02-26 Marek Polacek <polacek@redhat.com>
+2021-01-12 David Malcolm <dmalcolm@redhat.com>
- DR 1423, Convertibility of nullptr to bool.
- * g++.dg/DRs/dr1423.C: New test.
+ PR analyzer/98628
+ * gcc.dg/analyzer/pr98628.c: New test.
-2020-02-26 Marek Polacek <polacek@redhat.com>
+2021-01-11 Richard Sandiford <richard.sandiford@arm.com>
- PR c++/93803 - ICE with constexpr init and [[no_unique_address]].
- * g++.dg/cpp2a/constexpr-init16.C: New test.
- * g++.dg/cpp2a/constexpr-init17.C: New test.
+ * gcc.target/aarch64/sve/asrdiv_4.c: New test.
+ * gcc.target/aarch64/sve/cond_asrd_1.c: Likewise.
+ * gcc.target/aarch64/sve/cond_asrd_1_run.c: Likewise.
+ * gcc.target/aarch64/sve/cond_asrd_2.c: Likewise.
+ * gcc.target/aarch64/sve/cond_asrd_2_run.c: Likewise.
+ * gcc.target/aarch64/sve/cond_asrd_3.c: Likewise.
+ * gcc.target/aarch64/sve/cond_asrd_3_run.c: Likewise.
-2020-02-26 Richard Sandiford <richard.sandiford@arm.com>
+2021-01-11 Richard Sandiford <richard.sandiford@arm.com>
- PR middle-end/93843
- * gcc.dg/vect/pr93843-1.c: New test.
- * gcc.dg/vect/pr93843-2.c: Likewise.
+ * g++.target/aarch64/sve/cond_bic_1.C: New test.
+ * g++.target/aarch64/sve/cond_bic_2.C: Likewise.
+ * g++.target/aarch64/sve/cond_bic_3.C: Likewise.
+ * g++.target/aarch64/sve/cond_bic_4.C: Likewise.
-2020-02-26 Jakub Jelinek <jakub@redhat.com>
+2021-01-11 Richard Sandiford <richard.sandiford@arm.com>
- PR tree-optimization/93820
- * gcc.dg/pr93820-2.c: New test.
+ * gcc.target/aarch64/sve/mul_highpart_3.c: New test.
- PR tree-optimization/93820
- * gcc.dg/pr93820.c: New test.
+2021-01-11 Richard Sandiford <richard.sandiford@arm.com>
- PR c++/93905
- * g++.dg/cpp0x/pr93905.C: New test.
+ * g++.target/aarch64/sve/abd_1.C: New test.
+ * g++.target/aarch64/sve/cond_abd_1.C: Likewise.
+ * g++.target/aarch64/sve/cond_abd_2.C: Likewise.
+ * g++.target/aarch64/sve/cond_abd_3.C: Likewise.
+ * g++.target/aarch64/sve/cond_abd_4.C: Likewise.
-2020-02-25 Mihail Ionescu <mihail.ionescu@arm.com>
+2021-01-11 Richard Sandiford <richard.sandiford@arm.com>
- * gcc.target/aarch64/advsimd-intrinsics/bf16_vstn.c: New test.
- * gcc.target/aarch64/advsimd-intrinsics/bf16_vldn.c: New test.
+ * gcc.target/aarch64/sve/adr_6.c: New test.
-2020-02-25 Mihail Ionescu <mihail.ionescu@arm.com>
+2021-01-11 Richard Sandiford <richard.sandiford@arm.com>
- * gcc.target/aarch64/advsimd-intrinsics/bf16_dup.c: New test.
- * gcc.target/aarch64/advsimd-intrinsics/bf16_reinterpret.c: New test.
+ * g++.target/aarch64/sve/cond_arith_1.C: New test.
+ * g++.target/aarch64/sve/cond_arith_2.C: Likewise.
+ * g++.target/aarch64/sve/cond_arith_3.C: Likewise.
+ * g++.target/aarch64/sve/cond_arith_4.C: Likewise.
+ * g++.target/aarch64/sve/cond_shift_1.C: New test.
+ * g++.target/aarch64/sve/cond_shift_2.C: Likewise.
+ * g++.target/aarch64/sve/cond_shift_3.C: Likewise.
+ * g++.target/aarch64/sve/cond_shift_4.C: Likewise.
-2020-02-25 Dennis Zhang <dennis.zhang@arm.com>
+2021-01-11 Richard Sandiford <richard.sandiford@arm.com>
- * gcc.target/arm/simd/bf16_dot_1.c: New test.
- * gcc.target/arm/simd/bf16_dot_2.c: New test.
- * gcc.target/arm/simd/bf16_dot_3.c: New test.
+ PR testsuite/98602
+ * g++.target/aarch64/sve/max_1.C: New test.
+ * g++.target/aarch64/sve/min_1.C: Likewise.
+ * gcc.target/aarch64/sve/mul_2.c: Likewise.
-2020-02-25 Jakub Jelinek <jakub@redhat.com>
+2021-01-11 Richard Sandiford <richard.sandiford@arm.com>
- PR rtl-optimization/93908
- * gcc.c-torture/execute/pr93908.c: New test.
+ * gcc.target/aarch64/sve/shift_2.c: New test.
-2019-02-25 Eric Botcazou <ebotcazou@adacore.com>
+2021-01-11 Jakub Jelinek <jakub@redhat.com>
- * gnat.dg/lto24.adb: New test.
- * gnat.dg/lto24_pkg1.ads: New helper.
- * gnat.dg/lto24_pkg2.ad[sb]: Likewise.
+ PR c++/98481
+ * g++.dg/abi/abi-tag24.C: New test.
-2020-02-25 Richard Biener <rguenther@suse.de>
+2021-01-11 Richard Biener <rguenther@suse.de>
- * gcc.dg/tree-ssa/ssa-fre-86.c: New testcase.
+ PR tree-optimization/91403
+ * gcc.dg/vect/pr91403.c: New testcase.
-2020-02-25 Richard Biener <rguenther@suse.de>
+2021-01-11 Bernd Edlinger <bernd.edlinger@hotmail.de>
- PR tree-optimization/93868
- * gcc.dg/torture/pr93868.c: New testcase.
+ PR testsuite/98225
+ * gcc.misc-tests/outputs.exp: Unset MAKEFLAGS.
+ Expect .ld1_args only when GNU LD is used.
+ Add an exception for *.gcc_args files.
-2020-02-25 Jakub Jelinek <jakub@redhat.com>
+2021-01-11 Jakub Jelinek <jakub@redhat.com>
- PR middle-end/93874
- * gcc.dg/pr93874.c: New test.
+ PR tree-optimization/95867
+ * gcc.dg/tree-ssa/pr95867.c: New test.
- PR ipa/93763
- * gcc.dg/ipa/pr93763.c: Adjust the test so that it compiles without
- warnings and still ICEs before the ipa-cp.c fix.
- * g++.dg/ipa/pr93763.C: Require c++11 effective target.
+2021-01-11 Jakub Jelinek <jakub@redhat.com>
- PR translation/93864
- * objc.dg/encode-2.m: Fix comment typo paramter -> parameter.
- * obj-c++.dg/encode-4.mm: Likewise.
- * gfortran.dg/data_array_5.f90: Likewise.
- * gcc.dg/decl-1.c: Likewise.
+ PR tree-optimization/95852
+ * gcc.target/i386/pr95852-3.c: New test.
+ * gcc.target/i386/pr95852-4.c: New test.
-2020-02-24 David Malcolm <dmalcolm@redhat.com>
+2021-01-11 Jakub Jelinek <jakub@redhat.com>
- PR analyzer/93032
- * gcc.dg/analyzer/pr93382.c: Add "-fanalyzer-checker=taint".
- * gcc.dg/analyzer/taint-1.c: Likewise.
+ PR tree-optimization/95852
+ * gcc.target/i386/pr95852-1.c: New test.
+ * gcc.target/i386/pr95852-2.c: New test.
-2020-02-24 David Malcolm <dmalcolm@redhat.com>
+2021-01-11 Martin Liska <mliska@suse.cz>
- PR analyzer/93899
- * g++.dg/analyzer/pr93899.C: New test.
+ PR gcov-profile/98273
+ * lib/gcov.exp: Add run-gcov-pytest function which runs pytest.
+ * g++.dg/gcov/pr98273.C: New test.
+ * g++.dg/gcov/gcov.py: New test.
+ * g++.dg/gcov/test-pr98273.py: New test.
-2020-02-24 Martin Sebor <msebor@redhat.com>
+2021-01-09 Maciej W. Rozycki <macro@linux-mips.org>
- PR c++/93804
- * g++.dg/warn/Wredundant-tags-4.C: New test.
- * g++.dg/warn/Wredundant-tags-5.C: New test.
- * g++.dg/warn/Wredundant-tags-5.h: New test.
+ * gcc.target/vax/cmpelim-eq-notsi.c: Use subtraction from a
+ constant then rather than addition.
+ * gcc.target/vax/cmpelim-le-notsi.c: Likewise.
+ * gcc.target/vax/cmpelim-lt-notsi.c: Likewise.
-2020-02-24 David Malcolm <dmalcolm@redhat.com>
+2021-01-09 Jakub Jelinek <jakub@redhat.com>
- * gcc.dg/analyzer/analyzer-verbosity-2a.c: New test.
- * gcc.dg/analyzer/analyzer-verbosity-3.c: New test, based on
- analyzer-verbosity-2.c
- * gcc.dg/analyzer/analyzer-verbosity-3a.c: New test.
- * gcc.dg/analyzer/edges-1.c: New test.
- * gcc.dg/analyzer/edges-2.c: New test.
- * gcc.dg/analyzer/file-paths-1.c: Add -fanalyzer-verbosity=3.
+ PR c++/98556
+ * c-c++-common/pr98556.c: New test.
-2020-02-24 Marek Polacek <polacek@redhat.com>
+2021-01-09 Jakub Jelinek <jakub@redhat.com>
- PR c++/93869 - ICE with -Wmismatched-tags.
- * g++.dg/warn/Wmismatched-tags-2.C: New test.
+ PR rtl-optimization/98603
+ * gcc.target/i386/pr98603.c: New test.
+ * gcc.target/aarch64/pr98603.c: New test.
-2020-02-20 Mark Eggleston <mark.eggleston@codethink.com>
+2021-01-09 Alexandre Oliva <oliva@gnu.org>
- PR fortran/93835
- * gfortran.dg/pr77351.f90 : Check for one error instead of two.
- * gfortran.dg/pr93835.f08 : New test.
+ PR debug/97714
+ * gcc.dg/debug/pr97714.c: New.
-2020-02-24 Marek Polacek <polacek@redhat.com>
+2021-01-08 H.J. Lu <hjl.tools@gmail.com>
- PR c++/93712 - ICE with ill-formed array list-initialization.
- * g++.dg/cpp0x/initlist-array11.C: New test.
+ PR target/98482
+ * gcc.target/i386/pr98482-1.c: Require lp64.
+ * gcc.target/i386/pr98482-2.c: Likewise.
-2020-02-20 Mark Eggleston <mark.eggleston@codethink.com>
+2021-01-08 Ilya Leoshkevich <iii@linux.ibm.com>
- PR fortran/93604
- * gfortran.dg/pr93604.f90 : New test.
+ * gcc.target/s390/vector/long-double-vx-macro-off-on.c: New test.
+ * gcc.target/s390/vector/long-double-vx-macro-on-off.c: New test.
-2020-02-24 Jakub Jelinek <jakub@redhat.com>
+2021-01-08 Patrick Palka <ppalka@redhat.com>
- P1937R2 - Fixing inconsistencies between const{expr,eval} functions
- * g++.dg/ext/consteval1.C: Change dg-{message,error} into dg-bogus.
- * g++.dg/cpp2a/consteval6.C: Likewise.
- * g++.dg/cpp2a/consteval3.C: Change dg-error for unevaluated operands
- into dg-bogus.
+ PR c++/98551
+ * g++.dg/cpp0x/constexpr-pmf2.C: New test.
-2020-02-24 Christophe Lyon <christophe.lyon@linaro.org>
+2021-01-08 Patrick Palka <ppalka@redhat.com>
- PR lto/78353
- * gcc.target/arm/pr78353-1.c: Add arm_arch_v7a_multilib effective
- target.
- * gcc.target/arm/pr78353-2.c: Likewise.
+ PR c++/98515
+ * g++.dg/template/access32.C: New test.
+ * g++.dg/template/access33.C: New test.
-2020-02-24 Jakub Jelinek <jakub@redhat.com>
+2021-01-08 H.J. Lu <hjl.tools@gmail.com>
- PR tree-optimization/93582
- * gcc.dg/tree-ssa/pr93582-4.c: New test.
- * gcc.dg/tree-ssa/pr93582-5.c: New test.
- * gcc.dg/tree-ssa/pr93582-6.c: New test.
- * gcc.dg/tree-ssa/pr93582-7.c: New test.
- * gcc.dg/tree-ssa/pr93582-8.c: New test.
+ PR target/98482
+ * gcc.target/i386/pr98482-2.c: Updated.
-2020-02-24 Tobias Burnus <tobias@codesourcery.com>
+2021-01-08 Richard Biener <rguenther@suse.de>
- PR fortran/93552
- * gfortran.dg/goacc/tile-4.f90: New.
+ PR tree-optimization/98544
+ * gcc.dg/vect/bb-slp-pr98544.c: New testcase.
-2020-02-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
- Kugan Vivekandarajah <kugan.vivekanandarajah@linaro.org>
+2021-01-08 H.J. Lu <hjl.tools@gmail.com>
- PR driver/47785
- PR lto/78353
- * gcc.target/arm/pr78353-1.c: New test.
- * gcc.target/arm/pr78353-2.c: Likewise.
+ PR target/98482
+ * gcc.target/i386/pr98482-1.c: New test.
+ * gcc.target/i386/pr98482-1.c: Likewise.
+ * gcc.target/i386/pr98482-2.c: New file.
-2020-02-23 Thomas Koenig <tkoenig@gcc.gnu.org>
+2021-01-08 Jakub Jelinek <jakub@redhat.com>
- PR fortran/93890
- * gfortran.dg/argument_checking_24.f90: Correct test case.
+ PR target/98585
+ * gcc.target/i386/pr98585.c: New test.
-2020-02-21 Martin Sebor <msebor@redhat.com>
+2021-01-08 Richard Sandiford <richard.sandiford@arm.com>
- PR gcov-profile/93753
- * g++.dg/ext/flexary36.C: New test.
- * g++.dg/lto/pr93166_0.C: Make struct with flexarray valid.
+ * gcc.target/aarch64/sve/cnot_2.c: New test.
+ * gcc.target/aarch64/sve/cond_cnot_4.c: Likewise.
+ * gcc.target/aarch64/sve/cond_cnot_4_run.c: Likewise.
+ * gcc.target/aarch64/sve/cond_cnot_5.c: Likewise.
+ * gcc.target/aarch64/sve/cond_cnot_5_run.c: Likewise.
+ * gcc.target/aarch64/sve/cond_cnot_6.c: Likewise.
+ * gcc.target/aarch64/sve/cond_cnot_6_run.c: Likewise.
-2020-02-21 Dennis Zhang <dennis.zhang@arm.com>
+2021-01-08 Richard Sandiford <richard.sandiford@arm.com>
- * gcc.target/arm/simd/vmmla_1.c: New test.
+ * gcc.target/aarch64/sve/cond_uxt_5.c: New test.
+ * gcc.target/aarch64/sve/cond_uxt_5_run.c: Likewise.
+ * gcc.target/aarch64/sve/cond_uxt_6.c: Likewise.
+ * gcc.target/aarch64/sve/cond_uxt_6_run.c: Likewise.
+ * gcc.target/aarch64/sve/cond_uxt_7.c: Likewise.
+ * gcc.target/aarch64/sve/cond_uxt_7_run.c: Likewise.
+ * gcc.target/aarch64/sve/cond_uxt_8.c: Likewise.
+ * gcc.target/aarch64/sve/cond_uxt_8_run.c: Likewise.
-2020-02-21 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
+2021-01-08 Tamar Christina <tamar.christina@arm.com>
- * gcc.target/arm/armv8_1m-shift-imm-1.c: Add MVE target checks.
- * gcc.target/arm/armv8_1m-shift-reg-1.c: Likewise.
* lib/target-supports.exp
- (check_effective_target_arm_v8_1m_mve_ok_nocache): New.
- (check_effective_target_arm_v8_1m_mve_ok): New.
- (add_options_for_v8_1m_mve): New.
-
-2020-02-21 Uroš Bizjak <ubizjak@gmail.com>
-
- * gcc.target/i386/pr69052.c: Require target ia32.
- (dg-options): Add -fcommon and remove -pie.
-
-2020-02-21 Uroš Bizjak <ubizjak@gmail.com>
-
- * gcc.dg/vect/vect-epilogues.c (scan-tree-dump): Require
- vect_mutiple_sizes effective target.
-
-2020-02-21 Jan Hubicka <hubicka@ucw.cz>
- Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/93586
- * gcc.dg/torture/pr93586.c: New testcase.
-
-2020-02-21 Martin Jambor <mjambor@suse.cz>
-
- PR tree-optimization/93845
- * g++.dg/tree-ssa/pr93845.C: New test.
-
-2020-02-21 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/rsqrt_1.c: New test.
- * gcc.target/aarch64/sve/rsqrt_1_run.c: Likewise.
- * gcc.target/aarch64/sve/sqrt_1.c: Likewise.
- * gcc.target/aarch64/sve/sqrt_1_run.c: Likewise.
-
-2020-02-21 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/recip_1.c: New test.
- * gcc.target/aarch64/sve/recip_1_run.c: Likewise.
- * gcc.target/aarch64/sve/recip_2.c: Likewise.
- * gcc.target/aarch64/sve/recip_2_run.c: Likewise.
-
-2020-02-20 Martin Sebor <msebor@redhat.com>
-
- PR c++/93801
- * g++.dg/warn/Wredundant-tags-3.C: New test.
-
-2020-02-20 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/93828
- * g++.target/i386/pr93828.C: New test.
-
-2020-02-20 Peter Bergner <bergner@linux.ibm.com>
-
- PR target/93658
- * gcc.target/powerpc/pr93658.c: New test.
-
-2020-02-20 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/93825
- * gfortran.dg/goacc/tile-3.f90: New.
-
-2020-02-19 Marek Polacek <polacek@redhat.com>
-
- PR c++/93169 - wrong-code with a non-constexpr constructor.
- * g++.dg/cpp0x/constexpr-93169.C: New test.
-
-2020-02-19 Martin Sebor <msebor@redhat.com>
-
- PR tree-optimization/92128
- * gcc.dg/strlenopt-81.c: Align arrays to let strictly aligned targets
- optimize away calls as expected.
-
-2020-02-19 Uroš Bizjak <ubizjak@gmail.com>
-
- * gcc.dg/gimplefe-41.c: Add -msse2 additional options for x86 targets.
- * gcc.dg/ipa/ipa-sra-19.c: Ditto.
-
-2020-02-19 Richard Sandiford <richard.sandiford@arm.com>
-
- PR tree-optimization/93767
- * gcc.dg/vect/pr93767.c: New test.
-
-2020-02-19 Martin Jambor <mjambor@suse.cz>
-
- PR tree-optimization/93776
- * gcc.dg/tree-ssa/pr93776.c: New test.
-
-2020-02-19 Martin Jambor <mjambor@suse.cz>
-
- PR tree-optimization/93667
- * g++.dg/tree-ssa/pr93667.C: New test.
-
-2020-02-19 Hongtao Liu <hongtao.liu@intel.com>
-
- * g++.dg/other/i386-2.C: add -mavx512vbmi2
- * g++.dg/other/i386-3.C: Ditto.
-
-2020-02-18 James Greenhalgh <james.greenhalgh@arm.com>
-
- * gcc.target/aarch64/vmull_high.c: New.
-
-2020-02-18 Marek Polacek <polacek@redhat.com>
-
- PR c++/93817
- * g++.dg/diagnostic/array-init1.C: Fix for ILP32.
-
-2020-02-18 Jon Beniston <jon@beniston.com>
-
- * gcc.dg/strcmpopt_6.c: Add space in array for terminator.
-
-2020-02-18 Mark Eggleston <markeggleston@gcc.gnu.org>
-
- PR fortran/93714
- * gfortran.dg/char_pointer_assign_6.f90: Look for no target
- message instead of length mismatch.
- * gfortran.dg/pr93714_1.f90
- * gfortran.dg/pr93714_2.f90
-
-2020-02-18 Mark Eggleston <mark.eggleston@codethink.com>
-
- PR fortran/93601
- * gfortran.dg/pr93601.f90 : New test.
-
-2020-02-18 Martin Liska <mliska@suse.cz>
-
- PR ipa/93583
- * gcc.dg/ipa/pr93583.c: New test.
-
-2020-02-18 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93777
- * g++.dg/analyzer/pr93777.C: New test.
- * gfortran.dg/analyzer/pr93777.f90: New test.
-
-2020-02-18 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93778
- * gfortran.dg/analyzer/pr93778.f90: New test.
-
-2020-02-18 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93774
- * gfortran.dg/analyzer/deferred_character_25.f90: New test,
- based on gfortran.dg/deferred_character_25.f90.
-
-2020-02-18 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93779
- * gfortran.dg/analyzer/pr88304-2.f90: New test, adapted from
- gfortran.fortran-torture/compile/pr88304-2.f90
-
-2020-02-18 Mark Eggleston <mark.eggleston@codethink.com>
-
- PR fortran/93603
- * gfortran.dg/pr93603.f90 : New test.
-
-2020-02-20 Mark Eggleston <markeggleston@gcc.gnu.org>
-
- PR fortran/93580
- * gfortran.dg/dg/pr93580.f90: New test.
-
-2020-02-18 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/93780
- * gcc.dg/pr93780.c: New test.
-
-2020-02-17 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93775
- * gcc.dg/analyzer/20020129-1.c: New test.
-
-2020-02-17 Alexandre Oliva <oliva@adacore.com>
-
- * gcc.dg/tls/emutls-3.c: New, combining emutls-2.c and
- thr-init-2.c into an execution test with explicitly common
- variables.
-
-2020-02-17 Wilco Dijkstra <wdijkstr@arm.com>
-
- * gcc.target/aarch64/pr93565.c: Fix test for ilp32.
-
-2020-02-17 Will Schmidt <will_schmidt@vnet.ibm.com>
-
- * gcc.target/powerpc/fold-vec-extract-longlong.p8.c: Correct
- number of expected insns.
-
-2020-02-17 Martin Liska <mliska@suse.cz>
-
- PR ipa/93760
- * g++.dg/lto/odr-8_1.C: Fix grammar.
-
-2020-02-17 Richard Biener <rguenther@suse.de>
-
- PR c/86134
- * gcc.dg/pr86134.c: New testcase.
- * gcc.dg/pr28322-2.c: Adjust.
-
-2020-02-17 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93388
- * gcc.dg/analyzer/torture/20060625-1.c: New test.
- * gcc.dg/analyzer/torture/pr51628-30.c: New test.
- * gcc.dg/analyzer/torture/pr59037.c: New test.
-
-2020-02-17 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/malloc-1.c (test_48): New.
-
-2020-02-17 Jiufu Guo <guojiufu@linux.ibm.com>
-
- PR target/93047
- * gcc.dg/torture/stackalign/builtin-return-2.c: New test case.
-
-2020-02-16 Uroš Bizjak <ubizjak@gmail.com>
-
- PR target/93743
- * gcc.target/i386/pr93743.c : New test.
-
-2020-02-15 Marek Polacek <polacek@redhat.com>
-
- PR c++/93710 - poor diagnostic for array initializer.
- * g++.dg/diagnostic/array-init1.C: New test.
-
-2020-02-15 Jason Merrill <jason@redhat.com>
-
- * lib/target-supports.exp (check_effective_target_c++2a_only): Also
- look for -std=*++20.
- (check_effective_target_concepts): Use check_effective_target_c++2a.
-
-2020-02-15 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/93744
- * gcc.c-torture/execute/pr93744-1.c: New test.
- * gcc.c-torture/execute/pr93744-2.c: New test.
- * gcc.c-torture/execute/pr93744-3.c: New test.
-
-2020-02-14 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/61414
- * g++.dg/cpp0x/enum39.C: New test.
-
-2020-02-14 Martin Jambor <mjambor@suse.cz>
-
- PR tree-optimization/93516
- * g++.dg/tree-ssa/pr93516.C: New test.
-
-2020-02-14 Hongtao Liu <hongtao.liu@intel.com>
-
- * gcc.target/i386/avx512vbmi2-vpshld-1.c: New test.
- * gcc.target/i386/avx512vbmi2-vpshrd-1.c: Ditto.
- * gcc.target/i386/sse-12.c: Add -mavx512vbmi2.
- * gcc.target/i386/sse-13.c: Ditto.
- * gcc.target/i386/sse-14.c: Add -mavx512vbmi2 and tests.
- * gcc.target/i386/sse-22.c: Ditto.
-
-2020-02-14 Jakub Jelinek <jakub@redhat.com>
-
- Partially implement P1042R1: __VA_OPT__ wording clarifications
- PR preprocessor/92319
- * c-c++-common/cpp/va-opt-4.c: New test.
-
-2020-02-13 Jakub Jelinek <jakub@redhat.com>
-
- PR c/93576
- * gcc.dg/pr93576.c: New test.
-
-2020-02-13 Sandra Loosemore <sandra@codesourcery.com>
-
- * g++.dg/cpp0x/constexpr-static13.C:
- Add -fdelete-null-pointer-checks.
- * g++.dg/cpp2a/constexpr-new11.C: Likewise.
- * g++.dg/cpp2a/constexpr-new12.C: Likewise.
-
-2020-02-13 H.J. Lu <hongjiu.lu@intel.com>
-
- PR target/93656
- * gcc.target/i386/pr93656.c: New test.
-
-2020-02-13 Claudiu Zissulescu <claziss@synopsys.com>
-
- * gcc.target/arc/nps400-1.c: Update test.
-
-2020-02-13 Claudiu Zissulescu <claziss@synopsys.com>
-
- * gcc.target/arc/or-cnst-size2.c: Update test.
-
-2020-02-13 Claudiu Zissulescu <claziss@synopsys.com>
- Petro Karashchenko <petro.karashchenko@ring.com>
-
- * gcc.target/arc/mul64-1.c: New test.
-
-2020-02-13 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93696
- * gcc.target/i386/pr93696-1.c: New test.
- * gcc.target/i386/pr93696-2.c: New test.
- * gcc.target/i386/avx512bitalg-vpopcntw-1.c (TEST): Fix argument order
- of _mm*_mask_popcnt_*.
- * gcc.target/i386/avx512vpopcntdq-vpopcntq-1.c (TEST): Likewise.
- * gcc.target/i386/avx512vpopcntdq-vpopcntd-1.c (TEST): Likewise.
- * gcc.target/i386/avx512bitalg-vpopcntb-1.c (TEST): Likewise.
- * gcc.target/i386/avx512bitalg-vpopcntb.c (foo): Likewise.
- * gcc.target/i386/avx512bitalg-vpopcntbvl.c (foo): Likewise.
- * gcc.target/i386/avx512vpopcntdq-vpopcntd.c (foo): Likewise.
- * gcc.target/i386/avx512bitalg-vpopcntwvl.c (foo): Likewise.
- * gcc.target/i386/avx512bitalg-vpopcntw.c (foo): Likewise.
- * gcc.target/i386/avx512vpopcntdq-vpopcntq.c (foo): Likewise.
-
- PR tree-optimization/93582
- * gcc.dg/tree-ssa/pr93582-1.c: New test.
- * gcc.dg/tree-ssa/pr93582-2.c: New test.
- * gcc.dg/tree-ssa/pr93582-3.c: New test.
-
-2020-02-13 Richard Biener <rguenther@suse.de>
-
- PR testsuite/93717
- * gcc.dg/optimize-bswapsi-2.c: Add BE case.
-
-2020-02-13 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93673
- * gcc.target/i386/avx512f-pr93673.c: New test.
- * gcc.target/i386/avx512dq-pr93673.c: New test.
- * gcc.target/i386/avx512bw-pr93673.c: New test.
-
- * g++.dg/analyzer/pr93212.C: Require c++14 rather than c++11.
-
-2020-02-12 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/coro1-allocators.h: New.
- * g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C: New test.
- * g++.dg/coroutines/coro-bad-alloc-01-bad-op-del.C: New test.
- * g++.dg/coroutines/coro-bad-alloc-02-no-op-new-nt.C: New test.
- * g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C: Use new
- coro1-allocators.h header.
- * g++.dg/coroutines/torture/alloc-01-overload-newdel.C: Likewise.
- * g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C: New.
- * g++.dg/coroutines/torture/alloc-03-overload-new-1.C: New test.
- * g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C:New.
-
-2020-02-12 Jakub Jelinek <jakub@redhat.com>
-
- * gcc.target/powerpc/pr93122.c: Use -mprefixed instead of
- -mprefixed-addr in dg-options.
-
- PR middle-end/93663
- * gcc.dg/torture/builtin-round-roundeven.c (main): Add tests
- for DBL_MAX, inf, their negations and nan.
-
-2020-02-12 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/93646
- * gcc.dg/Wstringop-overflow-31.c: New test.
-
-2020-02-12 Wilco Dijkstra <wdijkstr@arm.com>
-
- PR rtl-optimization/93565
- * gcc.target/aarch64/pr93565.c: New test.
-
-2020-02-12 Wilco Dijkstra <wdijkstr@arm.com>
-
- * gcc.target/aarch64/popcnt2.c: New test.
-
-2020-02-12 Marek Polacek <polacek@redhat.com>
-
- PR c++/88819
- * g++.dg/cpp2a/nontype-class32.C: New test.
-
-2020-02-12 Marek Polacek <polacek@redhat.com>
-
- PR c++/93684 - ICE-on-invalid with broken attribute.
- * g++.dg/parse/attr4.C: New test.
-
-2020-02-12 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93670
- * gcc.target/i386/avx512vl-pr93670.c: New test.
-
-2020-02-12 Richard Biener <rguenther@suse.de>
-
- PR testsuite/93697
- * gcc.dg/pr93661.c: Pass -w, remove dg-warning.
-
-2020-02-11 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93288
- * g++.dg/analyzer/malloc.C: Add test coverage for a double-free
- called in a constructor.
- * g++.dg/analyzer/pr93288.C: New test.
-
-2020-02-11 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93212
- * g++.dg/analyzer/analyzer.exp: New subdirectory and .exp suite.
- * g++.dg/analyzer/malloc.C: New test.
- * g++.dg/analyzer/pr93212.C: New test.
-
-2020-02-11 Martin Sebor <msebor@redhat.com>
-
- PR tree-optimization/93683
- * gcc.dg/tree-ssa/ssa-dse-39.c: New test.
-
-2020-02-11 Will Schmidt <will_schmidt@vnet.ibm.com>
-
- * lib/target-supports.exp (check_effective_target_ppc_ieee128_ok): New.
- * gcc.target/powerpc/pr92796.c: Add a require-effective-target
- statement for ppc_ieee128_ok.
-
-2020-02-11 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93374
- * gcc.dg/analyzer/torture/pr93374.c: New test.
-
-2020-02-11 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93669
- * gcc.dg/analyzer/pr93669.c: New test.
-
-2020-02-11 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93649
- * gcc.dg/analyzer/torture/pr93649.c: New test.
-
-2020-02-11 Will Schmidt <will_schmidt@vnet.ibm.com>
-
- * gcc.target/powerpc/pr70010-2.c: Add -maltivec.
- * gcc.target/powerpc/pr70010-3.c: Add -maltivec.
-
-2020-02-11 Stam Markianos-Wright <stam.markianos-wright@arm.com>
-
- * gcc.target/arm/simd/vdot-2-1.c: New test.
- * gcc.target/arm/simd/vdot-2-2.c: New test.
- * gcc.target/arm/simd/vdot-2-3.c: New test.
- * gcc.target/arm/simd/vdot-2-4.c: New test.
-
-2020-02-11 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/93661
- PR tree-optimization/93662
- * gcc.dg/pr93661.c: New testcase.
-
-2020-02-12 Patrick Palka <ppalka@redhat.com>
-
- PR c++/69448
- PR c++/80471
- * g++.dg/concepts/abbrev3.C: New test.
- * g++.dg/cpp2a/concepts-pr80471.C: Adjust a static_assert to expect the
- correct behavior.
- * g++.dg/cpp0x/auto9.C: Adjust a dg-error directive.
-
- * g++.dg/cpp2a/concepts6.C: New test.
-
-2020-02-10 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93350
- * gcc.dg/analyzer/torture/pr93350.c: New test.
-
-2020-02-10 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93647
- * gcc.dg/analyzer/torture/pr93647.c: New test.
-
-2020-02-10 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93637
- * gcc.target/i386/avx-pr93637.c: New test.
-
-2020-02-10 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93405
- * gfortran.dg/analyzer/pr93405.f90: New test.
-
-2020-02-10 David Malcolm <dmalcolm@redhat.com>
-
- * gfortran.dg/analyzer/analyzer.exp: New subdirectory and .exp
- suite.
- * gfortran.dg/analyzer/malloc-example.f90: New test.
- * gfortran.dg/analyzer/malloc.f90: New test.
-
-2020-02-10 Martin Sebor <msebor@redhat.com>
-
- PR c/93640
- * gcc.dg/attr-access.c: New test.
-
-2020-02-10 Hans-Peter Nilsson <hp@axis.com>
-
- * gcc.target/cris/cris.exp (check_effective_target_cc0): New.
-
- PR target/93372
- * gcc.target/cris/pr93372-1.c, gcc.target/cris/pr93372-2.c,
- gcc.target/cris/pr93372-5.c, gcc.target/cris/pr93372-8.c,
- gcc.target/cris/pr93372-3.c, gcc.target/cris/pr93372-4.c,
- gcc.target/cris/pr93372-6.c, gcc.target/cris/pr93372-7.c,
- gcc.target/cris/pr93372-9.c, gcc.target/cris/pr93372-10.c,
- gcc.target/cris/pr93372-11.c, gcc.target/cris/pr93372-12.c,
- gcc.target/cris/pr93372-13.c, gcc.target/cris/pr93372-14.c,
- gcc.target/cris/pr93372-15.c, gcc.target/cris/pr93372-16.c,
- gcc.target/cris/pr93372-17.c, gcc.target/cris/pr93372-18.c,
- gcc.target/cris/pr93372-19.c, gcc.target/cris/pr93372-20.c,
- gcc.target/cris/pr93372-21.c, gcc.target/cris/pr93372-22.c,
- gcc.target/cris/pr93372-23.c, gcc.target/cris/pr93372-24.c,
- gcc.target/cris/pr93372-25.c, gcc.target/cris/pr93372-26.c,
- gcc.target/cris/pr93372-27.c, gcc.target/cris/pr93372-28.c,
- gcc.target/cris/pr93372-29.c, gcc.target/cris/pr93372-30.c,
- gcc.target/cris/pr93372-31.c, gcc.target/cris/pr93372-32.c,
- gcc.target/cris/pr93372-33.c, gcc.target/cris/pr93372-34.c,
- gcc.target/cris/pr93372-35.c, gcc.target/cris/dbr-1.c: New tests.
-
-2020-02-10 Jakub Jelinek <jakub@redhat.com>
-
- PR target/91913
- * gfortran.dg/pr91913.f90: New test.
-
-2020-02-10 H.J. Lu <hongjiu.lu@intel.com>
-
- PR libgcc/85334
- * g++.target/i386/pr85334-1.C: New test.
- * g++.target/i386/pr85334-2.C: Likewise.
-
-2020-02-10 Jakub Jelinek <jakub@redhat.com>
-
- PR other/93641
- * gcc.dg/format/gcc_diag-11.c (test_cdiag_bad_words): Add two further
- tests.
-
-2020-02-10 Feng Xue <fxue@os.amperecomputing.com>
-
- PR ipa/93203
- * g++.dg/ipa/pr93203.C: New test.
- * gcc.dg/ipa/ipcp-1: Change dump string.
-
-2020-02-09 Uroš Bizjak <ubizjak@gmail.com>
-
- * gcc.target/i386/pr91333.c (dg-do): Fix target selector.
-
-2020-02-09 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/93633
- * g++.dg/cpp2a/constexpr-new11.C: New test.
- * g++.dg/cpp2a/constexpr-new12.C: New test.
- * g++.dg/cpp2a/constexpr-new13.C: New test.
-
-2020-02-08 Andrew Pinski <apinski@marvel.com>
-
- PR target/91927
- * gcc.target/aarch64/pr91927.c: New testcase.
-
-2020-02-08 Peter Bergner <bergner@linux.ibm.com>
-
- PR target/93136
- * gcc.dg/vmx/ops.c: Add -flax-vector-conversions to dg-options.
- * gcc.target/powerpc/vsx-vector-6.h: Split tests into smaller functions.
- * gcc.target/powerpc/vsx-vector-6.p7.c: Adjust scan-assembler-times
- regex directives. Adjust expected instruction counts.
- * gcc.target/powerpc/vsx-vector-6.p8.c: Likewise.
- * gcc.target/powerpc/vsx-vector-6.p9.c: Likewise.
-
-2020-02-08 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/93549
- * g++.dg/ext/constexpr-pr93549.C: New test.
-
-2020-02-08 Uroš Bizjak <ubizjak@gmail.com>
- Jakub Jelinek <jakub@redhat.com>
-
- PR target/65782
- * gcc.target/i386/pr65782.c: New test.
-
-2020-02-07 Marek Polacek <polacek@redhat.com>
-
- PR c++/92947 - Paren init of aggregates in unevaluated context.
- * g++.dg/cpp2a/paren-init21.C: New test.
-
-2020-02-07 Will Schmidt <will_schmidt@vnet.ibm.com>
-
- * testsuite/gcc.target/powerpc/pr92923-1.c: Add -mvsx.
-
-2020-02-07 Dennis Zhang <dennis.zhang@arm.com>
-
- * gcc.target/aarch64/simd/vmmla.c: New test.
-
-2020-02-07 Richard Biener <rguenther@suse.de>
-
- PR middle-end/93519
- * gcc.dg/Wrestrict-21.c: New testcase.
-
-2020-02-07 H.J. Lu <hongjiu.lu@intel.com>
-
- PR target/85667
- * gcc.target/i386/pr85667-10.c: New test.
- * gcc.target/i386/pr85667-7.c: Likewise.
- * gcc.target/i386/pr85667-8.c: Likewise.
- * gcc.target/i386/pr85667-9.c: Likewise.
-
-2020-02-07 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93122
- * gcc.target/powerpc/pr93122.c: New test.
-
-2020-02-07 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR c++/89404
- * g++.dg/ext/vla21.C: New.
-
-2020-02-07 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93615
- * gcc.dg/pr93615.c: New test.
-
- PR target/93611
- * gcc.target/i386/pr93611.c: New test.
-
-2020-02-06 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93375
- * gcc.dg/analyzer/pr93375.c: Rework test case to avoid per-target
- differences in how __builtin_memcpy has been optimized at the time
- the analyzer runs.
-
-2020-02-06 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/torture/intptr_t.c: New test.
-
-2020-02-06 Segher Boessenkool <segher@kernel.crashing.org>
-
- * gcc.target/powerpc/pr93012.c: New.
-
-2020-02-06 Richard Sandiford <richard.sandiford@arm.com>
-
- PR target/87763
- * gcc.target/aarch64/movk_2.c: New test.
-
-2020-02-06 Uroš Bizjak <ubizjak@gmail.com>
-
- * gcc.target/i386/memcpy-strategy-1.c (dg-final):
- Unify scan-assembler strings for all targets.
- * gcc.target/i386/memcpy-strategy-2.c (dg-final): Ditto.
- * gcc.target/i386/memcpy-strategy-3.c (dg-final): Ditto.
- * gcc.target/i386/memcpy-vector_loop-1.c (dg-final): Ditto.
-
-2020-02-06 Marek Polacek <polacek@redhat.com>
-
- PR c++/93597 - ICE with lambda in operator function.
- * g++.dg/cpp0x/lambda/lambda-93597.C: New test.
-
-2020-02-06 Tobias Burnus <tobias@codesourcery.com>
-
- * gcc.target/arm/multilib.exp (multilib_config): Pass flags to
- …_target_compile as (additional_flags=) option and not as source
- filename to make it work with remote execution.
- * lib/target-supports.exp (check_runtime, check_gc_sections_available,
- check_effective_target_gas, check_effective_target_gld): Likewise.
-
-2020-02-06 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93594
- * gcc.target/i386/avx2-pr93594.c: New test.
-
-2020-02-05 Martin Sebor <msebor@redhat.com>
-
- PR tree-optimization/92765
- * g++.dg/tree-ssa/strlenopt-1.C: New test.
- * g++.dg/tree-ssa/strlenopt-2.C: New test.
- * gcc.dg/Warray-bounds-58.c: New test.
- * gcc.dg/Wrestrict-20.c: Avoid a valid -Wformat-overflow.
- * gcc.dg/Wstring-compare.c: Xfail a test.
- * gcc.dg/strcmpopt_2.c: Disable tests.
- * gcc.dg/strcmpopt_4.c: Adjust tests.
- * gcc.dg/strcmpopt_10.c: New test.
- * gcc.dg/strcmpopt_11.c: New test.
- * gcc.dg/strlenopt-69.c: Disable tests.
- * gcc.dg/strlenopt-92.c: New test.
- * gcc.dg/strlenopt-93.c: New test.
- * gcc.dg/strlenopt.h: Declare calloc.
- * gcc.dg/tree-ssa/pr92056.c: Xfail tests until pr93518 is resolved.
- * gcc.dg/tree-ssa/builtin-sprintf-warn-23.c: Correct test (pr93517).
-
-2020-02-05 Marek Polacek <polacek@redhat.com>
+ (check_effective_target_aarch64_asm_sve2_ok): New.
+ * g++.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp: Use it.
+ * gcc.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp: Likewise.
- PR c++/93559 - ICE with CONSTRUCTOR flags verification.
- * g++.dg/cpp0x/initlist119.C: New test.
- * g++.dg/cpp0x/initlist120.C: New test.
+2021-01-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
-2020-02-05 Jakub Jelinek <jakub@redhat.com>
+ * gcc.target/aarch64/usaba_1.c: New test.
- PR c++/93557
- * c-c++-common/Wunused-var-17.c: New test.
+2021-01-08 Paul Thomas <pault@gcc.gnu.org>
-2020-02-05 Jeff Law <law@redhat.com>
+ PR fortran/93794
+ * gfortran.dg/deferred_character_35.f90 : New test.
- * gcc.target/hppa/shadd-3.c: Disable delay slot filling and
- adjust expected shadd insn count appropriately.
+2021-01-08 Paul Thomas <pault@gcc.gnu.org>
-2020-02-05 David Malcolm <dmalcolm@redhat.com>
+ PR fortran/98458
+ * gfortran.dg/implied_do_3.f90 : New test.
- * gcc.dg/analyzer/data-model-1.c: Update for changed output to
- __analyzer_dump_exploded_nodes, dropping redundant call at merger.
- * gcc.dg/analyzer/data-model-7.c: Likewise.
- * gcc.dg/analyzer/loop-2.c: Update for changed output format.
- * gcc.dg/analyzer/loop-2a.c: Likewise.
- * gcc.dg/analyzer/loop-4.c: Likewise.
- * gcc.dg/analyzer/loop.c: Likewise.
- * gcc.dg/analyzer/malloc-paths-10.c: Likewise; drop redundant
- call at merger.
- * gcc.dg/analyzer/malloc-vs-local-1a.c: Likewise.
- * gcc.dg/analyzer/malloc-vs-local-1b.c: Likewise.
- * gcc.dg/analyzer/malloc-vs-local-2.c: Likewise.
- * gcc.dg/analyzer/malloc-vs-local-3.c: Likewise.
- * gcc.dg/analyzer/paths-1.c: Likewise.
- * gcc.dg/analyzer/paths-1a.c: Likewise.
- * gcc.dg/analyzer/paths-2.c: Likewise.
- * gcc.dg/analyzer/paths-3.c: Likewise.
- * gcc.dg/analyzer/paths-4.c: Update for changed output format.
- * gcc.dg/analyzer/paths-5.c: Likewise.
- * gcc.dg/analyzer/paths-6.c: Likewise; drop redundant calls
- at merger.
- * gcc.dg/analyzer/paths-7.c: Likewise.
- * gcc.dg/analyzer/torture/conditionals-2.c: Update for changed
- output format.
- * gcc.dg/analyzer/zlib-1.c: Likewise; drop redundant calls.
- * gcc.dg/analyzer/zlib-5.c: Update for changed output format.
+2021-01-08 Kito Cheng <kito.cheng@sifive.com>
-2020-02-05 Jakub Jelinek <jakub@redhat.com>
+ * gcc.dg/array-quals-1.c: Allow srodata.
- PR target/92190
- * gcc.target/i386/pr92190.c: New test.
+2021-01-08 Kito Cheng <kito.cheng@sifive.com>
-2020-02-05 Richard Biener <rguenther@suse.de>
+ * gcc.target/riscv/predef-10.c: New.
+ * gcc.target/riscv/predef-11.c: New.
+ * gcc.target/riscv/predef-12.c: New.
+ * gcc.target/riscv/predef-13.c: New.
- PR testsuite/92177
- * gcc.dg/vect/bb-slp-22.c: Adjust.
+2021-01-07 Jakub Jelinek <jakub@redhat.com>
-2020-02-05 Richard Biener <rguenther@suse.de>
+ PR c++/98329
+ * g++.dg/cpp2a/bit-cast10.C: New test.
- PR middle-end/90648
- * gcc.dg/pr90648.c: New testcase.
+2021-01-07 Martin Sebor <msebor@redhat.com>
-2020-02-05 Jakub Jelinek <jakub@redhat.com>
+ PR middle-end/98578
+ * gcc.dg/plugin/gil-1.c: Adjust expected output.
+ * gcc.dg/uninit-pr98578.c: New test.
- PR middle-end/93555
- * c-c++-common/gomp/pr93555-1.c: New test.
- * c-c++-common/gomp/pr93555-2.c: New test.
- * gfortran.dg/gomp/pr93555.f90: New test.
+2021-01-07 Marek Polacek <polacek@redhat.com>
-2020-02-05 Jun Ma <JunMa@linux.alibaba.com>
+ PR c++/98441
+ * g++.dg/cpp0x/auto55.C: New test.
- * g++.dg/coroutines/co-await-14-return-ref-to-auto.C: New test.
+2021-01-07 David Malcolm <dmalcolm@redhat.com>
-2020-02-04 David Malcolm <dmalcolm@redhat.com>
+ PR analyzer/98580
+ * gcc.dg/analyzer/pr98580-a.c: New test.
+ * gcc.dg/analyzer/pr98580-b.c: New test.
- * gcc.dg/analyzer/data-model-1.c (struct coord): Convert fields
- from int to long.
+2021-01-07 Paul Thomas <pault@gcc.gnu.org>
-2020-02-04 Richard Biener <rguenther@suse.de>
+ PR fortran/93701
+ * gfortran.dg/associate_54.f90: New test.
+ * gfortran.dg/associate_55.f90: New test.
+ * gfortran.dg/associate_56.f90: New test.
- PR tree-optimization/93538
- * gcc.dg/tree-ssa/forwprop-38.c: New testcase.
+2021-01-07 Jakub Jelinek <jakub@redhat.com>
-2020-02-04 Jakub Jelinek <jakub@redhat.com>
+ PR target/98567
+ * gcc.target/i386/pr98567-1.c: New test.
+ * gcc.target/i386/pr98567-2.c: New test.
- * c-c++-common/cpp/has-include-1.c: New test.
- * c-c++-common/cpp/has-include-next-1.c: New test.
- * c-c++-common/gomp/has-include-1.c: New test.
+2021-01-07 Richard Sandiford <richard.sandiford@arm.com>
- PR preprocessor/93545
- * c-c++-common/cpp/pr88974.c: Expect another diagnostics during error
- recovery.
- * c-c++-common/cpp/pr93545-1.c: New test.
- * c-c++-common/cpp/pr93545-2.c: New test.
- * c-c++-common/cpp/pr93545-3.c: New test.
- * c-c++-common/cpp/pr93545-4.c: New test.
+ * gcc.target/aarch64/sve/cond_unary_5.c: New test.
+ * gcc.target/aarch64/sve/cond_unary_5_run.c: Likewise.
+ * gcc.target/aarch64/sve/cond_unary_6.c: Likewise.
+ * gcc.target/aarch64/sve/cond_unary_6_run.c: Likewise.
+ * gcc.target/aarch64/sve/cond_unary_7.c: Likewise.
+ * gcc.target/aarch64/sve/cond_unary_7_run.c: Likewise.
+ * gcc.target/aarch64/sve/cond_unary_8.c: Likewise.
+ * gcc.target/aarch64/sve/cond_unary_8_run.c: Likewise.
-2020-02-04 Iain Sandoe <iain@sandoe.co.uk>
+2021-01-07 Richard Sandiford <richard.sandiford@arm.com>
- * g++.dg/coroutines/coro-missing-promise.C: New test.
+ PR tree-optimization/98560
+ * gcc.dg/vect/pr98560-2.c: New test.
-2020-02-04 Richard Biener <rguenther@suse.de>
+2021-01-07 Richard Sandiford <richard.sandiford@arm.com>
- PR tree-optimization/91123
- * gcc.dg/tree-ssa/ssa-fre-85.c: New testcase.
+ PR tree-optimization/98560
+ * gcc.dg/vect/pr98560-1.c: New test.
-2020-02-04 Richard Biener <rguenther@suse.de>
+2021-01-07 Jakub Jelinek <jakub@redhat.com>
- PR tree-optimization/92819
- * gcc.target/i386/pr92819.c: New testcase.
- * gcc.target/i386/pr92803.c: Adjust.
+ PR tree-optimization/98568
+ * g++.dg/torture/pr98568.C: New test.
-2020-02-03 Iain Sandoe <iain@sandoe.co.uk>
+2021-01-07 Hongyu Wang <hongyu.wang@intel.com>
- PR c++/93458
- * g++.dg/coroutines/pr93458-1-missing-traits.C: New test.
- * g++.dg/coroutines/pr93458-2-bad-traits.C: New test.
- * g++.dg/coroutines/pr93458-3-missing-handle.C: New test.
- * g++.dg/coroutines/pr93458-4-bad-coro-handle.C: New test.
- * g++.dg/coroutines/pr93458-5-bad-coro-type.C: New test.
-
-2020-02-03 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93544
- * gcc.dg/analyzer/torture/pr93544.c: New test.
-
-2020-02-03 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93546
- * gcc.dg/analyzer/pr93546.c: New test.
-
-2020-02-03 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93547
- * gcc.dg/analyzer/pr93547.c: New test.
-
-2020-02-03 Stam Markianos-Wright <stam.markianos-wright@arm.com>
-
- PR target/91816
- * gcc.target/arm/pr91816.c: New test.
-
-2020-02-03 Julian Brown <julian@codesourcery.com>
- Tobias Burnus <tobias@codesourcery.com>
-
- * c-c++-common/cpp/openacc-define-3.c: Update expected value for
- _OPENACC define.
- * gfortran.dg/openacc-define-3.f90: Likewise.
-
-2020-02-03 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/93427
- * gfortran.dg/associate_52.f90: New.
-
-2020-02-03 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93533
- * gcc.c-torture/compile/pr93533.c: New test.
- * gcc.target/s390/pr93533.c: New test.
-
-2020-02-03 Jun Ma <JunMa@linux.alibaba.com>
-
- * g++.dg/coroutines/co-await-04-control-flow.C: Add label.
-
-2020-02-02 Marek Polacek <polacek@redhat.com>
-
- PR c++/93530 - ICE on invalid alignas in a template.
- * g++.dg/cpp0x/alignas18.C: New test.
-
-2020-02-02 Iain Sandoe <iain@sandoe.co.uk>
-
- * gcc.target/powerpc/darwin-abi-12.c: Add '-fcommon' to the
- options.
-
-2020-02-02 Vladimir Makarov <vmakarov@redhat.com>
-
- PR rtl-optimization/91333
- * gcc.target/i386/pr91333.c: Add vmovsd to regexp. Set up count
- to 3.
-
-2020-01-31 Sandra Loosemore <sandra@codesourcery.com>
-
- nios2: Support for GOT-relative DW_EH_PE_datarel encoding.
-
- * g++.target/nios2/hello-pie.C: New.
- * g++.target/nios2/nios2.exp: New.
-
-2020-01-31 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93457
- * gcc.dg/analyzer/pr93457.c: New test.
-
-2020-01-31 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93373
- * gcc.dg/analyzer/torture/pr93373.c: New test.
-
-2020-01-31 Vladimir Makarov <vmakarov@redhat.com>
-
- PR rtl-optimization/91333
- * gcc.target/i386/pr91333.c: New.
-
-2020-01-31 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93379
- * gcc.dg/analyzer/torture/pr93379-2.c: New test.
- * gcc.dg/analyzer/torture/pr93379.c: New test.
-
-2020-01-31 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93438
- * gcc.dg/analyzer/torture/pr93438.c: New test.
- * gcc.dg/analyzer/torture/pr93438-2.c: New test.
-
-2020-01-31 Jakub Jelinek <jakub@redhat.com>
-
- PR rtl-optimization/91838
- * g++.dg/pr91838.C: Moved to ...
- * g++.dg/opt/pr91838.C: ... here. Require c++11 target instead of
- dg-skip-if for c++98. Pass -Wno-psabi -w to avoid psabi style
- warnings on vector arg passing or return. Add -masm=att on i?86/x86_64.
- Only check for pxor %xmm0, %xmm0 on lp64 i?86/x86_64.
-
-2020-01-31 Richard Sandiford <richard.sandiford@arm.com>
-
- * lib/target-supports.exp (check_effective_target_aarch64_asm_bf16_ok):
- New proc.
- * gcc.target/aarch64/sve/acle/asm/bfdot_f32.c: New test.
- * gcc.target/aarch64/sve/acle/asm/bfdot_lane_f32.c: Likweise.
- * gcc.target/aarch64/sve/acle/asm/bfmlalb_f32.c: Likweise.
- * gcc.target/aarch64/sve/acle/asm/bfmlalb_lane_f32.c: Likweise.
- * gcc.target/aarch64/sve/acle/asm/bfmlalt_f32.c: Likweise.
- * gcc.target/aarch64/sve/acle/asm/bfmlalt_lane_f32.c: Likweise.
- * gcc.target/aarch64/sve/acle/asm/bfmmla_f32.c: Likweise.
- * gcc.target/aarch64/sve/acle/asm/cvt_bf16.c: Likweise.
- * gcc.target/aarch64/sve/acle/asm/cvtnt_bf16.c: Likweise.
- * gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_1.c: Likweise.
- * gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_lane_1.c:
- Likweise.
- * gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_lanex2_1.c:
- Likweise.
- * gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_opt_n_1.c:
- Likweise.
-
-2020-01-31 Richard Sandiford <richard.sandiford@arm.com>
-
- * g++.target/aarch64/sve/acle/general-c++/mangle_1.C: Test mangling
- of svbfloat16_t.
- * g++.target/aarch64/sve/acle/general-c++/mangle_2.C: Likewise for
- __SVBfloat16_t.
- * gcc.target/aarch64/sve/acle/asm/clasta_bf16.c: New test.
- * gcc.target/aarch64/sve/acle/asm/clastb_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/cnt_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/create2_1.c (create_bf16): Likewise.
- * gcc.target/aarch64/sve/acle/asm/create3_1.c (create_bf16): Likewise.
- * gcc.target/aarch64/sve/acle/asm/create4_1.c (create_bf16): Likewise.
- * gcc.target/aarch64/sve/acle/asm/dup_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/dup_lane_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/dupq_lane_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ext_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/get2_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/get3_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/get4_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/insr_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/lasta_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/lastb_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1rq_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld2_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld3_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld4_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnt1_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/len_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/reinterpret_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/reinterpret_f16.c
- (reinterpret_f16_bf16_tied1, reinterpret_f16_bf16_untied): Likewise.
- * gcc.target/aarch64/sve/acle/asm/reinterpret_f32.c
- (reinterpret_f32_bf16_tied1, reinterpret_f32_bf16_untied): Likewise.
- * gcc.target/aarch64/sve/acle/asm/reinterpret_f64.c
- (reinterpret_f64_bf16_tied1, reinterpret_f64_bf16_untied): Likewise.
- * gcc.target/aarch64/sve/acle/asm/reinterpret_s16.c
- (reinterpret_s16_bf16_tied1, reinterpret_s16_bf16_untied): Likewise.
- * gcc.target/aarch64/sve/acle/asm/reinterpret_s32.c
- (reinterpret_s32_bf16_tied1, reinterpret_s32_bf16_untied): Likewise.
- * gcc.target/aarch64/sve/acle/asm/reinterpret_s64.c
- (reinterpret_s64_bf16_tied1, reinterpret_s64_bf16_untied): Likewise.
- * gcc.target/aarch64/sve/acle/asm/reinterpret_s8.c
- (reinterpret_s8_bf16_tied1, reinterpret_s8_bf16_untied): Likewise.
- * gcc.target/aarch64/sve/acle/asm/reinterpret_u16.c
- (reinterpret_u16_bf16_tied1, reinterpret_u16_bf16_untied): Likewise.
- * gcc.target/aarch64/sve/acle/asm/reinterpret_u32.c
- (reinterpret_u32_bf16_tied1, reinterpret_u32_bf16_untied): Likewise.
- * gcc.target/aarch64/sve/acle/asm/reinterpret_u64.c
- (reinterpret_u64_bf16_tied1, reinterpret_u64_bf16_untied): Likewise.
- * gcc.target/aarch64/sve/acle/asm/reinterpret_u8.c
- (reinterpret_u8_bf16_tied1, reinterpret_u8_bf16_untied): Likewise.
- * gcc.target/aarch64/sve/acle/asm/rev_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/sel_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/set2_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/set3_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/set4_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/splice_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st2_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st3_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st4_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/stnt1_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/tbl_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn1_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn1q_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn2_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn2q_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/undef2_1.c (bfloat16_t): Likewise.
- * gcc.target/aarch64/sve/acle/asm/undef3_1.c (bfloat16_t): Likewise.
- * gcc.target/aarch64/sve/acle/asm/undef4_1.c (bfloat16_t): Likewise.
- * gcc.target/aarch64/sve/acle/asm/undef_1.c (bfloat16_t): Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp1_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp1q_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp2_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp2q_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip1_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip1q_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip2_bf16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip2q_bf16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/annotate_1.c (ret_bf16, ret_bf16x2)
- (ret_bf16x3, ret_bf16x4): Likewise.
- * gcc.target/aarch64/sve/pcs/annotate_2.c (fn_bf16, fn_bf16x2)
- (fn_bf16x3, fn_bf16x4): Likewise.
- * gcc.target/aarch64/sve/pcs/annotate_3.c (fn_bf16, fn_bf16x2)
- (fn_bf16x3, fn_bf16x4): Likewise.
- * gcc.target/aarch64/sve/pcs/annotate_4.c (fn_bf16, fn_bf16x2)
- (fn_bf16x3, fn_bf16x4): Likewise.
- * gcc.target/aarch64/sve/pcs/annotate_5.c (fn_bf16, fn_bf16x2)
- (fn_bf16x3, fn_bf16x4): Likewise.
- * gcc.target/aarch64/sve/pcs/annotate_6.c (fn_bf16, fn_bf16x2)
- (fn_bf16x3, fn_bf16x4): Likewise.
- * gcc.target/aarch64/sve/pcs/annotate_7.c (fn_bf16, fn_bf16x2)
- (fn_bf16x3, fn_bf16x4): Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_be_bf16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_le_bf16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_be_bf16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_le_bf16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/gnu_vectors_1.c (bfloat16x16_t): New
- typedef.
- (bfloat16_callee, bfloat16_caller): New tests.
- * gcc.target/aarch64/sve/pcs/gnu_vectors_2.c (bfloat16x16_t): New
- typedef.
- (bfloat16_callee, bfloat16_caller): New tests.
- * gcc.target/aarch64/sve/pcs/return_4.c (CALLER_BF16): New macro.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_4_128.c (CALLER_BF16): New macro.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_4_256.c (CALLER_BF16): New macro.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_4_512.c (CALLER_BF16): New macro.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_4_1024.c (CALLER_BF16): New macro.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_4_2048.c (CALLER_BF16): New macro.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_5.c (CALLER_BF16): New macro.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_5_128.c (CALLER_BF16): New macro.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_5_256.c (CALLER_BF16): New macro.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_5_512.c (CALLER_BF16): New macro.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_5_1024.c (CALLER_BF16): New macro.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_5_2048.c (CALLER_BF16): New macro.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_6.c (bfloat16_t): New typedef.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_6_128.c (bfloat16_t): New typedef.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_6_256.c (bfloat16_t): New typedef.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_6_512.c (bfloat16_t): New typedef.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_6_1024.c (bfloat16_t): New typedef.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_6_2048.c (bfloat16_t): New typedef.
- (callee_bf16, caller_bf16): New tests.
- * gcc.target/aarch64/sve/pcs/return_7.c (callee_bf16): Likewise
- (caller_bf16): Likewise.
- * gcc.target/aarch64/sve/pcs/return_8.c (callee_bf16): Likewise
- (caller_bf16): Likewise.
- * gcc.target/aarch64/sve/pcs/return_9.c (callee_bf16): Likewise
- (caller_bf16): Likewise.
- * gcc.target/aarch64/sve2/acle/asm/tbl2_bf16.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/tbx_bf16.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilerw_bf16.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilewr_bf16.c: Likewise.
-
-2020-01-31 Dennis Zhang <dennis.zhang@arm.com>
- Matthew Malcomson <matthew.malcomson@arm.com>
- Richard Sandiford <richard.sandiford@arm.com>
-
- * lib/target-supports.exp (check_effective_target_aarch64_asm_i8mm_ok)
- (check_effective_target_aarch64_asm_f32mm_ok): New target selectors.
- * gcc.target/aarch64/pragma_cpp_predefs_2.c: Test handling of
- __ARM_FEATURE_SVE_MATMUL_INT8, __ARM_FEATURE_SVE_MATMUL_FP32 and
- __ARM_FEATURE_SVE_MATMUL_FP64.
- * gcc.target/aarch64/sve/acle/asm/test_sve_acle.h (TEST_TRIPLE_Z):
- (TEST_TRIPLE_Z_REV2, TEST_TRIPLE_Z_REV, TEST_TRIPLE_LANE_REG)
- (TEST_TRIPLE_ZX): New macros.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_f16.c: Remove +sve and
- rely on +f64mm to enable it.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/mmla_f32.c: New test.
- * gcc.target/aarch64/sve/acle/asm/mmla_f64.c: Likewise,
- * gcc.target/aarch64/sve/acle/asm/mmla_s32.c: Likewise,
- * gcc.target/aarch64/sve/acle/asm/mmla_u32.c: Likewise,
- * gcc.target/aarch64/sve/acle/asm/sudot_lane_s32.c: Likewise,
- * gcc.target/aarch64/sve/acle/asm/sudot_s32.c: Likewise,
- * gcc.target/aarch64/sve/acle/asm/trn1q_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn1q_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn1q_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn1q_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn1q_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn1q_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn1q_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn1q_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn1q_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn1q_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn1q_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn2q_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn2q_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn2q_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn2q_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn2q_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn2q_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn2q_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn2q_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn2q_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn2q_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/trn2q_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/usdot_lane_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/usdot_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/usmmla_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp1q_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp1q_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp1q_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp1q_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp1q_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp1q_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp1q_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp1q_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp1q_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp1q_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp1q_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp2q_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp2q_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp2q_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp2q_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp2q_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp2q_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp2q_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp2q_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp2q_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp2q_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/uzp2q_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip1q_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip1q_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip1q_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip1q_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip1q_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip1q_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip1q_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip1q_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip1q_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip1q_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip1q_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip2q_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip2q_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip2q_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip2q_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip2q_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip2q_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip2q_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip2q_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip2q_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip2q_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/zip2q_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/general-c/mmla_1.c: Likewise.
- * gcc.target/aarch64/sve/acle/general-c/mmla_2.c: Likewise.
- * gcc.target/aarch64/sve/acle/general-c/mmla_3.c: Likewise.
- * gcc.target/aarch64/sve/acle/general-c/mmla_4.c: Likewise.
- * gcc.target/aarch64/sve/acle/general-c/mmla_5.c: Likewise.
- * gcc.target/aarch64/sve/acle/general-c/mmla_6.c: Likewise.
- * gcc.target/aarch64/sve/acle/general-c/mmla_7.c: Likewise.
- * gcc.target/aarch64/sve/acle/general-c/ternary_intq_uintq_lane_1.c:
- Likewise.
- * gcc.target/aarch64/sve/acle/general-c/ternary_intq_uintq_opt_n_1.c:
- Likewise.
- * gcc.target/aarch64/sve/acle/general-c/ternary_uintq_intq_1.c:
- Likewise.
- * gcc.target/aarch64/sve/acle/general-c/ternary_uintq_intq_lane_1.c:
- Likewise.
- * gcc.target/aarch64/sve/acle/general-c/ternary_uintq_intq_opt_n_1.c:
- Likewise.
-
-2020-01-31 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/pcs/args_1.c: Require lp64 for
- check-function-bodies tests.
- * gcc.target/aarch64/sve/pcs/args_2.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_3.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_4.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_1.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_1_256.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_1_512.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_1_1024.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_1_2048.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_2.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_3.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_4.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_4_256.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_4_512.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_4_1024.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_4_2048.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_5.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_5_256.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_5_512.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_5_1024.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_5_2048.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_6.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_6_256.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_6_512.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_6_1024.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_6_2048.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_2_be_nowrap.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_2_be_wrap.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_2_le_nowrap.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_2_le_wrap.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_3.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_4_be.c: Likewise.
- * gcc.target/aarch64/sve/pcs/saves_4_le.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_1.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_f16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_f32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_f64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_s16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_s32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_s64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_s8.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_u16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_u32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_u64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/varargs_2_u8.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_be_f16.c: Require lp64.
- * gcc.target/aarch64/sve/pcs/args_5_be_f32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_be_f64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_be_s16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_be_s32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_be_s64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_be_s8.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_be_u16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_be_u32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_be_u64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_be_u8.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_le_f16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_le_f32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_le_f64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_le_s16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_le_s32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_le_s64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_le_s8.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_le_u16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_le_u32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_le_u64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_5_le_u8.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_be_f16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_be_f32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_be_f64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_be_s16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_be_s32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_be_s64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_be_s8.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_be_u16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_be_u32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_be_u64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_be_u8.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_le_f16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_le_f32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_le_f64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_le_s16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_le_s32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_le_s64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_le_s8.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_le_u16.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_le_u32.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_le_u64.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_6_le_u8.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_7.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_8.c: Likewise.
- * gcc.target/aarch64/sve/pcs/args_9.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_4_128.c: Require lp64 and
- aarch64_little_endian for check-function-bodies tests.
- * gcc.target/aarch64/sve/pcs/return_5_128.c: Likewise.
- * gcc.target/aarch64/sve/pcs/stack_clash_2_128.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_1_128.c: Likewise. Remove
- target selector from dg-compile.
- * gcc.target/aarch64/sve/pcs/return_6_128.c: Likewise.
-
-2020-01-31 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/93462
- * gfortran.dg/goacc/atomic-1.f90: New.
-
-2020-01-31 Tamar Christina <tamar.christina@arm.com>
-
- PR rtl-optimization/91838
- * g++.dg/pr91838.C: New test.
-
-2020-01-30 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/malloc-1.c: Remove include of <string.h>.
- Use __builtin_ forms of memset and strlen throughout.
-
-2020-01-30 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/conditionals-2.c: Move to...
- * gcc.dg/analyzer/torture/conditionals-2.c: ...here, converting
- to a torture test. Remove redundant include.
-
-2020-01-30 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93356
- * gcc.dg/analyzer/conditionals-notrans.c (test_float_selfcmp):
- Add.
- * gcc.dg/analyzer/conditionals-trans.c: Mark floating point
- comparison test as failing.
- (test_float_selfcmp): Add.
- * gcc.dg/analyzer/data-model-1.c: Mark floating point comparison
- tests as failing.
- * gcc.dg/analyzer/torture/pr93356.c: New test.
-
-2020-01-30 Jeff Law <law@redhat.com>
-
- PR c/88660
- * gcc.dg/pr88660.c: New test
-
-2020-01-30 Jakub Jelinek <jakub@redhat.com>
-
- PR lto/93384
- * gcc.dg/lto/pr93384_0.c: New test.
- * gcc.dg/lto/pr93384_1.c: New file.
-
- PR middle-end/93505
- * gcc.c-torture/compile/pr93505.c: New test.
-
-2020-01-30 Jeff Law <law@redhat.com
-
- * gcc.dg/tree-ssa/ssa-dse-26.c: Make existing dg-final scan
- conditional on !c6x. Add dg-final scan pattern for c6x.
-
-2020-01-30 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/92323
- * gcc.dg/Warray-bounds-57.c: New test.
-
-2020-01-30 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93450
- * gcc.dg/analyzer/torture/pr93450.c: New test.
-
-2020-01-30 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93494
- * gcc.c-torture/execute/pr93494.c: New test.
-
-2020-01-30 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR c++/90338
- * g++.dg/pr90338.C: New.
-
-2020-01-30 Jakub Jelinek <jakub@redhat.com>
-
- PR target/91824
- * gcc.target/i386/pr91824-2.c: New test.
-
- PR target/91824
- * gcc.target/i386/pr91824-1.c: New test.
-
-2020-01-30 Bin Cheng <bin.cheng@linux.alibaba.com>
-
- * g++.dg/coroutines/co-await-syntax-09-convert.C: New test.
-
-2020-01-30 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/92706
- * gcc.dg/tree-ssa/pr92706-1.c: Require int128 effective target.
-
-2020-01-29 Marek Polacek <polacek@redhat.com>
-
- PR c++/88092
- * g++.dg/cpp2a/nontype-class31.C: New test.
-
-2020-01-29 Jeff Law <law@redhat.com
-
- PR tree-optimization/89689
- * gcc.dg/pr89689.c: New test.
-
-2020-01-29 Marek Polacek <polacek@redhat.com>
-
- PR c++/91754 - Fix template arguments comparison with class NTTP.
- * g++.dg/cpp2a/nontype-class30.C: New test.
-
-2020-01-29 Marek Polacek <polacek@redhat.com>
-
- PR c++/92948 - Fix class NTTP with template arguments.
- * g++.dg/cpp2a/nontype-class28.C: New test.
- * g++.dg/cpp2a/nontype-class29.C: New test.
-
-2020-01-29 Joel Hutton <Joel.Hutton@arm.com>
-
- PR target/93221
- * gcc.target/aarch64/pr93221.c: New test.
-
-2020-01-29 Martin Jambor <mjambor@suse.cz>
-
- PR tree-optimization/92706
- * gcc.dg/tree-ssa/pr92706-1.c: New test.
-
-2020-01-29 Martin Jambor <mjambor@suse.cz>
-
- PR tree-optimization/92706
- * gcc.dg/tree-ssa/pr92706-2.c: New test.
- * gcc.dg/guality/pr59776.c: Xfail tests for s2.g.
-
-2020-01-28 Jan Hubicka <hubicka@ucw.cz>
-
- * gcc.dg/tree-prof/indir-call-prof-2.c: New testcase.
-
-2020-01-29 Richard Sandiford <richard.sandiford@arm.com>
-
- PR testsuite/93393
- * gcc.dg/torture/pr93133.c: XFAIL for powerpc*-*-*.
-
-2020-01-29 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/91118
- * g++.dg/gomp/pr91118-1.C: New test.
- * g++.dg/gomp/pr91118-2.C: New test.
-
- PR fortran/93463
- * gfortran.dg/goacc/pr93463.f90: New test.
-
-2020-01-29 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/93428
- * gcc.dg/torture/pr93428.c: New testcase.
-
-2020-01-28 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/93437
- * g++.dg/warn/Wstringop-overflow-5.C: New test.a
-
-2020-01-28 Jan Hubicka <hubicka@ucw.cz>
-
- * g++.dg/tree-prof/indir-call-prof.C: Update template.
- * gcc.dg/tree-prof/crossmodule-indircall-1.c: Add more targets.
- * gcc.dg/tree-prof/crossmodule-indircall-1a.c: Add more targets.
- * gcc.dg/tree-prof/indir-call-prof.c: Update template.
-
-2020-01-28 H.J. Lu <hongjiu.lu@intel.com>
-
- PR target/91461
- * gcc.target/i386/avx256-unaligned-store-2.c: Don't check
- vmovups.
- * gcc.target/i386/avx256-unaligned-store-3.c: Likewise.
- * gcc.target/i386/pieces-memcpy-4.c: Likewise.
- * gcc.target/i386/pieces-memcpy-5.c: Likewise.
- * gcc.target/i386/pieces-memcpy-6.c: Likewise.
- * gcc.target/i386/pieces-strcpy-2.c: Likewise.
- * gcc.target/i386/pr90980-1.c: Likewise.
- * gcc.target/i386/pr87317-4.c: Check "\tvmovd\t" instead of
- "vmovd" to avoid matching "vmovdqu".
- * gcc.target/i386/pr87317-5.c: Likewise.
- * gcc.target/i386/pr87317-7.c: Likewise.
- * gcc.target/i386/pr91461-1.c: New test.
- * gcc.target/i386/pr91461-2.c: Likewise.
- * gcc.target/i386/pr91461-3.c: Likewise.
- * gcc.target/i386/pr91461-4.c: Likewise.
- * gcc.target/i386/pr91461-5.c: Likewise.
-
-2020-01-28 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/plugin/diagnostic_plugin_test_metadata.c: Update for
- renaming of warning_at overload to warning_meta.
- * gcc.dg/plugin/diagnostic_plugin_test_paths.c: Likewise.
-
-2020-01-28 Tobias Burnus <tobias@codesourcery.com>
- Julian Brown <julian@codesourcery.com>
-
- * gfortran.dg/goacc/mapping-tests-2.f90: New test.
- * gfortran.dg/goacc/subarrays.f95: Expect rejection of non-contiguous
- array.
-
-2020-01-28 Julian Brown <julian@codesourcery.com>
-
- * gfortran.dg/goacc/deep-copy-2.f90: Move test here (from libgomp
- testsuite). Make a compilation test, and expect rejection of mixed
- component/non-component accesses.
- * gfortran.dg/goacc/mapping-tests-1.f90: New test.
-
-2020-01-28 Tobias Burnus <tobias@codesourcery.com>
- Julian Brown <julian@codesourcery.com>
-
- * gfortran.dg/goacc/strided-alloc-ptr.f90: New test.
-
-2020-01-28 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/93439
- * gfortran.dg/graphite/pr93439.f90: New testcase.
-
-2020-01-28 Sahahb Vahedi <shahab@synopsys.com>
-
- * gcc.target/arc/code-density-flag.c: New test
-
-2020-01-28 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/93464
- * gfortran.dg/goacc/pr93464.f90: New.
-
-2020-01-28 Richard Sandiford <richard.sandiford@arm.com>
+ * gcc.target/i386/pr92658-avx512bw.c: Add
+ -mprefer-vector-width=512 to avoid impact of different default
+ mtune which gcc is built with.
+ * gcc.target/i386/pr92658-avx512bw-2.c: Ditto.
- PR tree-optimization/93434
- * gcc.c-torture/execute/pr93434.c: New test.
+2021-01-07 David Malcolm <dmalcolm@redhat.com>
-2020-01-28 Richard Sandiford <richard.sandiford@arm.com>
+ PR analyzer/97074
+ * gcc.dg/analyzer/pr97074.c: New test.
- PR testsuite/93460
- * gcc.dg/torture/pr93170.c: Add -Wpsabi.
+2021-01-07 David Malcolm <dmalcolm@redhat.com>
-2020-01-28 Martin Liska <mliska@suse.cz>
+ PR analyzer/98564
+ * gcc.dg/analyzer/pr98564.c: New test.
- PR c++/92440
- * g++.dg/template/pr92440.C: New test.
- * g++.dg/cpp0x/vt-34314.C: Update error to note.
- * g++.dg/template/pr59930-2.C: Likewise.
- * g++.old-deja/g++.pt/redecl1.C: Likewise.
+2021-01-06 Vladimir N. Makarov <vmakarov@redhat.com>
-2020-01-28 Jakub Jelinek <jakub@redhat.com>
+ PR rtl-optimization/97978
+ * gcc.target/i386/pr97978.c: New.
- PR target/93418
- * gcc.target/i386/avx2-pr93418.c: New test.
+2021-01-06 Martin Sebor <msebor@redhat.com>
- PR tree-optimization/93454
- * gcc.dg/pr93454.c: New test.
+ PR c++/95768
+ * g++.dg/pr95768.C: New test.
+ * g++.dg/warn/Wuninitialized-12.C: New test.
+ * gcc.dg/uninit-38.c: New test.
-2020-01-27 David Malcolm <dmalcolm@redhat.com>
+2021-01-06 Martin Sebor <msebor@redhat.com>
- PR analyzer/93451
- * gcc.dg/analyzer/torture/pr93451.c: New test.
+ PR c++/98305
+ * g++.dg/warn/Wmismatched-new-delete-3.C: New test.
-2020-01-27 Stam Markianos-Wright <stam.markianos-wright@arm.com>
+2021-01-06 Iain Sandoe <iain@sandoe.co.uk>
- * gcc.target/arm/armv8_2-fp16-move-1.c: Update following load/store
- optimisation.
+ PR c++/96504
+ * g++.dg/coroutines/torture/pr95519-05-gro.C: Use suspend_always
+ as the final suspend point so that we can check that the state
+ machine has reached the expected point.
-2020-01-27 David Malcolm <dmalcolm@redhat.com>
+2021-01-06 Marek Polacek <polacek@redhat.com>
- PR analyzer/93349
- * gcc.dg/analyzer/torture/pr93349.c: New test.
+ PR testsuite/98566
+ * g++.dg/warn/Wmismatched-dealloc.C: Use target c++14 in
+ dg-error.
-2020-01-27 David Malcolm <dmalcolm@redhat.com>
+2021-01-06 Alexandre Oliva <oliva@adacore.com>
- PR analyzer/93291
- * gcc.dg/analyzer/pattern-test-2.c: Remove include of stdlib.h.
- (test_2): Rewrite to explicitly perform a bitwise-or of two
- boolean conditions.
- (test_3): New function, to test bitwise-and.
+ * g++.dg/opt/store-merging-2.C: Add the required alignment.
-2020-01-27 Richard Sandiford <richard.sandiford@arm.com>
+2021-01-06 Richard Biener <rguenther@suse.de>
- PR testsuite/71727
- * gcc.target/aarch64/pr71727.c: Add -fcommon.
+ PR tree-optimization/95582
+ * gcc.dg/pr95582.c: New testcase.
-2020-01-27 David Malcolm <dmalcolm@redhat.com>
+2021-01-06 Richard Biener <rguenther@suse.de>
- * gcc.dg/analyzer/sigsetjmp-5.c: New test.
- * gcc.dg/analyzer/sigsetjmp-6.c: New test.
+ PR tree-optimization/98513
+ * gcc.dg/tree-ssa/pr98513.c: New testcase.
-2020-01-27 Richard Biener <rguenther@suse.de>
+2021-01-06 David Malcolm <dmalcolm@redhat.com>
- PR testsuite/91171
- * gcc.dg/graphite/scop-21.c: un-XFAIL.
+ PR analyzer/97072
+ * gcc.dg/analyzer/pr97072.c: New test.
-2020-01-27 Claudiu Zissulescu <claziss@synopsys.com>
+2021-01-06 David Malcolm <dmalcolm@redhat.com>
- * gcc.target/arc/interrupt-6.c: Update test.
+ PR analyzer/98073
+ * gcc.dg/analyzer/pr98073.c: New test.
-2020-01-27 Claudiu Zissulescu <claziss@synopsys.com>
- Petro Karashchenko <petro.karashchenko@ring.com>
+2021-01-06 David Malcolm <dmalcolm@redhat.com>
- * gcc.target/arc/uncached-3.c: New test.
- * gcc.target/arc/uncached-4.c: Likewise.
- * gcc.target/arc/uncached-5.c: Likewise.
- * gcc.target/arc/uncached-6.c: Likewise.
- * gcc.target/arc/uncached-7.c: Likewise.
- * gcc.target/arc/uncached-8.c: Likewise.
- * gcc.target/arc/arc.exp (ll64): New predicate.
+ PR analyzer/98223
+ * gcc.dg/analyzer/pr94851-1.c: Remove xfail.
-2020-01-27 Richard Sandiford <richard.sandiford@arm.com>
+2021-01-05 Ilya Leoshkevich <iii@linux.ibm.com>
- * gcc.dg/torture/pr93170.c: New test.
+ * gcc.target/s390/s390.exp: Replace %% with %.
-2020-01-27 Martin Liska <mliska@suse.cz>
+2021-01-05 Steve Kargl <sgk@troutmask.apl.washington.edu>
- PR target/93274
- * gcc.target/i386/pr81213.c: Adjust to not expect
- a globally unique name.
+ * gfortran.dg/dec_math.f90: xfail on i?86-*-freebsd*
-2020-01-27 Richard Biener <rguenther@suse.de>
+2021-01-05 H.J. Lu <hjl.tools@gmail.com>
- PR tree-optimization/93397
- * gcc.dg/torture/pr93397.c: New testcase.
+ PR target/98495
+ * gcc.target/i386/sse2-mmx-pextrw.c (compute_correct_result): Use
+ unsigned short to compute pextrw result.
-2020-01-27 Tobias Burnus <tobias@codesourcery.com>
+2021-01-05 Patrick Palka <ppalka@redhat.com>
- PR fortran/85781
- * gfortran.dg/bind_c_char_2.f90: New.
- * gfortran.dg/bind_c_char_3.f90: New.
- * gfortran.dg/bind_c_char_4.f90: New.
- * gfortran.dg/bind_c_char_5.f90: New.
+ * g++.dg/template/partial5.C: Adjust directives to expect the
+ same errors across all dialects.
+ * g++.dg/cpp1z/nontype-auto17.C: New test.
+ * g++.dg/cpp1z/nontype-auto18.C: New test.
+ * g++.dg/template/ttp33.C: New test.
-2020-01-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+2021-01-05 Jakub Jelinek <jakub@redhat.com>
- * gcc.target/i386/pr91298-1.c: xfail on Solaris/x86 with native
- assembler.
- * gcc.target/i386/pr91298-2.c: Likewise.
+ PR tree-optimization/94802
+ * gcc.target/i386/pr94802.c: New test.
+ * gcc.dg/Wstrict-overflow-25.c: Remove xfail.
-2020-01-26 Jakub Jelinek <jakub@redhat.com>
+2021-01-05 Richard Biener <rguenther@suse.de>
- PR target/93412
- * gcc.dg/pr93412.c: New test.
+ PR tree-optimization/98516
+ * gcc.dg/vect/bb-slp-pr98516-1.c: New testcase.
+ * gcc.dg/vect/bb-slp-pr98516-2.c: Likewise.
- PR target/93430
- * gcc.dg/pr93430.c: New test.
- * gcc.target/i386/avx2-pr93430.c: New test.
+2021-01-05 Jakub Jelinek <jakub@redhat.com>
- PR ipa/93166
- * g++.dg/pr93166.C: Move to ...
- * g++.dg/pr93166_0.C: ... here. Turn it into a proper lto test.
+ PR c++/98469
+ * g++.dg/cpp2a/bit-cast8.C: New test.
+ * g++.dg/cpp2a/bit-cast9.C: New test.
- PR tree-optimization/92788
- * g++.dg/pr92788.C: Move to ...
- * g++.target/i386/pr92788.C: ... here. Remove target from dg-do line.
- Change type of operator new's first parameter to __SIZE_TYPE__.
+2021-01-05 Marek Polacek <polacek@redhat.com>
-2020-01-25 Marek Polacek <polacek@redhat.com>
+ PR c++/82099
+ * g++.dg/cpp1z/class-deduction76.C: Remove dg-ice.
+ * g++.dg/cpp0x/noexcept61.C: New test.
- PR c++/93414 - poor diagnostic for dynamic_cast in constexpr context.
- * g++.dg/cpp2a/constexpr-dynamic18.C: New test.
+2021-01-05 Jakub Jelinek <jakub@redhat.com>
-2020-01-25 Feng Xue <fxue@os.amperecomputing.com>
+ PR tree-optimization/96928
+ * gcc.dg/tree-ssa/pr96928.c: New test.
+ * gcc.target/i386/ifcvt-onecmpl-abs-1.c: Remove -fdump-rtl-ce1,
+ instead of scanning rtl dump for ifcvt message check assembly
+ for xor instruction.
- PR ipa/93166
- * g++.dg/pr93166.C: New test.
+2021-01-05 Jakub Jelinek <jakub@redhat.com>
-2020-01-25 Andrew Pinski <apinski@marvell.com>
+ PR tree-optimization/96930
+ * g++.dg/tree-ssa/pr96930.C: New test.
- * gcc.target/aarch64/vec_zeroextend.c: Fix for big-endian.
+2021-01-05 Jakub Jelinek <jakub@redhat.com>
-2020-01-24 Jeff Law <law@redhat.com
+ PR tree-optimization/96239
+ * gcc.dg/tree-ssa/pr96239.c: New test.
- PR tree-optimization/92788
- * g++.dg/pr92788.C: New test.
+2021-01-05 Uroš Bizjak <ubizjak@gmail.com>
-2020-01-24 Jakub Jelinek <jakub@redhat.com>
+ PR target/98522
+ * gcc.target/i386/pr98522.c: New test.
- PR target/93395
- * gcc.target/i386/pr93395.c: New test.
- * gcc.target/i386/avx512vl-vpermilpdi-1.c: Remove xfail.
+2021-01-05 Nathan Sidwell <nathan@acm.org>
-2020-01-24 Marek Polacek <polacek@redhat.com>
+ * g++.dg/modules/mod-decl-1.C: Adjust.
+ * g++.dg/modules/p0713-2.C: Adjust.
+ * g++.dg/modules/p0713-3.C: Adjust.
- PR c++/93299 - ICE in tsubst_copy with parenthesized expression.
- * g++.dg/cpp1y/paren5.C: New test.
+2021-01-05 H.J. Lu <hjl.tools@gmail.com>
-2020-01-24 Sandra Loosemore <sandra@codesourcery.com>
+ PR target/98495
+ * gcc.target/i386/pr98495-1.c: New test.
+ * gcc.target/i386/pr98495-2.c: New test.
+ * gcc.target/i386/pr98495-3.c: New test.
+ * gcc.target/i386/pr98495-4.c: New test.
+ * gcc.target/i386/pr98495-5.c: New test.
- * g++.dg/cpp0x/constexpr-odr1.C: Add -fdelete-null-pointer-checks.
- * g++.dg/cpp0x/constexpr-odr2.C: Likewise.
- * g++.dg/cpp0x/nontype4.C: Likewise.
- * g++.dg/cpp1y/constexpr-new.C: Likewise.
- * g++.dg/cpp1y/new1.C: Likewise.
- * g++.dg/cpp1y/new2.C: Likewise.
- * g++.dg/cpp2a/constexpr-dynamic11.C: Likewise.
- * g++.dg/cpp2a/constexpr-dynamic17.C: Likewise.
- * g++.dg/cpp2a/constexpr-dynamic4.C: Likewise.
- * g++.dg/cpp2a/constexpr-new1.C: Likewise.
- * g++.dg/cpp2a/constexpr-new10.C: Likewise.
- * g++.dg/cpp2a/constexpr-new2.C: Likewise.
- * g++.dg/cpp2a/constexpr-new3.C: Likewise.
- * g++.dg/cpp2a/constexpr-new4.C: Likewise.
- * g++.dg/cpp2a/constexpr-new8.C: Likewise.
- * g++.dg/cpp2a/constexpr-new9.C: Likewise.
- * g++.dg/cpp2a/nontype-class1.C: Likewise.
+2021-01-05 liuhongt <hongtao.liu@intel.com>
-2020-01-24 Jason Merrill <jason@redhat.com>
+ * gcc.target/i386/sse2-pr98461-2.c: New test.
- * lib/target-supports.exp (check_effective_target_unsigned_char):
- New.
+2021-01-05 Richard Sandiford <richard.sandiford@arm.com>
-2020-01-24 Jeff Law <law@redhat.com
+ PR rtl-optimization/97144
+ * gcc.c-torture/compile/pr97144.c: New test.
+ * gcc.target/aarch64/sve/pr97144.c: Likewise.
- PR target/13721
- * gcc.target/h8300/pr13721.c: New test.
+2021-01-05 Richard Sandiford <richard.sandiford@arm.com>
-2020-01-24 Christophe Lyon <christophe.lyon@linaro.org>
+ PR rtl-optimization/98403
+ * g++.dg/opt/pr98403.C: New test.
- PR debug/92763
- * g++.dg/debug/pr92763.C: Require fopenmp.
+2021-01-05 Jakub Jelinek <jakub@redhat.com>
-2020-01-23 David Malcolm <dmalcolm@redhat.com>
+ PR rtl-optimization/98334
+ * gcc.target/i386/pr98334.c: New test.
- PR analyzer/93367
- * gcc.dg/analyzer/abort.c: Remove include of <assert.h>.
- Replace use of assert with a custom assertion implementation.
+2021-01-05 Jerome Lambourg <lambourg@adacore.com>
-2020-01-23 Jakub Jelinek <jakub@redhat.com>
+ * g++.dg/cpp1y/constexpr-66093.C: Fix bounds issue.
- PR inline-asm/93027
- * gcc.target/i386/pr93027.c: Require lp64 target rather x86_64-*-*.
+2021-01-05 David Malcolm <dmalcolm@redhat.com>
- PR rtl-optimization/93402
- * gcc.c-torture/execute/pr93402.c: New test.
+ PR analyzer/98293
+ * gcc.dg/analyzer/pr98293.c: New test.
-2020-01-23 Paolo Carlini <paolo.carlini@oracle.com>
+2021-01-04 Martin Uecker <muecker@gwdg.de>
- PR c++/92804
- * g++.dg/concepts/pr92804-1.C: New.
- * g++.dg/concepts/pr92804-2.C: Likewise.
+ PR c/98029
+ * gcc.dg/pr98029.c: New test.
-2020-01-23 David Malcolm <dmalcolm@redhat.com>
+2021-01-04 Nathan Sidwell <nathan@acm.org>
- PR analyzer/93375
- * gcc.dg/analyzer/pr93375.c: New test.
-
-2020-01-23 Jason Merrill <jason@redhat.com>
-
- * lib/target-supports.exp (check_effective_target_unsigned_char):
- New.
-
-2020-01-23 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93376
- * gcc.dg/pr93376.c: New test.
-
-2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
-
- PR target/93341
- * gcc.target/aarch64/pr93341.c: New test.
-
-2020-01-23 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/data-model-3.c: Remove hardcoded "-O2" and move
- to torture/conftest-1.c.
- * gcc.dg/analyzer/torture/analyzer-torture.exp: New.
- * gcc.dg/analyzer/torture/conftest-1.c: Move here from
- analyzer/data-model-3.c.
- * gcc.dg/analyzer/torture/poc.c: New test.
-
-2020-01-23 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/93381
- * gcc.dg/torture/pr93354.c: New testcase.
-
-2020-01-23 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93346
- * gcc.target/i386/pr93346.c: New test.
-
-2020-01-23 Martin Sebor <msebor@redhat.com>
-
- PR c/84919
- * gcc.dg/Wrestrict-20.c: New test.
-
-2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
-
- * g++.target/aarch64/sve/acle/general-c++/whilele_1.C: Skip for ILP32.
-
-2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/acle/asm/ld1_f16.c: Skip check-function-bodies
- test for ILP32.
- * gcc.target/aarch64/sve/acle/asm/ld1_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1_gather_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1_gather_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1_gather_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1_gather_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1rq_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1rq_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1rq_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1rq_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1rq_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1rq_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1rq_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1rq_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1rq_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1rq_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1rq_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sb_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sb_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sb_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sb_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sb_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sb_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sh_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sh_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sh_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sh_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sw_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sw_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sw_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1sw_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ub_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ub_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ub_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ub_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ub_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ub_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1uh_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1uh_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1uh_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1uh_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1uw_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1uw_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1uw_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1uw_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld2_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld2_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld2_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld2_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld2_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld2_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld2_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld2_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld2_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld2_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld2_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld3_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld3_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld3_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld3_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld3_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld3_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld3_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld3_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld3_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld3_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld3_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld4_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld4_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld4_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld4_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld4_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld4_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld4_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld4_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld4_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld4_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld4_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_gather_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_gather_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_gather_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_gather_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sb_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sb_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sb_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sb_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sb_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sb_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sh_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sh_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sh_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sh_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sw_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1sw_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1ub_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1ub_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1ub_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1ub_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1ub_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1ub_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1uh_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1uh_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1uh_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1uh_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1uw_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldff1uw_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1sb_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1sb_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1sb_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1sb_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1sb_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1sb_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1sh_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1sh_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1sh_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1sh_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1sw_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1sw_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1ub_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1ub_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1ub_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1ub_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1ub_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1ub_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1uh_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1uh_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1uh_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1uh_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1uw_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnf1uw_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnt1_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnt1_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnt1_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnt1_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnt1_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnt1_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnt1_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnt1_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnt1_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnt1_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ldnt1_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/prfb.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/prfb_gather.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/prfd.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/prfd_gather.c: Likewise.
+ * g++.dg/modules/binding-1_a.H: New.
+ * g++.dg/modules/binding-1_b.H: New.
+ * g++.dg/modules/binding-1_c.C: New.
+ * g++.dg/modules/binding-2.H: New.
+ * g++.dg/modules/builtin-3_a.C: New.
+ * g++.dg/modules/global-2_a.C: New.
+ * g++.dg/modules/global-2_b.C: New.
+ * g++.dg/modules/global-3_a.C: New.
+ * g++.dg/modules/global-3_b.C: New.
+ * g++.dg/modules/hello-1_a.C: New.
+ * g++.dg/modules/hello-1_b.C: New.
+ * g++.dg/modules/iostream-1_a.H: New.
+ * g++.dg/modules/iostream-1_b.C: New.
+ * g++.dg/modules/part-5_a.C: New.
+ * g++.dg/modules/part-5_b.C: New.
+ * g++.dg/modules/part-5_c.C: New.
+ * g++.dg/modules/stdio-1_a.H: New.
+ * g++.dg/modules/stdio-1_b.C: New.
+ * g++.dg/modules/string-1_a.H: New.
+ * g++.dg/modules/string-1_b.C: New.
+ * g++.dg/modules/string-view1.C: New.
+ * g++.dg/modules/string-view2.C: New.
+ * g++.dg/modules/tinfo-1.C: New.
+ * g++.dg/modules/tinfo-2_a.H: New.
+ * g++.dg/modules/tinfo-2_b.C: New.
+ * g++.dg/modules/tname-spec-1_a.H: New.
+ * g++.dg/modules/tname-spec-1_b.C: New.
+ * g++.dg/modules/xtreme-header-1.h: New.
+ * g++.dg/modules/xtreme-header-1_a.H: New.
+ * g++.dg/modules/xtreme-header-1_b.C: New.
+ * g++.dg/modules/xtreme-header-1_c.C: New.
+ * g++.dg/modules/xtreme-header-2.h: New.
+ * g++.dg/modules/xtreme-header-2_a.H: New.
+ * g++.dg/modules/xtreme-header-2_b.C: New.
+ * g++.dg/modules/xtreme-header-2_c.C: New.
+ * g++.dg/modules/xtreme-header-3.h: New.
+ * g++.dg/modules/xtreme-header-3_a.H: New.
+ * g++.dg/modules/xtreme-header-3_b.C: New.
+ * g++.dg/modules/xtreme-header-3_c.C: New.
+ * g++.dg/modules/xtreme-header-4.h: New.
+ * g++.dg/modules/xtreme-header-4_a.H: New.
+ * g++.dg/modules/xtreme-header-4_b.C: New.
+ * g++.dg/modules/xtreme-header-4_c.C: New.
+ * g++.dg/modules/xtreme-header-5.h: New.
+ * g++.dg/modules/xtreme-header-5_a.H: New.
+ * g++.dg/modules/xtreme-header-5_b.C: New.
+ * g++.dg/modules/xtreme-header-5_c.C: New.
+ * g++.dg/modules/xtreme-header-6.h: New.
+ * g++.dg/modules/xtreme-header-6_a.H: New.
+ * g++.dg/modules/xtreme-header-6_b.C: New.
+ * g++.dg/modules/xtreme-header-6_c.C: New.
+ * g++.dg/modules/xtreme-header.h: New.
+ * g++.dg/modules/xtreme-header_a.H: New.
+ * g++.dg/modules/xtreme-header_b.C: New.
+ * g++.dg/modules/xtreme-tr1.h: New.
+ * g++.dg/modules/xtreme-tr1_a.H: New.
+ * g++.dg/modules/xtreme-tr1_b.C: New.
+
+2021-01-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR tree-optimization/95401
+ * g++.dg/vect/pr95401.cc: New test.
+ * g++.dg/vect/pr95401a.cc: Likewise.
+
+2021-01-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/98308
+ * gcc.dg/vect/pr98308.c: New testcase.
+
+2021-01-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/95771
+ * gcc.target/i386/pr95771.c: New test.
+
+2021-01-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/98464
+ * g++.dg/opt/pr98464.C: New testcase.
+
+2021-01-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/98282
+ * g++.dg/opt/pr98282.C: New testcase.
+
+2021-01-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/89057
+ * gcc.target/aarch64/pr89057.c: New test.
+
+2021-01-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/asm/prfb.c: Test for a MUL VL range of
+ [-32, 31].
* gcc.target/aarch64/sve/acle/asm/prfh.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/prfh_gather.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/prfw.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/prfw_gather.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_scatter_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_scatter_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_scatter_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_scatter_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_scatter_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_scatter_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1b_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1b_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1b_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1b_scatter_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1b_scatter_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1b_scatter_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1b_scatter_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1b_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1b_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1b_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1h_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1h_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1h_scatter_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1h_scatter_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1h_scatter_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1h_scatter_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1h_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1h_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1w_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1w_scatter_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1w_scatter_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st1w_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st2_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st2_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st2_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st2_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st2_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st2_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st2_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st2_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st2_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st2_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st2_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st3_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st3_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st3_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st3_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st3_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st3_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st3_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st3_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st3_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st3_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st3_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st4_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st4_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st4_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st4_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st4_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st4_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st4_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st4_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st4_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st4_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/st4_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/stnt1_f16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/stnt1_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/stnt1_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/stnt1_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/stnt1_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/stnt1_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/stnt1_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/stnt1_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/stnt1_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/stnt1_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/stnt1_u8.c: Likewise.
- * gcc.target/aarch64/sve/acle/general/temporaries_1.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_s64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_u64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_s64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_u64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilerw_f16.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilerw_f32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilerw_f64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilerw_s16.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilerw_s32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilerw_s64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilerw_s8.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilerw_u16.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilerw_u32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilerw_u64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilerw_u8.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilewr_f16.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilewr_f32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilewr_f64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilewr_s16.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilewr_s32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilewr_s64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilewr_s8.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilewr_u16.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilewr_u32.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilewr_u64.c: Likewise.
- * gcc.target/aarch64/sve2/acle/asm/whilewr_u8.c: Likewise.
-
-2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
-
- * lib/scanasm.exp (check-function-bodies): Add an optional
- target/xfail selector.
-
-2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.dg/torture/pr93124.c: New test.
-
-2020-01-22 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93382
- * gcc.dg/analyzer/pr93382.c: New test.
-
-2020-01-22 Andrew Pinski <apinski@marvell.com>
-
- * gcc.dg/tree-ssa/pr88497-1.c: Move to ...
- * gcc.dg/vect/pr88497-1.c: This.
- * gcc.dg/tree-ssa/pr88497-2.c: Move to ...
- * gcc.dg/vect/pr88497-2.c: This.
- * gcc.dg/tree-ssa/pr88497-3.c: Move to ...
- * gcc.dg/vect/pr88497-3.c: This.
- * gcc.dg/tree-ssa/pr88497-4.c: Move to ...
- * gcc.dg/vect/pr88497-4.c: This.
- * gcc.dg/tree-ssa/pr88497-5.c: Move to ...
- * gcc.dg/vect/pr88497-5.c: This.
- * gcc.dg/tree-ssa/pr88497-6.c: Move to ...
- * gcc.dg/vect/pr88497-6.c: This.
- * gcc.dg/tree-ssa/pr88497-7.c: Move to ...
- * gcc.dg/vect/pr88497-7.c: This.
-
- Revert:
- * tree-ssa.exp: Set DEFAULT_VECTCFLAGS and DEFAULT_VECTCFLAGS.
- Call check_vect_support_and_set_flags also.
-
-2020-01-22 Andrew Pinski <apinski@marvell.com>
-
- * tree-ssa.exp: Set DEFAULT_VECTCFLAGS and DEFAULT_VECTCFLAGS.
- Call check_vect_support_and_set_flags also.
-
-2020-01-22 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93378
- * gcc.dg/analyzer/setjmp-pr93378.c: Use setjmp rather than
- _setjmp.
-
-2020-01-22 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93378
- * gcc.dg/analyzer/setjmp-pr93378.c: New test.
-
-2020-01-22 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93316
- * gcc.dg/analyzer/data-model-1.c: Include <alloca.h>.
- * gcc.dg/analyzer/malloc-1.c: Likewise.
- * gcc.dg/analyzer/malloc-callbacks.c (get_alloca): Return
- __builtin_alloca rather than alloca.
- * gcc.dg/analyzer/malloc-paths-8.c: Include <alloca.h>.
- * gcc.dg/analyzer/sensitive-1.c: Define __EXTENSIONS__ before
- including unistd.h.
- * gcc.dg/analyzer/setjmp-2.c: Replace include of <setjmp.h>
- with "test-setjmp.h" and usage of setjmp with new SETJMP macro.
- * gcc.dg/analyzer/setjmp-3.c: Likewise.
- * gcc.dg/analyzer/setjmp-4.c: Likewise.
- * gcc.dg/analyzer/setjmp-5.c: Likewise.
- * gcc.dg/analyzer/setjmp-6.c: Likewise.
- * gcc.dg/analyzer/setjmp-7.c: Likewise.
- * gcc.dg/analyzer/setjmp-7a.c: Likewise.
- * gcc.dg/analyzer/setjmp-8.c: Likewise.
- * gcc.dg/analyzer/setjmp-9.c: Likewise.
- * gcc.dg/analyzer/test-setjmp.h: New header.
-
-2020-01-22 Marek Polacek <polacek@redhat.com>
-
- PR c++/92907 - noexcept does not consider "const" in member functions.
- * parser.c (cp_parser_lambda_declarator_opt): Pass the proper
- qualifiers to cp_parser_exception_specification_opt.
- (cp_parser_direct_declarator): Pass the function qualifiers to
- cp_parser_exception_specification_opt.
- (cp_parser_class_specifier_1): Pass the function declaration to
- cp_parser_late_noexcept_specifier.
- (cp_parser_late_noexcept_specifier): Add a tree parameter. Use it to
- pass the qualifiers of the function to
- cp_parser_noexcept_specification_opt.
- (cp_parser_noexcept_specification_opt): New cp_cv_quals parameter.
- Use it in inject_this_parameter.
- (cp_parser_exception_specification_opt): New cp_cv_quals parameter.
- Use it.
- (cp_parser_transaction): Pass TYPE_UNQUALIFIED to
- cp_parser_noexcept_specification_opt.
- (cp_parser_transaction_expression): Likewise.
-
-2020-01-22 Marek Polacek <polacek@redhat.com>
-
- PR c++/93324 - ICE with -Wall on constexpr if.
- * g++.dg/cpp1z/constexpr-if33.C: New test.
-
-2020-01-22 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/acle/general/stack_vars_1.c: New test.
-
-2020-01-22 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/tls_preserve_1.c: Require tls_native.
- * gcc.target/aarch64/sve/tls_preserve_2.c: Likewise.
- * gcc.target/aarch64/sve/tls_preserve_3.c: Likewise.
-
-2020-01-22 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/sel_3.c (permute_vnx4sf): Take __SVFloat32_t
- rather than __SVFloat16_t
-
-2020-01-22 Richard Sandiford <richard.sandiford@arm.com>
-
- * g++.dg/ext/sve-sizeless-1.C: Don't expect an error for alias
- templates.
-
-2020-01-22 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/93381
- * gcc.dg/torture/pr93381.c: New testcase.
-
-2020-01-22 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93335
- * gcc.c-torture/compile/pr93335.c: New test.
-
- PR target/91298
- * gcc.target/i386/pr91298-1.c: New test.
- * gcc.target/i386/pr91298-2.c: New test.
-
- * gfortran.dg/gomp/target-parallel1.f90: New test.
- * gfortran.dg/goacc/pr93329.f90: Enable commented out target parallel
- test.
-
- PR fortran/93329
- * gfortran.dg/goacc/pr93329.f90: New test.
-
-2020-01-22 Jun Ma <JunMa@linux.alibaba.com>
-
- * g++.dg/coroutines/coro1-missing-await-method.C: New test.
-
-2020-01-21 Andrew Pinski <apinski@marvell.com>
-
- PR target/93119
- * gcc.target/aarch64/pr93119.c: New test.
-
-2020-01-22 Joseph Myers <joseph@codesourcery.com>
-
- PR c/93348
- * gcc.c-torture/compile/pr93348-1.c: New test.
-
-2020-01-21 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93352
- * gcc.dg/analyzer/pr93352.c: New test.
-
-2020-01-22 Hans-Peter Nilsson <hp@axis.com>
-
- * gcc.target/cris/asm-v8.S, gcc.target/cris/inasm-v8.c,
- gcc.target/cris/sync-1.c: Apply effective_target_march_option.
-
-2020-01-21 Uros Bizjak <ubizjak@gmail.com>
-
- PR target/93319
- * gcc.target/i386/pr93319-1a.c: Don't include <stdio.h>.
- (test1): Replace printf with __builtin_printf.
-
-2020-01-21 Bin Cheng <bin.cheng@linux.alibaba.com>
-
- * g++.dg/coroutines/co-await-void_type.C: New test.
-
-2020-01-21 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93333
- * gcc.c-torture/compile/pr93333.c: New test.
-
-2020-01-21 Sandra Loosemore <sandra@codesourcery.com>
-
- * g++.dg/coroutines/torture/mid-suspend-destruction-0.C: Generalize
- line terminators in patterns.
-
-2020-01-21 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/acle/general-c/load_1.c (f1): Cast to
- int32_t * rather than int *.
- * gcc.target/aarch64/sve/acle/general-c/load_2.c (f1): Likewise.
- * gcc.target/aarch64/sve/acle/general-c/load_gather_sv_1.c
- (f1): Likewise.
- * gcc.target/aarch64/sve/acle/general-c/load_gather_sv_2.c
- (f1): Likewise.
- * gcc.target/aarch64/sve/acle/general-c/load_gather_sv_restricted_1.c
- (f1): Likewise.
- * gcc.target/aarch64/sve/acle/general-c/load_replicate_1.c
- (f1): Likewise.
- * gcc.target/aarch64/sve/acle/general-c/store_1.c (f1): Likewise.
- * gcc.target/aarch64/sve/acle/general-c/store_2.c (f1): Likewise.
- * gcc.target/aarch64/sve/acle/general-c/store_scatter_index_1.c
- (f1): Likewise.
- * gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_2.c
- (f1): Likewise.
- * gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_restricted_1.c
- (f1): Likewise.
-
-2020-01-21 Szabolcs Nagy <szabolcs.nagy@arm.com>
-
- PR target/92424
- * gcc.target/aarch64/pr92424-1.c: New test.
- * gcc.target/aarch64/pr92424-2.c: New test.
- * gcc.target/aarch64/pr92424-3.c: New test.
-
-2020-01-21 Matthew Malcomson <matthew.malcomson@arm.com>
-
- * gcc.target/aarch64/sve/acle/asm/ld1ro_f16.c: Use require
- directive.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_f32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_f64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_s16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_s32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_s64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_s8.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_u16.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_u32.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_u64.c: Likewise.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_u8.c: Likewise.
- * lib/target-supports.exp: Add assembly requirement directive.
-
-2020-01-21 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/93309
- * gfortran.dg/external_implicit_none_2.f90: New.
-
-2020-01-21 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/92328
- * gcc.dg/torture/pr92328.c: New testcase.
-
-2020-01-21 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93073
- * gcc.target/powerpc/pr93073.c: New test.
-
-2020-01-20 Bin Cheng <bin.cheng@linux.alibaba.com>
-
- * g++.dg/coroutines/co-return-warning-1.C: New test.
-
-2020-01-21 Kito Cheng <kito.cheng@sifive.com>
-
- PR target/93304
- * gcc.target/riscv/pr93304.c: New test.
-
-2020-01-20 Martin Sebor <msebor@redhat.com>
-
- PR testsuite/92829
- * g++.dg/warn/Wstringop-overflow-4.C: Adjust test to avoid failures
- due to an aparrent VRP limtation.
- * gcc.dg/Wstringop-overflow-25.c: Same.
-
-2020-01-20 Nathan Sidwell <nathan@acm.org>
+ * gcc.target/aarch64/sve/acle/asm/prfd.c: Likewise.
- PR preprocessor/80005
- * g++.dg/cpp1y/feat-cxx14.C: Adjust.
- * g++.dg/cpp1z/feat-cxx17.C: Adjust.
- * g++.dg/cpp2a/feat-cxx2a.C: Adjust.
- * g++.dg/cpp/pr80005.C: New.
+2021-01-04 Martin Liska <mliska@suse.cz>
-2020-01-20 Mark Eggleston <mark.eggleston@codethink.com>
+ * README: Convert to utf8 from iso8859.
- * gfortran.dg/pr93263_1.f90: Change scan-tree-dump-not to
- scan-tree-dump.
+2021-01-04 Martin Liska <mliska@suse.cz>
-2020-01-20 H.J. Lu <hongjiu.lu@intel.com>
+ * gcc.target/avr/avr.exp: Run dos2unix on the file.
- PR target/93319
- * gcc.target/i386/pr93319-1a.c: New test.
- * gcc.target/i386/pr93319-1b.c: Likewise.
- * gcc.target/i386/pr93319-1c.c: Likewise.
- * gcc.target/i386/pr93319-1d.c: Likewise.
+2021-01-04 Richard Biener <rguenther@suse.de>
-2020-01-20 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/98291
+ * gcc.dg/vect/slp-reduc-11.c: New testcase.
+ * gcc.dg/vect/vect-reduc-in-order-4.c: Adjust.
- PR debug/92763
- * g++.dg/debug/pr92763.C: New testcase.
+2021-01-04 Jakub Jelinek <jakub@redhat.com>
-2020-01-20 Paolo Carlini <paolo.carlini@oracle.com>
+ PR tree-optimization/96782
+ * gcc.dg/tree-ssa/pr96782.c: New test.
- PR c++/92536
- * g++.dg/cpp1z/pr92536.C: New.
+2021-01-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
-2020-01-20 Richard Biener <rguenther@suse.de>
+ * gcc.misc-tests/outputs.exp: Adjust testcase.
- PR tree-optimization/93094
- * gcc.dg/vect/pr93094.c: New testcase.
+2021-01-01 Jakub Jelinek <jakub@redhat.com>
-2020-01-19 David Malcolm <dmalcolm@redhat.com>
+ * ChangeLog-2020: Rotate ChangeLog. New file.
- * gcc.dg/analyzer/CVE-2005-1689-dedupe-issue.c: Ensure that all
- test names are unique.
- * gcc.dg/analyzer/attribute-nonnull.c: Likewise.
- * gcc.dg/analyzer/conditionals-notrans.c: Likewise.
- * gcc.dg/analyzer/data-model-1.c: Likewise.
- * gcc.dg/analyzer/data-model-18.c: Likewise.
- * gcc.dg/analyzer/data-model-8.c: Likewise.
- * gcc.dg/analyzer/data-model-9.c: Likewise.
- * gcc.dg/analyzer/file-1.c: Likewise.
- * gcc.dg/analyzer/file-paths-1.c: Likewise.
- * gcc.dg/analyzer/loop-2.c: Likewise.
- * gcc.dg/analyzer/loop-2a.c: Likewise.
- * gcc.dg/analyzer/loop-4.c: Likewise.
- * gcc.dg/analyzer/loop.c: Likewise.
- * gcc.dg/analyzer/malloc-1.c: Likewise.
- * gcc.dg/analyzer/malloc-2.c: Likewise.
- * gcc.dg/analyzer/malloc-ipa-10.c: Likewise.
- * gcc.dg/analyzer/malloc-ipa-2.c: Likewise.
- * gcc.dg/analyzer/malloc-macro-separate-events.c: Likewise.
- * gcc.dg/analyzer/malloc-paths-1.c: Likewise.
- * gcc.dg/analyzer/malloc-paths-2.c: Likewise.
- * gcc.dg/analyzer/malloc-paths-3.c: Likewise.
- * gcc.dg/analyzer/malloc-paths-4.c: Likewise.
- * gcc.dg/analyzer/malloc-paths-5.c: Likewise.
- * gcc.dg/analyzer/malloc-paths-7.c: Likewise.
- * gcc.dg/analyzer/malloc-paths-9.c: Likewise.
- * gcc.dg/analyzer/operations.c: Likewise.
- * gcc.dg/analyzer/params.c: Likewise.
- * gcc.dg/analyzer/pattern-test-1.c: Likewise.
- * gcc.dg/analyzer/pattern-test-2.c: Likewise.
- * gcc.dg/analyzer/sensitive-1.c: Likewise.
- * gcc.dg/analyzer/switch.c: Likewise.
- * gcc.dg/analyzer/taint-1.c: Likewise.
- * gcc.dg/analyzer/unknown-fns.c: Likewise.
-
-2020-01-19 Hans-Peter Nilsson <hp@axis.com>
-
- * gcc.dg/torture/pr26515.c (cris*-*-*): Conditionalize
- -march=v10 option on target ! march_option.
- * gcc.target/cris/asm-v10.S, gcc.target/cris/inasm-v10.c,
- gcc.target/cris/sync-1-v10.c: Similar.
- * lib/target-supports.exp (effective_target_march_option): New.
-
-2020-01-19 Thomas König <tkoenig@gcc.gnu.org>
-
- PR fortran/44960
- * gfortran.dg/function_reference_1.f90: New test.
- * gfortran.dg/function_reference_2.f90: New test.
-
-2020-01-18 Jakub Jelinek <jakub@redhat.com>
-
- PR c/92833
- * c-c++-common/pr92833-4.c: Fix dg-message syntax.
-
-2020-01-18 Iain Sandoe <iain@sandoe.co.uk>
-
- * g++.dg/coroutines/co-await-syntax-00-needs-expr.C: New test.
- * g++.dg/coroutines/co-await-syntax-01-outside-fn.C: New test.
- * g++.dg/coroutines/co-await-syntax-02-outside-fn.C: New test.
- * g++.dg/coroutines/co-await-syntax-03-auto.C: New test.
- * g++.dg/coroutines/co-await-syntax-04-ctor-dtor.C: New test.
- * g++.dg/coroutines/co-await-syntax-05-constexpr.C: New test.
- * g++.dg/coroutines/co-await-syntax-06-main.C: New test.
- * g++.dg/coroutines/co-await-syntax-07-varargs.C: New test.
- * g++.dg/coroutines/co-await-syntax-08-lambda-auto.C: New test.
- * g++.dg/coroutines/co-return-syntax-01-outside-fn.C: New test.
- * g++.dg/coroutines/co-return-syntax-02-outside-fn.C: New test.
- * g++.dg/coroutines/co-return-syntax-03-auto.C: New test.
- * g++.dg/coroutines/co-return-syntax-04-ctor-dtor.C: New test.
- * g++.dg/coroutines/co-return-syntax-05-constexpr-fn.C: New test.
- * g++.dg/coroutines/co-return-syntax-06-main.C: New test.
- * g++.dg/coroutines/co-return-syntax-07-vararg.C: New test.
- * g++.dg/coroutines/co-return-syntax-08-bad-return.C: New test.
- * g++.dg/coroutines/co-return-syntax-09-lambda-auto.C: New test.
- * g++.dg/coroutines/co-yield-syntax-00-needs-expr.C: New test.
- * g++.dg/coroutines/co-yield-syntax-01-outside-fn.C: New test.
- * g++.dg/coroutines/co-yield-syntax-02-outside-fn.C: New test.
- * g++.dg/coroutines/co-yield-syntax-03-auto.C: New test.
- * g++.dg/coroutines/co-yield-syntax-04-ctor-dtor.C: New test.
- * g++.dg/coroutines/co-yield-syntax-05-constexpr.C: New test.
- * g++.dg/coroutines/co-yield-syntax-06-main.C: New test.
- * g++.dg/coroutines/co-yield-syntax-07-varargs.C: New test.
- * g++.dg/coroutines/co-yield-syntax-08-needs-expr.C: New test.
- * g++.dg/coroutines/co-yield-syntax-09-lambda-auto.C: New test.
- * g++.dg/coroutines/coro-builtins.C: New test.
- * g++.dg/coroutines/coro-missing-gro.C: New test.
- * g++.dg/coroutines/coro-missing-promise-yield.C: New test.
- * g++.dg/coroutines/coro-missing-ret-value.C: New test.
- * g++.dg/coroutines/coro-missing-ret-void.C: New test.
- * g++.dg/coroutines/coro-missing-ueh-1.C: New test.
- * g++.dg/coroutines/coro-missing-ueh-2.C: New test.
- * g++.dg/coroutines/coro-missing-ueh-3.C: New test.
- * g++.dg/coroutines/coro-missing-ueh.h: New test.
- * g++.dg/coroutines/coro-pre-proc.C: New test.
- * g++.dg/coroutines/coro.h: New file.
- * g++.dg/coroutines/coro1-ret-int-yield-int.h: New file.
- * g++.dg/coroutines/coroutines.exp: New file.
- * g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C: New test.
- * g++.dg/coroutines/torture/alloc-01-overload-newdel.C: New test.
- * g++.dg/coroutines/torture/call-00-co-aw-arg.C: New test.
- * g++.dg/coroutines/torture/call-01-multiple-co-aw.C: New test.
- * g++.dg/coroutines/torture/call-02-temp-co-aw.C: New test.
- * g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C: New test.
- * g++.dg/coroutines/torture/class-00-co-ret.C: New test.
- * g++.dg/coroutines/torture/class-01-co-ret-parm.C: New test.
- * g++.dg/coroutines/torture/class-02-templ-parm.C: New test.
- * g++.dg/coroutines/torture/class-03-operator-templ-parm.C: New test.
- * g++.dg/coroutines/torture/class-04-lambda-1.C: New test.
- * g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C: New test.
- * g++.dg/coroutines/torture/class-06-lambda-capture-ref.C: New test.
- * g++.dg/coroutines/torture/co-await-00-trivial.C: New test.
- * g++.dg/coroutines/torture/co-await-01-with-value.C: New test.
- * g++.dg/coroutines/torture/co-await-02-xform.C: New test.
- * g++.dg/coroutines/torture/co-await-03-rhs-op.C: New test.
- * g++.dg/coroutines/torture/co-await-04-control-flow.C: New test.
- * g++.dg/coroutines/torture/co-await-05-loop.C: New test.
- * g++.dg/coroutines/torture/co-await-06-ovl.C: New test.
- * g++.dg/coroutines/torture/co-await-07-tmpl.C: New test.
- * g++.dg/coroutines/torture/co-await-08-cascade.C: New test.
- * g++.dg/coroutines/torture/co-await-09-pair.C: New test.
- * g++.dg/coroutines/torture/co-await-10-template-fn-arg.C: New test.
- * g++.dg/coroutines/torture/co-await-11-forwarding.C: New test.
- * g++.dg/coroutines/torture/co-await-12-operator-2.C: New test.
- * g++.dg/coroutines/torture/co-await-13-return-ref.C: New test.
- * g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C: New test.
- * g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C: New test.
- * g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C: New test.
- * g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C: New test.
- * g++.dg/coroutines/torture/co-ret-05-return-value.C: New test.
- * g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C: New test.
- * g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C: New test.
- * g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C: New test.
- * g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C: New test.
- * g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C: New test.
- * g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C: New test.
- * g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C: New test.
- * g++.dg/coroutines/torture/co-ret-13-template-2.C: New test.
- * g++.dg/coroutines/torture/co-ret-14-template-3.C: New test.
- * g++.dg/coroutines/torture/co-yield-00-triv.C: New test.
- * g++.dg/coroutines/torture/co-yield-01-multi.C: New test.
- * g++.dg/coroutines/torture/co-yield-02-loop.C: New test.
- * g++.dg/coroutines/torture/co-yield-03-tmpl.C: New test.
- * g++.dg/coroutines/torture/co-yield-04-complex-local-state.C: New test.
- * g++.dg/coroutines/torture/co-yield-05-co-aw.C: New test.
- * g++.dg/coroutines/torture/co-yield-06-fun-parm.C: New test.
- * g++.dg/coroutines/torture/co-yield-07-template-fn-param.C: New test.
- * g++.dg/coroutines/torture/co-yield-08-more-refs.C: New test.
- * g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C: New test.
- * g++.dg/coroutines/torture/coro-torture.exp: New file.
- * g++.dg/coroutines/torture/exceptions-test-0.C: New test.
- * g++.dg/coroutines/torture/func-params-00.C: New test.
- * g++.dg/coroutines/torture/func-params-01.C: New test.
- * g++.dg/coroutines/torture/func-params-02.C: New test.
- * g++.dg/coroutines/torture/func-params-03.C: New test.
- * g++.dg/coroutines/torture/func-params-04.C: New test.
- * g++.dg/coroutines/torture/func-params-05.C: New test.
- * g++.dg/coroutines/torture/func-params-06.C: New test.
- * g++.dg/coroutines/torture/lambda-00-co-ret.C: New test.
- * g++.dg/coroutines/torture/lambda-01-co-ret-parm.C: New test.
- * g++.dg/coroutines/torture/lambda-02-co-yield-values.C: New test.
- * g++.dg/coroutines/torture/lambda-03-auto-parm-1.C: New test.
- * g++.dg/coroutines/torture/lambda-04-templ-parm.C: New test.
- * g++.dg/coroutines/torture/lambda-05-capture-copy-local.C: New test.
- * g++.dg/coroutines/torture/lambda-06-multi-capture.C: New test.
- * g++.dg/coroutines/torture/lambda-07-multi-yield.C: New test.
- * g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C: New test.
- * g++.dg/coroutines/torture/local-var-0.C: New test.
- * g++.dg/coroutines/torture/local-var-1.C: New test.
- * g++.dg/coroutines/torture/local-var-2.C: New test.
- * g++.dg/coroutines/torture/local-var-3.C: New test.
- * g++.dg/coroutines/torture/local-var-4.C: New test.
- * g++.dg/coroutines/torture/mid-suspend-destruction-0.C: New test.
- * g++.dg/coroutines/torture/pr92933.C: New test.
-
-2020-01-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
-
- PR libfortran/93234
- * gfortran.dg/inquire_pre.f90: New test.
-
-2020-01-17 David Malcolm <dmalcolm@redhat.com>
-
- PR analyzer/93290
- * gcc.dg/analyzer/pr93290.c: New test.
-
-2020-01-17 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR c++/92542
- * g++.dg/pr92542.C: New.
-
-2020-01-17 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
- Sudakshina Das <sudi.das@arm.com>
-
- * gcc.target/arm/armv8_1m-shift-imm_1.c: New test.
-
-2020-01-17 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
- Sudakshina Das <sudi.das@arm.com>
-
- * gcc.target/arm/armv8_1m-shift-reg_1.c: New test.
-
-2020-01-17 Jonathan Wakely <jwakely@redhat.com>
-
- PR testsuite/93227
- * g++.dg/cpp0x/std-layout1.C: Use -Wno-deprecated-declarations for
- C++20, due to std::is_pod being deprecated.
-
-2020-01-17 Matthew Malcomson <matthew.malcomson@arm.com>
-
- * gcc.target/aarch64/sve/acle/asm/ld1ro_f16.c: New test.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_f32.c: New test.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_f64.c: New test.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_s16.c: New test.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_s32.c: New test.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_s64.c: New test.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_s8.c: New test.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_u16.c: New test.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_u32.c: New test.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_u64.c: New test.
- * gcc.target/aarch64/sve/acle/asm/ld1ro_u8.c: New test.
-
-2020-01-17 Matthew Malcomson <matthew.malcomson@arm.com>
-
- * gcc.target/aarch64/pragma_cpp_predefs_2.c: Check for f64mm
- predef.
-
-2020-01-17 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/93228
- * g++.dg/cpp1y/attr-deprecated-3.C: New test.
-
-2020-01-17 Richard Sandiford <richard.sandiford@arm.com>
-
- * g++.target/aarch64/sve/acle/general-c++/gimplify_1.C: New test.
-
-2020-01-17 Mark Eggleston <mark.eggleston@codethink.com>
- Tobias Burnus <burnus@gcc.gnu.org>
-
- PR fortran/93236
- * gfortran.dg/pr93263_1.f90: New test.
- * gfortran.dg/pr93263_2.f90: New test.
-
-2020-01-17 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/93292
- * g++.dg/opt/pr93292.C: New test.
-
- PR testsuite/93294
- * lib/c-compat.exp (compat-use-alt-compiler): Handle
- -fdiagnostics-urls=never similarly to -fdiagnostics-color=never.
- (compat_setup_dfp): Likewise.
-
-2020-01-16 Kerem Kat <keremkat@gmail.com>
-
- PR c/92833
- * c-c++-common/pr92833-1.c, c-c++-common/pr92833-2.c,
- c-c++-common/pr92833-3.c, c-c++-common/pr92833-4.c: New tests.
-
-2020-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
-
- * g++.target/arm/bfloat_cpp_typecheck.C: New test.
- * gcc.target/arm/bfloat16_scalar_typecheck.c: New test.
- * gcc.target/arm/bfloat16_vector_typecheck_1.c: New test.
- * gcc.target/arm/bfloat16_vector_typecheck_2.c: New test.
-
-2020-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
-
- * g++.dg/abi/mangle-neon.C: Add BF16 SIMD types.
- * g++.dg/ext/arm-bf16/bf16-mangle-1.C: New test.
- * gcc.target/arm/bfloat16_scalar_1_1.c: New test.
- * gcc.target/arm/bfloat16_scalar_1_2.c: New test.
- * gcc.target/arm/bfloat16_scalar_2_1.c: New test.
- * gcc.target/arm/bfloat16_scalar_2_2.c: New test.
- * gcc.target/arm/bfloat16_scalar_3_1.c: New test.
- * gcc.target/arm/bfloat16_scalar_3_2.c: New test.
- * gcc.target/arm/bfloat16_scalar_4.c: New test.
- * gcc.target/arm/bfloat16_simd_1_1.c: New test.
- * gcc.target/arm/bfloat16_simd_1_2.c: New test.
- * gcc.target/arm/bfloat16_simd_2_1.c: New test.
- * gcc.target/arm/bfloat16_simd_2_2.c: New test.
- * gcc.target/arm/bfloat16_simd_3_1.c: New test.
- * gcc.target/arm/bfloat16_simd_3_2.c: New test.
-
-2020-01-16 Mihail Ionescu <mihail.ionescu@arm.com>
- Andre Vieira <andre.simoesdiasvieira@arm.com>
-
- * testsuite/gcc.target/arm/multilib.exp: Add v8.1-M entries.
-
-2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
- Thomas Preud'homme <thomas.preudhomme@arm.com>
-
- * gcc.target/arm/cmse/cmse-1.c: Add check for BLXNS when instructions
- introduced in Armv8.1-M Mainline Security Extensions are available and
- restrict checks for libcall to __gnu_cmse_nonsecure_call to Armv8-M
- targets only. Adapt CLRM check to verify register used for BLXNS is
- not in the CLRM register list.
- * gcc.target/arm/cmse/cmse-14.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-4.c: Likewise and adapt
- check for LSB clearing bit to be using the same register as BLXNS when
- targeting Armv8.1-M Mainline.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-5.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-6.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-9.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-and-union.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-13.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-13.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/union-1.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/union-2.c: Likewise.
- * gcc.target/arm/cmse/cmse-15.c: Count BLXNS when targeting Armv8.1-M
- Mainline and restrict libcall count to Armv8-M.
-
-2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
- Thomas Preud'homme <thomas.preudhomme@arm.com>
-
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13.c: Add check for VLSTM and
- VLLDM.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8.c: Likewise.
-
-2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
- Thomas Preud'homme <thomas.preudhomme@arm.com>
-
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-13.c: Add check for
- VPUSH and VPOP and update expectation for VSCCLRM.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-13.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-8.c: Likewise.
-
-2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
- Thomas Preud'homme <thomas.preudhomme@arm.com>
-
- * gcc.target/arm/cmse/cmse-1.c: Add check for PUSH and POP and update
- CLRM check.
- * gcc.target/arm/cmse/cmse-14.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-4.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-5.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-6.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-9.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-and-union.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-13.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-13.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/soft-sp/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/soft-sp/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/union-1.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/union-2.c: Likewise.
-
-2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
- Thomas Preud'homme <thomas.preudhomme@arm.com>
-
- * gcc.target/arm/cmse/bitfield-1.c: Add check for VSCCLRM.
- * gcc.target/arm/cmse/bitfield-2.c: Likewise.
- * gcc.target/arm/cmse/bitfield-3.c: Likewise.
- * gcc.target/arm/cmse/cmse-1.c: Likewise.
- * gcc.target/arm/cmse/struct-1.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-13.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-5.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-13.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-5.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-5.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-5.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-5.c: Likewise.
-
-2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
- Thomas Preud'homme <thomas.preudhomme@arm.com>
-
- * gcc.target/arm/cmse/bitfield-1.c: Add check for CLRM.
- * gcc.target/arm/cmse/bitfield-2.c: Likewise.
- * gcc.target/arm/cmse/bitfield-3.c: Likewise.
- * gcc.target/arm/cmse/struct-1.c: Likewise.
- * gcc.target/arm/cmse/cmse-14.c: Likewise.
- * gcc.target/arm/cmse/cmse-1.c: Likewise. Restrict checks for Armv8-M
- GPR clearing when CLRM is not available.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-4.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-5.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-6.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-9.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-13.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-5.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-13.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-5.c: likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-7.c: likewise.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-8.c: likewise.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-5.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-5.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-5.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/union-1.c: Likewise.
- * gcc.target/arm/cmse/mainline/8_1m/union-2.c: Likewise.
-
-2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
- Thomas Preud'homme <thomas.preudhomme@arm.com>
-
- * gcc.target/arm/cmse/bitfield-1.c: add checks for VSTR and VLDR.
- * gcc.target/arm/cmse/bitfield-2.c: Likewise.
- * gcc.target/arm/cmse/bitfield-3.c: Likewise.
- * gcc.target/arm/cmse/cmse-1.c: Likewise.
- * gcc.target/arm/cmse/struct-1.c: Likewise.
- * gcc.target/arm/cmse/cmse.exp: Run existing Armv8-M Mainline tests
- from mainline/8m subdirectory and new Armv8.1-M Mainline tests from
- mainline/8_1m subdirectory.
- * gcc.target/arm/cmse/mainline/bitfield-4.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/bitfield-4.c: This.
- * gcc.target/arm/cmse/mainline/bitfield-5.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/bitfield-5.c: This.
- * gcc.target/arm/cmse/mainline/bitfield-6.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/bitfield-6.c: This.
- * gcc.target/arm/cmse/mainline/bitfield-7.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/bitfield-7.c: This.
- * gcc.target/arm/cmse/mainline/bitfield-8.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/bitfield-8.c: This.
- * gcc.target/arm/cmse/mainline/bitfield-9.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/bitfield-9.c: This.
- * gcc.target/arm/cmse/mainline/bitfield-and-union-1.c: Move and rename
- into ...
- * gcc.target/arm/cmse/mainline/8m/bitfield-and-union.c: This.
- * gcc.target/arm/cmse/mainline/hard-sp/cmse-13.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/hard-sp/cmse-13.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/hard-sp/cmse-5.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/hard-sp/cmse-5.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/hard-sp/cmse-7.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/hard-sp/cmse-7.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/hard-sp/cmse-8.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/hard-sp/cmse-8.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/hard/cmse-13.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/hard/cmse-13.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/hard/cmse-5.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/hard/cmse-5.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/hard/cmse-7.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/hard/cmse-7.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/hard/cmse-8.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/hard/cmse-8.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/soft/cmse-13.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/soft/cmse-13.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/soft/cmse-5.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/soft/cmse-5.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/soft/cmse-7.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/soft/cmse-7.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/soft/cmse-8.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/soft/cmse-8.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/softfp-sp/cmse-5.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/softfp-sp/cmse-5.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/softfp-sp/cmse-7.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/softfp-sp/cmse-7.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/softfp-sp/cmse-8.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/softfp-sp/cmse-8.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/softfp/cmse-13.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/softfp/cmse-13.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/softfp/cmse-5.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/softfp/cmse-5.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/softfp/cmse-7.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/softfp/cmse-7.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/softfp/cmse-8.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/softfp/cmse-8.c: This. Clean up
- dg-skip-if directive for float ABI.
- * gcc.target/arm/cmse/mainline/union-1.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/union-1.c: This.
- * gcc.target/arm/cmse/mainline/union-2.c: Move into ...
- * gcc.target/arm/cmse/mainline/8m/union-2.c: This.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-4.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-5.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-6.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-7.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-8.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-9.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/bitfield-and-union.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-13.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-5.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-7.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-8.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-13.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-5.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-7.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-8.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-5.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-5.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-5.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/union-1.c: New file.
- * gcc.target/arm/cmse/mainline/8_1m/union-2.c: New file.
- * lib/target-supports.exp (check_effective_target_arm_cmse_clear_ok):
- New procedure.
-
-2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
- Thomas Preud'homme <thomas.preudhomme@arm.com>
+2021-01-01 Joel Brobecker <brobecker@adacore.com>
* lib/target-supports.exp
- (check_effective_target_arm_arch_v8_1m_main_ok): Define.
- (add_options_for_arm_arch_v8_1m_main): Likewise.
- (check_effective_target_arm_arch_v8_1m_main_multilib): Likewise.
-
-2020-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
-
- * gcc.target/aarch64/advsimd-intrinsics/bfdot-1.c: New.
- * gcc.target/aarch64/advsimd-intrinsics/bfdot-2.c: New.
- * gcc.target/aarch64/advsimd-intrinsics/bfdot-3.c: New.
-
-2020-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
-
- * gcc.target/aarch64/advsimd-intrinsics/vdot-3-1.c: New test.
- * gcc.target/aarch64/advsimd-intrinsics/vdot-3-2.c: New test.
- * gcc.target/aarch64/advsimd-intrinsics/vdot-3-3.c: New test.
- * gcc.target/aarch64/advsimd-intrinsics/vdot-3-4.c: New test.
-
-2020-01-16 Andre Vieira <andre.simoesdiasvieira@arm.com>
-
- PR tree-optimization/92429
- * gcc.dg/vect/pr92429.c: New test.
-
-2020-01-16 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/93253
- * fortran.dg/boz_7.f90: Updated dg-error.
-
-2020-01-15 Paolo Carlini <paolo.carlini@oracle.com>
-
- PR c++/91073
- * g++.dg/concepts/pr91073-1.C: New.
- * g++.dg/concepts/pr91073-2.C: Likewise.
-
-2020-01-15 Wilco Dijkstra <wdijkstr@arm.com>
-
- * gcc.dg/pr90838.c: New test.
- * gcc.dg/pr93231.c: New test.
- * gcc.target/aarch64/pr90838.c: Use #define u 0.
-
-2020-01-15 Richard Biener <rguenther@suse.de>
-
- PR middle-end/93273
- * g++.dg/torture/pr93273.C: New testcase.
-
-2020-01-15 Richard Sandiford <richard.sandiford@arm.com>
-
- PR tree-optimization/93247
- * gcc.dg/vect/pr93247-1.c: New test.
- * gcc.dg/vect/pr93247-2.c: Likewise.
-
-2020-01-15 Martin Sebor <msebor@redhat.com>
-
- * gcc.dg/Wstringop-overflow-17.c: Tweak test to avoid unrelated
- failures due the absence of loop unrolling.
-
-2020-01-15 Joseph Myers <joseph@codesourcery.com>
-
- PR c/93072
- * gcc.dg/inline-42.c, gcc.dg/inline-43.c: New tests.
-
-2020-01-14 David Malcolm <dmalcolm@redhat.com>
+ (check_effective_target_arm_fp16_alternative_ok_nocache):
+ Return zero for *-*-vxworks7r* targets.
+ * gcc.target/arm/aapcs/vfp22.c: Require arm_fp16_alternative_ok.
+ * gcc.target/arm/aapcs/vfp23.c: Likewise.
+ * gcc.target/arm/aapcs/vfp24.c: Likewise.
+ * gcc.target/arm/aapcs/vfp25.c: Likewise.
- * gcc.dg/analyzer/signal-6.c: New test.
+2021-01-01 Jerome Lambourg <lambourg@adacore.com>
-2020-01-14 David Malcolm <dmalcolm@redhat.com>
+ * g++.dg/init/new26.C: Fix overriding of the delete operator
+ for c++14 profile.
- * gcc.dg/analyzer/dot-output.c: Add test coverage for a BB with
- no statements.
+2021-01-01 Jerome Lambourg <lambourg@adacore.com>
-2020-01-14 David Malcolm <dmalcolm@redhat.com>
+ * g++.dg/tls/pr79288.C: Skip on vxworks_kernel (TLS model
+ not supported).
- PR analyzer/58237
- * gcc.dg/analyzer/file-paths-1.c: New test.
+2021-01-01 Joel Brobecker <brobecker@adacore.com>
-2020-01-14 David Malcolm <dmalcolm@redhat.com>
+ * gcc.target/arm/memset-inline-2.c: Add -mno-long-calls to
+ the test's dg-options.
+ * gcc.target/arm/pr78255-2.c: Likewise.
- PR analyzer/58237
- * gcc.dg/analyzer/file-1.c (test_4): New.
- * gcc.dg/analyzer/file-pr58237.c: New test.
-
-2020-01-15 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/93262
- * gcc.c-torture/execute/builtins/pr93262-chk.c: New test.
- * gcc.c-torture/execute/builtins/pr93262-chk-lib.c: New file.
- * gcc.c-torture/execute/builtins/pr93262-chk.x: New file.
-
- PR tree-optimization/93249
- * gcc.c-torture/execute/pr93249.c: New test.
-
-2020-01-14 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/signal-5.c: New test.
-
-2020-01-14 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/data-model-1.c: Remove xfail.
- * gcc.dg/analyzer/data-model-5b.c: Likewise.
- * gcc.dg/analyzer/data-model-5c.c: Likewise.
- * gcc.dg/analyzer/setjmp-3.c: Mark "foo" as pure.
- * gcc.dg/analyzer/setjmp-4.c: Likewise.
- * gcc.dg/analyzer/setjmp-6.c: Likewise.
- * gcc.dg/analyzer/setjmp-7.c: Likewise.
- * gcc.dg/analyzer/setjmp-7a.c: Likewise.
- * gcc.dg/analyzer/setjmp-8.c: Likewise.
- * gcc.dg/analyzer/setjmp-9.c: Likewise.
- * gcc.dg/analyzer/unknown-fns.c: New test.
-
-2020-01-14 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/CVE-2005-1689-dedupe-issue.c: New test.
-
-2020-01-15 Jakub Jelinek <jakub@redhat.com>
-
- PR lto/91576
- * g++.dg/lto/odr-8_1.C: Remove bogus initial lines.
-
- PR target/93009
- * gcc.target/i386/avx512vl-pr93009.c: New test.
-
-2020-01-14 Jan Hubicka <hubicka@ucw.cz>
-
- PR lto/91576
- * g++.dg/lto/odr-8_0.C: New testcase.
- * g++.dg/lto/odr-8_1.C: New testcase.
-
-2020-01-14 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/analyzer/CVE-2005-1689-minimal.c: New test.
- * gcc.dg/analyzer/abort.c: New test.
- * gcc.dg/analyzer/alloca-leak.c: New test.
- * gcc.dg/analyzer/analyzer-decls.h: New header.
- * gcc.dg/analyzer/analyzer-verbosity-0.c: New test.
- * gcc.dg/analyzer/analyzer-verbosity-1.c: New test.
- * gcc.dg/analyzer/analyzer-verbosity-2.c: New test.
- * gcc.dg/analyzer/analyzer.exp: New suite.
- * gcc.dg/analyzer/attribute-nonnull.c: New test.
- * gcc.dg/analyzer/call-summaries-1.c: New test.
- * gcc.dg/analyzer/conditionals-2.c: New test.
- * gcc.dg/analyzer/conditionals-3.c: New test.
- * gcc.dg/analyzer/conditionals-notrans.c: New test.
- * gcc.dg/analyzer/conditionals-trans.c: New test.
- * gcc.dg/analyzer/data-model-1.c: New test.
- * gcc.dg/analyzer/data-model-2.c: New test.
- * gcc.dg/analyzer/data-model-3.c: New test.
- * gcc.dg/analyzer/data-model-4.c: New test.
- * gcc.dg/analyzer/data-model-5.c: New test.
- * gcc.dg/analyzer/data-model-5b.c: New test.
- * gcc.dg/analyzer/data-model-5c.c: New test.
- * gcc.dg/analyzer/data-model-5d.c: New test.
- * gcc.dg/analyzer/data-model-6.c: New test.
- * gcc.dg/analyzer/data-model-7.c: New test.
- * gcc.dg/analyzer/data-model-8.c: New test.
- * gcc.dg/analyzer/data-model-9.c: New test.
- * gcc.dg/analyzer/data-model-11.c: New test.
- * gcc.dg/analyzer/data-model-12.c: New test.
- * gcc.dg/analyzer/data-model-13.c: New test.
- * gcc.dg/analyzer/data-model-14.c: New test.
- * gcc.dg/analyzer/data-model-15.c: New test.
- * gcc.dg/analyzer/data-model-16.c: New test.
- * gcc.dg/analyzer/data-model-17.c: New test.
- * gcc.dg/analyzer/data-model-18.c: New test.
- * gcc.dg/analyzer/data-model-19.c: New test.
- * gcc.dg/analyzer/data-model-path-1.c: New test.
- * gcc.dg/analyzer/disabling.c: New test.
- * gcc.dg/analyzer/dot-output.c: New test.
- * gcc.dg/analyzer/double-free-lto-1-a.c: New test.
- * gcc.dg/analyzer/double-free-lto-1-b.c: New test.
- * gcc.dg/analyzer/double-free-lto-1.h: New header.
- * gcc.dg/analyzer/equivalence.c: New test.
- * gcc.dg/analyzer/explode-1.c: New test.
- * gcc.dg/analyzer/explode-2.c: New test.
- * gcc.dg/analyzer/factorial.c: New test.
- * gcc.dg/analyzer/fibonacci.c: New test.
- * gcc.dg/analyzer/fields.c: New test.
- * gcc.dg/analyzer/file-1.c: New test.
- * gcc.dg/analyzer/file-2.c: New test.
- * gcc.dg/analyzer/function-ptr-1.c: New test.
- * gcc.dg/analyzer/function-ptr-2.c: New test.
- * gcc.dg/analyzer/function-ptr-3.c: New test.
- * gcc.dg/analyzer/gzio-2.c: New test.
- * gcc.dg/analyzer/gzio-3.c: New test.
- * gcc.dg/analyzer/gzio-3a.c: New test.
- * gcc.dg/analyzer/gzio.c: New test.
- * gcc.dg/analyzer/infinite-recursion.c: New test.
- * gcc.dg/analyzer/loop-2.c: New test.
- * gcc.dg/analyzer/loop-2a.c: New test.
- * gcc.dg/analyzer/loop-3.c: New test.
- * gcc.dg/analyzer/loop-4.c: New test.
- * gcc.dg/analyzer/loop.c: New test.
- * gcc.dg/analyzer/malloc-1.c: New test.
- * gcc.dg/analyzer/malloc-2.c: New test.
- * gcc.dg/analyzer/malloc-3.c: New test.
- * gcc.dg/analyzer/malloc-callbacks.c: New test.
- * gcc.dg/analyzer/malloc-dce.c: New test.
- * gcc.dg/analyzer/malloc-dedupe-1.c: New test.
- * gcc.dg/analyzer/malloc-ipa-1.c: New test.
- * gcc.dg/analyzer/malloc-ipa-10.c: New test.
- * gcc.dg/analyzer/malloc-ipa-11.c: New test.
- * gcc.dg/analyzer/malloc-ipa-12.c: New test.
- * gcc.dg/analyzer/malloc-ipa-13.c: New test.
- * gcc.dg/analyzer/malloc-ipa-2.c: New test.
- * gcc.dg/analyzer/malloc-ipa-3.c: New test.
- * gcc.dg/analyzer/malloc-ipa-4.c: New test.
- * gcc.dg/analyzer/malloc-ipa-5.c: New test.
- * gcc.dg/analyzer/malloc-ipa-6.c: New test.
- * gcc.dg/analyzer/malloc-ipa-7.c: New test.
- * gcc.dg/analyzer/malloc-ipa-8-double-free.c: New test.
- * gcc.dg/analyzer/malloc-ipa-8-lto-a.c: New test.
- * gcc.dg/analyzer/malloc-ipa-8-lto-b.c: New test.
- * gcc.dg/analyzer/malloc-ipa-8-lto-c.c: New test.
- * gcc.dg/analyzer/malloc-ipa-8-lto.h: New test.
- * gcc.dg/analyzer/malloc-ipa-8-unchecked.c: New test.
- * gcc.dg/analyzer/malloc-ipa-9.c: New test.
- * gcc.dg/analyzer/malloc-macro-inline-events.c: New test.
- * gcc.dg/analyzer/malloc-macro-separate-events.c: New test.
- * gcc.dg/analyzer/malloc-macro.h: New header.
- * gcc.dg/analyzer/malloc-many-paths-1.c: New test.
- * gcc.dg/analyzer/malloc-many-paths-2.c: New test.
- * gcc.dg/analyzer/malloc-many-paths-3.c: New test.
- * gcc.dg/analyzer/malloc-paths-1.c: New test.
- * gcc.dg/analyzer/malloc-paths-10.c: New test.
- * gcc.dg/analyzer/malloc-paths-2.c: New test.
- * gcc.dg/analyzer/malloc-paths-3.c: New test.
- * gcc.dg/analyzer/malloc-paths-4.c: New test.
- * gcc.dg/analyzer/malloc-paths-5.c: New test.
- * gcc.dg/analyzer/malloc-paths-6.c: New test.
- * gcc.dg/analyzer/malloc-paths-7.c: New test.
- * gcc.dg/analyzer/malloc-paths-8.c: New test.
- * gcc.dg/analyzer/malloc-paths-9.c: New test.
- * gcc.dg/analyzer/malloc-vs-local-1a.c: New test.
- * gcc.dg/analyzer/malloc-vs-local-1b.c: New test.
- * gcc.dg/analyzer/malloc-vs-local-2.c: New test.
- * gcc.dg/analyzer/malloc-vs-local-3.c: New test.
- * gcc.dg/analyzer/malloc-vs-local-4.c: New test.
- * gcc.dg/analyzer/operations.c: New test.
- * gcc.dg/analyzer/params-2.c: New test.
- * gcc.dg/analyzer/params.c: New test.
- * gcc.dg/analyzer/paths-1.c: New test.
- * gcc.dg/analyzer/paths-1a.c: New test.
- * gcc.dg/analyzer/paths-2.c: New test.
- * gcc.dg/analyzer/paths-3.c: New test.
- * gcc.dg/analyzer/paths-4.c: New test.
- * gcc.dg/analyzer/paths-5.c: New test.
- * gcc.dg/analyzer/paths-6.c: New test.
- * gcc.dg/analyzer/paths-7.c: New test.
- * gcc.dg/analyzer/pattern-test-1.c: New test.
- * gcc.dg/analyzer/pattern-test-2.c: New test.
- * gcc.dg/analyzer/pointer-merging.c: New test.
- * gcc.dg/analyzer/pr61861.c: New test.
- * gcc.dg/analyzer/pragma-1.c: New test.
- * gcc.dg/analyzer/scope-1.c: New test.
- * gcc.dg/analyzer/sensitive-1.c: New test.
- * gcc.dg/analyzer/setjmp-1.c: New test.
- * gcc.dg/analyzer/setjmp-2.c: New test.
- * gcc.dg/analyzer/setjmp-3.c: New test.
- * gcc.dg/analyzer/setjmp-4.c: New test.
- * gcc.dg/analyzer/setjmp-5.c: New test.
- * gcc.dg/analyzer/setjmp-6.c: New test.
- * gcc.dg/analyzer/setjmp-7.c: New test.
- * gcc.dg/analyzer/setjmp-7a.c: New test.
- * gcc.dg/analyzer/setjmp-8.c: New test.
- * gcc.dg/analyzer/setjmp-9.c: New test.
- * gcc.dg/analyzer/signal-1.c: New test.
- * gcc.dg/analyzer/signal-2.c: New test.
- * gcc.dg/analyzer/signal-3.c: New test.
- * gcc.dg/analyzer/signal-4a.c: New test.
- * gcc.dg/analyzer/signal-4b.c: New test.
- * gcc.dg/analyzer/strcmp-1.c: New test.
- * gcc.dg/analyzer/switch.c: New test.
- * gcc.dg/analyzer/taint-1.c: New test.
- * gcc.dg/analyzer/zlib-1.c: New test.
- * gcc.dg/analyzer/zlib-2.c: New test.
- * gcc.dg/analyzer/zlib-3.c: New test.
- * gcc.dg/analyzer/zlib-4.c: New test.
- * gcc.dg/analyzer/zlib-5.c: New test.
- * gcc.dg/analyzer/zlib-6.c: New test.
- * lib/gcc-defs.exp (dg-check-dot): New procedure.
- * lib/target-supports.exp (check_dot_available): New procedure.
- (check_effective_target_analyzer): New.
- * lib/target-supports-dg.exp (dg-require-dot): New procedure.
-
-2020-01-14 Jason Merrill <jason@redhat.com>
-
- * lib/prune.exp (prune_gcc_output): Adjust constexpr pattern.
-
-2020-01-14 Xiong Hu Luo <luoxhu@linux.ibm.com>
-
- PR ipa/69678
- * gcc.dg/tree-prof/indir-call-prof-topn.c: New testcase.
- * gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c: New testcase.
- * gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c: New testcase.
- * gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c: New testcase.
- * lib/scandump.exp: Dump executable file name.
- * lib/scanwpaipa.exp: New scan-pgo-wap-ipa-dump.
-
-2020-01-13 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/plugin/diagnostic-test-paths-2.c: Remove unused dg-line
- directive.
-
-2020-01-13 Joseph Myers <joseph@codesourcery.com>
-
- PR c/93241
- * gcc.dg/c11-static-assert-10.c, gcc.dg/c99-const-expr-15.c: New
- tests.
-
-2020-01-13 Martin Sebor <msebor@redhat.com>
-
- PR tree-optimization/93213
- * gcc.c-torture/execute/pr93213.c: New test.
-
-2020-01-10 Thomas Schwinge <thomas@codesourcery.com>
-
- * c-c++-common/goacc/host_data-1.c: Extend.
- * gfortran.dg/goacc/host_data-tree.f95: Likewise.
-
-2020-01-10 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/93210
- * gcc.dg/pr93210.c: New test.
- * g++.dg/opt/pr93210.C: New test.
-
-2020-01-10 Vladimir Makarov <vmakarov@redhat.com>
-
- PR inline-asm/93027
- * gcc.target/i386/pr93027.c: Use the right PR number in the test.
-
-2020-01-10 Vladimir Makarov <vmakarov@redhat.com>
-
- PR inline-asm/93027
- * gcc.target/i386/pr93207.c: Rename to pr93027.c.
-
-2020-01-10 Vladimir Makarov <vmakarov@redhat.com>
-
- PR inline-asm/93027
- * gcc.target/i386/pr93207.c: Run it only for x86-64.
-
-2020-01-10 David Malcolm <dmalcolm@redhat.com>
-
- * gcc.dg/format/gcc_diag-10.c (diagnostic_event_id_t): New
- typedef.
- (test_diag): Add coverage of "%@".
- * gcc.dg/plugin/diagnostic-path-format-default.c: New test.
- * gcc.dg/plugin/diagnostic-path-format-inline-events-1.c: New test.
- * gcc.dg/plugin/diagnostic-path-format-inline-events-2.c: New test.
- * gcc.dg/plugin/diagnostic-path-format-inline-events-3.c: New test.
- * gcc.dg/plugin/diagnostic-path-format-none.c: New test.
- * gcc.dg/plugin/diagnostic-test-paths-1.c: New test.
- * gcc.dg/plugin/diagnostic-test-paths-2.c: New test.
- * gcc.dg/plugin/diagnostic-test-paths-3.c: New test.
- * gcc.dg/plugin/diagnostic-test-paths-4.c: New test.
- * gcc.dg/plugin/diagnostic_plugin_test_paths.c: New.
- * gcc.dg/plugin/plugin.exp: Add the new plugin and test cases.
-
-2020-01-10 David Malcolm <dmalcolm@redhat.com>
-
- * lib/gcc-dg.exp (cleanup-after-saved-dg-test): Reset global
- nn_line_numbers_enabled.
- * lib/multiline.exp (nn_line_numbers_enabled): New global.
- (dg-enable-nn-line-numbers): New proc.
- (maybe-handle-nn-line-numbers): New proc.
- * lib/prune.exp (prune_gcc_output): Call maybe-handle-nn-line-numbers.
+2021-01-01 Jerome Lambourg <lambourg@adacore.com>
-2020-01-10 Vladimir Makarov <vmakarov@redhat.com>
+ * g++.old-deja/g++.mike/p658.C: Also undefine OK on VxWorks RTP.
- PR inline-asm/93027
- * gcc.target/i386/pr93207.c: New test.
+2021-01-01 Jerome Lambourg <lambourg@adacore.com>
-2020-01-10 Wilco Dijkstra <wdijkstr@arm.com>
+ * g++.dg/opt/20050511-1.C: Work around UINT32 in vxworks rtp
+ headers too.
- * testsuite/gcc.target/aarch64/pr90838.c: New test.
+2021-01-01 Jerome Lambourg <lambourg@adacore.com>
-2020-01-10 Stam Markianos-Wright <stam.markianos-wright@arm.com>
+ * g++.old-deja/g++.pt/const2.C: Skip on vxworks kernel.
- * g++.target/aarch64/bfloat_cpp_typecheck.C: New test.
- * gcc.target/aarch64/bfloat16_scalar_typecheck.c: New test.
- * gcc.target/aarch64/bfloat16_vector_typecheck_1.c: New test.
- * gcc.target/aarch64/bfloat16_vector_typecheck_2.c: New test.
+2021-01-01 Jerome Lambourg <lambourg@adacore.com>
-2020-01-10 Stam Markianos-Wright <stam.markianos-wright@arm.com>
-
- * g++.dg/abi/mangle-neon-aarch64.C: Add Bfloat SIMD types to test.
- * g++.dg/ext/arm-bf16/bf16-mangle-aarch64-1.C: New test.
- * gcc.target/aarch64/bfloat16_scalar_1.c: New test.
- * gcc.target/aarch64/bfloat16_scalar_2.c: New test.
- * gcc.target/aarch64/bfloat16_scalar_3.c: New test.
- * gcc.target/aarch64/bfloat16_scalar_4.c: New test.
- * gcc.target/aarch64/bfloat16_simd_1.c: New test.
- * gcc.target/aarch64/bfloat16_simd_2.c: New test.
- * gcc.target/aarch64/bfloat16_simd_3.c: New test.
-
-2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/struct_vect_1.c (N): Protect with #ifndef.
- * gcc.target/aarch64/sve/pcs/return_1_128.c: New test.
- * gcc.target/aarch64/sve/pcs/return_4_128.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_5_128.c: Likewise.
- * gcc.target/aarch64/sve/pcs/return_6_128.c: Likewise.
- * gcc.target/aarch64/sve/pcs/stack_clash_1_128.c: Likewise.
- * gcc.target/aarch64/sve/pcs/stack_clash_2_128.c: Likewise.
- * gcc.target/aarch64/sve/single_5.c: Likewise.
- * gcc.target/aarch64/sve/struct_vect_25.c: Likewise.
- * gcc.target/aarch64/sve/struct_vect_26.c: Likewise.
-
-2020-01-10 Martin Sebor <msebor@redhat.com>
-
- PR c/93132
- * gcc.dg/attr-access-read-only-2.c: New test.
-
-2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/sel_1.c: Use SVE types for the arguments and
- return values. Use check-function-bodies instead of scan-assembler.
- * gcc.target/aarch64/sve/sel_2.c: Likewise
- * gcc.target/aarch64/sve/sel_3.c: Likewise.
-
-2020-01-10 Martin Jambor <mjambor@suse.cz>
-
- * gcc.dg/ipa/ipa-clone-3.c: Replace struct initializer with
- piecemeal initialization.
-
-2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/index_1_run.c: Require aarch64_sve256_hw
- rather than aarch64_sve_hw.
-
-2020-01-10 Richard Biener <rguenther@suse.de>
-
- PR testsuite/93216
- * gcc.dg/optimize-bswaphi-1.c: Split previously added
- case into a LE and BE variant.
-
-2020-01-09 Thomas Koenig <tkoenig@gcc.gnu.org>
-
- PR fortran/65428
- * gfortran.dg/zero_sized_11.f90: New test.
- * gfortran.dg/zero_sized_12.f90: New test.
-
-2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
-
- * g++.target/aarch64/sve/acle/general-c++/mul_lane_1.c: New test.
- * g++.target/aarch64/sve2/acle: New directory.
- * gcc.target/aarch64/pragma_cpp_predefs_3.c: New test.
- * gcc.target/aarch64/sve/acle/asm/test_sve_acle.h (TEST_TYPE_CHANGE_Z)
- (TEST_DUAL_ZD, TEST_TYPE_CHANGE_ZX, TEST_TBL2, TEST_TBL2_REV): New
- macros.
- * gcc.target/aarch64/sve/acle/general-c/binary_lane_1.c: Do not
- expect an error saying that the function has no f32 form, but instead
- expect an error about SVE2 being required if the current target
- doesn't support SVE2.
- * gcc.target/aarch64/sve/acle/general-c/ternary_lane_1.c: Likewise.
- * gcc.target/aarch64/sve/acle/general-c/ternary_lane_rotate_1.c Likewise.
- * gcc.target/aarch64/sve/acle/general-c/binary_long_lane_1.c,
- * gcc.target/aarch64/sve/acle/general-c/binary_long_opt_n_1.c,
- * gcc.target/aarch64/sve/acle/general-c/binary_narrowb_opt_n_1.c,
- * gcc.target/aarch64/sve/acle/general-c/binary_narrowt_opt_n_1.c,
- * gcc.target/aarch64/sve/acle/general-c/binary_to_uint_1.c,
- * gcc.target/aarch64/sve/acle/general-c/binary_wide_1.c,
- * gcc.target/aarch64/sve/acle/general-c/binary_wide_opt_n_1.c,
- * gcc.target/aarch64/sve/acle/general-c/compare_1.c,
- * gcc.target/aarch64/sve/acle/general-c/compare_ptr_1.c,
- * gcc.target/aarch64/sve/acle/general-c/load_ext_gather_index_restricted_1.c,
- * gcc.target/aarch64/sve/acle/general-c/load_ext_gather_offset_restricted_1.c,
- * gcc.target/aarch64/sve/acle/general-c/load_ext_gather_offset_restricted_2.c,
- * gcc.target/aarch64/sve/acle/general-c/load_ext_gather_offset_restricted_3.c,
- * gcc.target/aarch64/sve/acle/general-c/load_ext_gather_offset_restricted_4.c,
- * gcc.target/aarch64/sve/acle/general-c/load_gather_sv_restricted_1.c,
- * gcc.target/aarch64/sve/acle/general-c/load_gather_sv_restricted_2.c,
- * gcc.target/aarch64/sve/acle/general-c/mul_lane_1.c,
- * gcc.target/aarch64/sve/acle/general-c/shift_left_imm_long_1.c,
- * gcc.target/aarch64/sve/acle/general-c/shift_left_imm_to_uint_1.c,
- * gcc.target/aarch64/sve/acle/general-c/shift_left_imm_to_uint_2.c,
- * gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowb_1.c,
- * gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowb_to_uint_1.c,
- * gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowt_1.c,
- * gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowt_to_uint_1.c,
- * gcc.target/aarch64/sve/acle/general-c/store_scatter_index_restricted_1.c,
- * gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_restricted_1.c,
- * gcc.target/aarch64/sve/acle/general-c/tbl_tuple_1.c,
- * gcc.target/aarch64/sve/acle/general-c/ternary_long_lane_1.c,
- * gcc.target/aarch64/sve/acle/general-c/ternary_long_opt_n_1.c,
- * gcc.target/aarch64/sve/acle/general-c/ternary_qq_lane_rotate_1.c,
- * gcc.target/aarch64/sve/acle/general-c/ternary_qq_rotate_1.c,
- * gcc.target/aarch64/sve/acle/general-c/ternary_shift_right_imm_1.c,
- * gcc.target/aarch64/sve/acle/general-c/ternary_uint_1.c,
- * gcc.target/aarch64/sve/acle/general-c/unary_convert_narrowt_1.c,
- * gcc.target/aarch64/sve/acle/general-c/unary_narrowb_1.c,
- * gcc.target/aarch64/sve/acle/general-c/unary_narrowb_to_uint_1.c,
- * gcc.target/aarch64/sve/acle/general-c/unary_narrowt_1.c,
- * gcc.target/aarch64/sve/acle/general-c/unary_narrowt_to_uint_1.c,
- * gcc.target/aarch64/sve/acle/general-c/unary_to_int_1.c: New tests.
- * gcc.target/aarch64/sve2/bcax_1.c: Likewise.
- * gcc.target/aarch64/sve2/acle: New directory.
-
-2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/acle/general-c/unary_count_1.c: Rename to...
- * gcc.target/aarch64/sve/acle/general-c/unary_to_uint_1.c: ...this.
- * gcc.target/aarch64/sve/acle/general-c/unary_count_2.c: Rename to...
- * gcc.target/aarch64/sve/acle/general-c/unary_to_uint_2.c: ...this.
- * gcc.target/aarch64/sve/acle/general-c/unary_count_3.c: Rename to...
- * gcc.target/aarch64/sve/acle/general-c/unary_to_uint_3.c: ...this.
-
-2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/acle/general/nrv_1.c: New test.
-
-2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/pcs/gnu_vectors_1.c: New test.
- * gcc.target/aarch64/sve/pcs/gnu_vectors_2.c: Likewise.
-
-2020-01-09 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/84135
- * gfortran.dg/coarray/codimension_3.f90: New.
-
-2020-01-09 Martin Sebor <msebor@redhat.com>
-
- PR middle-end/93200
- * gcc.dg/Wstringop-overflow-30.c: New test.
-
-2020-01-09 Richard Biener <rguenther@suse.de>
-
- PR middle-end/93054
- * gcc.dg/pr93054.c: New testcase.
-
-2020-01-09 Richard Biener <rguenther@suse.de>
-
- PR tree-optimization/93040
- * gcc.dg/optimize-bswaphi-1.c: Amend.
- * gcc.dg/optimize-bswapsi-2.c: Likewise.
-
-2020-01-09 Jakub Jelinek <jakub@redhat.com>
-
- PR inline-asm/93202
- * gcc.target/riscv/pr93202.c: New test.
-
- PR target/93141
- * gcc.target/i386/pr93141-1.c: Add tests with constants that have MSB
- of the low half of the constant set.
- * gcc.target/i386/pr93141-2.c: New test.
-
-2020-01-08 Jeff Law <law@redhat.com>
-
- * gcc.dg/Wstringop-overflow-27.c: Make testnames unique.
-
-2020-01-08 Joel Brobecker <brobecker@adacore.com>
- Olivier Hainque <hainque@adacore.com>
-
- * g++.target/aarch64/sve/tls_2.C: Add missing
- { dg-require-effective-target fpic } directive.
- * gcc.target/aarch64/noplt_2.c: Likewise.
- * gcc.target/aarch64/noplt_3.c: Likewise.
- * gcc.target/aarch64/pic-constantpool1.c: Likewise.
- * gcc.target/aarch64/pic-small.c: Likewise.
- * gcc.target/aarch64/pic-symrefplus.c: Likewise.
- * gcc.target/aarch64/pr66912.c: Likewise.
- * gcc.target/aarch64/sve/tls_1.c: Likewise.
- * gcc.target/aarch64/sve/tls_preserve_1.c: Likewise.
- * gcc.target/aarch64/sve/tls_preserve_2.c: Likewise.
- * gcc.target/aarch64/sve/tls_preserve_3.c: Likewise.
- * gcc.target/aarch64/tlsie_tiny_1.c: Likewise.
- * gcc.target/aarch64/tlsle12_1.c: Likewise.
- * gcc.target/aarch64/tlsle12_tiny_1.c: Likewise.
- * gcc.target/aarch64/tlsle24_1.c: Likewise.
- * gcc.target/aarch64/tlsle24_tiny_1.c: Likewise.
- * gcc.target/aarch64/tlsle32_1.c: Likewise.
- * gcc.target/aarch64/tlsle_sizeadj_small_1.c: Likewise.
- * gcc.target/aarch64/tlsle_sizeadj_tiny_1.c: Likewise.
-
-2020-01-08 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93187
- * g++.dg/opt/pr93187.C: New test.
-
- PR target/93174
- * gcc.c-torture/compile/pr93174.c: New test.
-
-2020-01-08 Olivier Hainque <hainque@adacore.com>
- Alexandre Oliva <oliva@adacore.com>
-
- * gcc.target/aarch64/stack-check-alloca.h: Remove
- #include alloca.h. #define alloca __builtin_alloca
- instead.
- * gcc.target/aarch64/stack-check-alloca-1.c: Add
- { dg-require-effective-target alloca }.
- * gcc.target/aarch64/stack-check-alloca-2.c: Likewise.
- * gcc.target/aarch64/stack-check-alloca-3.c: Likewise.
- * gcc.target/aarch64/stack-check-alloca-4.c: Likewise.
- * gcc.target/aarch64/stack-check-alloca-5.c: Likewise.
- * gcc.target/aarch64/stack-check-alloca-6.c: Likewise.
- * gcc.target/aarch64/stack-check-alloca-7.c: Likewise.
- * gcc.target/aarch64/stack-check-alloca-8.c: Likewise.
- * gcc.target/aarch64/stack-check-alloca-9.c: Likewise.
- * gcc.target/aarch64/stack-check-alloca-10.c: Likewise.
-
-2020-01-08 Martin Liska <mliska@suse.cz>
-
- * gcc.dg/ipa/ipa-icf-1.c: Update expected scanned output.
- * gcc.dg/ipa/ipa-icf-10.c: Likewise.
- * gcc.dg/ipa/ipa-icf-11.c: Likewise.
- * gcc.dg/ipa/ipa-icf-12.c: Likewise.
- * gcc.dg/ipa/ipa-icf-13.c: Likewise.
- * gcc.dg/ipa/ipa-icf-16.c: Likewise.
- * gcc.dg/ipa/ipa-icf-18.c: Likewise.
- * gcc.dg/ipa/ipa-icf-2.c: Likewise.
- * gcc.dg/ipa/ipa-icf-20.c: Likewise.
- * gcc.dg/ipa/ipa-icf-21.c: Likewise.
- * gcc.dg/ipa/ipa-icf-23.c: Likewise.
- * gcc.dg/ipa/ipa-icf-25.c: Likewise.
- * gcc.dg/ipa/ipa-icf-26.c: Likewise.
- * gcc.dg/ipa/ipa-icf-27.c: Likewise.
- * gcc.dg/ipa/ipa-icf-3.c: Likewise.
- * gcc.dg/ipa/ipa-icf-35.c: Likewise.
- * gcc.dg/ipa/ipa-icf-36.c: Likewise.
- * gcc.dg/ipa/ipa-icf-37.c: Likewise.
- * gcc.dg/ipa/ipa-icf-38.c: Likewise.
- * gcc.dg/ipa/ipa-icf-5.c: Likewise.
- * gcc.dg/ipa/ipa-icf-7.c: Likewise.
- * gcc.dg/ipa/ipa-icf-8.c: Likewise.
- * gcc.dg/ipa/ipa-icf-merge-1.c: Likewise.
- * gcc.dg/ipa/pr64307.c: Likewise.
- * gcc.dg/ipa/pr90555.c: Likewise.
- * gcc.dg/ipa/propmalloc-1.c: Likewise.
- * gcc.dg/ipa/propmalloc-2.c: Likewise.
- * gcc.dg/ipa/propmalloc-3.c: Likewise.
-
-2020-01-08 Richard Biener <rguenther@suse.de>
-
- PR testsuite/92997
-
-2020-01-08 Richard Earnshaw <rearnsha@arm.com>
-
- PR target/93188
- * gcc.target/arm/multilib.exp: Add new tests for rm-profile only.
-
-2020-01-08 Feng Xue <fxue@os.amperecomputing.com>
-
- PR ipa/93084
- * gcc.dg/ipa/ipa-clone-3.c: New test.
-
-2020-01-07 Paolo Carlini <paolo.carlini@oracle.com>
-
- * g++.old-deja/g++.bugs/900208_03.C: Check locations too.
- * g++.old-deja/g++.bugs/900519_06.C: Likewise.
-
-2020-01-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
-
- * gcc.dg/vect/vect-epilogues.c: XFAIL for arm big endian.
-
-2020-01-07 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/pcs/asm_4.c: New test.
-
-2020-01-07 Richard Sandiford <richard.sandiford@arm.com>
-
- * g++.target/aarch64/sve/acle/general-c++/mangle_5.C: New test.
- * gcc.target/aarch64/sve/pcs/asm_1.c: Likewise.
- * gcc.target/aarch64/sve/pcs/asm_2.c: Likewise.
- * gcc.target/aarch64/sve/pcs/asm_3.c: Likewise.
-
-2020-01-07 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/93156
- * gcc.dg/tree-ssa/pr93156.c: New test.
-
- PR tree-optimization/93118
- * gcc.dg/tree-ssa/pr93118.c: New test.
-
-2020-01-07 Martin Liska <mliska@suse.cz>
-
- PR tree-optimization/92860
- * gcc.dg/pr92860-2.c: New test.
-
-2020-01-07 Martin Liska <mliska@suse.cz>
-
- PR tree-optimization/92860
- * gcc.dg/pr92860.c: New test.
-
-2020-01-07 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/91369
- * g++.dg/cpp1y/constexpr-new.C: Expect an error explaining why
- static_assert failed for C++2a.
- * g++.dg/cpp2a/constexpr-new9.C: New test.
-
-2020-01-06 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/asrdiv_1.c: Remove trailing %s.
- * gcc.target/aarch64/sve/asrdiv_2.c: New test.
- * gcc.target/aarch64/sve/asrdiv_3.c: Likewise.
-
-2020-01-06 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.dg/vect/vect-cond-arith-8.c: New test.
- * gcc.target/aarch64/sve/cond_fmul_5.c: Likewise.
-
-2020-01-06 Nathan Sidwell <nathan@acm.org>
-
- PR c++/79592
- * g++.dg/ubsan/vptr-4.C: Add expected error.
-
-2020-01-06 Richard Sandiford <richard.sandiford@arm.com>
-
- * gcc.target/aarch64/sve/acle/general/cpy_1.c: New test.
-
-2020-01-05 Andrew Pinski <apinski@marvell.com>
-
- * gcc.c-torture/compile/20200105-1.c: New testcase.
- * gcc.c-torture/compile/20200105-2.c: New testcase.
- * gcc.c-torture/compile/20200105-3.c: New testcase.
-
-2020-01-05 Iain Sandoe <iain@sandoe.co.uk>
-
- * gcc.dg/darwin-version-1.c: Adjust test to use different
- options for Darwin4-9 and Darwin10+.
-
-2020-01-05 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93141
- * gcc.target/i386/pr93141-1.c: New test.
- * gcc.dg/pr67089-6.c: Expect 16 ADD_OVERFLOW calls even on ia32.
-
- PR c++/93138
- * g++.dg/warn/Wredundant-tags-2.C: New test.
-
- PR c++/93046
- * g++.dg/ext/cond4.C: New test.
-
-2020-01-04 Tobias Burnus <tobias@codesourcery.com>
-
- PR fortran/91640
- * gfortran.dg/contiguous_10.f90: New.
-
-2020-01-03 Iain Sandoe <iain@sandoe.co.uk>
-
- * gcc.target/i386/avx512bw-pr92686-vpcmp-intelasm-1.c: Require
- effective target masm_intel.
- * gcc.target/i386/avx512vl-pr92686-vpcmp-intelasm-1.c: Likewise.
-
-2020-01-03 Jakub Jelinek <jakub@redhat.com>
-
- PR target/93089
- * gcc.target/i386/pr93089-2.c: New test.
- * gcc.target/i386/pr93089-3.c: New test.
-
- PR target/93089
- * gcc.target/i386/pr93089-1.c: New test.
-
- PR target/93110
- * gcc.dg/torture/pr93110.c: New test.
-
- PR rtl-optimization/93088
- * gcc.target/i386/pr93088.c: New test.
+ * g++.dg/warn/miss-format-1.C: Remove vxworks-specific test
+ directives.
-2020-01-03 Tobias Burnus <tobias@codesourcery.com>
+2021-01-01 Jerome Lambourg <lambourg@adacore.com>
- PR fortran/92994
- * gfortran.dg/associate_50.f90: Update dg-error.
- * gfortran.dg/associate_51.f90: New.
+ * g++.dg/tree-ssa/copyprop.C: Undefine ERROR if defined.
-2020-01-03 Jakub Jelinek <jakub@redhat.com>
+2021-01-01 Jerome Lambourg <lambourg@adacore.com>
- PR fortran/68020
- * gfortran.dg/impled_shape_5.f90: Use dg-do compile rather than dg-do
- run.
+ * g++.dg/other/anon5.C: Skip on vxworks kernel.
-2020-01-02 Andrew Pinski <apinski@marvell.com>
+2021-01-01 Jerome Lambourg <lambourg@adacore.com>
- * gcc.c-torture/execute/bitfld-8.c: New testcase.
- * gcc.c-torture/execute/bitfld-9.c: New testcase.
+ * gcc.dg/vxworks/initpri1.c: Tigthen VxWorks version check.
+ * gcc.dg/vxworks/initpri2.c: Likewise.
-2020-01-02 Jakub Jelinek <jakub@redhat.com>
+2021-01-01 Joel Brobecker <brobecker@adacore.com>
- PR c/90677
- * c-c++-common/pr90677-2.c: New test.
+ * gcc.dg/intmax_t-1.c: Do not expect an error on *-*-vxworks7r*
+ targets.
-2020-01-02 Dennis Zhang <dennis.zhang@arm.com>
+2021-01-01 Olivier Hainque <hainque@adacore.com>
- * gcc.target/arm/multilib.exp: Add combination tests for armv8.6-a.
+ * gcc.dg/pthread-init-1.c: Fix the VxWorks xfail filters.
+ * gcc.dg/pthread-init-2.c: Ditto.
-2020-01-02 Tobias Burnus <tobias@codesourcery.com>
+2021-01-01 Olivier Hainque <hainque@adacore.com>
- PR fortran/68020
- * gfortran.dg/implied_shape_4.f90: New.
- * gfortran.dg/implied_shape_5.f90: New.
+ * lib/target-supports.exp (check_weak_available,
+ check_fork_available, check_effective_target_lto,
+ check_effective_target_mempcpy): Add vxworks filters.
-2020-01-02 Jakub Jelinek <jakub@redhat.com>
+2021-01-01 Alexandre Oliva <oliva@adacore.com>
- PR ipa/93087
- * c-c++-common/cold-1.c: New test.
+ * gcc.target/arm/mve/intrinsics/mve_libcall1.c: Pass an
+ explicit -mno-long-calls.
+ * gcc.target/arm/mve/intrinsics/mve_libcall2.c: Likewise.
-2020-01-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+2021-01-01 Alexandre Oliva <oliva@adacore.com>
- PR libfortran/90374
- * gfortran.dg/fmt_zero_width.f90: Update test case.
+ * g++.target/arm/no_unique_address_1.C: Add -mno-long-calls.
+ * g++.target/arm/no_unique_address_2.C: Likewise.
-2020-01-01 Thomas Koenig <tkoenig@gcc.gnu.org>
+2021-01-01 Alexandre Oliva <oliva@adacore.com>
- PR fortran/93113
- * gfortran.dg/dependency_58.f90: New test.
+ * gcc.target/arm/headmerge-1.c: Add -mno-long-calls.
+ * gcc.target/arm/headmerge-2.c: Likewise.
-2020-01-01 Jakub Jelinek <jakub@redhat.com>
+2021-01-01 Alexandre Oliva <oliva@adacore.com>
- Update copyright years.
+ * gcc.target/arm/fp16-aapcs-2.c: Use -mno-long-calls.
- PR tree-optimization/93098
- * gcc.c-torture/compile/pr93098.c: New test.
-Copyright (C) 2020 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gcc/testsuite/ChangeLog-2020 b/gcc/testsuite/ChangeLog-2020
new file mode 100644
index 0000000..31879d2
--- /dev/null
+++ b/gcc/testsuite/ChangeLog-2020
@@ -0,0 +1,29084 @@
+2020-12-31 Jakub Jelinek <jakub@redhat.com>
+
+ PR testsuite/98489
+ PR tree-optimization/56719
+ * gcc.dg/tree-ssa/pr56719.c: Remove semicolon from
+ scan-tree-dump-times regexps.
+
+2020-12-31 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR tree-optimization/98302
+ * gcc.dg/vect/pr98302.c: New test.
+
+2020-12-31 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR tree-optimization/94994
+ * gcc.dg/vect/pr94994.c: New test.
+
+2020-12-31 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR rtl-optimization/98214
+ * gcc.target/aarch64/sve/pr98214.c: New file.
+
+2020-12-31 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/94802
+ * gcc.dg/tree-ssa/pr94802-1.c: New test.
+
+2020-12-31 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/94785
+ * gcc.dg/tree-ssa/pr94785.c: New test.
+
+2020-12-31 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/98474
+ * gcc.c-torture/execute/pr98474.c: New test.
+
+2020-12-31 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/98206
+ * g++.dg/ubsan/align-4.C: New test.
+
+2020-12-31 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56719
+ * gcc.dg/tree-ssa/pr56719.c: New test.
+
+2020-12-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/98461
+ * gcc.target/i386/sse2-pr98461.c: New test.
+ * gcc.target/i386/avx2-pr98461.c: New test.
+
+2020-12-29 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/97612
+ * gfortran.dg/structure_constructor_17.f90: New test.
+
+2020-12-29 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/93833
+ * gfortran.dg/deferred_character_36.f90 : New test.
+
+2020-12-29 Claudiu Zissulescu <claziss@synopsys.com>
+
+ * gcc.target/arc/loop-3.c: Update test pattern.
+
+2020-12-29 Vladimir Isaev <isaev@synopsys.com>
+
+ * gcc.target/arc/uncached-9.c: New test.
+
+2020-12-28 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/96793
+ * gcc.target/i386/pr96793-2.c: New test.
+
+2020-12-28 Hongyu Wang <hongyu.wang@intel.com>
+
+ * gcc.target/i386/pr92658-avx2-2.c: New test.
+ * gcc.target/i386/pr92658-avx512bw-2.c: Likewise.
+ * gcc.target/i386/pr92658-sse4-2.c: Likewise.
+
+2020-12-27 Jeff Law <law@redhat.com>
+
+ * gcc.dg/tree-ssa/asm-2.c: Use different register for iq2000.
+ * gcc.dg/tree-ssa/asm-3.c: Likewise.
+
+2020-12-27 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/97694
+ PR fortran/97723
+ * gfortran.dg/select_rank_5.f90: New test.
+
+2020-12-26 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/96045
+ * obj-c++.dg/property/property-neg-6.mm: Adjust EOF
+ diagnostic location.
+ * obj-c++.dg/syntax-error-10.mm: Likewise.
+ * obj-c++.dg/syntax-error-8.mm: Likewise.
+ * obj-c++.dg/syntax-error-9.mm: Likewise.
+
+2020-12-26 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/98022
+ * gfortran.dg/data_inquiry_ref.f90: Change to dg-compile and
+ add errors for inquiry references.
+
+2020-12-25 Harald Anlauf <anlauf@gmx.de>
+
+ * gfortran.dg/pr93685_1.f90: New test.
+ * gfortran.dg/pr93685_2.f90: New test.
+
+2020-12-23 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/98160
+ * g++.dg/warn/pr98160.C: New test.
+
+2020-12-23 Martin Sebor <msebor@redhat.com>
+
+ PR c++/98413
+ * g++.dg/warn/pr98413.C: New test.
+
+2020-12-23 Joel Brobecker <brobecker@adacore.com>
+
+ * 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-23 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/96045
+ * 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-23 Jason Merrill <jason@redhat.com>
+
+ PR c++/97597
+ * g++.dg/init/empty3.C: New test.
+
+2020-12-23 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/constexpr-overflow3.C: Use INT_MAX.
+
+2020-12-23 Jason Merrill <jason@redhat.com>
+
+ PR c++/98332
+ * g++.dg/cpp0x/constexpr-overflow3.C: New test.
+
+2020-12-23 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/98427
+ * gdc.dg/pr98427.d: New test.
+
+2020-12-23 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/96793
+ * gcc.target/i386/pr96793-1.c: New test.
+
+2020-12-22 Nathan Sidwell <nathan@acm.org>
+
+ * 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-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/93480
+ * g++.dg/cpp2a/spaceship-synth10.C: New test.
+ * g++.dg/cpp2a/spaceship-synth-neg5.C: New test.
+
+2020-12-22 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/96793
+ * gcc.target/i386/pr96793.c: New test.
+
+2020-12-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/98353
+ * g++.dg/opt/pr98353.C: New test.
+
+2020-12-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/98407
+ * gcc.c-torture/compile/pr98407.c: New test.
+
+2020-12-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/98383
+ * g++.dg/gomp/pr98383.C: New test.
+
+2020-12-20 Max Filippov <jcmvbkbc@gmail.com>
+
+ * gcc.target/xtensa/bswap.c: New test.
+
+2020-12-20 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ * gfortran.dg/coarray/send_char_array_1.f90: Correct coarray
+ indces.
+
+2020-12-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/98366
+ * gcc.c-torture/execute/pr98366.c: New test.
+
+2020-12-19 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/98067
+ * gdc.dg/debug/debug.exp: New test.
+ * gdc.dg/debug/dwarf2/dwarf2.exp: New test.
+ * gdc.dg/debug/dwarf2/imports/pr98067.d: New test.
+ * gdc.dg/debug/dwarf2/langdw2.d: New test.
+ * gdc.dg/debug/dwarf2/langdw3.d: New test.
+ * gdc.dg/debug/dwarf2/pr98067.d: New test.
+ * gdc.dg/debug/trivial.d: New test.
+
+2020-12-18 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr97750.c: Remove check for warning.
+
+2020-12-18 Kwok Cheung Yeung <kcy@codesourcery.com>
+
+ * g++.dg/gomp/declare-target-3.C: Only check .offload_var_table
+ entries if offloading is enabled.
+
+2020-12-18 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
+
+ PR target/98177
+ * g++.target/aarch64/sve/pr98177-1.C: New test.
+ * g++.target/aarch64/sve/pr98177-2.C: New test.
+ * gcc.target/aarch64/sve/pr98177-1.c: New test.
+ * gcc.target/aarch64/sve/pr98177-2.c: New test.
+
+2020-12-18 Kwok Cheung Yeung <kcy@codesourcery.com>
+
+ * g++.dg/gomp/declare-target-3.C: New.
+
+2020-12-18 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/83118
+ PR fortran/96012
+ * gfortran.dg/dependency_60.f90: New test.
+ * gfortran.dg/class_allocate_25.f90: New test.
+ * gfortran.dg/class_assign_4.f90: New test.
+ * gfortran.dg/unlimited_polymorphic_32.f03: New test.
+
+2020-12-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/98343
+ * g++.dg/pch/pr98343.C: New test.
+ * g++.dg/pch/pr98343.Hs: New file.
+
+2020-12-18 Ian Lance Taylor <iant@golang.org>
+
+ * go.test/go-test.exp (go-set-goos): New procedure.
+ (go-gc-match): New procedure.
+ (go-gc-tests): Call go-set-goos. Use go-gc-match to handle +build
+ lines. Look for +build lines beyond first line of file.
+
+2020-12-18 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/96840
+ * g++.dg/cpp2a/concepts-pr88395.C: Adjust to expect the
+ self-recursive satisfaction to get directly diagnosed.
+ * g++.dg/cpp2a/concepts-recursive-sat2.C: Likewise.
+ * g++.dg/cpp2a/concepts-recursive-sat4.C: New test.
+
+2020-12-18 Patrick Palka <ppalka@redhat.com>
+
+ * g++.dg/cpp2a/concepts-complete1.C: New test.
+ * g++.dg/cpp2a/concepts-complete2.C: New test.
+ * g++.dg/cpp2a/concepts-complete3.C: New test.
+
+2020-12-17 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr97750.c: New.
+
+2020-12-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/98289
+ * gcc.target/i386/pr98289.c: New test.
+ * gcc.dg/torture/pr98289.c: New test.
+
+2020-12-17 Arnaud Charlet <charlet@adacore.com>
+
+ * gnat.dg/debug15.adb: Remove fragile testcase.
+
+2020-12-17 Yannick Moy <moy@adacore.com>
+
+ * gnat.dg/interface6.adb, gnat.dg/not_null.adb,
+ gnat.dg/protected_func.adb: Adjust error messages.
+
+2020-12-17 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/92587
+ * gfortran.dg/finalize_37.f90: New test.
+
+2020-12-17 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/98307
+ * gfortran.dg/forall_19.f90: New test.
+
+2020-12-17 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
+
+ * gcc.target/xtensa/shifts.c: New test.
+
+2020-12-17 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/rtl/x86_64/test-return-const.c.before-fwprop.c: Don't
+ expect insn updates to be deferred.
+ * gcc.target/aarch64/sve/acle/asm/st4_s8.c: Expect the addition
+ to be folded into the address.
+ * gcc.target/aarch64/sve/acle/asm/st4_u8.c: Likewise.
+
+2020-12-16 Martin Uecker <muecker@gwdg.de>
+
+ PR c/98047
+ * gcc.dg/qual-assign-7.c: New test.
+
+2020-12-16 Martin Uecker <muecker@gwdg.de>
+
+ PR c/98260
+ * gcc.dg/unused-9.c: New test.
+
+2020-12-16 David Edelsohn <dje.gcc@gmail.com>
+
+ PR target/98280
+ * gcc.target/powerpc/fold-vec-logical-ors-char.c: Adjust count.
+ * gcc.target/powerpc/fold-vec-logical-ors-int.c: Adjust count.
+ * gcc.target/powerpc/fold-vec-logical-ors-longlong.c: Adjust count.
+ * gcc.target/powerpc/fold-vec-logical-ors-short.c: Adjust count.
+ * gcc.target/powerpc/fold-vec-logical-other-char.c: Adjust count.
+ * gcc.target/powerpc/fold-vec-logical-other-int.c: Adjust count.
+ * gcc.target/powerpc/fold-vec-logical-other-longlong.c: Adjust count.
+ * gcc.target/powerpc/fold-vec-logical-other-short.c: Adjust count.
+
+2020-12-16 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/template/pr98297.C: New.
+
+2020-12-16 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/98284
+ * gfortran.dg/pr98284.f90: New test.
+
+2020-12-16 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/98146
+ * lib/target-supports.exp
+ (check_effective_target_R_flag_in_section): Also check
+ HAVE_INITFINI_ARRAY_SUPPORT != 0.
+
+2020-12-16 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/98146
+ * c-c++-common/attr-used-5.c: Updated.
+ * c-c++-common/attr-used-6.c: Likewise.
+ * c-c++-common/attr-used-7.c: Likewise.
+ * c-c++-common/attr-used-8.c: Likewise.
+
+2020-12-16 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/98146
+ * c-c++-common/attr-used-5.c: New test.
+ * c-c++-common/attr-used-6.c: Likewise.
+ * c-c++-common/attr-used-7.c: Likewise.
+ * c-c++-common/attr-used-8.c: Likewise.
+ * c-c++-common/attr-used-9.c: Likewise.
+
+2020-12-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/96239
+ * gcc.dg/pr96239.c: New test.
+
+2020-12-16 Martin Liska <mliska@suse.cz>
+
+ PR sanitizer/97868
+ * gcc.dg/tsan/atomic-fence.c: New test.
+
+2020-12-16 Martin Liska <mliska@suse.cz>
+
+ PR rtl-optimization/98271
+ PR rtl-optimization/98276
+ PR tree-optimization/98279
+ * gcc.dg/pr98271.c: New test.
+
+2020-12-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/pr98272.c: New test.
+
+2020-12-16 Kewen Lin <linkw@linux.ibm.com>
+
+ * gcc.target/powerpc/pr96933-1.c: Adjusted to check no rlwinm.
+ * gcc.target/powerpc/pr96933-2.c: Likewise.
+
+2020-12-15 Marek Polacek <polacek@redhat.com>
+
+ * g++.dg/cpp0x/constexpr-52830.C: Remove dg-ice.
+
+2020-12-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/96094
+ * gcc.dg/tree-ssa/pr96094.c: New test.
+
+2020-12-15 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/98277
+ * gdc.dg/pr98277.d: New test.
+
+2020-12-15 Patrick Palka <ppalka@redhat.com>
+
+ * g++.dg/cpp2a/concepts-requires23.C: New test.
+
+2020-12-15 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/modules/mod-decl-0-2a.C: New.
+ * g++.dg/modules/mod-decl-0.C: New.
+ * g++.dg/modules/mod-decl-1.C: New.
+ * g++.dg/modules/mod-decl-2_a.C: New.
+ * g++.dg/modules/mod-decl-2_b.C: New.
+ * g++.dg/modules/mod-decl-2_c.C: New.
+ * g++.dg/modules/mod-decl-3.C: New.
+ * g++.dg/modules/mod-decl-5_a.C: New.
+ * g++.dg/modules/mod-decl-5_b.C: New.
+
+2020-12-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/98274
+ * gcc.target/i386/pr98274.c: New test.
+
+2020-12-15 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.target/i386/x86-64-v2.c: Don't expect
+ __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 to be defined with -m32.
+ * gcc.target/i386/x86-64-v2-other.c: New test.
+ * gcc.target/i386/x86-64-v2-msabi.c: New test.
+ * gcc.target/i386/x86-64-v3.c: Fix a comment pasto. Don't expect
+ __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 to be defined with -m32.
+ * gcc.target/i386/x86-64-v3-other.c: New test.
+ * gcc.target/i386/x86-64-v3-msabi.c: New test.
+ * gcc.target/i386/x86-64-v4.c:Don't expect
+ __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 to be defined with -m32.
+ * gcc.target/i386/x86-64-v4-other.c: New test.
+ * gcc.target/i386/x86-64-v4-msabi.c: New test.
+
+2020-12-15 Max Filippov <jcmvbkbc@gmail.com>
+
+ * gcc.target/xtensa/pr98285.c: New test.
+
+2020-12-15 Ian Lance Taylor <iant@golang.org>
+
+ * go.test/go-test.exp (errchk): Retain any characters at the end
+ of the comment.
+
+2020-12-15 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/pr78102.c: Adjust testcase.
+
+2020-12-14 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/98166
+ PR c++/57111
+ PR middle-end/98160
+ * g++.dg/warn/Wmismatched-dealloc-2.C: Adjust test of expected warning.
+ * g++.dg/warn/Wmismatched-new-delete.C: Same.
+ * gcc.dg/Wmismatched-dealloc.c: Same.
+ * c-c++-common/Wfree-nonheap-object-2.c: New test.
+ * c-c++-common/Wfree-nonheap-object-3.c: New test.
+ * c-c++-common/Wfree-nonheap-object.c: New test.
+ * c-c++-common/Wmismatched-dealloc.c: New test.
+ * g++.dg/warn/Wfree-nonheap-object-3.C: New test.
+ * g++.dg/warn/Wfree-nonheap-object-4.C: New test.
+ * g++.dg/warn/Wmismatched-dealloc-2.C: New test.
+ * g++.dg/warn/Wmismatched-new-delete-2.C: New test.
+ * g++.dg/warn/Wmismatched-new-delete.C: New test.
+ * gcc.dg/Wmismatched-dealloc-2.c: New test.
+ * gcc.dg/Wmismatched-dealloc-3.c: New test.
+ * gcc.dg/Wmismatched-dealloc.c: New test.
+
+2020-12-14 Wilco Dijkstra <wdijkstr@arm.com>
+
+ * lib/target-supports.exp (check_effective_target_tune_cortex_a76): New
+ effective target test.
+ * gcc.target/aarch64/with-tune-config.c: New test.
+ * gcc.target/aarch64/with-tune-march.c: Likewise.
+ * gcc.target/aarch64/with-tune-mcpu.c: Likewise.
+ * gcc.target/aarch64/with-tune-mtune.c: Likewise.
+
+2020-12-14 Tamar Christina <tamar.christina@arm.com>
+
+ PR middle-end/98264
+ * gcc.target/i386/pr98264.c: New test.
+
+2020-12-14 Ilya Leoshkevich <iii@linux.ibm.com>
+
+ * lib/target-supports.exp(check_profiling_available): Limit
+ perf data buffer.
+
+2020-12-14 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/simd/mve-vneg.c: Add tests for vneg.
+
+2020-12-14 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/simd/mve-vmvn.c: Add tests for vmvn.
+
+2020-12-14 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/simd/mve-vbic.c: Add tests for vbic.
+
+2020-12-14 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/simd/mve-veor.c: Add tests for veor.
+
+2020-12-14 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/vect-half-floats.c: Fix typos.
+
+2020-12-14 Martin Liska <mliska@suse.cz>
+
+ PR sanitizer/98204
+ * c-c++-common/asan/pr98204.c: New test.
+
+2020-12-14 Nikhil Benesch <nikhil.benesch@gmail.com>
+
+ * gcc.misc-tests/godump-1.c: Add test cases.
+
+2020-12-13 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * gcc.target/vax/push.c: New test.
+
+2020-12-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/98256
+ * gcc.c-torture/compile/pr98256.c: New test.
+
+2020-12-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/92469
+ * gcc.target/i386/pr92469.c: New test.
+ * gcc.target/i386/pr79804.c: Adjust expected diagnostics.
+ * gcc.target/i386/pr88178.c: Expect an error.
+
+2020-12-13 Tamar Christina <tamar.christina@arm.com>
+
+ * gcc.target/arm/vect-half-floats.c: New test.
+
+2020-12-13 Tamar Christina <tamar.christina@arm.com>
+
+ * lib/target-supports.exp
+ (check_effective_target_arm_v8_3a_complex_neon_ok_nocache): Fix it.
+ (check_effective_target_vect_complex_add_byte
+ ,check_effective_target_vect_complex_add_int
+ ,check_effective_target_vect_complex_add_short
+ ,check_effective_target_vect_complex_add_long
+ ,check_effective_target_vect_complex_add_half
+ ,check_effective_target_vect_complex_add_float
+ ,check_effective_target_vect_complex_add_double): New.
+ * gcc.dg/vect/complex/bb-slp-complex-add-pattern-byte.c: New test.
+ * gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c: New test.
+ * gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c: New test.
+ * gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c: New test.
+ * gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-byte.c: New test.
+ * gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c: New test.
+ * gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c: New test.
+ * gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c: New test.
+ * gcc.dg/vect/complex/complex-add-pattern-template.c: New test.
+ * gcc.dg/vect/complex/complex-add-template.c: New test.
+ * gcc.dg/vect/complex/complex-operations-run.c: New test.
+ * gcc.dg/vect/complex/complex-operations.c: New test.
+ * gcc.dg/vect/complex/complex.exp: New test.
+ * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c: New test.
+ * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c: New test.
+ * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-complex-add-double.c: New test.
+ * gcc.dg/vect/complex/fast-math-complex-add-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-complex-add-half-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c: New test.
+ * gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c: New test.
+ * gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c: New test.
+ * gcc.dg/vect/complex/vect-complex-add-pattern-byte.c: New test.
+ * gcc.dg/vect/complex/vect-complex-add-pattern-int.c: New test.
+ * gcc.dg/vect/complex/vect-complex-add-pattern-long.c: New test.
+ * gcc.dg/vect/complex/vect-complex-add-pattern-short.c: New test.
+ * gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c: New test.
+ * gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c: New test.
+ * gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c: New test.
+ * gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c: New test.
+
+2020-12-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * lib/scanasm.exp (scan-symbol-section): Pass args to
+ dg-scan-symbol-section.
+ (scan-assembler-symbol-section): Likewise.
+ (dg-scan-symbol-section): Handle selector from orig_args.
+ Get patterns from orig_args.
+ (parse_section_of_symbols): Fix section_pattern.
+ Strip double quotes from section name.
+ * g++.dg/gomp/tls-5.C: Restrict ir, _ZGR2ir_ scans to tls_native.
+ * gcc.dg/20021029-1.c: Anchor ar symbol.
+ * gcc.dg/darwin-sections.c: Remove obsolete scans for _a, _b in
+ .data.
+
+2020-12-12 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/98022
+ * gfortran.dg/data_inquiry_ref.f90: New test.
+
+2020-12-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/96685
+ * gcc.dg/tree-ssa/pr96685-1.c: New test.
+ * gcc.dg/tree-ssa/pr96685-2.c: New test.
+ * gcc.dg/tree-ssa/pr96685-3.c: New test.
+
+2020-12-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/96272
+ * gcc.dg/tree-ssa/pr96272.c: New test.
+
+2020-12-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/98183
+ * gcc.dg/gomp/pr98183.c: New test.
+ * gcc.dg/goacc/pr98183.c: New test.
+
+2020-12-11 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp2a/concepts-conv3.C: New test.
+ * g++.dg/cpp2a/concepts-conv3a.C: New file.
+
+2020-12-11 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/modules/modules.exp: New.
+
+2020-12-11 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/simd/mve-vorr.c: Add vorr tests.
+
+2020-12-11 Claudiu Zissulescu <claziss@synopsys.com>
+
+ * gcc.target/arc/pmpyd.c: New test.
+ * gcc.target/arc/tmac-1.c: Update.
+
+2020-12-11 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/98219
+ * gcc.dg/guality/pr98219-1.c: New test.
+ * gcc.dg/guality/pr98219-2.c: Likewise.
+ * gcc.dg/torture/pr98219-1.c: Likewise.
+ * gcc.dg/torture/pr98219-2.c: Likewise.
+ * gcc.target/i386/uintr-2.c: Scan "add[lq] $8, %[er]sp".
+ (uword_t): New.
+ (foo): Add a uword_t argument.
+ (UINTR_hanlder): Likewise.
+ * gcc.target/i386/uintr-3.c: Scan "add[lq] $8, %[er]sp".
+ (uword_t): New.
+ (UINTR_hanlder): Add a uword_t argument.
+ * gcc.target/i386/uintr-4.c (uword_t): New.
+ (UINTR_hanlder): Add a uword_t argument.
+ * gcc.target/i386/uintr-5.c (uword_t): New.
+ (UINTR_hanlder): Add a uword_t argument.
+
+2020-12-11 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/78173
+ * g++.dg/cpp2a/concepts-pr78173.C: New test.
+
+2020-12-11 Andrea Corallo <andrea.corallo@arm.com>
+
+ * lib/target-supports.exp (check_effective_target_arm_softfloat):
+ Improve documentation.
+
+2020-12-11 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/arm/lob2.c: Use '-march=armv8.1-m.main+fp'.
+ * gcc.target/arm/lob3.c: Skip with '-mfloat-abi=hard'.
+ * gcc.target/arm/lob4.c: Likewise.
+ * gcc.target/arm/lob5.c: Use '-march=armv8.1-m.main+fp'.
+
+2020-12-11 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/98244
+ * gcc.dg/vect/vect-live-6.c: Require vect_condition.
+
+2020-12-11 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/98242
+ * gcc.dg/vect/bb-slp-subgroups-3.c: Require vect_int_mult.
+
+2020-12-11 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/98240
+ * gcc.dg/vect/pr97678.c: Require vect_int_mult and
+ vect_pack_trunc.
+
+2020-12-11 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/98239
+ * gcc.dg/vect/bb-slp-69.c: Require vect_condition.
+
+2020-12-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/98229
+ * gcc.c-torture/compile/pr98229.c: New test.
+
+2020-12-11 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/98235
+ * gcc.dg/torture/pr98235.c: New testcase.
+
+2020-12-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/98190
+ * gcc.dg/pr98190.c: New test.
+
+2020-12-11 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/aarch64/sve/pr97092.c: New test.
+
+2020-12-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/98212
+ * gcc.dg/predict-8.c: Adjust expected probability.
+
+2020-12-10 Ed Schonberg <schonberg@adacore.com>
+
+ * gnat.dg/modular6.adb: New test.
+
+2020-12-10 Marek Polacek <polacek@redhat.com>
+
+ PR c++/91506
+ * g++.dg/init/array60.C: New test.
+
+2020-12-10 Dennis Zhang <denzha01@e124712.cambridge.arm.com>
+
+ * gcc.target/arm/simd/mve-vsub_1.c: Fix typo.
+ Remove needless dg-additional-options.
+
+2020-12-10 Marek Polacek <polacek@redhat.com>
+
+ PR c++/68451
+ * g++.dg/cpp0x/friend6.C: New test.
+
+2020-12-10 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/simd/mve-vand.c: New test.
+
+2020-12-10 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR tree-optimization/98069
+ * gcc.dg/vect/pr98069.c: New file.
+
+2020-12-10 Joel Hutton <joel.hutton@arm.com>
+
+ * gcc.dg/vect/pr97929.c: New test.
+
+2020-12-10 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/98211
+ * gcc.dg/pr98211.c: New testcase.
+
+2020-12-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/98212
+ * gcc.target/i386/pr98212.c: New test.
+
+2020-12-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/98169
+ * gcc.target/i386/pr98169.c: New test.
+
+2020-12-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/98205
+ * c-c++-common/gomp/doacross-4.c: New test.
+
+2020-12-10 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-div-1.c: Expect the load to be
+ vectorized.
+
+2020-12-10 Nikhil Benesch <nikhil.benesch@gmail.com>
+
+ * gcc.misc-tests/godump-1.c: Add test case.
+
+2020-12-10 Ian Lance Taylor <iant@golang.org>
+
+ * go.test/go-test.exp (go-gc-tests): Recognize errorcheckdir -n,
+ for bug345.go.
+
+2020-12-09 Ian Lance Taylor <iant@golang.org>
+
+ * go.test/go-test.exp (errchk): Rewrite regexp quoting to use
+ curly braces, making it much simpler.
+
+2020-12-09 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/98213
+ * g++.dg/pr98213.C: New testcase.
+
+2020-12-09 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97517
+ * g++.dg/diagnostic/nullptr.C: New test.
+
+2020-12-09 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/98182
+ * gcc.dg/tree-ssa/if-to-switch-1.c: Add case-values-threshold in
+ order to fix them for aarch64.
+ * gcc.dg/tree-ssa/if-to-switch-10.c: Likewise.
+
+2020-12-09 Ilya Leoshkevich <iii@linux.ibm.com>
+
+ * gcc.target/s390/zvector/autovec-double-signaling-eq.c: Build
+ with exceptions.
+ * gcc.target/s390/zvector/autovec-float-signaling-eq.c:
+ Likewise.
+
+2020-12-09 Tobias Burnus <tobias@codesourcery.com>
+
+ * c-c++-common/gomp/allocate-5.c: New test.
+
+2020-12-09 Richard Biener <rguenther@suse.de>
+
+ PR c/98200
+ * gcc.dg/gimplefe-error-8.c: New testcase.
+
+2020-12-09 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/reduction4.f90: Update scan-trees, add
+ lost testcase; move test with FE error to ...
+ * gfortran.dg/gomp/reduction5.f90: ... here.
+
+2020-12-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/98199
+ * gcc.c-torture/compile/pr98199.c: New test.
+
+2020-12-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/98193
+ * g++.dg/cpp2a/bit-cast7.C: New test.
+
+2020-12-09 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp2a/concepts-nodiscard1.C: Remove xfail.
+
+2020-12-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/59238
+ * g++.dg/cpp0x/new4.C: New test.
+
+2020-12-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/98191
+ * gcc.dg/torture/pr98191.c: Add dg-additional-options with
+ -w -Wno-psabi.
+
+2020-12-08 Marek Polacek <polacek@redhat.com>
+
+ PR c++/98103
+ * g++.dg/ubsan/vptr-18.C: New test.
+
+2020-12-08 Jason Merrill <jason@redhat.com>
+
+ PR c++/96299
+ * g++.dg/cpp2a/spaceship-synth-neg2.C: Move error.
+ * g++.dg/cpp2a/spaceship-p1186.C: New test.
+
+2020-12-08 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/98182
+ * gcc.dg/tree-ssa/if-to-switch-10.c: New test.
+ * gcc.dg/tree-ssa/pr98182.c: New test.
+
+2020-12-08 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/reduction4.f90: Update; move FE some tests to ...
+ * gfortran.dg/gomp/reduction6.f90: ... this new test and ...
+ * gfortran.dg/gomp/reduction7.f90: ... this new test.
+ * gfortran.dg/gomp/reduction5.f90: Add dg-error.
+ * gfortran.dg/gomp/scan-1.f90: New test.
+ * gfortran.dg/gomp/scan-2.f90: New test.
+ * gfortran.dg/gomp/scan-3.f90: New test.
+ * gfortran.dg/gomp/scan-4.f90: New test.
+ * gfortran.dg/gomp/scan-5.f90: New test.
+ * gfortran.dg/gomp/scan-6.f90: New test.
+ * gfortran.dg/gomp/scan-7.f90: New test.
+
+2020-12-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94440
+ * gcc.target/i386/pr94440-1.c: New file.
+ * gcc.target/i386/pr94440-2.c: New file.
+
+2020-12-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.target/i386/avx512vpopcntdq-pr97770-2.c: Require
+ avx512vpopcntdq support.
+ * gcc.target/i386/avx512vpopcntdqvl-pr97770-1.c: Require
+ avx512vpopcntdq, avx512vl support.
+
+2020-12-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.target/i386/pr98100.c: Require ifunc support.
+
+2020-12-08 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/95900
+ * gcc.dg/vect/bb-slp-pr95866.c: Require sse2 for the
+ BIT_FIELD_REF match.
+
+2020-12-08 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.target/i386/avx512dq-vandnpd-2.c (CALC): Use union
+ to avoid aliasing violations.
+ * gcc.target/i386/avx512dq-vandnps-2.c (CALC): Likewise.
+ * gcc.target/i386/avx512dq-vandpd-2.c (CALC): Likewise.
+ * gcc.target/i386/avx512dq-vandps-2.c (CALC): Likewise.
+ * gcc.target/i386/avx512dq-vorpd-2.c (CALC): Likewise.
+ * gcc.target/i386/avx512dq-vorps-2.c (CALC): Likewise.
+ * gcc.target/i386/avx512dq-vxorpd-2.c (CALC): Likewise.
+ * gcc.target/i386/avx512dq-vxorps-2.c (CALC): Likewise.
+
+2020-12-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/98187
+ * c-c++-common/gomp/pr98187.c: New test.
+
+2020-12-08 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/98191
+ * gcc.dg/torture/pr98191.c: New testcase.
+
+2020-12-08 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97559
+ * gcc.dg/torture/pr97559-1.c: New testcase.
+ * gcc.dg/torture/pr97559-2.c: Likewise.
+
+2020-12-08 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
+
+ PR target/97872
+ * gcc.target/arm/pr97872.c: New test.
+
+2020-12-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/96470
+ * gnat.dg/opt39.adb: Add dg-additional-options for PowerPC.
+
+2020-12-07 Martin Uecker <muecker@gwdg.de>
+
+ PR c/97981
+ * gcc.dg/pr97981.c: New test.
+ * gcc.dg/pr60195.c: Adapt test.
+
+2020-12-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/98147
+ * gcc.dg/pr98147.c: New test.
+
+2020-12-07 Marek Polacek <polacek@redhat.com>
+
+ PR c++/98043
+ * g++.dg/cpp0x/enum41.C: New test.
+
+2020-12-07 Ian Lance Taylor <iant@golang.org>
+
+ * go.test/go-test.exp (errchk): Don't backslash quote parentheses
+ that are already backslash quoted.
+
+2020-12-07 Marek Polacek <polacek@redhat.com>
+
+ PR c++/98126
+ * g++.dg/warn/Wsequence-point-4.C: New test.
+
+2020-12-07 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/98116
+ * g++.dg/template/pr98116.C: Remove dg-ice.
+ * g++.dg/template/pr98116-2.C: New.
+
+2020-12-07 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/98113
+ * gcc.dg/vect/bb-slp-70.c: New testcase.
+
+2020-12-07 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/98117
+ * gcc.dg/torture/pr98117.c: New testcase.
+
+2020-12-07 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ * gcc.target/s390/s390.exp: New target check s390_zarch.
+ * gcc.target/s390/stack-clash-1.c: Use s390_zarch instead of lp64.
+ * gcc.target/s390/stack-clash-2.c: Likewise.
+ * gcc.target/s390/stack-clash-3.c: Likewise.
+ * gcc.target/s390/stack-clash-5.c: New test.
+
+2020-12-07 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/98137
+ * gcc.dg/vect/bb-slp-pr98137.c: New testcase.
+
+2020-12-06 H.J. Lu <hjl.tools@gmail.com>
+
+ * gcc.target/i386/pr98161.c: New test.
+
+2020-12-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/96232
+ * gcc.dg/tree-ssa/pr96232-2.c: New test.
+ * gcc.dg/tree-ssa/pr88676-2.c: Check phiopt2 dump rather than phiopt1.
+
+2020-12-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/96232
+ * gcc.dg/tree-ssa/pr96232-1.c: New test.
+
+2020-12-06 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR testsuite/98156
+ * gfortran.dg/coarray/alloc_comp_1.f90: Upper cobound is
+ determined by num_images(), not this_image().
+
+2020-12-06 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/signbit-1.c: Reinstate lp64 condition.
+ * gcc.target/powerpc/signbit-2.c: Match 32-bit output too.
+
+2020-12-05 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/97093
+ * g++.dg/cpp2a/concepts-requires22.C: New test.
+
+2020-12-05 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/97093
+ * g++.dg/concepts/pr94252.C: Verify we no longer issue a
+ spurious unsatisfaction note when diagnosing ill-formed
+ satisfaction.
+ * g++.dg/cpp2a/concepts-requires18.C: No longer expect a
+ spurious unsatisfaction diagnostic when evaluating the
+ nested-requirement subst<void&> of a requires-expression that
+ appears outside of a template.
+ * g++.dg/cpp2a/concepts-requires21.C: Verify we no longer issue
+ a spurious unsatisfaction note when evaluating a
+ nested-requirement of a requires-expression that appears outside
+ of a template.
+ * g++.dg/cpp2a/concepts-nonbool3.C: New test.
+ * g++.dg/cpp2a/concepts-pr97093.C: New test.
+
+2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
+
+ PR target/95294
+ * gcc.target/vax/cmpelim-eq-adddf.c: New test.
+ * gcc.target/vax/cmpelim-eq-addhi.c: New test.
+ * gcc.target/vax/cmpelim-eq-addqi.c: New test.
+ * gcc.target/vax/cmpelim-eq-addsf.c: New test.
+ * gcc.target/vax/cmpelim-eq-addsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-andhi.c: New test.
+ * gcc.target/vax/cmpelim-eq-andqi.c: New test.
+ * gcc.target/vax/cmpelim-eq-andsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-ashlsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-ashrsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-divdf.c: New test.
+ * gcc.target/vax/cmpelim-eq-divhi.c: New test.
+ * gcc.target/vax/cmpelim-eq-divqi.c: New test.
+ * gcc.target/vax/cmpelim-eq-divsf.c: New test.
+ * gcc.target/vax/cmpelim-eq-divsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-extendhisi.c: New test.
+ * gcc.target/vax/cmpelim-eq-extendqisi.c: New test.
+ * gcc.target/vax/cmpelim-eq-extvsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-extzvsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-fixdfhi.c: New test.
+ * gcc.target/vax/cmpelim-eq-fixdfqi.c: New test.
+ * gcc.target/vax/cmpelim-eq-fixdfsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-fixsfhi.c: New test.
+ * gcc.target/vax/cmpelim-eq-fixsfqi.c: New test.
+ * gcc.target/vax/cmpelim-eq-fixsfsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-floatsisf.c: New test.
+ * gcc.target/vax/cmpelim-eq-insvsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-iorhi.c: New test.
+ * gcc.target/vax/cmpelim-eq-iorqi.c: New test.
+ * gcc.target/vax/cmpelim-eq-iorsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-mova.c: New test.
+ * gcc.target/vax/cmpelim-eq-movdf.c: New test.
+ * gcc.target/vax/cmpelim-eq-movhi.c: New test.
+ * gcc.target/vax/cmpelim-eq-movqi.c: New test.
+ * gcc.target/vax/cmpelim-eq-movsf.c: New test.
+ * gcc.target/vax/cmpelim-eq-movsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-muldf.c: New test.
+ * gcc.target/vax/cmpelim-eq-mulhi.c: New test.
+ * gcc.target/vax/cmpelim-eq-mulqi.c: New test.
+ * gcc.target/vax/cmpelim-eq-mulsf.c: New test.
+ * gcc.target/vax/cmpelim-eq-mulsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-nothi.c: New test.
+ * gcc.target/vax/cmpelim-eq-notqi.c: New test.
+ * gcc.target/vax/cmpelim-eq-notsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-rotlsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-rotrsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-subdf.c: New test.
+ * gcc.target/vax/cmpelim-eq-subhi.c: New test.
+ * gcc.target/vax/cmpelim-eq-subqi.c: New test.
+ * gcc.target/vax/cmpelim-eq-subsf.c: New test.
+ * gcc.target/vax/cmpelim-eq-subsi.c: New test.
+ * gcc.target/vax/cmpelim-eq-truncdfsf.c: New test.
+ * gcc.target/vax/cmpelim-eq-trunchiqi.c: New test.
+ * gcc.target/vax/cmpelim-eq-truncsihi.c: New test.
+ * gcc.target/vax/cmpelim-eq-truncsiqi.c: New test.
+ * gcc.target/vax/cmpelim-eq-zextendhisi.c: New test.
+ * gcc.target/vax/cmpelim-eq-zextendqihi.c: New test.
+ * gcc.target/vax/cmpelim-eq-zextendqisi.c: New test.
+ * gcc.target/vax/cmpelim-le-adddf.c: New test.
+ * gcc.target/vax/cmpelim-le-addhi.c: New test.
+ * gcc.target/vax/cmpelim-le-addqi.c: New test.
+ * gcc.target/vax/cmpelim-le-addsf.c: New test.
+ * gcc.target/vax/cmpelim-le-addsi.c: New test.
+ * gcc.target/vax/cmpelim-le-andhi.c: New test.
+ * gcc.target/vax/cmpelim-le-andqi.c: New test.
+ * gcc.target/vax/cmpelim-le-andsi.c: New test.
+ * gcc.target/vax/cmpelim-le-ashlsi.c: New test.
+ * gcc.target/vax/cmpelim-le-ashrsi.c: New test.
+ * gcc.target/vax/cmpelim-le-divdf.c: New test.
+ * gcc.target/vax/cmpelim-le-divhi.c: New test.
+ * gcc.target/vax/cmpelim-le-divqi.c: New test.
+ * gcc.target/vax/cmpelim-le-divsf.c: New test.
+ * gcc.target/vax/cmpelim-le-divsi.c: New test.
+ * gcc.target/vax/cmpelim-le-extendhisi.c: New test.
+ * gcc.target/vax/cmpelim-le-extendqisi.c: New test.
+ * gcc.target/vax/cmpelim-le-extvsi.c: New test.
+ * gcc.target/vax/cmpelim-le-extzvsi.c: New test.
+ * gcc.target/vax/cmpelim-le-fixdfhi.c: New test.
+ * gcc.target/vax/cmpelim-le-fixdfqi.c: New test.
+ * gcc.target/vax/cmpelim-le-fixdfsi.c: New test.
+ * gcc.target/vax/cmpelim-le-fixsfhi.c: New test.
+ * gcc.target/vax/cmpelim-le-fixsfqi.c: New test.
+ * gcc.target/vax/cmpelim-le-fixsfsi.c: New test.
+ * gcc.target/vax/cmpelim-le-floatsisf.c: New test.
+ * gcc.target/vax/cmpelim-le-insvsi.c: New test.
+ * gcc.target/vax/cmpelim-le-iorhi.c: New test.
+ * gcc.target/vax/cmpelim-le-iorqi.c: New test.
+ * gcc.target/vax/cmpelim-le-iorsi.c: New test.
+ * gcc.target/vax/cmpelim-le-movdf.c: New test.
+ * gcc.target/vax/cmpelim-le-movhi.c: New test.
+ * gcc.target/vax/cmpelim-le-movqi.c: New test.
+ * gcc.target/vax/cmpelim-le-movsf.c: New test.
+ * gcc.target/vax/cmpelim-le-movsi.c: New test.
+ * gcc.target/vax/cmpelim-le-muldf.c: New test.
+ * gcc.target/vax/cmpelim-le-mulhi.c: New test.
+ * gcc.target/vax/cmpelim-le-mulqi.c: New test.
+ * gcc.target/vax/cmpelim-le-mulsf.c: New test.
+ * gcc.target/vax/cmpelim-le-mulsi.c: New test.
+ * gcc.target/vax/cmpelim-le-nothi.c: New test.
+ * gcc.target/vax/cmpelim-le-notqi.c: New test.
+ * gcc.target/vax/cmpelim-le-notsi.c: New test.
+ * gcc.target/vax/cmpelim-le-rotlsi.c: New test.
+ * gcc.target/vax/cmpelim-le-rotrsi.c: New test.
+ * gcc.target/vax/cmpelim-le-subdf.c: New test.
+ * gcc.target/vax/cmpelim-le-subhi.c: New test.
+ * gcc.target/vax/cmpelim-le-subqi.c: New test.
+ * gcc.target/vax/cmpelim-le-subsf.c: New test.
+ * gcc.target/vax/cmpelim-le-subsi.c: New test.
+ * gcc.target/vax/cmpelim-le-truncdfsf.c: New test.
+ * gcc.target/vax/cmpelim-le-xorhi.c: New test.
+ * gcc.target/vax/cmpelim-le-xorqi.c: New test.
+ * gcc.target/vax/cmpelim-le-xorsi.c: New test.
+ * gcc.target/vax/cmpelim-leu-subhi.c: New test.
+ * gcc.target/vax/cmpelim-leu-subqi.c: New test.
+ * gcc.target/vax/cmpelim-leu-subsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-adddf.c: New test.
+ * gcc.target/vax/cmpelim-lt-addhi.c: New test.
+ * gcc.target/vax/cmpelim-lt-addqi.c: New test.
+ * gcc.target/vax/cmpelim-lt-addsf.c: New test.
+ * gcc.target/vax/cmpelim-lt-addsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-andhi.c: New test.
+ * gcc.target/vax/cmpelim-lt-andqi.c: New test.
+ * gcc.target/vax/cmpelim-lt-andsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-ashlsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-ashrsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-divdf.c: New test.
+ * gcc.target/vax/cmpelim-lt-divhi.c: New test.
+ * gcc.target/vax/cmpelim-lt-divqi.c: New test.
+ * gcc.target/vax/cmpelim-lt-divsf.c: New test.
+ * gcc.target/vax/cmpelim-lt-divsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-extendhisi.c: New test.
+ * gcc.target/vax/cmpelim-lt-extendqisi.c: New test.
+ * gcc.target/vax/cmpelim-lt-extvsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-extzvsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-fixdfhi.c: New test.
+ * gcc.target/vax/cmpelim-lt-fixdfqi.c: New test.
+ * gcc.target/vax/cmpelim-lt-fixdfsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-fixsfhi.c: New test.
+ * gcc.target/vax/cmpelim-lt-fixsfqi.c: New test.
+ * gcc.target/vax/cmpelim-lt-fixsfsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-floatsisf.c: New test.
+ * gcc.target/vax/cmpelim-lt-insvsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-iorhi.c: New test.
+ * gcc.target/vax/cmpelim-lt-iorqi.c: New test.
+ * gcc.target/vax/cmpelim-lt-iorsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-movdf.c: New test.
+ * gcc.target/vax/cmpelim-lt-movhi.c: New test.
+ * gcc.target/vax/cmpelim-lt-movqi.c: New test.
+ * gcc.target/vax/cmpelim-lt-movsf.c: New test.
+ * gcc.target/vax/cmpelim-lt-movsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-muldf.c: New test.
+ * gcc.target/vax/cmpelim-lt-mulhi.c: New test.
+ * gcc.target/vax/cmpelim-lt-mulqi.c: New test.
+ * gcc.target/vax/cmpelim-lt-mulsf.c: New test.
+ * gcc.target/vax/cmpelim-lt-mulsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-nothi.c: New test.
+ * gcc.target/vax/cmpelim-lt-notqi.c: New test.
+ * gcc.target/vax/cmpelim-lt-notsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-rotlsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-rotrsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-subdf.c: New test.
+ * gcc.target/vax/cmpelim-lt-subhi.c: New test.
+ * gcc.target/vax/cmpelim-lt-subqi.c: New test.
+ * gcc.target/vax/cmpelim-lt-subsf.c: New test.
+ * gcc.target/vax/cmpelim-lt-subsi.c: New test.
+ * gcc.target/vax/cmpelim-lt-truncdfsf.c: New test.
+ * gcc.target/vax/cmpelim-lt-xorhi.c: New test.
+ * gcc.target/vax/cmpelim-lt-xorqi.c: New test.
+ * gcc.target/vax/cmpelim-lt-xorsi.c: New test.
+ * gcc.target/vax/cmpelim-ltu-subhi.c: New test.
+ * gcc.target/vax/cmpelim-ltu-subqi.c: New test.
+ * gcc.target/vax/cmpelim-ltu-subsi.c: New test.
+ * gcc.target/vax/cmpelim-xx-addsi.c: New test.
+ * gcc.target/vax/cmpelim-xx-insvsi.c: New test.
+ * gcc.target/vax/cmpelim-xxu-subsi.c: New test.
+ * gcc.target/vax/peephole2-eq-andhi.c: New test.
+ * gcc.target/vax/peephole2-eq-andqi.c: New test.
+ * gcc.target/vax/peephole2-eq-andsi.c: New test.
+ * gcc.target/vax/peephole2-eq-cmpvsi.c: New test.
+ * gcc.target/vax/peephole2-eq-cmpzvsi.c: New test.
+ * gcc.target/vax/peephole2-eq-ctzhi-0.c: New test.
+ * gcc.target/vax/peephole2-eq-ctzhi-1.c: New test.
+ * gcc.target/vax/peephole2-eq-ctzqi-0.c: New test.
+ * gcc.target/vax/peephole2-eq-ctzqi-1.c: New test.
+ * gcc.target/vax/peephole2-eq-ctzsi-0.c: New test.
+ * gcc.target/vax/peephole2-eq-ctzsi-1.c: New test.
+ * gcc.target/vax/peephole2-eq-ffshi.c: New test.
+ * gcc.target/vax/peephole2-eq-ffsqi.c: New test.
+ * gcc.target/vax/peephole2-eq-ffssi.c: New test.
+ * gcc.target/vax/peephole2-le-andhi.c: New test.
+ * gcc.target/vax/peephole2-le-andqi.c: New test.
+ * gcc.target/vax/peephole2-le-andsi.c: New test.
+ * gcc.target/vax/peephole2-le-cmpvsi.c: New test.
+ * gcc.target/vax/peephole2-le-cmpzvsi.c: New test.
+ * gcc.target/vax/peephole2-leu-cmpvsi.c: New test.
+ * gcc.target/vax/peephole2-leu-cmpzvsi.c: New test.
+ * gcc.target/vax/peephole2-lt-andhi.c: New test.
+ * gcc.target/vax/peephole2-lt-andqi.c: New test.
+ * gcc.target/vax/peephole2-lt-andsi.c: New test.
+ * gcc.target/vax/peephole2-lt-cmpvsi.c: New test.
+ * gcc.target/vax/peephole2-lt-cmpzvsi.c: New test.
+ * gcc.target/vax/peephole2-ltu-cmpvsi.c: New test.
+ * gcc.target/vax/peephole2-ltu-cmpzvsi.c: New test.
+
+2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * gcc.target/vax/movmem.c: New test.
+
+2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * gcc.target/vax/cpymem.c: New test.
+
+2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * gcc.target/vax/ctzhi.c: New test.
+ * gcc.target/vax/ctzqi.c: New test.
+ * gcc.target/vax/ffshi.c: New test.
+ * gcc.target/vax/ffsqi.c: New test.
+
+2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * gcc.target/vax/ctzsi.c: New test.
+
+2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * gcc.target/vax/bbcci.c: New test.
+ * gcc.target/vax/bbssi.c: New test.
+
+2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * gcc.target/vax/ffssi.c: New test.
+
+2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * gcc.dg/loop-8.c: Exclude for `vax-*-*'.
+ * gcc.target/vax/compare-add-zero.c: New test.
+ * gcc.target/vax/compare-mov-zero.c: New test.
+
+2020-12-05 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * gcc.target/vax/vax.exp: Use `gcc-dg-runtest' rather than
+ `dg-runtest'.
+ * gcc.target/vax/pr56875.c (dg-options): Make empty.
+ (a): Rewrite for calculations to make effect. Reformat.
+
+2020-12-05 Matt Thomas <matt@3am-software.com>
+ Maciej W. Rozycki <macro@linux-mips.org>
+
+ PR target/58901
+ * gcc.c-torture/compile/pr58901-0.c: New test.
+ * gcc.c-torture/compile/pr58901-1.c: New test.
+
+2020-12-05 Roman Zhuykov <zhroma@ispras.ru>
+
+ PR rtl-optimization/97421
+ * gcc.c-torture/execute/pr97421-1.c: New test.
+ * gcc.c-torture/execute/pr97421-2.c: New test.
+ * gcc.c-torture/execute/pr97421-3.c: New test.
+
+2020-12-05 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/98016
+ * gfortran.dg/pr98016.f90: New test.
+
+2020-12-05 Venkataramanan Kumar <Venkataramanan.Kumar@amd.com>
+ Sharavan Kumar <Shravan.Kumar@amd.com>
+
+ * gcc.target/i386/funcspec-56.inc: Handle new march.
+ * g++.target/i386/mv29.C: New file.
+
+2020-12-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/98122
+ * g++.dg/cpp1y/constexpr-98122.C: New test.
+ * g++.dg/cpp2a/constexpr-98122.C: New test.
+
+2020-12-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/93083
+ * g++.dg/cpp2a/nontype-class40.C: New test.
+
+2020-12-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/98130
+ * g++.dg/opt/pr98130.C: New test.
+
+2020-12-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/96226
+ * gcc.target/i386/pr96226.c: New test.
+
+2020-12-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR libstdc++/93121
+ * g++.dg/cpp2a/bit-cast6.C: New test.
+
+2020-12-04 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/98116
+ * g++.dg/template/pr98116.C: Enable robust checking.
+
+2020-12-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/98100
+ * gcc.target/i386/pr98100.c: New test.
+
+2020-12-04 Martin Liska <mliska@suse.cz>
+
+ PR testsuite/98123
+ * gcc.dg/tree-ssa/if-to-switch-4.c: Add param to make the test
+ stable on all architectures.
+ * gcc.dg/tree-ssa/if-to-switch-6.c: Likewise.
+ * gcc.dg/tree-ssa/if-to-switch-8.c: Likewise.
+
+2020-12-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/pr98099.c: Compile only for dfp targets.
+
+2020-12-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt91.ads, gnat.dg/opt91.adb: New test.
+ * gnat.dg/opt91_pkg.ads, gnat.dg/opt91_pkg.adb: New helper.
+
+2020-12-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/80780
+ * g++.dg/cpp2a/srcloc1.C (quux): Use __PRETTY_FUNCTION__ instead of
+ function.
+ * g++.dg/cpp2a/srcloc2.C (quux): Likewise.
+ * g++.dg/cpp2a/srcloc15.C (S::S): Likewise.
+ (bar): Likewise. Adjust expected column.
+ * g++.dg/cpp2a/srcloc17.C (S::S): Likewise.
+ (bar): Likewise. Adjust expected column.
+
+2020-12-03 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp2a/concepts-nodiscard1.C: XFAIL.
+
+2020-12-03 Martin Sebor <msebor@redhat.com>
+
+ PR c++/90629
+ PR middle-end/94527
+ * g++.dg/asan/asan_test.cc: Fix a bug.
+ * g++.dg/warn/delete-array-1.C: Add expected warning.
+ * g++.old-deja/g++.other/delete2.C: Add expected warning.
+ * g++.dg/warn/Wfree-nonheap-object-2.C: New test.
+ * g++.dg/warn/Wfree-nonheap-object.C: New test.
+ * g++.dg/warn/Wmismatched-new-delete.C: New test.
+ * g++.dg/warn/Wmismatched-dealloc-2.C: New test.
+ * g++.dg/warn/Wmismatched-dealloc.C: New test.
+ * gcc.dg/Wmismatched-dealloc.c: New test.
+ * gcc.dg/analyzer/malloc-1.c: Prune out expected warning.
+ * gcc.dg/attr-malloc.c: New test.
+ * gcc.dg/free-1.c: Adjust text of expected warning.
+ * gcc.dg/free-2.c: Same.
+ * gcc.dg/torture/pr71816.c: Prune out expected warning.
+ * gcc.dg/tree-ssa/pr19831-2.c: Add an expected warning.
+ * gcc.dg/Wfree-nonheap-object-2.c: New test.
+ * gcc.dg/Wfree-nonheap-object-3.c: New test.
+ * gcc.dg/Wfree-nonheap-object.c: New test.
+ * g++.dg/warn/Wfree-nonheap-object.s: New file.
+
+2020-12-03 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95342
+ * gfortran.dg/pr95342.f90: New test.
+
+2020-12-03 Ian Lance Taylor <iant@golang.org>
+
+ * go.test/go-test.exp (go-gc-tests): Add -I. when building all
+ sources in a directory (errorcheckdir, compiledir, rundir,
+ rundircmpout).
+
+2020-12-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/98019
+ * g++.dg/cpp2a/concepts-nodiscard1.C: New test.
+
+2020-12-03 Uroš Bizjak <ubizjak@gmail.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR target/98086
+ * gcc.target/i386/pr98086.c: New test.
+
+2020-12-03 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/98115
+ PR c++/98116
+ * g++.dg/template/pr98115.C: New.
+ * g++.dg/template/pr98116.C: New.
+
+2020-12-03 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ * gcc.target/s390/stack-clash-4.c: New test.
+
+2020-12-03 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/undef_1.c: New test.
+
+2020-12-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/pr98099.c: New test.
+
+2020-12-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * g++.dg/cpp2a/pr98082.C: New test.
+
+2020-12-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR libstdc++/93121
+ * g++.dg/cpp2a/bit-cast1.C: New test.
+ * g++.dg/cpp2a/bit-cast2.C: New test.
+ * g++.dg/cpp2a/bit-cast3.C: New test.
+ * g++.dg/cpp2a/bit-cast4.C: New test.
+ * g++.dg/cpp2a/bit-cast5.C: New test.
+
+2020-12-03 Jakub Jelinek <jakub@redhat.com>
+
+ * g++.dg/cpp2a/consteval-defarg2.C: New test.
+
+2020-12-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/98104
+ * g++.dg/warn/pr98104.C: New test.
+
+2020-12-03 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/avx512bw-pr96906-1.c: New test.
+ * gcc.target/i386/pr96906-1.c: Add -mno-avx512f.
+
+2020-12-03 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/avx512bw-vmovdqu16-1.c: Adjust testcase to
+ make sure only masked load instruction is generated.
+ * gcc.target/i386/avx512bw-vmovdqu8-1.c: Ditto.
+ * gcc.target/i386/avx512f-vmovapd-1.c: Ditto.
+ * gcc.target/i386/avx512f-vmovaps-1.c: Ditto.
+ * gcc.target/i386/avx512f-vmovdqa32-1.c: Ditto.
+ * gcc.target/i386/avx512f-vmovdqa64-1.c: Ditto.
+ * gcc.target/i386/avx512vl-vmovapd-1.c: Ditto.
+ * gcc.target/i386/avx512vl-vmovaps-1.c: Ditto.
+ * gcc.target/i386/avx512vl-vmovdqa32-1.c: Ditto.
+ * gcc.target/i386/avx512vl-vmovdqa64-1.c: Ditto.
+ * gcc.target/i386/pr97642-1.c: New test.
+ * gcc.target/i386/pr97642-2.c: New test.
+
+2020-12-03 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/parse/defarg17.C: New test.
+
+2020-12-03 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp2a/consteval-defarg1.C: New test.
+
+2020-12-03 Hongyu Wang <hongyu.wang@intel.com>
+
+ PR target/97770
+ * gcc.target/i386/avx512bitalg-pr97770-1.c: New test.
+ * gcc.target/i386/avx512vpopcntdq-pr97770-1.c: Likewise.
+ * gcc.target/i386/avx512vpopcntdq-pr97770-2.c: Likewise.
+ * gcc.target/i386/avx512vpopcntdqvl-pr97770-1.c: Likewise.
+
+2020-12-03 Alexandre Oliva <oliva@adacore.com>
+
+ * lib/options.exp (check_for_options_with_filter): Detect
+ unavailable compiler for the selected language, and bail out
+ as unsupported.
+
+2020-12-03 Martin Sebor <msebor@redhat.com>
+
+ * gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Adjust expected warnings
+ to correctly reflect the maximum object size.
+ * gcc.dg/tree-ssa/builtin-sprintf-warn-11.c: Same.
+ * gcc.dg/tree-ssa/builtin-sprintf-warn-18.c: Same.
+
+2020-12-03 Ilya Leoshkevich <iii@linux.ibm.com>
+
+ * gcc.target/s390/builtin-constant-p-threading.c: New test.
+
+2020-12-03 Peter Bergner <bergner@linux.ibm.com>
+
+ PR c++/97947
+ * g++.target/powerpc/pr97947.C: New test.
+
+2020-12-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/80780
+ PR c++/93093
+ * g++.dg/cpp2a/srcloc15.C: New test.
+ * g++.dg/cpp2a/srcloc16.C: New test.
+ * g++.dg/cpp2a/srcloc17.C: New test.
+ * g++.dg/cpp2a/srcloc18.C: New test.
+
+2020-12-02 qing zhao <qinzhao@gcc.gnu.org>
+
+ PR rtl-optimization/97777
+ PR rtl-optimization/97777
+ * gcc.target/i386/pr97777.c: New test.
+
+2020-12-02 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/other/pr88187.C: Adjust expected error.
+ * g++.dg/cpp2a/class-deduction-abbrev1.C: New test.
+
+2020-12-02 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97975
+ * g++.dg/cpp1z/inline-var8.C: New test.
+
+2020-12-02 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97187
+ PR c++/97993
+ * g++.dg/eh/crash2.C: New test.
+ * g++.dg/template/crash132.C: New test.
+
+2020-12-02 Martin Sebor <msebor@redhat.com>
+
+ * gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Adjust expected warnings
+ to correctly reflect the maximum object size.
+ * gcc.dg/tree-ssa/builtin-sprintf-warn-11.c: Same.
+ * gcc.dg/tree-ssa/builtin-sprintf-warn-18.c: Same.
+
+2020-12-02 Ilya Leoshkevich <iii@linux.ibm.com>
+
+ * gcc.target/s390/load-imm64-1.c: New test.
+ * gcc.target/s390/load-imm64-2.c: New test.
+
+2020-12-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ * ada/acats/support/acats25.lst: Delete.
+ * ada/acats/support/acats26.lst: New file.
+ * ada/acats/support/fcndecl.ada: Minor tweak.
+ * ada/acats/support/impdef.a: Add commentary.
+ * ada/acats/support/impdefg.a (Negative_Zero return): Simplify.
+ * ada/acats/support/macro.dfs (TASK_STORAGE_SIZE): Bump.
+ * ada/acats/support/repbody.ada: Upgrade to ACATS 2.6.
+ * ada/acats/support/tctouch.ada: Likewise.
+ * ada/acats/tests/c3/c352001.a: New file.
+ * ada/acats/tests/c4/c433001.a: Correct error messages.
+ * ada/acats/tests/c4/c453001.a: New file.
+ * ada/acats/tests/c4/c45622a.ada: Delete.
+ * ada/acats/tests/c4/c45624a.ada: Likewise.
+ * ada/acats/tests/c4/c45624b.ada: Likewise.
+ * ada/acats/tests/c4/c460013.a: New file.
+ * ada/acats/tests/c4/c460014.a: Likewise.
+ * ada/acats/tests/c6/c620001.a: Likewise.
+ * ada/acats/tests/c6/c620002.a: Likewise.
+ * ada/acats/tests/c7/c761006.a: Redo Unchecked_Deallocation case.
+ * ada/acats/tests/c9/c96004a.ada: Adjust for Ada 2005.
+ * ada/acats/tests/c9/c96007a.ada: Likewise.
+ * ada/acats/tests/cb/cb41004.a: Adjust for AI95-0044.
+ * ada/acats/tests/cc/cc3016f.ada: Minor tweak.
+ * ada/acats/tests/cd/cd30011.a: New file.
+ * ada/acats/tests/cd/cd30012.a: Likewise.
+ * ada/acats/tests/cd/cd90001.a: Fix comparison.
+ * ada/acats/tests/cxa/cxa3004.a: New file.
+ * ada/acats/tests/cxa/cxa5013.a: Likewise.
+ * ada/acats/tests/cxa/cxac005.a: Adjust for return-by-reference.
+ * ada/acats/tests/cxb/cxb30061.am: New file.
+ * ada/acats/tests/cxf/cxf2001.a: Fix failure message.
+
+2020-12-02 Martin Liska <mliska@suse.cz>
+
+ PR ipa/98075
+ * g++.dg/ipa/pr98075.C: New test.
+
+2020-12-02 H.J. Lu <hjl.tools@gmail.com>
+
+ PR middle-end/93195
+ * g++.dg/pr93195a.C: New test.
+ * g++.dg/pr93195b.C: Likewise.
+ * lib/target-supports.exp
+ (check_effective_target_o_flag_in_section): New proc.
+
+2020-12-02 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/98084
+ * gcc.dg/tree-ssa/pr98094.c: New test.
+
+2020-12-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/97459
+ * gcc.target/i386/pr97282.c (foo): Use 123456 divisor instead of
+ 10.
+ * gcc.dg/pr97459-1.c (TESTS): Add tests for 10, 12 and
+ 6144.
+ * gcc.dg/pr97459-2.c (TESTS): Likewise.
+ * gcc.dg/pr97459-3.c: New test.
+ * gcc.dg/pr97459-4.c: New test.
+ * gcc.dg/pr97459-5.c: New test.
+ * gcc.dg/pr97459-6.c: New test.
+
+2020-12-02 Martin Liska <mliska@suse.cz>
+
+ PR c/98087
+ * gcc.c-torture/compile/pr98087.c: New test.
+
+2020-12-02 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/98079
+ * gcc.target/i386/pr98079.c: New test.
+
+2020-12-02 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/88702
+ * gcc.dg/tree-ssa/if-to-switch-9.c: New test.
+
+2020-12-02 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/98084
+ * gcc.dg/tree-ssa/pr98084.c: New test.
+
+2020-12-02 Jeff Law <law@redhat.com>
+
+ * gcc.target/h8300/add.c: New test.
+ * gcc.target/h8300/add-2.c: New test.
+ * gcc.target/h8300/add-3.c: New test.
+ * gcc.target/h8300/sub.c: New test.
+ * gcc.target/h8300/sub-2.c: New test.
+ * gcc.target/h8300/sub-3.c: New test.
+
+2020-12-02 Ian Lance Taylor <iant@golang.org>
+
+ * go.test/go-test.exp (errchk): Permit trailing */ on ERROR line.
+
+2020-12-02 H.J. Lu <hjl.tools@gmail.com>
+ Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * c-c++-common/attr-used.c: Check the 'R' flag.
+ * c-c++-common/attr-used-2.c: Likewise.
+ * c-c++-common/attr-used-3.c: New test.
+ * c-c++-common/attr-used-4.c: Likewise.
+ * gcc.c-torture/compile/attr-used-retain-1.c: Likewise.
+ * gcc.c-torture/compile/attr-used-retain-2.c: Likewise.
+ * lib/target-supports.exp
+ (check_effective_target_R_flag_in_section): New proc.
+
+2020-12-02 H.J. Lu <hjl.tools@gmail.com>
+
+ * gcc.target/i386/x86-needed-1.c: New test.
+ * gcc.target/i386/x86-needed-2.c: Likewise.
+ * gcc.target/i386/x86-needed-3.c: Likewise.
+
+2020-12-01 Eugene Rozenfeld <Eugene.Rozenfeld@microsoft.com>
+
+ * gcc.dg/pr96708-negative.c: New test.
+ * gcc.dg/pr96708-positive.c: New test.
+
+2020-12-01 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/97595
+ * g++.dg/warn/Warray-bounds-14.C: New test.
+ * g++.dg/warn/Wstringop-overflow-6.C: New test.
+
+2020-12-01 Jeff Law <law@redhat.com>
+
+ * gcc.dg/tree-ssa/pr96480.c: Disable jump table optimization
+
+2020-12-01 JeanHeyd Meneide <phdofthehouse@gmail.com>
+
+ * c-c++-common/cpp/wide-narrow-predef-macros.c: New test.
+
+2020-12-01 Jeff Law <law@redhat.com>
+
+ * gcc.dg/pr46309-2.c: Add -fno-bit-tests and -fno-jump-tables
+ to avoid compromising the test.
+
+2020-12-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/98072
+ * c-c++-common/gomp/depobj-2.c: New test.
+
+2020-12-01 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/97373
+ * gcc.dg/tree-ssa/builtin-sprintf-warn-25.c: New test.
+
+2020-12-01 Martin Liska <mliska@suse.cz>
+
+ * g++.dg/tree-ssa/if-to-switch-1.C: Do not allow newlines
+ in .* pattern.
+ * gcc.dg/tree-ssa/if-to-switch-1.c: Likewise.
+ * gcc.dg/tree-ssa/if-to-switch-2.c: Likewise.
+ * gcc.dg/tree-ssa/if-to-switch-3.c: Likewise.
+ * gcc.dg/tree-ssa/if-to-switch-5.c: Likewise.
+
+2020-12-01 Martin Liska <mliska@suse.cz>
+
+ PR testsuite/98085
+ * g++.dg/tree-ssa/if-to-switch-1.C: Do not expect precise number
+ of BBs.
+ * gcc.dg/tree-ssa/if-to-switch-1.c: Likewise.
+ * gcc.dg/tree-ssa/if-to-switch-2.c: Likewise. Find better name
+ for the function.
+ * gcc.dg/tree-ssa/if-to-switch-3.c: Likewise. Find better name
+ for the function.
+ * gcc.dg/tree-ssa/if-to-switch-5.c: Likewise.
+
+2020-12-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/97954
+ * gcc.dg/pr97954.c: New test.
+
+2020-12-01 Matthew Malcomson <matthew.malcomson@arm.com>
+
+ * lib/hwasan-dg.exp (check_effective_target_hwaddress_exec): Fix
+ check for correct kernel version.
+
+2020-12-01 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/14799
+ PR ipa/88702
+ * gcc.dg/tree-ssa/pr96480.c: Disable if-to-switch conversion.
+ * gcc.dg/tree-ssa/reassoc-32.c: Likewise.
+ * g++.dg/tree-ssa/if-to-switch-1.C: New test.
+ * gcc.dg/tree-ssa/if-to-switch-1.c: New test.
+ * gcc.dg/tree-ssa/if-to-switch-2.c: New test.
+ * gcc.dg/tree-ssa/if-to-switch-3.c: New test.
+ * gcc.dg/tree-ssa/if-to-switch-4.c: New test.
+ * gcc.dg/tree-ssa/if-to-switch-5.c: New test.
+ * gcc.dg/tree-ssa/if-to-switch-6.c: New test.
+ * gcc.dg/tree-ssa/if-to-switch-7.c: New test.
+ * gcc.dg/tree-ssa/if-to-switch-8.c: New test.
+
+2020-12-01 Marius Hillenbrand <mhillen@linux.ibm.com>
+
+ * gcc.target/s390/float_t-1.c: New test.
+ * gcc.target/s390/float_t-2.c: New test.
+
+2020-12-01 Martin Liska <mliska@suse.cz>
+
+ * g++.dg/torture/pr93347.C: Reduce and remove LIT keywords.
+
+2020-12-01 Martin Liska <mliska@suse.cz>
+
+ PR ipa/98057
+ * g++.dg/ipa/pr98057.C: New test.
+
+2020-12-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/98063
+ * gcc.target/i386/pr98063.c: New test.
+
+2020-12-01 Jakub Jelinek <jakub@redhat.com>
+
+ * g++.dg/debug/dwarf2/lang-cpp17.C: New test.
+ * g++.dg/debug/dwarf2/lang-cpp20.C: New test.
+
+2020-12-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/97989
+ * gcc.dg/cpp/pr97989-1.c: New test.
+ * gcc.dg/cpp/pr97989-2.c: New test.
+
+2020-11-30 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/plugin/analyzer_gil_plugin.c: New test.
+ * gcc.dg/plugin/gil-1.c: New test.
+ * gcc.dg/plugin/gil.h: New header.
+ * gcc.dg/plugin/plugin.exp (plugin_test_list): Add the new plugin
+ and test.
+
+2020-11-30 Ilya Leoshkevich <iii@linux.ibm.com>
+
+ * lib/profopt.exp: Unset testname_with_flags if create_gcov
+ fails.
+
+2020-11-30 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR rtl-optimization/98037
+ * gcc.target/aarch64/sve/acle/general/pr98037.c: New test.
+
+2020-11-30 Jeff Law <law@redhat.com>
+
+ * g++.dg/warn/Wnonnull5.C: Fix non-unique testnames.
+ * g++.dg/warn/Wplacement-new-size-8.C: Likewise.
+
+2020-11-30 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/98011
+ * gfortran.dg/goacc/sentinel-free-form.f95:
+ * gfortran.dg/goacc-gomp/fixed-1.f: New test.
+ * gfortran.dg/goacc-gomp/free-1.f90: New test.
+ * gfortran.dg/goacc/fixed-5.f: New test.
+
+2020-11-30 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/98064
+ * g++.dg/vect/pr98064.cc: New testcase.
+
+2020-11-30 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/98048
+ * gcc.dg/vect/pr98048.c: New testcase.
+
+2020-11-30 Stam Markianos-Wright <stam.markianos-wright@arm.com>
+
+ * gcc.target/arm/pr91816.c: New test.
+
+2020-11-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/97459
+ * gcc.dg/pr97459-1.c: New test.
+ * gcc.dg/pr97459-2.c: New test.
+
+2020-11-29 Harald Anlauf <anlauf@gmx.de>
+
+ * gfortran.dg/pr98017.f90: New test.
+
+2020-11-29 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/92936
+ PR middle-end/92940
+ PR middle-end/89428
+ * c-c++-common/Wstringop-overflow-2.c: Adjust text of expected
+ informational notes.
+ * g++.dg/warn/Wstringop-overflow-3.C: Same.
+ * g++.dg/warn/Wplacement-new-size.C: Remove a test for a no longer
+ issued warning.
+ * gcc.dg/Warray-bounds-43.c: Removed unused declarations.
+ * gcc.dg/Wstringop-overflow-11.c: Remove xfails.
+ * gcc.dg/Wstringop-overflow-12.c: Same.
+ * gcc.dg/Wstringop-overflow-17.c: Adjust text of expected messages.
+ * gcc.dg/Wstringop-overflow-27.c: Same. Remove xfails.
+ * gcc.dg/Wstringop-overflow-28.c: Adjust text of expected messages.
+ * gcc.dg/Wstringop-overflow-29.c: Same.
+ * gcc.dg/Wstringop-overflow-37.c: Same.
+ * gcc.dg/Wstringop-overflow-46.c: Same.
+ * gcc.dg/Wstringop-overflow-47.c: Same.
+ * gcc.dg/Wstringop-overflow-54.c: Same.
+ * gcc.dg/warn-strnlen-no-nul.c: Add expected warning.
+ * gcc.dg/Wstringop-overflow-7.c: New test.
+ * gcc.dg/Wstringop-overflow-58.c: New test.
+ * gcc.dg/Wstringop-overflow-59.c: New test.
+ * gcc.dg/Wstringop-overflow-60.c: New test.
+ * gcc.dg/Wstringop-overflow-61.c: New test.
+ * gcc.dg/Wstringop-overflow-62.c: New test.
+ * gcc.dg/Wstringop-overflow-63.c: New test.
+ * gcc.dg/Wstringop-overflow-64.c: New test.
+
+2020-11-28 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.target/sparc/overflow-6.c: New test.
+
+2020-11-27 Joseph Myers <joseph@codesourcery.com>
+
+ PR preprocessor/97602
+ * gcc.dg/cpp/line9.c, gcc.dg/cpp/line10.c: New tests.
+
+2020-11-27 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * gdc.dg/intrinsics.d: Adjust patterns in scan-tree-dump.
+
+2020-11-27 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR testsuite/98036
+ * gcc.target/i386/fma4-256-maccXX.c (check_maccps):
+ Remove unnecessary postfix increment on a returned variable.
+ (check_maccpd): Ditto.
+ * gcc.target/i386/fma4-256-msubXX.c (check_msubps): Ditto.
+ (check_msubpd): Ditto.
+ * gcc.target/i386/fma4-256-nmaccXX.c (check_nmaccps): Ditto.
+ (check_nmaccpd): Ditto.
+ * gcc.target/i386/fma4-256-nmsubXX.c (check_nmsubps): Ditto.
+ (check_nmsubpd): Ditto.
+ * gcc.target/i386/fma4-maccXX.c (check_maccps): Ditto.
+ (check_maccpd): Ditto.
+ (check_maccss): Ditto.
+ (check_maccsd): Ditto.
+ * gcc.target/i386/fma4-msubXX.c (check_msubps): Ditto.
+ (check_msubpd): Ditto.
+ (check_msubss): Ditto.
+ (check_msubsd): Ditto.
+ * gcc.target/i386/fma4-nmaccXX.c (check_nmaccps): Ditto.
+ (check_nmaccpd): Ditto.
+ (check_nmaccss): Ditto.
+ (check_nmaccsd): Ditto.
+ * gcc.target/i386/fma4-nmsubXX.c (check_nmsubps): Ditto.
+ (check_nmsubpd): Ditto.
+ (check_nmsubss): Ditto.
+ (check_nmsubsd): Ditto.
+ * gcc.target/i386/xop-haddX.c (check_sbyte2word): Add missing return.
+ (check_sbyte2dword):
+ Remove unnecessary postfix increment on a returned value.
+ (check_sbyte2qword): Ditto.
+ (check_sword2dword): Add missing return.
+ (check_sword2qword):
+ Remove unnecessary postfix increment on a returned value.
+ (check_dword2qword): Add missing return.
+ * gcc.target/i386/xop-hadduX.c (check_byte2word): Add missing return.
+ (check_byte2dword):
+ Remove unnecessary postfix increment on a returned value.
+ (check_byte2qword): Ditto.
+ (check_word2dword): Add missing return.
+ (check_word2qword):
+ Remove unnecessary postfix increment on a returned value.
+ (check_word2qword): Add missing return.
+ * gcc.target/i386/xop-hsubX.c (check_sbyte2word): Add missing return.
+ (check_sword2dword): Ditto.
+ (check_sword2qword): Ditto.
+
+2020-11-27 Thomas Schwinge <thomas@codesourcery.com>
+
+ * c-c++-common/goacc/kernels-decompose-ice-1.c: Adjust.
+ * c-c++-common/goacc/kernels-decompose-ice-2.c: Likewise.
+
+2020-11-27 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/requires-4.f90: Fix typo in '!$omp' clause.
+
+2020-11-27 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/requires-4.f90: Fix '!$omp' syntax.
+
+2020-11-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR libstdc++/88101
+ * g++.dg/torture/builtin-clear-padding-3.C: New test.
+
+2020-11-27 Tobias Burnus <tobias@codesourcery.com>
+
+ PR c/97880
+ * gcc.dg/goacc/tile-1.c: New test.
+
+2020-11-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/97997
+ * gcc.dg/tree-ssa/pr97997-1.c: New test.
+ * gcc.dg/tree-ssa/pr97997-2.c: New test.
+
+2020-11-26 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97953
+ * gcc.dg/pr97953.c: New testcase.
+
+2020-11-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/97979
+ * gcc.dg/pr97979.c: New test.
+ * gcc.c-torture/compile/pr97979.c: New test.
+
+2020-11-26 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/98002
+ * gcc.dg/strncmp-2.c: Call mprotect again before free.
+
+2020-11-26 Thomas Schwinge <thomas@codesourcery.com>
+
+ * c-c++-common/goacc/cache-3-1.c: New.
+ * c-c++-common/goacc/cache-3-2.c: Likewise.
+ * c-c++-common/goacc/data-clause-1.c: Likewise.
+ * c-c++-common/goacc/data-clause-2.c: Likewise.
+ * c-c++-common/gomp/map-1.c: Adjust.
+ * c-c++-common/gomp/map-2.c: Likewise.
+ * g++.dg/goacc/cache-3-1.C: New.
+ * g++.dg/goacc/cache-3-2.C: Likewise.
+ * g++.dg/goacc/data-clause-1.C: Likewise.
+ * g++.dg/goacc/data-clause-2.C: Likewise.
+ * g++.dg/gomp/map-1.C: Adjust.
+ * g++.dg/gomp/map-2.C: Likewise.
+
+2020-11-26 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/97873
+ * gcc.target/i386/pr97873-3.c: New test.
+
+2020-11-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/multfixed.adb: Robustify.
+
+2020-11-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/96906
+ * gcc.target/i386/pr96906-1.c: New test.
+
+2020-11-26 Martin Uecker <muecker@gwdg.de>
+
+ PR c/65455
+ PR c/92935
+ * gcc.dg/typeof-2.c: Adapt test.
+
+2020-11-26 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.dg/nextafter-1.c: Omit prototypes if _NEXT_AFTER_2 defined.
+ * gcc.dg/nextafter-2.c: Define _NEXT_AFTER_2.
+ * gcc.dg/profile-info-section.c: Skip on AIX.
+
+2020-11-25 Martin Sebor <msebor@redhat.com>
+
+ PR bootstrap/94982
+ * c-c++-common/patchable_function_entry-error-3.c: Adjust text
+ of expected warning.
+
+2020-11-25 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/lto/modref-3_0.c: New test.
+ * gcc.dg/lto/modref-3_1.c: New test.
+ * gcc.dg/lto/modref-4_0.c: New test.
+ * gcc.dg/lto/modref-4_1.c: New test.
+ * gcc.dg/tree-ssa/modref-5.c: New test.
+
+2020-11-25 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/85796
+ * gfortran.dg/pr85796.f90: New test.
+
+2020-11-25 Thomas Schwinge <thomas@codesourcery.com>
+
+ * g++.dg/gomp/map-1.C: New.
+ * g++.dg/gomp/map-2.C: Likewise.
+ * c-c++-common/gomp/map-1.c: Adjust.
+ * c-c++-common/gomp/map-2.c: Likewise.
+
+2020-11-25 Thomas Schwinge <thomas@codesourcery.com>
+
+ * c-c++-common/goacc/cache-1.c: Update.
+ * c-c++-common/goacc/cache-2.c: Likewise.
+ * g++.dg/goacc/cache-1.C: New.
+ * g++.dg/goacc/cache-2.C: Likewise.
+
+2020-11-25 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/97956
+ * gcc.dg/memchr-3.c: New test.
+
+2020-11-25 Matthew Malcomson <matthew.malcomson@arm.com>
+
+ * c-c++-common/ubsan/sanitize-recover-7.c: Update error message format.
+ * lib/asan-dg.exp (asan_link_flags): Implement as a helper
+ function asan_link_flags_1 which asan_link_flags and
+ hwasan_link_flags use.
+ (asan_link_flags_1): Parametrised version of asan_link_flags.
+ * c-c++-common/hwasan/aligned-alloc.c: New test.
+ * c-c++-common/hwasan/alloca-array-accessible.c: New test.
+ * c-c++-common/hwasan/alloca-base-init.c: New test.
+ * c-c++-common/hwasan/alloca-gets-different-tag.c: New test.
+ * c-c++-common/hwasan/alloca-outside-caught.c: New test.
+ * c-c++-common/hwasan/arguments-1.c: New test.
+ * c-c++-common/hwasan/arguments-2.c: New test.
+ * c-c++-common/hwasan/arguments-3.c: New test.
+ * c-c++-common/hwasan/arguments.c: New test.
+ * c-c++-common/hwasan/asan-pr63316.c: New test.
+ * c-c++-common/hwasan/asan-pr70541.c: New test.
+ * c-c++-common/hwasan/asan-pr78106.c: New test.
+ * c-c++-common/hwasan/asan-pr79944.c: New test.
+ * c-c++-common/hwasan/asan-rlimit-mmap-test-1.c: New test.
+ * c-c++-common/hwasan/bitfield-1.c: New test.
+ * c-c++-common/hwasan/bitfield-2.c: New test.
+ * c-c++-common/hwasan/builtin-special-handling.c: New test.
+ * c-c++-common/hwasan/check-interface.c: New test.
+ * c-c++-common/hwasan/halt_on_error-1.c: New test.
+ * c-c++-common/hwasan/handles-poly_int-marked-vars.c: New test.
+ * c-c++-common/hwasan/heap-overflow.c: New test.
+ * c-c++-common/hwasan/hwasan-poison-optimisation.c: New test.
+ * c-c++-common/hwasan/hwasan-thread-access-parent.c: New test.
+ * c-c++-common/hwasan/hwasan-thread-basic-failure.c: New test.
+ * c-c++-common/hwasan/hwasan-thread-clears-stack.c: New test.
+ * c-c++-common/hwasan/hwasan-thread-success.c: New test.
+ * c-c++-common/hwasan/kernel-defaults.c: New test.
+ * c-c++-common/hwasan/large-aligned-0.c: New test.
+ * c-c++-common/hwasan/large-aligned-1.c: New test.
+ * c-c++-common/hwasan/large-aligned-untagging-0.c: New test.
+ * c-c++-common/hwasan/large-aligned-untagging-1.c: New test.
+ * c-c++-common/hwasan/large-aligned-untagging-2.c: New test.
+ * c-c++-common/hwasan/large-aligned-untagging-3.c: New test.
+ * c-c++-common/hwasan/large-aligned-untagging-4.c: New test.
+ * c-c++-common/hwasan/large-aligned-untagging-5.c: New test.
+ * c-c++-common/hwasan/large-aligned-untagging-6.c: New test.
+ * c-c++-common/hwasan/large-aligned-untagging-7.c: New test.
+ * c-c++-common/hwasan/macro-definition.c: New test.
+ * c-c++-common/hwasan/no-sanitize-attribute.c: New test.
+ * c-c++-common/hwasan/param-instrument-mem-intrinsics.c: New test.
+ * c-c++-common/hwasan/param-instrument-reads-and-writes.c: New test.
+ * c-c++-common/hwasan/param-instrument-reads.c: New test.
+ * c-c++-common/hwasan/param-instrument-writes.c: New test.
+ * c-c++-common/hwasan/random-frame-tag.c: New test.
+ * c-c++-common/hwasan/sanity-check-pure-c.c: New test.
+ * c-c++-common/hwasan/setjmp-longjmp-0.c: New test.
+ * c-c++-common/hwasan/setjmp-longjmp-1.c: New test.
+ * c-c++-common/hwasan/stack-tagging-basic-0.c: New test.
+ * c-c++-common/hwasan/stack-tagging-basic-1.c: New test.
+ * c-c++-common/hwasan/stack-tagging-disable.c: New test.
+ * c-c++-common/hwasan/unprotected-allocas-0.c: New test.
+ * c-c++-common/hwasan/unprotected-allocas-1.c: New test.
+ * c-c++-common/hwasan/use-after-free.c: New test.
+ * c-c++-common/hwasan/vararray-outside-caught.c: New test.
+ * c-c++-common/hwasan/vararray-stack-restore-correct.c: New test.
+ * c-c++-common/hwasan/very-large-objects.c: New test.
+ * g++.dg/hwasan/hwasan.exp: New test.
+ * g++.dg/hwasan/rvo-handled.C: New test.
+ * gcc.dg/hwasan/hwasan.exp: New test.
+ * gcc.dg/hwasan/nested-functions-0.c: New test.
+ * gcc.dg/hwasan/nested-functions-1.c: New test.
+ * gcc.dg/hwasan/nested-functions-2.c: New test.
+ * lib/hwasan-dg.exp: New file.
+
+2020-11-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/95862
+ * gcc.dg/builtin-artih-overflow-5.c: Renamed to ...
+ * gcc.dg/builtin-arith-overflow-5.c: ... this.
+
+2020-11-25 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/asm/abs_f16.c (abs_f16_x_untied): Expect
+ a MOVPRFX instruction.
+ * gcc.target/aarch64/sve/acle/asm/abs_f32.c (abs_f32_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/abs_f64.c (abs_f64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/abs_s16.c (abs_s16_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/abs_s32.c (abs_s32_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/abs_s64.c (abs_s64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/abs_s8.c (abs_s8_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cls_s16.c (cls_s16_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cls_s32.c (cls_s32_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cls_s64.c (cls_s64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cls_s8.c (cls_s8_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/clz_s16.c (clz_s16_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/clz_s32.c (clz_s32_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/clz_s64.c (clz_s64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/clz_s8.c (clz_s8_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/clz_u16.c (clz_u16_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/clz_u32.c (clz_u32_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/clz_u64.c (clz_u64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/clz_u8.c (clz_u8_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnot_s16.c (cnot_s16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnot_s32.c (cnot_s32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnot_s64.c (cnot_s64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnot_s8.c (cnot_s8_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnot_u16.c (cnot_u16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnot_u32.c (cnot_u32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnot_u64.c (cnot_u64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnot_u8.c (cnot_u8_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnt_bf16.c (cnt_bf16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnt_f16.c (cnt_f16_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnt_f32.c (cnt_f32_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnt_f64.c (cnt_f64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnt_s16.c (cnt_s16_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnt_s32.c (cnt_s32_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnt_s64.c (cnt_s64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnt_s8.c (cnt_s8_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnt_u16.c (cnt_u16_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnt_u32.c (cnt_u32_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnt_u64.c (cnt_u64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cnt_u8.c (cnt_u8_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cvt_bf16.c (cvt_bf16_f32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cvt_f16.c (cvt_f16_f32_x_untied)
+ (cvt_f16_f64_x_untied, cvt_f16_s16_x_untied, cvt_f16_s32_x_untied)
+ (cvt_f16_s64_x_untied, cvt_f16_u16_x_untied, cvt_f16_u32_x_untied)
+ (cvt_f16_u64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cvt_f32.c (cvt_f32_f16_x_untied)
+ (cvt_f32_f64_x_untied, cvt_f32_s16_x_untied, cvt_f32_s32_x_untied)
+ (cvt_f32_s64_x_untied, cvt_f32_u16_x_untied, cvt_f32_u32_x_untied)
+ (cvt_f32_u64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cvt_f64.c (cvt_f64_f16_x_untied)
+ (cvt_f64_f32_x_untied, cvt_f64_s16_x_untied, cvt_f64_s32_x_untied)
+ (cvt_f64_s64_x_untied, cvt_f64_u16_x_untied, cvt_f64_u32_x_untied)
+ (cvt_f64_u64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cvt_s16.c (cvt_s16_f16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cvt_s32.c (cvt_s32_f16_x_untied)
+ (cvt_s32_f32_x_untied, cvt_s32_s64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cvt_s64.c (cvt_s64_f16_x_untied)
+ (cvt_s64_f32_x_untied, cvt_s64_s64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cvt_u16.c (cvt_u16_f16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cvt_u32.c (cvt_u32_f16_x_untied)
+ (cvt_u32_f32_x_untied, cvt_u32_u64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/cvt_u64.c (cvt_u64_f16_x_untied)
+ (cvt_u64_f32_x_untied, cvt_u64_u64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/extb_s16.c (extb_s16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/extb_s32.c (extb_s32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/extb_s64.c (extb_s64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/exth_s32.c (exth_s32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/exth_s64.c (exth_s64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/extw_s64.c (extw_s64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/neg_f16.c (neg_f16_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/neg_f32.c (neg_f32_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/neg_f64.c (neg_f64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/neg_s16.c (neg_s16_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/neg_s32.c (neg_s32_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/neg_s64.c (neg_s64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/neg_s8.c (neg_s8_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/not_s16.c (not_s16_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/not_s32.c (not_s32_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/not_s64.c (not_s64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/not_s8.c (not_s8_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/not_u16.c (not_u16_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/not_u32.c (not_u32_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/not_u64.c (not_u64_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/not_u8.c (not_u8_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rbit_s16.c (rbit_s16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rbit_s32.c (rbit_s32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rbit_s64.c (rbit_s64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rbit_s8.c (rbit_s8_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rbit_u16.c (rbit_u16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rbit_u32.c (rbit_u32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rbit_u64.c (rbit_u64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rbit_u8.c (rbit_u8_x_untied): Ditto.
+ * gcc.target/aarch64/sve/acle/asm/recpx_f16.c (recpx_f16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/recpx_f32.c (recpx_f32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/recpx_f64.c (recpx_f64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/revb_s16.c (revb_s16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/revb_s32.c (revb_s32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/revb_s64.c (revb_s64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/revb_u16.c (revb_u16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/revb_u32.c (revb_u32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/revb_u64.c (revb_u64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/revh_s32.c (revh_s32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/revh_s64.c (revh_s64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/revh_u32.c (revh_u32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/revh_u64.c (revh_u64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/revw_s64.c (revw_s64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/revw_u64.c (revw_u64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rinta_f16.c (rinta_f16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rinta_f32.c (rinta_f32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rinta_f64.c (rinta_f64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rinti_f16.c (rinti_f16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rinti_f32.c (rinti_f32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rinti_f64.c (rinti_f64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rintm_f16.c (rintm_f16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rintm_f32.c (rintm_f32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rintm_f64.c (rintm_f64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rintn_f16.c (rintn_f16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rintn_f32.c (rintn_f32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rintn_f64.c (rintn_f64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rintp_f16.c (rintp_f16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rintp_f32.c (rintp_f32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rintp_f64.c (rintp_f64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rintx_f16.c (rintx_f16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rintx_f32.c (rintx_f32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rintx_f64.c (rintx_f64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rintz_f16.c (rintz_f16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rintz_f32.c (rintz_f32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/rintz_f64.c (rintz_f64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/sqrt_f16.c (sqrt_f16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/sqrt_f32.c (sqrt_f32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve/acle/asm/sqrt_f64.c (sqrt_f64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve2/acle/asm/cvtx_f32.c (cvtx_f32_f64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve2/acle/asm/logb_f16.c (logb_f16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve2/acle/asm/logb_f32.c (logb_f32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve2/acle/asm/logb_f64.c (logb_f64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve2/acle/asm/qabs_s16.c (qabs_s16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve2/acle/asm/qabs_s32.c (qabs_s32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve2/acle/asm/qabs_s64.c (qabs_s64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve2/acle/asm/qabs_s8.c (qabs_s8_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve2/acle/asm/qneg_s16.c (qneg_s16_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve2/acle/asm/qneg_s32.c (qneg_s32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve2/acle/asm/qneg_s64.c (qneg_s64_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve2/acle/asm/qneg_s8.c (qneg_s8_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve2/acle/asm/recpe_u32.c (recpe_u32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve2/acle/asm/rsqrte_u32.c (rsqrte_u32_x_untied):
+ Ditto.
+ * gcc.target/aarch64/sve2/acle/asm/cvtlt_f32.c
+ (cvtlt_f32_f16_x_untied): Expect a MOV instruction.
+ * gcc.target/aarch64/sve2/acle/asm/cvtlt_f64.c
+ (cvtlt_f64_f32_x_untied): Likewise.
+
+2020-11-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/95862
+ * gcc.dg/builtin-artih-overflow-5.c: New test.
+
+2020-11-25 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/97579
+ * gcc.dg/pr97579.c: New testcase.
+
+2020-11-25 Stam Markianos-Wright <stam.markianos-wright@arm.com>
+
+ PR target/91816
+ * gcc.target/arm/pr91816.c: New test.
+
+2020-11-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/97943
+ * c-c++-common/builtin-clear-padding-2.c: New test.
+ * c-c++-common/builtin-clear-padding-3.c: New test.
+ * g++.dg/ext/builtin-clear-padding-1.C: New test.
+ * gcc.dg/builtin-clear-padding-2.c: New test.
+
+2020-11-24 Martin Sebor <msebor@redhat.com>
+
+ * gcc.dg/pr97955.c: New test.
+
+2020-11-24 Martin Sebor <msebor@redhat.com>
+
+ * gcc.dg/Wstringop-overflow-47.c: Add a note.
+
+2020-11-24 Jason Merrill <jason@redhat.com>
+
+ PR c++/97899
+ * g++.dg/cpp0x/initlist-template3.C: New test.
+
+2020-11-24 Martin Sebor <msebor@redhat.com>
+
+ * gfortran.dg/gomp/declare-target-4.f90: Adjust pattern to expect
+ an additional attribute and function return type.
+
+2020-11-24 Richard Earnshaw <rearnsha@arm.com>
+
+ * gcc.dg/pr97534.c: New test.
+
+2020-11-24 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/aapcs64/abitest.h (FUNC_VAL_CHECK): Use
+ noipa rather than noinline.
+ * gcc.target/aarch64/aapcs64/abitest-2.h (FUNC_VAL_CHECK): Likewise.
+
+2020-11-24 Ilya Leoshkevich <iii@linux.ibm.com>
+
+ * gcc.target/s390/zvector/autovec-double-quiet-uneq.c: Expect
+ that "vx" is not emitted.
+ * gcc.target/s390/zvector/autovec-float-quiet-uneq.c: Likewise.
+
+2020-11-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/97950
+ * gcc.target/i386/pr97950.c: New test.
+
+2020-11-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/97964
+ * gcc.dg/tree-ssa/pr97964.c: New test.
+
+2020-11-24 Thomas Schwinge <thomas@codesourcery.com>
+
+ * c-c++-common/goacc/kernels-decompose-1.c: Avoid Tcl 8.5-specific
+ behavior.
+ * c-c++-common/goacc/kernels-decompose-2.c: Likewise.
+ * gfortran.dg/goacc/kernels-decompose-1.f95: Likewise.
+ * gfortran.dg/goacc/kernels-decompose-2.f95: Likewise.
+
+2020-11-24 Thomas Schwinge <thomas@codesourcery.com>
+
+ * lib/gcc-dg.exp (dg-optimized, dg-missed): Use 'saved-dg-warning'
+ instead of 'saved-dg-error'.
+
+2020-11-24 Thomas Schwinge <thomas@codesourcery.com>
+
+ * lib/gcc-dg.exp (dg-optimized, dg-missed): Fix 'process-message'
+ call.
+ * gcc.dg/vect/nodump-vect-opt-info-1.c: Demonstrate.
+ * gcc.dg/vect/nodump-vect-opt-info-2.c: Likewise.
+
+2020-11-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/97958
+ * c-c++-common/gomp/pr97958.c: New test.
+
+2020-11-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/96929
+ * gcc.dg/tree-ssa/pr96929.c: New test.
+
+2020-11-24 Jeff Law <law@redhat.com>
+
+ * gcc.dg/tree-ssa/pr23401.c: Update expected output.
+ * gcc.dg/tree-ssa/pr27810.c: Update expected output.
+ * gcc.dg/tree-ssa/slsr-8.c: Update expected output.
+
+2020-11-24 Kewen Lin <linkw@linux.ibm.com>
+
+ * gcc.dg/vect/slp-perm-1.c: Adjust for partial vectors.
+ * gcc.dg/vect/slp-perm-5.c: Likewise.
+ * gcc.dg/vect/slp-perm-6.c: Likewise.
+ * gcc.dg/vect/slp-perm-7.c: Likewise.
+
+2020-11-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
+
+ PR tree-optimization/97849
+ * gcc.dg/tree-ssa/pr97849.c: New test.
+
+2020-11-24 Martin Sebor <msebor@redhat.com>
+
+ * gcc.dg/attr-access-5.c: New test.
+
+2020-11-23 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/95630
+ * gcc.dg/c11-compare-incomplete-1.c,
+ gcc.dg/c11-compare-incomplete-2.c,
+ gcc.dg/c99-compare-incomplete-1.c,
+ gcc.dg/c99-compare-incomplete-2.c: New tests.
+
+2020-11-23 Martin Jambor <mjambor@suse.cz>
+
+ * gfortran.dg/ipcp-array-2.f90: New test.
+
+2020-11-23 Nathan Sidwell <nathan@acm.org>
+
+ * lib/prune.exp (prune_gcc_output): Adjust include stack pruning
+ for modules.
+ (print_ices): Relax regexp.
+
+2020-11-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * g++.target/msp430/data-attributes.C: Remove expected warnings for
+ "lower" attribute conflicts.
+ Adjust expected wording for "persistent" attribute misuse.
+ * gcc.target/msp430/data-attributes-2.c: Likewise.
+ * gcc.target/msp430/pr78818-auto-warn.c: Likewise.
+
+2020-11-23 Richard Biener <rguenther@suse.de>
+
+ * g++.dg/vect/simd-12.cc: New testcase.
+
+2020-11-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * gcc.c-torture/execute/noinit-attribute.c: Moved to...
+ * c-c++-common/torture/attr-noinit-main.inc: ...here.
+ * lib/target-supports.exp (check_effective_target_persistent): New.
+ * c-c++-common/torture/attr-noinit-1.c: New test.
+ * c-c++-common/torture/attr-noinit-2.c: New test.
+ * c-c++-common/torture/attr-noinit-3.c: New test.
+ * c-c++-common/torture/attr-noinit-invalid.c: New test.
+ * c-c++-common/torture/attr-persistent-1.c: New test.
+ * c-c++-common/torture/attr-persistent-2.c: New test.
+ * c-c++-common/torture/attr-persistent-3.c: New test.
+ * c-c++-common/torture/attr-persistent-invalid.c: New test.
+ * c-c++-common/torture/attr-persistent-main.inc: New test.
+
+2020-11-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * gcc.target/msp430/data-attributes-2.c: Adjust test.
+ * g++.target/msp430/data-attributes.C: New test.
+ * g++.target/msp430/msp430.exp: New test.
+
+2020-11-23 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * gcc.c-torture/execute/noinit-attribute.c: Don't override
+ optimization options set by torture test harness.
+ * lib/target-supports.exp (check_effective_target_noinit): Adjust
+ comment formatting.
+
+2020-11-23 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/cortex-m55-nodsp-flag-hard.c: Add -mthumb.
+ * gcc.target/arm/cortex-m55-nodsp-flag-softfp.c: Likewise.
+ * gcc.target/arm/cortex-m55-nodsp-nofp-flag-softfp.c: Likewise.
+ * gcc.target/arm/cortex-m55-nofp-flag-hard.c: Likewise.
+ * gcc.target/arm/cortex-m55-nofp-flag-softfp.c: Likewise.
+ * gcc.target/arm/cortex-m55-nofp-nomve-flag-softfp.c: Likewise.
+ * gcc.target/arm/cortex-m55-nomve-flag-hard.c: Likewise.
+ * gcc.target/arm/cortex-m55-nomve-flag-softfp.c: Likewise.
+ * gcc.target/arm/cortex-m55-nomve.fp-flag-hard.c: Likewise.
+ * gcc.target/arm/cortex-m55-nomve.fp-flag-softfp.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/pr97327.c: Likewise.
+
+2020-11-23 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR c++/97904
+ * g++.dg/ext/sve-sizeless-1.C: Add more template tests.
+ * g++.dg/ext/sve-sizeless-2.C: Likewise.
+
+2020-11-22 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/97873
+ * gcc.target/i386/pr97873-2.c: New test.
+
+2020-11-22 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/97889
+ * gdc.dg/torture/pr97889.d: New test.
+
+2020-11-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/95853
+ * gcc.dg/pr95853.c: New test.
+
+2020-11-21 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94695
+ * g++.dg/warn/Wrange-loop-construct2.C: New test.
+
+2020-11-21 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97846
+ * g++.dg/cpp1y/constexpr-label.C: New test.
+
+2020-11-21 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97881
+ * g++.dg/warn/Wvexing-parse9.C: New test.
+
+2020-11-21 David Edelsohn <dje.gcc@gmail.com>
+
+ * g++.dg/debug/localclass2.C: Require LTO.
+
+2020-11-21 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97839
+ * g++.dg/cpp2a/lambda-generic8.C: New test.
+
+2020-11-21 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97427
+ * g++.dg/cpp2a/constexpr-dtor10.C: New test.
+
+2020-11-21 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/vect/vect-35-big-array.c: Excpect 2 loops to be vectorized.
+ * gcc.dg/vect/vect-35.c: Excpect 2 loops to be vectorized.
+
+2020-11-21 Aaron Sawdey <acsawdey@linux.ibm.com>
+
+ * gcc.target/powerpc/mma-double-test.c (main): Call abort for failure.
+ * gcc.target/powerpc/mma-single-test.c (main): Call abort for failure.
+ * gcc.target/powerpc/pr96506.c: Rename to pr96506-1.c.
+ * gcc.target/powerpc/pr96506-2.c: New test.
+ * gcc.target/powerpc/pr96506-1.c: New file.
+
+2020-11-20 Michael Meissner <meissner@linux.ibm.com>
+
+ * gcc.dg/nextafter-2.c: Include math.h.
+
+2020-11-20 Jason Merrill <jason@redhat.com>
+
+ PR c++/97918
+ * g++.dg/debug/localclass2.C: New test.
+
+2020-11-20 Martin Sebor <msebor@redhat.com>
+
+ * gcc.dg/attr-access-4.c: New test.
+
+2020-11-20 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/97879
+ * gcc.dg/attr-access-3.c: New test.
+
+2020-11-20 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr97515.c: Check in ccp2, not evrp.
+
+2020-11-20 Andrea Corallo <andrea.corallo@arm.com>
+
+ PR target/97727
+ * gcc.target/aarch64/advsimd-intrinsics/bf16_vstN_lane_2.c: Relax
+ regexps.
+
+2020-11-20 Andrea Corallo <andrea.corallo@arm.com>
+
+ PR target/97726
+ * gcc.target/arm/simd/bf16_vldn_1.c: Relax regexps not to fail on
+ big endian.
+ * gcc.target/arm/simd/vldn_lane_bf16_1.c: Likewise
+ * gcc.target/arm/simd/vmmla_1.c: Add -mfloat-abi=hard flag.
+
+2020-11-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR libstdc++/88101
+ * c-c++-common/builtin-clear-padding-1.c: New test.
+ * c-c++-common/torture/builtin-clear-padding-1.c: New test.
+ * c-c++-common/torture/builtin-clear-padding-2.c: New test.
+ * c-c++-common/torture/builtin-clear-padding-3.c: New test.
+ * c-c++-common/torture/builtin-clear-padding-4.c: New test.
+ * c-c++-common/torture/builtin-clear-padding-5.c: New test.
+ * g++.dg/torture/builtin-clear-padding-1.C: New test.
+ * g++.dg/torture/builtin-clear-padding-2.C: New test.
+ * gcc.dg/builtin-clear-padding-1.c: New test.
+
+2020-11-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/97528
+ * gcc.target/arm/pr97528.c: New test.
+
+2020-11-20 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt90a.adb: New test.
+ * gnat.dg/opt90b.adb: Likewise.
+ * gnat.dg/opt90c.adb: Likewise.
+ * gnat.dg/opt90d.adb: Likewise.
+ * gnat.dg/opt90e.adb: Likewise.
+ * gnat.dg/opt90a_pkg.ads: New helper.
+ * gnat.dg/opt90b_pkg.ads: Likewise.
+ * gnat.dg/opt90c_pkg.ads: Likewise.
+ * gnat.dg/opt90d_pkg.ads: Likewise.
+ * gnat.dg/opt90e_pkg.ads: Likewise.
+
+2020-11-20 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/97873
+ * gcc.target/i386/pr97873.c: New test.
+ * gcc.target/i386/pr97873-1.c: New test.
+
+2020-11-20 Martin Uecker <muecker@gwdg.de>
+
+ * gcc.dg/cond-constqual-1.c: Adapt test.
+ * gcc.dg/lvalue-11.c: New test.
+ * gcc.dg/pr60195.c: Add warning.
+
+2020-11-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/91029
+ * gcc.dg/tree-ssa/pr91029-1.c: New test.
+ * gcc.dg/tree-ssa/pr91029-2.c: New test.
+
+2020-11-19 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/tree-ssa/pr93781-1.c: New.
+ * gcc.dg/tree-ssa/pr93781-2.c: New.
+ * gcc.dg/tree-ssa/pr93781-3.c: New.
+
+2020-11-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/97860
+ * gcc.dg/pr97860.c: New test.
+
+2020-11-19 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97523
+ * g++.dg/expr/anew5.C: New test.
+ * g++.dg/expr/anew6.C: New test.
+
+2020-11-19 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97895
+ * g++.dg/cpp0x/auto54.C: New test.
+
+2020-11-19 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/97905
+ * g++.dg/lookup/pr97905.C: New.
+
+2020-11-19 Dimitar Dimitrov <dimitar@dinux.eu>
+
+ * gcc.target/pru/halt.c: New test.
+ * gcc.target/pru/lmbd.c: New test.
+
+2020-11-19 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/vect/vect-cost-model-1.c: New test.
+ * gcc.dg/vect/vect-cost-model-2.c: Likewise.
+ * gcc.dg/vect/vect-cost-model-3.c: Likewise.
+ * gcc.dg/vect/vect-cost-model-4.c: Likewise.
+ * gcc.dg/vect/vect-cost-model-5.c: Likewise.
+ * gcc.dg/vect/vect-cost-model-6.c: Likewise.
+
+2020-11-19 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/pr97897.c: Add dg-options.
+
+2020-11-19 Joel Hutton <joel.hutton@arm.com>
+
+ * gcc.target/aarch64/vect-widen-lshift.c: New test.
+
+2020-11-19 Joel Hutton <joel.hutton@arm.com>
+
+ * gcc.target/aarch64/vect-widen-add.c: New test.
+ * gcc.target/aarch64/vect-widen-sub.c: New test.
+
+2020-11-19 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97901
+ * gcc.dg/torture/pr97901.c: New testcase.
+
+2020-11-19 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97897
+ * gcc.dg/pr97897.c: New testcase.
+
+2020-11-19 Uroš Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/pr97887.c: New test.
+
+2020-11-18 Roger Sayle <roger@nextmovesoftware.com>
+
+ PR middle-end/85811
+ * gcc.dg/pr85811.c: New test.
+ * gcc.dg/fold-isfinite-1.c: New test.
+ * gcc.dg/fold-isfinite-2.c: New test.
+ * gcc.dg/fold-isinf-1.c: New test.
+ * gcc.dg/fold-isinf-2.c: New test.
+ * gcc.dg/fold-isnan-1.c: New test.
+ * gcc.dg/fold-isnan-2.c: New test.
+
+2020-11-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/91029
+ PR tree-optimization/97888
+ * gcc.dg/pr91029.c: Add comment with PR number.
+ (f2): Use > 0 rather than >= 0.
+ * gcc.c-torture/execute/pr97888-1.c: New test.
+ * gcc.c-torture/execute/pr97888-2.c: New test.
+
+2020-11-18 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/97893
+ * gcc.dg/analyzer/malloc-1.c: Add CWE-690 and CWE-476 codes to
+ expected output.
+
+2020-11-18 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/vect/bb-slp-pr68892.c: Don't XFAIL the profitability
+ test for aarch64*-*-*. Allow the "BB vectorization with gaps"
+ message to be printed more than once.
+
+2020-11-18 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/vect/slp-21.c: Expect 4 SLP instances to be vectorized
+ on arm* and aarch64* targets.
+
+2020-11-18 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/vect/fast-math-vect-call-1.c: Only expect SLP to be used
+ on vect_perm3_int targets.
+ * gcc.dg/vect/slp-perm-6.c: Likewise. Only XFAIL the LOAD/STORE_LANES
+ tests on vect_perm3_int targets.
+
+2020-11-18 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/vect/vect-epilogues.c: XFAIL test for epilogue loop
+ vectorization if vect_partial_vectors_usage_2.
+
+2020-11-18 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/vect/vect-sdiv-pow2-1.c (main): Add an asm to the
+ set-up loop.
+
+2020-11-18 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/97843
+ * gdc.dg/torture/pr97843.d: New test.
+
+2020-11-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/97862
+ * c-c++-common/gomp/pr97862.c: New test.
+
+2020-11-18 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.target/riscv/arch-9.c: New.
+ * gcc.target/riscv/arch-10.c: Ditto.
+ * gcc.target/riscv/arch-11.c: Ditto.
+ * gcc.target/riscv/attribute-6.c: Remove, we don't support G
+ with version anymore.
+ * gcc.target/riscv/attribute-8.c: Reorder arch string to fit canonical
+ ordering.
+ * gcc.target/riscv/attribute-9.c: We don't emit version for
+ unknown extensions now.
+ * gcc.target/riscv/attribute-11.c: Add -misa-spec=2.2 flags.
+ * gcc.target/riscv/attribute-12.c: Ditto.
+ * gcc.target/riscv/attribute-13.c: Ditto.
+ * gcc.target/riscv/attribute-14.c: Ditto.
+ * gcc.target/riscv/attribute-15.c: New.
+ * gcc.target/riscv/attribute-16.c: Ditto.
+ * gcc.target/riscv/attribute-17.c: Ditto.
+
+2020-11-18 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.target/riscv/arch-8.c: New.
+ * gcc.target/riscv/attribute-14.c: Ditto.
+
+2020-11-18 Jiufu Guo <guojiufu@linux.ibm.com>
+
+ * gcc.dg/tree-ssa/loopclosedphi.c: New test.
+
+2020-11-17 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr91029.c: New.
+
+2020-11-17 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/97877
+ * g++.dg/lookup/pr97877.C: New.
+
+2020-11-17 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr83072.c: New.
+
+2020-11-17 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/cr-decimal-dig-3.c: New test.
+
+2020-11-17 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/c11-float-6.c, gcc.dg/c2x-float-10.c: New tests.
+
+2020-11-17 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.dg/pr25376.c: Allow .opd section.
+
+2020-11-17 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/31799
+ * gcc.target/i386/pr31799.c: New test.
+
+2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/cond_cnot_1.c: Remove XFAIL.
+ * gcc.target/aarch64/sve/cond_unary_1.c: Likewise.
+
+2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR tree-optimization/97693
+ * gcc.dg/vect/pr97693.c: New test.
+
+2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/vect/slp-46.c: XFAIL test for SLP on vect_load_lanes targets.
+
+2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/vect/aligned-section-anchors-nest-1.c: XFAIL alignment
+ test if vect_element_align_preferred.
+
+2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/vect/bb-slp-subgroups-3.c: XFAIL for variable-length vectors.
+
+2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/vect/pr65947-8.c: Expect the loop to be vectorized for SVE.
+
+2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/vect/pr97678.c: XFAIL test for SLP vectorization
+ for variable-length vectors.
+ * gcc.dg/vect/pr97835.c: Likewise.
+ * gcc.dg/vect/slp-49.c: Likewise.
+ * gcc.dg/vect/vect-outer-slp-1.c: Likewise.
+ * gcc.dg/vect/vect-outer-slp-2.c: Likewise.
+ * gcc.dg/vect/vect-outer-slp-3.c: Likewise.
+
+2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/vect/slp-reduc-4.c: XFAIL test for SLP vectorization
+ for variable-length SVE.
+ * gcc.dg/vect/slp-reduc-7.c: Likewise.
+
+2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/vect/bb-slp-43.c: Remove XFAIL for vect_variable_length.
+
+2020-11-17 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/vect/pr91750.c: Allow "[]," inside a vector(...) lane count.
+
+2020-11-17 Liu Hao <lh_mouse@126.com>
+
+ * gcc.dg/format/ms_c99-printf-3.c: Update tests.
+
+2020-11-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/90628
+ * gcc.dg/builtin-arith-overflow-4.c: New test.
+
+2020-11-17 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/guality/pr59776.c (foo): Use noipa attribute instead of
+ noinline, noclone.
+
+2020-11-17 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/avx2-vec-set-1.c: New test.
+ * gcc.target/i386/avx2-vec-set-2.c: New test.
+ * gcc.target/i386/avx512bw-vec-set-1.c: New test.
+ * gcc.target/i386/avx512bw-vec-set-2.c: New test.
+ * gcc.target/i386/avx512f-vec-set-2.c: New test.
+ * gcc.target/i386/avx512vl-vec-set-2.c: New test.
+
+2020-11-17 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/95673
+ * gcc.dg/Wstring-compare-3.c: New test.
+
+2020-11-17 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/dfp/c2x-float-dfp-7.c, gcc.dg/dfp/c2x-float-dfp-8.c: New
+ tests.
+ * gcc.dg/c2x-float-no-dfp-3.c: Also check that DEC32_SNAN,
+ DEC64_SNAN and DEC128_SNAN are not defined.
+
+2020-11-17 Joseph Myers <joseph@codesourcery.com>
+
+ * lib/target-supports.exp (check_effective_target_inff): New.
+ * gcc.dg/c11-float-4.c, gcc.dg/c11-float-5.c,
+ gcc.dg/c11-float-dfp-2.c, gcc.dg/c2x-float-2.c,
+ gcc.dg/c2x-float-3.c, gcc.dg/c2x-float-4.c, gcc.dg/c2x-float-5.c,
+ gcc.dg/c2x-float-6.c, gcc.dg/c2x-float-7.c, gcc.dg/c2x-float-8.c,
+ gcc.dg/c2x-float-9.c, gcc.dg/c2x-float-no-dfp-3.c,
+ gcc.dg/c2x-float-no-dfp-4.c, gcc.dg/dfp/c2x-float-dfp-4.c,
+ gcc.dg/dfp/c2x-float-dfp-5.c, gcc.dg/dfp/c2x-float-dfp-6.c,
+ gcc.dg/torture/float128-nan-floath.c,
+ gcc.dg/torture/float128x-nan-floath.c,
+ gcc.dg/torture/float16-nan-floath.c,
+ gcc.dg/torture/float32-nan-floath.c,
+ gcc.dg/torture/float32x-nan-floath.c,
+ gcc.dg/torture/float64-nan-floath.c,
+ gcc.dg/torture/float64x-nan-floath.c,
+ gcc.dg/torture/floatn-nan-floath.h: New tests.
+
+2020-11-16 Roger Sayle <roger@nextmovesoftware.com>
+
+ PR rtl-optimization/92180
+ * gcc.target/i386/pr92180.c: New test.
+
+2020-11-16 Harald Anlauf <anlauf@gmx.de>
+
+ * gfortran.dg/pr48958.f90: New test.
+
+2020-11-16 Jan Hubicka <jh@suse.cz>
+
+ * g++.dg/warn/uninit-1.C: New test.
+
+2020-11-16 Ilya Leoshkevich <iii@linux.ibm.com>
+
+ * gcc.target/s390/s390.exp (check_effective_target_s390_z14_hw):
+ New predicate.
+ * gcc.target/s390/vector/long-double-caller-abi-run.c: Use the
+ new predicate.
+ * gcc.target/s390/vector/long-double-copysign.c: Likewise.
+ * gcc.target/s390/vector/long-double-from-double.c: Likewise.
+ * gcc.target/s390/vector/long-double-from-float.c: Likewise.
+ * gcc.target/s390/vector/long-double-from-i16.c: Likewise.
+ * gcc.target/s390/vector/long-double-from-i32.c: Likewise.
+ * gcc.target/s390/vector/long-double-from-i64.c: Likewise.
+ * gcc.target/s390/vector/long-double-from-i8.c: Likewise.
+ * gcc.target/s390/vector/long-double-from-u16.c: Likewise.
+ * gcc.target/s390/vector/long-double-from-u32.c: Likewise.
+ * gcc.target/s390/vector/long-double-from-u64.c: Likewise.
+ * gcc.target/s390/vector/long-double-from-u8.c: Likewise.
+ * gcc.target/s390/vector/long-double-to-double.c: Likewise.
+ * gcc.target/s390/vector/long-double-to-float.c: Likewise.
+ * gcc.target/s390/vector/long-double-to-i16.c: Likewise.
+ * gcc.target/s390/vector/long-double-to-i32.c: Likewise.
+ * gcc.target/s390/vector/long-double-to-i64.c: Likewise.
+ * gcc.target/s390/vector/long-double-to-i8.c: Likewise.
+ * gcc.target/s390/vector/long-double-to-u16.c: Likewise.
+ * gcc.target/s390/vector/long-double-to-u32.c: Likewise.
+ * gcc.target/s390/vector/long-double-to-u64.c: Likewise.
+ * gcc.target/s390/vector/long-double-to-u8.c: Likewise.
+ * gcc.target/s390/vector/long-double-wfaxb.c: Likewise.
+ * gcc.target/s390/vector/long-double-wfdxb.c: Likewise.
+ * gcc.target/s390/vector/long-double-wfsxb-1.c: Likewise.
+
+2020-11-16 H.J. Lu <hjl.tools@gmail.com>
+
+ PR testsuite/97803
+ * c-c++-common/asan/pointer-compare-1.c (global1): Add
+ __attribute__((used))
+ (global2): Likewise.
+ (small_global): Likewise.
+ (large_global): Likewise.
+
+2020-11-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * gcc.dg/profile-info-section.c: New test.
+
+2020-11-16 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97838
+ * gcc.dg/vect/pr97838.c: New testcase.
+
+2020-11-16 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/97736
+ * gcc.dg/tree-ssa/switch-1.c: Prefer bit tests.
+ * g++.dg/tree-ssa/pr97736.C: New test.
+
+2020-11-16 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97835
+ * gcc.dg/vect/pr97835.c: New testcase.
+
+2020-11-16 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97830
+ * gcc.dg/pr97830.c: New testcase.
+
+2020-11-15 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * gcc.target/msp430/rtx-cost-Os-f5series.c: Adjust test to use new
+ hwmult library function name.
+
+2020-11-15 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.dg/ipa/modref-2.c: Add ilp32 expected result.
+
+2020-11-15 David Edelsohn <dje.gcc@gmail.com>
+
+ * lib/scanasm.exp (parse_section_of_symbols): Also look for AIX
+ XCOFF CSECT notation.
+ * g++.dg/opt/const4.C: Also look for AIX XCOFF "[RO]".
+ * gcc.dg/20021029-1.c: Likewise.
+ * gcc.dg/array-quals-1.c: Likewise and "[RW]".
+ * g++.dg/gomp/tls-5.C: Also look for AIX XCOFF "[TL]".
+ * gcc.dg/pr25376.c: Accept AIX decoration around named section
+ and function descriptor.
+
+2020-11-15 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * gcc.target/vax/bswapdi-1.c (dg-options): New setting.
+
+2020-11-15 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/other/abstract1.C: Adjust.
+ * g++.dg/other/abstract2.C: Adjust.
+ * g++.dg/other/abstract4.C: Adjust.
+ * g++.dg/other/abstract5.C: Adjust.
+ * g++.dg/other/abstract8.C: New test.
+ * g++.dg/template/sfinae-dr657.C: Adjust.
+ * g++.old-deja/g++.other/decl3.C: Adjust.
+
+2020-11-15 Jan Hubicka <jh@suse.cz>
+
+ * gcc.c-torture/execute/pr97836.c: New test.
+
+2020-11-14 Iain Sandoe <iain@sandoe.co.uk>
+
+ * objc.dg/pr23214.m: Use Object as the root object before
+ Darwin12 (and NSObject after).
+
+2020-11-14 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/torture/pta-ptrarith-1.c: Escape parameters.
+
+2020-11-14 Matthew Glazar <strager.nds@gmail.com>
+
+ * lib/scanasm.exp (dg-scan): Extract file globbing code ...
+ (dg_glob_remote): ... into this new procedure.
+ (scan-assembler-symbol-section): Define.
+ (scan-symbol-section): Define.
+ * g++.dg/gomp/tls-5.C: Add symbol section test.
+ * g++.dg/opt/const4.C: Likewise.
+ * gcc.dg/20021029-1.c: Likewise.
+ * gcc.dg/array-quals-1.c: Likewise.
+ * gcc.dg/darwin-sections.c: Likewise.
+ * gcc.dg/pr25376.c: Likewise.
+ * gcc.test-framework/test-framework.exp: Load scanasm and test .S files.
+ * gcc.test-framework/dg-scan-symbol-section-1-exp-F.S: New test.
+ * gcc.test-framework/dg-scan-symbol-section-2-exp-F.S: New test.
+ * gcc.test-framework/dg-scan-symbol-section-3-exp-F.S: New test.
+ * gcc.test-framework/dg-scan-symbol-section-exp-P.S: New test.
+
+2020-11-14 Monk Chiang <monk.chiang@sifive.com>
+
+ PR target/97682
+ * g++.target/riscv/pr97682.C: New test.
+ * gcc.target/riscv/interrupt-3.c: Check register for t0.
+ * gcc.target/riscv/interrupt-4.c: Likewise.
+
+2020-11-13 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/binary-constants-2.c, gcc.dg/binary-constants-3.c,
+ gcc.dg/system-binary-constants-1.c: Update expected diagnostics.
+ * gcc.dg/c11-binary-constants-1.c,
+ gcc.dg/c11-binary-constants-2.c, gcc.dg/c2x-binary-constants-1.c,
+ gcc.dg/c2x-binary-constants-2.c, gcc.dg/c2x-binary-constants-3.c:
+ New tests.
+
+2020-11-13 Jakub Jelinek <jakub@redhat.com>
+
+ * g++.dg/guality/redeclaration1.C (p): New variable.
+ (S::f): Increment what p points to before storing S::i into l. Adjust
+ gdb-test line numbers.
+ (main): Initialize p to address of an automatic variable.
+
+2020-11-13 Gergö Barany <gergo@codesourcery.com>
+ Thomas Schwinge <thomas@codesourcery.com>
+
+ * c-c++-common/goacc/kernels-decompose-1.c: New.
+ * c-c++-common/goacc/kernels-decompose-2.c: New.
+ * c-c++-common/goacc/kernels-decompose-ice-1.c: New.
+ * c-c++-common/goacc/kernels-decompose-ice-2.c: New.
+ * gfortran.dg/goacc/kernels-decompose-1.f95: New.
+ * gfortran.dg/goacc/kernels-decompose-2.f95: New.
+ * c-c++-common/goacc/if-clause-2.c: Adjust.
+ * gfortran.dg/goacc/kernels-tree.f95: Likewise.
+
+2020-11-13 Thomas Schwinge <thomas@codesourcery.com>
+
+ * c-c++-common/goacc/classify-parallel.c: Adjust.
+ * gfortran.dg/goacc/classify-parallel.f95: Likewise.
+ * c-c++-common/goacc/classify-serial.c: New.
+ * gfortran.dg/goacc/classify-serial.f95: Likewise.
+
+2020-11-13 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp2a/feat-cxx2a.C: Check it.
+
+2020-11-13 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/inh-ctor28.C: Adjust expected diagnostic.
+ * g++.dg/cpp0x/inh-ctor33.C: Likewise.
+ * g++.dg/cpp0x/using-enum-1.C: Add comment.
+ * g++.dg/cpp0x/using-enum-2.C: Allowed in C++20.
+ * g++.dg/cpp0x/using-enum-3.C: Likewise.
+ * g++.dg/cpp1z/class-deduction69.C: Adjust diagnostic.
+ * g++.dg/inherit/using5.C: Likewise.
+ * g++.dg/cpp2a/using-enum-1.C: New test.
+ * g++.dg/cpp2a/using-enum-2.C: New test.
+ * g++.dg/cpp2a/using-enum-3.C: New test.
+ * g++.dg/cpp2a/using-enum-4.C: New test.
+ * g++.dg/cpp2a/using-enum-5.C: New test.
+ * g++.dg/cpp2a/using-enum-6.C: New test.
+ * g++.dg/debug/dwarf2/using-enum.C: New test.
+
+2020-11-13 Vladimir N. Makarov <vmakarov@redhat.com>
+
+ * c-c++-common/asmgoto-2.c: Permit output in asm goto.
+ * gcc.c-torture/compile/asmgoto-2.c: New.
+ * gcc.c-torture/compile/asmgoto-3.c: New.
+ * gcc.c-torture/compile/asmgoto-4.c: New.
+ * gcc.c-torture/compile/asmgoto-5.c: New.
+
+2020-11-13 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/tree-ssa/evrp20.c
+ * gcc.dg/tree-ssa/evrp21.c
+ * gcc.dg/tree-ssa/evrp22.c
+
+2020-11-13 Martin Liska <mliska@suse.cz>
+
+ PR testsuite/97788
+ * g++.dg/ubsan/pr61272.C: Move expected error location.
+
+2020-11-13 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * gcc.c-torture/execute/index-1.c: Skip for the default MSP430 430X ISA.
+
+2020-11-13 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * gcc.target/msp430/rtx-cost-O3-default.c: New test.
+ * gcc.target/msp430/rtx-cost-O3-f5series.c: New test.
+ * gcc.target/msp430/rtx-cost-Os-default.c: New test.
+ * gcc.target/msp430/rtx-cost-Os-f5series.c: New test.
+
+2020-11-13 Jan Hubicka <jh@suse.cz>
+
+ * c-c++-common/Wstringop-overflow-2.c: Disable ICF.
+ * g++.dg/warn/Warray-bounds-8.C: Disable ICF.
+
+2020-11-13 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/tree-ssa/pr78655.c: New.
+
+2020-11-13 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * gdc.dg/pr92216.d: Update scan-assember.
+
+2020-11-13 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97812
+ * gcc.dg/torture/pr97812.c: New testcase.
+
+2020-11-13 Sudakshina Das <sudi.das@arm.com>
+
+ * g++.dg/tree-ssa/pr90883.C: Remove xfail for aarch64.
+ * gcc.dg/tree-prof/stringop-2.c: Add xfail for aarch64.
+ * gcc.target/aarch64/memset-corner-cases.c: New test.
+ * gcc.target/aarch64/memset-q-reg.c: New test.
+
+2020-11-13 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR objc/90707
+ * obj-c++.dg/property/at-property-4.mm: Add basic nullability
+ tests.
+ * objc.dg/property/at-property-4.m: Likewise.
+ * obj-c++.dg/attributes/nullability-00.mm: New test.
+ * obj-c++.dg/property/nullability-00.mm: New test.
+ * objc.dg/attributes/nullability-00.m: New test.
+ * objc.dg/property/nullability-00.m: New test.
+
+2020-11-13 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR objc/77404
+ * obj-c++.dg/attributes/class-attribute-1.mm:
+ Add Wno-objc-root-class.
+ * obj-c++.dg/attributes/class-attribute-2.mm: Likewise.
+ * obj-c++.dg/attributes/class-attribute-3.mm: Likewise.
+ * obj-c++.dg/attributes/method-deprecated-1.mm: Likewise.
+ * obj-c++.dg/attributes/method-deprecated-2.mm: Likewise.
+ * obj-c++.dg/attributes/method-deprecated-3.mm: Likewise.
+ * obj-c++.dg/attributes/method-format-1.mm: Likewise.
+ * obj-c++.dg/attributes/method-nonnull-1.mm: Likewise.
+ * obj-c++.dg/attributes/method-noreturn-1.mm: Likewise.
+ * obj-c++.dg/attributes/method-sentinel-1.mm: Likewise.
+ * obj-c++.dg/attributes/nsobject-01.mm: Likewise.
+ * obj-c++.dg/attributes/parameter-attribute-1.mm: Likewise.
+ * obj-c++.dg/attributes/parameter-attribute-2.mm: Likewise.
+ * obj-c++.dg/attributes/proto-attribute-1.mm: Likewise.
+ * obj-c++.dg/attributes/proto-attribute-3.mm: Likewise.
+ * obj-c++.dg/attributes/proto-attribute-4.mm: Likewise.
+ * obj-c++.dg/attributes/unused-parameter-1.mm: Likewise.
+ * obj-c++.dg/bad-receiver-type.mm: Likewise.
+ * obj-c++.dg/bitfield-3.mm: Likewise.
+ * obj-c++.dg/bitfield-5.mm: Likewise.
+ * obj-c++.dg/class-extension-1.mm: Likewise.
+ * obj-c++.dg/class-extension-2.mm: Likewise.
+ * obj-c++.dg/class-extension-3.mm: Likewise.
+ * obj-c++.dg/class-extension-4.mm: Likewise.
+ * obj-c++.dg/class-protocol-1.mm: Likewise.
+ * obj-c++.dg/comp-types-1.mm: Likewise.
+ * obj-c++.dg/comp-types-10.mm: Likewise.
+ * obj-c++.dg/comp-types-2.mm: Likewise.
+ * obj-c++.dg/comp-types-3.mm: Likewise.
+ * obj-c++.dg/comp-types-5.mm: Likewise.
+ * obj-c++.dg/comp-types-6.mm: Likewise.
+ * obj-c++.dg/comp-types-7.mm: Likewise.
+ * obj-c++.dg/comp-types-8.mm: Likewise.
+ * obj-c++.dg/demangle-2.mm: Likewise.
+ * obj-c++.dg/demangle-3.mm: Likewise.
+ * obj-c++.dg/duplicate-class-1.mm: Likewise.
+ * obj-c++.dg/encode-1-next.mm: Likewise.
+ * obj-c++.dg/encode-1.mm: Likewise.
+ * obj-c++.dg/enhanced-proto-2.mm: Likewise.
+ * obj-c++.dg/exceptions-1.mm: Likewise.
+ * obj-c++.dg/exceptions-3.mm: Likewise.
+ * obj-c++.dg/exceptions-4.mm: Likewise.
+ * obj-c++.dg/exceptions-5.mm: Likewise.
+ * obj-c++.dg/extern-c-1.mm: Likewise.
+ * obj-c++.dg/fobjc-std-1.mm: Likewise.
+ * obj-c++.dg/gnu-api-2-class-meta.mm: Likewise.
+ * obj-c++.dg/gnu-api-2-class.mm: Likewise.
+ * obj-c++.dg/gnu-api-2-ivar.mm: Likewise.
+ * obj-c++.dg/gnu-api-2-method.mm: Likewise.
+ * obj-c++.dg/gnu-api-2-objc.mm: Likewise.
+ * obj-c++.dg/gnu-api-2-objc_msg_lookup.mm: Likewise.
+ * obj-c++.dg/gnu-api-2-object.mm: Likewise.
+ * obj-c++.dg/gnu-api-2-property.mm: Likewise.
+ * obj-c++.dg/gnu-api-2-protocol.mm: Likewise.
+ * obj-c++.dg/gnu-api-2-resolve-method.mm: Likewise.
+ * obj-c++.dg/gnu-api-2-sel.mm: Likewise.
+ * obj-c++.dg/invalid-method-2.mm: Likewise.
+ * obj-c++.dg/ivar-invalid-type-1.mm: Likewise.
+ * obj-c++.dg/ivar-problem-1.mm: Likewise.
+ * obj-c++.dg/lto/lto.exp: Likewise.
+ * obj-c++.dg/lto/trivial-1_0.mm: Likewise.
+ * obj-c++.dg/method-1.mm: Likewise.
+ * obj-c++.dg/method-12.mm: Likewise.
+ * obj-c++.dg/method-18.mm: Likewise.
+ * obj-c++.dg/method-19.mm: Likewise.
+ * obj-c++.dg/method-20.mm: Likewise.
+ * obj-c++.dg/method-3.mm: Likewise.
+ * obj-c++.dg/method-4.mm: Likewise.
+ * obj-c++.dg/method-5.mm: Likewise.
+ * obj-c++.dg/method-8.mm: Likewise.
+ * obj-c++.dg/method-9.mm: Likewise.
+ * obj-c++.dg/method-namespace-1.mm: Likewise.
+ * obj-c++.dg/plugin/diagnostic-test-expressions-1.mm:
+ Likewise.
+ * obj-c++.dg/pr23709.mm: Likewise.
+ * obj-c++.dg/pragma-2.mm: Likewise.
+ * obj-c++.dg/private-1.mm: Likewise.
+ * obj-c++.dg/private-2.mm: Likewise.
+ * obj-c++.dg/property/property.exp: Likewise.
+ * obj-c++.dg/proto-lossage-1.mm: Likewise.
+ * obj-c++.dg/proto-lossage-5.mm: Likewise.
+ * obj-c++.dg/proto-qual-1.mm: Likewise.
+ * obj-c++.dg/protocol-inheritance-1.mm: Likewise.
+ * obj-c++.dg/protocol-inheritance-2.mm: Likewise.
+ * obj-c++.dg/protocol-optional-1.mm: Likewise.
+ * obj-c++.dg/selector-1.mm: Likewise.
+ * obj-c++.dg/selector-2.mm: Likewise.
+ * obj-c++.dg/selector-3.mm: Likewise.
+ * obj-c++.dg/selector-4.mm: Likewise.
+ * obj-c++.dg/strings/strings.exp: Likewise.
+ * obj-c++.dg/stubify-1.mm: Likewise.
+ * obj-c++.dg/stubify-2.mm: Likewise.
+ * obj-c++.dg/super-dealloc-1.mm: Likewise.
+ * obj-c++.dg/super-dealloc-2.mm: Likewise.
+ * obj-c++.dg/sync-3.mm: Likewise.
+ * obj-c++.dg/syntax-error-2.mm: Likewise.
+ * obj-c++.dg/syntax-error-4.mm: Likewise.
+ * obj-c++.dg/syntax-error-7.mm: Likewise.
+ * obj-c++.dg/syntax-error-9.mm: Likewise.
+ * obj-c++.dg/template-4.mm: Likewise.
+ * obj-c++.dg/template-7.mm: Likewise.
+ * obj-c++.dg/template-8.mm: Likewise.
+ * obj-c++.dg/threedotthree-abi-1.mm: Likewise.
+ * obj-c++.dg/torture/dg-torture.exp: Likewise.
+ * obj-c++.dg/torture/strings/strings.exp: Likewise.
+ * obj-c++.dg/try-catch-12.mm: Likewise.
+ * obj-c++.dg/try-catch-13.mm: Likewise.
+
+2020-11-13 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR objc/77404
+ * objc.dg/anon-1.m: Add Wno-objc-root-class.
+ * objc.dg/attributes/class-attribute-1.m: Likewise.
+ * objc.dg/attributes/class-attribute-2.m: Likewise.
+ * objc.dg/attributes/class-attribute-3.m: Likewise.
+ * objc.dg/attributes/method-deprecated-1.m: Likewise.
+ * objc.dg/attributes/method-deprecated-2.m: Likewise.
+ * objc.dg/attributes/method-deprecated-3.m: Likewise.
+ * objc.dg/attributes/method-format-1.m: Likewise.
+ * objc.dg/attributes/method-nonnull-1.m: Likewise.
+ * objc.dg/attributes/method-noreturn-1.m: Likewise.
+ * objc.dg/attributes/method-sentinel-1.m: Likewise.
+ * objc.dg/attributes/nsobject-01.m: Likewise.
+ * objc.dg/attributes/objc-exception-1.m: Likewise.
+ * objc.dg/attributes/parameter-attribute-1.m: Likewise.
+ * objc.dg/attributes/parameter-attribute-2.m: Likewise.
+ * objc.dg/attributes/proto-attribute-1.m: Likewise.
+ * objc.dg/attributes/proto-attribute-2.m: Likewise.
+ * objc.dg/attributes/proto-attribute-3.m: Likewise.
+ * objc.dg/attributes/proto-attribute-4.m: Likewise.
+ * objc.dg/bitfield-2.m: Likewise.
+ * objc.dg/break-in-ifstmt.m: Likewise.
+ * objc.dg/class-1.m: Likewise.
+ * objc.dg/class-extension-1.m: Likewise.
+ * objc.dg/class-extension-2.m: Likewise.
+ * objc.dg/class-extension-3.m: Likewise.
+ * objc.dg/class-extension-4.m: Likewise.
+ * objc.dg/class-protocol-1.m: Likewise.
+ * objc.dg/comp-types-7.m: Likewise.
+ * objc.dg/demangle-1.m: Likewise.
+ * objc.dg/duplicate-class-1.m: Likewise.
+ * objc.dg/encode-6-next.m: Likewise.
+ * objc.dg/encode-6.m: Likewise.
+ * objc.dg/enhanced-proto-2.m: Likewise.
+ * objc.dg/exceptions-1.m: Likewise.
+ * objc.dg/exceptions-3.m: Likewise.
+ * objc.dg/exceptions-4.m: Likewise.
+ * objc.dg/exceptions-5.m: Likewise.
+ * objc.dg/fobjc-std-1.m: Likewise.
+ * objc.dg/foreach-2.m: Likewise.
+ * objc.dg/foreach-4.m: Likewise.
+ * objc.dg/foreach-5.m: Likewise.
+ * objc.dg/fsyntax-only.m: Likewise.
+ * objc.dg/gnu-api-2-class-meta.m: Likewise.
+ * objc.dg/gnu-api-2-class.m: Likewise.
+ * objc.dg/gnu-api-2-ivar.m: Likewise.
+ * objc.dg/gnu-api-2-method.m: Likewise.
+ * objc.dg/gnu-api-2-objc.m: Likewise.
+ * objc.dg/gnu-api-2-objc_msg_lookup.m: Likewise.
+ * objc.dg/gnu-api-2-object.m: Likewise.
+ * objc.dg/gnu-api-2-property.m: Likewise.
+ * objc.dg/gnu-api-2-protocol.m: Likewise.
+ * objc.dg/gnu-api-2-resolve-method.m: Likewise.
+ * objc.dg/gnu-api-2-sel.m: Likewise.
+ * objc.dg/incomplete-type-1.m: Likewise.
+ * objc.dg/instancetype-0.m: Likewise.
+ * objc.dg/invalid-method-2.m: Likewise.
+ * objc.dg/ivar-invalid-type-1.m: Likewise.
+ * objc.dg/ivar-problem-1.m: Likewise.
+ * objc.dg/ivar-scope-1.m: Likewise.
+ * objc.dg/ivar-scope-2.m: Likewise.
+ * objc.dg/ivar-scope-4.m: Likewise.
+ * objc.dg/ivar-visibility-1.m: Likewise.
+ * objc.dg/ivar-visibility-2.m: Likewise.
+ * objc.dg/ivar-visibility-3.m: Likewise.
+ * objc.dg/ivar-visibility-4.m: Likewise.
+ * objc.dg/local-decl-1.m: Likewise.
+ * objc.dg/lto/lto.exp: Likewise.
+ * objc.dg/lto/trivial-1_0.m: Likewise.
+ * objc.dg/method-1.m: Likewise.
+ * objc.dg/method-12.m: Likewise.
+ * objc.dg/method-13.m: Likewise.
+ * objc.dg/method-14.m: Likewise.
+ * objc.dg/missing-proto-3.m: Likewise.
+ * objc.dg/next-runtime-1.m: Likewise.
+ * objc.dg/objc-foreach-1.m: Likewise.
+ * objc.dg/objc-foreach-2.m: Likewise.
+ * objc.dg/objc-foreach-3.m: Likewise.
+ * objc.dg/objc-nofilename-1.m: Likewise.
+ * objc.dg/param-1.m: Likewise.
+ * objc.dg/pch/pch.exp: Likewise.
+ * objc.dg/plugin/diagnostic-test-expressions-1.m: Likewise.
+ * objc.dg/pr23709.m: Likewise.
+ * objc.dg/private-1.m: Likewise.
+ * objc.dg/private-2.m: Likewise.
+ * objc.dg/property/property.exp: Likewise.
+ * objc.dg/proto-hier-1.m: Likewise.
+ * objc.dg/proto-hier-2.m: Likewise.
+ * objc.dg/proto-lossage-1.m: Likewise.
+ * objc.dg/proto-lossage-5.m: Likewise.
+ * objc.dg/proto-qual-1.m: Likewise.
+ * objc.dg/protocol-inheritance-1.m: Likewise.
+ * objc.dg/protocol-inheritance-2.m: Likewise.
+ * objc.dg/protocol-optional-1.m: Likewise.
+ * objc.dg/selector-1.m: Likewise.
+ * objc.dg/selector-2.m: Likewise.
+ * objc.dg/selector-3.m: Likewise.
+ * objc.dg/selector-4.m: Likewise.
+ * objc.dg/shadow-1.m: Likewise.
+ * objc.dg/shadow-2.m: Likewise.
+ * objc.dg/special/load-category-1.m: Likewise.
+ * objc.dg/special/load-category-2.m: Likewise.
+ * objc.dg/special/load-category-3.m: Likewise.
+ * objc.dg/special/special.exp: Likewise.
+ * objc.dg/special/unclaimed-category-1.h: Likewise.
+ * objc.dg/special/unclaimed-category-1.m: Likewise.
+ * objc.dg/stabs-1.m: Likewise.
+ * objc.dg/strings/strings.exp: Likewise.
+ * objc.dg/stubify-1.m: Likewise.
+ * objc.dg/stubify-2.m: Likewise.
+ * objc.dg/super-class-2.m: Likewise.
+ * objc.dg/super-dealloc-1.m: Likewise.
+ * objc.dg/super-dealloc-2.m: Likewise.
+ * objc.dg/sync-3.m: Likewise.
+ * objc.dg/threedotthree-abi-1.m: Likewise.
+ * objc.dg/torture/dg-torture.exp: Likewise.
+ * objc.dg/torture/strings/strings.exp: Likewise.
+ * objc.dg/try-catch-11.m: Likewise.
+ * objc.dg/try-catch-12.m: Likewise.
+ * objc.dg/type-size-2.m: Likewise.
+ * objc.dg/type-size-3.m: Likewise.
+ * objc.dg/type-size-4.m: Likewise.
+ * objc.dg/type-size-5.m: Likewise.
+ * objc.dg/undeclared-selector.m: Likewise.
+ * objc.dg/volatile-1.m: Likewise.
+
+2020-11-13 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR objc/77404
+ * objc.dg/attributes/root-class-01.m: New test.
+ * objc.dg/root-class-00.m: New test.
+ * obj-c++.dg/attributes/root-class-01.mm: New test.
+ * obj-c++.dg/root-class-00.mm: New test.
+
+2020-11-13 Patrick Palka <ppalka@redhat.com>
+
+ * g++.dg/cpp2a/concepts-decltype3.C: New test.
+
+2020-11-12 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/87291
+ * jit.dg/jit.exp: Load target-supports-dg.exp.
+ Set dg-do-what-default.
+ (jit-dg-test): Set dg-do-what and call dg-get-options, skipping
+ the test if it's not supported on the given target.
+ * jit.dg/test-asm.c: New test.
+ * jit.dg/test-asm.cc: New test.
+
+2020-11-12 David Malcolm <dmalcolm@redhat.com>
+
+ * jit.dg/test-debug-strings.c (create_code): Add tests of
+ string literal escaping.
+
+2020-11-12 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/c2x-has-c-attribute-1.c, gcc.dg/c2x-has-c-attribute-2.c,
+ gcc.dg/c2x-has-c-attribute-3.c, gcc.dg/c2x-has-c-attribute-4.c:
+ New tests.
+
+2020-11-12 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/97782
+ * gfortran.dg/goacc/classify-kernels-unparallelized.f95: Move dg-message
+ one line up.
+ * gfortran.dg/goacc/classify-kernels.f95: Likewise.
+
+2020-11-12 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ * gfortran.dg/entry_23.f: New test.
+
+2020-11-12 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/97730
+ * gcc.target/aarch64/sve2/bcax_1.c (OP): Add missing bitwise not
+ to match correct bcax semantics.
+ * gcc.dg/vect/pr97730.c: New test.
+
+2020-11-12 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97806
+ * gcc.dg/pr97806.c: New testcase.
+
+2020-11-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/97790
+ * g++.dg/cpp2a/constexpr-dtor9.C: New test.
+
+2020-11-12 Jason Merrill <jason@redhat.com>
+
+ PR debug/97060
+ * gcc.dg/debug/dwarf2/pr97060.c: New test.
+
+2020-11-12 Kewen Lin <linkw@linux.ibm.com>
+
+ * gcc.dg/tree-ssa/pr96789.c: Adjusted by disabling loop
+ vectorization.
+
+2020-11-12 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/setjmp-5.c: Update expected path output to show
+ an event where the pertinent stack frame is popped. Update
+ expected message from final event to reference this event.
+
+2020-11-12 David Malcolm <dmalcolm@redhat.com>
+
+ PR tree-optimization/97424
+ * gcc.dg/analyzer/invalid-shift-1.c: New test.
+
+2020-11-11 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/88115
+ * g++.dg/abi/macro0.C: Adjust.
+ * g++.dg/cpp0x/alignof7.C: New test.
+ * g++.dg/cpp0x/alignof8.C: New test.
+
+2020-11-11 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/88115
+ * g++.dg/cpp0x/alignof6.C: New test.
+
+2020-11-11 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97518
+ * g++.dg/diagnostic/static_assert3.C: New test.
+
+2020-11-11 Jakub Jelinek <jakub@redhat.com>
+
+ * gfortran.dg/gomp/workshare-reduction-3.f90: Use (?:_ull)? instead
+ of (?:_ull) in the scan-tree-dump-times directives.
+ * gfortran.dg/gomp/workshare-reduction-26.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-27.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-28.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-36.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-37.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-38.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-39.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-40.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-41.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-42.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-43.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-44.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-45.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-46.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-47.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-56.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-57.f90: Likewise.
+
+2020-11-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/bias2.adb: New test.
+
+2020-11-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt89.adb: New test.
+
+2020-11-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/shift1.adb: New test.
+
+2020-11-11 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/97797
+ * gcc.dg/torture/ssa-fre-5.c: Use __SIZETYPE__ where
+ appropriate.
+ * gcc.dg/torture/ssa-fre-6.c: Likewise.
+
+2020-11-11 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97623
+ * gcc.dg/tree-ssa/ssa-hoist-3.c: Adjust.
+ * gcc.dg/tree-ssa/ssa-hoist-7.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-pre-30.c: Likewise.
+
+2020-11-11 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/cmp_1.c: New test.
+ * gcc.target/aarch64/sve/cmp_2.c: Likewise.
+ * gcc.target/aarch64/sve/cond_arith_1.c: Add --param
+ aarch64-sve-compare-costs=0
+ * gcc.target/aarch64/sve/cond_arith_1_run.c: Likewise.
+ * gcc.target/aarch64/sve/cond_arith_3.c: Likewise.
+ * gcc.target/aarch64/sve/cond_arith_3_run.c: Likewise.
+ * gcc.target/aarch64/sve/mask_gather_load_7.c: Likewise.
+ * gcc.target/aarch64/sve/mask_load_slp_1.c: Likewise.
+ * gcc.target/aarch64/sve/vcond_11.c: Likewise.
+ * gcc.target/aarch64/sve/vcond_11_run.c: Likewise.
+
+2020-11-11 Hongtao Liu <hongtao.liu@intel.com>
+ Hongyu Wang <hongyu.wang@intel.com>
+
+ * gcc.target/i386/avx512vl-vnni-1.c: Rename..
+ * gcc.target/i386/avx512vl-vnni-1a.c: To This.
+ * gcc.target/i386/avx512vl-vnni-1b.c: New test.
+ * gcc.target/i386/avx512vl-vnni-2.c: Ditto.
+ * gcc.target/i386/avx512vl-vnni-3.c: Ditto.
+ * gcc.target/i386/avx-vnni-1.c: Ditto.
+ * gcc.target/i386/avx-vnni-2.c: Ditto.
+ * gcc.target/i386/avx-vnni-3.c: Ditto.
+ * gcc.target/i386/avx-vnni-4.c: Ditto.
+ * gcc.target/i386/avx-vnni-5.c: Ditto.
+ * gcc.target/i386/avx-vnni-6.c: Ditto.
+ * gcc.target/i386/avx-vpdpbusd-2.c: Ditto.
+ * gcc.target/i386/avx-vpdpbusds-2.c: Ditto.
+ * gcc.target/i386/avx-vpdpwssd-2.c: Ditto.
+ * gcc.target/i386/avx-vpdpwssds-2.c: Ditto.
+ * gcc.target/i386/vnni_inline_error.c: Ditto.
+ * gcc.target/i386/avx512vnnivl-builtin.c: Ditto.
+ * gcc.target/i386/avxvnni-builtin.c: Ditto.
+ * gcc.target/i386/funcspec-56.inc: Add new target attribute.
+ * gcc.target/i386/sse-12.c: Add -mavxvnni.
+ * gcc.target/i386/sse-13.c: Ditto.
+ * gcc.target/i386/sse-14.c: Ditto.
+ * gcc.target/i386/sse-22.c: Ditto.
+ * gcc.target/i386/sse-23.c: Ditto.
+ * g++.dg/other/i386-2.C: Ditto.
+ * g++.dg/other/i386-3.C: Ditto.
+ * lib/target-supports.exp (check_effective_target_avxvnni):
+ New proc.
+
+2020-11-11 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/workshare-reduction-26.f90: Add (?:_ull) to
+ scan-tree-dump-times regex for -m32.
+ * gfortran.dg/gomp/workshare-reduction-27.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-28.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-3.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-36.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-37.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-38.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-39.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-40.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-41.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-42.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-43.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-44.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-45.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-46.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-47.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-56.f90: Likewise.
+ * gfortran.dg/gomp/workshare-reduction-57.f90: Likewise.
+
+2020-11-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/97768
+ * gfortran.dg/pr97768_1.f90: New test.
+ * gfortran.dg/pr97768_2.f90: New test.
+
+2020-11-11 Nagaraju Mekala <nmekala@xilinx.com>
+
+ * gcc.target/microblaze/others/strings1.c: Update
+ to include $LC label.
+
+2020-11-11 David Edelsohn <dje.gcc@gmail.com>
+
+ * c-c++-common/zero-scratch-regs-10.c: Skip on powerpc*-*-*.
+ * c-c++-common/zero-scratch-regs-11.c: Skip on powerpc*-*-*.
+ * c-c++-common/zero-scratch-regs-5.c: Skip on powerpc*-*-aix*.
+ * c-c++-common/zero-scratch-regs-8.c: Skip on powerpc*-*-*.
+ * c-c++-common/zero-scratch-regs-9.c: Skip on powerpc*-*-*.
+
+2020-11-10 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97518
+ * g++.dg/diagnostic/pr87386.C: Adjust expected output.
+ * g++.dg/diagnostic/static_assert1.C: New test.
+ * g++.dg/diagnostic/static_assert2.C: New test.
+
+2020-11-10 Marek Polacek <polacek@redhat.com>
+
+ PR c++/52830
+ PR c++/88982
+ PR c++/90799
+ PR c++/87765
+ PR c++/89565
+ * g++.dg/cpp0x/constexpr-52830.C: New test.
+ * g++.dg/cpp0x/vt-88982.C: New test.
+ * g++.dg/cpp1z/class-deduction76.C: New test.
+ * g++.dg/cpp1z/constexpr-lambda26.C: New test.
+ * g++.dg/cpp2a/nontype-class39.C: New test.
+
+2020-11-10 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/schedule-modifiers-2.f90: Remove some dg-error.
+ * gfortran.dg/gomp/reduction4.f90: New test.
+ * gfortran.dg/gomp/reduction5.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-1.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-2.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-3.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-4.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-5.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-6.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-7.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-8.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-9.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-10.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-11.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-12.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-13.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-14.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-15.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-16.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-17.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-18.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-19.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-20.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-21.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-22.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-23.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-24.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-25.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-26.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-27.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-28.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-29.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-30.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-31.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-32.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-33.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-34.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-35.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-36.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-37.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-38.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-39.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-40.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-41.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-42.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-43.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-44.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-45.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-46.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-47.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-48.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-49.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-50.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-51.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-52.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-53.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-54.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-55.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-56.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-57.f90: New test.
+ * gfortran.dg/gomp/workshare-reduction-58.f90: New test.
+
+2020-11-10 Matthew Malcomson <matthew.malcomson@arm.com>
+
+ * c-c++-common/ubsan/sanitize-recover-7.c: Update testcase.
+
+2020-11-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/97748
+ * c-c++-common/Wunused-value-1.c: New test.
+
+2020-11-10 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97769
+ * gcc.dg/vect/pr97769.c: New testcase.
+
+2020-11-10 Chung-Lin Tang <cltang@codesourcery.com>
+
+ * c-c++-common/gomp/clauses-2.c: Remove dg-error cases now valid.
+ * gfortran.dg/gomp/map-2.f90: Likewise.
+ * c-c++-common/gomp/map-5.c: New testcase.
+
+2020-11-10 Ilya Leoshkevich <iii@linux.ibm.com>
+
+ * gcc.target/s390/vector/long-double-callee-abi-scan.c: New test.
+ * gcc.target/s390/vector/long-double-caller-abi-run.c: New test.
+ * gcc.target/s390/vector/long-double-caller-abi-scan.c: New test.
+ * gcc.target/s390/vector/long-double-copysign.c: New test.
+ * gcc.target/s390/vector/long-double-fprx2-constant.c: New test.
+ * gcc.target/s390/vector/long-double-from-double.c: New test.
+ * gcc.target/s390/vector/long-double-from-float.c: New test.
+ * gcc.target/s390/vector/long-double-from-i16.c: New test.
+ * gcc.target/s390/vector/long-double-from-i32.c: New test.
+ * gcc.target/s390/vector/long-double-from-i64.c: New test.
+ * gcc.target/s390/vector/long-double-from-i8.c: New test.
+ * gcc.target/s390/vector/long-double-from-u16.c: New test.
+ * gcc.target/s390/vector/long-double-from-u32.c: New test.
+ * gcc.target/s390/vector/long-double-from-u64.c: New test.
+ * gcc.target/s390/vector/long-double-from-u8.c: New test.
+ * gcc.target/s390/vector/long-double-to-double.c: New test.
+ * gcc.target/s390/vector/long-double-to-float.c: New test.
+ * gcc.target/s390/vector/long-double-to-i16.c: New test.
+ * gcc.target/s390/vector/long-double-to-i32.c: New test.
+ * gcc.target/s390/vector/long-double-to-i64.c: New test.
+ * gcc.target/s390/vector/long-double-to-i8.c: New test.
+ * gcc.target/s390/vector/long-double-to-u16.c: New test.
+ * gcc.target/s390/vector/long-double-to-u32.c: New test.
+ * gcc.target/s390/vector/long-double-to-u64.c: New test.
+ * gcc.target/s390/vector/long-double-to-u8.c: New test.
+ * gcc.target/s390/vector/long-double-vec-duplicate.c: New test.
+ * gcc.target/s390/vector/long-double-wf.h: New test.
+ * gcc.target/s390/vector/long-double-wfaxb.c: New test.
+ * gcc.target/s390/vector/long-double-wfcxb-0001.c: New test.
+ * gcc.target/s390/vector/long-double-wfcxb-0111.c: New test.
+ * gcc.target/s390/vector/long-double-wfcxb-1011.c: New test.
+ * gcc.target/s390/vector/long-double-wfcxb-1101.c: New test.
+ * gcc.target/s390/vector/long-double-wfdxb.c: New test.
+ * gcc.target/s390/vector/long-double-wfixb.c: New test.
+ * gcc.target/s390/vector/long-double-wfkxb-0111.c: New test.
+ * gcc.target/s390/vector/long-double-wfkxb-1011.c: New test.
+ * gcc.target/s390/vector/long-double-wfkxb-1101.c: New test.
+ * gcc.target/s390/vector/long-double-wflcxb.c: New test.
+ * gcc.target/s390/vector/long-double-wflpxb.c: New test.
+ * gcc.target/s390/vector/long-double-wfmaxb-2.c: New test.
+ * gcc.target/s390/vector/long-double-wfmaxb-3.c: New test.
+ * gcc.target/s390/vector/long-double-wfmaxb-disabled.c: New test.
+ * gcc.target/s390/vector/long-double-wfmaxb.c: New test.
+ * gcc.target/s390/vector/long-double-wfmsxb-disabled.c: New test.
+ * gcc.target/s390/vector/long-double-wfmsxb.c: New test.
+ * gcc.target/s390/vector/long-double-wfmxb.c: New test.
+ * gcc.target/s390/vector/long-double-wfnmaxb-disabled.c: New test.
+ * gcc.target/s390/vector/long-double-wfnmaxb.c: New test.
+ * gcc.target/s390/vector/long-double-wfnmsxb-disabled.c: New test.
+ * gcc.target/s390/vector/long-double-wfnmsxb.c: New test.
+ * gcc.target/s390/vector/long-double-wfsqxb.c: New test.
+ * gcc.target/s390/vector/long-double-wfsxb-1.c: New test.
+ * gcc.target/s390/vector/long-double-wfsxb.c: New test.
+ * gcc.target/s390/vector/long-double-wftcixb-1.c: New test.
+ * gcc.target/s390/vector/long-double-wftcixb.c: New test.
+
+2020-11-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt88.adb: New test.
+
+2020-11-10 David Candler <david.candler@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/vqrshrn_high_n.c: Added skip
+ directive.
+ * gcc.target/aarch64/advsimd-intrinsics/vqrshrun_high_n.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqshrn_high_n.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqshrun_high_n.c: Likewise.
+
+2020-11-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/97764
+ * gcc.c-torture/execute/pr97764.c: New test.
+
+2020-11-10 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/95847
+ * gfortran.dg/coverage.f90: New test.
+
+2020-11-10 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97760
+ * gcc.dg/vect/pr97760.c: New testcase.
+
+2020-11-10 Aldy Hernandez <aldyh@redhat.com>
+
+ * g++.dg/opt/pr97767.C: New test.
+
+2020-11-10 hongyuw1 <hongyuw1@intel.com>
+
+ * gcc.target/i386/keylocker-aesdec128kl.c: Adjust regex patterns.
+ * gcc.target/i386/keylocker-aesdec256kl.c: Likewise.
+ * gcc.target/i386/keylocker-aesdecwide128kl.c: Likewise.
+ * gcc.target/i386/keylocker-aesdecwide256kl.c: Likewise.
+ * gcc.target/i386/keylocker-aesenc128kl.c: Likewise.
+ * gcc.target/i386/keylocker-aesencwide128kl.c: Likewise.
+ * gcc.target/i386/keylocker-aesencwide256kl.c: Likewise.
+ * gcc.target/i386/keylocker-encodekey128.c: Likewise.
+ * gcc.target/i386/keylocker-encodekey256.c: Likewise.
+ * gcc.target/i386/keylocker-aesenc256kl.c: New test.
+
+2020-11-10 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr97567-2.c: New.
+
+2020-11-09 Marek Polacek <polacek@redhat.com>
+
+ DR 1914
+ * c-c++-common/attr-fallthrough-2.c: Adjust dg-warning.
+ * g++.dg/cpp0x/fallthrough2.C: Likewise.
+ * g++.dg/cpp0x/gen-attrs-60.C: Turn dg-error into dg-warning.
+ * g++.dg/cpp1y/attr-deprecated-2.C: Likewise.
+ * g++.dg/cpp2a/attr-likely2.C: Adjust dg-warning.
+ * g++.dg/cpp2a/nodiscard-once.C: Turn dg-error into dg-warning.
+ * g++.dg/cpp0x/gen-attrs-72.C: New test.
+
+2020-11-09 Patrick Palka <ppalka@redhat.com>
+
+ * g++.dg/cpp2a/concepts-decltype2.C: New file.
+
+2020-11-09 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/93907
+ * g++.dg/cpp2a/concepts-using3.C: New test, based off of
+ concepts-using2.C.
+
+2020-11-09 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/lookup/using26.C: Adjust location.
+ * g++.old-deja/g++.other/using1.C: Adjust location.
+
+2020-11-09 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97762
+ * g++.dg/warn/Wvexing-parse8.C: New test.
+
+2020-11-09 Patrick Palka <ppalka@redhat.com>
+
+ * gcc.dg/pragma-diag-6.c: Adjust expected diagnostics
+ accordingly.
+
+2020-11-09 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/90111
+ * gfortran.dg/goacc/specification-part.f90: New test.
+
+2020-11-09 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97761
+ * gfortran.dg/vect/pr97761.f90: New testcase.
+
+2020-11-09 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97753
+ * gcc.dg/vect/pr97753.c: New testcase.
+
+2020-11-09 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97746
+ * gcc.dg/vect/bb-slp-pr97746.c: New testcase.
+
+2020-11-09 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/arm/simd/vld1_lane_bf16_1.c: Require target to
+ support and add -mfloat-abi=hard flag.
+ * gcc.target/arm/simd/vld1_lane_bf16_indices_1.c: Likewise.
+ * gcc.target/arm/simd/vld1q_lane_bf16_indices_1.c: Likewise.
+ * gcc.target/arm/simd/vst1_lane_bf16_1.c: Likewise.
+ * gcc.target/arm/simd/vst1_lane_bf16_indices_1.c: Likewise.
+ * gcc.target/arm/simd/vstq1_lane_bf16_indices_1.c: Likewise.
+
+2020-11-08 Iain Sandoe <iain@sandoe.co.uk>
+
+ * obj-c++.dg/property/at-property-4.mm: Test handling class
+ attributes.
+ * objc.dg/property/at-property-4.m: Likewise.
+
+2020-11-08 Iain Sandoe <iain@sandoe.co.uk>
+
+ * c-c++-common/zero-scratch-regs-10.c: Skip for powerpc
+ Darwin.
+ * c-c++-common/zero-scratch-regs-11.c: Likewise.
+ * c-c++-common/zero-scratch-regs-8.c: Likewise.
+ * c-c++-common/zero-scratch-regs-9.c: Likewise.
+
+2020-11-08 Iain Sandoe <iain@sandoe.co.uk>
+
+ * gcc.target/i386/builtin_thread_pointer.c: Require native TLS.
+
+2020-11-07 Marek Polacek <polacek@redhat.com>
+
+ * c-c++-common/Wimplicit-fallthrough-20.c: Adjust dg-warning.
+
+2020-11-07 Iain Sandoe <iain@sandoe.co.uk>
+
+ * obj-c++.dg/property/at-property-4.mm: Test atomic property
+ attribute.
+ * objc.dg/property/at-property-4.m: Likewise.
+
+2020-11-07 Iain Sandoe <iain@sandoe.co.uk>
+
+ * obj-c++.dg/attributes/nsobject-01.mm: New test.
+ * objc.dg/attributes/nsobject-01.m: New test.
+
+2020-11-07 Iain Sandoe <iain@sandoe.co.uk>
+
+ * c-c++-common/zero-scratch-regs-10.c: XFAIL for
+ powerpc-darwin.
+ * c-c++-common/zero-scratch-regs-11.c: Likewise.
+ * c-c++-common/zero-scratch-regs-8.c: Likewise.
+ * c-c++-common/zero-scratch-regs-9.c: Likewise.
+
+2020-11-07 Martin Uecker <muecker@gwdg.de>
+
+ * c-c++-common/attr-fallthrough-2.c: Update compiler flags.
+ * c-c++-common/Wimplicit-fallthrough-20.c: Adapt test.
+ * gcc.dg/20031223-1.c: Update compiler flags and adapt test.
+ * gcc.dg/c11-labels-1.c: New test.
+ * gcc.dg/c11-labels-2.c: New test.
+ * gcc.dg/c11-labels-3.c: New test.
+ * gcc.dg/c2x-attr-syntax-3.c: Adapt test.
+ * gcc.dg/c2x-labels-1.c: New test.
+ * gcc.dg/c2x-labels-2.c: New test.
+ * gcc.dg/c2x-labels-3.c: New test.
+ * gcc.dg/decl-9.c: Update compiler flags and add error.
+ * gcc.dg/gomp/barrier-2.c: Update compiler flags and add warning.
+ * gcc.dg/gomp/declare-simd-5.c: Update compiler flags and adapt test.
+ * gcc.dg/gomp/declare-variant-2.c: Update compiler flags and add error.
+ * gcc.dg/label-compound-stmt-1.c: Update compiler flags.
+ * gcc.dg/parse-decl-after-label.c: Update compiler flags.
+
+2020-11-06 Peter Bergner <bergner@linux.ibm.com>
+
+ * gcc.target/powerpc/pr64505.c: Run everywhere. Use correct minimized
+ test case.
+
+2020-11-06 Peter Bergner <bergner@linux.ibm.com>
+
+ * gcc.target/powerpc/mma-alignment.c: New test.
+
+2020-11-06 Jeff Law <law@torsion.usersys.redhat.com>
+
+ PR target/91489
+ * gcc.target/i386/ms_hook_prologue.c: Expand testcase
+ to reproduce PR target/91489 issue.
+
+2020-11-06 Joseph Myers <joseph@codesourcery.com>
+
+ * lib/target-supports.exp
+ (check_effective_target_fenv_exceptions_dfp): New.
+ * gcc.dg/dfp/builtin-snan-1.c, gcc.dg/dfp/builtin-snan-2.c: New
+ tests.
+
+2020-11-06 Marek Polacek <polacek@redhat.com>
+
+ PR c++/81660
+ * g++.dg/warn/Wexceptions3.C: New test.
+ * g++.dg/eh/pr42859.C: Add dg-warning.
+ * g++.dg/torture/pr81659.C: Likewise.
+
+2020-11-06 Iain Sandoe <iain@sandoe.co.uk>
+
+ * obj-c++.dg/property/at-property-1.mm: Adjust expected
+ diagnostics.
+ * obj-c++.dg/property/at-property-29.mm: Likewise.
+ * obj-c++.dg/property/at-property-4.mm: Likewise.
+ * obj-c++.dg/property/property-neg-2.mm: Likewise.
+ * objc.dg/property/at-property-1.m: Likewise.
+ * objc.dg/property/at-property-29.m: Likewise.
+ * objc.dg/property/at-property-4.m: Likewise.
+ * objc.dg/property/at-property-5.m: Likewise.
+ * objc.dg/property/property-neg-2.m: Likewise.
+
+2020-11-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/67453
+ * g++.dg/ext/attr-used-2.C: New test.
+
+2020-11-06 Iain Sandoe <iain@sandoe.co.uk>
+
+ * gcc.dg/darwin-minversion-link.c: Allow for Darwin19 (macOS 10.15)
+ and Darwin20 (macOS 11.0).
+
+2020-11-06 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr97737.c: New.
+ * gcc.dg/pr97741.c: New.
+
+2020-11-06 David Candler <david.candler@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/vqrshrn_high_n.c: New testcase.
+ * gcc.target/aarch64/advsimd-intrinsics/vqrshrun_high_n.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqshrn_high_n.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vqshrun_high_n.c: Likewise.
+ * gcc.target/aarch64/narrow_high-intrinsics.c: Update expected assembler
+ for sqshrun2, sqrshrun2, sqshrn2, uqshrn2, sqrshrn2 and uqrshrn2.
+
+2020-11-06 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/dup_lane_2.c: New test.
+ * gcc.target/aarch64/sve/dup_lane_3.c: Likewise.
+ * gcc.target/aarch64/sve/ext_4.c: Likewise.
+ * gcc.target/aarch64/sve/rev_2.c: Likewise.
+ * gcc.target/aarch64/sve/revhw_1.c: Likewise.
+ * gcc.target/aarch64/sve/revhw_2.c: Likewise.
+ * gcc.target/aarch64/sve/slp_perm_8.c: Likewise.
+ * gcc.target/aarch64/sve/trn1_2.c: Likewise.
+ * gcc.target/aarch64/sve/trn2_2.c: Likewise.
+ * gcc.target/aarch64/sve/uzp1_2.c: Likewise.
+ * gcc.target/aarch64/sve/uzp2_2.c: Likewise.
+ * gcc.target/aarch64/sve/zip1_2.c: Likewise.
+ * gcc.target/aarch64/sve/zip2_2.c: Likewise.
+
+2020-11-06 Martin Liska <mliska@suse.cz>
+
+ * gcc.dg/tree-ssa/switch-4.c: New test.
+
+2020-11-06 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97706
+ * gcc.dg/vect/bb-slp-pr97706.c: New testcase.
+
+2020-11-06 Kewen Lin <linkw@linux.ibm.com>
+
+ PR gcov-profile/97461
+ * gcc.dg/tree-prof/pr97461.c: Return aligned memory.
+
+2020-11-06 Thomas Schwinge <thomas@codesourcery.com>
+
+ * gfortran.dg/goacc/loop-2-parallel-3.f95: Adjust.
+
+2020-11-06 Thomas Schwinge <thomas@codesourcery.com>
+
+ * gfortran.dg/goacc/loop-6.f95: Remove.
+
+2020-11-06 Thomas Schwinge <thomas@codesourcery.com>
+
+ * gfortran.dg/goacc/loop-5.f95: Remove.
+
+2020-11-06 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/goacc-gomp/goacc-gomp.exp: New.
+ * gfortran.dg/goacc-gomp/atomic.f90: New test.
+ * gfortran.dg/goacc/atomic.f90: New test.
+
+2020-11-06 Tobias Burnus <tobias@codesourcery.com>
+
+ * c-c++-common/goacc-gomp/atomic.c: New test.
+ * c-c++-common/goacc/atomic.c: New test.
+
+2020-11-06 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97732
+ * gcc.dg/vect/bb-slp-pr97732.c: New testcase.
+
+2020-11-06 Olivier Hainque <hainque@adacore.com>
+
+ * gcc.target/i386/fentryname1.c: Add dg-require-profiling.
+ * gcc.target/i386/fentryname2.c: Likewise.
+ * gcc.target/i386/fentryname3.c: Likewise.
+ * gcc.target/i386/returninst1.c: Likewise.
+ * gcc.target/i386/returninst2.c: Likewise.
+ * gcc.target/i386/returninst3.c: Likewise.
+
+2020-11-06 Olivier Hainque <hainque@adacore.com>
+
+ * g++.dg/pr57878.C: Add dg-require-effective-target fpic.
+ * g++.dg/pr65032.C: Likewise.
+ * g++.dg/pr84279.C: Likewise.
+ * g++.dg/inherit/thunk8.C: Likewise.
+ * g++.dg/opt/pr64411.C: Likewise.
+
+2020-11-06 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/ipa/modref-2.c: New test.
+ * gcc.dg/lto/modref-2_0.c: New test.
+
+2020-11-06 Jeff Law <law@redhat.com>
+
+ * gcc.dg/no-strict-overflow-4.c: Adjust expected output.
+
+2020-11-06 Eugene Rozenfeld <erozen@microsoft.com>
+
+ * gcc.dg/self-right-shift.c: New test.
+
+2020-11-06 Kito Cheng <kito.cheng@sifive.com>
+
+ PR target/96307
+ * gcc.dg/pr96307.c: New.
+ * gcc.target/riscv/pr96260.c: Move this test case from here to ...
+ * gcc.dg/pr96260.c: ... here.
+ * gcc.target/riscv/pr91441.c: Move this test case from here to ...
+ * gcc.dg/pr91441.c: ... here.
+ * lib/target-supports.exp (check_effective_target_no_fsanitize_address):
+ New proc.
+
+2020-11-05 Marek Polacek <polacek@redhat.com>
+
+ PR c++/78209
+ * g++.dg/cpp1y/decltype-auto1.C: New test.
+
+2020-11-05 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97675
+ * g++.old-deja/g++.eh/catch10.C: Adjust dg-warning.
+ * g++.dg/warn/Wexceptions1.C: New test.
+ * g++.dg/warn/Wexceptions2.C: New test.
+
+2020-11-05 Marek Polacek <polacek@redhat.com>
+
+ PR c++/25814
+ * g++.dg/cpp2a/fn-template16.C: Add a dg-warning.
+ * g++.dg/cpp2a/fn-template7.C: Likewise.
+ * g++.dg/lookup/pr80891-5.C: Likewise.
+ * g++.dg/lto/pr79050_0.C: Add extern.
+ * g++.dg/lto/pr84805_0.C: Likewise.
+ * g++.dg/parse/pr58898.C: Add a dg-warning.
+ * g++.dg/template/scope5.C: Likewise.
+ * g++.old-deja/g++.brendan/recurse.C: Likewise.
+ * g++.old-deja/g++.jason/template4.C: Likewise.
+ * g++.old-deja/g++.law/arm4.C: Likewise.
+ * g++.old-deja/g++.mike/for2.C: Likewise.
+ * g++.old-deja/g++.other/local4.C: Likewise.
+ * g++.old-deja/g++.pt/crash3.C: Likewise.
+ * g++.dg/warn/Wvexing-parse.C: New test.
+ * g++.dg/warn/Wvexing-parse2.C: New test.
+ * g++.dg/warn/Wvexing-parse3.C: New test.
+ * g++.dg/warn/Wvexing-parse4.C: New test.
+ * g++.dg/warn/Wvexing-parse5.C: New test.
+ * g++.dg/warn/Wvexing-parse6.C: New test.
+ * g++.dg/warn/Wvexing-parse7.C: New test.
+
+2020-11-05 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr97725.c: New.
+
+2020-11-05 Olivier Hainque <hainque@adacore.com>
+
+ * gcc.dg/sms-12.c: Add dg-require-effective-target fpic.
+
+2020-11-05 Jan Hubicka <jh@suse.cz>
+
+ * g++.dg/ipa/devirt-24.C: Update template.
+
+2020-11-05 Tamar Christina <tamar.christina@arm.com>
+
+ * gcc.dg/vect/slp-11b.c: Guard statements.
+
+2020-11-05 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/pr97721.c: New test.
+
+2020-11-05 qing zhao <qinzhao@gcc.gnu.org>
+
+ PR target/97715
+ * gcc.target/i386/zero-scratch-regs-32.c: New test.
+
+2020-11-05 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/97668
+ * gcc.dg/analyzer/pr97668.c: New test.
+ * gfortran.dg/analyzer/pr97668.f: New test.
+
+2020-11-05 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-69.c: New testcase.
+
+2020-11-05 Tamar Christina <tamar.christina@arm.com>
+
+ * gcc.dg/vect/slp-11b.c: Update testcase.
+ * gcc.dg/vect/slp-perm-6.c: Update target selector.
+
+2020-11-05 Kewen Lin <linkw@linux.ibm.com>
+
+ PR target/96933
+ * gcc.target/powerpc/pr96933-1.c: New test.
+ * gcc.target/powerpc/pr96933-2.c: New test.
+ * gcc.target/powerpc/pr96933-3.c: New test.
+ * gcc.target/powerpc/pr96933-4.c: New test.
+ * gcc.target/powerpc/pr96933.h: New test.
+ * gcc.target/powerpc/pr96933-run.h: New test.
+
+2020-11-04 Tamar Christina <tamar.christina@arm.com>
+
+ * gcc.dg/vect/slp-11b.c: Update output scan.
+ * gcc.dg/vect/slp-perm-6.c: Likewise.
+
+2020-11-04 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr97515.c: Check listing for folding of entire function.
+
+2020-11-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97709
+ * gcc.dg/vect/bb-slp-pr97709.c: New testcase.
+
+2020-11-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/97690
+ * gcc.dg/tree-ssa/phi-opt-22.c: New test.
+ * gcc.dg/tree-ssa/ssa-ccp-11.c: Use -O2 instead of -O1.
+ * gcc.dg/vect/bb-slp-pattern-2.c (foo): Use ? 2 : 7, ? 4 : 7 and
+ ? 8 : 7 instead of ? 2 : 0, ? 4 : 0, ? 8 : 0.
+
+2020-11-04 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/pure-code/no-literal-pool-m0.c: Add dg-skip-if
+ and -mfloat-abi=soft option.
+ * gcc.target/arm/pure-code/no-literal-pool-m23.c: Likewise.
+
+2020-11-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/97670
+ * c-c++-common/gomp/allocate-4.c: New test.
+ * g++.dg/gomp/allocate-2.C: New test.
+ * g++.dg/gomp/allocate-3.C: New test.
+
+2020-11-04 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/c2x-attr-nodiscard-1.c, gcc.dg/c2x-attr-nodiscard-2.c,
+ gcc.dg/c2x-attr-nodiscard-3.c, gcc.dg/c2x-attr-nodiscard-4.c: New
+ tests.
+ * gcc.dg/c2x-attr-syntax-5.c: Remove nodiscard test.
+
+2020-11-04 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/pr97540.c: New test.
+
+2020-11-03 Jan Hubicka <jh@suse.cz>
+
+ * gcc.c-torture/execute/pr97695.c: New test.
+
+2020-11-03 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/Wclass-memaccess.C: Check that signed char and
+ char16_t aren't treated as byte-access types.
+
+2020-11-03 Thomas Schwinge <thomas@codesourcery.com>
+
+ * c-c++-common/goacc/pr92793-1.c: Extend.
+ * gfortran.dg/goacc/pr92793-1.f90: Likewise.
+
+2020-11-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/97663
+ * g++.dg/cpp1z/class-deduction75.C: New test.
+
+2020-11-03 Kamlesh Kumar <kamleshbhalui@gmail.com>
+
+ * g++.dg/DRs/dr2303.C: New test.
+
+2020-11-03 Olivier Hainque <hainque@adacore.com>
+
+ * gcc.target/powerpc/pr67789.c: Add
+ dg-require-effective-target fpic.
+ * gcc.target/powerpc/pr83629.c: Likewise.
+ * gcc.target/powerpc/pr84112.c: Likewise. Remove
+ a superflous target test in the dg-do compile
+ directive while at it.
+
+2020-11-03 Dennis Zhang <dennis.zhang@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/bf16_get.c: New test.
+ * gcc.target/aarch64/advsimd-intrinsics/bf16_get-be.c: New test.
+
+2020-11-03 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97632
+ * g++.dg/warn/Winit-list4.C: New test.
+
+2020-11-03 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_bf16_indices_1.c:
+ Run it also for arm-*-*.
+ * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/arm/simd/vstn_lane_bf16_1.c: New test.
+
+2020-11-03 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_bf16_indices_1.c:
+ Run it also for the arm backend.
+ * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/arm/simd/vldn_lane_bf16_1.c: New test.
+
+2020-11-03 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/arm/simd/vst1_bf16_1.c: New test.
+
+2020-11-03 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/arm/simd/vld1_bf16_1.c: New test.
+
+2020-11-03 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/arm/simd/vst1_lane_bf16_1.c: New testcase.
+ * gcc.target/arm/simd/vstq1_lane_bf16_indices_1.c: Likewise.
+ * gcc.target/arm/simd/vst1_lane_bf16_indices_1.c: Likewise.
+
+2020-11-03 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/arm/simd/vld1_lane_bf16_1.c: New testcase.
+ * gcc.target/arm/simd/vld1_lane_bf16_indices_1.c: Likewise.
+ * gcc.target/arm/simd/vld1q_lane_bf16_indices_1.c: Likewise.
+
+2020-11-03 Dennis Zhang <dennis.zhang@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/bfcvt-compile.c
+ (test_vcvt_f32_bf16, test_vcvtq_low_f32_bf16): New tests.
+ (test_vcvtq_high_f32_bf16, test_vcvth_f32_bf16): Likewise.
+
+2020-11-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/80928
+ * gcc.dg/vect/vect-outer-slp-2.c: New testcase.
+ * gcc.dg/vect/vect-outer-slp-3.c: Likewise.
+
+2020-11-03 Uroš Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/zero-scratch-regs-1.c: Add ia32 target
+ selector where appropriate. Improve scan-assembler regexp.
+ * gcc.target/i386/zero-scratch-regs-2.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-3.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-4.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-5.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-6.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-7.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-8.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-9.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-10.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-13.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-14.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-15.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-16.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-17.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-18.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-19.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-20.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-21.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-22.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-23.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-24.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-25.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-26.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-27.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-28.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-29.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-30.c: Ditto.
+ * gcc.target/i386/zero-scratch-regs-31.c: Ditto.
+
+2020-11-03 Olivier Hainque <hainque@adacore.com>
+
+ * gcc.dg/tree-ssa/pr71077.c: Add
+ dg-require-effective-target lto.
+
+2020-11-03 Olivier Hainque <hainque@adacore.com>
+
+ * gcc.target/i386/pr45352-1.c: Add dg-require-effective-target fpic.
+ * gcc.target/i386/pr47602.c: Likewise.
+ * gcc.target/i386/pr55151.c: Likewise.
+ * gcc.target/i386/pr55458.c: Likewise.
+ * gcc.target/i386/pr56348.c: Likewise.
+ * gcc.target/i386/pr57097.c: Likewise.
+ * gcc.target/i386/pr65753.c: Likewise.
+ * gcc.target/i386/pr65915.c: Likewise.
+ * gcc.target/i386/pr66232-5.c: Likewise.
+ * gcc.target/i386/pr66334.c: Likewise.
+ * gcc.target/i386/pr66819-2.c: Likewise.
+ * gcc.target/i386/pr67265.c: Likewise.
+ * gcc.target/i386/pr81481.c: Likewise.
+ * gcc.target/i386/pr83994.c: Likewise.
+
+2020-11-03 Jan Hubicka <hubicka@ucw.cz>
+
+ * gcc.c-torture/compile/pr97578.c: New test.
+
+2020-11-03 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/97688
+ * gcc.dg/vect/tree-vect.h (check_vect): Fix the x86 cpuid
+ check to always specify subleaf zero.
+
+2020-11-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97678
+ * gcc.dg/vect/pr97678.c: New testcase.
+
+2020-11-03 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/attr_deprecated.f90: New test.
+
+2020-11-03 Thomas Schwinge <thomas@codesourcery.com>
+
+ * c-c++-common/goacc/nested-reductions-1-kernels.c: Extend.
+ * c-c++-common/goacc/nested-reductions-2-kernels.c: Likewise.
+ * gfortran.dg/goacc/nested-reductions-1-kernels.f90: Likewise.
+ * gfortran.dg/goacc/nested-reductions-2-kernels.f90: Likewise.
+
+2020-11-03 Thomas Schwinge <thomas@codesourcery.com>
+
+ * c-c++-common/goacc/nested-reductions.c: Split file into...
+ * c-c++-common/goacc/nested-reductions-1-kernels.c: ... this...
+ * c-c++-common/goacc/nested-reductions-1-parallel.c: ..., this...
+ * c-c++-common/goacc/nested-reductions-1-routine.c: ..., and this.
+ * c-c++-common/goacc/nested-reductions-warn.c: Split file into...
+ * c-c++-common/goacc/nested-reductions-2-kernels.c: ... this...
+ * c-c++-common/goacc/nested-reductions-2-parallel.c: ..., this...
+ * c-c++-common/goacc/nested-reductions-2-routine.c: ..., and this.
+ * gfortran.dg/goacc/nested-reductions.f90: Split file into...
+ * gfortran.dg/goacc/nested-reductions-1-kernels.f90: ... this...
+ * gfortran.dg/goacc/nested-reductions-1-parallel.f90: ..., this...
+ * gfortran.dg/goacc/nested-reductions-1-routine.f90: ..., and
+ this.
+ * gfortran.dg/goacc/nested-reductions-warn.f90: Split file into...
+ * gfortran.dg/goacc/nested-reductions-2-kernels.f90: ... this...
+ * gfortran.dg/goacc/nested-reductions-2-parallel.f90: ..., this...
+ * gfortran.dg/goacc/nested-reductions-2-routine.f90: ..., and
+ this.
+
+2020-11-03 Thomas Schwinge <thomas@codesourcery.com>
+
+ PR fortran/92793
+ * gfortran.dg/goacc/pr92793-1.f90: Adjust.
+
+2020-11-03 Thomas Schwinge <thomas@codesourcery.com>
+
+ * c-c++-common/goacc/pr92793-1.c: Extend.
+ * gfortran.dg/goacc/pr92793-1.f90: Likewise.
+
+2020-11-03 Kewen Lin <linkw@gcc.gnu.org>
+
+ PR tree-optimization/96789
+ * gcc.dg/tree-ssa/ssa-dse-28.c: Adjust.
+ * gcc.dg/tree-ssa/ssa-dse-29.c: Likewise.
+ * gcc.dg/vect/bb-slp-41.c: Likewise.
+ * gcc.dg/tree-ssa/pr96789.c: New test.
+
+2020-11-03 Bernd Edlinger <bernd.edlinger@hotmail.de>
+
+ PR target/97205
+ * gcc.c-torture/compile/pr97205.c: New test.
+
+2020-11-02 Alan Modra <amodra@gmail.com>
+
+ PR middle-end/97267
+ * gcc.target/powerpc/pr97267.c: New test.
+
+2020-11-02 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/97140
+ * gcc.target/i386/pr97140.c: New test.
+
+2020-11-02 Patrick Palka <ppalka@redhat.com>
+
+ * g++.dg/cpp2a/concepts-complete1.C: Delete test that became
+ ill-formed after P2104.
+
+2020-11-02 Carl Love <cel@us.ibm.com>
+
+ * gcc.target/powerpc/bcd-2.c: Add include altivec.h.
+ * gcc.target/powerpc/bcd-3.c: Add include altivec.h.
+ * gcc.target/powerpc/bcd-4.c: New test.
+
+2020-11-02 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/concepts/pack-1.C: New.
+ * g++.dg/lookup/using53.C: Add an enum.
+ * g++.dg/template/error25.C: Relax 'export' error check.
+
+2020-11-02 Sudakshina Das <sudi.das@arm.com>
+
+ PR target/97638
+ * gcc.target/aarch64/pr97638.c: New test.a
+
+2020-11-02 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/slp-49.c: New testcase.
+
+2020-11-02 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/pure-code/no-literal-pool-m23.c: New.
+
+2020-11-02 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/pure-code/no-literal-pool-m0.c: New.
+
+2020-11-02 Thomas Schwinge <thomas@codesourcery.com>
+
+ PR fortran/92793
+ * gfortran.dg/goacc/pr92793-1.f90: Adjust.
+
+2020-11-02 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/97655
+ * gfortran.dg/gomp/atomic.f90: Update tree-dump counts; move
+ invalid OMP 5.0 code to ...
+ * gfortran.dg/gomp/atomic-2.f90: ... here; update dg-error.
+ * gfortran.dg/gomp/requires-9.f90: Update tree dump scan.
+
+2020-11-02 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97558
+ * gcc.dg/vect/pr97558-2.c: New testcase.
+
+2020-11-02 Aldy Hernandez <aldyh@redhat.com>
+
+ PR tree-optimization/97505
+ * gcc.dg/pr97505.c: New test.
+
+2020-11-02 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97558
+ * gcc.dg/vect/pr97558.c: New testcase.
+
+2020-11-02 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97650
+ * gcc.dg/vect/bb-slp-pr97650.c: New testcase.
+
+2020-11-02 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.target/riscv/arch-7.c: New.
+ * gcc.target/riscv/attribute-10.c: Update test arch string.
+
+2020-11-02 Christophe Lyon <christophe.lyon@linaro.org>
+
+ PR target/96770
+ * gcc.target/arm/pure-code/pr96770.c: New test.
+
+2020-11-02 Christophe Lyon <christophe.lyon@linaro.org>
+
+ PR target/96967
+ * gcc.target/arm/pure-code/pr96767.c: New test.
+
+2020-11-01 Iain Sandoe <iain@sandoe.co.uk>
+
+ * obj-c++.dg/SEL-typedef.mm: New test.
+ * objc.dg/SEL-typedef.m: New test.
+
+2020-11-01 Iain Sandoe <iain@sandoe.co.uk>
+
+ * obj-c++.dg/property/at-property-1.mm: Adjust test after
+ fixing spurious error output.
+
+2020-11-01 Iain Sandoe <iain@sandoe.co.uk>
+
+ * gcc.target/i386/amxbf16-asmintel-1.c: Require masm_intel.
+ * gcc.target/i386/amxint8-asmintel-1.c: Likewise.
+ * gcc.target/i386/amxtile-asmintel-1.c: Likewise.
+
+2020-10-30 Qing Zhao <qing.zhao@oracle.com>
+ H.J.Lu <hjl.tools@gmail.com>
+
+ * c-c++-common/zero-scratch-regs-1.c: New test.
+ * c-c++-common/zero-scratch-regs-10.c: New test.
+ * c-c++-common/zero-scratch-regs-11.c: New test.
+ * c-c++-common/zero-scratch-regs-2.c: New test.
+ * c-c++-common/zero-scratch-regs-3.c: New test.
+ * c-c++-common/zero-scratch-regs-4.c: New test.
+ * c-c++-common/zero-scratch-regs-5.c: New test.
+ * c-c++-common/zero-scratch-regs-6.c: New test.
+ * c-c++-common/zero-scratch-regs-7.c: New test.
+ * c-c++-common/zero-scratch-regs-8.c: New test.
+ * c-c++-common/zero-scratch-regs-9.c: New test.
+ * c-c++-common/zero-scratch-regs-attr-usages.c: New test.
+ * gcc.target/i386/zero-scratch-regs-1.c: New test.
+ * gcc.target/i386/zero-scratch-regs-10.c: New test.
+ * gcc.target/i386/zero-scratch-regs-11.c: New test.
+ * gcc.target/i386/zero-scratch-regs-12.c: New test.
+ * gcc.target/i386/zero-scratch-regs-13.c: New test.
+ * gcc.target/i386/zero-scratch-regs-14.c: New test.
+ * gcc.target/i386/zero-scratch-regs-15.c: New test.
+ * gcc.target/i386/zero-scratch-regs-16.c: New test.
+ * gcc.target/i386/zero-scratch-regs-17.c: New test.
+ * gcc.target/i386/zero-scratch-regs-18.c: New test.
+ * gcc.target/i386/zero-scratch-regs-19.c: New test.
+ * gcc.target/i386/zero-scratch-regs-2.c: New test.
+ * gcc.target/i386/zero-scratch-regs-20.c: New test.
+ * gcc.target/i386/zero-scratch-regs-21.c: New test.
+ * gcc.target/i386/zero-scratch-regs-22.c: New test.
+ * gcc.target/i386/zero-scratch-regs-23.c: New test.
+ * gcc.target/i386/zero-scratch-regs-24.c: New test.
+ * gcc.target/i386/zero-scratch-regs-25.c: New test.
+ * gcc.target/i386/zero-scratch-regs-26.c: New test.
+ * gcc.target/i386/zero-scratch-regs-27.c: New test.
+ * gcc.target/i386/zero-scratch-regs-28.c: New test.
+ * gcc.target/i386/zero-scratch-regs-29.c: New test.
+ * gcc.target/i386/zero-scratch-regs-30.c: New test.
+ * gcc.target/i386/zero-scratch-regs-31.c: New test.
+ * gcc.target/i386/zero-scratch-regs-3.c: New test.
+ * gcc.target/i386/zero-scratch-regs-4.c: New test.
+ * gcc.target/i386/zero-scratch-regs-5.c: New test.
+ * gcc.target/i386/zero-scratch-regs-6.c: New test.
+ * gcc.target/i386/zero-scratch-regs-7.c: New test.
+ * gcc.target/i386/zero-scratch-regs-8.c: New test.
+ * gcc.target/i386/zero-scratch-regs-9.c: New test.
+
+2020-10-30 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/97556
+ * gcc.dg/Warray-bounds-70.c: New test.
+
+2020-10-30 Tobias Burnus <tobias@codesourcery.com>
+
+ * g++.dg/guality/guality.exp: Skip $rootme-based check if unset.
+ * gcc.dg/guality/guality.exp: Likewise.
+ * gfortran.dg/guality/guality.exp: Likewise.
+ * lib/asan-dg.exp: Don't use $asan_saved_library_path if not set.
+ * lib/tsan-dg.exp: Don't use $tsan_saved_library_path if not set.
+ * lib/ubsan-dg.exp: Don't use $ubsan_saved_library_path if not set.
+
+2020-10-30 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/atomic-2.f90: New test.
+ * gfortran.dg/gomp/atomic.f90: New test.
+
+2020-10-30 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97623
+ * gcc.dg/tree-ssa/ssa-hoist-7.c: New testcase.
+
+2020-10-30 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97626
+ * gcc.dg/vect/bb-slp-pr97626.c: New testcase.
+
+2020-10-30 Thomas Schwinge <thomas@codesourcery.com>
+
+ PR fortran/92793
+ * c-c++-common/goacc/clause-locations.c: Rewrite into...
+ * c-c++-common/goacc/pr92793-1.c: ... this.
+ * gfortran.dg/goacc/clause-locations.f90: Rewrite into...
+ * gfortran.dg/goacc/pr92793-1.f90: ... this.
+
+2020-10-30 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97633
+ * g++.dg/vect/slp-pr97636.cc: New testcase.
+ * gcc.dg/vect/bb-slp-pr97633.c: Likewise.
+
+2020-10-30 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/96998
+ * gcc.c-torture/compile/pr96998.c: New test.
+
+2020-10-30 Jakub Jelinek <jakub@redhat.com>
+
+ * c-c++-common/gomp/allocate-3.c: New test.
+
+2020-10-30 Jakub Jelinek <jakub@redhat.com>
+
+ * c-c++-common/gomp/allocate-1.c (qux): Add another test.
+ * g++.dg/gomp/allocate-1.C: New test.
+
+2020-10-30 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-pr65935.c: Adjust.
+
+2020-10-30 Michael Meissner <meissner@linux.ibm.com>
+
+ * gcc.target/powerpc/float128-mix-2.c: New test.
+ * gcc.target/powerpc/float128-mix-3.c: New test.
+ * gcc.target/powerpc/float128-mix.c: Update failure messages.
+
+2020-10-29 Marek Polacek <polacek@redhat.com>
+
+ DR 625
+ PR c++/97479
+ * g++.dg/cpp0x/auto3.C: Update dg-error.
+ * g++.dg/cpp0x/auto9.C: Likewise.
+ * g++.dg/cpp2a/concepts-pr84979-2.C: Likewise.
+ * g++.dg/cpp2a/concepts-pr84979-3.C: Likewise.
+ * g++.dg/cpp2a/concepts-pr84979.C: Likewise.
+ * g++.dg/DRs/dr625.C: New test.
+
+2020-10-29 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93107
+ * g++.dg/cpp0x/initlist-deduce3.C: New test.
+
+2020-10-29 Marek Polacek <polacek@redhat.com>
+
+ * g++.dg/cpp2a/enum-conv1.C: Remove unused code.
+ * g++.dg/cpp2a/spaceship-err5.C: New test.
+
+2020-10-29 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/97412
+ * g++.dg/cpp2a/concepts-variadic2.C: New test.
+
+2020-10-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/97388
+ * g++.dg/cpp2a/constexpr-dtor8.C: New test.
+
+2020-10-29 Jakub Jelinek <jakub@redhat.com>
+ Jason Merrill <jason@redhat.com>
+
+ PR c++/97388
+ * g++.dg/cpp2a/constexpr-dtor5.C: New test.
+ * g++.dg/cpp2a/constexpr-dtor6.C: New test.
+ * g++.dg/cpp2a/constexpr-dtor7.C: New test.
+
+2020-10-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/95808
+ * g++.dg/cpp2a/constexpr-new15.C: New test.
+
+2020-10-29 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/c11-bool-1.c, gcc.dg/c2x-bool-1.c, gcc.dg/c99-bool-4.c:
+ New tests.
+
+2020-10-29 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/pr97596.c: Require int128 effective target.
+
+2020-10-29 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr97596.c: New.
+
+2020-10-29 Alexandre Oliva <oliva@adacore.com>
+
+ * gnat.dg/sin_cos.ads: New.
+ * gnat.dg/sin_cos.adb: New.
+ * gcc.dg/sin_cos.c: New.
+
+2020-10-29 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/keylocker-aesdec128kl.c: New test.
+ * gcc.target/i386/keylocker-aesdec256kl.c: Likewise.
+ * gcc.target/i386/keylocker-aesdecwide128kl.c: Likewise.
+ * gcc.target/i386/keylocker-aesdecwide256kl.c: Likewise.
+ * gcc.target/i386/keylocker-aesenc128kl.c: Likewise.
+ * gcc.target/i386/keylocker-aesencwide128kl.c: Likewise.
+ * gcc.target/i386/keylocker-aesencwide256kl.c: Likewise.
+ * gcc.target/i386/keylocker-encodekey128.c: Likewise.
+ * gcc.target/i386/keylocker-encodekey256.c: Likewise.
+ * gcc.target/i386/keylocker-loadiwkey.c: Likewise.
+ * g++.dg/other/i386-2.C: Add -mkl and -mwidekl.
+ * g++.dg/other/i386-3.C: Likewise.
+ * gcc.target/i386/sse-12.c: Likewise.
+ * gcc.target/i386/sse-13.c: Likewise.
+ * gcc.target/i386/sse-14.c: Likewise.
+ * gcc.target/i386/sse-22.c: Add kl and widekl.
+ * gcc.target/i386/sse-23.c: Likewise.
+ * gcc.target/i386/funcspec-56.inc: Add new target attribute test.
+
+2020-10-29 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-pr65935.c: Adjust.
+
+2020-10-29 Andrew MacLeod <amacleod@redhat.com>
+
+ * g++.dg/pr97609.C: New.
+
+2020-10-29 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/97608
+ * gcc.dg/analyzer/malloc-1.c (test_42d): New.
+ * gcc.dg/analyzer/pr97608.c: New test.
+
+2020-10-28 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/vsx-load-element-extend-char.c: Put "dg-do run"
+ before "dg-do compile", and make them mutually exclusive.
+ * gcc.target/powerpc/vsx-load-element-extend-int.c: Likewise.
+ * gcc.target/powerpc/vsx-load-element-extend-longlong.c: Likewise.
+ * gcc.target/powerpc/vsx-load-element-extend-short.c: Likewise.
+ * gcc.target/powerpc/vsx-store-element-truncate-char.c: Likewise.
+ * gcc.target/powerpc/vsx-store-element-truncate-int.c: Likewise.
+ * gcc.target/powerpc/vsx-store-element-truncate-longlong.c: Likewise.
+ * gcc.target/powerpc/vsx-store-element-truncate-short.c: Likewise.
+ * gcc.target/powerpc/altivec-consts.c: Likewise, add -save-temps.
+ * gcc.target/powerpc/le-altivec-consts.c: Likewise.
+
+2020-10-28 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/float128-type-1.c: Simplify target test.
+ * gcc.target/powerpc/float128-type-2.c: Likewise.
+
+2020-10-28 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/fold-vec-extract-char.p9.c: Don't check addi
+ count for ilp32.
+ * gcc.target/powerpc/fold-vec-extract-int.p9.c: Likewise.
+ * gcc.target/powerpc/fold-vec-extract-longlong.p7.c: Likewise.
+ * gcc.target/powerpc/fold-vec-extract-longlong.p8.c: Likewise.
+ * gcc.target/powerpc/fold-vec-insert-int-p9.c: Likewise.
+
+2020-10-28 Marek Polacek <polacek@redhat.com>
+
+ * g++.dg/warn/mvp3.C: New test.
+
+2020-10-28 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97573
+ * g++.dg/cpp0x/linkage2.C: Add dg-warning.
+ * g++.dg/parse/attr3.C: Likewise.
+ * g++.dg/cpp2a/enum-conv1.C: New test.
+ * g++.dg/cpp2a/enum-conv2.C: New test.
+ * g++.dg/cpp2a/enum-conv3.C: New test.
+
+2020-10-28 Marek Polacek <polacek@redhat.com>
+
+ PR c++/96675
+ PR c++/96742
+ * g++.dg/warn/Wdiv-by-zero-3.C: Turn dg-warning into dg-bogus.
+ * g++.dg/warn/Wtautological-compare3.C: New test.
+ * g++.dg/warn/Wtype-limits5.C: New test.
+ * g++.old-deja/g++.pt/crash10.C: Remove dg-warning.
+
+2020-10-28 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/sad-vectorize-1.c: Remove AIX skip.
+ * gcc.target/powerpc/sad-vectorize-2.c: Remove AIX skip.
+ * gcc.target/powerpc/sad-vectorize-3.c: Remove target.
+ Require p9vector_hw.
+ * gcc.target/powerpc/sad-vectorize-4.c: Remove target.
+ Require p9vector_hw.
+ * gcc.target/powerpc/signbit-1.c: Remove target.
+ Require ppc_float128_sw.
+ * gcc.target/powerpc/signbit-2.c: Remove target.
+ Require ppc_float128_sw.
+ * gcc.target/powerpc/signbit-3.c: Remove target.
+ Require ppc_float128_sw.
+
+2020-10-28 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94799
+ * g++.dg/template/lookup16.C: New test.
+
+2020-10-28 Marek Polacek <polacek@redhat.com>
+
+ PR c++/86773
+ * g++.dg/cpp1z/fold12.C: New test.
+
+2020-10-28 Tamar Christina <tamar.christina@arm.com>
+
+ PR target/97535
+ * gcc.target/aarch64/pr97535.c: Exclude ILP32.
+
+2020-10-28 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR tree-optimization/97457
+ * gcc.dg/vect/pr97457.c: New test.
+
+2020-10-28 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/c11-parm-omit-1.c, gcc.dg/c11-parm-omit-2.c,
+ gcc.dg/c11-parm-omit-3.c, gcc.dg/c11-parm-omit-4.c,
+ gcc.dg/c2x-parm-omit-1.c, gcc.dg/c2x-parm-omit-2.c,
+ gcc.dg/c2x-parm-omit-3.c, gcc.dg/c2x-parm-omit-4.c: New tests.
+ * gcc.dg/noncompile/pr79758.c: Do not expect error for omitted
+ parameter name.
+
+2020-10-28 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/95132
+ * g++.dg/cpp2a/concepts-fn7.C: New test.
+
+2020-10-28 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/vadsdu-0.c: Remove target.
+ * gcc.target/powerpc/vadsdu-1.c: Remove target.
+ * gcc.target/powerpc/vadsdu-2.c: Remove target.
+ * gcc.target/powerpc/vadsdu-3.c: Remove target.
+ * gcc.target/powerpc/vadsdu-4.c: Remove target.
+ * gcc.target/powerpc/vadsdu-5.c: Remove target.
+ * gcc.target/powerpc/vadsdub-1.c: Remove target.
+ * gcc.target/powerpc/vadsdub-2.c: Remove target.
+ * gcc.target/powerpc/vadsduh-1.c: Remove target.
+ * gcc.target/powerpc/vadsduh-2.c: Remove target.
+ * gcc.target/powerpc/vadsduw-1.c: Remove target.
+ * gcc.target/powerpc/vadsduw-2.c: Remove target.
+ * gcc.target/powerpc/vslv-0.c: Remove target.
+ * gcc.target/powerpc/vslv-1.c: Remove target.
+ * gcc.target/powerpc/vsrv-0.c: Remove target.
+ * gcc.target/powerpc/vsrv-1.c: Remove target.
+
+2020-10-28 David Edelsohn <dje.gcc@gmail.com>
+ Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/byte-in-either-range-0.c: Remove target.
+ * gcc.target/powerpc/byte-in-either-range-1.c: Remove target.
+ * gcc.target/powerpc/byte-in-range-0.c: Remove target.
+ * gcc.target/powerpc/byte-in-range-1.c: Remove target.
+ * gcc.target/powerpc/byte-in-set-0.c: Remove target.
+ * gcc.target/powerpc/byte-in-set-1.c: Remove target.
+ * gcc.target/powerpc/byte-in-set-2.c: Remove target. Expect
+ implicit declaration warning.
+
+2020-10-28 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-58.c: Require vect_double.
+ * gcc.dg/vect/bb-slp-59.c: Likewise.
+
+2020-10-28 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97615
+ * gcc.dg/vect/bb-slp-pr97615.c: New testcase.
+
+2020-10-28 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-68.c: New testcase.
+
+2020-10-28 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
+ (hbfloat16_t): Define type.
+ (CHECK_FP): Make it working for bfloat types.
+ * gcc.target/aarch64/advsimd-intrinsics/bf16_vstN_lane_1.c: New file.
+ * gcc.target/aarch64/advsimd-intrinsics/bf16_vstN_lane_2.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vst2_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vst3_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vst4_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_bf16_indices_1.c:
+ Likewise.
+
+2020-10-28 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/bf16_vldN_lane_1.c: New
+ testcase.
+ * gcc.target/aarch64/advsimd-intrinsics/bf16_vldN_lane_2.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vld2_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vld3_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vld4_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_bf16_indices_1.c:
+ Likewise.
+
+2020-10-28 Jakub Jelinek <jakub@redhat.com>
+
+ * c-c++-common/gomp/allocate-1.c: New test.
+ * c-c++-common/gomp/allocate-2.c: New test.
+ * c-c++-common/gomp/clauses-1.c (omp_allocator_handle_t): New typedef.
+ (foo, bar, baz): Add allocate clauses where allowed.
+
+2020-10-28 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/vsx-load-element-extend-char.c: Add -save-temps.
+ * gcc.target/powerpc/vsx-load-element-extend-int.c: Likewise.
+ * gcc.target/powerpc/vsx-load-element-extend-longlong.c: Likewise.
+ * gcc.target/powerpc/vsx-load-element-extend-short.c: Likewise.
+ * gcc.target/powerpc/vsx-store-element-truncate-char.c: Likewise.
+ * gcc.target/powerpc/vsx-store-element-truncate-int.c: Likewise.
+ * gcc.target/powerpc/vsx-store-element-truncate-longlong.c: Likewise.
+ * gcc.target/powerpc/vsx-store-element-truncate-short.c: Likewise.
+
+2020-10-28 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/vec-blend-runnable.c: Add save-temps.
+ * gcc.target/powerpc/vec-insert-word-runnable.c: Likewise.
+ * gcc.target/powerpc/vec-permute-ext-runnable.c: Likewise.
+ * gcc.target/powerpc/vec-replace-word-runnable.c: Likewise.
+ * gcc.target/powerpc/vec-splati-runnable.c: Likewise.
+ * gcc.target/powerpc/vec-ternarylogic-3.c: Likewise.
+ * gcc.target/powerpc/vec-ternarylogic-9.c: Likewise.
+ * gcc.target/powerpc/vsx_mask-count-runnable.c: Likewise.
+ * gcc.target/powerpc/vsx_mask-expand-runnable.c: Likewise.
+ * gcc.target/powerpc/vsx_mask-extract-runnable.c: Likewise.
+ * gcc.target/powerpc/vsx_mask-move-runnable.c: Likewise.
+ * gcc.target/powerpc/vec-shift-double-runnable.c: Likewise,
+ and correct assembly match.
+
+2020-10-27 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/c2x-attr-deprecated-4.c, gcc.dg/c2x-attr-fallthrough-4.c,
+ gcc.dg/c2x-attr-maybe_unused-4.c: Allow duplicate attributes.
+
+2020-10-27 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ * gcc.target/s390/pr97497.c: New test.
+
+2020-10-27 Harald Anlauf <anlauf@gmx.de>
+
+ * gfortran.dg/value_8.f90: New test.
+
+2020-10-27 Carl Love <cel@us.ibm.com>
+
+ * gcc.target/powerpc/vec-blend-runnable.c: Change #ifdef
+ DEBUG to #if DEBUG.
+ Fix printf line so it is less then 80 characters long.
+ * gcc.target/powerpc/vec-insert-word-runnable.c: Change
+ #ifdef DEBUG to #if DEBUG.
+ * gcc.target/powerpc/vec-permute-ext-runnable.c: Change
+ #ifdef DEBUG to #if DEBUG.
+ * gcc.target/powerpc/vec-replace-word-runnable.c: Change
+ #ifdef DEBUG to #if DEBUG.
+ Fix printf lines so they are less then 80 characters long.
+ * gcc.target/powerpc/vec-shift-double-runnable.c: Change
+ #ifdef DEBUG to #if DEBUG.
+
+2020-10-27 Tamar Christina <tamar.christina@arm.com>
+
+ PR target/97535
+ * gcc.target/aarch64/pr97535.c: New test.
+
+2020-10-27 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/bf16_vect_copy_lane_1.c:
+ New test.
+ * gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vcopy_lane_bf16_indices_2.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vcopy_laneq_bf16_indices_2.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vcopyq_lane_bf16_indices_2.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_1.c:
+ Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vcopyq_laneq_bf16_indices_2.c:
+ Likewise.
+
+2020-10-27 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-67.c: New testcase.
+
+2020-10-27 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/92942
+ * gcc.dg/Wstringop-overflow-56.c: New test.
+ * gcc.dg/Wstringop-overflow-57.c: Same.
+
+2020-10-27 Martin Sebor <msebor@redhat.com>
+
+ * gcc.dg/Wstringop-overflow-44.s: Remove.
+
+2020-10-27 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr97567.c: Update to work with 32 bit targets.
+
+2020-10-27 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/97568
+ * gcc.dg/analyzer/pr97568.c: New test.
+
+2020-10-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/97560
+ PR testsuite/97590
+ * g++.dg/pr97560.C: Require c++11 effective target and add comment
+ with PR number.
+
+2020-10-27 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-54.c: New test.
+ * gcc.dg/vect/bb-slp-55.c: Likewise.
+ * gcc.dg/vect/bb-slp-56.c: Likewise.
+ * gcc.dg/vect/bb-slp-57.c: Likewise.
+ * gcc.dg/vect/bb-slp-58.c: Likewise.
+ * gcc.dg/vect/bb-slp-59.c: Likewise.
+ * gcc.dg/vect/bb-slp-60.c: Likewise.
+ * gcc.dg/vect/bb-slp-61.c: Likewise.
+ * gcc.dg/vect/bb-slp-62.c: Likewise.
+ * gcc.dg/vect/bb-slp-63.c: Likewise.
+ * gcc.dg/vect/bb-slp-64.c: Likewise.
+ * gcc.dg/vect/bb-slp-65.c: Likewise.
+ * gcc.dg/vect/bb-slp-66.c: Likewise.
+ * gcc.dg/vect/vect-outer-slp-1.c: Likewise.
+ * gfortran.dg/vect/O3-bb-slp-1.f: Likewise.
+ * gfortran.dg/vect/O3-bb-slp-2.f: Likewise.
+ * g++.dg/vect/simd-11.cc: Likewise.
+
+2020-10-27 Richard Biener <rguenther@suse.de>
+
+ * gcc.target/i386/pr95866-1.c: Adjust.
+
+2020-10-27 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/swaps-p8-22.c: Enable only for aix and
+ -m64 linux.
+
+2020-10-27 Martin Liska <mliska@suse.cz>
+
+ PR gcov-profile/97461
+ * gcc.dg/tree-prof/pr97461.c: New test.
+
+2020-10-27 Aldy Hernandez <aldyh@redhat.com>
+
+ PR tree-optimization/97560
+ * g++.dg/pr97560.C: New test.
+
+2020-10-27 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/vsx_mask-count-runnable.c: Separate options
+ passed to dg-require-effective-target.
+ * gcc.target/powerpc/vsx_mask-expand-runnable.c: Likewise.
+ * gcc.target/powerpc/vsx_mask-extract-runnable.c: Likewise.
+ * gcc.target/powerpc/vsx_mask-move-runnable.c: Likewise.
+
+2020-10-26 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/localentry-1.c: Remove -mpcrel from options.
+ * gcc.target/powerpc/notoc-direct-1.c: Likewise.
+ * gcc.target/powerpc/pr94740.c: Likewise.
+
+2020-10-26 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/bswap64-4.c: Comment.
+
+2020-10-26 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/pr93122.c: Replace -mcpu with -mdejagnu-cpu.
+ * gcc.target/powerpc/vsx_mask-count-runnable.c: Likewise.
+ * gcc.target/powerpc/vsx_mask-expand-runnable.c: Likewise.
+ * gcc.target/powerpc/vsx_mask-extract-runnable.c: Likewise.
+ * gcc.target/powerpc/vsx_mask-move-runnable.c: Likewise.
+
+2020-10-26 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/vsx-load-element-extend-char.c: Require int128.
+ * gcc.target/powerpc/vsx-load-element-extend-int.c: Likewise.
+ * gcc.target/powerpc/vsx-load-element-extend-longlong.c: Likewise.
+ * gcc.target/powerpc/vsx-load-element-extend-short.c: Likewise.
+ * gcc.target/powerpc/vsx-store-element-truncate-char.c: Likewise.
+ * gcc.target/powerpc/vsx-store-element-truncate-int.c: Likewise.
+ * gcc.target/powerpc/vsx-store-element-truncate-longlong.c: Likewise.
+ * gcc.target/powerpc/vsx-store-element-truncate-short.c: Likewise.
+ * gcc.target/powerpc/vsx_mask-count-runnable.c: Likewise.
+ * gcc.target/powerpc/vsx_mask-expand-runnable.c: Likewise.
+ * gcc.target/powerpc/vsx_mask-extract-runnable.c: Likewise.
+ * gcc.target/powerpc/vsx_mask-move-runnable.c: Likewise.
+
+2020-10-26 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/cfuged-1.c,
+ gcc.target/powerpc/cntlzdm-1.c,
+ gcc.target/powerpc/cnttzdm-1.c,
+ gcc.target/powerpc/dg-future-1.c,
+ gcc.target/powerpc/lsbb-runnable.c,
+ gcc.target/powerpc/mma-double-test.c,
+ gcc.target/powerpc/mma-single-test.c,
+ gcc.target/powerpc/p10-arch31.c,
+ gcc.target/powerpc/p10-identify.c,
+ gcc.target/powerpc/pdep-1.c,
+ gcc.target/powerpc/pextd-1.c,
+ gcc.target/powerpc/pr96787-2.c,
+ gcc.target/powerpc/vec-blend-runnable.c,
+ gcc.target/powerpc/vec-cfuged-1.c,
+ gcc.target/powerpc/vec-clrl-1.c,
+ gcc.target/powerpc/vec-clrl-3.c,
+ gcc.target/powerpc/vec-clrr-1.c,
+ gcc.target/powerpc/vec-clrr-3.c,
+ gcc.target/powerpc/vec-cntlzm-1.c,
+ gcc.target/powerpc/vec-cnttzm-1.c,
+ gcc.target/powerpc/vec-extracth-1.c,
+ gcc.target/powerpc/vec-extracth-3.c,
+ gcc.target/powerpc/vec-extracth-5.c,
+ gcc.target/powerpc/vec-extracth-7.c,
+ gcc.target/powerpc/vec-extractl-1.c,
+ gcc.target/powerpc/vec-extractl-3.c,
+ gcc.target/powerpc/vec-extractl-5.c,
+ gcc.target/powerpc/vec-extractl-7.c,
+ gcc.target/powerpc/vec-gnb-1.c,
+ gcc.target/powerpc/vec-insert-word-runnable.c,
+ gcc.target/powerpc/vec-pdep-1.c,
+ gcc.target/powerpc/vec-permute-ext-runnable.c,
+ gcc.target/powerpc/vec-pext-1.c,
+ gcc.target/powerpc/vec-replace-word-runnable.c,
+ gcc.target/powerpc/vec-shift-double-runnable.c,
+ gcc.target/powerpc/vec-splati-runnable.c,
+ gcc.target/powerpc/vec-stril-1.c,
+ gcc.target/powerpc/vec-stril-16.c,
+ gcc.target/powerpc/vec-stril-17.c,
+ gcc.target/powerpc/vec-stril-18.c,
+ gcc.target/powerpc/vec-stril-19.c,
+ gcc.target/powerpc/vec-stril-20.c,
+ gcc.target/powerpc/vec-stril-21.c,
+ gcc.target/powerpc/vec-stril-22.c,
+ gcc.target/powerpc/vec-stril-23.c,
+ gcc.target/powerpc/vec-stril-3.c,
+ gcc.target/powerpc/vec-stril-5.c,
+ gcc.target/powerpc/vec-stril-7.c,
+ gcc.target/powerpc/vec-stril_p-1.c,
+ gcc.target/powerpc/vec-stril_p-3.c,
+ gcc.target/powerpc/vec-stril_p-5.c,
+ gcc.target/powerpc/vec-stril_p-7.c,
+ gcc.target/powerpc/vec-strir-1.c,
+ gcc.target/powerpc/vec-strir-16.c,
+ gcc.target/powerpc/vec-strir-17.c,
+ gcc.target/powerpc/vec-strir-18.c,
+ gcc.target/powerpc/vec-strir-19.c,
+ gcc.target/powerpc/vec-strir-20.c,
+ gcc.target/powerpc/vec-strir-21.c,
+ gcc.target/powerpc/vec-strir-22.c,
+ gcc.target/powerpc/vec-strir-23.c,
+ gcc.target/powerpc/vec-strir-3.c,
+ gcc.target/powerpc/vec-strir-5.c,
+ gcc.target/powerpc/vec-strir-7.c,
+ gcc.target/powerpc/vec-strir_p-1.c,
+ gcc.target/powerpc/vec-strir_p-3.c,
+ gcc.target/powerpc/vec-strir_p-5.c,
+ gcc.target/powerpc/vec-strir_p-7.c,
+ gcc.target/powerpc/vec-ternarylogic-1.c,
+ gcc.target/powerpc/vec-ternarylogic-3.c,
+ gcc.target/powerpc/vec-ternarylogic-5.c,
+ gcc.target/powerpc/vec-ternarylogic-7.c,
+ gcc.target/powerpc/vec-ternarylogic-9.c,
+ gcc.target/powerpc/vsx_mask-count-runnable.c,
+ gcc.target/powerpc/vsx_mask-expand-runnable.c,
+ gcc.target/powerpc/vsx_mask-extract-runnable.c,
+ gcc.target/powerpc/vsx_mask-move-runnable.c,
+ gcc.target/powerpc/xxgenpc-runnable.c: Link testcase when it
+ can't be run.
+
+2020-10-26 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/dimode_off.c: Add -mno-prefixed to options.
+
+2020-10-26 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/cprophard.c: Add -mno-pcrel to options.
+ * gcc.target/powerpc/float128-hw3.c: Likewise.
+ * gcc.target/powerpc/pr79439-1.c: Likewise.
+ * gcc.target/powerpc/pr79439-2.c: Likewise.
+ * gcc.target/powerpc/r2_shrink-wrap.c: Likewise.
+
+2020-10-26 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr97567.c: New.
+
+2020-10-26 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/pr97555.c: New test.
+
+2020-10-26 Ville Voutilainen <ville.voutilainen@gmail.com>
+
+ * g++.dg/ext/is_nothrow_constructible1.C: New file.
+ * g++.dg/ext/is_nothrow_constructible2.C: New file.
+ * g++.dg/ext/is_nothrow_constructible3.C: New file.
+ * g++.dg/ext/is_nothrow_constructible4.C: New file.
+ * g++.dg/ext/is_nothrow_constructible5.C: New file.
+ * g++.dg/ext/is_nothrow_constructible6.C: New file.
+
+2020-10-26 Jan Hubicka <jh@suse.cz>
+
+ PR ipa/97576
+ * gcc.c-torture/compile/pr97576.c: New test.
+
+2020-10-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR tree-optimization/97546
+ * gcc.target/aarch64/sve/acle/general/pr97546.c: New test.
+
+2020-10-26 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/97521
+ * gcc.target/i386/pr97521.c: New testcase.
+
+2020-10-26 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/95458
+ * gcc.target/i386/pr95458-1.c: New test.
+ * gcc.target/i386/pr95458-2.c: Likewise.
+
+2020-10-26 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/95151
+ * gcc.target/i386/pr95151-1.c: New test.
+ * gcc.target/i386/pr95151-2.c: Likewise.
+ * gcc.target/i386/pr95151-3.c: Likewise.
+ * gcc.target/i386/pr95151-4.c: Likewise.
+
+2020-10-26 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97539
+ * gcc.dg/pr97539.c: New testcase.
+
+2020-10-26 Arnaud Charlet <charlet@adacore.com>
+
+ * gnat.dg/warn14.adb: Update expectations.
+
+2020-10-24 Marek Polacek <polacek@redhat.com>
+
+ PR c++/96241
+ * g++.dg/cpp0x/constexpr-96241.C: New test.
+ * g++.dg/cpp1y/constexpr-96241.C: New test.
+
+2020-10-24 Aldy Hernandez <aldyh@redhat.com>
+
+ * g++.dg/pr97538.C: New test.
+
+2020-10-23 Marek Polacek <polacek@redhat.com>
+
+ * c-c++-common/Wsizeof-array-div1.c: Expect certain warnings on
+ lp64 targets only.
+ * g++.dg/warn/Wsizeof-array-div2.C: Only run on lp64 targets.
+
+2020-10-23 Marek Polacek <polacek@redhat.com>
+
+ PR c++/91741
+ * c-c++-common/Wsizeof-pointer-div.c: Add dg-warning.
+ * c-c++-common/Wsizeof-array-div1.c: New test.
+ * g++.dg/warn/Wsizeof-array-div1.C: New test.
+ * g++.dg/warn/Wsizeof-array-div2.C: New test.
+
+2020-10-23 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/97552
+ * gcc.dg/Wvla-parameter-2.c: Adjust text of expected warning.
+ * gcc.dg/Wnonnull-5.c: New test.
+
+2020-10-23 Martin Sebor <msebor@redhat.com>
+
+ PR c/97463
+ * gcc.dg/pr97463.c: New test.
+
+2020-10-23 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/vec-rlmi-rlnm.c: Update xxlor expect.
+
+2020-10-23 Jonathan Wakely <jwakely@redhat.com>
+
+ * g++.dg/compat/eh/filter2_y.C: Add noexcept(false) to
+ destructor.
+
+2020-10-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/97164
+ * c-c++-common/pr97164.c: New test.
+ * gcc.c-torture/execute/pr36093.c: Move ...
+ * gcc.dg/pr36093.c: ... here. Add dg-do compile and dg-error
+ directives.
+ * gcc.c-torture/execute/pr43783.c: Move ...
+ * gcc.dg/pr43783.c: ... here. Add dg-do compile, dg-options and
+ dg-error directives.
+
+2020-10-23 Dennis Zhang <dennis.zhang@arm.com>
+
+ * gcc.target/arm/simd/mve-vsub_1.c: New test.
+
+2020-10-23 Richard Biener <rguenther@suse.de>
+
+ Revert:
+ 2020-10-23 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/97521
+ * gcc.target/i386/pr97521.c: New testcase.
+
+2020-10-22 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/vec-splati-runnable.c: Don't abort on
+ undefined output.
+
+2020-10-22 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/rlwimi-2.c: Adjust expected results for lp64.
+ * gcc.target/powerpc/vec-rlmi-rlnm.c: Remove target and LP64.
+ Adjust xxlor expected results.
+
+2020-10-22 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/flush-1.f90: New test.
+ * gfortran.dg/gomp/flush-2.f90: New test.
+
+2020-10-22 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ * gcc.target/powerpc/vsx-load-element-extend-char.c: New test.
+ * gcc.target/powerpc/vsx-load-element-extend-int.c: New test.
+ * gcc.target/powerpc/vsx-load-element-extend-longlong.c: New test.
+ * gcc.target/powerpc/vsx-load-element-extend-short.c: New test.
+ * gcc.target/powerpc/vsx-store-element-truncate-char.c: New test.
+ * gcc.target/powerpc/vsx-store-element-truncate-int.c: New test.
+ * gcc.target/powerpc/vsx-store-element-truncate-longlong.c: New test.
+ * gcc.target/powerpc/vsx-store-element-truncate-short.c: New test.
+
+2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
+
+ * ada/acats/run_all.sh: Define and substitute target_{max,min}_int.
+ * ada/acats/support/macro.dfs: Parameterize {MAX,MIN}_INT.
+ * gnat.dg/assert1.adb: Adjust conditionally to 128-bit integer types.
+ * gnat.dg/size_clause1.adb: Do not expect a warning for LP64 targets.
+ * gnat.dg/warn11.adb: Likewise.
+ * gnat.dg/specs/rep_clause5.ads (Array_2_Type): Add alignment clause.
+
+2020-10-22 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/97328
+ * g++.dg/cpp2a/constexpr-init19.C: New test.
+ * g++.dg/cpp2a/constexpr-init20.C: New test.
+
+2020-10-22 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/96575
+ * g++.dg/cpp1z/constexpr-96575.C: New test.
+
+2020-10-22 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/97511
+ * g++.dg/template/shadow3.C: New test.
+
+2020-10-22 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/97521
+ * gcc.target/i386/pr97521.c: New testcase.
+
+2020-10-22 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ * gcc.dg/pr97502.c: New test.
+
+2020-10-22 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ * gcc.dg/dfp/pr97439.c: New test.
+
+2020-10-22 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/97514
+ * gcc.dg/analyzer/pr97514.c: New test.
+
+2020-10-22 David Malcolm <dmalcolm@redhat.com>
+
+ * g++.dg/analyzer/ctor-dtor-1.C: New test.
+ * g++.dg/analyzer/dyncast-1.C: New test.
+ * g++.dg/analyzer/vfunc-1.C: New test.
+
+2020-10-22 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/97489
+ * g++.dg/analyzer/pr97489.C: New test.
+
+2020-10-22 Martin Liska <mliska@suse.cz>
+
+ PR c/94722
+ * g++.dg/no-stack-protector-attr-2.C: New test.
+ * g++.dg/no-stack-protector-attr-3.C: New test.
+ * g++.dg/no-stack-protector-attr.C: New test.
+
+2020-10-22 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/pr97249-1.c: New test.
+
+2020-10-22 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr97520.c: New.
+
+2020-10-22 Dennis Zhang <dennis.zhang@arm.com>
+
+ * gcc.target/arm/simd/mve-vmul_1.c: New test.
+
+2020-10-22 Andrew MacLeod <amacleod@redhat.com>
+
+ PR tree-optimization/97515
+ * gcc.dg/pr97515.c: New file.
+
+2020-10-21 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/fold-vec-extract-float.p9.c: rldicl and
+ subfic only for target LE.
+ * gcc.target/powerpc/fold-vec-extract-longlong.p9.c: xori only
+ for target LE. Adjust mfvsrd and add mfvsrld for BE.
+ * gcc.target/powerpc/fold-vec-extract-short.p9.c: vextuhrx for LE.
+ vextuhlx for BE.
+ * gcc.target/powerpc/p9-lxvx-stxvx-1.c: Remove target.
+ * gcc.target/powerpc/p9-lxvx-stxvx-2.c: Remove target.
+ * gcc.target/powerpc/p9-lxvx-stxvx-3.c: Remove target. Require
+ float128
+
+2020-10-21 Martin Liska <mliska@suse.cz>
+ Andrew MacLeod <amacleod@redhat.com>
+
+ PR target/97360
+ * gcc.target/powerpc/pr97360.c: New test.
+
+2020-10-21 Jan Hubicka <jh@suse.cz>
+
+ PR ipa/97445
+ * gcc.dg/ipa/inlinehint-5.c: New test.
+
+2020-10-21 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/p9-extract-1.c: Require lp64.
+ * gcc.target/powerpc/p9-extract-2.c: Require lp64.
+ * gcc.target/powerpc/p9-extract-3.c: Require lp64.
+ * gcc.target/powerpc/p9-permute.c: Remove target.
+ * gcc.target/powerpc/pr63335.c: Remove target.
+ * gcc.target/powerpc/pr87507.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-1.c: Require LE and P8.
+ * gcc.target/powerpc/swaps-p8-10.c: Remove target. Require P8.
+ * gcc.target/powerpc/swaps-p8-11.c: Remove target. Require P8.
+ * gcc.target/powerpc/swaps-p8-12.c: Require LE and P8.
+ * gcc.target/powerpc/swaps-p8-13.c: Remove target. Require P8.
+ * gcc.target/powerpc/swaps-p8-14.c: Remove target. Require P8.
+ * gcc.target/powerpc/swaps-p8-15.c: Remove target. Require P8.
+ * gcc.target/powerpc/swaps-p8-16.c: Remove target. Require P8.
+ * gcc.target/powerpc/swaps-p8-17.c: Require P8.
+ * gcc.target/powerpc/swaps-p8-18.c: Remove target. Require P8.
+ * gcc.target/powerpc/swaps-p8-19.c: Remove target. Require P8.
+ * gcc.target/powerpc/swaps-p8-2.c: Require LE and P8.
+ * gcc.target/powerpc/swaps-p8-20.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-21.c: Remove target. Require Altivec.
+ * gcc.target/powerpc/swaps-p8-22.c: Remove target. Require P8.
+ * gcc.target/powerpc/swaps-p8-23.c: Require LE and P8.
+ * gcc.target/powerpc/swaps-p8-24.c: Remove target. Require P8.
+ * gcc.target/powerpc/swaps-p8-25.c: Require LE and P8.
+ * gcc.target/powerpc/swaps-p8-26.c: Remove target. Require P8.
+ * gcc.target/powerpc/swaps-p8-27.c: Remove target. Require P8.
+ * gcc.target/powerpc/swaps-p8-28.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-29.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-3.c: Require LE and P8.
+ * gcc.target/powerpc/swaps-p8-30.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-31.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-32.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-33.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-34.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-35.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-36.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-37.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-38.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-39.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-4.c: Require LE and P8.
+ * gcc.target/powerpc/swaps-p8-40.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-41.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-42.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-43.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-44.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-45.c: Remove target.
+ * gcc.target/powerpc/swaps-p8-46.c: Require LE.
+ * gcc.target/powerpc/swaps-p8-5.c: Require LE and P8.
+ * gcc.target/powerpc/swaps-p8-6.c: Remove target. Require P8.
+ * gcc.target/powerpc/swaps-p8-7.c: Remove target. Require P8.
+ * gcc.target/powerpc/swaps-p8-8.c: Remove target. Require P8.
+ * gcc.target/powerpc/swaps-p8-9.c: Remove target. Require P8.
+ * gcc.target/powerpc/vec-cmp.c: Require LP64.
+ * gcc.target/powerpc/vec-cmpne.c: Remove target.
+ * gcc.target/powerpc/vec-mul.c: Remove target.
+ * gcc.target/powerpc/vec-set-char.c: Require LP64.
+ * gcc.target/powerpc/vec-set-int.c: Require LP64.
+ * gcc.target/powerpc/vec-set-short.c: Require LP64.
+ * gcc.target/powerpc/vec-xxpermdi.c: Remove target. Require VSX.
+ * gcc.target/powerpc/vsxcopy.c: Remove target. Require VSX.
+
+2020-10-21 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97500
+ * gfortran.dg/pr97500.f90: New testcase.
+
+2020-10-21 liuhongt <hongtao.liu@intel.com>
+
+ PR target/97506
+ * gcc.target/i386/pr97506.c: New test.
+
+2020-10-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/97503
+ * gcc.dg/tree-ssa/pr97503.c: New test.
+
+2020-10-21 Martin Liska <mliska@suse.cz>
+
+ PR sanitizer/97414
+ * g++.dg/asan/pr97414.C: New test.
+
+2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/multfixed.adb: Update expected exception message.
+
+2020-10-21 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/vstX_lane.c (CMT):
+ Adopt the same style used in the rest of the file.
+
+2020-10-21 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/Walloca-1.c: Adjust for 32-bits.
+
+2020-10-22 Dennis Zhang <dennis.zhang@arm.com>
+
+ * gcc.target/arm/simd/mve-vminmax_1.c: New test.
+
+2020-10-20 Jeff Law <law@redhat.com>
+
+ * gcc.dg/Wbuiltin-declaration-mismatch-9.c: Improve pruning of
+ invalid scanf call messages.
+
+2020-10-20 Andrew MacLeod <amacleod@redhat.com>
+
+ PR tree-optimization/97505
+ * gfortran.dg/pr97505.f90: New file.
+
+2020-10-20 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/lookup/local-extern.C: New.
+
+2020-10-20 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/Wrestrict-22.c: New test.
+ * g++.dg/torture/pr92421.C: Adjust for ranger.
+
+2020-10-20 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/Walloca-1.c: Adjust for ranger.
+ * gcc.dg/Walloca-12.c: Same.
+ * gcc.dg/Walloca-13.c: Same.
+ * gcc.dg/Walloca-2.c: Same.
+ * gcc.dg/Walloca-3.c: Same.
+ * gcc.dg/Walloca-6.c: Same.
+ * gcc.dg/Wvla-larger-than-2.c: Same.
+
+2020-10-20 Tobias Burnus <tobias@codesourcery.com>
+
+ * gcc.misc-tests/outputs.exp: Add ltrans_args dump files
+ for 'lto save-temps'.
+
+2020-10-20 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/pr97501.c: New test.
+
+2020-10-20 Nathan Sidwell <nathan@acm.org>
+
+ * gcc.dg/cpp/endif.c: Move to ...
+ * c-c++-common/cpp/endif.c: ... here.
+ * gcc.dg/cpp/endif.h: Move to ...
+ * c-c++-common/cpp/endif.h: ... here.
+ * c-c++-common/cpp/eof-2.c: Adjust diagnostic.
+ * c-c++-common/cpp/eof-3.c: Adjust diagnostic.
+
+2020-10-20 Marek Polacek <polacek@redhat.com>
+
+ PR c++/82239
+ * g++.dg/cpp0x/static_assert16.C: New test.
+
+2020-10-20 Arnaud Charlet <charlet@adacore.com>
+
+ * gnat.dg/opt11.adb: Add new expected warning.
+
+2020-10-20 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97496
+ * gcc.dg/vect/bb-slp-pr97496.c: New testcase.
+
+2020-10-20 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/pr97488.c: Add target int128 predicate.
+
+2020-10-19 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr97360-2.c: New test.
+
+2020-10-19 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/sad-vectorize-1.c: Remove target.
+ * gcc.target/powerpc/sad-vectorize-2.c: Remove target.
+ * gcc.target/powerpc/vec-extract-v16qi-df.c: Remove target.
+ * gcc.target/powerpc/vec-extract-v16qi.c: Remove target.
+ * gcc.target/powerpc/vec-extract-v16qiu-df.c: Remove target.
+ * gcc.target/powerpc/vec-extract-v16qiu.c: Remove target.
+ * gcc.target/powerpc/vec-extract-v2df.c: Remove target.
+ * gcc.target/powerpc/vec-extract-v2di.c: Require lp64.
+ * gcc.target/powerpc/vec-extract-v4sf.c: Remove target.
+ * gcc.target/powerpc/vec-extract-v4si-df.c: Remove target.
+ * gcc.target/powerpc/vec-extract-v4si.c: Remove target.
+ * gcc.target/powerpc/vec-extract-v4siu-df.c: Remove target.
+ * gcc.target/powerpc/vec-extract-v4siu.c: Remove target.
+ * gcc.target/powerpc/vec-extract-v8hi-df.c: Remove target.
+ * gcc.target/powerpc/vec-extract-v8hi.c: Remove target.
+ * gcc.target/powerpc/vec-extract-v8hiu-df.c: Remove target.
+ * gcc.target/powerpc/vec-extract-v8hiu.c: Remove target.
+ * gcc.target/powerpc/vec-init-1.c: Remove target.
+ * gcc.target/powerpc/vec-init-2.c: Require lp64.
+ * gcc.target/powerpc/vec-init-3.c: Require lp64.
+ * gcc.target/powerpc/vec-init-4.c: Remove target.
+ * gcc.target/powerpc/vec-init-5.c: Remove target.
+ * gcc.target/powerpc/vec-init-6.c: Require lp64.
+ * gcc.target/powerpc/vec-init-7.c: Require lp64.
+ * gcc.target/powerpc/vec-init-8.c: Remove target.
+ * gcc.target/powerpc/vec-init-9.c: Require lp64.
+ * gcc.target/powerpc/vec-setup-double.c: Remove target.
+ * gcc.target/powerpc/vec-setup-long.c: Remove target.
+ * gcc.target/powerpc/vsu/vec-xl-len-13.c: Correct expected warnings.
+ * gcc.target/powerpc/vsu/vsu.exp: Enable on AIX.
+
+2020-10-19 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/fold-vec-extract-char.p7.c: Remove target.
+ * gcc.target/powerpc/fold-vec-extract-char.p8.c: Remove target.
+ * gcc.target/powerpc/fold-vec-extract-char.p9.c: Remove target.
+ Expect 3 addi for ilp32.
+ * gcc.target/powerpc/fold-vec-extract-double.p7.c: Remove target.
+ Add -mbig-endian for Linux.
+ * gcc.target/powerpc/fold-vec-extract-double.p8.c: Remove target.
+ * gcc.target/powerpc/fold-vec-extract-float.p7.c: Remove target.
+ * gcc.target/powerpc/fold-vec-extract-float.p8.c: Remove target.
+ * gcc.target/powerpc/fold-vec-extract-float.p9.c: Require lp64.
+ * gcc.target/powerpc/fold-vec-extract-int.p7.c: Remove target.
+ * gcc.target/powerpc/fold-vec-extract-int.p8.c: Remove target.
+ * gcc.target/powerpc/fold-vec-extract-int.p9.c: Remove target.
+ Expect 3 addi for ilp32.
+ * gcc.target/powerpc/fold-vec-extract-longlong.p7.c: Remove target.
+ Expect 4 addi for ilp32.
+ * gcc.target/powerpc/fold-vec-extract-longlong.p8.c: Remove target.
+ Expect 4 addi for ilp32.
+ * gcc.target/powerpc/fold-vec-extract-longlong.p9.c: Require lp64.
+ * gcc.target/powerpc/fold-vec-extract-short.p7.c: Remove target.
+ * gcc.target/powerpc/fold-vec-extract-short.p8.c: Remove target.
+ * gcc.target/powerpc/fold-vec-extract-short.p9.c: Require lp64.
+ * gcc.target/powerpc/fold-vec-insert-char-p8.c: Remove target.
+ * gcc.target/powerpc/fold-vec-insert-char-p9.c: Remove target.
+ * gcc.target/powerpc/fold-vec-insert-double.c: Remove target.
+ * gcc.target/powerpc/fold-vec-insert-float-p8.c: Remove target.
+ * gcc.target/powerpc/fold-vec-insert-float-p9.c: Remove target.
+ * gcc.target/powerpc/fold-vec-insert-int-p8.c: Remove target.
+ * gcc.target/powerpc/fold-vec-insert-int-p9.c: Remove target.
+ Require 8 addi for ilp32.
+ * gcc.target/powerpc/fold-vec-insert-longlong.c: Remove target.
+ * gcc.target/powerpc/fold-vec-insert-short-p8.c: Remove target.
+ * gcc.target/powerpc/fold-vec-insert-short-p9.c: Remove target.
+ * gcc.target/powerpc/fold-vec-select-double.c: Remove target.
+ * gcc.target/powerpc/fold-vec-select-float.c: Remove target.
+ * gcc.target/powerpc/fold-vec-splats-int.c: Require lp64.
+ * gcc.target/powerpc/fold-vec-splats-longlong.c: Require lp64.
+
+2020-10-19 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/97438
+ * g++.dg/coroutines/pr97438.C: New test.
+
+2020-10-19 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/97456
+ * gcc.dg/tree-ssa/pr97456.c: New test.
+
+2020-10-19 Nathan Sidwell <nathan@acm.org>
+
+ * c-c++-common/cpp/pr97471.c: New.
+
+2020-10-19 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/pr97488.c: New test.
+
+2020-10-19 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97486
+ * gcc.dg/vect/bb-slp-pr97486.c: New testcase.
+
+2020-10-19 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/pr97467.c: New test.
+
+2020-10-19 Li Jia He <helijia@gcc.gnu.org>
+
+ PR tree-optimization/66552
+ * gcc.dg/pr66552.c: New testcase.
+
+2020-10-18 Harald Anlauf <anlauf@gmx.de>
+
+ * gfortran.dg/matmul_20.f90: New test.
+
+2020-10-17 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/p9-dimode1.c: Remove target.
+ * gcc.target/powerpc/p9-dimode2.c: Remove target.
+ * gcc.target/powerpc/p9-fpcvt-1.c: Remove target.
+ * gcc.target/powerpc/p9-fpcvt-2.c: Require lp64.
+ * gcc.target/powerpc/p9-minmax-1.c: Remove target.
+ * gcc.target/powerpc/p9-minmax-2.c: Remove target.
+ * gcc.target/powerpc/p9-minmax-3.c: Remove target.
+ * gcc.target/powerpc/p9-splat-1.c: Require lp64.
+ * gcc.target/powerpc/p9-splat-2.c: Remove target.
+ * gcc.target/powerpc/p9-splat-3.c: Remove target.
+ * gcc.target/powerpc/p9-splat-4.c: Require lp64.
+ * gcc.target/powerpc/p9-vbpermd.c: Require lp64.
+ * gcc.target/powerpc/p9-vneg.c: Require lp64.
+ * gcc.target/powerpc/p9-vparity.c: Require lp64.
+ * gcc.target/powerpc/p9-vpermr.c: Require LE.
+ * gcc.target/powerpc/p9-xxbr-1.c: Remove target.
+ * gcc.target/powerpc/p9-xxbr-2.c: Require lp64.
+ * gcc.target/powerpc/p9-xxbr-3.c: Require lp64.
+
+2020-10-17 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/builtins-3-p9.c: Remove le.
+
+2020-10-17 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/pr96139-a.c: Remove -m32.
+ * gcc.target/powerpc/pr96139-b.c: Remove -m64.
+
+2020-10-16 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95979
+ * gfortran.dg/index_4.f90: New test.
+
+2020-10-16 Andrew MacLeod <amacleod@redhat.com>
+
+ PR tree-optimization/97462
+ * gcc.dg/pr97462.c: New file.
+
+2020-10-16 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/97460
+ * g++.dg/template/pr97460.C: New.
+
+2020-10-16 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/96258
+ * g++.dg/parse/pr96258.C: New.
+
+2020-10-16 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ PR target/97327
+ * gcc.target/arm/mve/intrinsics/pr97327.c: New test.
+
+2020-10-16 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-53.c: New testcase.
+
+2020-10-16 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ PR target/97291
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_s64.c: Modify.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_u64.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_f32.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_s32.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_u32.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_u32.c: Likewise.
+
+2020-10-16 Jan Hubicka <jh@suse.cz>
+
+ PR testsuite/97426
+ * gcc.dg/tree-ssa/modref-4.c: Fix return test.
+
+2020-10-16 Martin Liska <mliska@suse.cz>
+
+ PR ipa/97404
+ * gcc.c-torture/execute/pr97404.c: New test.
+
+2020-10-16 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97428
+ * gcc.dg/vect/vect-complex-5.c: Expect to SLP.
+ * gcc.dg/vect/pr97428.c: Likewise.
+
+2020-10-15 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/builtins-1-p9-runnable.c: Adjust for big endian.
+ * gcc.target/powerpc/builtins-7-p9-runnable.c: Same.
+
+2020-10-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/95844
+ * g++.dg/cpp2a/spaceship-eq10.C: New test.
+
+2020-10-15 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/builtins-5-p9-runnable.c: Require lp64.
+ * gcc.target/powerpc/builtins-msum-runnable.c: Require int128.
+ * gcc.target/powerpc/float128-cmp2-runnable.c: Require float128.
+ * gcc.target/powerpc/fold-vec-extract-double.p9.c: Require lp64.
+
+2020-10-15 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97406
+ PR c++/85901
+ * g++.dg/diagnostic/ptrtomem1.C: New test.
+ * g++.dg/diagnostic/ptrtomem2.C: New test.
+
+2020-10-15 Tom de Vries <tdevries@suse.de>
+
+ * gcc.dg/atomic/c11-atomic-exec-6.c: Xfail execution for nvptx.
+ * gcc.dg/atomic/c11-atomic-exec-7.c: Same.
+ * gcc.dg/atomic/stdatomic-op-5.c: Same.
+
+2020-10-15 Tom de Vries <tdevries@suse.de>
+
+ PR target/97436
+ * gcc.target/nvptx/atomic_fetch-3.c: Remove.
+
+2020-10-15 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-52.c: New testcase.
+
+2020-10-15 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97482
+ * gcc.dg/vect/pr97428.c: New testcase.
+
+2020-10-15 Tom de Vries <tdevries@suse.de>
+
+ * gcc.dg/tree-ssa/pr84512.c: Remove xfail for nvptx.
+
+2020-10-15 Tom de Vries <tdevries@suse.de>
+
+ * c-c++-common/ident-0b.c: Require effective target ident_directive.
+
+2020-10-15 Tom de Vries <tdevries@suse.de>
+
+ * gcc.c-torture/compile/limits-externdecl.c: Remove dg-skip-if for
+ nvptx.
+
+2020-10-15 Tom de Vries <tdevries@suse.de>
+
+ * gcc.dg/attr-alloc_size-11.c: Don't xfail for nvptx.
+ * gcc.dg/tree-ssa/20040204-1.c: Same.
+
+2020-10-15 Tom de Vries <tdevries@suse.de>
+
+ * gcc.c-torture/execute/pr68185.c: Remove dg-skip-if for nvptx.
+
+2020-10-15 Tom de Vries <tdevries@suse.de>
+
+ * gcc.c-torture/execute/981019-1.c: Remove dg-skip-if for nvptx.
+
+2020-10-15 Tom de Vries <tdevries@suse.de>
+
+ * gcc.c-torture/compile/pr42717.c: Remove nvptx xfail.
+ * gcc.c-torture/compile/pr61684.c: Same.
+ * gcc.c-torture/execute/pr20601-1.c: Same.
+ * gcc.c-torture/execute/pr52129.c: Same.
+ * gcc.c-torture/execute/pr59221.c: Same.
+ * gcc.dg/pr68671.c: Same.
+
+2020-10-15 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/ipa/modref-1.c: Remove space between param offset: and number
+ in scan-ipa-dump.
+ (b): Declare return type to void.
+ (main): Declare return type to int. Change c to array of 3 chars.
+ * gcc.dg/tree-ssa/modref-4.c: Remove space between param offset: and
+ number in scan-ipa-dump. Use modref1 instead of modref2.
+ (b): Declare return type to void.
+ (main): Declare return type to int. Change c to array of 3 chars.
+
+2020-10-15 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.target/riscv/mcpu-1.c: New.
+ * gcc.target/riscv/mcpu-2.c: Ditto.
+ * gcc.target/riscv/mcpu-3.c: Ditto.
+ * gcc.target/riscv/mcpu-4.c: Ditto.
+ * gcc.target/riscv/mcpu-5.c: Ditto.
+ * gcc.target/riscv/mcpu-6.c: Ditto.
+ * gcc.target/riscv/mcpu-7.c: Ditto.
+
+2020-10-15 Hongyu Wang <hongyu.wang@intel.com>
+
+ * gcc.target/i386/hreset-1.c: New test.
+ * gcc.target/i386/funcspec-56.inc: Add new target attribute.
+ * gcc.target/i386/x86gprintrin-1.c: Add -mhreset.
+ * gcc.target/i386/x86gprintrin-2.c: Ditto.
+ * gcc.target/i386/x86gprintrin-3.c: Ditto.
+ * gcc.target/i386/x86gprintrin-4.c: Add mhreset.
+ * gcc.target/i386/x86gprintrin-5.c: Ditto.
+
+2020-10-15 Hongtao Liu <hongtao.liu@intel.com>
+
+ * gcc.target/i386/funcspec-56.inc: Add new target attribute.
+ * gcc.target/i386/uintr-1.c: New test.
+ * gcc.target/i386/uintr-2.c: Ditto.
+ * gcc.target/i386/uintr-3.c: Ditto.
+ * gcc.target/i386/uintr-4.c: Ditto.
+ * gcc.target/i386/uintr-5.c: Ditto.
+ * gcc.target/i386/x86gprintrin-1.c: Add -muintr for 64bit target.
+ * gcc.target/i386/x86gprintrin-2.c: Ditto.
+ * gcc.target/i386/x86gprintrin-3.c: Ditto.
+ * gcc.target/i386/x86gprintrin-4.c: Add muintr for 64bit target.
+ * gcc.target/i386/x86gprintrin-5.c: Ditto.
+
+2020-10-14 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/97391
+ * gcc.dg/Warray-bounds-68.c: New test.
+
+2020-10-14 Martin Sebor <msebor@redhat.com>
+
+ PR c/97413
+ * gcc.dg/Wvla-parameter-8.c: New test.
+
+2020-10-14 Tom de Vries <tdevries@suse.de>
+
+ * lib/target-supports.exp (check_compile): Save and restore
+ $compiler_flags when calling ${tool}_target_compile.
+
+2020-10-14 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93388
+ * gcc.dg/analyzer/data-model-21.c: New test.
+
+2020-10-14 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/97394
+ * gcc.dg/analyzer/setjmp-pr93378.c: Use test-setjmp.h rather than
+ <setjmp.h>.
+ * gcc.dg/analyzer/sigsetjmp-5.c: Likewise.
+ * gcc.dg/analyzer/sigsetjmp-6.c: Likewise.
+ * gcc.dg/analyzer/test-setjmp.h: Don't include <setjmp.h>.
+ Provide decls of jmp_buf, sigjmp_buf, setjmp, sigsetjmp,
+ longjmp, and siglongjmp.
+
+2020-10-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/97358
+ * g++.dg/cpp0x/lambda/lambda-variadic11.C: New test.
+
+2020-10-14 Sunil K Pandey <skpgkp2@gmail.com>
+
+ PR target/95483
+ * gcc.target/i386/avx-1.c: Add test.
+ * gcc.target/i386/avx2-vbroadcastsi128-1.c: Ditto.
+ * gcc.target/i386/avx2-vbroadcastsi128-2.c: Ditto.
+ * gcc.target/i386/avx512bw-vmovdqu16-1.c: Ditto.
+ * gcc.target/i386/avx512bw-vmovdqu8-1.c: Ditto.
+ * gcc.target/i386/avx512dq-vreducesd-1.c: Ditto.
+ * gcc.target/i386/avx512dq-vreducesd-2.c: Ditto.
+ * gcc.target/i386/avx512dq-vreducess-1.c: Ditto.
+ * gcc.target/i386/avx512dq-vreducess-2.c: Ditto.
+ * gcc.target/i386/avx512er-vrcp28sd-1.c: Ditto.
+ * gcc.target/i386/avx512er-vrcp28sd-2.c: Ditto.
+ * gcc.target/i386/avx512er-vrcp28ss-1.c: Ditto.
+ * gcc.target/i386/avx512er-vrcp28ss-2.c: Ditto.
+ * gcc.target/i386/avx512er-vrsqrt28sd-1.c: Ditto.
+ * gcc.target/i386/avx512er-vrsqrt28sd-2.c: Ditto.
+ * gcc.target/i386/avx512er-vrsqrt28ss-1.c: Ditto.
+ * gcc.target/i386/avx512er-vrsqrt28ss-2.c: Ditto.
+ * gcc.target/i386/avx512f-vcvtsd2si-1.c: Ditto.
+ * gcc.target/i386/avx512f-vcvtsd2si64-1.c: Ditto.
+ * gcc.target/i386/avx512f-vcvtsd2ss-1.c: Ditto.
+ * gcc.target/i386/avx512f-vcvtsi2sd64-1.c: Ditto.
+ * gcc.target/i386/avx512f-vcvtsi2ss-1.c: Ditto.
+ * gcc.target/i386/avx512f-vcvtsi2ss64-1.c: Ditto.
+ * gcc.target/i386/avx512f-vcvtss2sd-1.c: Ditto.
+ * gcc.target/i386/avx512f-vcvtss2si-1.c: Ditto.
+ * gcc.target/i386/avx512f-vcvtss2si64-1.c: Ditto.
+ * gcc.target/i386/avx512f-vscalefsd-1.c: Ditto.
+ * gcc.target/i386/avx512f-vscalefsd-2.c: Ditto.
+ * gcc.target/i386/avx512f-vscalefss-1.c: Ditto.
+ * gcc.target/i386/avx512f-vscalefss-2.c: Ditto.
+ * gcc.target/i386/avx512f-vsqrtsd-1.c: Ditto.
+ * gcc.target/i386/avx512f-vsqrtsd-2.c: Ditto.
+ * gcc.target/i386/avx512f-vsqrtss-1.c: Ditto.
+ * gcc.target/i386/avx512f-vsqrtss-2.c: Ditto.
+ * gcc.target/i386/avx512vl-vmovdqa32-1.c: Ditto.
+ * gcc.target/i386/avx512vl-vmovdqa64-1.c: Ditto.
+ * gcc.target/i386/sse-13.c: Ditto.
+ * gcc.target/i386/sse-23.c: Ditto.
+ * gcc.target/i386/avx512dq-vreducepd-3.c: New test.
+ * gcc.target/i386/avx512dq-vreducepd-4.c: New test.
+ * gcc.target/i386/avx512dq-vreduceps-3.c: New test.
+ * gcc.target/i386/avx512dq-vreduceps-4.c: New test.
+ * gcc.target/i386/avx512f-vcvtsi2sd-1.c: New test.
+ * gcc.target/i386/pr95483-1.c: New test.
+ * gcc.target/i386/pr95483-2.c: New test.
+ * gcc.target/i386/pr95483-3.c: New test.
+ * gcc.target/i386/pr95483-4.c: New test.
+ * gcc.target/i386/pr95483-5.c: New test.
+ * gcc.target/i386/pr95483-6.c: New test.
+ * gcc.target/i386/pr95483-7.c: New test.
+
+2020-10-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/97387
+ * gcc.target/i386/pr97387-1.c: New test.
+ * gcc.target/i386/pr97387-2.c: New test.
+
+2020-10-14 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/pr97396.c: New test.
+
+2020-10-14 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/ipa/modref-1.c: New test.
+ * gcc.dg/tree-ssa/modref-4.c: New test.
+
+2020-10-14 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/97390
+ * gfortran.dg/goacc/warn_truncated.f90: New test.
+
+2020-10-14 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/lookup/extern-redecl2.C: New.
+
+2020-10-14 Steven G. Kargl <kargl@gcc.gnu.org>
+ Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/95614
+ * gfortran.dg/pr95614_1.f90: New test.
+ * gfortran.dg/pr95614_2.f90: New test.
+ * gfortran.dg/pr95614_3.f90: New test.
+ * gfortran.dg/pr95614_4.f90: New test.
+
+2020-10-14 Kito Cheng <kito.cheng@sifive.com>
+
+ PR target/96759
+ * g++.target/riscv/pr96759.C: New.
+ * gcc.target/riscv/pr96759.c: New.
+
+2020-10-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/97386
+ * gcc.c-torture/execute/pr97386-1.c: New test.
+ * gcc.c-torture/execute/pr97386-2.c: New test.
+
+2020-10-13 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/arm/stack-protector-5.c: Use -Os rather than -O2.
+ * gcc.target/arm/stack-protector-6.c: Likewise.
+
+2020-10-13 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97382
+ * gcc.dg/vect/no-vfa-vect-dv-2.c: Remove same align dump
+ scanning.
+ * gcc.dg/vect/vect-103.c: Likewise.
+ * gcc.dg/vect/vect-91.c: Likewise.
+ * gfortran.dg/vect/vect-4.f90: Likewise.
+
+2020-10-13 Martin Liska <mliska@suse.cz>
+
+ PR middle-end/97392
+ * g++.dg/asan/asan_test.C: Disable -Wstringop-overflow.
+ * gcc.dg/asan/pr80166.c: Likewise.
+
+2020-10-12 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/97258
+ * gcc.dg/analyzer/callbacks-1.c: New test.
+ * gcc.dg/analyzer/callbacks-2.c: New test.
+ * gcc.dg/analyzer/callbacks-3.c: New test.
+
+2020-10-12 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr97381.c: New test.
+
+2020-10-12 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/pr97378.c: New test.
+
+2020-10-12 David Malcolm <dmalcolm@redhat.com>
+
+ PR c/83347
+ PR middle-end/90404
+ PR analyzer/95007
+ * gcc.dg/analyzer/write-to-const-1.c: New test.
+ * gcc.dg/analyzer/write-to-string-literal-1.c: New test.
+
+2020-10-12 Martin Sebor <msebor@redhat.com>
+
+ PR c++/97201
+ * g++.dg/warn/Wplacement-new-size-8.C: Adjust expected message.
+ * g++.dg/warn/Warray-bounds-10.C: New test.
+ * g++.dg/warn/Warray-bounds-11.C: New test.
+ * g++.dg/warn/Warray-bounds-12.C: New test.
+ * g++.dg/warn/Warray-bounds-13.C: New test.
+
+2020-10-12 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/97342
+ PR middle-end/97023
+ PR middle-end/96384
+ * c-c++-common/Wrestrict.c: Adjust comment.
+ * gcc.dg/Wstringop-overflow-34.c: Remove xfail.
+ * gcc.dg/Wstringop-overflow-43.c: Remove xfails. Adjust regex patterns.
+ * gcc.dg/pr51683.c: Prune out expected warning.
+ * gcc.target/i386/pr60693.c: Same.
+ * g++.dg/warn/Wplacement-new-size-8.C: New test.
+ * gcc.dg/Wstringop-overflow-41.c: New test.
+ * gcc.dg/Wstringop-overflow-44.s: New test.
+ * gcc.dg/Wstringop-overflow-45.c: New test.
+ * gcc.dg/Wstringop-overflow-46.c: New test.
+ * gcc.dg/Wstringop-overflow-47.c: New test.
+ * gcc.dg/Wstringop-overflow-49.c: New test.
+ * gcc.dg/Wstringop-overflow-50.c: New test.
+ * gcc.dg/Wstringop-overflow-51.c: New test.
+ * gcc.dg/Wstringop-overflow-52.c: New test.
+ * gcc.dg/Wstringop-overflow-53.c: New test.
+ * gcc.dg/Wstringop-overflow-54.c: New test.
+ * gcc.dg/Wstringop-overflow-55.c: New test.
+ * gcc.dg/Wstringop-overread-5.c: New test.
+
+2020-10-12 Martin Sebor <msebor@redhat.com>
+
+ PR c++/96511
+ PR middle-end/96384
+ * g++.dg/init/strlen.C: Add expected warning.
+ * g++.dg/warn/Wplacement-new-size-1.C: Relax warnings.
+ * g++.dg/warn/Wplacement-new-size-2.C: Same.
+ * g++.dg/warn/Wplacement-new-size-6.C: Same.
+ * gcc.dg/Warray-bounds-58.c: Adjust
+ * gcc.dg/Wstringop-overflow-37.c: Same.
+ * g++.dg/warn/Wplacement-new-size-7.C: New test.
+
+2020-10-12 Christophe Lyon <christophe.lyon@linaro.org>
+
+ PR tree-optimization/97357
+ * gcc.dg/pr97357.c: Call setjmp instead of _setjmp.
+
+2020-10-12 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-50.c: New testcase.
+ * gcc.dg/vect/bb-slp-51.c: Likewise.
+
+2020-10-12 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/97079
+ * gcc.target/aarch64/sve/pr97079.c: New test.
+
+2020-10-12 Duan bo <duanbo3@huawei.com>
+
+ PR target/96757
+ * gcc.target/aarch64/pr96757.c: New test.
+
+2020-10-12 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/97349
+ * gcc.target/aarch64/simd/pr97349.c: New test.
+
+2020-10-12 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/pr97371.c: New test.
+
+2020-10-12 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97357
+ * gcc.dg/pr97357.c: New testcase.
+
+2020-10-12 Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/96099
+ * gfortran.dg/pr96099_1.f90: New test.
+ * gfortran.dg/pr96099_2.f90: New test.
+
+2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
+
+ * obj-c++.dg/plugin/diagnostic-test-expressions-1.mm:
+ Adjust testcase to include expressions for @selector and
+ @protocol. XFAIL where this is still not sufficient to obtain
+ a disgnostic range.
+
+2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
+
+ * objc-obj-c++-shared/TestsuiteObject.h: Add dummy retain and
+ release method declarations.
+ * objc-obj-c++-shared/TestsuiteObject.m: Add dummy retain and
+ release implementations.
+
+2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
+
+ * obj-c++.dg/objc-gc-3.mm:i Skip for Darwin >= 16.
+
+2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
+
+ * obj-c++.dg/cxx-ivars-3.mm: Skip for macOS >= 10.7.
+
+2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
+
+ * obj-c++.dg/gnu-api-2-class-meta.mm: Add a flag to cause NeXT
+ headers to expose prototypes for messaging.
+ * obj-c++.dg/gnu-api-2-class.mm: Likewise.
+ * obj-c++.dg/gnu-api-2-objc.mm: Skip this because of the extra
+ protocols pulled in by system headers.
+
+2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
+
+ * objc.dg/plugin/diagnostic-test-expressions-1.m: Use assignment
+ expressions for @selector and @protocol to obtain a useful
+ diagnostic range.
+
+2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
+
+ * objc.dg/call-super-2.m: Remove inclusion of runtime.h.
+ Add a FIXME about the test portability.
+
+2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
+
+ * objc.dg/torture/forward-1.m: Implement forwarding using the
+ native NeXT (NSInvocation) method for Darwin.
+
+2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
+
+ * objc.dg/ivar-scope-4.m: Add inititialize method to the
+ root class.
+
+2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
+
+ * objc.dg/gnu-api-2-class-meta.m: Add a flag to cause NeXT
+ headers to expose prototypes for messaging. Mark the root
+ class if the objc_root_class attribute is available. Use
+ char ** as the second arg to main.
+ * objc.dg/gnu-api-2-class.m: Use dispatch prototype.
+ * objc.dg/gnu-api-2-objc.m: Skip on NeXT because of extra
+ prototypes pulled in by headers.
+
+2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
+
+ * objc.dg/objc-gc-4.m: Disable for macOS 10.15 and 11.x.
+
+2020-10-11 Iain Sandoe <iain@sandoe.co.uk>
+
+ * objc-obj-c++-shared/TestsuiteObject.h: If the compiler
+ supports objc_root_object attributes, then mark the testsuite
+ object accordingly.
+ * objc-obj-c++-shared/TestsuiteObject.m: Avoid direct access
+ to isa, which is an error for modern Objective-C.
+ * objc/execute/class-tests-1.h: Declare a string function we
+ use locally (avoid pulling in the whole of string.h).
+
+2020-10-10 Iain Sandoe <iain@sandoe.co.uk>
+
+ * gcc.dg/darwin-sections.c: Adjust test for renamed BSS and common
+ sections. Cater for 64 and 128 bit long doubles.
+
+2020-10-10 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/97250
+ * gcc.target/i386/x86-64-v2.c: Verify that
+ __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 is defined.
+ * gcc.target/i386/x86-64-v3.c: Likewise.
+ * gcc.target/i386/x86-64-v4.c: Likewise.
+
+2020-10-10 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/pr97359.c: New test.
+
+2020-10-09 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/97313
+ * gcc.target/i386/pr97313.c: New.
+
+2020-10-09 H.J. Lu <hjl.tools@gmail.com>
+
+ * gcc.target/i386/avx-1.c (__builtin_ia32_lwpval32): New to
+ support <lwpintrin.h> included in <x86gprintrin.h>.
+ (__builtin_ia32_lwpval64): Likewise.
+ (__builtin_ia32_lwpins32): Likewise.
+ (__builtin_ia32_lwpins64): Likewise.
+ (__builtin_ia32_bextri_u32): New to support <tbmintrin.h>
+ included in <x86gprintrin.h>.
+ (__builtin_ia32_bextri_u64): Likewise.
+ * gcc.target/i386/x86gprintrin-1.c: New test.
+ * gcc.target/i386/x86gprintrin-2.c: Likewise.
+ * gcc.target/i386/x86gprintrin-3.c: Likewise.
+ * gcc.target/i386/x86gprintrin-4.c: Likewise.
+ * gcc.target/i386/x86gprintrin-4a.c: Likewise.
+ * gcc.target/i386/x86gprintrin-5.c: Likewise.
+ * gcc.target/i386/x86gprintrin-5a.c: Likewise.
+ * gcc.target/i386/x86gprintrin-5b.c: Likewise.
+ * gcc.target/i386/x86gprintrin-6.c: Likewise.
+
+2020-10-09 Richard Biener <rguenther@suse.de>
+
+ * lib/target-supports.exp (check_effective_target_vect_masked_load):
+ New effective target.
+ * gcc.dg/vect/pr65947-3.c: Update.
+
+2020-10-09 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97334
+ * gcc.dg/vect/bb-slp-pr65935.c: Amend.
+
+2020-10-09 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97347
+ * g++.dg/vect/pr97347.cc: New testcase.
+
+2020-10-09 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr97317.c: New test.
+
+2020-10-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/94801
+ PR target/97312
+ * gcc.dg/tree-ssa/pr94801.c: New test.
+
+2020-10-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/97325
+ * gcc.c-torture/execute/pr97325.c: New test.
+
+2020-10-09 Aldy Hernandez <aldyh@redhat.com>
+
+ PR testsuite/97337
+ * gcc.dg/pr97315-1.c: Moved to...
+ * g++.dg/opt/pr97315-1.C: ...here.
+
+2020-10-09 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-phis-1.c: New testcase.
+
+2020-10-08 Jason Merrill <jason@redhat.com>
+
+ PR c++/96805
+ * g++.dg/cpp0x/alias-decl-pr96805.C: New test.
+
+2020-10-08 Christophe Lyon <christophe.lyon@linaro.org>
+
+ PR target/96914
+ * gcc.target/arm/mve/intrinsics/vcvtnq_u32_f32.c: New test.
+
+2020-10-08 Martin Liska <mliska@suse.cz>
+ Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-22.c: Adjust.
+ * gfortran.dg/pr68627.f: Likewise.
+
+2020-10-08 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97330
+ * gcc.dg/torture/pr97330-1.c: New testcase.
+ * gcc.dg/torture/pr97330-2.c: Likewise.
+
+2020-10-08 Richard Biener <rguenther@suse.de>
+
+ * g++.dg/vect/slp-pr50819.cc: Adjust.
+ * gcc.dg/vect/bb-slp-1.c: Adjust.
+ * gcc.dg/vect/bb-slp-10.c: Adjust.
+ * gcc.dg/vect/bb-slp-11.c: Adjust.
+ * gcc.dg/vect/bb-slp-13.c: Adjust.
+ * gcc.dg/vect/bb-slp-14.c: Adjust.
+ * gcc.dg/vect/bb-slp-15.c: Adjust.
+ * gcc.dg/vect/bb-slp-16.c: Adjust.
+ * gcc.dg/vect/bb-slp-17.c: Adjust.
+ * gcc.dg/vect/bb-slp-18.c: Adjust.
+ * gcc.dg/vect/bb-slp-19.c: Adjust.
+ * gcc.dg/vect/bb-slp-2.c: Adjust.
+ * gcc.dg/vect/bb-slp-20.c: Adjust.
+ * gcc.dg/vect/bb-slp-21.c: Adjust.
+ * gcc.dg/vect/bb-slp-22.c: Adjust.
+ * gcc.dg/vect/bb-slp-23.c: Adjust.
+ * gcc.dg/vect/bb-slp-24.c: Adjust.
+ * gcc.dg/vect/bb-slp-25.c: Adjust.
+ * gcc.dg/vect/bb-slp-26.c: Adjust.
+ * gcc.dg/vect/bb-slp-27.c: Adjust.
+ * gcc.dg/vect/bb-slp-28.c: Adjust.
+ * gcc.dg/vect/bb-slp-29.c: Adjust.
+ * gcc.dg/vect/bb-slp-3.c: Adjust.
+ * gcc.dg/vect/bb-slp-30.c: Adjust.
+ * gcc.dg/vect/bb-slp-31.c: Adjust.
+ * gcc.dg/vect/bb-slp-34.c: Adjust.
+ * gcc.dg/vect/bb-slp-35.c: Adjust.
+ * gcc.dg/vect/bb-slp-36.c: Adjust.
+ * gcc.dg/vect/bb-slp-38.c: Adjust.
+ * gcc.dg/vect/bb-slp-4.c: Adjust.
+ * gcc.dg/vect/bb-slp-45.c: Adjust.
+ * gcc.dg/vect/bb-slp-46.c: Adjust.
+ * gcc.dg/vect/bb-slp-48.c: Adjust.
+ * gcc.dg/vect/bb-slp-5.c: Adjust.
+ * gcc.dg/vect/bb-slp-6.c: Adjust.
+ * gcc.dg/vect/bb-slp-7.c: Adjust.
+ * gcc.dg/vect/bb-slp-8.c: Adjust.
+ * gcc.dg/vect/bb-slp-8a.c: Adjust.
+ * gcc.dg/vect/bb-slp-8b.c: Adjust.
+ * gcc.dg/vect/bb-slp-9.c: Adjust.
+ * gcc.dg/vect/bb-slp-div-2.c: Adjust.
+ * gcc.dg/vect/bb-slp-over-widen-1.c: Adjust.
+ * gcc.dg/vect/bb-slp-over-widen-2.c: Adjust.
+ * gcc.dg/vect/bb-slp-pattern-2.c: Adjust.
+ * gcc.dg/vect/bb-slp-pow-1.c: Adjust.
+ * gcc.dg/vect/bb-slp-pr58135.c: Adjust.
+ * gcc.dg/vect/bb-slp-pr65935.c: Adjust.
+ * gcc.dg/vect/bb-slp-pr78205.c: Adjust.
+ * gcc.dg/vect/bb-slp-pr81635-1.c: Adjust.
+ * gcc.dg/vect/bb-slp-pr81635-3.c: Adjust.
+ * gcc.dg/vect/bb-slp-pr95839-2.c: Adjust.
+ * gcc.dg/vect/bb-slp-pr95839.c: Adjust.
+ * gcc.dg/vect/bb-slp-pr95866.c: Adjust.
+ * gcc.dg/vect/bb-slp-subgroups-1.c: Adjust.
+ * gcc.dg/vect/bb-slp-subgroups-2.c: Adjust.
+ * gcc.dg/vect/bb-slp-subgroups-3.c: Adjust.
+ * gcc.dg/vect/fast-math-bb-slp-call-1.c: Adjust.
+ * gcc.dg/vect/no-tree-reassoc-bb-slp-12.c: Adjust.
+ * gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c: Adjust.
+ * gfortran.dg/vect/pr62283-2.f: Adjust.
+ * gcc.target/i386/pr68961.c: Adjust.
+ * gcc.target/i386/pr84101.c: Adjust.
+ * gcc.dg/vect/bb-slp-pr81635-2.c: Adjust.
+ * gcc.dg/vect/bb-slp-pr81635-4.c: Adjust.
+ * gcc.dg/vect/fast-math-bb-slp-call-2.c: Adjust.
+ * gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c: Adjust.
+ * gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp.c: Adjust.
+ * gcc.dg/vect/bb-slp-div-1.c: Adjust.
+ * gcc.dg/vect/bb-slp-pr90006.c: Adjust.
+ * g++.dg/vect/slp-pr50413.cc: Adjust.
+
+2020-10-08 Christophe Lyon <christophe.lyon@linaro.org>
+
+ PR target/96914
+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_u16.c: Remove.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_u32.c: Remove.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u16.c: Remove.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u32.c: Remove.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u8.c: Remove.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u16.c: Remove.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u32.c: Remove.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u8.c: Remove.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u16.c: Remove.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u32.c: Remove.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u8.c: Remove.
+
+2020-10-08 Christophe Lyon <christophe.lyon@linaro.org>
+
+ PR target/96914
+ * gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s32.c: New test.
+ * gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s8.c: New test.
+ * gcc.target/arm/mve/intrinsics/vqdmlashq_n_s16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vqdmlashq_n_s32.c: New test.
+ * gcc.target/arm/mve/intrinsics/vqdmlashq_n_s8.c: New test.
+
+2020-10-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/97322
+ * gcc.dg/pr97322.c: New test.
+
+2020-10-08 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/pr97315-2.c: New test.
+
+2020-10-08 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/pr97315-1.c: New test.
+
+2020-10-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/97294
+ * gcc.dg/asan/pr97294.c: New test.
+
+2020-10-08 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/97052
+ * g++.dg/cpp2a/concepts-defarg2.C: New test.
+
+2020-10-08 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/96229
+ * g++.dg/cpp2a/concepts-class2.C: New test.
+
+2020-10-07 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97010
+ * g++.dg/cpp2a/fn-template21.C: New test.
+ * g++.dg/cpp2a/fn-template22.C: New test.
+
+2020-10-07 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97307
+ * gcc.dg/tree-ssa/ssa-sink-17.c: New testcase.
+ * gcc.dg/vect/pr65947-3.c: XFAIL.
+
+2020-10-07 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/88115
+ PR libstdc++/97273
+ * g++.dg/template/alignof3.C: New test.
+
+2020-10-07 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/97116
+ * g++.dg/analyzer/pr97116.C: New test.
+
+2020-10-07 David Malcolm <dmalcolm@redhat.com>
+
+ * g++.dg/analyzer/analyzer.exp (DEFAULT_CXXFLAGS): Remove
+ -fdiagnostics-path-format=separate-events.
+ * gcc.dg/analyzer/analyzer.exp (DEFAULT_CFLAGS): Likewise.
+ * gcc.dg/plugin/diagnostic-path-format-default.c: Rename to...
+ * gcc.dg/plugin/diagnostic-path-format-plain.c: ...this. Remove
+ dg-options directive. Copy remainder of test from
+ diagnostic-path-format-separate-events.c.
+ * gcc.dg/plugin/diagnostic-test-paths-2.c: Add
+ -fdiagnostics-path-format=inline-events to options.
+ Fix expected output for location of conditional within "for" loop.
+ * gcc.dg/plugin/plugin.exp (plugin_test_list): Update for
+ renaming.
+ * gfortran.dg/analyzer/analyzer.exp (DEFAULT_FFLAGS): Remove
+ -fdiagnostics-path-format=separate-events.
+
+2020-10-07 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/cpp0x/lambda/lambda-sfinae1.C: Avoid ill-formed local extern
+ * g++.dg/init/pr42844.C: Add expected error.
+ * g++.dg/lookup/extern-redecl1.C: Likewise.
+ * g++.dg/lookup/koenig15.C: Avoid ill-formed.
+ * g++.dg/lto/pr95677.C: New.
+ * g++.dg/other/nested-extern-1.C: Correct expected behabviour.
+ * g++.dg/other/nested-extern-2.C: Likewise.
+ * g++.dg/other/nested-extern.cc: Split ...
+ * g++.dg/other/nested-extern-1.cc: ... here ...
+ * g++.dg/other/nested-extern-2.cc: ... here.
+ * g++.dg/template/scope5.C: Avoid ill-formed
+ * g++.old-deja/g++.law/missed-error2.C: Allow extension.
+ * g++.old-deja/g++.pt/crash3.C: Add expected error.
+
+2020-10-07 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/96394
+ * gcc.dg/tree-prof/pr96394.c: New test.
+
+2020-10-07 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/gomp/simd-2.c: New test.
+ * gcc.dg/gomp/simd-3.c: New test.
+
+2020-10-06 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97297
+ * g++.dg/cpp2a/typename18.C: New test.
+
+2020-10-06 Tobias Burnus <tobias@codesourcery.com>
+
+ PR middle-end/90861
+ * c-c++-common/goacc/declare-pr90861.c: Remove xfail.
+
+2020-10-06 Andrew MacLeod <amacleod@redhat.com>
+
+ * gcc.dg/pr81192.c: Disable EVRP pass.
+ * gcc.dg/tree-ssa/pr77445-2.c: Ditto.
+ * gcc.dg/tree-ssa/ssa-dom-thread-6.c: Adjust.
+ * gcc.dg/tree-ssa/ssa-dom-thread-7.c: Ditto.
+
+2020-10-06 Dennis Zhang <dennis.zhang@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_f16.c: Use additional
+ option -fno-ipa-icf and change the instruction count from 8 to 16.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_u8.c: Likewise.
+
+2020-10-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/97282
+ * gcc.target/i386/pr97282.c: New test.
+
+2020-10-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/97289
+ * c-c++-common/gomp/pr97289.c: New test.
+
+2020-10-06 Joe Ramsay <Joe.Ramsay@arm.com>
+
+ * gcc.target/arm/cortex-m55-nodsp-flag-hard.c: New test.
+ * gcc.target/arm/cortex-m55-nodsp-flag-softfp.c: New test.
+ * gcc.target/arm/cortex-m55-nodsp-nofp-flag-softfp.c: New test.
+ * gcc.target/arm/cortex-m55-nofp-flag-hard.c: New test.
+ * gcc.target/arm/cortex-m55-nofp-flag-softfp.c: New test.
+ * gcc.target/arm/cortex-m55-nofp-nomve-flag-softfp.c: New test.
+ * gcc.target/arm/cortex-m55-nomve-flag-hard.c: New test.
+ * gcc.target/arm/cortex-m55-nomve-flag-softfp.c: New test.
+ * gcc.target/arm/cortex-m55-nomve.fp-flag-hard.c: New test.
+ * gcc.target/arm/cortex-m55-nomve.fp-flag-softfp.c: New test.
+ * gcc.target/arm/multilib.exp: Add tests for -mcpu=cortex-m55.
+
+2020-10-05 Nathan Sidwell <nathan@acm.org>
+
+ * c-c++-common/spellcheck-reserved.c: Restore diagnostic.
+
+2020-10-04 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/97272
+ * gfortran.dg/pr97272.f90: New test.
+
+2020-10-03 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/tree-ssa/modref-3.c: New test.
+
+2020-10-02 Nathan Sidwell <nathan@acm.org>
+
+ * c-c++-common/spellcheck-reserved.c: Adjust diagnostic.
+ * g++.dg/spellcheck-typenames.C: Adjust diagnostic.
+
+2020-10-02 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/inherit/pr97268.C: New.
+
+2020-10-02 Martin Jambor <mjambor@suse.cz>
+
+ * gcc.dg/ipa/ipcp-loophint-1.c: New test.
+
+2020-10-02 Joe Ramsay <Joe.Ramsay@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c: Add test for mismatched
+ width of scalar argument.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmavq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmavq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmavq_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmavq_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmvq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmvq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmvq_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmvq_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_u8.c: Likewise.
+
+2020-10-02 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/arm/armv8_2-fp16-arith-2.c (float16_t): Use _Float16_t
+ rather than __fp16.
+ (float16x4_t, float16x4_t): Likewise.
+ (fp16_abs): Use __builtin_fabsf16.
+
+2020-10-02 Alex Coplan <alex.coplan@arm.com>
+
+ * gcc.target/aarch64/extend-syntax.c: Fix assembler checks for
+ ilp32, disable check-function-bodies on ilp32.
+ * gcc.target/aarch64/subsp.c: Only check second scan-assembler
+ on lp64 since the code on ilp32 is missing the optimization
+ needed for this test to pass.
+
+2020-10-02 Jason Merril <jason@redhat.com>
+
+ * g++.dg/pr94314.C: new/delete no longer omitted.
+
+2020-10-02 Richard Biener <rguenther@suse.de>
+
+ * g++.dg/tree-ssa/pta-delete-1.C: New testcase.
+
+2020-10-01 Richard Sandiford <richard.sandiford@arm.com>
+
+ * lib/target-supports.exp (check_effective_target_vect_cond_mixed): Add
+ arm neon targets.
+ * gcc.target/arm/neon-compare-1.c: New test.
+ * gcc.target/arm/neon-compare-2.c: Likewise.
+ * gcc.target/arm/neon-compare-3.c: Likewise.
+ * gcc.target/arm/neon-compare-4.c: Likewise.
+ * gcc.target/arm/neon-compare-5.c: Likewise.
+ * gcc.target/arm/neon-vcond-gt.c: Expect comparisons with zero.
+ * gcc.target/arm/neon-vcond-ltgt.c: Likewise.
+ * gcc.target/arm/neon-vcond-unordered.c: Likewise.
+
+2020-10-01 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/movtf_1.c: Restrict the asm matching to lp64.
+ * gcc.target/aarch64/movti_1.c: Likewise.
+
+2020-10-01 Andrea Corallo <andrea.corallo@arm.com>
+
+ PR target/96375
+ * gcc.target/arm/lob1.c: Fix missing flag.
+ * gcc.target/arm/lob2.c: Likewise.
+ * gcc.target/arm/lob3.c: Likewise.
+ * gcc.target/arm/lob4.c: Likewise.
+ * gcc.target/arm/lob5.c: Likewise.
+ * gcc.target/arm/lob6.c: Likewise.
+ * lib/target-supports.exp
+ (check_effective_target_arm_v8_1_lob_ok): Return 1 only for
+ cortex-m targets, add '-mthumb' flag.
+
+2020-10-01 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97236
+ * gcc.dg/vect/pr97236.c: New testcase.
+
+2020-10-01 Jan Hubicka <jh@suse.cz>
+
+ PR ipa/97243
+ * gcc.c-torture/compile/pr97243.c: New test.
+
+2020-10-01 Jan Hubicka <jh@suse.cz>
+
+ PR ipa/97244
+ * gcc.dg/ipa/remref-2a.c: Add -fno-ipa-modref
+
+2020-10-01 Tom de Vries <tdevries@suse.de>
+
+ * gcc.dg/pr94600-1.c: Force 32-bit alignment for a0 for !non_strict_align
+ targets. Remove target clauses from scan tests.
+ * gcc.dg/pr94600-3.c: Same.
+
+2020-10-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/96994
+ * g++.dg/cpp2a/consteval18.C: New test.
+
+2020-10-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/97195
+ * g++.dg/cpp2a/constexpr-new14.C: New test.
+
+2020-10-01 Richard Biener <rguenther@suse.de>
+
+ * g++.dg/vect/pr97255.cc: New testcase.
+
+2020-10-01 Florian Weimer <fweimer@redhat.com>
+
+ PR target/97250
+ * gcc.target/i386/x86-64-v2.c: New test.
+ * gcc.target/i386/x86-64-v3.c: New test.
+ * gcc.target/i386/x86-64-v3-haswell.c: New test.
+ * gcc.target/i386/x86-64-v3-skylake.c: New test.
+ * gcc.target/i386/x86-64-v4.c: New test.
+
+2020-10-01 Marek Polacek <polacek@redhat.com>
+
+ PR c++/90210
+ * g++.dg/cpp1z/class-deduction73.C: New test.
+
+2020-09-30 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/97189
+ * gcc.dg/attr-access-2.c: Adjust caret location.
+ * gcc.dg/Wvla-parameter-6.c: New test.
+ * gcc.dg/Wvla-parameter-7.c: New test.
+
+2020-09-30 Martin Sebor <msebor@redhat.com>
+
+ PR c/97206
+ * gcc.dg/Warray-parameter-7.c: New test.
+ * gcc.dg/Warray-parameter-8.c: New test.
+ * gcc.dg/Wvla-parameter-5.c: New test.
+
+2020-09-30 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/96827
+ * gcc.target/i386/pr96827.c: New test.
+
+2020-09-30 Christophe Lyon <christophe.lyon@linaro.org>
+
+ PR target/94595
+ * gcc.target/arm/thumb2-cond-cmp-1.c: Skip if arm_cortex_m.
+ * gcc.target/arm/thumb2-cond-cmp-2.c: Skip if arm_cortex_m.
+ * gcc.target/arm/thumb2-cond-cmp-3.c: Skip if arm_cortex_m.
+ * gcc.target/arm/thumb2-cond-cmp-4.c: Skip if arm_cortex_m.
+
+2020-09-30 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/pr37027.c: Amend.
+ * gcc.dg/vect/pr67790.c: Likewise.
+ * gcc.dg/vect/pr92324-4.c: Likewise.
+ * gcc.dg/vect/pr92558.c: Likewise.
+ * gcc.dg/vect/pr95495.c: Likewise.
+ * gcc.dg/vect/slp-reduc-1.c: Likewise.
+ * gcc.dg/vect/slp-reduc-2.c: Likewise.
+ * gcc.dg/vect/slp-reduc-3.c: Likewise.
+ * gcc.dg/vect/slp-reduc-4.c: Likewise.
+ * gcc.dg/vect/slp-reduc-5.c: Likewise.
+ * gcc.dg/vect/slp-reduc-7.c: Likewise.
+ * gcc.dg/vect/vect-reduc-in-order-4.c: Likewise.
+
+2020-09-30 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ PR target/96795
+ * gcc.target/arm/mve/intrinsics/mve_fp_vaddq_n.c: New Test.
+ * gcc.target/arm/mve/intrinsics/mve_vaddq_n.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmasq_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmasq_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmavq_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmavq_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmavq_p_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmavq_p_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmvq_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmvq_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmvq_p_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmvq_p_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsetq_lane_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsetq_lane_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_f32-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_f16-1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_f32-1.c: Likewise.
+
+2020-09-30 Joel Hutton <joel.hutton@arm.com>
+
+ PR target/96837
+ * gcc.dg/vect/bb-slp-49.c: New test.
+
+2020-09-30 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/97242
+ * gfortran.dg/contiguous_11.f90: New test.
+ * gfortran.dg/contiguous_4.f90: Update.
+ * gfortran.dg/contiguous_7.f90: Update.
+
+2020-09-30 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/97045
+ * gfortran.dg/select_type_50.f90 : New test.
+
+2020-09-30 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/97184
+ * gcc.target/i386/movdir64b.c: New test.
+ * gcc.target/i386/movdiri32.c: Likewise.
+ * gcc.target/i386/movdiri64.c: Likewise.
+ * lib/target-supports.exp (check_effective_target_movdir): New.
+
+2020-09-30 Tom de Vries <tdevries@suse.de>
+
+ * gcc.dg/pr94600-1.c: Use effective target
+ (non_strict_align || pcc_bitfield_type_matters).
+ * gcc.dg/pr94600-3.c: Same.
+
+2020-09-30 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.target/i386/amxint8-dpbssd-2.c: Require effective targets
+ amx_tile and amx_int8.
+ * gcc.target/i386/amxint8-dpbsud-2.c: Likewise.
+ * gcc.target/i386/amxint8-dpbusd-2.c: Likewise.
+ * gcc.target/i386/amxint8-dpbuud-2.c: Likewise.
+ * gcc.target/i386/amxbf16-dpbf16ps-2.c: Require effective targets
+ amx_tile and amx_bf16.
+ * gcc.target/i386/amxtile-2.c: Require effective target amx_tile.
+
+2020-09-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/97150
+ * gcc.target/aarch64/pr97150.c: New test.
+
+2020-09-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/96313
+ * gcc.target/aarch64/pr96313.c: New test.
+ * gcc.target/aarch64/scalar_intrinsics.c (test_vqmovunh_s16):
+ Adjust return type.
+ (test_vqmovuns_s32): Likewise.
+ (test_vqmovund_s64): Likewise.
+
+2020-09-30 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/movtf_1.c: New test.
+ * gcc.target/aarch64/movti_1.c: Likewise.
+
+2020-09-29 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/97188
+ * gcc.dg/Wstringop-overflow-23.c: Adjust text of expected warnings.
+ * gcc.dg/Wnonnull-4.c: New test.
+
+2020-09-29 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94695
+ * g++.dg/warn/Wrange-loop-construct.C: New test.
+
+2020-09-29 David Edelsohn <dje.gcc@gmail.com>
+
+ * g++.dg/debug/dwarf2/align-1.C: Remove AIX XFAIL.
+ * g++.dg/debug/dwarf2/align-2.C: Same.
+ * g++.dg/debug/dwarf2/align-3.C: Same.
+ * g++.dg/debug/dwarf2/align-4.C: Same.
+ * g++.dg/debug/dwarf2/align-5.C: Same.
+ * g++.dg/debug/dwarf2/align-6.C: Same.
+ * g++.dg/debug/dwarf2/defaulted-member-function-1.C: Same.
+ * g++.dg/debug/dwarf2/defaulted-member-function-2.C: Same.
+ * g++.dg/debug/dwarf2/defaulted-member-function-3.C: Same.
+ * g++.dg/debug/dwarf2/inline-var-1.C: Same.
+ * g++.dg/debug/dwarf2/inline-var-2.C: Same.
+ * g++.dg/debug/dwarf2/inline-var-3.C: Same.
+ * g++.dg/debug/dwarf2/noreturn-function.C: Same.
+ * g++.dg/debug/dwarf2/ptrdmem-1.C: Same.
+ * g++.dg/debug/dwarf2/ref-2.C: Same.
+ * g++.dg/debug/dwarf2/ref-3.C: Same.
+ * g++.dg/debug/dwarf2/ref-4.C: Same.
+ * g++.dg/debug/dwarf2/refqual-1.C: Same.
+ * g++.dg/debug/dwarf2/refqual-2.C: Same.
+ * gcc.dg/debug/dwarf2/align-1.c: Same.
+ * gcc.dg/debug/dwarf2/align-2.c: Same.
+ * gcc.dg/debug/dwarf2/align-3.c: Same.
+ * gcc.dg/debug/dwarf2/align-4.c: Same.
+ * gcc.dg/debug/dwarf2/align-5.c: Same.
+ * gcc.dg/debug/dwarf2/align-6.c: Same.
+ * gcc.dg/debug/dwarf2/align-as-1.c: Same.
+ * gcc.dg/debug/dwarf2/dwarf2-macro.c: Same.
+ * gcc.dg/debug/dwarf2/dwarf2-macro2.c: Same.
+ * gcc.dg/debug/dwarf2/lang-c89.c: Same.
+ * gcc.dg/debug/dwarf2/noreturn-function-attribute.c: Same.
+ * gcc.dg/debug/dwarf2/noreturn-function-keyword.c: Same.
+ * gcc.dg/debug/dwarf2/pr71855.c: Same.
+ * gcc.dg/debug/dwarf2/inline5.c: Add XFAIL on AIX.
+
+2020-09-29 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/95188
+ * gcc.dg/analyzer/signal-registration-loc.c: New test.
+
+2020-09-29 David Edelsohn <dje.gcc@gmail.com>
+
+ * g++.dg/spellcheck-inttypes.C: Define _STD_TYPES_T on AIX.
+ * gcc.dg/spellcheck-inttypes.c: Same.
+
+2020-09-29 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97241
+ * gcc.dg/vect/pr97241.c: New testcase.
+
+2020-09-29 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97238
+ * gcc.dg/pr97238.c: New testcase.
+
+2020-09-29 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/arm/armv8_2-fp16-arith-2.c: Expect FP16 vectorization
+ even without -ffast-math.
+
+2020-09-29 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.target/riscv/predef-3.c: Update testcase.
+ * gcc.target/riscv/predef-6.c: Ditto.
+
+2020-09-29 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/96979
+ * g++.dg/tree-ssa/pr96979.C: New test.
+
+2020-09-29 Martin Liska <mliska@suse.cz>
+
+ Revert:
+ 2020-09-29 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/96979
+ * g++.dg/tree-ssa/pr96979.C: New test.
+
+2020-09-29 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.dg/ipa/symver1.c: Skip on AIX.
+
+2020-09-28 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/97233
+ * gcc.dg/analyzer/pr97233.c: New test.
+
+2020-09-28 Paul A. Clarke <pc@us.ibm.com>
+
+ * gcc.target/powerpc/sse4_1-pinsrb.c: New test.
+ * gcc.target/powerpc/sse4_1-pinsrd.c: New test.
+ * gcc.target/powerpc/sse4_1-pinsrq.c: New test.
+
+2020-09-28 liuhongt <hongtao.liu@intel.com>
+
+ * lib/target-supports.exp (check_effective_target_amx_tile,
+ check_effective_target_amx_int8,
+ check_effective_target_amx_bf16): New proc.
+ * g++.dg/other/i386-2.C: Add -mamx-tile, -mamx-int8, -mamx-bf16.
+ * g++.dg/other/i386-3.C: Ditto.
+ * gcc.target/i386/sse-12.c: Ditto.
+ * gcc.target/i386/sse-13.c: Ditto.
+ * gcc.target/i386/sse-14.c: Ditto.
+ * gcc.target/i386/sse-22.c: Ditto.
+ * gcc.target/i386/sse-23.c: Ditto.
+ * gcc.target/i386/funcspec-56.inc: Add new target attribute.
+ * gcc.target/i386/amx-check.h: New header file.
+ * gcc.target/i386/amxbf16-asmatt-1.c: New test.
+ * gcc.target/i386/amxint8-asmatt-1.c: New test.
+ * gcc.target/i386/amxtile-asmatt-1.c: Ditto.
+ * gcc.target/i386/amxbf16-asmintel-1.c: Ditto.
+ * gcc.target/i386/amxint8-asmintel-1.c: Ditto.
+ * gcc.target/i386/amxtile-asmintel-1.c: Ditto.
+ * gcc.target/i386/amxbf16-dpbf16ps-2.c: Ditto.
+ * gcc.target/i386/amxint8-dpbssd-2.c: Ditto.
+ * gcc.target/i386/amxint8-dpbsud-2.c: Ditto.
+ * gcc.target/i386/amxint8-dpbusd-2.c: Ditto.
+ * gcc.target/i386/amxint8-dpbuud-2.c: Ditto.
+ * gcc.target/i386/amxtile-2.c: Ditto.
+
+2020-09-28 Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ Revert:
+ 2020-09-28 Steven G. Kargl <kargl@gcc.gnu.org>
+ Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/95614
+ * gfortran.dg/pr95614_1.f90: New test.
+ * gfortran.dg/pr95614_2.f90: New test.
+
+2020-09-28 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/addr16.adb: New test.
+ * gnat.dg/addr16_pkg.ads: New helper.
+
+2020-09-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/97073
+ * gcc.c-torture/execute/pr97073.c: New test.
+
+2020-09-27 Steven G. Kargl <kargl@gcc.gnu.org>
+ Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/95614
+ * gfortran.dg/pr95614_1.f90: New test.
+ * gfortran.dg/pr95614_2.f90: New test.
+
+2020-09-26 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/96495
+ * gfortran.dg/alloc_comp_result_2.f90 : Restore original.
+ * gfortran.dg/alloc_comp_result_3.f90 : New test.
+
+2020-09-26 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/lto/modref-1_0.c: New test.
+ * gcc.dg/lto/modref-1_1.c: New test.
+ * gcc.dg/tree-ssa/modref-2.c: New test.
+
+2020-09-26 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/vect/vect-simd-17.c: Expect 11 or more vectorized loops.
+ * gcc.dg/vect/vect-simd-18.c: New test.
+ * gcc.dg/vect/vect-simd-19.c: New test.
+ * gcc.dg/vect/vect-simd-20.c: New test.
+
+2020-09-26 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/ipa/ipa-pta-13.c: Disable modref.
+
+2020-09-26 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/94355
+ * g++.dg/analyzer/placement-new.C: New test.
+
+2020-09-26 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96646
+ PR analyzer/96841
+ * gcc.dg/analyzer/pr96646.c: New test.
+ * gcc.dg/analyzer/pr96841.c: New test.
+
+2020-09-25 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/96814
+ * gcc.target/i386/pr96814.c: New testcase.
+
+2020-09-25 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/mve-vldstr16-no-writeback.c: Allow
+ the store to use GPRs instead of FPRs. Add scan-assembler-nots
+ for writeback.
+ * gcc.target/arm/armv8_1m-fp16-move-1.c: New test.
+ * gcc.target/arm/armv8_1m-fp32-move-1.c: Likewise.
+ * gcc.target/arm/armv8_1m-fp64-move-1.c: Likewise.
+
+2020-09-25 Christophe Lyon <christophe.lyon@linaro.org>
+
+ PR target/71233
+ * gcc.target/aarch64/advsimd-intrinsics/vtrn_half.c: Remove
+ declarations of vector, vector2, vector_res for float64x2 type.
+ * gcc.target/aarch64/advsimd-intrinsics/vuzp_half.c: Likewise.
+ * gcc.target/aarch64/advsimd-intrinsics/vzip_half.c: Likewise.
+
+2020-09-25 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/97204
+ * gcc.target/i386/sse2-mmx-pinsrw.c: Fix.
+
+2020-09-25 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/vect/vect-simd-17.c: New test.
+
+2020-09-25 Tom de Vries <tdevries@suse.de>
+
+ * gcc.dg/analyzer/pr93355-localealias.c: Require effective target
+ alloca.
+
+2020-09-25 Tom de Vries <tdevries@suse.de>
+
+ * lib/target-supports.exp (check_effective_target_ident_directive): New proc.
+ * c-c++-common/ident-1b.c: Require effective target ident_directive.
+ * c-c++-common/ident-2b.c: Same.
+
+2020-09-24 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/template/local-var1.C: New.
+
+2020-09-24 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/template/local-fn4.C: Add target c++11
+
+2020-09-24 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/97186
+ * g++.dg/template/local10.C: Rename ...
+ * g++.dg/template/local-fn3.C: .. here. Require lto.
+ * g++.dg/template/local-fn4.C: New.
+
+2020-09-24 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/tree-ssa/modref-1.c: New test.
+
+2020-09-24 Tom de Vries <tdevries@suse.de>
+
+ * gcc.dg/tls/thr-cse-1.c: Scan final dump instead of assembly for
+ nvptx.
+
+2020-09-24 Tom de Vries <tdevries@suse.de>
+
+ * gcc.dg/independent-cloneids-1.c: Use scan-rtl-dump instead of
+ scan-assembler.
+
+2020-09-24 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97085
+ * gcc.dg/pr97192.c: New testcase.
+
+2020-09-24 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/96495
+ * gfortran.dg/alloc_comp_result_2.f90 : New test.
+
+2020-09-24 Tom de Vries <tdevries@suse.de>
+
+ * gcc.dg/pr87314-1.c: Add nvptx-specific scan-assembler directive.
+
+2020-09-24 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/arm/stack-protector-5.c: New test.
+ * gcc.target/arm/stack-protector-6.c: Likewise.
+
+2020-09-24 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/arm/stack-protector-3.c: New test.
+ * gcc.target/arm/stack-protector-4.c: Likewise.
+
+2020-09-24 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97085
+ * gcc.dg/vect/pr97085.c: New testcase.
+
+2020-09-24 Tom de Vries <tdevries@suse.de>
+
+ * gcc.dg/pr94600-1.c: Require effective target non_strict_align for
+ scan-rtl-dump-times.
+ * gcc.dg/pr94600-3.c: Same.
+
+2020-09-24 Tom de Vries <tdevries@suse.de>
+
+ * c-c++-common/builtin-has-attribute-3.c: Compile with -DSKIP_ALIAS
+ for effective target ! alias.
+
+2020-09-24 Kewen Lin <linkw@linux.ibm.com>
+
+ PR tree-optimization/97075
+ * gcc.target/powerpc/p9-vec-length-full-6.c: Adjust.
+
+2020-09-24 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93355
+ * gcc.dg/analyzer/pr93355-localealias-feasibility.c: New test.
+ * gcc.dg/analyzer/pr93355-localealias-simplified.c: New test.
+ * gcc.dg/analyzer/pr93355-localealias.c: New test.
+
+2020-09-24 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/feasibility-2.c: New test.
+
+2020-09-23 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/97175
+ * gcc.dg/Wstringop-overflow-44.c: New test.
+
+2020-09-23 Jan Hubicka <jh@suse.cz>
+
+ * gcc.dg/tree-ssa/local-pure-const.c: Update template.
+
+2020-09-23 Martin Sebor <msebor@redhat.com>
+
+ PR c/97131
+ * gcc.dg/Warray-parameter-6.c: New test.
+
+2020-09-23 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/stack-protector-5.c: New test.
+ * gcc.target/aarch64/stack-protector-6.c: Likewise.
+ * gcc.target/aarch64/stack-protector-7.c: Likewise.
+
+2020-09-23 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/stack-protector-3.c: New test.
+ * gcc.target/aarch64/stack-protector-4.c: Likewise.
+
+2020-09-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/71233
+ * gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
+ (clean_results): Add float64x2_t cleanup.
+ (DECL_VARIABLE_128BITS_VARIANTS): Add float64x2_t variable.
+ * gcc.target/aarch64/advsimd-intrinsics/vreinterpret_p128.c: Add
+ testing of vreinterpretq_f64_p128, vreinterpretq_p128_f64.
+
+2020-09-23 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/97171
+ * g++.dg/template/local10.C: New.
+
+2020-09-23 Marek Polacek <polacek@redhat.com>
+
+ PR c/97125
+ * c-c++-common/Wduplicated-branches-15.c: New test.
+
+2020-09-23 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/96453
+ * gcc.dg/pr96453.c: New testcase.
+
+2020-09-23 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/96466
+ * gcc.dg/pr96466.c: New testcase.
+
+2020-09-23 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/powerpc/p9-vec-length-epil-1.c: Do not expect the
+ single-iteration epilogues of the 64-bit loops to be vectorized.
+ * gcc.target/powerpc/p9-vec-length-epil-7.c: Likewise.
+ * gcc.target/powerpc/p9-vec-length-epil-8.c: Likewise.
+
+2020-09-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/71233
+ * gcc.target/aarch64/simd/vrndns_f32_1.c: New test.
+
+2020-09-23 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97173
+ * gcc.dg/vect/pr97173.c: New testcase.
+
+2020-09-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/71233
+ * gcc.target/aarch64/simd/trn_zip_p64_1.c: New test.
+
+2020-09-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/71233
+ * gcc.target/aarch64/simd/vldrq_p128_1.c: New test.
+
+2020-09-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/71233
+ * gcc.target/aarch64/simd/vstrq_p128_1.c: New test.
+
+2020-09-23 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97151
+ * g++.dg/cpp1y/new1.C: Adjust for two more handled transforms.
+
+2020-09-23 Martin Liska <mliska@suse.cz>
+
+ PR gcov-profile/97069
+ * g++.dg/gcov/pr97069.C: New test.
+
+2020-09-23 Tom de Vries <tdevries@suse.de>
+
+ * gcc.dg/Warray-bounds-63.c: Add require-effective-target alloca.
+ * gcc.dg/Warray-bounds-66.c: Same.
+ * gcc.dg/atomic/stdatomic-vm.c: Same.
+
+2020-09-22 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/95310
+ * g++.dg/concepts/diagnostic15.C: New test.
+
+2020-09-22 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/96652
+ * g++.dg/cpp0x/decltype-96652.C: New test.
+
+2020-09-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/97145
+ * g++.dg/asan/pr97145.C: New test.
+
+2020-09-22 David Faust <david.faust@oracle.com>
+
+ * gcc.target/bpf/diag-sdiv.c: New test.
+ * gcc.target/bpf/diag-smod.c: New test.
+ * gcc.target/bpf/xbpf-sdiv-1.c: New test.
+ * gcc.target/bpf/xbpf-smod-1.c: New test.
+
+2020-09-22 Nathan Sidwell <nathan@acm.org>
+
+ * g++.old-deja/g++.pt/friend34.C: Check injected friend is still
+ invisible.
+
+2020-09-22 Marek Polacek <polacek@redhat.com>
+
+ * g++.dg/ext/timevar1.C: Also prune N%.
+
+2020-09-22 Marek Polacek <polacek@redhat.com>
+
+ * g++.dg/ext/timevar2.C: Also prune N%.
+
+2020-09-22 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/96979
+ * g++.dg/tree-ssa/pr96979.C: New test.
+
+2020-09-22 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
+
+ * gcc.target/s390/load-and-test-fp-1.c: Change test to include all
+ possible combinations of dead/live registers and comparisons (equality,
+ relational).
+ * gcc.target/s390/load-and-test-fp-2.c: Same as load-and-test-fp-1.c
+ but for fast math.
+ * gcc.target/s390/load-and-test-fp.h: New test included by
+ load-and-test-fp-{1,2}.c.
+
+2020-09-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/71233
+ * gcc.target/aarch64/simd/vcls_unsigned_1.c: New test.
+
+2020-09-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/71233
+ * gcc.target/aarch64/simd/vceq_poly_1.c: New test.
+
+2020-09-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/71233
+ * gcc.target/aarch64/simd/vadd_poly_1.c: New test.
+
+2020-09-22 Jan Hubicka <jh@suse.cz>
+
+ * gcc.target/i386/m128-check.h: Add no-strict-aliasing
+
+2020-09-21 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/97130
+ * gcc.dg/analyzer/pr97130.c: New test.
+
+2020-09-21 Marek Polacek <polacek@redhat.com>
+
+ PR c++/90583
+ DR 1722
+ * g++.dg/cpp0x/lambda/lambda-conv14.C: New test.
+
+2020-09-21 Marek Polacek <polacek@redhat.com>
+
+ * g++.dg/warn/Wctad-maybe-unsupported.C: New test.
+ * g++.dg/warn/Wctad-maybe-unsupported2.C: New test.
+ * g++.dg/warn/Wctad-maybe-unsupported3.C: New test.
+ * g++.dg/warn/Wctad-maybe-unsupported.h: New file.
+
+2020-09-21 Martin Sebor <msebor@redhat.com>
+
+ PR c/50584
+ * gcc.dg/ipa/ipa-sra-1.c: Use a plain pointer for argv instead of array.
+ * gcc.dg/ipa/ipa-sra-12.c: Same.
+ * gcc.dg/ipa/ipa-sra-13.c: Same.
+ * gcc.dg/ipa/ipa-sra-14.c: Same.
+ * gcc.dg/ipa/ipa-sra-15.c: Same.
+
+2020-09-21 Harald Anlauf <anlauf@gmx.de>
+ Paul Thomas <pault@gcc.gnu.org>
+
+ * gfortran.dg/check_bits_2.f90: New test.
+
+2020-09-21 Iain Sandoe <iain@sandoe.co.uk>
+
+ * gcc.dg/ipa/symver1.c: Skip for Darwin.
+
+2020-09-21 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/csinc-1.c: Use dg-add-options
+ arm_arch_v8_1m_main.
+ * gcc.target/arm/csinv-1.c: Likewise.
+ * gcc.target/arm/csneg.c: Likewise.
+
+2020-09-21 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97139
+ * gcc.dg/vect/pr97139.c: New testcase.
+
+2020-09-21 Marek Polacek <polacek@redhat.com>
+
+ PR c++/97099
+ * g++.dg/cpp1z/class-deduction74.C: New test.
+
+2020-09-21 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97135
+ * gcc.dg/torture/pr97135.c: New testcase.
+
+2020-09-21 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/96915
+ * gcc.target/aarch64/sve/pr96915.c: New test.
+
+2020-09-21 Andrea Corallo <andrea.corallo@arm.com>
+
+ PR target/96968
+ * gcc.target/aarch64/pr96968.c: New test.
+
+2020-09-21 Martin Liska <mliska@suse.cz>
+
+ * g++.dg/ext/timevar1.C: Prune more possible number values.
+ * g++.dg/ext/timevar2.C: Likewise.
+
+2020-09-20 Marek Polacek <polacek@redhat.com>
+
+ PR c++/90199
+ * g++.dg/cpp1y/constexpr-90199.C: New test.
+
+2020-09-19 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/82608
+ PR middle-end/94195
+ PR c/50584
+ PR middle-end/84051
+ * c-c++-common/Warray-bounds.c: Adjust.
+ * gcc.dg/Wbuiltin-declaration-mismatch-9.c: Adjust.
+ * gcc.dg/Warray-bounds-63.c: New test.
+ * gcc.dg/Warray-bounds-64.c: New test.
+ * gcc.dg/Warray-bounds-65.c: New test.
+ * gcc.dg/Warray-bounds-66.c: New test.
+ * gcc.dg/Warray-bounds-67.c: New test.
+
+2020-09-19 Martin Sebor <msebor@redhat.com>
+
+ PR c/50584
+ * c-c++-common/Wsizeof-pointer-memaccess1.c: Disable new expected
+ warnings.
+ * g++.dg/ext/attr-access.C: Update text of expected warnings.
+ * gcc.dg/Wstringop-overflow-23.c: Same.
+ * gcc.dg/Wstringop-overflow-24.c: Same.
+ * gcc.dg/attr-access-none.c: Same.
+ * gcc.dg/dfp/composite-type.c: Prune expected warnings.
+ * gcc.dg/torture/pr57147-1.c: Add a member to an otherwise empty
+ struct to avoid a warning.
+ * gcc.dg/torture/pr57147-3.c: Same.
+ * gcc.dg/Warray-bounds-30.c: Adjust.
+ * gcc.dg/attr-access-none.c: Same.
+ * gcc.dg/Wstringop-overflow-40.c: New test.
+ * gcc.dg/attr-access-2.c: New test.
+
+2020-09-19 Martin Sebor <msebor@redhat.com>
+
+ * gcc.dg/uninit-37.c: New test.
+
+2020-09-19 Martin Sebor <msebor@redhat.com>
+
+ PR c/50584
+ * gcc.dg/attr-access-read-write-2.c: Adjust text of expected message.
+ * c-c++-common/Warray-bounds-6.c: Correct C++ declaration, adjust
+ text of expected diagnostics.
+ * gcc.dg/Wbuiltin-declaration-mismatch-9.c: Prune expected warning.
+ * gcc.dg/Warray-parameter-2.c: New test.
+ * gcc.dg/Warray-parameter-3.c: New test.
+ * gcc.dg/Warray-parameter-4.c: New test.
+ * gcc.dg/Warray-parameter-5.c: New test.
+ * gcc.dg/Warray-parameter.c: New test.
+ * gcc.dg/Wvla-parameter-2.c: New test.
+ * gcc.dg/Wvla-parameter-3.c: New test.
+ * gcc.dg/Wvla-parameter.c: New test.
+ * gcc.dg/Wvla-parameter-4.c: New file.
+
+2020-09-19 Sandra Loosemore <sandra@codesourcery.com>
+
+ * gcc.dg/gomp/block-7.c: Update expected error message wording.
+
+2020-09-19 Harald Anlauf <anlauf@gmx.de>
+
+ * gfortran.dg/pr97036.f90: New test.
+
+2020-09-19 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/96861
+ * gcc.target/i386/pr96861.c: New test.
+
+2020-09-19 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/96531
+ PR c++/97103
+ * g++.dg/cpp2a/concepts-ttp2.C: New test.
+ * g++.dg/cpp2a/concepts-variadic1.C: New test.
+
+2020-09-19 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/97051
+ * g++.dg/cpp2a/is-constant-evaluated11.C: New test.
+
+2020-09-19 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/pr95021-3.c: Add -mtune=generic.
+
+2020-09-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/97105
+ * g++.dg/template/pr97105.C: New test.
+
+2020-09-18 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/strdup-1.c: New test.
+ * gcc.dg/analyzer/strndup-1.c: New test.
+
+2020-09-18 Sudi Das <sudi.das@arm.com>
+ Omar Tahir <omar.tahir@arm.com>
+
+ * gcc.target/arm/csneg.c: New test.
+
+2020-09-18 Sudi Das <sudi.das@arm.com>
+ Omar Tahir <omar.tahir@arm.com>
+
+ * gcc.target/arm/csinc-1.c: New test.
+
+2020-09-18 Sudi Das <sudi.das@arm.com>
+ Omar Tahir <omar.tahir@arm.com>
+
+ * gcc.target/arm/csinv-1.c: New test.
+
+2020-09-18 H.J. Lu <hjl.tools@gmail.com>
+ Richard Sandiford <richard.sandiford@arm.com>
+
+ PR middle-end/91957
+ * g++.target/i386/pr97054.C: New test.
+ * gcc.target/i386/pr82673.c: Remove redundant extra message.
+
+2020-09-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/97081
+ * gcc.dg/vect/pr97081-2.c: New test.
+
+2020-09-18 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97081
+ * gcc.dg/vect/pr97081.c: New testcase.
+
+2020-09-18 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * gcc.target/msp430/operand-modifiers.c: Extend test to handle new
+ modifiers.
+ * gcc.target/msp430/operand-modifiers-bad.c: New test.
+
+2020-09-18 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/97095
+ * gfortran.dg/pr97095.f: New testcase.
+
+2020-09-17 Tom de Vries <tdevries@suse.de>
+
+ * lib/target-supports.exp (check_effective_target_non_strict_prototype):
+ New proc.
+ * gcc.c-torture/compile/pr71109.c: Require effective target
+ non_strict_prototype.
+ * gcc.c-torture/compile/pr83051-2.c: Same.
+ * gcc.c-torture/compile/pr89663-1.c: Same.
+ * gcc.c-torture/compile/pr89663-2.c: Same.
+ * gcc.c-torture/compile/pr96796.c: Same.
+
+2020-09-17 Yeting Kuo <fakepaper56@gmail.com>
+
+ * gcc.target/riscv/shorten-memrefs-8.c: New test.
+
+2020-09-17 Marek Polacek <polacek@redhat.com>
+
+ PR c++/87530
+ PR c++/58156
+ PR c++/68828
+ PR c++/86002
+ PR c++/91525
+ PR c++/96223
+ PR c++/87032
+ PR c++/35098
+ * g++.dg/cpp0x/move-return4.C: New test.
+ * g++.dg/cpp0x/vt-58156.C: New test.
+ * g++.dg/cpp2a/concepts-pr68828.C: New test.
+ * g++.dg/cpp2a/concepts-pr86002.C: New test.
+ * g++.dg/cpp2a/concepts-pr91525.C: New test.
+ * g++.dg/cpp2a/constexpr-indeterminate1.C: New test.
+ * g++.dg/cpp2a/desig17.C: New test.
+ * g++.dg/ext/attrib62.C: New test.
+
+2020-09-17 Patrick Palka <ppalka@redhat.com>
+
+ PR c/80076
+ * c-c++-common/Wmisleading-indentation-5.c: New test.
+
+2020-09-17 Mark Wielaard <mark@klomp.org>
+
+ * gcc.dg/debug/dwarf2/inline2.c: Add -gdwarf-2.
+ * g++.dg/debug/dwarf2/inline-var-1.C: Likewise.
+ * gcc.dg/debug/dwarf2/pr41445-5.c: Likewise.
+ * gcc.dg/debug/dwarf2/pr41445-6.c: Likewise.
+ * gcc.dg/debug/dwarf2/inline6.c: New variant with -gdwarf-5.
+ * g++.dg/debug/dwarf2/inline-var-3.C: Likewise.
+ * gcc.dg/debug/dwarf2/pr41445-7.c: Likewise.
+ * gcc.dg/debug/dwarf2/pr41445-8.c: Likewise.
+
+2020-09-17 Andre Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/aarch64/sve/clastb_8.c: Fix a dg-final scan
+ directive.
+
+2020-09-17 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/96409
+ PR c++/96410
+ * g++.dg/cpp2a/concepts-lambda13.C: New test.
+ * g++.dg/cpp2a/concepts-lambda14.C: New test.
+
+2020-09-17 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/tree-ssa/ssa-fre-88.c: New testcase.
+
+2020-09-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/pr97078.c: New test.
+
+2020-09-17 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/xsave-avx-1.c: New test.
+
+2020-09-16 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96653
+ * gcc.dg/analyzer/loop-0-up-to-n-by-1-with-iter-obj.c: Update
+ expected number of exploded nodes.
+ * gcc.dg/analyzer/malloc-vs-local-1a.c: Update expected number
+ of exploded nodes.
+ * gcc.dg/analyzer/pr96653.c: Remove -Wno-analyzer-too-complex.
+
+2020-09-16 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/bzip2-arg-parse-1.c: New test.
+ * gcc.dg/analyzer/loop-n-down-to-1-by-1.c: Remove xfail.
+ * gcc.dg/analyzer/pr94851-1.c: Add xfail.
+
+2020-09-16 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/getchar-1.c: New test.
+
+2020-09-16 Martin Sebor <msebor@redhat.com>
+
+ PR c/78666
+ PR c/96126
+ * gcc.dg/attr-alloc_align-5.c: New test.
+ * gcc.dg/attr-alloc_size-13.c: New test.
+ * gcc.dg/attr-section.c: New test.
+ * c-c++-common/builtin-has-attribute-3.c: Add xfails due to expected
+ warnings to be cleaned up.
+
+2020-09-16 Marek Polacek <polacek@redhat.com>
+
+ PR preprocessor/96935
+ * gcc.dg/format/pr96935.c: New test.
+
+2020-09-16 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/96295
+ * g++.dg/warn/Wuninitialized-11.C: New test.
+
+2020-09-16 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/gomp/udr-2.C: Add additional expected error.
+
+2020-09-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/concat4.adb: New test.
+
+2020-09-16 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/97061
+ * gfortran.dg/gomp/openmp-simd-6.f90: New test.
+
+2020-09-16 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/aarch64/sve/cost_model_10.c: New test.
+ * gcc.target/aarch64/sve/clastb_8.c: Update test for new
+ vectorization strategy.
+ * gcc.target/aarch64/sve/cost_model_5.c: Likewise.
+ * gcc.target/aarch64/sve/struct_vect_14.c: Likewise.
+ * gcc.target/aarch64/sve/struct_vect_15.c: Likewise.
+ * gcc.target/aarch64/sve/struct_vect_16.c: Likewise.
+ * gcc.target/aarch64/sve/struct_vect_17.c: Likewise.
+
+2020-09-16 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/97032
+ * gcc.target/i386/pr97032.c: New test.
+
+2020-09-16 Feng Xue <fxue@os.amperecomputing.com>
+
+ PR testsuite/97066
+ * gcc.dg/ifcvt-3.c: Modified to suppress simplification.
+ * gcc.dg/tree-ssa/20030807-10.c: Likewise.
+
+2020-09-16 Jojo R <jiejie_rong@c-sky.com>
+
+ * lib/target-supports.exp (check_profiling_available): Refine name of elf target.
+
+2020-09-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/97053
+ * gcc.dg/store_merging_31.c: New test.
+ * gcc.dg/store_merging_32.c: New test.
+
+2020-09-16 Kewen Lin <linkw@linux.ibm.com>
+
+ PR target/97019
+ * gcc.target/powerpc/pr97019.c: New test.
+
+2020-09-16 Jojo R <jiejie_rong@c-sky.com>
+
+ * gcc.dg/builtin-apply2.c : Skip if CSKY.
+ * gcc.dg/torture/stackalign/builtin-apply-2.c : Likewise.
+
+2020-09-15 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96650
+ * gcc.dg/analyzer/pr96650-1-notrans.c: New test.
+ * gcc.dg/analyzer/pr96650-1-trans.c: New test.
+ * gcc.dg/analyzer/pr96650-2-notrans.c: New test.
+ * gcc.dg/analyzer/pr96650-2-trans.c: New test.
+
+2020-09-15 Feng Xue <fxue@os.amperecomputing.com>
+
+ PR tree-optimization/94234
+ * gcc.dg/pr94234-3.c: New test.
+
+2020-09-15 H.J. Lu <hjl.tools@gmail.com>
+
+ * gcc.target/i386/pr78904-4a.c: Compile with -mtune=generic.
+
+2020-09-15 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-48.c: New testcase.
+ * gcc.dg/vect/bb-slp-7.c: Adjust.
+
+2020-09-15 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ * gcc.target/arm/pr95646.c: Fix testism.
+
+2020-09-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/97028
+ * gcc.target/i386/avx512f-pr97028.c: Untested fix.
+
+2020-09-15 Feng Xue <fxue@os.amperecomputing.com>
+
+ PR tree-optimization/94234
+ * gcc.dg/pr94234-2.c: New test.
+
+2020-09-14 Jose E. Marchesi <jose.marchesi@oracle.com>
+
+ * gcc.target/bpf/nop-1.c: New test.
+
+2020-09-14 Iain Sandoe <iain@sandoe.co.uk>
+
+ * gcc.target/i386/avx512f-broadcast-pr87767-1.c: Make the test
+ run as non-dynamic for m32 Darwin.
+ * gcc.target/i386/avx512f-broadcast-pr87767-3.c: Likewise.
+ * gcc.target/i386/avx512f-broadcast-pr87767-5.c: Likewise.
+ * gcc.target/i386/avx512f-broadcast-pr87767-7.c: Likewise.
+ * gcc.target/i386/avx512vl-broadcast-pr87767-1.c: Likewise.
+ * gcc.target/i386/avx512vl-broadcast-pr87767-3.c: Likewise.
+ * gcc.target/i386/avx512vl-broadcast-pr87767-5.c: Likewise.
+ * gcc.target/i386/avx512f-broadcast-pr87767-6.c: Adjust dg-requires
+ clause.
+
+2020-09-14 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96653
+ * gcc.dg/analyzer/pr96653.c: New test.
+
+2020-09-14 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/rhbz1878600.c: New test.
+
+2020-09-14 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/pr97029.c: New test.
+
+2020-09-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/thunk1.adb: New test.
+ * gnat.dg/thunk1_pkg1.ads: New helper.
+ * gnat.dg/thunk1_pkg2.ads: Likewise.
+ * gnat.dg/thunk1_pkg2.adb: Likewise.
+
+2020-09-12 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/97002
+ * gdc.dg/pr97002.d: New test.
+
+2020-09-11 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/concepts/local-extern.C: New file.
+
+2020-09-11 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ * gcc.target/powerpc/pr96139-a.c: Specify -mvsx option and update the
+ dg-require stanza to match.
+ * gcc.target/powerpc/pr96139-b.c: Same.
+ * gcc.target/powerpc/pr96139-c.c: Specify -maltivec option and update
+ the dg-require stanza to match.
+
+2020-09-11 Sunil K Pandey <skpgkp2@gmail.com>
+
+ PR target/97018
+ * gcc.target/i386/l_fma_double_1.c: Add option -mno-avx512f.
+ * gcc.target/i386/l_fma_double_2.c: Likewise.
+ * gcc.target/i386/l_fma_double_3.c: Likewise.
+ * gcc.target/i386/l_fma_double_4.c: Likewise.
+ * gcc.target/i386/l_fma_double_5.c: Likewise.
+ * gcc.target/i386/l_fma_double_6.c: Likewise.
+ * gcc.target/i386/l_fma_float_1.c: Likewise.
+ * gcc.target/i386/l_fma_float_2.c: Likewise.
+ * gcc.target/i386/l_fma_float_3.c: Likewise.
+ * gcc.target/i386/l_fma_float_4.c: Likewise.
+ * gcc.target/i386/l_fma_float_5.c: Likewise.
+ * gcc.target/i386/l_fma_float_6.c: Likewise.
+
+2020-09-11 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/96903
+ * gcc.dg/Wstringop-overflow-42.c:: Add comment.
+ * gcc.dg/Wstringop-overflow-43.c: New test.
+
+2020-09-11 Nathan Sidwell <nathan@acm.org>
+
+ * obj-c++.dg/syntax-error-9.mm: Adjust expected errors.
+
+2020-09-11 Andrew Stubbs <ams@codesourcery.com>
+
+ * gcc.dg/gimplefe-44.c: Require exceptions.
+
+2020-09-11 Andrea Corallo <andrea.corallo@arm.com>
+
+ * jit.dg/all-non-failing-tests.h: Add test-blob.c.
+ * jit.dg/test-global-set-initializer.c: New testcase.
+
+2020-09-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/pack27.adb: New test.
+ * gnat.dg/pack27_pkg.ads: New helper.
+
+2020-09-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/specs/discr7.ads: New test.
+
+2020-09-11 Tom de Vries <tdevries@suse.de>
+
+ * gcc.target/nvptx/int128.c: New test.
+
+2020-09-11 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96798
+ * gcc.dg/analyzer/memcpy-1.c: New test.
+ * gcc.dg/analyzer/strcpy-1.c: New test.
+
+2020-09-10 Alex Coplan <alex.coplan@arm.com>
+
+ * gcc.target/aarch64/acle/armv8-r.c: New test.
+
+2020-09-10 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * gdc.dg/Waddress.d: New test.
+ * gdc.dg/Wcastresult1.d: New test.
+ * gdc.dg/Wcastresult2.d: New test.
+
+2020-09-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/specs/size_clause5.ads: New test.
+
+2020-09-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/discr59.adb: New test.
+ * gnat.dg/discr59_pkg1.ads: New helper.
+ * gnat.dg/discr59_pkg2.ads: Likewise.
+
+2020-09-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/96939
+ * gcc.target/arm/lto/pr96939_0.c: New test.
+ * gcc.target/arm/lto/pr96939_1.c: New file.
+
+2020-09-10 Tom de Vries <tdevries@suse.de>
+
+ * gcc.dg/analyzer/vla-1.c: Add require-effective-target alloca.
+
+2020-09-10 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96043
+ * gcc.dg/vect/costmodel/x86_64/costmodel-pr69297.c: Adjust.
+
+2020-09-09 Marek Polacek <polacek@redhat.com>
+
+ PR c++/77841
+ * g++.old-deja/g++.ext/arrnew2.C: Expect the error only in C++17
+ and less.
+ * g++.old-deja/g++.robertl/eb58.C: Adjust dg-error.
+ * g++.old-deja/g++.robertl/eb63.C: Expect the error only in C++17
+ and less.
+ * g++.dg/cpp2a/new-array5.C: New test.
+ * g++.dg/cpp2a/paren-init36.C: New test.
+ * g++.dg/cpp2a/paren-init37.C: New test.
+ * g++.dg/pr84729.C: Adjust dg-error.
+
+2020-09-09 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95164
+ * g++.dg/cpp0x/initlist123.C: New test.
+
+2020-09-09 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/94355
+ * g++.dg/analyzer/new-1.C: New test.
+ * g++.dg/analyzer/new-vs-malloc.C: New test.
+
+2020-09-09 Marek Polacek <polacek@redhat.com>
+
+ * g++.dg/warn/Wnonnull6.C: Use target c++14.
+
+2020-09-09 Marek Polacek <polacek@redhat.com>
+
+ * g++.dg/cpp0x/auto-96647.C: Moved to...
+ * g++.dg/cpp1y/auto-96647.C: ...here. Use target c++14.
+
+2020-09-09 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/96955
+ * gcc.target/i386/builtin_thread_pointer.c: Update scan-assembler
+ for x32.
+
+2020-09-09 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/96647
+ * g++.dg/cpp0x/auto-96647.C: New test.
+ * g++.dg/cpp0x/error9.C: New test.
+ * g++.dg/cpp2a/concepts-fn6.C: New test.
+
+2020-09-09 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/vect-live-6.c: New testcase.
+
+2020-09-09 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/combined-if.f90: Update scan-tree-dump-times for
+ 'omp simd.*if' for nvptx even more.
+
+2020-09-09 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/vect-cond-13.c: New testcase.
+ * gcc.target/i386/pr87007-4.c: Adjust.
+ * gcc.target/i386/pr87007-5.c: Likewise.
+
+2020-09-09 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/builtin_thread_pointer.c: New test.
+
+2020-09-09 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/95109
+ PR fortran/94690
+ * gfortran.dg/gomp/combined-if.f90: Update scan-tree-dump-times for
+ 'omp simd.*if'.
+ * gfortran.dg/gomp/openmp-simd-5.f90: New test.
+
+2020-09-08 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96949
+ * gfortran.dg/analyzer/pr96949.f90: New test.
+
+2020-09-08 Aldy Hernandez <aldyh@redhat.com>
+
+ PR tree-optimization/96967
+ * gcc.dg/tree-ssa/pr96967.c: New file.
+
+2020-09-08 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * gcc.target/msp430/mcpu-is-430.c: New test.
+ * gcc.target/msp430/mcpu-is-430x.c: New test.
+ * gcc.target/msp430/mcpu-is-430xv2.c: New test.
+
+2020-09-07 Harald Anlauf <anlauf@gmx.de>
+
+ * gfortran.dg/pr96711.f90: New test.
+
+2020-09-07 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR rtl-optimization/96796
+ * gcc.c-torture/compile/pr96796.c: New test.
+
+2020-09-07 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * gcc.target/msp430/430x-default-isa.c: New test.
+
+2020-09-07 Iain Sandoe <iain@sandoe.co.uk>
+
+ * gcc.dg/pubtypes-2.c: Amend Pub Info Length.
+ * gcc.dg/pubtypes-3.c: Likewise.
+ * gcc.dg/pubtypes-4.c: Likewise.
+
+2020-09-07 Alex Coplan <alex.coplan@arm.com>
+
+ * gcc.target/aarch64/adds3.c: Fix test w.r.t. new syntax.
+ * gcc.target/aarch64/cmp.c: Likewise.
+ * gcc.target/aarch64/subs3.c: Likewise.
+ * gcc.target/aarch64/subsp.c: Likewise.
+ * gcc.target/aarch64/extend-syntax.c: New test.
+
+2020-09-07 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/96896
+ * gfortran.dg/ptr_func_assign_4.f08: Update dg-error.
+ * gfortran.dg/ptr-func-3.f90: New test.
+
+2020-09-07 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.dg/vect/slp-46.c: Add --param vect-epilogues-nomask=0 to
+ void backend interference.
+
+2020-09-07 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-46.c: New testcase.
+ * gcc.dg/vect/bb-slp-47.c: Likewise.
+ * gcc.dg/vect/bb-slp-32.c: Adjust.
+
+2020-09-07 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/pr92658-avx512bw-trunc.c: Add
+ -mprefer-vector-width=512 to avoid impact of different default
+ tune which gcc is built with.
+
+2020-09-06 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ * gfortran.dg/coarray_fail_st.f90: Adjust test.
+
+2020-09-04 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/96924
+ * gdc.dg/simd13927b.d: Removed.
+ * gdc.dg/pr96924.d: New test.
+
+2020-09-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96698
+ PR tree-optimization/96920
+ * gfortran.dg/vect/pr96920.f90: New testcase.
+ * gcc.dg/vect/pr96920.c: Likewise.
+
+2020-09-04 Christophe Lyon <christophe.lyon@linaro.org>
+
+ PR target/96769
+ * gcc.target/arm/pure-code/pr96769.c: New test.
+
+2020-09-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96931
+ * gcc.dg/pr96931.c: New testcase.
+
+2020-09-04 David Faust <david.faust@oracle.com>
+
+ * gcc.target/bpf/xbpf-indirect-call-1.c: New test.
+
+2020-09-04 Kewen Lin <linkw@gcc.gnu.org>
+
+ * gcc.target/powerpc/pr92398.p9+.c: Replace p9+ with has_arch_pwr9.
+ * gcc.target/powerpc/pr92398.p9-.c: Replace p9+ with has_arch_pwr9,
+ and replace p8 with has_arch_pwr8 && !has_arch_pwr9.
+ * lib/target-supports.exp (check_effective_target_p8): Remove.
+ (check_effective_target_p9+): Remove.
+
+2020-09-03 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/96820
+ * gcc.dg/tree-ssa/pr96820.c: New test.
+
+2020-09-03 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ * gcc.target/powerpc/pr96139-a.c: New test.
+ * gcc.target/powerpc/pr96139-b.c: New test.
+ * gcc.target/powerpc/pr96139-c.c: New test.
+
+2020-09-03 Harald Anlauf <anlauf@gmx.de>
+
+ * gfortran.dg/iall_masked.f90: New test.
+
+2020-09-03 Marek Polacek <polacek@redhat.com>
+
+ PR c++/92812
+ * g++.dg/cpp0x/constexpr-array23.C: Adjust dg-error.
+ * g++.dg/cpp0x/initlist69.C: Likewise.
+ * g++.dg/diagnostic/mem-init1.C: Likewise.
+ * g++.dg/init/array28.C: Likewise.
+ * g++.dg/cpp2a/paren-init33.C: New test.
+ * g++.dg/cpp2a/paren-init34.C: New test.
+ * g++.dg/cpp2a/paren-init35.C: New test.
+ * g++.old-deja/g++.brendan/crash60.C: Adjust dg-error.
+ * g++.old-deja/g++.law/init10.C: Likewise.
+ * g++.old-deja/g++.other/array3.C: Likewise.
+
+2020-09-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/96862
+ * g++.dg/cpp1z/constexpr-96862.C: New test.
+
+2020-09-03 Hongtao Liu <hongtao.liu@intel.com>
+
+ PR target/87767
+ * gcc.target/i386/avx2-broadcast-pr87767-1.c: New test.
+ * gcc.target/i386/avx512f-broadcast-pr87767-1.c: New test.
+ * gcc.target/i386/avx512f-broadcast-pr87767-2.c: New test.
+ * gcc.target/i386/avx512f-broadcast-pr87767-3.c: New test.
+ * gcc.target/i386/avx512f-broadcast-pr87767-4.c: New test.
+ * gcc.target/i386/avx512f-broadcast-pr87767-5.c: New test.
+ * gcc.target/i386/avx512f-broadcast-pr87767-6.c: New test.
+ * gcc.target/i386/avx512f-broadcast-pr87767-7.c: New test.
+ * gcc.target/i386/avx512vl-broadcast-pr87767-1.c: New test.
+ * gcc.target/i386/avx512vl-broadcast-pr87767-1.c: New test.
+ * gcc.target/i386/avx512vl-broadcast-pr87767-2.c: New test.
+ * gcc.target/i386/avx512vl-broadcast-pr87767-3.c: New test.
+ * gcc.target/i386/avx512vl-broadcast-pr87767-4.c: New test.
+ * gcc.target/i386/avx512vl-broadcast-pr87767-5.c: New test.
+ * gcc.target/i386/avx512vl-broadcast-pr87767-6.c: New test.
+
+2020-09-03 liuhongt <hongtao.liu@intel.com>
+
+ PR target/96246
+ PR target/96855
+ PR target/96856
+ PR target/96857
+ * g++.target/i386/avx512bw-pr96246-2.C: Add runtime check for
+ AVX512BW.
+ * g++.target/i386/avx512vl-pr96246-2.C: Add runtime check for
+ AVX512BW and AVX512VL
+ * g++.target/i386/avx512f-helper.h: New header.
+ * gcc.target/i386/pr92658-avx512f.c: Add
+ -mprefer-vector-width=512 to avoid impact of different default
+ mtune which gcc is built with.
+ * gcc.target/i386/avx512bw-pr95488-1.c: Ditto.
+ * gcc.target/i386/pr92645-4.c: Add -mno-avx512f to avoid
+ impact of different default march which gcc is built with.
+
+2020-09-02 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/96869
+ * gdc.dg/simd.d: Removed.
+ * gdc.dg/cast1.d: New test.
+ * gdc.dg/gdc213.d: Compile with target vect_sizes_16B_8B.
+ * gdc.dg/gdc284.d: Likewise.
+ * gdc.dg/gdc67.d: Likewise.
+ * gdc.dg/pr96869.d: New test.
+ * gdc.dg/simd1.d: New test.
+ * gdc.dg/simd10447.d: New test.
+ * gdc.dg/simd12776.d: New test.
+ * gdc.dg/simd13841.d: New test.
+ * gdc.dg/simd13927.d: New test.
+ * gdc.dg/simd15123.d: New test.
+ * gdc.dg/simd15144.d: New test.
+ * gdc.dg/simd16087.d: New test.
+ * gdc.dg/simd16697.d: New test.
+ * gdc.dg/simd17237.d: New test.
+ * gdc.dg/simd17695.d: New test.
+ * gdc.dg/simd17720a.d: New test.
+ * gdc.dg/simd17720b.d: New test.
+ * gdc.dg/simd19224.d: New test.
+ * gdc.dg/simd19627.d: New test.
+ * gdc.dg/simd19628.d: New test.
+ * gdc.dg/simd19629.d: New test.
+ * gdc.dg/simd19630.d: New test.
+ * gdc.dg/simd2a.d: New test.
+ * gdc.dg/simd2b.d: New test.
+ * gdc.dg/simd2c.d: New test.
+ * gdc.dg/simd2d.d: New test.
+ * gdc.dg/simd2e.d: New test.
+ * gdc.dg/simd2f.d: New test.
+ * gdc.dg/simd2g.d: New test.
+ * gdc.dg/simd2h.d: New test.
+ * gdc.dg/simd2i.d: New test.
+ * gdc.dg/simd2j.d: New test.
+ * gdc.dg/simd7951.d: New test.
+ * gdc.dg/torture/array2.d: New test.
+ * gdc.dg/torture/array3.d: New test.
+ * gdc.dg/torture/simd16488a.d: New test.
+ * gdc.dg/torture/simd16488b.d: New test.
+ * gdc.dg/torture/simd16703.d: New test.
+ * gdc.dg/torture/simd19223.d: New test.
+ * gdc.dg/torture/simd19607.d: New test.
+ * gdc.dg/torture/simd3.d: New test.
+ * gdc.dg/torture/simd4.d: New test.
+ * gdc.dg/torture/simd7411.d: New test.
+ * gdc.dg/torture/simd7413a.d: New test.
+ * gdc.dg/torture/simd7413b.d: New test.
+ * gdc.dg/torture/simd7414.d: New test.
+ * gdc.dg/torture/simd9200.d: New test.
+ * gdc.dg/torture/simd9304.d: New test.
+ * gdc.dg/torture/simd9449.d: New test.
+ * gdc.dg/torture/simd9910.d: New test.
+ * gdc.dg/simd13927b.d: New file.
+
+2020-09-02 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * lib/gdc-utils.exp (gdc-convert-test): Handle LINK directive.
+ Set PERMUTE_ARGS as DEFAULT_DFLAGS only for runnable tests.
+ (gdc-do-test): Set default action of compilable tests to compile.
+ Test SHARED_OPTION on runnable_cxx tests.
+
+2020-09-02 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * gdc.dg/dg.exp: Remove torture options.
+ * gdc.dg/gdc115.d: Move test to gdc.dg/torture.
+ * gdc.dg/gdc131.d: Likewise.
+ * gdc.dg/gdc141.d: Likewise.
+ * gdc.dg/gdc17.d: Likewise.
+ * gdc.dg/gdc171.d: Likewise.
+ * gdc.dg/gdc179.d: Likewise.
+ * gdc.dg/gdc186.d: Likewise.
+ * gdc.dg/gdc187.d: Likewise.
+ * gdc.dg/gdc191.d: Likewise.
+ * gdc.dg/gdc198.d: Likewise.
+ * gdc.dg/gdc200.d: Likewise.
+ * gdc.dg/gdc210.d: Likewise.
+ * gdc.dg/gdc240.d: Likewise.
+ * gdc.dg/gdc242b.d: Likewise.
+ * gdc.dg/gdc248.d: Likewise.
+ * gdc.dg/gdc250.d: Likewise.
+ * gdc.dg/gdc273.d: Likewise.
+ * gdc.dg/gdc283.d: Likewise.
+ * gdc.dg/gdc285.d: Likewise.
+ * gdc.dg/gdc286.d: Likewise.
+ * gdc.dg/gdc309.d: Likewise.
+ * gdc.dg/gdc35.d: Likewise.
+ * gdc.dg/gdc36.d: Likewise.
+ * gdc.dg/gdc51.d: Likewise.
+ * gdc.dg/gdc57.d: Likewise.
+ * gdc.dg/gdc66.d: Likewise.
+ * gdc.dg/imports/gdc36.d: Likewise.
+ * gdc.dg/init1.d: Likewise.
+ * gdc.dg/pr92309.d: Likewise.
+ * gdc.dg/pr94424.d: Likewise.
+ * gdc.dg/pr94777b.d: Likewise.
+ * gdc.dg/pr96152.d: Likewise.
+ * gdc.dg/pr96153.d: Likewise.
+ * gdc.dg/pr96156.d: Likewise.
+ * gdc.dg/pr96157a.d: Likewise.
+ * gdc.dg/torture/torture.exp: New file.
+ * gdc.dg/torture/gdc115.d: New file.
+ * gdc.dg/torture/gdc131.d: New file.
+ * gdc.dg/torture/gdc141.d: New file.
+ * gdc.dg/torture/gdc17.d: New file.
+ * gdc.dg/torture/gdc171.d: New file.
+ * gdc.dg/torture/gdc179.d: New file.
+ * gdc.dg/torture/gdc186.d: New file.
+ * gdc.dg/torture/gdc187.d: New file.
+ * gdc.dg/torture/gdc191.d: New file.
+ * gdc.dg/torture/gdc198.d: New file.
+ * gdc.dg/torture/gdc200.d: New file.
+ * gdc.dg/torture/gdc210.d: New file.
+ * gdc.dg/torture/gdc240.d: New file.
+ * gdc.dg/torture/gdc242b.d: New file.
+ * gdc.dg/torture/gdc248.d: New file.
+ * gdc.dg/torture/gdc250.d: New file.
+ * gdc.dg/torture/gdc273.d: New file.
+ * gdc.dg/torture/gdc283.d: New file.
+ * gdc.dg/torture/gdc285.d: New file.
+ * gdc.dg/torture/gdc286.d: New file.
+ * gdc.dg/torture/gdc309.d: New file.
+ * gdc.dg/torture/gdc35.d: New file.
+ * gdc.dg/torture/gdc36.d: New file.
+ * gdc.dg/torture/gdc51.d: New file.
+ * gdc.dg/torture/gdc57.d: New file.
+ * gdc.dg/torture/gdc66.d: New file.
+ * gdc.dg/torture/imports/gdc36.d: New file.
+ * gdc.dg/torture/init1.d: New file.
+ * gdc.dg/torture/pr92309.d: New file.
+ * gdc.dg/torture/pr94424.d: New file.
+ * gdc.dg/torture/pr94777b.d: New file.
+ * gdc.dg/torture/pr96152.d: New file.
+ * gdc.dg/torture/pr96153.d: New file.
+ * gdc.dg/torture/pr96156.d: New file.
+ * gdc.dg/torture/pr96157a.d: New file.
+
+2020-09-02 Jonathan Wakely <jwakely@redhat.com>
+
+ PR c++/60304
+ * g++.dg/warn/Wconversion-null-5.C: New test.
+
+2020-09-02 Jonathan Wakely <jwakely@redhat.com>
+
+ * g++.old-deja/g++.abi/cxa_vec.C: Include <exception> for
+ std::set_terminate.
+
+2020-09-02 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * gcc.dg/pr55940.c: Skip for msp430 unless -mlarge is specified.
+
+2020-09-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/96859
+ * gfortran.dg/pr96859.f90: New test.
+
+2020-09-01 Martin Sebor <msebor@redhat.com>
+
+ * gcc.dg/Wstringop-overflow.c: Remove xfails.
+ * gcc.dg/Wstringop-overflow-42.c: New test.
+ * gcc.dg/Wstringop-overread-4.c: New test.
+
+2020-09-01 Marek Polacek <polacek@redhat.com>
+
+ PR c++/77841
+ * g++.dg/cpp0x/initlist-new4.C: New test.
+
+2020-09-01 Peter Bergner <bergner@linux.ibm.com>
+
+ PR target/96808
+ * gcc.target/powerpc/pr96808.c: New test.
+
+2020-09-01 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96792
+ * gcc.dg/analyzer/pr96792.c: New test.
+
+2020-09-01 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/95398
+ * gfortran.dg/pr95398.f90: New test.
+
+2020-09-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/96867
+ * c-c++-common/gomp/pr96867.c: New test.
+
+2020-09-01 Kewen Lin <linkw@gcc.gnu.org>
+
+ * lib/target-supports.exp
+ (check_effective_target_vect_len_load_store): Call check function
+ check_effective_target_has_arch_pwr9.
+
+2020-08-31 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96798
+ * gcc.dg/analyzer/memset-1.c (test_5a): New.
+
+2020-08-31 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96860
+ * gcc.dg/analyzer/pr96860-1.c: New test.
+ * gcc.dg/analyzer/pr96860-2.c: New test.
+
+2020-08-31 Marek Polacek <polacek@redhat.com>
+ Jason Merrill <jason@redhat.com>
+
+ PR c++/93529
+ * g++.dg/cpp0x/sfinae4.C: Adjust expected result after P1009.
+ * g++.dg/cpp2a/new-array1.C: New test.
+ * g++.dg/cpp2a/new-array2.C: New test.
+ * g++.dg/cpp2a/new-array3.C: New test.
+ * g++.dg/cpp2a/new-array4.C: New test.
+
+2020-08-31 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96763
+ * g++.dg/analyzer/pr96763.C: New test.
+
+2020-08-31 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96764
+ * gcc.dg/analyzer/pr96764.c: New test.
+
+2020-08-31 Aldy Hernandez <aldyh@redhat.com>
+
+ PR tree-optimization/96818
+ * g++.dg/pr96818.C: New file.
+ * gcc.dg/pr96818.c: New file.
+
+2020-08-31 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96854
+ * gcc.dg/vect/pr96854.c: New testcase.
+
+2020-08-31 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/aarch64/strcmpopt_6.c: Suppress -Wstringop-overread.
+
+2020-08-31 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/avx512f-pr96551-1.c: New test.
+ * gcc.target/i386/avx512f-pr96551-2.c: New test.
+
+2020-08-31 Feng Xue <fxue@os.amperecomputing.com>
+
+ PR ipa/96806
+ * g++.dg/ipa/pr96806.C: New test.
+
+2020-08-31 Kewen Lin <linkw@gcc.gnu.org>
+
+ * gcc.dg/vect/bb-slp-pr69907.c: Adjust for partial vector usages.
+ * gcc.dg/vect/slp-3.c: Likewise.
+ * gcc.dg/vect/slp-multitypes-11.c: Likewise.
+ * gcc.dg/vect/slp-perm-1.c: Likewise.
+ * gcc.dg/vect/slp-perm-5.c: Likewise.
+ * gcc.dg/vect/slp-perm-6.c: Likewise.
+ * gcc.dg/vect/slp-perm-7.c: Likewise.
+ * gcc.dg/vect/slp-perm-8.c: Likewise.
+ * gcc.dg/vect/slp-perm-9.c: Likewise.
+ * gcc.dg/vect/vect-version-2.c: Likewise.
+ * lib/target-supports.exp (check_vect_partial_vector_usage): New
+ function.
+ (check_effective_target_vect_len_load_store): Likewise.
+ (check_effective_target_vect_partial_vectors_usage_1): Likewise.
+ (check_effective_target_vect_partial_vectors_usage_2): Likewise.
+ (check_effective_target_vect_partial_vectors): Likewise.
+
+2020-08-30 Martin Sebor <msebor@redhat.com>
+
+ * gcc.dg/Wstringop-overread-3.c: New test.
+
+2020-08-30 José Rui Faustino de Sousa <jrfsousa@gmail.com>
+
+ PR fortran/96728
+ * gfortran.dg/PR96728.f90: New test.
+
+2020-08-30 José Rui Faustino de Sousa <jrfsousa@gmail.com>
+
+ PR fortran/96727
+ * gfortran.dg/PR96727.f90: New test.
+
+2020-08-30 José Rui Faustino de Sousa <jrfsousa@gmail.com>
+
+ PR fortran/96726
+ * gfortran.dg/PR96726.f90: New test.
+
+2020-08-30 Steve Kargl <sgk@troutmask.apl.washington.edu>
+
+ * gfortran.dg/PR95352.f90: New test.
+
+2020-08-30 José Rui Faustino de Sousa <jrfsousa@gmail.com>
+
+ PR fortran/94110
+ * gfortran.dg/PR94110.f90: New test.
+
+2020-08-28 Martin Sebor <msebor@redhat.com>
+
+ * c-c++-common/Warray-bounds-7.c: Adjust expected warnings.
+ * c-c++-common/Wrestrict.c: Remove xfail.
+ * c-c++-common/attr-nonstring-3.c: Adjust text of expected warnings.
+ * c-c++-common/attr-nonstring-6.c: Suppress -Wstringop-overread
+ instead of -Wstringop-overflow.
+ * c-c++-common/attr-nonstring-8.c: Adjust text of expected warnings.
+ * g++.dg/torture/Wsizeof-pointer-memaccess1.C: Also suppress
+ -Wstringop-overread.
+ * g++.dg/torture/Wsizeof-pointer-memaccess2.C: Same.
+ * gcc.dg/Warray-bounds-39.c: Adjust expected warnings.
+ * gcc.dg/Warray-bounds-40.c: Also suppress -Wstringop-overread.
+ * gcc.dg/Warray-bounds-58.c: Remove xfail. Also expect
+ -Wstringop-overread. Adjust text of expected warnings.
+ * gcc.dg/Wsizeof-pointer-memaccess1.c: Also suppress
+ -Wstringop-overread.
+ * gcc.dg/Wstringop-overflow-22.c: Adjust text of expected warnings.
+ * gcc.dg/Wstringop-overflow-33.c: Expect -Wstringop-overread.
+ * gcc.dg/Wstringop-overflow-9.c: Expect -Wstringop-overread.
+ * gcc.dg/attr-nonstring-2.c: Adjust text of expected warnings.
+ * gcc.dg/attr-nonstring-3.c: Same.
+ * gcc.dg/attr-nonstring-4.c: Same.
+ * gcc.dg/attr-nonstring.c: Expect -Wstringop-overread.
+ * gcc.dg/builtin-stringop-chk-5.c: Adjust comment.
+ * gcc.dg/builtin-stringop-chk-8.c: Enable -Wstringop-overread instead
+ of -Wstringop-overflow.
+ * gcc.dg/pr78902.c: Also expect -Wstringop-overread.
+ * gcc.dg/pr79214.c: Adjust text of expected warnings.
+ * gcc.dg/strcmpopt_10.c: Suppress valid -Wno-stringop-overread.
+ * gcc.dg/strlenopt-57.c: Also expect -Wstringop-overread.
+ * gcc.dg/torture/Wsizeof-pointer-memaccess1.c: Also suppress valid
+ -Wno-stringop-overread.
+ * gcc.dg/tree-ssa/builtins-folding-gimple-ub.c: Same.
+ * gcc.dg/uninit-33.c: Same.
+ * gcc.dg/warn-strnlen-no-nul-2.c: Adjust text of expected warning.
+ * gcc.dg/warn-strnlen-no-nul.c: Same.
+ * gcc.target/i386/strcmpopt_6.c: Suppress -Wstringop-overread.
+ * gcc.dg/Wstringop-overread-2.c: New test.
+ * gcc.dg/Wstringop-overread.c: New test.
+
+2020-08-28 Martin Sebor <msebor@redhat.com>
+
+ PR c/96596
+ * gcc.dg/Wbuiltin-declaration-mismatch-16.c: New test.
+
+2020-08-28 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/94672
+ * gfortran.dg/optional_assumed_charlen_2.f90: New test.
+
+2020-08-28 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
+
+ PR target/96357
+ * gcc.target/aarch64/sve/pr96357.c: New test.
+
+2020-08-28 Alex Coplan <alex.coplan@arm.com>
+
+ * gcc.target/aarch64/mem-shift-canonical.c: Skip on ILP32.
+
+2020-08-28 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/96624
+ * gfortran.dg/reshape_8.f90 : New test.
+
+2020-08-28 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.dg/pr96579.c: Compile only with target dfp.
+
+2020-08-28 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/double_mask_reg-1.c: New test.
+
+2020-08-27 John David Anglin <danglin@gcc.gnu.org>
+
+ * gcc.target/hppa/shadd-2.c: Adjust times to 4.
+
+2020-08-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/65146
+ * gcc.target/i386/pr65146.c: New test.
+
+2020-08-27 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ PR target/96787
+ * gcc.target/powerpc/pr96787-1.c: New.
+ * gcc.target/powerpc/pr96787-2.c: New.
+
+2020-08-27 Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/95882
+ * gfortran.dg/pr95882_1.f90: New test.
+ * gfortran.dg/pr95882_2.f90: New test.
+ * gfortran.dg/pr95882_3.f90: New test.
+ * gfortran.dg/pr95882_4.f90: New test.
+ * gfortran.dg/pr95882_5.f90: New test.
+
+2020-08-27 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96522
+ * gcc.dg/torture/pr96522.c: New testcase.
+
+2020-08-27 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/tree-ssa/loop-19.c: Adjust.
+ * gcc.dg/tree-ssa/loop-2.c: Likewise.
+ * gcc.dg/tree-ssa/loop-3.c: Likewise.
+
+2020-08-27 Alex Coplan <alex.coplan@arm.com>
+
+ * gcc.target/aarch64/mem-shift-canonical.c: New test.
+
+2020-08-27 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96579
+ * gcc.dg/pr96579.c: New testcase.
+
+2020-08-27 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96565
+ * gcc.dg/tree-ssa/ssa-dse-40.c: New testcase.
+ * gcc.dg/builtin-object-size-4.c: Adjust.
+
+2020-08-26 Jeff Law <law@redhat.com>
+
+ * gcc.target/i386/387-7.c: Add dg-require-effective-target c99_runtime.
+ * gcc.target/i386/387-9.c: Likewise.
+ * g++.target/i386/avx512bw-pr96246-1.C: Likewise.
+ * gcc.target/i386/avx512f-rint-sfix-vec-2.c: Likewise.
+ * gcc.target/i386/avx512f-rintf-sfix-vec-2.c: Likewise.
+ * g++.target/i386/avx512vl-pr96246-1.C: Likewise.
+ * gcc.target/i386/pr61403.c: Likewise.
+ * gcc.target/i386/sse4_1-ceil-sfix-vec.c: Likewise.
+ * gcc.target/i386/sse4_1-ceilf-sfix-vec.c: Likewise.
+ * gcc.target/i386/sse4_1-floor-sfix-vec.c: Likewise.
+ * gcc.target/i386/sse4_1-floorf-sfix-vec.c: Likewise.
+ * gcc.target/i386/sse4_1-rint-sfix-vec.c: Likewise.
+ * gcc.target/i386/sse4_1-rintf-sfix-vec.c: Likewise.
+ * gcc.target/i386/sse4_1-round-sfix-vec.c: Likewise.
+ * gcc.target/i386/sse4_1-roundf-sfix-vec.c: Likewise.
+
+2020-08-26 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/96802
+ * gcc.target/i386/pr96802-1.c: New test.
+ * gcc.target/i386/pr96802-2.c: Likewise.
+
+2020-08-26 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * gcc.target/msp430/emulate-srli.c: Fix expected assembler text.
+ * gcc.target/msp430/max-inline-shift-430-no-opt.c: New test.
+ * gcc.target/msp430/max-inline-shift-430.c: New test.
+ * gcc.target/msp430/max-inline-shift-430x.c: New test.
+
+2020-08-26 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96698
+ * gcc.dg/vect/pr96698.c: New testcase.
+
+2020-08-26 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96783
+ * gcc.dg/vect/pr96783-1.c: New testcase.
+ * gcc.dg/vect/pr96783-2.c: Likewise.
+
+2020-08-26 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/lookup/operator-1.C: New.
+ * g++.dg/lookup/operator-2.C: New.
+
+2020-08-26 Qian Jianhua <qianjh@cn.fujitsu.com>
+
+ * gcc.target/aarch64/insv_1.c: Add '#' in scan-assembler
+
+2020-08-26 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/96156
+ * gdc.dg/pr96156.d: New test.
+
+2020-08-26 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/96153
+ * gdc.dg/pr96153.d: Add new tests.
+
+2020-08-26 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/96157
+ * gdc.dg/pr96157a.d: New test.
+ * gdc.dg/pr96157b.d: New test.
+
+2020-08-26 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * lib/gdc-utils.exp (gdc-convert-test): Clear PERMUTE_ARGS for
+ fail_compilation tests if not set by test file.
+
+2020-08-26 Martin Liska <mliska@suse.cz>
+
+ * lib/target-supports-dg.exp: Add dg-require-symver.
+ * lib/target-supports.exp: Likewise.
+ * gcc.dg/ipa/symver1.c: New test.
+
+2020-08-26 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/declare-target-4.f90: New test.
+ * gfortran.dg/gomp/declare-target-5.f90: New test.
+
+2020-08-26 liuhongt <hongtao.liu@intel.com>
+
+ PR target/96667
+ * gcc.target/i386/avx512bw-pr96246-1.c: Moved to...
+ * g++.target/i386/avx512bw-pr96246-1.C: ...here.
+ * gcc.target/i386/avx512bw-pr96246-2.c: Moved to...
+ * g++.target/i386/avx512bw-pr96246-2.C: ...here.
+ * gcc.target/i386/avx512vl-pr96246-1.c: Moved to...
+ * g++.target/i386/avx512vl-pr96246-1.C: ...here.
+ * gcc.target/i386/avx512vl-pr96246-2.c: Moved to...
+ * g++.target/i386/avx512vl-pr96246-2.C: ...here.
+
+2020-08-26 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/94858
+ * gcc.dg/analyzer/loop-start-up-to-end-by-1.c: Remove xfail.
+ * gcc.dg/analyzer/pr94858-1.c: New test.
+ * gcc.dg/analyzer/pr94858-2.c: New test.
+ * gcc.dg/analyzer/torture/loop-inc-ptr-2.c: Update expected number
+ of enodes.
+ * gcc.dg/analyzer/torture/loop-inc-ptr-3.c: Likewise.
+
+2020-08-26 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96777
+ * gcc.dg/analyzer/pr96777.c: New test.
+
+2020-08-25 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/95863
+ * gcc.target/i386/pr95863-1.c: New test.
+ * gcc.target/i386/pr95863-2.c: Likewise.
+
+2020-08-25 Tobias Burnus <tobias@codesourcery.com>
+
+ PR c/96678
+ * c-c++-common/gomp/map-4.c: New test.
+ * c-c++-common/gomp/depend-1.c: Update dg-error.
+ * c-c++-common/gomp/map-1.c: Likewise.
+ * c-c++-common/gomp/reduction-1.c: Likewise.
+ * g++.dg/gomp/depend-1.C: Likewise.
+ * g++.dg/gomp/depend-2.C: Likewise.
+
+2020-08-25 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/attributes_1.c: Rename
+ __ARM_FEATURE_SVE_VECTOR_OPERATIONS to
+ __ARM_FEATURE_SVE_VECTOR_OPERATORS.
+
+2020-08-25 Richard Sandiford <richard.sandiford@arm.com>
+
+ * g++.target/aarch64/sve/acle/general-c++/attributes_2.C: New test.
+ * g++.target/aarch64/sve/acle/general-c++/mangle_6.C: Likewise.
+ * g++.target/aarch64/sve/acle/general-c++/mangle_7.C: Likewise.
+ * g++.target/aarch64/sve/acle/general-c++/mangle_8.C: Likewise.
+ * g++.target/aarch64/sve/acle/general-c++/mangle_9.C: Likewise.
+ * g++.target/aarch64/sve/acle/general-c++/mangle_10.C: Likewise.
+ * gcc.target/aarch64/sve/acle/general/attributes_7.c: Check the
+ error messages reported when arm_sve_vector_bits is applied to
+ SVE tuple types or to existing fixed-length SVE types.
+
+2020-08-25 Richard Sandiford <richard.sandiford@arm.com>
+
+ * g++.target/aarch64/sve/acle/general-c++/mangle_1.C: Add a leading
+ "u" to the mangling of each SVE vector and predicate type.
+ * g++.target/aarch64/sve/acle/general-c++/mangle_2.C: Likewise.
+ * g++.target/aarch64/sve/acle/general-c++/mangle_3.C: Likewise.
+ * g++.target/aarch64/sve/acle/general-c++/mangle_5.C: Likewise.
+
+2020-08-25 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96548
+ PR tree-optimization/96760
+ * gcc.dg/torture/pr96548.c: New testcase.
+ * gcc.dg/torture/pr96760.c: Likewise.
+
+2020-08-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/96722
+ * g++.dg/opt/pr96722.C: New test.
+
+2020-08-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/96758
+ * gcc.dg/strcmpopt_12.c: New test.
+
+2020-08-25 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/96730
+ * gcc.dg/tree-ssa/pr96730.c: New test.
+
+2020-08-25 Roger Sayle <roger@nextmovesoftware.com>
+
+ PR tree-optimization/21137
+ * gcc.dg/pr21137.c: New test.
+
+2020-08-25 Richard Biener <rguenther@suse.de>
+
+ PR debug/96690
+ * g++.dg/lto/pr96690_0.C: New testcase.
+
+2020-08-25 Hongtao Liu <hongtao.liu@intel.com>
+
+ * gcc.target/i386/pr96755.c: New test.
+
+2020-08-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/96715
+ * gcc.dg/tree-ssa/copy-sign-3.c: New test.
+
+2020-08-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/96721
+ * g++.dg/opt/flifetime-dse8.C: New test.
+
+2020-08-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/95450
+ * gcc.target/powerpc/pr95450.c: New test.
+
+2020-08-25 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/other/final8.C: Adjust expected output.
+
+2020-08-24 Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/96486
+ * gfortran.dg/pr96486.f90: New test.
+
+2020-08-24 Christophe Lyon <christophe.lyon@linaro.org>
+
+ PR target/94538
+ * gcc.target/arm/pure-code/pr94538-1.c: New test.
+ * gcc.target/arm/pure-code/pr94538-2.c: New test.
+
+2020-08-24 Martin Liska <mliska@suse.cz>
+
+ * gcc.dg/vect/bb-slp-38.c: Adjust pattern as now we only process
+ a single vectorization and now 2 partial.
+ * gcc.dg/vect/bb-slp-45.c: New test.
+
+2020-08-24 Hans-Peter Nilsson <hp@axis.com>
+
+ PR target/93372
+ * gcc.target/cris/pr93372-47.c: New test.
+
+2020-08-23 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/96744
+ * gcc.target/i386/pr96744-1.c: New test.
+ * gcc.target/i386/pr96744-2.c: Likewise.
+ * gcc.target/i386/pr96744-3a.c: Likewise.
+ * gcc.target/i386/pr96744-3b.c: Likewise.
+ * gcc.target/i386/pr96744-4.c: Likewise.
+ * gcc.target/i386/pr96744-5.c: Likewise.
+ * gcc.target/i386/pr96744-6.c: Likewise.
+ * gcc.target/i386/pr96744-7.c: Likewise.
+ * gcc.target/i386/pr96744-8a.c: Likewise.
+ * gcc.target/i386/pr96744-8b.c: Likewise.
+ * gcc.target/i386/pr96744-9.c: Likewise.
+
+2020-08-23 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/92785
+ * gfortran.dg/unlimited_polymorphic_31.f03: Change to stop 1.
+
+2020-08-23 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/96737
+ * gfortran.dg/pr96737.f90: Add option -g.
+
+2020-08-23 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/96737
+ * gfortran.dg/pr96737.f90: New test.
+
+2020-08-22 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/94851
+ * gcc.dg/analyzer/pr94851-1.c: New test.
+ * gcc.dg/analyzer/pr94851-3.c: New test.
+ * gcc.dg/analyzer/pr94851-4.c: New test.
+
+2020-08-22 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/malloc-ipa-8-double-free.c: Drop
+ -fanalyzer-verbose-state-changes.
+
+2020-08-21 Hongtao Liu <hongtao.liu@intel.com>
+
+ * gcc.target/i386/pr96262-1.c: New test.
+
+2020-08-21 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/bitwise_mask_op-1.c: New test.
+ * gcc.target/i386/bitwise_mask_op-2.c: New test.
+ * gcc.target/i386/bitwise_mask_op-3.c: New test.
+ * gcc.target/i386/avx512bw-pr88465.c: New testcase.
+ * gcc.target/i386/avx512bw-kunpckwd-1.c: Adjust testcase.
+ * gcc.target/i386/avx512bw-kunpckwd-3.c: Ditto.
+ * gcc.target/i386/avx512dq-kmovb-5.c: Ditto.
+ * gcc.target/i386/avx512f-kmovw-5.c: Ditto.
+ * gcc.target/i386/pr55342.c: Ditto.
+
+2020-08-21 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/spill_to_mask-1.c: New tests.
+ * gcc.target/i386/spill_to_mask-2.c: New tests.
+ * gcc.target/i386/spill_to_mask-3.c: New tests.
+ * gcc.target/i386/spill_to_mask-4.c: New tests.
+
+2020-08-21 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/95152
+ * gcc.dg/analyzer/pr95152-4.c: New test.
+ * gcc.dg/analyzer/pr95152-5.c: New test.
+
+2020-08-20 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96723
+ * g++.dg/analyzer/pr96723.C: New test.
+
+2020-08-20 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/96100
+ PR fortran/96101
+ * gfortran.dg/char_length_23.f90: New test.
+
+2020-08-20 Joe Ramsay <Joe.Ramsay@arm.com>
+
+ PR target/96683
+ * gcc.target/arm/mve/intrinsics/vst1q_f16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vst1q_s16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vst1q_s8.c: New test.
+ * gcc.target/arm/mve/intrinsics/vst1q_u16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vst1q_u8.c: New test.
+
+2020-08-20 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/pr67500.f90: New file.
+
+2020-08-20 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * lib/target-supports.exp (arm_soft_ok): Remove arm32 check.
+
+2020-08-20 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/pure-code/pure-code.exp: Skip for
+ arm*-*-uclinuxfdpiceabi. Fix missing closing bracket.
+
+2020-08-20 Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/96436
+ * gfortran.dg/pr96436_1.f90: New test.
+ * gfortran.dg/pr96436_2.f90: New test.
+ * gfortran.dg/pr96436_3.f90: New test.
+ * gfortran.dg/pr96436_4.f90: New test.
+ * gfortran.dg/pr96436_5.f90: New test.
+ * gfortran.dg/pr96436_6.f90: New test.
+ * gfortran.dg/pr96436_7.f90: New test.
+ * gfortran.dg/pr96436_8.f90: New test.
+ * gfortran.dg/pr96436_9.f90
+ * gfortran.dg/pr96436_10.f90
+
+2020-08-20 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96713
+ * gcc.dg/analyzer/pr96713.c: New test.
+
+2020-08-19 Jason Merrill <jason@redhat.com>
+
+ DR 2369
+ * g++.dg/concepts/diagnostic10.C: Adjust expexcted errors.
+ * g++.dg/concepts/diagnostic13.C: Adjust expexcted errors.
+ * g++.dg/concepts/diagnostic2.C: Adjust expexcted errors.
+ * g++.dg/concepts/diagnostic3.C: Adjust expexcted errors.
+ * g++.dg/concepts/diagnostic4.C: Adjust expexcted errors.
+ * g++.dg/concepts/diagnostic5.C: Adjust expexcted errors.
+ * g++.dg/concepts/diagnostic9.C: Adjust expexcted errors.
+ * g++.dg/concepts/expression2.C: Adjust expexcted errors.
+ * g++.dg/concepts/fn5.C: Adjust expexcted errors.
+ * g++.dg/concepts/placeholder5.C: Adjust expexcted errors.
+ * g++.dg/concepts/pr67595.C: Adjust expexcted errors.
+ * g++.dg/cpp2a/concepts-pr78752-2.C: Adjust expexcted errors.
+ * g++.dg/cpp2a/concepts-pr84140.C: Adjust expexcted errors.
+ * g++.dg/cpp2a/concepts-recursive-sat3.C: Adjust expexcted errors.
+ * g++.dg/cpp2a/concepts-requires18.C: Adjust expexcted errors.
+ * g++.dg/cpp2a/concepts-requires19.C: Adjust expexcted errors.
+ * g++.dg/cpp2a/concepts3.C: Adjust expexcted errors.
+ * g++.dg/cpp2a/concepts-nondep1.C: New test.
+ * g++.dg/cpp2a/concepts-nondep1a.C: New test.
+
+2020-08-19 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96643
+ * g++.dg/analyzer/pr96643.C: New test.
+
+2020-08-19 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96705
+ * gcc.dg/analyzer/pr96705.c: New test.
+
+2020-08-19 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96699
+ * gcc.dg/analyzer/pr96699.c: New test.
+
+2020-08-19 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ * gcc.target/powerpc/pcrel-sibcall-1.c: Adjust.
+
+2020-08-19 Feng Xue <fxue@os.amperecomputing.com>
+
+ PR tree-optimization/94234
+ * gcc.dg/pr94234-1.c: New test.
+
+2020-08-19 Peixin Qiao <qiaopeixin@huawei.com>
+
+ * gcc.target/aarch64/mgeneral-regs_7.c: New test.
+
+2020-08-19 Pat Bernardi <bernardi@adacore.com>
+
+ * gcc.dg/sinatan-2.c: Add dg-require-effective-target c99_runtime.
+ * gcc.dg/sinhovercosh-1.c: Likewise.
+ * gcc.dg/tanhbysinh.c: Likewise.
+
+2020-08-19 Tom de Vries <tdevries@suse.de>
+
+ PR target/96494
+ * lib/target-supports.exp (check_effective_target_sync_int_long):
+ Return 1 for nvptx.
+ (check_effective_target_sync_int_long_stack): New proc.
+ * gcc.dg/pr86314.c: Require effective target sync_int_long_stack.
+
+2020-08-19 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96651
+ * gcc.dg/analyzer/pr96651-1.c: New test.
+ * gcc.dg/analyzer/pr96651-2.c: New test.
+
+2020-08-19 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96648
+ * gcc.dg/analyzer/pr96648.c: New test.
+
+2020-08-18 Peter Bergner <bergner@linux.ibm.com>
+
+ * gcc.target/powerpc/mma-builtin-3.c: Rename xvcvbf16sp to xvcvbf16spn.
+
+2020-08-18 Jason Merrill <jason@redhat.com>
+
+ PR c++/96199
+ * g++.dg/cpp1z/class-deduction-spec1.C: New test.
+
+2020-08-18 Jason Merrill <jason@redhat.com>
+
+ PR c++/96199
+ * g++.dg/cpp2a/class-deduction-alias4.C: New test.
+
+2020-08-18 Harald Anlauf <anlauf@gmx.de>
+
+ * gfortran.dg/minmax_char_3.f90: New test.
+ * gfortran.dg/min_max_kind.f90: New test.
+ * gfortran.dg/pr96613.f90: New test.
+
+2020-08-18 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/96665
+ PR middle-end/78257
+ * gcc.dg/memcmp-5.c: New test.
+
+2020-08-18 Martin Sebor <msebor@redhat.com>
+
+ PR tree-optimization/96670
+ * gcc.dg/memchr-2.c: New test.
+ * gcc.dg/memcmp-6.c: New test.
+
+2020-08-18 Roger Sayle <roger@nextmovesoftware.com>
+ Zdenek Sojka <zsojka@seznam.cz>
+
+ PR rtl-optimization/96298
+ * gcc.dg/pr96298.c: New test.
+ * gcc.target/i386/pr96298.c: New test.
+
+2020-08-18 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/96301
+ * gdc.dg/pr96301a.d: New test.
+ * gdc.dg/pr96301b.d: New test.
+ * gdc.dg/pr96301c.d: New test.
+
+2020-08-18 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/pr96562-1.c: New test.
+
+2020-08-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/96571
+ * gcc.dg/Wunused-var-4.c: New test.
+
+2020-08-18 liuhongt <hongtao.liu@intel.com>
+
+ PR target/96574
+ * gcc.target/i386/pr92865-1.c: Adjust testcase.
+
+2020-08-18 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96641
+ * g++.dg/analyzer/pr96641.C: New test.
+
+2020-08-17 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96644
+ * gcc.dg/analyzer/pr96644.c: New test.
+
+2020-08-17 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96639
+ * gcc.dg/analyzer/pr96639.c: New test.
+
+2020-08-17 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96642
+ * gcc.dg/analyzer/pr96642.c: New test.
+
+2020-08-17 Uroš Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/rdrand-1.c (dg-final): Update scan string.
+ * gcc.target/i386/rdrand-2.c (dg-final): Ditto.
+ * gcc.target/i386/rdrand-3.c (dg-final): Ditto.
+
+2020-08-17 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/endbr_immediate.c: New test.
+
+2020-08-14 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/78257
+ * gcc.dg/memchr.c: New test.
+ * gcc.dg/memcmp-2.c: New test.
+ * gcc.dg/memcmp-3.c: New test.
+ * gcc.dg/memcmp-4.c: New test.
+
+2020-08-14 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96611
+ * gcc.dg/analyzer/pr96611.c: New test.
+
+2020-08-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/90254
+ PR c++/93711
+ * g++.dg/cpp1z/aggr-base10.C: New test.
+ * g++.dg/cpp2a/no_unique_address7.C: New test.
+ * g++.dg/cpp2a/no_unique_address7a.C: New test.
+
+2020-08-14 Lewis Hyatt <lhyatt@gmail.com>
+
+ * lib/prune.exp: Change TEST_ALWAYS_FLAGS to use -fdiagnostics-plain-output.
+ * lib/c-compat.exp: Adapt to the prune.exp change.
+
+2020-08-14 Tom de Vries <tdevries@suse.de>
+
+ * gcc.dg/torture/pr92088-1.c: Add require-effective-target alloca.
+ * gcc.dg/torture/pr92088-2.c: Same.
+ * gcc.dg/torture/pr93124.c: Same.
+ * gcc.dg/torture/pr94479.c: Same.
+ * gcc.dg/tree-ssa/builtin-sprintf-warn-22.c: Same.
+
+2020-08-13 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/96598
+ * gcc.dg/analyzer/pr96598.c: New test.
+
+2020-08-13 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93032
+ PR analyzer/93938
+ PR analyzer/94011
+ PR analyzer/94099
+ PR analyzer/94399
+ PR analyzer/94458
+ PR analyzer/94503
+ PR analyzer/94640
+ PR analyzer/94688
+ PR analyzer/94689
+ PR analyzer/94839
+ PR analyzer/95026
+ PR analyzer/95042
+ PR analyzer/95240
+ * g++.dg/analyzer/pr93212.C: Add dg-warning for dangling
+ reference.
+ * g++.dg/analyzer/pr93950.C: Remove xfail.
+ * g++.dg/analyzer/pr94011.C: New test.
+ * g++.dg/analyzer/pr94028.C: Remove leak false positives; mark as
+ failing on C++98.
+ * g++.dg/analyzer/pr94503.C: New test.
+ * g++.dg/analyzer/pr95042.C: New test.
+ * gcc.dg/analyzer/CVE-2005-1689-dedupe-issue-2.c: New test.
+ * gcc.dg/analyzer/CVE-2005-1689-dedupe-issue.c: Add xfail.
+ * gcc.dg/analyzer/CVE-2005-1689-minimal.c:
+ Include "analyzer-decls.h".
+ (test_4, test_5, test_6, test_7, test_8): New tests.
+ * gcc.dg/analyzer/abs-1.c: New test.
+ * gcc.dg/analyzer/aliasing-1.c: New test.
+ * gcc.dg/analyzer/aliasing-2.c: New test.
+ * gcc.dg/analyzer/analyzer-decls.h (__analyzer_describe): New
+ decl.
+ (__analyzer_dump_num_heap_regions): Remove.
+ * gcc.dg/analyzer/attribute-nonnull.c: Add dg-warnings for cases
+ where NULL is directly used as an argument.
+ * gcc.dg/analyzer/bzero-1.c: New test.
+ * gcc.dg/analyzer/casts-1.c: New test.
+ * gcc.dg/analyzer/casts-2.c: New test.
+ * gcc.dg/analyzer/compound-assignment-1.c
+ (test_4): Remove xfail from leak false positive.
+ (called_by_test_5a): Add "allocated here" expected message.
+ (called_by_test_5b): Make expected leak message more precise.
+ * gcc.dg/analyzer/compound-assignment-3.c: Update expected leak
+ message.
+ * gcc.dg/analyzer/compound-assignment-4.c: New test.
+ * gcc.dg/analyzer/compound-assignment-5.c: New test.
+ * gcc.dg/analyzer/conditionals-notrans.c: Remove xfails.
+ * gcc.dg/analyzer/data-model-1.c (test_12d): Update expected
+ results.
+ (test_13): Remove xfail.
+ (test_14): Remove xfail.
+ (test_15): Remove xfail.
+ (test_16): Remove xfails. Add out-of-bounds access.
+ (test_16_alt): Remove xfails.
+ (test_23): Remove xfail.
+ (test_24): Remove xfail.
+ (test_25): Remove xfail.
+ (test_26): Update expected result. Remove xfail. Add xfail.
+ (test_27): Remove xfails.
+ (test_29): Add __analyzer_eval pointer comparisons.
+ (test_41): Generalize expected output for u.ptr comparison with
+ NULL for targets where this could be known to be false.
+ (test_42): Remove xfail.
+ (test_51): Remove xfails.
+ * gcc.dg/analyzer/data-model-13.c: Update for improvements to
+ source location and wording of leak message.
+ * gcc.dg/analyzer/data-model-14.c: Remove -fanalyzer-fine-grained.
+ (test_1): Update for improvement to expected message.
+ (test_2): Remove xfail.
+ * gcc.dg/analyzer/data-model-18.c: Remove xfail.
+ * gcc.dg/analyzer/data-model-20.c: New test.
+ * gcc.dg/analyzer/data-model-5.c: Add dg-warning for deref of
+ NULL. Add xfailing false leak.
+ * gcc.dg/analyzer/data-model-5b.c: Add xfailing false leak.
+ * gcc.dg/analyzer/data-model-5c.c: Update xfailing false leak.
+ * gcc.dg/analyzer/data-model-5d.c: Reimplement.
+ * gcc.dg/analyzer/data-model-6.c: Delete test.
+ * gcc.dg/analyzer/data-model-8.c: Remove xfail.
+ * gcc.dg/analyzer/describe-1.c: New test.
+ * gcc.dg/analyzer/dot-output.c: Remove xfail.
+ * gcc.dg/analyzer/explode-1.c: Add expected leak warning.
+ * gcc.dg/analyzer/explode-2.c: Add expected leak warnings. Mark
+ double-free warnings as xfail for now.
+ * gcc.dg/analyzer/feasibility-1.c: New test.
+ * gcc.dg/analyzer/first-field-1.c: New test.
+ * gcc.dg/analyzer/first-field-2.c: New test.
+ * gcc.dg/analyzer/init.c: New test.
+ * gcc.dg/analyzer/leak-2.c: New test.
+ * gcc.dg/analyzer/loop-0-up-to-n-by-1-with-iter-obj.c: New test.
+ * gcc.dg/analyzer/loop-0-up-to-n-by-1.c: New test.
+ * gcc.dg/analyzer/loop-2a.c: Update expected behavior.
+ * gcc.dg/analyzer/loop-3.c: Mark use-after-free as xfail. Add
+ expected warning about deref of unchecked pointer.
+ * gcc.dg/analyzer/loop-4.c: Remove -fno-analyzer-state-purge.
+ Update expected behavior.
+ * gcc.dg/analyzer/loop-n-down-to-1-by-1.c: New test.
+ * gcc.dg/analyzer/loop-start-down-to-end-by-1.c: New test.
+ * gcc.dg/analyzer/loop-start-down-to-end-by-step.c: New test.
+ * gcc.dg/analyzer/loop-start-to-end-by-step.c: New test.
+ * gcc.dg/analyzer/loop-start-up-to-end-by-1.c: New test.
+ * gcc.dg/analyzer/loop.c: Remove -fno-analyzer-state-purge.
+ Update expected behavior.
+ * gcc.dg/analyzer/malloc-1.c: Remove xfails from leak false
+ positives. Update expected wording of global_link.m_ptr leak.
+ (test_49): New test.
+ * gcc.dg/analyzer/malloc-4.c: Remove leak false positive. Update
+ expected wording of leak warning.
+ * gcc.dg/analyzer/malloc-in-loop.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-8-double-free.c: Update expected path
+ to show call to wrapped_malloc.
+ * gcc.dg/analyzer/malloc-ipa-8-unchecked.c: Remove
+ -fanalyzer-verbose-state-changes.
+ * gcc.dg/analyzer/malloc-paths-9.c: Remove comment about duplicate
+ warnings. Remove duplicate use-after-free paths.
+ * gcc.dg/analyzer/malloc-vs-local-1a.c: Add dg-warning for deref
+ of unchecked pointer. Update expected number of enodes.
+ * gcc.dg/analyzer/malloc-vs-local-2.c: Likewise.
+ * gcc.dg/analyzer/malloc-vs-local-3.c: Add dg-warning for deref of
+ unchecked pointer. Update expected number of enodes. Avoid
+ overspecifying the leak message.
+ * gcc.dg/analyzer/memset-1.c: New test.
+ * gcc.dg/analyzer/paths-3.c: Update expected number of enodes.
+ * gcc.dg/analyzer/paths-4.c: Likewise.
+ * gcc.dg/analyzer/paths-6.c: Likewise.
+ * gcc.dg/analyzer/paths-7.c: Likewise.
+ * gcc.dg/analyzer/pr93032-mztools-simplified.c: New test.
+ * gcc.dg/analyzer/pr93032-mztools.c: New test.
+ * gcc.dg/analyzer/pr93382.c: Mark taint tests as failing.
+ * gcc.dg/analyzer/pr93938.c: New test.
+ * gcc.dg/analyzer/pr94099.c: Replace uninit dg-warning with
+ dg-warning for NULL dereference.
+ * gcc.dg/analyzer/pr94399.c: New test.
+ * gcc.dg/analyzer/pr94447.c: Add dg-warning for NULL dereference.
+ * gcc.dg/analyzer/pr94458.c: New test.
+ * gcc.dg/analyzer/pr94640.c: New test.
+ * gcc.dg/analyzer/pr94688.c: New test.
+ * gcc.dg/analyzer/pr94689.c: New test.
+ * gcc.dg/analyzer/pr94839.c: New test.
+ * gcc.dg/analyzer/pr95026.c: New test.
+ * gcc.dg/analyzer/pr95240.c: New test.
+ * gcc.dg/analyzer/refcounting-1.c: New test.
+ * gcc.dg/analyzer/single-field.c: New test.
+ * gcc.dg/analyzer/stale-frame-1.c: New test.
+ * gcc.dg/analyzer/symbolic-1.c: New test.
+ * gcc.dg/analyzer/symbolic-2.c: New test.
+ * gcc.dg/analyzer/symbolic-3.c: New test.
+ * gcc.dg/analyzer/symbolic-4.c: New test.
+ * gcc.dg/analyzer/symbolic-5.c: New test.
+ * gcc.dg/analyzer/symbolic-6.c: New test.
+ * gcc.dg/analyzer/taint-1.c: Mark the "gets unchecked value"
+ events as failing for now. Update dg-message directives to avoid
+ relying on numbering.
+ * gcc.dg/analyzer/torture/loop-inc-ptr-1.c: New test.
+ * gcc.dg/analyzer/torture/loop-inc-ptr-2.c: New test.
+ * gcc.dg/analyzer/torture/loop-inc-ptr-3.c: New test.
+ * gcc.dg/analyzer/unknown-fns-2.c: New test.
+ * gcc.dg/analyzer/unknown-fns-3.c: New test.
+ * gcc.dg/analyzer/unknown-fns-4.c: New test.
+ * gcc.dg/analyzer/unknown-fns.c: Update dg-warning to reflect fixed
+ source location for leak diagnostic.
+ * gcc.dg/analyzer/use-after-free.c: New test.
+ * gcc.dg/analyzer/vla-1.c: New test.
+ * gcc.dg/analyzer/zlib-4.c: Rewrite to avoid "exit" calls. Add
+ expected leak warnings.
+ * gfortran.dg/analyzer/pr93993.f90: Remove leak of tm warning,
+ which seems to have been a false positive.
+
+2020-08-13 Peter Bergner <bergner@linux.ibm.com>
+
+ PR target/96506
+ * gcc.target/powerpc/pr96506.c: New test.
+
+2020-08-13 Andre Vehreschild <vehre@gcc.gnu.org>
+
+ PR fortran/93671
+ * gfortran.dg/coarray/pr93671.f90: New test.
+
+2020-08-13 Richard Sandiford <richard.sandiford@arm.com>
+
+ Revert:
+ 2020-08-13 Peixin Qiao <qiaopeixin@huawei.com>
+
+ * gcc.target/aarch64/mgeneral-regs_1.c: Add the comment that
+ -mgeneral-regs-only is compatible with the use of vector type
+ used in the test case.
+
+2020-08-13 Kwok Cheung Yeung <kcy@codesourcery.com>
+
+ * gcc.target/nvptx/ia64-sync-5.c: New.
+
+2020-08-13 Martin Liska <mliska@suse.cz>
+
+ PR ipa/96482
+ * gcc.dg/ipa/pr96482-2.c: New test.
+
+2020-08-13 Hongtao Liu <hongtao.liu@intel.com>
+
+ * gcc.target/i386/avx512bw-pr96246-1.c: New test.
+ * gcc.target/i386/avx512bw-pr96246-2.c: New test.
+ * gcc.target/i386/avx512vl-pr96246-1.c: New test.
+ * gcc.target/i386/avx512vl-pr96246-2.c: New test.
+ * gcc.target/i386/avx512bw-vmovdqu16-1.c: Adjust test.
+ * gcc.target/i386/avx512bw-vmovdqu8-1.c: Ditto.
+ * gcc.target/i386/avx512f-vmovapd-1.c: Ditto.
+ * gcc.target/i386/avx512f-vmovaps-1.c: Ditto.
+ * gcc.target/i386/avx512f-vmovdqa32-1.c: Ditto.
+ * gcc.target/i386/avx512f-vmovdqa64-1.c: Ditto.
+ * gcc.target/i386/avx512vl-pr92686-movcc-1.c: Ditto.
+ * gcc.target/i386/avx512vl-pr96246-1.c: Ditto.
+ * gcc.target/i386/avx512vl-pr96246-2.c: Ditto.
+ * gcc.target/i386/avx512vl-vmovapd-1.c: Ditto.
+ * gcc.target/i386/avx512vl-vmovaps-1.c: Ditto.
+ * gcc.target/i386/avx512vl-vmovdqa32-1.c: Ditto.
+ * gcc.target/i386/avx512vl-vmovdqa64-1.c: Ditto.
+
+2020-08-13 Hans-Peter Nilsson <hp@axis.com>
+
+ PR middle-end/94600
+ * gcc.dg/pr94600-5.c, gcc.dg/pr94600-6.c, gcc.dg/pr94600-7.c,
+ gcc.dg/pr94600-8.c: Align t0 to 4-byte boundary.
+
+2020-08-13 Marek Polacek <polacek@redhat.com>
+
+ PR c++/92812
+ * g++.dg/cpp2a/paren-init27.C: New test.
+ * g++.dg/cpp2a/paren-init28.C: New test.
+ * g++.dg/cpp2a/paren-init29.C: New test.
+ * g++.dg/cpp2a/paren-init30.C: New test.
+ * g++.dg/cpp2a/paren-init31.C: New test.
+ * g++.dg/cpp2a/paren-init32.C: New test.
+
+2020-08-12 Roger Sayle <roger@nextmovesoftware.com>
+ Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/96558
+ * gcc.dg/pr96558.c: New test.
+
+2020-08-12 Martin Liska <mliska@suse.cz>
+
+ PR ipa/96482
+ * gcc.dg/ipa/pr96482.c: New test.
+
+2020-08-12 Peixin Qiao <qiaopeixin@huawei.com>
+
+ * gcc.target/aarch64/mgeneral-regs_1.c: Add the comment that
+ -mgeneral-regs-only is compatible with the use of vector type
+ used in the test case.
+
+2020-08-12 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/nontemporal-1.f90: New test.
+ * gfortran.dg/gomp/nontemporal-2.f90: New test.
+
+2020-08-12 Tom de Vries <tdevries@suse.de>
+
+ * gcc.target/nvptx/ia64-sync-1.c: New test.
+ * gcc.target/nvptx/ia64-sync-2.c: New test.
+ * gcc.target/nvptx/ia64-sync-3.c: New test.
+ * gcc.target/nvptx/ia64-sync-4.c: New test.
+
+2020-08-12 Kwok Cheung Yeung <kcy@codesourcery.com>
+
+ PR testsuite/96519
+ * gcc.dg/ia64-sync-5.c (AC, init_qi, test_qi): Change element type to
+ signed char.
+
+2020-08-12 Tom de Vries <tdevries@suse.de>
+
+ PR testsuite/96566
+ * lib/target-supports.exp (check_effective_target_large_initializer):
+ New proc.
+ * gcc.dg/builtin-object-size-21.c: Require large_initializer.
+ * gcc.dg/strlenopt-55.c: Same.
+
+2020-08-12 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/stack-protector-1.c: Adapt code to Cortex-M
+ restrictions.
+
+2020-08-12 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/multilib.exp: Fix parameter passing for gcc_opts.
+
+2020-08-12 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ PR target/96308
+ * g++.dg/pr96308.C: New test.
+
+2020-08-12 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ PR target/96456
+ * gcc.target/s390/pr96456.c: New test.
+
+2020-08-12 Alan Modra <amodra@gmail.com>
+
+ PR target/96525
+ * gcc.target/powerpc/pr96493.c: Make it a link test when no
+ power10_hw. Require power10_ok.
+
+2020-08-11 David Edelsohn <dje.gcc@gmail.com>
+
+ * g++.dg/opt/flifetime-dse2.C: Remove AIX xfail.
+ * g++.dg/opt/flifetime-dse4.C: Remove AIX xfail.
+
+2020-08-11 Tom de Vries <tdevries@suse.de>
+
+ * gcc.dg/Warray-bounds-46.c: Add missing require-effective-target
+ directive.
+ * gcc.dg/Warray-bounds-48.c: Same.
+ * gcc.dg/Warray-bounds-50.c: Same.
+ * gcc.dg/Wreturn-local-addr-2.c: Same.
+ * gcc.dg/Wreturn-local-addr-3.c: Same.
+ * gcc.dg/Wreturn-local-addr-4.c: Same.
+ * gcc.dg/Wreturn-local-addr-6.c: Same.
+ * gcc.dg/Wstack-usage.c: Same.
+ * gcc.dg/Wstringop-overflow-15.c: Same.
+ * gcc.dg/Wstringop-overflow-23.c: Same.
+ * gcc.dg/Wstringop-overflow-25.c: Same.
+ * gcc.dg/Wstringop-overflow-27.c: Same.
+ * gcc.dg/Wstringop-overflow-39.c: Same.
+ * gcc.dg/analyzer/alloca-leak.c: Same.
+ * gcc.dg/analyzer/data-model-1.c: Same.
+ * gcc.dg/analyzer/data-model-16.c: Same.
+ * gcc.dg/analyzer/malloc-1.c: Same.
+ * gcc.dg/analyzer/malloc-paths-8.c: Same.
+ * gcc.dg/analyzer/pr93546.c: Same.
+ * gcc.dg/analyzer/setjmp-1.c: Same.
+ * gcc.dg/analyzer/setjmp-2.c: Same.
+ * gcc.dg/analyzer/setjmp-3.c: Same.
+ * gcc.dg/analyzer/setjmp-4.c: Same.
+ * gcc.dg/analyzer/setjmp-5.c: Same.
+ * gcc.dg/analyzer/setjmp-6.c: Same.
+ * gcc.dg/analyzer/setjmp-7.c: Same.
+ * gcc.dg/analyzer/setjmp-7a.c: Same.
+ * gcc.dg/analyzer/setjmp-8.c: Same.
+ * gcc.dg/analyzer/setjmp-9.c: Same.
+ * gcc.dg/analyzer/setjmp-pr93378.c: Same.
+ * gcc.dg/gimplefe-44.c: Same.
+ * gcc.dg/pr84131.c: Same.
+ * gcc.dg/pr93986.c: Same.
+ * gcc.dg/pr95133.c: Same.
+ * gcc.dg/pr95857.c: Same.
+ * gcc.dg/strlenopt-83.c: Same.
+ * gcc.dg/strlenopt-84.c: Same.
+ * gcc.dg/strlenopt-91.c: Same.
+ * gcc.dg/uninit-32.c: Same.
+ * gcc.dg/uninit-36.c: Same.
+
+2020-08-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/96545
+ * c-c++-common/pr96545.c: New test.
+
+2020-08-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/96539
+ * gcc.target/i386/pr96539.c: New test.
+
+2020-08-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/96549
+ * gcc.c-torture/execute/pr96549.c: New test.
+
+2020-08-11 Jan Hubicka <hubicka@ucw.cz>
+
+ * gcc.dg/ipa/ipa-clone-2.c: Lower threshold from 500 to 400.
+
+2020-08-10 Marek Polacek <polacek@redhat.com>
+
+ PR c++/88003
+ * g++.dg/cpp1y/auto-fn61.C: New test.
+
+2020-08-10 Marek Polacek <polacek@redhat.com>
+
+ * lib/gcc-dg.exp (gcc-dg-test-1): Handle dg-ice.
+ (cleanup-after-saved-dg-test): Reset expect_ice.
+ * lib/prune.exp (prune_ices): New.
+ * lib/target-supports-dg.exp (dg-ice): New.
+
+2020-08-10 Roger Sayle <roger@nextmovesoftware.com>
+
+ * gcc.target/i386/minmax-12.c: New test.
+
+2020-08-10 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/96556
+ * gfortran.dg/do_check_15.f90: New test.
+
+2020-08-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/96497
+ * g++.dg/cpp2a/spaceship-constexpr3.C: New test.
+
+2020-08-10 Patrick Palka <ppalka@redhat.com>
+
+ * g++.dg/cpp2a/concepts-fn5.C: New test.
+ * g++.dg/concepts/fn8.C: Generalize dg-error directive to accept
+ "no matching function ..." diagnostic.
+ * g++.dg/cpp2a/concepts-fn1.C: Likewise.
+ * g++.dg/cpp2a/concepts-ts2.C: Likewise.
+ * g++.dg/cpp2a/concepts-ts3.C: Likewise.
+
+2020-08-10 Marc Glisse <marc.glisse@inria.fr>
+
+ PR tree-optimization/95433
+ * gcc.dg/tree-ssa/pr95433-2.c: New file.
+
+2020-08-10 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/96312
+ * gfortran.dg/pr96312.f90: New test.
+
+2020-08-10 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/96102
+ * gfortran.dg/pr96102.f90: New test.
+
+2020-08-10 Hongtao Liu <hongtao.liu@intel.com>
+
+ * gcc.target/i386/pr92865-1.c: Adjust testcase.
+
+2020-08-09 Roger Sayle <roger@nextmovesoftware.com>
+
+ PR target/71321
+ * gcc.target/i386/pr71321.c: Check that the code doesn't use
+ the 4B zero displacement lea, not that it uses lea.
+
+2020-08-09 Iain Sandoe <iain@sandoe.co.uk>
+
+ * gcc.dg/torture/fp-int-convert-timode-3.c: XFAIL run.
+ * gcc.dg/torture/fp-int-convert-timode-4.c: Likewise.
+
+2020-08-09 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/pr44194-1.c: Skip for mmix.
+
+2020-08-09 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/pr30957-1.c: xfail for mmix.
+
+2020-08-08 Peter Bergner <bergner@linux.ibm.com>
+
+ PR target/96530
+ * gcc.target/powerpc/pr96530.c: New test.
+
+2020-08-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/96424
+ * c-c++-common/gomp/pr96424.c: New test.
+
+2020-08-07 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96514
+ * gcc.dg/pr96514.c: New testcase.
+
+2020-08-07 Jose E. Marchesi <jose.marchesi@oracle.com>
+
+ * gcc.target/bpf/diag-funargs-2.c: Remove trailing whitespaces.
+ * gcc.target/bpf/skb-ancestor-cgroup-id.c: Likewise.
+ * gcc.target/bpf/helper-xdp-adjust-meta.c: Likewise.
+ * gcc.target/bpf/helper-xdp-adjust-head.c: Likewise.
+ * gcc.target/bpf/helper-tcp-check-syncookie.c: Likewise.
+ * gcc.target/bpf/helper-sock-ops-cb-flags-set.c
+ * gcc.target/bpf/helper-sysctl-set-new-value.c: Likewise.
+ * gcc.target/bpf/helper-sysctl-get-new-value.c: Likewise.
+ * gcc.target/bpf/helper-sysctl-get-name.c: Likewise.
+ * gcc.target/bpf/helper-sysctl-get-current-value.c: Likewise.
+ * gcc.target/bpf/helper-strtoul.c: Likewise.
+ * gcc.target/bpf/helper-strtol.c: Likewise.
+ * gcc.target/bpf/helper-sock-map-update.c: Likewise.
+ * gcc.target/bpf/helper-sk-storage-get.c: Likewise.
+ * gcc.target/bpf/helper-sk-storage-delete.c: Likewise.
+ * gcc.target/bpf/helper-sk-select-reuseport.c: Likewise.
+ * gcc.target/bpf/helper-sk-release.c: Likewise.
+ * gcc.target/bpf/helper-sk-redirect-map.c: Likewise.
+ * gcc.target/bpf/helper-sk-lookup-upd.c: Likewise.
+ * gcc.target/bpf/helper-sk-lookup-tcp.c: Likewise.
+ * gcc.target/bpf/helper-skb-change-head.c: Likewise.
+ * gcc.target/bpf/helper-skb-cgroup-id.c: Likewise.
+ * gcc.target/bpf/helper-skb-adjust-room.c: Likewise.
+ * gcc.target/bpf/helper-set-hash.c: Likewise.
+ * gcc.target/bpf/helper-setsockopt.c: Likewise.
+ * gcc.target/bpf/helper-redirect-map.c: Likewise.
+ * gcc.target/bpf/helper-rc-repeat.c: Likewise.
+ * gcc.target/bpf/helper-rc-keydown.c: Likewise.
+ * gcc.target/bpf/helper-probe-read-str.c: Likewise.
+ * gcc.target/bpf/helper-perf-prog-read-value.c: Likewise.
+ * gcc.target/bpf/helper-perf-event-read-value.c: Likewise.
+ * gcc.target/bpf/helper-override-return.c: Likewise.
+ * gcc.target/bpf/helper-msg-redirect-map.c: Likewise.
+ * gcc.target/bpf/helper-msg-pull-data.c: Likewise.
+ * gcc.target/bpf/helper-msg-cork-bytes.c: Likewise.
+ * gcc.target/bpf/helper-msg-apply-bytes.c: Likewise.
+ * gcc.target/bpf/helper-lwt-seg6-store-bytes.c: Likewise.
+ * gcc.target/bpf/helper-lwt-seg6-adjust-srh.c: Likewise.
+ * gcc.target/bpf/helper-lwt-seg6-action.c: Likewise.
+ * gcc.target/bpf/helper-lwt-push-encap.c: Likewise.
+ * gcc.target/bpf/helper-get-socket-uid.c: Likewise.
+ * gcc.target/bpf/helper-get-socket-cookie.c: Likewise.
+ * gcc.target/bpf/helper-get-local-storage.c: Likewise.
+ * gcc.target/bpf/helper-get-current-cgroup-id.c: Likewise.
+ * gcc.target/bpf/helper-getsockopt.c: Likewise.
+ * gcc.target/bpf/diag-funargs-3.c: Likewise.
+
+2020-08-07 Kwok Cheung Yeung <kcy@codesourcery.com>
+ Tom de Vries <tdevries@suse.de>
+
+ * gcc.dg/ia64-sync-5.c: New test.
+
+2020-08-07 Michael Meissner <meissner@linux.ibm.com>
+
+ * gcc.target/powerpc/bswap-brd.c: New test.
+ * gcc.target/powerpc/bswap-brw.c: New test.
+ * gcc.target/powerpc/bswap-brh.c: New test.
+
+2020-08-07 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/pr96493.c: New file.
+
+2020-08-06 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/arm/stack-protector-1.c: New test.
+ * gcc.target/arm/stack-protector-2.c: Likewise.
+
+2020-08-06 Peter Bergner <bergner@linux.ibm.com>
+
+ PR target/96446
+ * gcc.target/powerpc/pr96446.c: New test.
+
+2020-08-06 Roger Sayle <roger@nextmovesoftware.com>
+
+ * gcc.target/i386/minmax-9.c: Restrict test to !ia32.
+
+2020-08-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/96480
+ * gcc.dg/tree-ssa/pr96480.c: New test.
+
+2020-08-06 Jose E. Marchesi <jose.marchesi@oracle.com>
+
+ * gcc.target/bpf/helper-bind.c: Adjust to new kernel helpers
+ mechanism.
+ * gcc.target/bpf/helper-bpf-redirect.c: Likewise.
+ * gcc.target/bpf/helper-clone-redirect.c: Likewise.
+ * gcc.target/bpf/helper-csum-diff.c: Likewise.
+ * gcc.target/bpf/helper-csum-update.c: Likewise.
+ * gcc.target/bpf/helper-current-task-under-cgroup.c: Likewise.
+ * gcc.target/bpf/helper-fib-lookup.c: Likewise.
+ * gcc.target/bpf/helper-get-cgroup-classid.c: Likewise.
+ * gcc.target/bpf/helper-get-current-cgroup-id.c: Likewise.
+ * gcc.target/bpf/helper-get-current-comm.c: Likewise.
+ * gcc.target/bpf/helper-get-current-pid-tgid.c: Likewise.
+ * gcc.target/bpf/helper-get-current-task.c: Likewise.
+ * gcc.target/bpf/helper-get-current-uid-gid.c: Likewise.
+ * gcc.target/bpf/helper-get-hash-recalc.c: Likewise.
+ * gcc.target/bpf/helper-get-listener-sock.c: Likewise.
+ * gcc.target/bpf/helper-get-local-storage.c: Likewise.
+ * gcc.target/bpf/helper-get-numa-node-id.c: Likewise.
+ * gcc.target/bpf/helper-get-prandom-u32.c: Likewise.
+ * gcc.target/bpf/helper-get-route-realm.c: Likewise.
+ * gcc.target/bpf/helper-get-smp-processor-id.c: Likewise.
+ * gcc.target/bpf/helper-get-socket-cookie.c: Likewise.
+ * gcc.target/bpf/helper-get-socket-uid.c: Likewise.
+ * gcc.target/bpf/helper-get-stack.c: Likewise.
+ * gcc.target/bpf/helper-get-stackid.c: Likewise.
+ * gcc.target/bpf/helper-getsockopt.c: Likewise.
+ * gcc.target/bpf/helper-ktime-get-ns.c: Likewise.
+ * gcc.target/bpf/helper-l3-csum-replace.c: Likewise.
+ * gcc.target/bpf/helper-l4-csum-replace.c: Likewise.
+ * gcc.target/bpf/helper-lwt-push-encap.c: Likewise.
+ * gcc.target/bpf/helper-lwt-seg6-action.c: Likewise.
+ * gcc.target/bpf/helper-lwt-seg6-adjust-srh.c: Likewise.
+ * gcc.target/bpf/helper-lwt-seg6-store-bytes.c: Likewise.
+ * gcc.target/bpf/helper-map-delete-elem.c: Likewise.
+ * gcc.target/bpf/helper-map-lookup-elem.c: Likewise.
+ * gcc.target/bpf/helper-map-peek-elem.c: Likewise.
+ * gcc.target/bpf/helper-map-pop-elem.c: Likewise.
+ * gcc.target/bpf/helper-map-push-elem.c: Likewise.
+ * gcc.target/bpf/helper-map-update-elem.c: Likewise.
+ * gcc.target/bpf/helper-msg-apply-bytes.c: Likewise.
+ * gcc.target/bpf/helper-msg-cork-bytes.c: Likewise.
+ * gcc.target/bpf/helper-msg-pop-data.c: Likewise.
+ * gcc.target/bpf/helper-msg-pull-data.c: Likewise.
+ * gcc.target/bpf/helper-msg-push-data.c: Likewise.
+ * gcc.target/bpf/helper-msg-redirect-hash.c: Likewise.
+ * gcc.target/bpf/helper-msg-redirect-map.c: Likewise.
+ * gcc.target/bpf/helper-override-return.c: Likewise.
+ * gcc.target/bpf/helper-perf-event-output.c: Likewise.
+ * gcc.target/bpf/helper-perf-event-read-value.c: Likewise.
+ * gcc.target/bpf/helper-perf-event-read.c: Likewise.
+ * gcc.target/bpf/helper-perf-prog-read-value.c: Likewise.
+ * gcc.target/bpf/helper-probe-read-str.c: Likewise.
+ * gcc.target/bpf/helper-probe-read.c: Likewise.
+ * gcc.target/bpf/helper-probe-write-user.c: Likewise.
+ * gcc.target/bpf/helper-rc-keydown.c: Likewise.
+ * gcc.target/bpf/helper-rc-pointer-rel.c: Likewise.
+ * gcc.target/bpf/helper-rc-repeat.c: Likewise.
+ * gcc.target/bpf/helper-redirect-map.c: Likewise.
+ * gcc.target/bpf/helper-set-hash-invalid.c: Likewise.
+ * gcc.target/bpf/helper-set-hash.c: Likewise.
+ * gcc.target/bpf/helper-setsockopt.c: Likewise.
+ * gcc.target/bpf/helper-sk-fullsock.c: Likewise.
+ * gcc.target/bpf/helper-sk-lookup-tcp.c: Likewise.
+ * gcc.target/bpf/helper-sk-lookup-upd.c: Likewise.
+ * gcc.target/bpf/helper-sk-redirect-hash.c: Likewise.
+ * gcc.target/bpf/helper-sk-redirect-map.c: Likewise.
+ * gcc.target/bpf/helper-sk-release.c: Likewise.
+ * gcc.target/bpf/helper-sk-select-reuseport.c: Likewise.
+ * gcc.target/bpf/helper-sk-storage-delete.c: Likewise.
+ * gcc.target/bpf/helper-sk-storage-get.c: Likewise.
+ * gcc.target/bpf/helper-skb-adjust-room.c: Likewise.
+ * gcc.target/bpf/helper-skb-cgroup-id.c: Likewise.
+ * gcc.target/bpf/helper-skb-change-head.c: Likewise.
+ * gcc.target/bpf/helper-skb-change-proto.c: Likewise.
+ * gcc.target/bpf/helper-skb-change-tail.c: Likewise.
+ * gcc.target/bpf/helper-skb-change-type.c: Likewise.
+ * gcc.target/bpf/helper-skb-ecn-set-ce.c: Likewise.
+ * gcc.target/bpf/helper-skb-get-tunnel-key.c: Likewise.
+ * gcc.target/bpf/helper-skb-get-tunnel-opt.c: Likewise.
+ * gcc.target/bpf/helper-skb-get-xfrm-state.c: Likewise.
+ * gcc.target/bpf/helper-skb-load-bytes-relative.c: Likewise.
+ * gcc.target/bpf/helper-skb-load-bytes.c: Likewise.
+ * gcc.target/bpf/helper-skb-pull-data.c: Likewise.
+ * gcc.target/bpf/helper-skb-set-tunnel-key.c: Likewise.
+ * gcc.target/bpf/helper-skb-set-tunnel-opt.c: Likewise.
+ * gcc.target/bpf/helper-skb-store-bytes.c: Likewise.
+ * gcc.target/bpf/helper-skb-under-cgroup.c: Likewise.
+ * gcc.target/bpf/helper-skb-vlan-pop.c: Likewise.
+ * gcc.target/bpf/helper-skb-vlan-push.c: Likewise.
+ * gcc.target/bpf/helper-skc-lookup-tcp.c: Likewise.
+ * gcc.target/bpf/helper-sock-hash-update.c: Likewise.
+ * gcc.target/bpf/helper-sock-map-update.c: Likewise.
+ * gcc.target/bpf/helper-sock-ops-cb-flags-set.c: Likewise.
+ * gcc.target/bpf/helper-spin-lock.c: Likewise.
+ * gcc.target/bpf/helper-spin-unlock.c: Likewise.
+ * gcc.target/bpf/helper-strtol.c: Likewise.
+ * gcc.target/bpf/helper-strtoul.c: Likewise.
+ * gcc.target/bpf/helper-sysctl-get-current-value.c: Likewise.
+ * gcc.target/bpf/helper-sysctl-get-name.c: Likewise.
+ * gcc.target/bpf/helper-sysctl-get-new-value.c: Likewise.
+ * gcc.target/bpf/helper-sysctl-set-new-value.c: Likewise.
+ * gcc.target/bpf/helper-tail-call.c: Likewise.
+ * gcc.target/bpf/helper-tcp-check-syncookie.c: Likewise.
+ * gcc.target/bpf/helper-tcp-sock.c: Likewise.
+ * gcc.target/bpf/helper-trace-printk.c: Likewise.
+ * gcc.target/bpf/helper-xdp-adjust-head.c: Likewise.
+ * gcc.target/bpf/helper-xdp-adjust-meta.c: Likewise.
+ * gcc.target/bpf/helper-xdp-adjust-tail.c: Likewise.
+ * gcc.target/bpf/skb-ancestor-cgroup-id.c: Likewise.
+
+2020-08-06 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96491
+ * gcc.dg/torture/pr96491.c: New testcase.
+
+2020-08-06 Roger Sayle <roger@nextmovesoftware.com>
+ Uroš Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/minmax-8.c: New test.
+ * gcc.target/i386/minmax-9.c: New test.
+ * gcc.target/i386/minmax-10.c: New test.
+ * gcc.target/i386/minmax-11.c: New test.
+
+2020-08-05 Patrick Palka <ppalka@redhat.com>
+ Jason Merrill <jason@redhat.com>
+
+ PR c++/96282
+ * g++.dg/cpp0x/constexpr-array26.C: New test.
+ * g++.dg/cpp0x/constexpr-array27.C: New test.
+ * g++.dg/cpp2a/constexpr-init18.C: New test.
+
+2020-08-05 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/96469
+ * gfortran.dg/do_check_14.f90: New test.
+
+2020-08-05 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/96469
+ * gfortran.dg/do_check_4.f90: Hide change in index variable
+ from compile-time analysis.
+ * gfortran.dg/do_check_13.f90: New test.
+
+2020-08-05 Marc Glisse <marc.glisse@inria.fr>
+
+ PR tree-optimization/95906
+ PR target/70314
+ * gcc.dg/tree-ssa/andnot-2.c: New file.
+ * gcc.dg/tree-ssa/pr95906.c: Likewise.
+ * gcc.target/i386/pr70314.c: Likewise.
+
+2020-08-05 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/96191
+ * gcc.target/aarch64/stack-protector-1.c: New test.
+ * gcc.target/aarch64/stack-protector-2.c: Likewise.
+
+2020-08-05 2020-08-04 Carl Love <cel@us.ibm.com>
+
+ * gcc.target/powerpc/vec-blend-runnable.c: New test.
+ * gcc.target/powerpc/vec-permute-ext-runnable.c: New test.
+
+2020-08-05 2020-08-04 Carl Love <cel@us.ibm.com>
+
+ * gcc.target/powerpc/vec-splati-runnable.c: New test.
+
+2020-08-05 2020-08-04 Carl Love <cel@us.ibm.com>
+
+ * gcc.target/powerpc/vec-shift-double-runnable.c: New test file.
+
+2020-08-05 2020-08-04 Carl Love <cel@us.ibm.com>
+
+ * gcc.target/powerpc/vec-replace-word-runnable.c: New test.
+
+2020-08-05 2020-08-04 Carl Love <cel@us.ibm.com>
+
+ * gcc.target/powerpc/vec-insert-word-runnable.c: New test case.
+
+2020-08-04 Roger Sayle <roger@nextmovesoftware.com>
+
+ * gcc.target/nvptx/mul-hi.c: New test.
+ * gcc.target/nvptx/umul-hi.c: New test.
+
+2020-08-04 Marek Polacek <polacek@redhat.com>
+
+ PR c++/96082
+ * g++.dg/template/template-keyword3.C: New test.
+
+2020-08-04 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/template/pr39425.C: Adjust errors, (unbounded
+ template recursion).
+ * g++.old-deja/g++.pt/spec20.C: Remove fallout diagnostics.
+
+2020-08-04 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/collapse1.f90: Add dg-error.
+ * gfortran.dg/gomp/collapse2.f90: New test.
+
+2020-08-04 Roger Sayle <roger@nextmovesoftware.com>
+
+ PR rtl-optimization/60473
+ * gcc.target/i386/pr60473.c: New test.
+
+2020-08-04 Marc Glisse <marc.glisse@inria.fr>
+
+ PR tree-optimization/95433
+ * gcc.c-torture/execute/pr23135.c: Add -fwrapv to avoid
+ undefined behavior.
+ * gcc.dg/tree-ssa/pr95433.c: New file.
+
+2020-08-04 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/96153
+ * gdc.dg/pr96153.d: New test.
+
+2020-08-04 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94024
+ * g++.dg/diagnostic/mem-init1.C: New test.
+
+2020-08-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/88240
+ * gcc.target/i386/pr88240.c: New testcase.
+
+2020-08-04 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/lastprivate-conditional-3.f90: Enable some
+ previously disabled 'lastprivate(conditional:' dg-warnings.
+
+2020-08-04 Sudakshina Das <sudi.das@arm.com>
+
+ * gcc.target/aarch64/cpymem-q-reg_1.c: New test.
+ * gcc.target/aarch64/large_struct_copy_2.c: Update for ldp q regs.
+
+2020-08-04 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/aarch64/acle/jcvt_2.c: New testcase.
+ * lib/target-supports.exp
+ (check_effective_target_aarch64_fjcvtzs_hw): Add new check for
+ FJCVTZS hw.
+
+2020-08-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/96426
+ * gcc.c-torture/compile/pr96426.c: New test.
+
+2020-08-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/96354
+ * g++.dg/opt/pr96354.C: New test.
+
+2020-08-04 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/96429
+ * gdc.dg/pr96429.d: New test.
+
+2020-08-04 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/96325
+ * gfortran.dg/pr96325.f90: Change from run to compile.
+
+2020-08-04 Xionghu Luo <luoxhu@linux.ibm.com>
+
+ PR rtl-optimization/71309
+ * gcc.target/powerpc/pr71309.c: New test.
+
+2020-08-03 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * gcc.target/powerpc/vector_float.c: Skip if not lp64.
+
+2020-08-03 Marek Polacek <polacek@redhat.com>
+
+ DR 2032
+ PR c++/96218
+ * g++.dg/cpp1y/var-templ67.C: New test.
+
+2020-08-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/96402
+ * gcc.target/aarch64/pr96402.c: New test.
+
+2020-08-03 Julian Brown <julian@codesourcery.com>
+ Thomas Schwinge <thomas@codesourcery.com>
+
+ * gfortran.dg/goacc/attach-descriptor.f90: Update pattern output. Add
+ scanning of gimplify dump.
+
+2020-08-03 Martin Jambor <mjambor@suse.cz>
+
+ * lib/target-supports.exp (check_effective_target_offload_hsa):
+ Removed.
+ * c-c++-common/gomp/gridify-1.c: Removed test.
+ * c-c++-common/gomp/gridify-2.c: Likewise.
+ * c-c++-common/gomp/gridify-3.c: Likewise.
+ * c-c++-common/gomp/hsa-indirect-call-1.c: Likewise.
+ * gfortran.dg/gomp/gridify-1.f90: Likewise.
+ * gcc.dg/gomp/gomp.exp: Do not pass -Wno-hsa to tests.
+ * g++.dg/gomp/gomp.exp: Likewise.
+ * gfortran.dg/gomp/gomp.exp: Likewise.
+
+2020-08-03 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/pr96377-1.c: Add -Wno-psabi.
+ * gcc.dg/pr96377-2.c: Likewise.
+
+2020-08-03 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/96254
+ * gdc.dg/pr96254a.d: New test.
+ * gdc.dg/pr96254b.d: New test.
+
+2020-08-02 Paul Thomas <pault@gcc.gnu.org>
+
+ PR target/96320
+ * gfortran.dg/module_procedure_4.f90 : New test.
+
+2020-08-02 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/96325
+ * gfortran.dg/pr96325.f90: New test.
+ * gfortran.dg/pr91589.f90: Update error message.
+
+2020-08-01 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR c/96377
+ * gcc.dg/pr96377-1.c: New test.
+ * gcc.dg/pr96377-2.c: Likewise.
+ * gcc.dg/pr96377-3.c: Likewise.
+ * gcc.dg/pr96377-4.c: Likewise.
+ * gcc.dg/pr96377-5.c: Likewise.
+ * gcc.dg/pr96377-6.c: Likewise.
+ * gcc.target/aarch64/pr96377-1.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c: Likewise.
+ * g++.target/aarch64/sve/acle/general-c++/gnu_vectors_3.C: Likewise.
+ * g++.target/aarch64/sve/acle/general-c++/gnu_vectors_4.C: Likewise.
+
+2020-08-01 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/loop-8.c: Skip for mmix.
+
+2020-07-31 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/96182
+ * g++.dg/cpp1y/constexpr-96182.C: New test.
+ * g++.dg/other/error35.C (S<T>::g()): Add return statement.
+ * g++.dg/cpp1y/pr63996.C (foo): Likewise.
+ * g++.dg/cpp1y/constexpr-return2.C (f): Likewise.
+ * g++.dg/cpp1y/var-templ44.C (make_array): Add throw 1.
+
+2020-07-31 Roger Sayle <roger@nextmovesoftware.com>
+ Tom de Vries <tdevries@suse.de>
+
+ * gcc.target/nvptx/v2si-cvt.c: Simplify source. Remove
+ scan-assembler directives. Mention PR96403.
+
+2020-07-31 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * gdc.dg/compilable.d: Removed.
+ * gdc.dg/gdc108.d: New test.
+ * gdc.dg/gdc115.d: New test.
+ * gdc.dg/gdc121.d: New test.
+ * gdc.dg/gdc122.d: New test.
+ * gdc.dg/gdc127.d: New test.
+ * gdc.dg/gdc131.d: New test.
+ * gdc.dg/gdc133.d: New test.
+ * gdc.dg/gdc141.d: New test.
+ * gdc.dg/gdc142.d: New test.
+ * gdc.dg/gdc15.d: New test.
+ * gdc.dg/gdc17.d: New test.
+ * gdc.dg/gdc170.d: New test.
+ * gdc.dg/gdc171.d: New test.
+ * gdc.dg/gdc179.d: New test.
+ * gdc.dg/gdc183.d: New test.
+ * gdc.dg/gdc186.d: New test.
+ * gdc.dg/gdc187.d: New test.
+ * gdc.dg/gdc19.d: New test.
+ * gdc.dg/gdc191.d: New test.
+ * gdc.dg/gdc194.d: New test.
+ * gdc.dg/gdc196.d: New test.
+ * gdc.dg/gdc198.d: New test.
+ * gdc.dg/gdc200.d: New test.
+ * gdc.dg/gdc204.d: New test.
+ * gdc.dg/gdc210.d: New test.
+ * gdc.dg/gdc212.d: New test.
+ * gdc.dg/gdc213.d: New test.
+ * gdc.dg/gdc218.d: New test.
+ * gdc.dg/gdc223.d: New test.
+ * gdc.dg/gdc231.d: New test.
+ * gdc.dg/gdc239.d: New test.
+ * gdc.dg/gdc24.d: New test.
+ * gdc.dg/gdc240.d: New test.
+ * gdc.dg/gdc241.d: New test.
+ * gdc.dg/gdc242a.d: New test.
+ * gdc.dg/gdc242b.d: New test.
+ * gdc.dg/gdc248.d: New test.
+ * gdc.dg/gdc250.d: New test.
+ * gdc.dg/gdc251.d: New test.
+ * gdc.dg/gdc253a.d: New test.
+ * gdc.dg/gdc253b.d: New test.
+ * gdc.dg/gdc255.d: New test.
+ * gdc.dg/gdc256.d: New test.
+ * gdc.dg/gdc261.d: New test.
+ * gdc.dg/gdc27.d: New test.
+ * gdc.dg/gdc273.d: New test.
+ * gdc.dg/gdc280.d: New test.
+ * gdc.dg/gdc284.d: New test.
+ * gdc.dg/gdc285.d: New test.
+ * gdc.dg/gdc286.d: New test.
+ * gdc.dg/gdc300.d: New test.
+ * gdc.dg/gdc309.d: New test.
+ * gdc.dg/gdc31.d: New test.
+ * gdc.dg/gdc35.d: New test.
+ * gdc.dg/gdc36.d: New test.
+ * gdc.dg/gdc37.d: New test.
+ * gdc.dg/gdc4.d: New test.
+ * gdc.dg/gdc43.d: New test.
+ * gdc.dg/gdc47.d: New test.
+ * gdc.dg/gdc51.d: New test.
+ * gdc.dg/gdc57.d: New test.
+ * gdc.dg/gdc66.d: New test.
+ * gdc.dg/gdc67.d: New test.
+ * gdc.dg/gdc71.d: New test.
+ * gdc.dg/gdc77.d: New test.
+ * gdc.dg/imports/gdc239.d: Remove phobos dependency.
+ * gdc.dg/imports/gdc241a.d: Updated imports.
+ * gdc.dg/imports/gdc241b.d: Likewise.
+ * gdc.dg/imports/gdc251a.d: Likewise.
+ * gdc.dg/imports/gdc253.d: Rename to...
+ * gdc.dg/imports/gdc253a.d: ...this.
+ * gdc.dg/imports/gdc253b.d: New.
+ * gdc.dg/imports/gdc36.d: New.
+ * gdc.dg/imports/runnable.d: Removed.
+ * gdc.dg/link.d: Removed.
+ * gdc.dg/runnable.d: Removed.
+ * gdc.dg/runnable2.d: Removed.
+ * gdc.dg/simd.d: Remove phobos dependency.
+
+2020-07-31 Martin Sebor <msebor@redhat.com>
+
+ PR c++/96003
+ * g++.dg/warn/Wnonnull7.C: New test.
+
+2020-07-31 Richard Biener <rguenther@suse.de>
+
+ PR debug/96383
+ * gcc.dg/debug/dwarf2/pr96383-1.c: New testcase.
+ * gcc.dg/debug/dwarf2/pr96383-2.c: Likewise.
+
+2020-07-31 Kewen Lin <linkw@linux.ibm.com>
+
+ * gcc.target/aarch64/sve/cost_model_2.c: Adjust due to cost model
+ change.
+
+2020-07-31 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/96369
+ * c-c++-common/pr96369.c: New testcase.
+
+2020-07-31 Martin Liska <mliska@suse.cz>
+
+ * gcc.dg/tree-prof/indir-call-prof-malloc.c: New test.
+
+2020-07-31 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/torture/20200727-0.c: New testcase.
+
+2020-07-31 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/96197
+ * g++.dg/cpp1y/constexpr-array8.C: New test.
+
+2020-07-30 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/96152
+ * gdc.dg/pr96152.d: New test.
+
+2020-07-30 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/96154
+ * gdc.dg/pr96154a.d: New test.
+ * gdc.dg/pr96154b.d: New test.
+
+2020-07-30 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/96140
+ * gdc.dg/pr96140.d: New test.
+
+2020-07-30 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ * gcc.target/powerpc/lsbb-runnable.c: New test.
+ * gcc.target/powerpc/lsbb.c: New test.
+
+2020-07-30 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * gdc.dg/array1.d: New test.
+
+2020-07-30 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * gdc.dg/intrinsics.d: Add ror and rol tests.
+
+2020-07-30 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * gdc.dg/intrinsics.d: New test.
+
+2020-07-30 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96370
+ * gcc.dg/pr96370.c: New testcase.
+
+2020-07-30 Roger Sayle <roger@nextmovesoftware.com>
+ Tom de Vries <tdevries@suse.de>
+
+ * gcc.target/nvptx/v2si-vec-set-extract.c: New test.
+
+2020-07-30 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/64194
+ * g++.dg/cpp1y/auto-fn60.C: New test.
+
+2020-07-30 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/95486
+ * g++.dg/cpp2a/class-deduction-alias3.C: New test.
+
+2020-07-30 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/96106
+ * g++.dg/concepts/abbrev7.C: New test.
+
+2020-07-30 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/96164
+ * g++.dg/cpp2a/concepts-explicit-inst5.C: New test.
+
+2020-07-29 Roger Sayle <roger@nextmovesoftware.com>
+
+ * gcc.target/nvptx/recip-1.c: New test.
+
+2020-07-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/91427
+ * g++.dg/coroutines/co-return-syntax-10-movable.C: Extend.
+ * g++.dg/cpp0x/Wredundant-move1.C: Adjust for C++20.
+ * g++.dg/cpp0x/Wredundant-move7.C: Adjust for C++20.
+ * g++.dg/cpp0x/Wredundant-move9.C: Adjust for C++20.
+ * g++.dg/cpp0x/elision_neg.C: Adjust for C++20.
+ * g++.dg/cpp0x/move-return2.C: Adjust for C++20.
+ * g++.dg/cpp0x/ref-qual20.C: Adjust for C++20.
+ * g++.dg/cpp2a/implicit-move1.C: New test.
+ * g++.dg/cpp2a/implicit-move2.C: New test.
+ * g++.dg/cpp2a/implicit-move3.C: New test.
+
+2020-07-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/91212
+ * g++.dg/cpp0x/move-return3.C: New test.
+
+2020-07-29 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/order-3.f90: New test.
+ * gfortran.dg/gomp/order-4.f90: New test.
+
+2020-07-29 Tiziano Müller <tiziano.mueller@chem.uzh.ch>
+
+ * c-c++-common/cpp/has-include-1-traditional.c: New.
+
+2020-07-29 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/map-3.f90: New test.
+ * gfortran.dg/gomp/map-4.f90: New test.
+
+2020-07-29 Joe Ramsay <joe.ramsay@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/mve-vldstr16-no-writeback.c: New file.
+
+2020-07-29 Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/96319
+ * gfortran.dg/pr96319.f90: New test.
+
+2020-07-29 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96349
+ * gcc.dg/torture/pr96349.c: New testcase.
+
+2020-07-29 Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/53298
+ * gfortran.dg/pr53298.f90: New test.
+
+2020-07-29 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/requires-1.f90: New test.
+ * gfortran.dg/gomp/requires-2.f90: New test.
+ * gfortran.dg/gomp/requires-3.f90: New test.
+ * gfortran.dg/gomp/requires-4.f90: New test.
+ * gfortran.dg/gomp/requires-5.f90: New test.
+ * gfortran.dg/gomp/requires-6.f90: New test.
+ * gfortran.dg/gomp/requires-7.f90: New test.
+ * gfortran.dg/gomp/requires-8.f90: New test.
+ * gfortran.dg/gomp/requires-9.f90: New test.
+
+2020-07-28 Sergei Trofimovich <siarheit@google.com>
+
+ PR ipa/96291
+ * gcc.dg/lto/pr96291_0.c: New testcase.
+ * gcc.dg/lto/pr96291_1.c: Support file.
+ * gcc.dg/lto/pr96291_2.c: Likewise.
+ * gcc.dg/lto/pr96291.h: Likewise.
+
+2020-07-28 Roger Sayle <roger@nextmovesoftware.com>
+ Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/fold-popcount-5.c: New test.
+ * gcc.dg/fold-parity-1.c: Likewise.
+ * gcc.dg/fold-parity-2.c: Likewise.
+ * gcc.dg/fold-parity-3.c: Likewise.
+ * gcc.dg/fold-parity-4.c: Likewise.
+ * gcc.dg/fold-parity-5.c: Likewise.
+
+2020-07-28 Nathan Sidwell <nathan@acm.org>
+
+ * lib/options.exp: Fix spello
+
+2020-07-28 Jakub Jelinek <jakub@redhat.com>
+ Mark Wielaard <mark@klomp.org>
+
+ PR c++/96328
+ * g++.dg/diagnostic/pr96328.C: New test.
+
+2020-07-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR preprocessor/96323
+ * c-c++-common/cpp/pr96323.c: New test.
+
+2020-07-28 Roger Sayle <roger@nextmovesoftware.com>
+ Tom de Vries <tdevries@suse.de>
+
+ * gcc.target/nvptx/cvt.c: New test.
+ * gcc.target/nvptx/shift16.c: New test.
+
+2020-07-28 Jakub Jelinek <jakub@redhat.com>
+
+ * g++.dg/cpp2a/nontype-subob1.C: Allow s1, i1 or x1 instead of l1 for
+ targets with short, int or long long ssize_t.
+
+2020-07-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/96335
+ * gcc.dg/pr96335.c: New test.
+
+2020-07-27 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/torture/pr39074-2.c: Adjust for mmix.
+ * gcc.dg/torture/pr39074.c, gcc.dg/torture/pta-callused-1.c: Ditto.
+
+2020-07-27 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/lookup/missing-std-include-10.h: New.
+ * g++.dg/lookup/missing-std-include-10.C: New.
+ * g++.dg/lookup/missing-std-include-11.C: New.
+
+2020-07-27 Martin Sebor <msebor@redhat.com>
+
+ PR tree-optimization/84079
+ * gcc.dg/Warray-bounds-62.c: New test.
+
+2020-07-27 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/96128
+ * gcc.target/s390/vector/pr96128.c: New test.
+
+2020-07-27 H.J. Lu <hjl.tools@gmail.com>
+
+ PR bootstrap/96203
+ * gcc.target/i386/pr96203-1.c: New test.
+ * gcc.target/i386/pr96203-2.c: Likewise.
+
+2020-07-27 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/tree-ssa/vector-4.c: Adjust for mmix.
+
+2020-07-27 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/tree-ssa/ssa-dse-26.c: Adjust for mmix.
+
+2020-07-27 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/tree-ssa/ssa-dom-cse-2.c: xfail scan for mmix.
+
+2020-07-27 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/tree-ssa/reassoc-20.c: Adjust for mmix.
+
+2020-07-26 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/79504
+ * g++.dg/cpp0x/decltype79.C: New test.
+
+2020-07-26 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/tree-ssa/forwprop-36.c: Adjust for mmix.
+
+2020-07-26 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/torture/pr59330.c: Disable for mmix.
+
+2020-07-25 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/abi/pure-virtual1.C: Add dynamic_lookup option
+ for Darwin.
+
+2020-07-25 Martin Sebor <msebor@redhat.com>
+
+ PR c++/96310
+ * g++.dg/warn/Wnonnull8.C: New file.
+
+2020-07-24 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * gcc.target/powerpc/pr95907.c: New.
+
+2020-07-24 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * c-c++-common/pr56493.c: Allow ":" in label, for mmix.
+
+2020-07-24 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * c-c++-common/patchable_function_entry-decl.c,
+ c-c++-common/patchable_function_entry-default.c,
+ c-c++-common/patchable_function_entry-definition.c: Adjust for mmix.
+
+2020-07-24 Sunil K Pandey <skpgkp2@gmail.com>
+
+ PR target/96192
+ * c-c++-common/pr96192-1.c: New test.
+
+2020-07-24 Alexandre Oliva <oliva@adacore.com>
+
+ * lib/scanoffload.exp (scoff-testname, scoff-adjust): New.
+ (scoff): Call them.
+
+2020-07-24 Alexandre Oliva <oliva@adacore.com>
+
+ PR driver/96230
+ * gcc.misc-tests/outputs.exp: Add tests with -dumpbase-ext,
+ with identical -dumpbase, with -dumpbase "", and without any
+ -dumpbase.
+ (outest): Fix "" expansion in expected outputs, skip
+ adjustments.
+
+2020-07-24 Alexandre Oliva <oliva@adacore.com>
+
+ PR testsuite/95720
+ * lib/gcc-defs.exp (gcc_adjust_linker_flags_list): Split out of...
+ (gcc_adjust_linker_flags): ... this. Protect gluefile and
+ wrap_flags.
+ * gcc.misc-tests/outputs.exp: Use gcc_adjust_linker_flags_list.
+
+2020-07-24 Dominique d'Humieres <dhumieres.dominique@free.fr>
+
+ PR fortran/93567
+ * gfortran.dg/round_3.f08: Add test cases.
+
+2020-07-24 Dominique d'Humieres <dhumieres.dominique@free.fr>
+
+ PR fortran/93592
+ * gfortran.dg/fmt_en.f90: Adjust test.
+ * gfortran.dg/fmt_en_rd.f90: New test.
+ * gfortran.dg/fmt_en_rn.f90: New test.
+ * gfortran.dg/fmt_en_ru.f90: New test.
+ * gfortran.dg/fmt_en_rz.f90: New test.
+
+2020-07-24 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/81339
+ * g++.dg/cpp0x/decltype78.C: New test.
+
+2020-07-24 Thomas Schwinge <thomas@codesourcery.com>
+
+ * lib/scandump.exp (scan-dump-dem-not): Fix TCL syntax error.
+
+2020-07-24 H.J. Lu <hjl.tools@gmail.com>
+
+ PR middle-end/95886
+ * gcc.target/i386/memcpy-pr95886.c: Restrict test to !ia32.
+
+2020-07-23 Martin Sebor <msebor@redhat.com>
+
+ PR testsuite/95886
+ * gcc.target/i386/memcpy-pr95886.c: Restrict test to LP64.
+
+2020-07-23 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/lastprivate-conditional-1.f90: New test.
+ * gfortran.dg/gomp/lastprivate-conditional-2.f90: New test.
+ * gfortran.dg/gomp/lastprivate-conditional-3.f90: New test.
+ * gfortran.dg/gomp/lastprivate-conditional-4.f90: New test.
+ * gfortran.dg/gomp/lastprivate-conditional-5.f90: New test.
+
+2020-07-23 Kito Cheng <kito.cheng@sifive.com>
+
+ PR target/96260
+ * gcc.target/riscv/pr91441.c: Update warning message.
+ * gcc.target/riscv/pr96260.c: New.
+
+2020-07-23 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * c-c++-common/builtin-has-attribute-4.c: Require visibility.
+
+2020-07-22 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/cancel-2.f90: New test.
+ * gfortran.dg/gomp/cancel-3.f90: New test.
+ * gfortran.dg/gomp/if-1.f90: New test.
+
+2020-07-22 Peter Bergner <bergner@linux.ibm.com>
+
+ PR target/96236
+ * gcc.target/powerpc/mma-double-test.c: Update storing results for
+ correct little-endian ordering.
+ * gcc.target/powerpc/mma-single-test.c: Likewise.
+
+2020-07-22 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/95237
+ * c-c++-common/pr95237-6.c: Only run for x86 targets.
+
+2020-07-22 Tobias Burnus <tobias@codesourcery.com>
+
+ * c-c++-common/gomp/critical-hint-1.c: Moved to libgomp/.
+ * c-c++-common/gomp/critical-hint-2.c: Moved to libgomp/.
+ * gfortran.dg/gomp/critical-hint-1.f90: Moved to libgomp/.
+ * gfortran.dg/gomp/critical-hint-2.f90: Moved to libgomp/.
+
+2020-07-22 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
+
+ * gcc.target/aarch64/ldp_vec_v2sf.c: New test.
+ * gcc.target/aarch64/ldp_vec_v2si.c: New test.
+ * gcc.target/aarch64/stp_vec_v2df.c: New test.
+ * gcc.target/aarch64/stp_vec_v2di.c: New test.
+ * gcc.target/aarch64/stp_vec_v2sf.c: New test.
+ * gcc.target/aarch64/stp_vec_v2si.c: New test.
+
+2020-07-22 Tobias Burnus <tobias@codesourcery.com>
+
+ * g++.dg/gomp/critical-3.C: Add nameless critical with hint testcase.
+ * c-c++-common/gomp/critical-hint-1.c: New test.
+ * c-c++-common/gomp/critical-hint-2.c: New test.
+ * gfortran.dg/gomp/critical-hint-1.f90: New test.
+ * gfortran.dg/gomp/critical-hint-2.f90: New test.
+
+2020-07-22 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/no_profile_instrument_function-attr-1.c: Adjust scanned
+ regex for NO_DOT_IN_LABEL.
+
+2020-07-21 Sunil K Pandey <skpgkp2@gmail.com>
+
+ PR target/95237
+ * c-c++-common/pr95237-1.c: New test.
+ * c-c++-common/pr95237-2.c: New test.
+ * c-c++-common/pr95237-3.c: New test.
+ * c-c++-common/pr95237-4.c: New test.
+ * c-c++-common/pr95237-5.c: New test.
+ * c-c++-common/pr95237-6.c: New test.
+ * c-c++-common/pr95237-7.c: New test.
+ * c-c++-common/pr95237-8.c: New test.
+ * c-c++-common/pr95237-9.c: New test.
+
+2020-07-21 Peter Bergner <bergner@linux.ibm.com>
+
+ PR target/92488
+ * gcc.target/powerpc/convert-fp-128.c (bl): Update POWER9 count.
+
+2020-07-21 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/parse/pr96257.C: New.
+
+2020-07-21 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/89574
+ * gfortran.dg/pr89574.f90: New file.
+
+2020-07-21 Sandra Loosemore <sandra@codesourcery.com>
+
+ * lib/profopt.exp (auto-profopt-execute): Pass -DFOR_AUTOFDO_TESTING
+ on command line for both compiles.
+ * gcc.dg/tree-prof/cold_partition_label.c: Scale down for
+ non-FDO testing.
+ * gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c: Likewise.
+ * gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c: Likewise.
+ * gcc.dg/tree-prof/indir-call-prof-topn.c: Likewise.
+ * gcc.dg/tree-prof/section-attr-1.c: Likewise.
+ * gcc.dg/tree-prof/section-attr-2.c: Likewise.
+ * gcc.dg/tree-prof/section-attr-3.c: Likewise.
+
+2020-07-21 Dimitar Dimitrov <dimitar@dinux.eu>
+
+ * gcc.dg/attr-copy-4.c: Unpacked may still have alignment of 1
+ on targets with default_packed.
+ * gcc.dg/c11-align-9.c: Remove AVR target filter and replace
+ with default_packed filter.
+
+2020-07-21 Dimitar Dimitrov <dimitar@dinux.eu>
+
+ * gcc.dg/pr53037-1.c: Relax warning pattern.
+
+2020-07-21 Dimitar Dimitrov <dimitar@dinux.eu>
+
+ * c-c++-common/Waddress-of-packed-member-2.c: Add dg-warning for
+ ignored attribute if target is default_packed.
+ * c-c++-common/Wattributes.c: Ditto.
+ * c-c++-common/attr-copy.c: Ditto.
+ * c-c++-common/builtin-has-attribute-4.c: Ditto.
+ * c-c++-common/pr51628-29.c: Ditto.
+ * c-c++-common/pr51628-30.c: Ditto.
+ * c-c++-common/pr51628-32.c: Ditto.
+ * gcc.dg/Wattributes-6.c: Ditto.
+ * gcc.dg/attr-copy-4.c: Ditto.
+ * gcc.dg/attr-copy-8.c: Ditto.
+
+2020-07-21 Dimitar Dimitrov <dimitar@dinux.eu>
+
+ * c-c++-common/Waddress-of-packed-member-1.c: Filter dg-warning
+ for targets who pack by default.
+ * c-c++-common/Waddress-of-packed-member-2.c: Ditto.
+ * c-c++-common/pr51628-13.c: Ditto.
+ * c-c++-common/pr51628-15.c: Ditto.
+ * c-c++-common/pr51628-16.c: Ditto.
+ * c-c++-common/pr51628-26.c: Ditto.
+ * c-c++-common/pr51628-27.c: Ditto.
+ * c-c++-common/pr51628-28.c: Ditto.
+ * c-c++-common/pr51628-29.c: Ditto.
+ * c-c++-common/pr51628-3.c: Ditto.
+ * c-c++-common/pr51628-30.c: Ditto.
+ * c-c++-common/pr51628-31.c: Ditto.
+ * c-c++-common/pr51628-32.c: Ditto.
+ * c-c++-common/pr51628-33.c: Ditto.
+ * c-c++-common/pr51628-35.c: Ditto.
+ * c-c++-common/pr51628-4.c: Ditto.
+ * c-c++-common/pr51628-5.c: Ditto.
+ * c-c++-common/pr51628-6.c: Ditto.
+ * c-c++-common/pr51628-8.c: Ditto.
+ * c-c++-common/pr51628-9.c: Ditto.
+ * c-c++-common/pr88664-2.c: Ditto.
+ * gcc.dg/pr51628-17.c: Ditto.
+ * gcc.dg/pr51628-19.c: Ditto.
+ * gcc.dg/pr51628-20.c: Ditto.
+ * gcc.dg/pr51628-21.c: Ditto.
+ * gcc.dg/pr51628-22.c: Ditto.
+ * gcc.dg/pr51628-24.c: Ditto.
+ * gcc.dg/pr51628-25.c: Ditto.
+ * gcc.dg/pr51628-34.c: Ditto.
+ * gcc.dg/pr88928.c: Ditto.
+
+2020-07-21 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.dg/analyzer/signal-1.c: Add dg-require-effective-target
+ signal.
+ * gcc.dg/analyzer/signal-2.c: Ditto.
+ * gcc.dg/analyzer/signal-3.c: Ditto.
+ * gcc.dg/analyzer/signal-4a.c: Ditto.
+ * gcc.dg/analyzer/signal-4b.c: Ditto.
+ * gcc.dg/analyzer/signal-5.c: Ditto.
+ * gcc.dg/analyzer/signal-6.c: Ditto.
+ * gcc.dg/analyzer/signal-exit.c: Ditto.
+
+2020-07-21 Xionghu Luo <luoxhu@linux.ibm.com>
+
+ PR rtl-optimization/89310
+ * gcc.target/powerpc/pr89310.c: New test.
+
+2020-07-21 Kewen Lin <linkw@linux.ibm.com>
+
+ * gcc.target/powerpc/p9-vec-length-1.h: New test.
+ * gcc.target/powerpc/p9-vec-length-2.h: New test.
+ * gcc.target/powerpc/p9-vec-length-3.h: New test.
+ * gcc.target/powerpc/p9-vec-length-4.h: New test.
+ * gcc.target/powerpc/p9-vec-length-5.h: New test.
+ * gcc.target/powerpc/p9-vec-length-6.h: New test.
+ * gcc.target/powerpc/p9-vec-length-7.h: New test.
+ * gcc.target/powerpc/p9-vec-length-8.h: New test.
+ * gcc.target/powerpc/p9-vec-length-epil-1.c: New test.
+ * gcc.target/powerpc/p9-vec-length-epil-2.c: New test.
+ * gcc.target/powerpc/p9-vec-length-epil-3.c: New test.
+ * gcc.target/powerpc/p9-vec-length-epil-4.c: New test.
+ * gcc.target/powerpc/p9-vec-length-epil-5.c: New test.
+ * gcc.target/powerpc/p9-vec-length-epil-6.c: New test.
+ * gcc.target/powerpc/p9-vec-length-epil-7.c: New test.
+ * gcc.target/powerpc/p9-vec-length-epil-8.c: New test.
+ * gcc.target/powerpc/p9-vec-length-epil-run-1.c: New test.
+ * gcc.target/powerpc/p9-vec-length-epil-run-2.c: New test.
+ * gcc.target/powerpc/p9-vec-length-epil-run-3.c: New test.
+ * gcc.target/powerpc/p9-vec-length-epil-run-4.c: New test.
+ * gcc.target/powerpc/p9-vec-length-epil-run-5.c: New test.
+ * gcc.target/powerpc/p9-vec-length-epil-run-6.c: New test.
+ * gcc.target/powerpc/p9-vec-length-epil-run-7.c: New test.
+ * gcc.target/powerpc/p9-vec-length-epil-run-8.c: New test.
+ * gcc.target/powerpc/p9-vec-length-full-1.c: New test.
+ * gcc.target/powerpc/p9-vec-length-full-2.c: New test.
+ * gcc.target/powerpc/p9-vec-length-full-3.c: New test.
+ * gcc.target/powerpc/p9-vec-length-full-4.c: New test.
+ * gcc.target/powerpc/p9-vec-length-full-5.c: New test.
+ * gcc.target/powerpc/p9-vec-length-full-6.c: New test.
+ * gcc.target/powerpc/p9-vec-length-full-7.c: New test.
+ * gcc.target/powerpc/p9-vec-length-full-8.c: New test.
+ * gcc.target/powerpc/p9-vec-length-full-run-1.c: New test.
+ * gcc.target/powerpc/p9-vec-length-full-run-2.c: New test.
+ * gcc.target/powerpc/p9-vec-length-full-run-3.c: New test.
+ * gcc.target/powerpc/p9-vec-length-full-run-4.c: New test.
+ * gcc.target/powerpc/p9-vec-length-full-run-5.c: New test.
+ * gcc.target/powerpc/p9-vec-length-full-run-6.c: New test.
+ * gcc.target/powerpc/p9-vec-length-full-run-7.c: New test.
+ * gcc.target/powerpc/p9-vec-length-full-run-8.c: New test.
+ * gcc.target/powerpc/p9-vec-length-run-1.h: New test.
+ * gcc.target/powerpc/p9-vec-length-run-2.h: New test.
+ * gcc.target/powerpc/p9-vec-length-run-3.h: New test.
+ * gcc.target/powerpc/p9-vec-length-run-4.h: New test.
+ * gcc.target/powerpc/p9-vec-length-run-5.h: New test.
+ * gcc.target/powerpc/p9-vec-length-run-6.h: New test.
+ * gcc.target/powerpc/p9-vec-length-run-7.h: New test.
+ * gcc.target/powerpc/p9-vec-length-run-8.h: New test.
+ * gcc.target/powerpc/p9-vec-length.h: New test.
+
+2020-07-21 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/independent-cloneids-1.c: Skip for mmix.
+ flag_stack_usage_info.
+
+2020-07-21 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/cdce3.c: Update matched line-number.
+
+2020-07-20 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/opt/flifetime-dse7.C: New test.
+
+2020-07-20 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp1z/nontype2.C: No error in C++20.
+ * g++.dg/template/nontype25.C: No error in C++20.
+ * g++.dg/template/nontype8.C: No error in C++20.
+ * g++.dg/cpp2a/nontype-subob1.C: New test.
+ * g++.dg/cpp2a/nontype-subob2.C: New test.
+ * g++.dg/cpp1z/nontype3.C: Now C++17-only.
+ * g++.dg/cpp2a/feat-cxx2a.C: Adjust expected value.
+
+2020-07-20 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp2a/class-deduction-aggr7.C: New test.
+
+2020-07-20 Yang Yang <yangyang305@huawei.com>
+
+ * gcc.target/aarch64/sve/pr96195.c: New test.
+
+2020-07-20 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/95750
+ * gcc.target/i386/pr95750.c: New test.
+
+2020-07-20 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/95189
+ PR middle-end/95886
+ * gcc.dg/memcmp-pr95189.c: New test.
+ * gcc.dg/strncmp-3.c: New test.
+ * gcc.target/i386/memcpy-pr95886.c: New test.
+
+2020-07-20 Alex Coplan <alex.coplan@arm.com>
+
+ PR jit/69435
+ * jit.dg/jit.exp (fixed_host_execute): Fix regex patterns to
+ always explicitly match newlines.
+
+2020-07-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR libstdc++/93121
+ * gcc.dg/tree-ssa/pr93121-2.c: New test.
+
+2020-07-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR libstdc++/93121
+ * gcc.dg/tree-ssa/pr93121-1.c: New test.
+
+2020-07-20 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/const-uniq-1.c: Adjust scanned pattern for mmix.
+
+2020-07-20 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/cdce3.c: Skip for mmix.
+
+2020-07-20 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/pr87485.c: Require scheduling.
+
+2020-07-19 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/95973
+ PR target/96238
+ * gcc.target/i386/pr95973.c: New test.
+
+2020-07-19 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/96018
+ * gfortran.dg/implicit_pure_5.c: New file.
+ * gfortran.dg/implicit_pure_5.f90: New file.
+
+2020-07-19 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/attr-copy-6.c: Require visibility.
+
+2020-07-19 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.dg/Wno-frame-address.c: Skip for cris and mmix.
+
+2020-07-18 Jakub Jelinek <jakub@redhat.com>
+
+ * c-c++-common/cpp/pragma-eof.c: Use .+3 instead of 6 in
+ dg-error.
+
+2020-07-18 David Edelsohn <dje.gcc@gmail.com>
+
+ * gfortran.dg/goacc/finalize-1.f: Adjust regex for 32 bits.
+
+2020-07-18 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * c-c++-common/cpp/pragma-eof.c: Require fopenmp.
+
+2020-07-18 Peter Bergner <bergner@linux.ibm.com>
+
+ PR target/92488
+ * gcc.target/powerpc/convert-fp-128.c (bl, drsp, drdpq): Update counts.
+ (__dpd_trunctdsd2): Make conditional on !hard_dfp.
+ (__dpd_extendsddd2, __dpd_extendsdtd2, __dpd_truncddsd2,
+ __dpd_extendddtd2, __dpd_trunctddd2): Use !hard_dfp.
+ * gcc.target/powerpc/pr92488.c: New test.
+
+2020-07-17 Marek Polacek <polacek@redhat.com>
+
+ PR c++/79815
+ * g++.dg/cpp1y/auto-fn59.C: New test.
+
+2020-07-17 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/96186
+ PR target/88713
+ * gcc.target/i386/pr88713-3.c: New test.
+
+2020-07-17 Tamar Christina <tamar.christina@arm.com>
+
+ * gcc.target/aarch64/cpunative/aarch64-cpunative.exp: New test.
+ * gcc.target/aarch64/cpunative/info_0: New test.
+ * gcc.target/aarch64/cpunative/info_1: New test.
+ * gcc.target/aarch64/cpunative/info_10: New test.
+ * gcc.target/aarch64/cpunative/info_11: New test.
+ * gcc.target/aarch64/cpunative/info_12: New test.
+ * gcc.target/aarch64/cpunative/info_13: New test.
+ * gcc.target/aarch64/cpunative/info_14: New test.
+ * gcc.target/aarch64/cpunative/info_15: New test.
+ * gcc.target/aarch64/cpunative/info_2: New test.
+ * gcc.target/aarch64/cpunative/info_3: New test.
+ * gcc.target/aarch64/cpunative/info_4: New test.
+ * gcc.target/aarch64/cpunative/info_5: New test.
+ * gcc.target/aarch64/cpunative/info_6: New test.
+ * gcc.target/aarch64/cpunative/info_7: New test.
+ * gcc.target/aarch64/cpunative/info_8: New test.
+ * gcc.target/aarch64/cpunative/info_9: New test.
+ * gcc.target/aarch64/cpunative/native_cpu_0.c: New test.
+ * gcc.target/aarch64/cpunative/native_cpu_1.c: New test.
+ * gcc.target/aarch64/cpunative/native_cpu_10.c: New test.
+ * gcc.target/aarch64/cpunative/native_cpu_11.c: New test.
+ * gcc.target/aarch64/cpunative/native_cpu_12.c: New test.
+ * gcc.target/aarch64/cpunative/native_cpu_13.c: New test.
+ * gcc.target/aarch64/cpunative/native_cpu_14.c: New test.
+ * gcc.target/aarch64/cpunative/native_cpu_15.c: New test.
+ * gcc.target/aarch64/cpunative/native_cpu_2.c: New test.
+ * gcc.target/aarch64/cpunative/native_cpu_3.c: New test.
+ * gcc.target/aarch64/cpunative/native_cpu_4.c: New test.
+ * gcc.target/aarch64/cpunative/native_cpu_5.c: New test.
+ * gcc.target/aarch64/cpunative/native_cpu_6.c: New test.
+ * gcc.target/aarch64/cpunative/native_cpu_7.c: New test.
+ * gcc.target/aarch64/cpunative/native_cpu_8.c: New test.
+ * gcc.target/aarch64/cpunative/native_cpu_9.c: New test.
+
+2020-07-17 Tamar Christina <tamar.christina@arm.com>
+
+ * lib/gcc-dg.exp (dg-set-compiler-env-var, dg-set-target-env-var): Add
+ verbose output.
+
+2020-07-17 Andrew Pinski <apinksi@marvell.com>
+ Dmitrij Pochepko <dmitrij.pochepko@bell-sw.com>
+
+ PR target/93720
+ * gcc.target/aarch64/vins-1.c: New test.
+ * gcc.target/aarch64/vins-2.c: New test.
+ * gcc.target/aarch64/vins-3.c: New test.
+
+2020-07-17 Andrew Pinski <apinksi@marvell.com>
+ Dmitrij Pochepko <dmitrij.pochepko@bell-sw.com>
+
+ PR target/82199
+ * gcc.target/aarch64/vdup_n_3.c: New test.
+ * gcc.target/aarch64/vzip_1.c: New test.
+ * gcc.target/aarch64/vzip_2.c: New test.
+ * gcc.target/aarch64/vzip_3.c: New test.
+ * gcc.target/aarch64/vzip_4.c: New test.
+
+2020-07-17 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ PR target/96127
+ * gcc.target/s390/pr96127.c: New test.
+
+2020-07-17 Kewen Lin <linkw@linux.ibm.com>
+
+ * gcc.target/powerpc/conv-vectorize-1.c: Add option
+ -fno-vect-cost-model.
+ * gcc.target/powerpc/conv-vectorize-2.c: Likewise.
+
+2020-07-16 Julian Brown <julian@codesourcery.com>
+ Thomas Schwinge <thomas@codesourcery.com>
+
+ * gfortran.dg/goacc/attach-descriptor.f90: New test.
+
+2020-07-16 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95591
+ PR c++/95599
+ PR c++/95823
+ PR c++/95824
+ PR c++/95895
+ * g++.dg/coroutines/pr95591.C: New test.
+ * g++.dg/coroutines/pr95599.C: New test.
+ * g++.dg/coroutines/pr95823.C: New test.
+ * g++.dg/coroutines/pr95824.C: New test.
+
+2020-07-16 Jonathan Wakely <jwakely@redhat.com>
+
+ PR testsuite/96014
+ * g++.dg/analyzer/pr94028.C: Replace dynamic exception
+ specification with noexcept-specifier for C++11 and later.
+
+2020-07-16 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/96189
+ * gcc.target/i386/pr96189-1.c: New test.
+
+2020-07-16 Marek Polacek <polacek@redhat.com>
+
+ DR 188
+ * g++.dg/DRs/dr188.C: New test.
+
+2020-07-15 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/96189
+ * gcc.target/i386/pr96189.c: New test.
+
+2020-07-15 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/parse/pragma-recovery.C: New.
+
+2020-07-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/96174
+ * gcc.target/i386/avx512f-vcmppd-3.c: New test.
+ * gcc.target/i386/avx512f-vcmpps-3.c: New test.
+
+2020-07-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/96176
+ * gcc.target/i386/pr96176.c: New test.
+
+2020-07-14 Marek Polacek <polacek@redhat.com>
+
+ PR c++/59978
+ * g++.dg/cpp0x/vt-59978.C: New test.
+
+2020-07-14 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/95443
+ * gcc.target/i386/pr95443-1.c (simple_strstr): Replace
+ __glibc_unlikely with __builtin_expect.
+
+2020-07-14 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95789
+ PR c++/96104
+ PR c++/96179
+ * g++.dg/conversion/ref4.C: New test.
+ * g++.dg/conversion/ref5.C: New test.
+ * g++.dg/conversion/ref6.C: New test.
+
+2020-07-14 Lewis Hyatt <lhyatt@gmail.com>
+
+ PR preprocessor/49973
+ PR other/86904
+ * c-c++-common/Wmisleading-indentation-3.c: Adjust expected output
+ for new defaults.
+ * c-c++-common/Wmisleading-indentation.c: Likewise.
+ * c-c++-common/diagnostic-format-json-1.c: Likewise.
+ * c-c++-common/diagnostic-format-json-2.c: Likewise.
+ * c-c++-common/diagnostic-format-json-3.c: Likewise.
+ * c-c++-common/diagnostic-format-json-4.c: Likewise.
+ * c-c++-common/diagnostic-format-json-5.c: Likewise.
+ * c-c++-common/missing-close-symbol.c: Likewise.
+ * g++.dg/diagnostic/bad-binary-ops.C: Likewise.
+ * g++.dg/parse/error4.C: Likewise.
+ * g++.old-deja/g++.brendan/crash11.C: Likewise.
+ * g++.old-deja/g++.pt/overload2.C: Likewise.
+ * g++.old-deja/g++.robertl/eb109.C: Likewise.
+ * gcc.dg/analyzer/malloc-paths-9.c: Likewise.
+ * gcc.dg/bad-binary-ops.c: Likewise.
+ * gcc.dg/format/branch-1.c: Likewise.
+ * gcc.dg/format/pr79210.c: Likewise.
+ * gcc.dg/plugin/diagnostic-test-expressions-1.c: Likewise.
+ * gcc.dg/plugin/diagnostic-test-string-literals-1.c: Likewise.
+ * gcc.dg/redecl-4.c: Likewise.
+ * gfortran.dg/diagnostic-format-json-1.F90: Likewise.
+ * gfortran.dg/diagnostic-format-json-2.F90: Likewise.
+ * gfortran.dg/diagnostic-format-json-3.F90: Likewise.
+ * go.dg/arrayclear.go: Add a comment explaining why adding a
+ comment was necessary to work around a dejagnu bug.
+ * c-c++-common/diagnostic-units-1.c: New test.
+ * c-c++-common/diagnostic-units-2.c: New test.
+ * c-c++-common/diagnostic-units-3.c: New test.
+ * c-c++-common/diagnostic-units-4.c: New test.
+ * c-c++-common/diagnostic-units-5.c: New test.
+ * c-c++-common/diagnostic-units-6.c: New test.
+ * c-c++-common/diagnostic-units-7.c: New test.
+ * c-c++-common/diagnostic-units-8.c: New test.
+
+2020-07-14 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/goacc/finalize-1.f: Relax scan-tree-dump-times
+ pattern to work on 32bit-pointer systems.
+
+2020-07-14 David Edelsohn <dje.gcc@gmail.com>
+
+ * g++.dg/ipa/pr83667.C: Allow 0 or more dots between THUNK and 0.
+
+2020-07-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/96194
+ * g++.dg/opt/pr96194.C: New test.
+
+2020-07-14 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95820
+ * g++.dg/cpp1y/auto-fn58.C: New test.
+
+2020-07-14 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/95612
+ * gfortran.dg/pr95612.f90: New test.
+
+2020-07-14 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/goacc/finalize-1.f: Update dump scan pattern.
+ * gfortran.dg/gomp/map-1.f90: Update dg-error.
+ * gfortran.dg/gomp/map-2.f90: New test.
+
+2020-07-14 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/96038
+ * gfortran.dg/pr96038.f90: New test.
+
+2020-07-13 Aaron Sawdey <acsawdey@linux.ibm.com>
+
+ * lib/target-supports.exp (is-effective-target):
+ Reorder to put powerpc stuff together.
+ (is-effective-target-keyword): Add power10_hw.
+
+2020-07-13 Nathan Sidwell <nathan@acm.org>
+
+ * lib/scanlang.exp (scan-lang-dump): Fix breakage.
+ (scan-lang-dump-times, scan-lang-dump-not): New.
+
+2020-07-13 Aaron Sawdey <acsawdey@linux.ibm.com>
+
+ * lib/target-supports.exp (check_ppc_mma_hw_available):
+ New function.
+ (is-effective-target): Add ppc_mma_hw.
+ (is-effective-target-keyword): Add ppc_mma_hw.
+ * gcc.target/powerpc/mma-supported.c: New file.
+ * gcc.target/powerpc/mma-single-test.c: Require ppc_mma_hw.
+ * gcc.target/powerpc/mma-double-test.c: Require ppc_mma_hw.
+
+2020-07-13 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/95443
+ * gcc.target/i386/pr95443-1.c: New test.
+ * gcc.target/i386/pr95443-2.c: Likewise.
+
+2020-07-13 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95288
+ * g++.dg/diagnostic/enum2.C: New test.
+
+2020-07-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR ipa/96130
+ * gcc.dg/torture/pr96130.c: New test.
+
+2020-07-13 Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/45337
+ * gfortran.dg/pr45337_1.f90: New test.
+ * gfortran.dg/pr45337_2.f90: New test.
+
+2020-07-13 Marek Polacek <polacek@redhat.com>
+
+ PR c++/96077
+ * g++.dg/parse/enum14.C: New test.
+
+2020-07-13 Nathan Sidwell <nathan@acm.org>
+
+ * lib/scanlang.exp (scan-lang-dump-not): Fix 3-arg case.
+
+2020-07-13 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96163
+ * g++.dg/vect/pr96163.cc: New testcase.
+
+2020-07-13 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/95981
+ * gfortran.dg/pr95981.f90: New test.
+
+2020-07-13 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
+ PR target/94891
+ * gcc.target/aarch64/return_address_sign_1.c: Update test.
+ * gcc.target/aarch64/return_address_sign_b_1.c: Likewise.
+
+2020-07-13 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR middle-end/95114
+ * g++.target/aarch64/pr95114.C: New test.
+
+2020-07-13 Julian Brown <julian@codesourcery.com>
+ Thomas Schwinge <thomas@codesourcery.com>
+
+ * gfortran.dg/goacc/finalize-1.f: Update expected dump output.
+
+2020-07-13 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/96180
+ * gcc.dg/torture/pr96133.c: Align global variable.
+
+2020-07-13 Hans-Peter Nilsson <hp@axis.com>
+
+ * gcc.target/cris/pr93372-44.c, gcc.target/cris/pr93372-46.c: New.
+
+2020-07-13 Hans-Peter Nilsson <hp@axis.com>
+
+ PR target/93372
+ * gcc.target/cris/pr93372-45.c: New test.
+
+2020-07-13 Hans-Peter Nilsson <hp@axis.com>
+
+ PR middle-end/94600
+ * gcc.dg/pr94600-1.c, gcc.dg/pr94600-2.c, gcc.dg/pr94600-3.c,
+ gcc.dg/pr94600-4.c, gcc.dg/pr94600-5.c, gcc.dg/pr94600-6.c,
+ gcc.dg/pr94600-7.c, gcc.dg/pr94600-8.c: New tests.
+
+2020-07-13 Xionghu Luo <luoxhu@linux.ibm.com>
+
+ * gcc.target/powerpc/vector_float.c: New test.
+
+2020-07-12 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/93492
+ * gcc.target/i386/pr93492-1.c: Require Linux target.
+ * gcc.target/i386/pr93492-2.c: Likewise.
+ * gcc.target/i386/pr93492-3.c: Likewise.
+ * gcc.target/i386/pr93492-4.c: Likewise.
+ * gcc.target/i386/pr93492-5.c: Likewise.
+
+2020-07-11 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/96073
+ * gfortran.dg/interface_48.f90: New test.
+
+2020-07-11 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR tree-optimization/96146
+ * gcc.target/aarch64/sve/acle/general/pr96146.c: New test.
+
+2020-07-11 Simon Cook <simon.cook@embecosm.com>
+
+ * gcc.target/riscv/read-thread-pointer.c: Fix escaping on
+ regular expression.
+
+2020-07-10 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/c11-bool-limits-1.c, gcc.dg/c2x-bool-limits-1.c: New
+ tests.
+
+2020-07-10 Rajalakshmi Srinivasaraghavan <rajis@linux.vnet.ibm.com>
+ Aaron Sawdey <acsawdey@linux.ibm.com>
+
+ * gcc.target/powerpc/p10-identify.c: New file.
+ * gcc.target/powerpc/p10-arch31.c: New file.
+ * gcc.target/powerpc/mma-single-test.c: New file.
+ * gcc.target/powerpc/mma-double-test.c: New file.
+
+2020-07-10 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95980
+ * gfortran.dg/pr95980_2.f90: New file.
+
+2020-07-10 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/96086
+ * gfortran.dg/pr96086.f90: New file.
+
+2020-07-10 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/92789
+ PR target/95726
+ * g++.target/arm/pr95726.C: New test.
+
+2020-07-10 Carl Love <cel@us.ibm.com>
+
+ * gcc.target/powerpc/vsx_mask-count-runnable.c: New test case.
+ * gcc.target/powerpc/vsx_mask-expand-runnable.c: New test case.
+ * gcc.target/powerpc/vsx_mask-extract-runnable.c: New test case.
+ * gcc.target/powerpc/vsx_mask-move-runnable.c: New test case.
+
+2020-07-10 Martin Liska <mliska@suse.cz>
+
+ PR gcov-profile/96148
+ * lib/scanwpaipa.exp: Fix wpa dump file suffix the same way
+ as other in the file.
+
+2020-07-10 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp2a/nontype-class-union1.C: New test.
+
+2020-07-10 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/pr81246.C: No error in C++20.
+ * g++.dg/cpp0x/variadic74.C: No error in C++20.
+ * g++.dg/cpp1z/nontype-auto3.C: No error in C++20.
+ * g++.dg/template/crash106.C: No error in C++20.
+ * g++.dg/template/crash119.C: No error in C++20.
+ * g++.dg/template/nontype12.C: No error in C++20.
+ * g++.dg/template/void3.C: Don't require follow-on message.
+ * g++.dg/template/void7.C: Don't require follow-on message.
+ * g++.dg/template/void9.C: Don't require follow-on message.
+ * g++.dg/cpp2a/nontype-class-equiv1.C: New file.
+
+2020-07-10 Jason Merrill <jason@redhat.com>
+
+ PR c++/96105
+ PR c++/96052
+ PR c++/95976
+ * g++.dg/cpp2a/no_unique_address4.C: New test.
+ * g++.dg/cpp2a/no_unique_address5.C: New test.
+ * g++.dg/cpp2a/no_unique_address6.C: New test.
+
+2020-07-10 Andrea Corallo <andrea.corallo@arm.com>
+ Mihail-Calin Ionescu <mihail.ionescu@arm.com>
+ Iain Apreotesei <iain.apreotesei@arm.com>
+
+ * gcc.target/arm/lob.h: New header.
+ * gcc.target/arm/lob1.c: New testcase.
+ * gcc.target/arm/lob2.c: Likewise.
+ * gcc.target/arm/lob3.c: Likewise.
+ * gcc.target/arm/lob4.c: Likewise.
+ * gcc.target/arm/lob5.c: Likewise.
+ * gcc.target/arm/lob6.c: Likewise.
+ * gcc.target/arm/unsigned-extend-2.c: Do not run when generating
+ low loop overhead.
+ * gcc.target/arm/ivopts.c: Fix check for low loop overhead.
+ * lib/target-supports.exp (check_effective_target_arm_v8_1_lob)
+ (check_effective_target_arm_thumb2_ok_no_arm_v8_1_lob): New procs.
+
+2020-07-10 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96133
+ * gcc.dg/torture/pr96133.c: New testcase.
+
+2020-07-10 Cui,Lili <lili.cui@intel.com>
+
+ * gcc.target/i386/funcspec-56.inc: Handle new march.
+ * g++.target/i386/mv16.C: Handle new march
+
+2020-07-09 Julian Brown <julian@codesourcery.com>
+ Thomas Schwinge <thomas@codesourcery.com>
+
+ PR middle-end/95270
+ * c-c++-common/goacc/mdc-1.c: Update expected dump output for zero
+ bias.
+
+2020-07-09 Julian Brown <julian@codesourcery.com>
+
+ * gfortran.dg/goacc/mapping-tests-3.f90: New test.
+ * gfortran.dg/goacc/mapping-tests-4.f90: New test.
+
+2020-07-09 Peter Bergner <bergner@linux.ibm.com>
+
+ PR target/96125
+ * gcc.target/powerpc/pr96125.c: New test.
+
+2020-07-09 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/96132
+ * g++.dg/template/incomplete12.C: New test.
+
+2020-07-09 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/88713
+ * gcc.target/i386/pr88713-1.c: New test.
+ * gcc.target/i386/pr88713-2.c: Likewise.
+
+2020-07-09 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-10.c: Adjust.
+ * gcc.dg/vect/slp-45.c: Likewise.
+ * gcc.dg/vect/vect-109.c: Likewise.
+
+2020-07-09 Bin Cheng <bin.cheng@linux.alibaba.com>
+
+ PR tree-optimization/95804
+ * gcc.dg/tree-ssa/pr95804.c: New test.
+
+2020-07-09 Omar Tahir <omar.tahir@arm.com>
+
+ * gcc.target/aarch64/nospill.c: New test.
+
+2020-07-09 Matthew Malcomson <matthew.malcomson@arm.com>
+
+ * gcc.target/aarch64/sls-mitigation/sls-miti-blr-bti.c: New test.
+ * gcc.target/aarch64/sls-mitigation/sls-miti-blr.c: New test.
+
+2020-07-09 Matthew Malcomson <matthew.malcomson@arm.com>
+
+ * gcc.target/aarch64/sls-mitigation/sls-miti-retbr.c: New test.
+ * gcc.target/aarch64/sls-mitigation/sls-miti-retbr-pacret.c:
+ New test.
+ * gcc.target/aarch64/sls-mitigation/sls-mitigation.exp: New file.
+ * lib/target-supports.exp (check_effective_target_aarch64_asm_sb_ok):
+ New proc.
+
+2020-07-09 Kewen Lin <linkw@linux.ibm.com>
+
+ * gcc.target/aarch64/sve/clastb_1.c: Update dumping string.
+ * gcc.target/aarch64/sve/clastb_2.c: Likewise.
+ * gcc.target/aarch64/sve/clastb_3.c: Likewise.
+ * gcc.target/aarch64/sve/clastb_4.c: Likewise.
+ * gcc.target/aarch64/sve/clastb_5.c: Likewise.
+ * gcc.target/aarch64/sve/clastb_6.c: Likewise.
+ * gcc.target/aarch64/sve/clastb_7.c: Likewise.
+
+2020-07-09 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.target/riscv/read-thread-pointer.c: New.
+
+2020-07-09 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.target/riscv/save-restore-9.c: New.
+
+2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/sso-11.c: New test.
+ * gcc.dg/sso/sso.exp: Pass -Wno-scalar-storage-order.
+ * gcc.dg/sso/memcpy-1.c: New test.
+
+2020-07-08 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/96085
+ * gfortran.dg/pr96085.f90: New file.
+
+2020-07-08 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/95497
+ * g++.dg/cpp2a/concepts-pr95497.C: New test.
+
+2020-07-08 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ * gcc.target/powerpc/builtins-msum-runnable.c: New test.
+ * gcc.target/powerpc/vsx-builtin-msum.c: New test.
+
+2020-07-08 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR middle-end/95694
+ * gcc.dg/pr95694.c: New test.
+
+2020-07-08 Marek Polacek <polacek@redhat.com>
+
+ PR c++/96103
+ * g++.dg/cpp0x/decltype77.C: New test.
+
+2020-07-07 Marek Polacek <polacek@redhat.com>
+
+ PR c++/92427
+ * g++.dg/ext/flexary37.C: New test.
+
+2020-07-07 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/95303
+ * g++.dg/concepts/diagnostic14.C: New test.
+
+2020-07-07 Aaron Sawdey <acsawdey@linux.ibm.com>
+
+ * lib/target-supports.exp (check_power10_hw_available):
+ Return 0 for passing test.
+
+2020-07-07 Nathan Sidwell <nathan@acm.org>
+
+ * c-c++-common/cpp/pragma-eof.c: New
+
+2020-07-07 Nathan Sidwell <nathan@acm.org>
+
+ * c-c++-common/cpp/line-2.c: New.
+ * c-c++-common/cpp/line-2.h: New.
+ * c-c++-common/cpp/line-3.c: New.
+ * c-c++-common/cpp/line-4.c: New.
+ * c-c++-common/cpp/line-4.h: New.
+
+2020-07-07 Martin Sebor <msebor@redhat.com>
+
+ PR c++/96063
+ * g++.dg/warn/Wmismatched-tags-7.C: New test.
+ * g++.dg/warn/Wmismatched-tags-8.C: New test.
+
+2020-07-07 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/slp-47.c: New testcase.
+ * gcc.dg/vect/slp-48.c: Likewise.
+
+2020-07-06 Martin Sebor <msebor@redhat.com>
+
+ PR c++/95984
+ * g++.dg/warn/Wnonnull6.C: New test.
+
+2020-07-06 Nathan Sidwell <nathan@acm.org>
+
+ * g++.dg/eh/builtin10.C: Adjust expected errors.
+ * g++.dg/eh/builtin11.C: Likewise.
+ * g++.dg/eh/builtin5.C: Likewise.
+ * g++.dg/eh/builtin6.C: Likewise.
+ * g++.dg/eh/builtin7.C: Likewise.
+ * g++.dg/eh/builtin9.C: Likewise.
+ * g++.dg/parse/crash55.C: Likewise.
+
+2020-07-06 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95980
+ * gfortran.dg/pr95980.f90: New file.
+
+2020-07-06 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95709
+ * gfortran.dg/pr95709.f90: New file.
+
+2020-07-06 Jonathan Wakely <jwakely@redhat.com>
+
+ * g++.old-deja/g++.bugs/900404_04.C: Add c++98_only selector to
+ dg-error for extra ';'.
+ * g++.old-deja/g++.law/missed-error2.C: Likewise.
+
+2020-07-06 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96075
+ * gcc.dg/vect/slp-46.c: New testcase.
+
+2020-07-06 Roger Sayle <roger@nextmovesoftware.com>
+
+ * gcc.target/nvptx/vadd_add.c: New test.
+ * gcc.target/nvptx/vsub_add.c: New test.
+
+2020-07-06 Hans-Peter Nilsson <hp@axis.com>
+
+ * gcc.target/cris/peep2-movulsr.c: New test.
+
+2020-07-05 Hans-Peter Nilsson <hp@axis.com>
+
+ * gcc.target/cris/pr93372-39.c: New test.
+
+2020-07-05 Hans-Peter Nilsson <hp@axis.com>
+
+ * gcc.target/cris/pr93372-36.c, gcc.target/cris/pr93372-37.c,
+ gcc.target/cris/pr93372-38.c: New tests.
+
+2020-07-05 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/27318
+ * gfortran.dg/error_recovery_1.f90: Adjust test case.
+ * gfortran.dg/use_15.f90: Likewise.
+ * gfortran.dg/interface_47.f90: New test.
+
+2020-07-04 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/pr9xxxx-mismatched-traits-and-promise-prev.C: Moved to...
+ * g++.dg/coroutines/pr94760-mismatched-traits-and-promise-prev.C: ...here.
+
+2020-07-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt87.adb: New test.
+ * gnat.dg/opt87_pkg.ads: New helper.
+ * gnat.dg/opt87_pkg.adb: Likewise.
+
+2020-07-03 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/96040
+ * gcc.dg/ipa/pr96040.c: New test.
+
+2020-07-03 Roger Sayle <roger@nextmovesoftware.com>
+
+ * gcc.target/nvptx/popc-1.c: New test.
+ * gcc.target/nvptx/popc-2.c: New test.
+ * gcc.target/nvptx/popc-3.c: New test.
+ * gcc.target/nvptx/mul-wide.c: New test.
+ * gcc.target/nvptx/umul-wide.c: New test.
+
+2020-07-03 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp-2.c: New
+ testcase.
+
+2020-07-03 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.dg/fixits-pr84852-1.c: Enclose negative line number in braces.
+ * gcc.dg/fixits-pr84852-2.c: Same.
+ * gcc.dg/pr89410-1.c: Same.
+ * gcc.dg/pr89410-2.c: Same.
+
+2020-07-02 David Edelsohn <dje.gcc@gmail.com>
+
+ * gfortran.dg/pr95690.f90: Solaris error appears on line 5.
+
+2020-07-02 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.dg/pr26570.c: dg-prune function not inlinable warning.
+
+2020-07-02 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/93423
+ * gfortran.dg/pr93423.f90: New file.
+
+2020-07-02 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/93337
+ * gfortran.dg/pr93337.f90: New file.
+
+2020-07-02 Jason Merrill <jason@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ * g++.dg/cpp2a/consteval-virtual1.C: New test.
+ * g++.dg/cpp2a/consteval-virtual2.C: New test.
+ * g++.dg/cpp2a/consteval-virtual3.C: New test.
+ * g++.dg/cpp2a/consteval-virtual4.C: New test.
+ * g++.dg/cpp2a/consteval-virtual5.C: New test.
+
+2020-07-02 Martin Jambor <mjambor@suse.cz>
+
+ PR debug/95343
+ * gcc.dg/guality/pr95343.c: New test.
+
+2020-07-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/95857
+ * gcc.dg/pr95857.c: New test.
+
+2020-07-02 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/96022
+ * g++.dg/vect/pr96022.cc: New testcase.
+
+2020-07-02 Felix Yang <felix.yang@huawei.com>
+
+ PR tree-optimization/95961
+ * gcc.target/aarch64/sve/pr95961.c: New test.
+
+2020-07-02 Jakub Jelinek <jakub@redhat.com>
+
+ * c-c++-common/gomp/loop-7.c: New test.
+
+2020-07-02 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/95584
+ * gfortran.dg/pr95584.f90: New test.
+
+2020-07-02 Kewen Lin <linkw@linux.ibm.com>
+
+ * g++.dg/vect/slp-pr56812.cc: Ignore line number for basic block
+ vectorization messages.
+
+2020-07-01 Omar Tahir <omar.tahir@arm.com>
+
+ * gcc.target/aarch64/bti-4.c: New test.
+
+2020-07-01 Jeff Law <law@redhat.com>
+
+ PR tree-optimization/94882
+ * gcc.dg/tree-ssa/pr94882.c: New test.
+ * gcc.dg/tree-ssa/pr94882-1.c: New test.
+ * gcc.dg/tree-ssa/pr94882-2.c: New test.
+ * gcc.dg/tree-ssa/pr94882-3.c: New test.
+
+2020-07-01 Jonathan Wakely <jwakely@redhat.com>
+
+ PR testsuite/96014
+ * g++.dg/analyzer/pr94028.C: Make operator new non-throwing so
+ that the compiler doesn't implicitly mark it as returning
+ non-null.
+
+2020-07-01 David Edelsohn <dje.gcc@gmail.com>
+
+ * gfortran.dg/pr95690.f90: Adjust dg-error line number.
+
+2020-07-01 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/direct-move-double1.c: Require lp64.
+ * gcc.target/powerpc/direct-move-float1.c: Same.
+ * gcc.target/powerpc/direct-move-float3.c: Same.
+ * gcc.target/powerpc/direct-move-vint1.c: Same.
+ * gcc.target/powerpc/vsx-vector-5.c: Same.
+ * gcc.target/powerpc/vsx-vector-6.p7.c: Same.
+ * gcc.target/powerpc/vsx-vector-6.p8.c: Same.
+ * gcc.target/powerpc/vsx-vector-6.p9.c: Same.
+
+2020-07-01 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/aarch64/get_fpcr64_1.c: New test.
+ * gcc.target/aarch64/set_fpcr64_1.c: New test.
+ * gcc.target/aarch64/get_fpsr64_1.c: New test.
+ * gcc.target/aarch64/set_fpsr64_1.c: New test.
+
+2020-07-01 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/95446
+ * gfortran.dg/elemental_optional_args_6.f90: Remove check
+ for warnings that were erroneously output.
+ * gfortran.dg/pr95446.f90: New test.
+
+2020-07-01 Christophe Lyon <christophe.lyon@linaro.org>
+
+ PR target/94743
+ * gcc.target/arm/handler-align.c: Add -mgeneral-regs-only.
+
+2020-07-01 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95839
+ * gcc.dg/vect/bb-slp-pr95839-2.c: New testcase.
+
+2020-07-01 Martin Liska <mliska@suse.cz>
+
+ * g++.dg/gcov/loop.C: Use -H option instead of -j option.
+
+2020-07-01 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/95829
+ * gfortran.dg/pr95829.f90: New test.
+
+2020-07-01 Christophe Lyon <christophe.lyon@linaro.org>
+
+ PR target/94743
+ * gcc.target/arm/pr94743-1-hard.c: Add missing quotes in expected
+ warning.
+ * gcc.target/arm/pr94743-1-softfp.c: Likewise.
+
+2020-07-01 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.target/riscv/attribute-13.c: New.
+
+2020-07-01 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/direct-move-double1.c: Remove lp64 requirement.
+ * gcc.target/powerpc/direct-move-double2.c: Same.
+ * gcc.target/powerpc/direct-move-float1.c: Same.
+ * gcc.target/powerpc/direct-move-float2.c: Same.
+ * gcc.target/powerpc/direct-move-float3.c: Same.
+ * gcc.target/powerpc/direct-move-vint1.c: Same.
+ * gcc.target/powerpc/direct-move-vint2.c: Same.
+ * gcc.target/powerpc/direct-move-long1.c: Remove linux requirement..
+ * gcc.target/powerpc/direct-move-long2.c: Same.
+
+2020-07-01 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/20030218-1.c: Delete.
+ * gcc.target/powerpc/20030505.c: Delete.
+ * gcc.target/powerpc/20081204-1.c: Delete.
+ * gcc.target/powerpc/bcd-1.c: Remove dg-skip-if SPE.
+ * gcc.target/powerpc/bcd-2.c: Same.
+ * gcc.target/powerpc/bcd-3.c: Same.
+ * gcc.target/powerpc/direct-move-double1.c: Same.
+ * gcc.target/powerpc/direct-move-double2.c: Same.
+ * gcc.target/powerpc/direct-move-float1.c: Same.
+ * gcc.target/powerpc/direct-move-float2.c: Same.
+ * gcc.target/powerpc/direct-move-float3.c: Same.
+ * gcc.target/powerpc/direct-move-long1.c: Same.
+ * gcc.target/powerpc/direct-move-long2.c: Same.
+ * gcc.target/powerpc/direct-move-vint1.c: Same.
+ * gcc.target/powerpc/direct-move-vint2.c: Same.
+ * gcc.target/powerpc/extend-divide-1.c: Same.
+ * gcc.target/powerpc/extend-divide-2.c: Same.
+ * gcc.target/powerpc/pack01.c: Same.
+ * gcc.target/powerpc/pack02.c: Same.
+ * gcc.target/powerpc/pack03.c: Same.
+ * gcc.target/powerpc/pr52457.c: Same.
+ * gcc.target/powerpc/pr88845.c: Same.
+ * gcc.target/powerpc/quad-atomic.c: Same.
+ * gcc.target/powerpc/recip-6.c: Same.
+ * gcc.target/powerpc/recip-7.c: Same.
+
+2020-07-01 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/p8vector-int128-1.c: Require int128 not lp64.
+ * gcc.target/powerpc/p8vector-int128-2.c: Same.
+
+2020-07-01 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/pr90763.c: Adjust requirements.
+ * gcc.target/powerpc/vsx-vector-1.c: Same.
+ * gcc.target/powerpc/vsx-vector-2.c: Same.
+ * gcc.target/powerpc/vsx-vector-3.c: Same.
+ * gcc.target/powerpc/vsx-vector-4.c: Same.
+ * gcc.target/powerpc/vsx-vector-5.c: Same.
+ * gcc.target/powerpc/vsx-vector-6.p7.c: Same.
+ * gcc.target/powerpc/vsx-vector-6.p8.c: Same.
+ * gcc.target/powerpc/vsx-vector-6.p9.c: Same.
+ * gcc.target/powerpc/vsx-vector-abss.c: Same.
+ * gcc.target/powerpc/vsx-vectorize-1.c: Same.
+ * gcc.target/powerpc/vsx-vectorize-2.c: Same.
+ * gcc.target/powerpc/vsx-vectorize-3.c: Same.
+ * gcc.target/powerpc/vsx-vectorize-4.c: Same.
+ * gcc.target/powerpc/vsx-vectorize-5.c: Same.
+ * gcc.target/powerpc/vsx-vectorize-6.c: Same.
+ * gcc.target/powerpc/vsx-vectorize-7.c: Same.
+ * gcc.target/powerpc/vsx-vectorize-8.c: Same.
+
+2020-07-01 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/ppc-spe.c: Delete.
+ * gcc.target/powerpc/ppc-spe64-1.c: Delete.
+ * gcc.target/powerpc/pr60102.c: Delete.
+ * gcc.target/powerpc/pr60158.c: Delete.
+ * gcc.target/powerpc/pr60735.c: Delete.
+ * gcc.target/powerpc/pr78458.c: Delete.
+ * gcc.target/powerpc/pr80343.c: Delete.
+ * gcc.target/powerpc/spe-evmerge.c: Delete.
+ * gcc.target/powerpc/spe-small-data-1.c: Delete.
+ * gcc.target/powerpc/spe-small-data-2.c: Delete.
+ * gcc.target/powerpc/spe-unwind-1.c: Delete.
+ * gcc.target/powerpc/spe-vector-memcpy.c: Delete.
+ * gcc.target/powerpc/spe-vector-memset.c: Delete.
+ * gcc.target/powerpc/spe1.c: Delete.
+
+2020-06-30 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/builtins-2-p9-runnable.c: lp64 to int128.
+ * gcc.target/powerpc/builtins-6-p9-runnable.c: Same.
+ * gcc.target/powerpc/builtins-6-runnable.c: Same.
+ * gcc.target/powerpc/builtins-revb-runnable.c: Same.
+
+2020-06-30 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/88379
+ * gfortran.dg/pr88379.f90: New file.
+
+2020-06-30 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/92789
+ PR target/95726
+ * g++.target/aarch64/pr95726.C: New test.
+
+2020-06-30 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/builtins-1-p9-runnable.c: Fix target requirements.
+ * gcc.target/powerpc/builtins-1.c: Same.
+ * gcc.target/powerpc/builtins-2-p9-runnable.c: Same.
+ * gcc.target/powerpc/builtins-2.c: Same.
+ * gcc.target/powerpc/builtins-3-p9-runnable.c: Same.
+ * gcc.target/powerpc/builtins-3-p9.c: Same.
+ * gcc.target/powerpc/builtins-3-runnable-p8.c: Same.
+ * gcc.target/powerpc/builtins-3.c: Same.
+ * gcc.target/powerpc/builtins-4-p9-runnable.c: Same.
+ * gcc.target/powerpc/builtins-4.c: Same.
+ * gcc.target/powerpc/builtins-5-p9-runnable.c: Same.
+ * gcc.target/powerpc/builtins-5.c: Same.
+ * gcc.target/powerpc/builtins-6-p9-runnable.c: Same.
+ * gcc.target/powerpc/builtins-6-runnable.c: Same.
+ * gcc.target/powerpc/builtins-7-p9-runnable.c: Same.
+ * gcc.target/powerpc/builtins-7-runnable.c: Same.
+ * gcc.target/powerpc/builtins-8-p9-runnable.c: Same.
+ * gcc.target/powerpc/builtins-8-runnable.c: Same.
+ * gcc.target/powerpc/cpu-builtin-1.c: Same.
+ * gcc.target/powerpc/float128-fma1.c: Same.
+ * gcc.target/powerpc/float128-hw.c: Same.
+ * gcc.target/powerpc/float128-hw10.c: Same.
+ * gcc.target/powerpc/float128-hw11.c: Same.
+ * gcc.target/powerpc/float128-hw2.c: Same.
+ * gcc.target/powerpc/float128-hw3.c: Same.
+ * gcc.target/powerpc/float128-hw4.c: Same.
+ * gcc.target/powerpc/float128-hw5.c: Same.
+ * gcc.target/powerpc/float128-hw6.c: Same.
+ * gcc.target/powerpc/float128-hw7.c: Same.
+ * gcc.target/powerpc/float128-hw8.c: Same.
+ * gcc.target/powerpc/float128-hw9.c: Same.
+ * gcc.target/powerpc/float128-minmax.c: Same.
+ * gcc.target/powerpc/float128-odd.c: Same.
+ * gcc.target/powerpc/float128-sqrt1.c: Same.
+
+2020-06-30 David Edelsohn <dje.gcc@gmail.com>
+
+ * gfortran.dg/analyzer/pr93993.f90: Expect leak tm warning.
+
+2020-06-30 Thomas Schwinge <thomas@codesourcery.com>
+
+ * lib/scanoffload.exp (scoff) <offload_targets>: Skip HSA.
+
+2020-06-30 Christophe Lyon <christophe.lyon@linaro.org>
+
+ PR target/94743
+ * gcc.misc-tests/arm-isr.c: Add -mgeneral-regs-only.
+ * gcc.target/arm/empty_fiq_handler.c: Add -mgeneral-regs-only.
+ * gcc.target/arm/interrupt-1.c: Add -mgeneral-regs-only.
+ * gcc.target/arm/interrupt-2.c: Add -mgeneral-regs-only.
+ * gcc.target/arm/pr70830.c: Add -mgeneral-regs-only.
+ * gcc.target/arm/pr94743-1-hard.c: New test.
+ * gcc.target/arm/pr94743-1-soft.c: New test.
+ * gcc.target/arm/pr94743-1-softfp.c: New test.
+ * gcc.target/arm/pr94743-2.c: New test.
+ * gcc.target/arm/pr94743-3.c: New test.
+
+2020-06-30 Yang Yang <yangyang305@huawei.com>
+
+ PR tree-optimization/95855
+ * gcc.dg/tree-ssa/split-path-12.c: New testcase.
+
+2020-06-30 David Edelsohn <dje.gcc@gmail.com>
+
+ * g++.dg/cpp0x/constexpr-is_literal.C: Limit test to -std=c++14.
+
+2020-06-30 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/95355
+ * gfortran.dg/select_type_49.f90: New file.
+
+2020-06-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/95963
+ * g++.dg/cpp1z/launder9.C: New test.
+
+2020-06-29 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95978
+ * gfortran.dg/pr95978.f90: New file.
+
+2020-06-29 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/95743
+ * gfortran.dg/recursive_check_16.f90: New file.
+
+2020-06-29 David Edelsohn <dje.gcc@gmail.com>
+
+ * gfortran.dg/char4-subscript.f90: Simplify regex.
+ Accept big endian or little endian output.
+
+2020-06-29 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94553
+ * g++.dg/cpp1y/pr68578.C: Adjust dg-error.
+ * g++.dg/cpp1y/var-templ66.C: New test.
+ * g++.dg/cpp2a/concepts-redecl1.C: New test.
+
+2020-06-29 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95568
+ * g++.dg/cpp2a/class-deduction-aggr5.C: New test.
+ * g++.dg/cpp2a/class-deduction-aggr6.C: New test.
+
+2020-06-29 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/71706
+ * gfortran.dg/pr71706.f90: New file.
+
+2020-06-29 Martin Liska <mliska@suse.cz>
+
+ PR c++/86568
+ * c-c++-common/builtin-arith-overflow-1.c (generic_3, typed_3_null):
+ Fix coding style.
+
+2020-06-29 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95916
+ * gcc.dg/vect/pr95916.c: New testcase.
+
+2020-06-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/86568
+ * c-c++-common/builtin-arith-overflow-1.c (generic_3, typed_3_null):
+ Adjust dg-warning.
+
+2020-06-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/86568
+ * c-c++-common/builtin-arith-overflow-1.c (generic_3, typed_3_null):
+ Adjust dg-warning.
+
+2020-06-29 Kaipeng Zhou <zhoukaipeng3@huawei.com>
+
+ PR tree-optimization/95854
+ * gcc.dg/pr95854.c: New test.
+
+2020-06-29 Frederik Harwath <frederik@codesourcery.com>
+
+ * lib/scandump.exp (glob-dump-file): New proc.
+ (scan-dump): Use glob-dump-file for file name expansion.
+ (scan-dump-times): Likewise.
+ (scan-dump-dem): Likewise.
+ (scan-dump-dem-not): Likewise.
+
+2020-06-28 Martin Sebor <msebor@redhat.com>
+
+ PR c++/86568
+ * g++.dg/warn/Wnonnull5.C: New test.
+ * c-c++-common/pr28656.c: Adjust text of expected warning.
+ * c-c++-common/pr66208.c: Same.
+ * g++.dg/cpp0x/nullptr22.C: Same.
+ * g++.dg/ext/attr-nonnull.C: Same.
+ * g++.dg/ext/attrib49.C: Same.
+ * g++.dg/pr71973-2.C: Same.
+ * g++.dg/warn/Wnonnull3.C: Same.
+ * g++.dg/warn/Wnonnull4.C: Same.
+ * obj-c++.dg/attributes/method-nonnull-1.mm: Same.
+ * objc.dg/attributes/method-nonnull-1.m: Same.
+
+2020-06-28 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95340
+ * gfortran.dg/pr95340.f90: New file.
+
+2020-06-28 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95711
+ * g++.dg/coroutines/pr95711.C: New test.
+
+2020-06-28 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95880
+ * gfortran.dg/pr95880.f90: New file.
+
+2020-06-28 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95519
+ * g++.dg/coroutines/torture/pr95519-02-final_suspend.C:
+ Amend log messages.
+ * g++.dg/coroutines/torture/pr95519-03-return-value.C:
+ Likewise.
+ * g++.dg/coroutines/torture/pr95519-04-yield-value.C:
+ Likewise.
+ * g++.dg/coroutines/torture/pr95519-05-gro.C: Likewise.
+
+2020-06-28 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/prefix-large-dd.c: Require DFP.
+ * gcc.target/powerpc/prefix-large-sd.c: Require DFP.
+ * gcc.target/powerpc/prefix-large-kf.c: Require float128.
+ * gcc.target/powerpc/prefix-pcrel-dd.c: Require DFP.
+ * gcc.target/powerpc/prefix-pcrel-sd.c: Require DFP.
+ * gcc.target/powerpc/prefix-pcrel-kf.c: Require float128.
+
+2020-06-27 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95881
+ * gfortran.dg/pr95881.f90: New file.
+
+2020-06-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/95903
+ * c-c++-common/pr95903.c: New test.
+
+2020-06-27 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95736
+ * g++.dg/coroutines/pr95736.C: New test.
+
+2020-06-27 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/coro-bad-grooaf-01-grooaf-expected.C: New test.
+
+2020-06-27 Michael Meissner <meissner@linux.ibm.com>
+
+ * gcc.target/powerpc/prefix-add.c: New test.
+ * gcc.target/powerpc/prefix-si-constant.c: New test.
+ * gcc.target/powerpc/prefix-di-constant.c: New test.
+ * gcc.target/powerpc/prefix-ds-dq.c: New test.
+ * gcc.target/powerpc/prefix-no-update.c: New test.
+ * gcc.target/powerpc/prefix-large-dd.c: New test.
+ * gcc.target/powerpc/prefix-large-df.c: New test.
+ * gcc.target/powerpc/prefix-large-di.c: New test.
+ * gcc.target/powerpc/prefix-large-hi.c: New test.
+ * gcc.target/powerpc/prefix-large-kf.c: New test.
+ * gcc.target/powerpc/prefix-large-qi.c: New test.
+ * gcc.target/powerpc/prefix-large-sd.c: New test.
+ * gcc.target/powerpc/prefix-large-sf.c: New test.
+ * gcc.target/powerpc/prefix-large-si.c: New test.
+ * gcc.target/powerpc/prefix-large-udi.c: New test.
+ * gcc.target/powerpc/prefix-large-uhi.c: New test.
+ * gcc.target/powerpc/prefix-large-uqi.c: New test.
+ * gcc.target/powerpc/prefix-large-usi.c: New test.
+ * gcc.target/powerpc/prefix-large-v2df.c: New test.
+ * gcc.target/powerpc/prefix-large.h: Include file for new tests.
+ * gcc.target/powerpc/prefix-pcrel-dd.c: New test.
+ * gcc.target/powerpc/prefix-pcrel-df.c: New test.
+ * gcc.target/powerpc/prefix-pcrel-di.c: New test.
+ * gcc.target/powerpc/prefix-pcrel-hi.c: New test.
+ * gcc.target/powerpc/prefix-pcrel-kf.c: New test.
+ * gcc.target/powerpc/prefix-pcrel-qi.c: New test.
+ * gcc.target/powerpc/prefix-pcrel-sd.c: New test.
+ * gcc.target/powerpc/prefix-pcrel-sf.c: New test.
+ * gcc.target/powerpc/prefix-pcrel-si.c: New test.
+ * gcc.target/powerpc/prefix-pcrel-udi.c: New test.
+ * gcc.target/powerpc/prefix-pcrel-uhi.c: New test.
+ * gcc.target/powerpc/prefix-pcrel-uqi.c: New test.
+ * gcc.target/powerpc/prefix-pcrel-usi.c: New test.
+ * gcc.target/powerpc/prefix-pcrel-v2df.c: New test.
+ * gcc.target/powerpc/prefix-pcrel.h: Include file for new tests.
+ * gcc.target/powerpc/prefix-stack-protect.c: New test.
+
+2020-06-26 Yichao Yu <yyc1992@gmail.com>
+
+ * gcc.target/i386/pr95778-1.c: New test.
+ * gcc.target/i386/pr95778-2.c: New test.
+
+2020-06-26 Peter Bergner <bergner@linux.ibm.com>
+
+ * gcc.target/powerpc/cpu-builtin-1.c: Add tests for power10, arch_3_1
+ and mma.
+
+2020-06-26 Marek Polacek <polacek@redhat.com>
+
+ * c-c++-common/torture/vector-subscript-3.c: In C++17, define away
+ the keyword register.
+ * g++.dg/cpp1z/attributes-enum-1a.C: Only run pre-C++17.
+ * g++.dg/cpp1z/fold7a.C: Likewise.
+ * g++.dg/cpp1z/nontype3a.C: Likewise.
+ * g++.dg/cpp1z/utf8-2a.C: Likewise.
+ * g++.dg/parse/error11.C: Update expected diagnostics for C++17.
+ * g++.dg/torture/pr34850.C: Add -Wno-attribute-warning.
+ * g++.dg/torture/pr49394.C: In C++17, use noexcept(false).
+ * g++.dg/torture/pr82154.C: Use -std=c++14.
+ * lib/target-supports.exp: Set to C++17.
+ * obj-c++.dg/try-catch-9.mm: Use -Wno-register.
+
+2020-06-26 Kwok Cheung Yeung <kcy@codesourcery.com>
+
+ * gfortran.dg/gomp/combined-if.f90: Adjust expected number
+ of matches depending on whether nvptx offloading is supported.
+ * lib/target-supports.exp
+ (check_effective_target_offload_nvptx): New.
+
+2020-06-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt86_pkg.ads: New helper.
+ * gnat.dg/opt86a.adb: New test.
+ * gnat.dg/opt86b.adb: Likewise.
+ * gnat.dg/opt86c.adb: Likewise.
+
+2020-06-26 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * gdc.dg/pr95250.d: Updated.
+
+2020-06-26 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95519
+ * g++.dg/coroutines/torture/pr95519-00-return_void.C: New test.
+ * g++.dg/coroutines/torture/pr95519-01-initial-suspend.C: New test.
+ * g++.dg/coroutines/torture/pr95519-02-final_suspend.C: New test.
+ * g++.dg/coroutines/torture/pr95519-03-return-value.C: New test.
+ * g++.dg/coroutines/torture/pr95519-04-yield-value.C: New test.
+ * g++.dg/coroutines/torture/pr95519-05-gro.C: New test.
+ * g++.dg/coroutines/torture/pr95519-06-grooaf.C: New test.
+ * g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C: New test.
+
+2020-06-26 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/coro1-allocators.h (BAD_GROOAF_STATIC):
+ New.
+ * g++.dg/coroutines/coro-bad-grooaf-00-static.C: New test.
+
+2020-06-26 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95897
+ * gcc.dg/vect/pr95897.c: New testcase.
+
+2020-06-25 Marek Polacek <polacek@redhat.com>
+
+ PR c++/91104
+ * g++.dg/cpp1y/lambda-generic-variadic21.C: New test.
+
+2020-06-25 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95828
+ * gfortran.dg/pr95828.f90: New file.
+
+2020-06-25 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95826
+ * gfortran.dg/pr95826.f90: New file.
+
+2020-06-25 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/95250
+ * gdc.dg/pr95250.d: New test.
+
+2020-06-25 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/95173
+ * gdc.dg/pr95173.d: New test.
+
+2020-06-25 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * gdc.dg/init1.d: New test.
+
+2020-06-25 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * gdc.dg/asm1.d: Don't use deprecated asm syntax.
+ * gdc.dg/compilable.d: Add public to selective import.
+ * gdc.dg/lto/ltotests_0.d: Explicitly catch Throwable.
+ * gdc.dg/runnable.d: Remove empty statement.
+
+2020-06-25 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/95837
+ * gfortran.dg/char4-subscript.f90: New test.
+
+2020-06-25 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95839
+ * gcc.dg/vect/bb-slp-pr95839.c: New testcase.
+
+2020-06-25 Tobias Burnus <tobias@codesourcery.com>
+ Kwok Cheung Yeung <kcy@codesourery.com>
+
+ PR fortran/95869
+ * gfortran.dg/gomp/combined-if.f90 (test_target_parallel): Re-enable.
+ * gfortran.dg/gomp/pr95869.f90: New.
+
+2020-06-25 Kwok Cheung Yeung <kcy@codesourcery.com>
+
+ * gfortran.dg/gomp/combined-if.f90: New.
+
+2020-06-25 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95866
+ * gcc.dg/vect/bb-slp-pr95866.c: New testcase.
+
+2020-06-24 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ PR target/94954
+ * gcc.target/powerpc/builtins-1-p9-runnable.c: Update.
+
+2020-06-24 Alexandre Oliva <oliva@adacore.com>
+
+ PR testsuite/95416
+ PR testsuite/95577
+ * gcc.misc-tests/outputs.exp (gsplit_dwarf): Move -g into it.
+ (outest): Introduce conditionals and string/variable/expr
+ expansion. Drop special-casing of $aout and .dwo.
+ (gspd): New conditional. Guard all .dwo files with it.
+ (ltop): New conditional. Guard files created by the LTO
+ plugin with it. Guard files created by fat LTO compilation
+ with its negation. Add a few -fno-use-linker-plugin tests
+ guarded by it.
+
+2020-06-24 Nicholas Krause <xerofoify@gmail.com>
+
+ PR c++/95672
+ * g++.dg/template/pr95672.C: New test.
+
+2020-06-24 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95518
+ PR c++/95813
+ * g++.dg/coroutines/pr95518.C: New test.
+ * g++.dg/coroutines/pr95813.C: New test.
+
+2020-06-24 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/void-gro-non-class-coro.C: Moved to...
+ * g++.dg/coroutines/coro-bad-gro-01-void-gro-non-class-coro.C: ...here.
+ * g++.dg/coroutines/coro-bad-gro-00-class-gro-scalar-return.C: New test.
+
+2020-06-24 Jason Merrill <jason@redhat.com>
+
+ PR c++/95719
+ * g++.dg/tree-ssa/final4.C: New test.
+
+2020-06-24 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95827
+ * gfortran.dg/pr95827.f90: New file.
+
+2020-06-24 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95866
+ * gcc.target/i386/pr95866-1.c: New testcase.
+
+2020-06-24 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/95660
+ * gcc.target/i386/builtin_target.c (check_detailed): Updated.
+
+2020-06-24 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/95843
+ * gcc.target/i386/builtin_target.c: Include <stdlib.h>,
+ ../../../common/config/i386/i386-cpuinfo.h and
+ ../../../common/config/i386/cpuinfo.h.
+ (check_amd_cpu_model): Removed.
+ (check_intel_cpu_model): Likewise,
+ (CHECK___builtin_cpu_is): New.
+ (gcc_assert): New. Defined as assert.
+ (gcc_unreachable): New. Defined as abort.
+ (inline): New. Defined as empty.
+ (ISA_NAMES_TABLE_START): Likewise.
+ (ISA_NAMES_TABLE_END): Likewise.
+ (ISA_NAMES_TABLE_ENTRY): New.
+ (check_features): Include
+ "../../../common/config/i386/i386-isas.h".
+ (check_detailed): Call cpu_indicator_init. Always call
+ check_features. Call get_amd_cpu instead of check_amd_cpu_model.
+ Call get_intel_cpu instead of check_intel_cpu_model.
+
+2020-06-24 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95856
+ * gcc.dg/vect/pr95856.c: New testcase.
+
+2020-06-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/95810
+ * gcc.dg/ubsan/pr95810.c: New test.
+
+2020-06-23 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp2a/class-deduction-aggr3.C: New test.
+ * g++.dg/cpp2a/class-deduction-aggr4.C: New test.
+
+2020-06-23 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ * gfortran.fortran-torture/execute/forall_5.f90: Make forall
+ statement conforming.
+
+2020-06-23 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95477
+ * g++.dg/coroutines/pr95477.C: New test.
+ * g++.dg/coroutines/void-gro-non-class-coro.C: New test.
+
+2020-06-23 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ PR target/95646
+ * gcc.target/arm/pr95646.c: New test.
+
+2020-06-23 Alexandre Oliva <oliva@adacore.com>
+
+ * lib/scanoffload.exp: New.
+ * lib/scanoffloadrtl.exp: Load it. Replace ".o" with ""
+ globally, and use scanoffload's scoff wrapper to fill it in.
+ * lib/scanoffloadtree.exp: Likewise.
+
+2020-06-23 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/95812
+ * gfortran.dg/dependency_59.f90: New test.
+
+2020-06-23 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/95586
+ * gfortran.dg/pr95586_1.f90: New test.
+ * gfortran.dg/pr95586_2.f90: New test.
+
+2020-06-22 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * gcc.target/powerpc/cfuged-0.c: I protest.
+ * gcc.target/powerpc/cfuged-1.c: I protest.
+ * gcc.target/powerpc/clone3.c: I protest.
+ * gcc.target/powerpc/cntlzdm-0.c: I protest.
+ * gcc.target/powerpc/cntlzdm-1.c: I protest.
+ * gcc.target/powerpc/cnttzdm-0.c: I protest.
+ * gcc.target/powerpc/cnttzdm-1.c: I protest.
+ * gcc.target/powerpc/cpu-future.c: I protest.
+ * gcc.target/powerpc/dg-future-0.c: I protest.
+ * gcc.target/powerpc/dg-future-1.c: I protest.
+ * gcc.target/powerpc/localentry-1.c: I protest.
+ * gcc.target/powerpc/localentry-detect-1.c: I protest.
+ * gcc.target/powerpc/mma-builtin-1.c: I protest.
+ * gcc.target/powerpc/mma-builtin-2.c: I protest.
+ * gcc.target/powerpc/mma-builtin-3.c: I protest.
+ * gcc.target/powerpc/mma-builtin-4.c: I protest.
+ * gcc.target/powerpc/mma-builtin-5.c: I protest.
+ * gcc.target/powerpc/mma-builtin-6.c: I protest.
+ * gcc.target/powerpc/notoc-direct-1.c: I protest.
+ * gcc.target/powerpc/pcrel-sibcall-1.c: I protest.
+ * gcc.target/powerpc/pdep-0.c: I protest.
+ * gcc.target/powerpc/pdep-1.c: I protest.
+ * gcc.target/powerpc/pextd-0.c: I protest.
+ * gcc.target/powerpc/pextd-1.c: I protest.
+ * gcc.target/powerpc/pr93122.c: I protest.
+ * gcc.target/powerpc/pr94740.c: I protest.
+ * gcc.target/powerpc/setbceq.c: I protest.
+ * gcc.target/powerpc/setbcge.c: I protest.
+ * gcc.target/powerpc/setbcgt.c: I protest.
+ * gcc.target/powerpc/setbcle.c: I protest.
+ * gcc.target/powerpc/setbclt.c: I protest.
+ * gcc.target/powerpc/setbcne.c: I protest.
+ * gcc.target/powerpc/setnbceq.c: I protest.
+ * gcc.target/powerpc/setnbcge.c: I protest.
+ * gcc.target/powerpc/setnbcgt.c: I protest.
+ * gcc.target/powerpc/setnbcle.c: I protest.
+ * gcc.target/powerpc/setnbclt.c: I protest.
+ * gcc.target/powerpc/setnbcne.c: I protest.
+ * gcc.target/powerpc/vec-cfuged-0.c: I protest.
+ * gcc.target/powerpc/vec-cfuged-1.c: I protest.
+ * gcc.target/powerpc/vec-clrl-0.c: I protest.
+ * gcc.target/powerpc/vec-clrl-1.c: I protest.
+ * gcc.target/powerpc/vec-clrl-2.c: I protest.
+ * gcc.target/powerpc/vec-clrl-3.c: I protest.
+ * gcc.target/powerpc/vec-clrr-0.c: I protest.
+ * gcc.target/powerpc/vec-clrr-1.c: I protest.
+ * gcc.target/powerpc/vec-clrr-2.c: I protest.
+ * gcc.target/powerpc/vec-clrr-3.c: I protest.
+ * gcc.target/powerpc/vec-cntlzm-0.c: I protest.
+ * gcc.target/powerpc/vec-cntlzm-1.c: I protest.
+ * gcc.target/powerpc/vec-cnttzm-0.c: I protest.
+ * gcc.target/powerpc/vec-cnttzm-1.c: I protest.
+ * gcc.target/powerpc/vec-extracth-0.c: I protest.
+ * gcc.target/powerpc/vec-extracth-1.c: I protest.
+ * gcc.target/powerpc/vec-extracth-2.c: I protest.
+ * gcc.target/powerpc/vec-extracth-3.c: I protest.
+ * gcc.target/powerpc/vec-extracth-4.c: I protest.
+ * gcc.target/powerpc/vec-extracth-5.c: I protest.
+ * gcc.target/powerpc/vec-extracth-6.c: I protest.
+ * gcc.target/powerpc/vec-extracth-7.c: I protest.
+ * gcc.target/powerpc/vec-extracth-be-0.c: I protest.
+ * gcc.target/powerpc/vec-extracth-be-1.c: I protest.
+ * gcc.target/powerpc/vec-extracth-be-2.c: I protest.
+ * gcc.target/powerpc/vec-extracth-be-3.c: I protest.
+ * gcc.target/powerpc/vec-extractl-0.c: I protest.
+ * gcc.target/powerpc/vec-extractl-1.c: I protest.
+ * gcc.target/powerpc/vec-extractl-2.c: I protest.
+ * gcc.target/powerpc/vec-extractl-3.c: I protest.
+ * gcc.target/powerpc/vec-extractl-4.c: I protest.
+ * gcc.target/powerpc/vec-extractl-5.c: I protest.
+ * gcc.target/powerpc/vec-extractl-6.c: I protest.
+ * gcc.target/powerpc/vec-extractl-7.c: I protest.
+ * gcc.target/powerpc/vec-extractl-be-0.c: I protest.
+ * gcc.target/powerpc/vec-extractl-be-1.c: I protest.
+ * gcc.target/powerpc/vec-extractl-be-2.c: I protest.
+ * gcc.target/powerpc/vec-extractl-be-3.c: I protest.
+ * gcc.target/powerpc/vec-gnb-0.c: I protest.
+ * gcc.target/powerpc/vec-gnb-1.c: I protest.
+ * gcc.target/powerpc/vec-gnb-2.c: I protest.
+ * gcc.target/powerpc/vec-pdep-0.c: I protest.
+ * gcc.target/powerpc/vec-pdep-1.c: I protest.
+ * gcc.target/powerpc/vec-pext-0.c: I protest.
+ * gcc.target/powerpc/vec-pext-1.c: I protest.
+ * gcc.target/powerpc/vec-stril-0.c: I protest.
+ * gcc.target/powerpc/vec-stril-1.c: I protest.
+ * gcc.target/powerpc/vec-stril-10.c: I protest.
+ * gcc.target/powerpc/vec-stril-11.c: I protest.
+ * gcc.target/powerpc/vec-stril-12.c: I protest.
+ * gcc.target/powerpc/vec-stril-13.c: I protest.
+ * gcc.target/powerpc/vec-stril-14.c: I protest.
+ * gcc.target/powerpc/vec-stril-15.c: I protest.
+ * gcc.target/powerpc/vec-stril-16.c: I protest.
+ * gcc.target/powerpc/vec-stril-17.c: I protest.
+ * gcc.target/powerpc/vec-stril-18.c: I protest.
+ * gcc.target/powerpc/vec-stril-19.c: I protest.
+ * gcc.target/powerpc/vec-stril-2.c: I protest.
+ * gcc.target/powerpc/vec-stril-20.c: I protest.
+ * gcc.target/powerpc/vec-stril-21.c: I protest.
+ * gcc.target/powerpc/vec-stril-22.c: I protest.
+ * gcc.target/powerpc/vec-stril-23.c: I protest.
+ * gcc.target/powerpc/vec-stril-3.c: I protest.
+ * gcc.target/powerpc/vec-stril-4.c: I protest.
+ * gcc.target/powerpc/vec-stril-5.c: I protest.
+ * gcc.target/powerpc/vec-stril-6.c: I protest.
+ * gcc.target/powerpc/vec-stril-7.c: I protest.
+ * gcc.target/powerpc/vec-stril-8.c: I protest.
+ * gcc.target/powerpc/vec-stril-9.c: I protest.
+ * gcc.target/powerpc/vec-stril_p-0.c: I protest.
+ * gcc.target/powerpc/vec-stril_p-1.c: I protest.
+ * gcc.target/powerpc/vec-stril_p-10.c: I protest.
+ * gcc.target/powerpc/vec-stril_p-11.c: I protest.
+ * gcc.target/powerpc/vec-stril_p-2.c: I protest.
+ * gcc.target/powerpc/vec-stril_p-3.c: I protest.
+ * gcc.target/powerpc/vec-stril_p-4.c: I protest.
+ * gcc.target/powerpc/vec-stril_p-5.c: I protest.
+ * gcc.target/powerpc/vec-stril_p-6.c: I protest.
+ * gcc.target/powerpc/vec-stril_p-7.c: I protest.
+ * gcc.target/powerpc/vec-stril_p-8.c: I protest.
+ * gcc.target/powerpc/vec-stril_p-9.c: I protest.
+ * gcc.target/powerpc/vec-strir-0.c: I protest.
+ * gcc.target/powerpc/vec-strir-1.c: I protest.
+ * gcc.target/powerpc/vec-strir-10.c: I protest.
+ * gcc.target/powerpc/vec-strir-11.c: I protest.
+ * gcc.target/powerpc/vec-strir-12.c: I protest.
+ * gcc.target/powerpc/vec-strir-13.c: I protest.
+ * gcc.target/powerpc/vec-strir-14.c: I protest.
+ * gcc.target/powerpc/vec-strir-15.c: I protest.
+ * gcc.target/powerpc/vec-strir-16.c: I protest.
+ * gcc.target/powerpc/vec-strir-17.c: I protest.
+ * gcc.target/powerpc/vec-strir-18.c: I protest.
+ * gcc.target/powerpc/vec-strir-19.c: I protest.
+ * gcc.target/powerpc/vec-strir-2.c: I protest.
+ * gcc.target/powerpc/vec-strir-20.c: I protest.
+ * gcc.target/powerpc/vec-strir-21.c: I protest.
+ * gcc.target/powerpc/vec-strir-22.c: I protest.
+ * gcc.target/powerpc/vec-strir-23.c: I protest.
+ * gcc.target/powerpc/vec-strir-3.c: I protest.
+ * gcc.target/powerpc/vec-strir-4.c: I protest.
+ * gcc.target/powerpc/vec-strir-5.c: I protest.
+ * gcc.target/powerpc/vec-strir-6.c: I protest.
+ * gcc.target/powerpc/vec-strir-7.c: I protest.
+ * gcc.target/powerpc/vec-strir-8.c: I protest.
+ * gcc.target/powerpc/vec-strir-9.c: I protest.
+ * gcc.target/powerpc/vec-strir_p-0.c: I protest.
+ * gcc.target/powerpc/vec-strir_p-1.c: I protest.
+ * gcc.target/powerpc/vec-strir_p-10.c: I protest.
+ * gcc.target/powerpc/vec-strir_p-11.c: I protest.
+ * gcc.target/powerpc/vec-strir_p-2.c: I protest.
+ * gcc.target/powerpc/vec-strir_p-3.c: I protest.
+ * gcc.target/powerpc/vec-strir_p-4.c: I protest.
+ * gcc.target/powerpc/vec-strir_p-5.c: I protest.
+ * gcc.target/powerpc/vec-strir_p-6.c: I protest.
+ * gcc.target/powerpc/vec-strir_p-7.c: I protest.
+ * gcc.target/powerpc/vec-strir_p-8.c: I protest.
+ * gcc.target/powerpc/vec-strir_p-9.c: I protest.
+ * gcc.target/powerpc/vec-ternarylogic-0.c: I protest.
+ * gcc.target/powerpc/vec-ternarylogic-1.c: I protest.
+ * gcc.target/powerpc/vec-ternarylogic-10.c: I protest.
+ * gcc.target/powerpc/vec-ternarylogic-2.c: I protest.
+ * gcc.target/powerpc/vec-ternarylogic-3.c: I protest.
+ * gcc.target/powerpc/vec-ternarylogic-4.c: I protest.
+ * gcc.target/powerpc/vec-ternarylogic-5.c: I protest.
+ * gcc.target/powerpc/vec-ternarylogic-6.c: I protest.
+ * gcc.target/powerpc/vec-ternarylogic-7.c: I protest.
+ * gcc.target/powerpc/vec-ternarylogic-8.c: I protest.
+ * gcc.target/powerpc/vec-ternarylogic-9.c: I protest.
+ * gcc.target/powerpc/xxgenpc-runnable.c: I protest.
+ * lib/target-supports.exp: Stuff.
+
+2020-06-22 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/mve_scalar_shifts1.c: Modify.
+ * gcc.target/arm/mve/intrinsics/mve_scalar_shifts2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_scalar_shifts3.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_scalar_shifts4.c: Likewise.
+ * lib/target-supports.exp (check_effective_target_arm_mve_hw): Define.
+
+2020-06-22 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/95708
+ * gfortran.dg/pr95708.f90: New test.
+
+2020-06-22 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/95791
+ * gcc.target/i386/pr95791.c: New test.
+
+2020-06-22 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/95585
+ * gfortran.dg/pr95585.f90: New test.
+
+2020-06-22 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95770
+ * gcc.dg/pr95770.c: New testcase.
+
+2020-06-22 Kito Cheng <kito.cheng@sifive.com>
+
+ * g++.target/riscv/frflags.C: New.
+
+2020-06-21 Peter Bergner <bergner@linux.ibm.com>
+
+ * gcc.target/powerpc/mma-builtin-1.c: New file.
+ * gcc.target/powerpc/mma-builtin-2.c: New file.
+ * gcc.target/powerpc/mma-builtin-3.c: New file.
+ * gcc.target/powerpc/mma-builtin-4.c: New file.
+ * gcc.target/powerpc/mma-builtin-5.c: New file.
+ * gcc.target/powerpc/mma-builtin-6.c: New file.
+
+2020-06-20 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95505
+ * g++.dg/coroutines/pr95505.C: New test.
+
+2020-06-20 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp2a/concepts-return-req1.C: Expect error.
+ * g++.dg/cpp2a/concepts-p2113a.C: New test.
+ * g++.dg/cpp2a/concepts-p2113b.C: New test.
+
+2020-06-20 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95707
+ * gfortran.dg/pr95707.f90: New file.
+
+2020-06-20 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95688
+ * gfortran.dg/pr95688.f90: New file.
+
+2020-06-20 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95687
+ * gfortran.dg/pr95687.f90: New file.
+
+2020-06-20 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95689
+ * gfortran.dg/pr95689.f90: New file.
+
+2020-06-20 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95587
+ * gfortran.dg/pr95587.f90: New file.
+
+2020-06-20 Bin Cheng <bin.cheng@linux.alibaba.com>
+
+ PR tree-optimization/95638
+ * g++.dg/tree-ssa/pr95638.C: New test.
+
+2020-06-19 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.dg/tree-ssa/popcount4ll.c: Add target lp64.
+ * gcc.dg/tree-ssa/popcount5ll.c: Same.
+
+2020-06-19 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp2a/spaceship-friend1.C: New test.
+ * g++.dg/cpp2a/spaceship-err4.C: Adjust diagnostic.
+
+2020-06-19 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.target/powerpc/vec-extracth-be-0.c: Apply -mbig
+ conditionally for powerpc64le*-*-*.
+ * gcc.target/powerpc/vec-extracth-be-1.c: Same.
+ * gcc.target/powerpc/vec-extracth-be-2.c: Same.
+ * gcc.target/powerpc/vec-extracth-be-3.c: Same.
+ * gcc.target/powerpc/vec-extractl-be-0.c: Same.
+ * gcc.target/powerpc/vec-extractl-be-1.c: Same.
+ * gcc.target/powerpc/vec-extractl-be-2.c: Same.
+ * gcc.target/powerpc/vec-extractl-be-3.c: Same.
+
+2020-06-19 Przemyslaw Wirkus <Przemyslaw.Wirkus@arm.com>
+
+ PR tree-optimization/94880
+ * gcc.dg/tree-ssa/pr94880.c: New Test.
+
+2020-06-19 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95761
+ * gcc.dg/torture/pr95761.c: New testcase.
+
+2020-06-18 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp2a/spaceship-ref1.C: New test.
+ * g++.dg/cpp2a/spaceship-synth-neg4.C: New test.
+ * g++.dg/cpp2a/spaceship-union1.C: New test.
+
+2020-06-18 Uroš Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/pr78904-1a.c: New test.
+ * gcc.target/i386/pr78904-1b.c: Ditto.
+ * gcc.target/i386/pr78904-2a.c: Ditto.
+ * gcc.target/i386/pr78904-2b.c: Ditto.
+ * gcc.target/i386/pr78904-3a.c: Ditto.
+ * gcc.target/i386/pr78904-3b.c: Ditto.
+ * gcc.target/i386/pr78904-4a.c: Ditto.
+ * gcc.target/i386/pr78904-4b.c: Ditto.
+ * gcc.target/i386/pr78904-5a.c: Ditto.
+ * gcc.target/i386/pr78904-5b.c: Ditto.
+ * gcc.target/i386/pr78904-6a.c: Ditto.
+ * gcc.target/i386/pr78904-6b.c: Ditto.
+ * gcc.target/i386/pr78967-1a.c: Ditto.
+ * gcc.target/i386/pr78967-1b.c: Ditto.
+ * gcc.target/i386/pr78967-2a.c: Ditto.
+ * gcc.target/i386/pr78967-2b.c: Ditto.
+
+2020-06-18 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/95667
+ PR middle-end/92814
+ * gcc.dg/Wstringop-overflow-25.c: Remove xfails.
+ * gcc.dg/Wstringop-overflow-39.c: New test.
+
+2020-06-18 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95735
+ * g++.dg/cpp2a/concepts-err2.C: New test.
+
+2020-06-18 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * g++.target/aarch64/pr94052.C: Give z::ad public access.
+
+2020-06-18 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/map-alloc-comp-1.f90: New test.
+
+2020-06-18 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95728
+ * g++.dg/template/cast6.C: New test.
+
+2020-06-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/95699
+ * gcc.dg/tree-ssa/pr95699.c: New test.
+
+2020-06-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/95713
+ * gcc.dg/pr95713.c: New test.
+
+2020-06-17 Thomas Schwinge <thomas@codesourcery.com>
+
+ * c-c++-common/gomp/default-1.c: Update.
+ * c-c++-common/gomp/defaultmap-3.c: Likewise.
+ * c-c++-common/gomp/order-4.c: Likewise.
+ * g++.dg/gomp/parallel-2.C: Likewise.
+ * g++.dg/gomp/predetermined-1.C: Likewise.
+ * g++.dg/gomp/sharing-1.C: Likewise.
+ * gcc.dg/gomp/appendix-a/a.24.1.c: Likewise.
+ * gcc.dg/gomp/parallel-2.c: Likewise.
+ * gcc.dg/gomp/pr44085.c: Likewise.
+ * gcc.dg/gomp/sharing-1.c: Likewise.
+ * gcc.dg/gomp/vla-1.c: Likewise.
+ * gfortran.dg/gomp/appendix-a/a.24.1.f90: Likewise.
+ * gfortran.dg/gomp/crayptr3.f90: Likewise.
+ * gfortran.dg/gomp/pr33439.f90: Likewise.
+ * gfortran.dg/gomp/pr44036-1.f90: Likewise.
+ * gfortran.dg/gomp/pr44085.f90: Likewise.
+ * gfortran.dg/gomp/pr44536.f90: Likewise.
+ * gfortran.dg/gomp/pr94672.f90: Likewise.
+ * gfortran.dg/gomp/sharing-1.f90: Likewise.
+ * gfortran.dg/gomp/sharing-2.f90: Likewise.
+ * gfortran.dg/gomp/sharing-3.f90: Likewise.
+
+2020-06-17 Thomas Schwinge <thomas@codesourcery.com>
+
+ * c-c++-common/gomp/hsa-indirect-call-1.c: New file.
+
+2020-06-17 Jonathan Wakely <jwakely@redhat.com>
+
+ PR c++/66159
+ * g++.dg/warn/forward-inner.C: Check alias-declaration using
+ elaborated-type-specifier.
+
+2020-06-17 Bin Cheng <bin.cheng@linux.alibaba.com>
+ Kaipeng Zhou <zhoukaipeng3@huawei.com>
+ Bin Cheng <bin.cheng@linux.alibaba.com>
+ Kaipeng Zhou <zhoukaipeng3@huawei.com>
+
+ PR tree-optimization/95199
+ * gcc.target/aarch64/sve/pr95199.c: New test.
+
+2020-06-17 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp2a/spaceship-synth9.C: New test.
+
+2020-06-17 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp2a/concepts-ca107.C: New test.
+
+2020-06-17 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp2a/consteval17.C: New test.
+
+2020-06-17 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/pr62101.C: Expect error.
+ * g++.dg/cpp0x/pr80259.C: Expect error.
+ * g++.dg/cpp2a/concepts-friend8.C: New test.
+
+2020-06-17 Jonathan Wakely <jwakely@redhat.com>
+
+ * c-c++-common/pr95378.c: New test.
+
+2020-06-17 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ * gcc.target/s390/20200617.c: New test.
+
+2020-06-17 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95508
+ * g++.dg/template/conv16.C: New test.
+
+2020-06-17 Patrick Palka <ppalka@redhat.com>
+
+ PR testsuite/95716
+ * g++.dg/ext/pr85503.C: Give ai::cv public access.
+
+2020-06-17 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95717
+ * g++.dg/torture/pr95717.C: New testcase.
+
+2020-06-17 Martin Liska <mliska@suse.cz>
+
+ PR testsuite/95720
+ * gcc.misc-tests/gcov-pr94029.c: Remove not needed remove-gcda.
+ * lib/gcov.exp: Delete properly .gcov files.
+
+2020-06-17 Martin Liska <mliska@suse.cz>
+
+ * g++.dg/vect/vec-cond-expr-eh.C: New test.
+
+2020-06-17 liuhongt <hongtao.liu@intel.com>
+
+ * gcc.target/i386/avx2-shiftqihi-constant-1.c: New test.
+ * gcc.target/i386/avx2-shiftqihi-constant-2.c: Ditto.
+ * gcc.target/i386/avx512bw-shiftqihi-constant-1.c: Ditto.
+ * gcc.target/i386/avx512bw-shiftqihi-constant-2.c: Ditto.
+ * gcc.target/i386/sse2-shiftqihi-constant-1.c: Ditto.
+ * gcc.target/i386/sse2-shiftqihi-constant-2.c: Ditto.
+
+2020-06-16 Jonathan Wakely <jwakely@redhat.com>
+
+ * g++.dg/torture/pr95493-1.C: New test.
+
+2020-06-16 Aldy Hernandez <aldyh@redhat.com>
+
+ * g++.dg/tree-ssa/pr95649.C: New test.
+ * gcc.dg/tree-ssa/pr95649.c: New test.
+
+2020-06-16 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/goacc/pure-elemental-procedures-2.f90: New test.
+
+2020-06-16 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/pr79154-simd.f90: New test.
+
+2020-06-16 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95369
+ * g++.dg/cpp2a/desig11.C: Adjust dg-error.
+ * g++.dg/cpp2a/desig16.C: New test.
+
+2020-06-16 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95560
+ * g++.dg/warn/Wshadow-local-3.C: New test.
+
+2020-06-16 Jakub Jelinek <jakub@redhat.com>
+
+ * c-c++-common/asan/inline.c: Add -ffat-lto-objects to dg-options.
+ * c-c++-common/asan/inline-kernel.c: Likewise.
+ * c-c++-common/ubsan/inline.c: Likewise.
+
+2020-06-16 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/mve_vaddq_m.c: New test.
+
+2020-06-16 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/mve_scalar_shifts1.c: New test.
+ * gcc.target/arm/mve/intrinsics/mve_scalar_shifts2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_scalar_shifts3.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_scalar_shifts4.c: Likewise.
+
+2020-06-16 Jakub Jelinek <jakub@redhat.com>
+
+ * c-c++-common/gomp/loop-6.c: New test.
+ * gcc.dg/gomp/loop-1.c: Don't expect diagnostics on valid
+ non-rectangular loops.
+ * gcc.dg/gomp/loop-2.c: New test.
+ * g++.dg/gomp/loop-1.C: Don't expect diagnostics on valid
+ non-rectangular loops.
+ * g++.dg/gomp/loop-2.C: Likewise.
+ * g++.dg/gomp/loop-5.C: New test.
+ * g++.dg/gomp/loop-6.C: New test.
+
+2020-06-16 Jakub Jelinek <jakub@redhat.com>
+
+ * c-c++-common/gomp/schedule-modifiers-2.c: New test.
+
+2020-06-16 Tobias Burnus <tobias@codesourcery.com>
+
+ PR middle-end/95622
+ * lib/target-supports.exp (check_effective_target_offloading_enabled):
+ New.
+ * c-c++-common/goacc/kernels-alias-ipa-pta-2.c: Use it for xfail.
+ * c-c++-common/goacc/kernels-alias-ipa-pta-4.c: Likewise.
+ * c-c++-common/goacc/kernels-alias-ipa-pta.c: Likewise.
+
+2020-06-16 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/pr79154-1.f90: Update dg-*;
+ add an impure elemental example.
+ * gfortran.dg/gomp/pr79154-2.f90: Likewise.
+
+2020-06-16 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/41437
+ PR c++/47346
+ * g++.dg/cpp2a/concepts-using2.C: Adjust.
+ * g++.dg/lto/20081219_1.C: Adjust.
+ * g++.dg/lto/20091002-1_0.C: Adjust.
+ * g++.dg/lto/pr65475c_0.C: Adjust.
+ * g++.dg/opt/dump1.C: Adjust.
+ * g++.dg/other/pr53574.C: Adjust.
+ * g++.dg/template/access30.C: New test.
+ * g++.dg/template/access31.C: New test.
+ * g++.dg/wrappers/wrapper-around-type-pack-expansion.C: Adjust.
+
+2020-06-16 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/95690
+ * gfortran.dg/pr95690.f90: New testcase.
+
+2020-06-16 Thomas Schwinge <thomas@codesourcery.com>
+
+ PR tree-optimization/94988
+ * gcc.dg/graphite/pr80906.c: Un-XFAIL.
+
+2020-06-16 Thomas Schwinge <thomas@codesourcery.com>
+
+ * gcc.dg/lto/pr52634_0.c: Further adjust 'dg-lto-options'.
+
+2020-06-16 Kito Cheng <kito.cheng@sifive.com>
+
+ PR target/95683
+ * gcc.target/riscv/pr95683.c: New.
+
+2020-06-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/aggr30.ads, gnat.dg/aggr30.adb: New test.
+
+2020-06-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt85.ads, gnat.dg/opt85.adb: New test.
+
+2020-06-15 Max Filippov <jcmvbkbc@gmail.com>
+
+ * gcc.target/xtensa/mabi-call0.c: New test.
+ * gcc.target/xtensa/mabi-windowed.c: New test.
+
+2020-06-15 Martin Jambor <mjambor@suse.cz>
+
+ * lib/brig.exp (brig_target_compile): Strip hsail extension when
+ gnerating the name of the binary brig file.
+
+2020-06-15 Hongtao Liu <hongtao.liu@intel.com>
+
+ * gcc.target/i386/avx512bw-pr95488-1.c: New test.
+ * gcc.target/i386/avx512bw-pr95488-2.c: Ditto.
+ * gcc.target/i386/avx512vl-pr95488-1.c: Ditto.
+ * gcc.target/i386/avx512vl-pr95488-2.c: Ditto.
+
+2020-06-14 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95088
+ * gfortran.dg/pr95088.f90: New file.
+
+2020-06-14 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ * gfortran.dg/random_seed_4.f90: New test.
+
+2020-06-14 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/94109
+ * gfortran.dg/finalize_34.f90: Adjust free counts.
+ * gfortran.dg/finalize_36.f90: New test.
+
+2020-06-14 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR testsuite/95575
+ * lib/gdc-utils.exp (gdc-do-test): Re-add $subdir link and inclusion
+ in filename.
+
+2020-06-13 Martin Sebor <msebor@redhat.com>
+
+ * gcc.dg/builtin-stringop-chk-5.c: Make assertions independent of
+ data model.
+
+2020-06-13 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ * gfortran.dg/finalize_36.f90: Remove accidentally
+ committed test case.
+
+2020-06-13 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR libfortran/95313
+ * gfortran.dg/finalize_36.f90: New file.
+
+2020-06-12 Marco Elver <elver@google.com>
+
+ * c-c++-common/tsan/func_entry_exit.c: New test.
+ * c-c++-common/tsan/func_entry_exit_disabled.c: New test.
+
+2020-06-12 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-44.c: New testcase.
+
+2020-06-12 Felix Yang <felix.yang@huawei.com>
+
+ PR tree-optimization/95570
+ * gcc.dg/vect/pr95570.c: New test.
+
+2020-06-12 Arnaud Charlet <charlet@adacore.com>
+
+ * gnat.dg/rep_clause8.adb: Update error location.
+
+2020-06-12 Alexandre Oliva <oliva@adacore.com>
+
+ * lib/prune.exp (prune_gcc_output): Match any executable name
+ in collect messages.
+
+2020-06-12 H.J. Lu <hjl.tools@gmail.com>
+
+ PR target/93492
+ * gcc.target/i386/pr93492-1.c: New test.
+ * gcc.target/i386/pr93492-2.c: Likewise.
+ * gcc.target/i386/pr93492-3.c: Likewise.
+ * gcc.target/i386/pr93492-4.c: Likewise.
+ * gcc.target/i386/pr93492-5.c: Likewise.
+
+2020-06-11 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/93467
+ * g++.dg/cpp2a/concepts-friend6.C: New test.
+ * g++.dg/cpp2a/concepts-friend7.C: New test.
+
+2020-06-11 Harald Anlauf <anlauf@gmx.de>
+ Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/95611
+ * gfortran.dg/pr95611.f90: New file.
+
+2020-06-11 Steven G. Kargl <kargl@gcc.gnu.org>
+ Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95544
+ * gfortran.dg/pr95544.f90: New file.
+
+2020-06-11 Tamar Christina <tamar.christina@arm.com>
+
+ * lib/target-supports.exp (check_effective_target_exceptions_enabled):
+ Mark as C++ test input.
+
+2020-06-11 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95503
+ * gfortran.dg/pr95503.f90: New test.
+
+2020-06-11 José Rui Faustino de Sousa <jrfsousa@gmail.com>
+
+ PR fortran/95331
+ * gfortran.dg/PR95331.f90: New test.
+
+2020-06-11 David Edelsohn <dje.gcc@gmail.com>
+
+ * g++.dg/abi/pure-virtual1.C: XFAIL AIX.
+
+2020-06-11 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.dg/spellcheck-inttypes.c: Don't include inttypes.h on AIX.
+
+2020-06-11 José Rui Faustino de Sousa <jrfsousa@gmail.com>
+
+ PR fortran/52351
+ PR fortran/85868
+ * gfortran.dg/coarray_lib_comm_1.f90: Adjust match test for
+ the newly generated descriptor.
+ * gfortran.dg/PR85868A.f90: New test.
+ * gfortran.dg/PR85868B.f90: New test.
+
+2020-06-11 José Rui Faustino de Sousa <jrfsousa@gmail.com>
+
+ PR fortran/94022
+ * gfortran.dg/PR94022.f90: New test.
+
+2020-06-11 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.target/riscv/pr95252.c: New.
+
+2020-06-10 Alexandre Oliva <oliva@adacore.com>
+
+ PR rtl-optimization/51447
+ * gcc.c-torture/execute/pr51447.c (main): Preserve call-saved
+ register.
+
+2020-06-10 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95440
+ * g++.dg/coroutines/pr95440.C: New test.
+
+2020-06-10 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/95353
+ PR middle-end/92939
+ * c-c++-common/Wstringop-truncation.c: Remove an xfail.
+ * gcc.dg/Warray-bounds-46.c: Remove a bogus warning.
+ * gcc.dg/Wrestrict-9.c: Disable -Wstringop-overflow.
+ * gcc.dg/Wstringop-overflow-12.c: Remove xfails.
+ * gcc.dg/Wstringop-overflow-28.c: Same.
+ * gcc.dg/builtin-stringop-chk-4.c: Same.
+ * gcc.dg/builtin-stringop-chk-5.c: Same.
+ * gcc.dg/builtin-stringop-chk-8.c: Same.
+ * gcc.dg/strlenopt-74.c: Avoid buffer overflow.
+ * gcc.dg/Wstringop-overflow-34.c: New test.
+ * gcc.dg/Wstringop-overflow-35.c: New test.
+ * gcc.dg/Wstringop-overflow-36.c: New test.
+ * gcc.dg/Wstringop-overflow-37.c: New test.
+ * gcc.dg/Wstringop-overflow-38.c: New test.
+
+2020-06-10 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95576
+ * g++.dg/vect/pr95576.cc: New testcase.
+
+2020-06-10 Haijian Zhang <z.zhanghaijian@huawei.com>
+
+ PR target/95523
+ * gcc.target/aarch64/sve/pr95523.c: New test.
+
+2020-06-10 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95562
+ * g++.dg/cpp0x/noexcept60.C: New test.
+
+2020-06-10 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/tree-ssa/ssa-dse-30.c: Adjust test for folding of
+ memmove happening later.
+
+2020-06-10 Tamar Christina <tamar.christina@arm.com>
+
+ * gcc.target/aarch64/asimd-mull-elem.c: New test.
+
+2020-06-10 Qian Chao <qianchao9@huawei.com>
+
+ PR tree-optimization/95569
+ * gcc.dg/tm/pr95569.c: New test.
+
+2020-06-09 Michael Meissner <meissner@linux.ibm.com>
+
+ * gcc.target/powerpc/clone3.c: New test for using 'future' with
+ the target_clones attribute.
+
+2020-06-09 Martin Liska <mliska@suse.cz>
+
+ * c-c++-common/asan/inline-kernel.c: Add missing
+ -fno-sanitize-address option.
+
+2020-06-09 Jason Merrill <jason@redhat.com>
+
+ PR c++/95552
+ * g++.dg/ext/vla23.C: New test.
+
+2020-06-09 Marco Elver <elver@google.com>
+
+ * c-c++-common/tsan/volatile.c: New test.
+
+2020-06-09 Michael Meissner <meissner@linux.ibm.com>
+
+ * lib/target-supports.exp (check_effective_target_powerpc_pcrel):
+ New.
+ (check_effective_target_powerpc_prefixed_addr): New.
+
+2020-06-09 Martin Liska <mliska@suse.cz>
+
+ * c-c++-common/asan/inline.c: New test.
+ * c-c++-common/asan/inline-kernel.c: New test.
+ * c-c++-common/tsan/inline.c: New test.
+ * c-c++-common/ubsan/inline.c: New test.
+
+2020-06-09 Joe Ramsay <joe.ramsay@arm.com>
+
+ * gcc.target/aarch64/sve/logical_unpacked_abs.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_bic_1.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_bic_2.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_bic_3.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_bic_4.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_neg.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_not.c: New test.
+
+2020-06-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/95580
+ * gcc.dg/pr95580.c: New test.
+
+2020-06-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/95527
+ * gcc.dg/tree-ssa/pr95527.c: New test.
+
+2020-06-09 Jakub Jelinek <jakub@redhat.com>
+
+ * g++.dg/torture/pr95493.C: Add -Wno-psabi -w to dg-additional-options.
+
+2020-06-09 Max Filippov <jcmvbkbc@gmail.com>
+
+ * g++.target/xtensa/pr95571.C: New test.
+ * g++.target/xtensa/xtensa.exp: New testsuite.
+
+2020-06-09 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * gcc.target/powerpc/fold-vec-perm-char.c: Allow both vperm/vpermr and
+ xxperm/xxpermr.
+ * gcc.target/powerpc/fold-vec-perm-double.c: Ditto.
+ * gcc.target/powerpc/fold-vec-perm-float.c: Ditto.
+ * gcc.target/powerpc/fold-vec-perm-int.c: Ditto.
+ * gcc.target/powerpc/fold-vec-perm-longlong.c: Ditto.
+ * gcc.target/powerpc/fold-vec-perm-pixel.c: Ditto.
+ * gcc.target/powerpc/fold-vec-perm-short.c: Ditto.
+ * gcc.target/powerpc/lvsl-lvsr.c: Ditto.
+ * gcc.target/powerpc/vec-mult-char-2.c: Ditto.
+ * gcc.target/powerpc/vsx-vector-6.p9.c: Also allow xxpermr.
+
+2020-06-09 Michael Meissner <meissner@linux.ibm.com>
+
+ * gcc.target/powerpc/clone3.c: New test for using 'future' with
+ the target_clones attribute.
+
+2020-06-09 Michael Meissner <meissner@linux.ibm.com>
+
+ * lib/target-supports.exp (check_effective_target_powerpc_pcrel):
+ New.
+ (check_effective_target_powerpc_prefixed_addr): New.
+
+2020-06-08 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95195
+ * gfortran.dg/namelist_97.f90: Adjust testcase.
+
+2020-06-08 Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/92993
+ * gfortran.dg/pr92993.f90: New test.
+
+2020-06-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/95528
+ * g++.dg/opt/pr95528.C: New test.
+
+2020-06-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR lto/95548
+ * g++.dg/torture/pr95548.C: Change from dg-do compile to dg-do link,
+ add return type for main, for __SIZEOF_INT128__ test with __uint128_t
+ enumerator constants and add a test with unsigned long long
+ enumerators for all targets.
+
+2020-06-07 Roger Sayle <roger@nextmovesoftware.com>
+
+ * gcc.target/i386/parity-3.c: New test.
+ * gcc.target/i386/parity-4.c: Likewise.
+ * gcc.target/i386/parity-5.c: Likewise.
+ * gcc.target/i386/parity-6.c: Likewise.
+ * gcc.target/i386/parity-7.c: Likewise.
+ * gcc.target/i386/parity-8.c: Likewise.
+ * gcc.target/i386/parity-9.c: Likewise.
+
+2020-06-07 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95091
+ * gfortran.dg/pr95091.f90: New file.
+
+2020-06-07 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR tree-optimization/50439
+ * gfortran.dg/loop_interchange_2.f: New test.
+
+2020-06-06 Jan Hubicka <hubicka@ucw.cz>
+
+ * g++.dg/torture/pr95548.C: New test.
+
+2020-06-05 Martin Sebor <msebor@redhat.com>
+
+ * g++.dg/warn/Wnonnull5.C: Temporarily remove.
+
+2020-06-05 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95369
+ * g++.dg/cpp2a/nontype-class38.C: New test.
+
+2020-06-05 Mark Wielaard <mark@klomp.org>
+
+ * gcc.dg/missing-header-fixit-3.c: Add
+ -Wno-implicit-function-declaration.
+ * gcc.dg/missing-header-fixit-4.c: Add new expected output.
+ * gcc.dg/missing-header-fixit-5.c: New testcase.
+ * gcc.dg/Wbuiltin-declaration-mismatch-ignore.c: Likewise.
+
+2020-06-05 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/constexpr-ptrsub2.C: New test.
+
+2020-06-05 Thomas Schwinge <thomas@codesourcery.com>
+ Julian Brown <julian@codesourcery.com>
+
+ * c-c++-common/goacc/struct-enter-exit-data-1.c: New file.
+
+2020-06-05 Martin Sebor <msebor@redhat.com>
+
+ * c-c++-common/goacc/uninit-use-device-clause.c: Adjust.
+ * c-c++-common/pr59223.c: Same.
+ * g++.dg/warn/Wnonnull5.C: Same.
+ * gcc.dg/pr59924.c: Same.
+ * gcc.dg/ubsan/pr81981.c: Same.
+ * gcc.dg/ubsan/pr89284.c: Same.
+ * gfortran.dg/goacc/uninit-use-device-clause.f95: Same.
+
+2020-06-05 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95539
+ * gcc.dg/vect/pr95539.c: New testcase.
+
+2020-06-05 Felix Yang <felix.yang@huawei.com>
+
+ PR target/95254
+ * gcc.target/aarch64/pr95254.c: New test.
+ * gcc.target/i386/pr67609.c: Check "movq\t%xmm0" instead of "movdqa".
+
+2020-06-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/95535
+ * gcc.target/i386/pr95535-1.c: New test.
+ * gcc.target/i386/pr95535-2.c: New test.
+
+2020-06-05 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/95493
+ * g++.dg/torture/pr95493.C: New testcase.
+
+2020-06-04 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/10138
+ PR middle-end/95136
+ * c-c++-common/Wsizeof-pointer-memaccess1.c: Prune out valid
+ Wuninitialized.
+ * c-c++-common/uninit-pr51010.c: Adjust expected warning format.
+ * c-c++-common/goacc/uninit-dim-clause.c: Same.
+ * c-c++-common/goacc/uninit-firstprivate-clause.c: Same.
+ * c-c++-common/goacc/uninit-if-clause.c: Same.
+ * c-c++-common/gomp/pr70550-1.c: Same.
+ * c-c++-common/gomp/pr70550-2.c: Adjust.
+ * g++.dg/20090107-1.C: Same.
+ * g++.dg/20090121-1.C: Same.
+ * g++.dg/ext/attr-access.C: Avoid -Wuninitialized.
+ * gcc.dg/tree-ssa/forwprop-6.c: Prune out -Wuninitialized.
+ * gcc.dg/Warray-bounds-52.c: Prune out valid -Wuninitialized.
+ * gcc.dg/Warray-bounds-53.c: Same.
+ * gcc.dg/Warray-bounds-54.c: Same.
+ * gcc.dg/Wstringop-overflow-33.c: New test.
+ * gcc.dg/attr-access-none.c: New test.
+ * gcc.dg/attr-access-read-only.c: Adjust.
+ * gcc.dg/attr-access-read-write.c: Same.
+ * gcc.dg/attr-access-write-only.c: Same.
+ * gcc.dg/pr71581.c: Adjust text of expected warning.
+ * gcc.dg/uninit-15.c: Same.
+ * gcc.dg/uninit-32.c: New test.
+ * gcc.dg/uninit-33.c: New test.
+ * gcc.dg/uninit-34.c: New test.
+ * gcc.dg/uninit-36.c: New test.
+ * gcc.dg/uninit-B-O0.c: Adjust text of expected warning.
+ * gcc.dg/uninit-I-O0.c: Same.
+ * gcc.dg/uninit-pr19430-O0.c: Same.
+ * gcc.dg/uninit-pr19430.c: Same.
+ * gcc.dg/uninit-pr95136.c: New test.
+ * gfortran.dg/assignment_4.f90: Expect -Wuninitialized.
+ * gfortran.dg/goacc/uninit-dim-clause.f95: Adjust text of expected
+ warning.
+ * gfortran.dg/goacc/uninit-firstprivate-clause.f95
+ * gfortran.dg/goacc/uninit-if-clause.f95
+ * gfortran.dg/pr66545_2.f90
+
+2020-06-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/93310
+ * g++.dg/cpp2a/constexpr-virtual16.C: New test.
+ * g++.dg/cpp2a/constexpr-virtual17.C: New test.
+ * g++.dg/cpp2a/constexpr-new12.C: Adjust diagnostic.
+
+2020-06-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/95158
+ * g++.dg/template/virtual5.C: New test.
+
+2020-06-04 Steven G. Kargl <kargl@gcc.gnu.org>
+ Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95500
+ * gfortran.dg/pr95500.f90: New test.
+
+2020-06-04 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95346
+ * g++.dg/coroutines/pr95346.C: New test.
+
+2020-06-04 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR middle-end/95464
+ * gcc.target/i386/pr95464.c: New.
+
+2020-06-04 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/95113
+ * gcc.dg/ipa/pr95113.c: New test.
+
+2020-06-04 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ PR target/94735
+ * gcc.target/arm/mve/intrinsics/mve_vstore_scatter_base.c: New test.
+ * gcc.target/arm/mve/intrinsics/mve_vstore_scatter_base_p.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vstore_scatter_offset.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vstore_scatter_offset_p.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset_p.c:
+ Likewise.
+
+2020-06-04 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vbicq_f16.c: Modify.
+ * gcc.target/arm/mve/intrinsics/vbicq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_u8.c: Likewise.
+
+2020-06-04 Hongtao Liu <hongtao.liu@inte.com>
+
+ * gcc.target/i386/avx512f-vcvtps2ph-pr95254.c: New test.
+ * gcc.target/i386/avx512vl-vcvtps2ph-pr95254.c: Ditto.
+
+2020-06-04 Arnaud Charlet <charlet@adacore.com>
+
+ * gnat.dg/openacc1.adb: Remove testcase.
+
+2020-06-04 Hao Liu <hliu@os.amperecomputing.com>
+
+ PR tree-optimization/89430
+ * gcc.dg/tree-ssa/pr89430-1.c: Remove xfail.
+ * gcc.dg/tree-ssa/pr89430-2.c: Remove xfail.
+ * gcc.dg/tree-ssa/pr89430-5.c: Remove xfail.
+ * gcc.dg/tree-ssa/pr89430-6.c: Remove xfail.
+ * gcc.dg/tree-ssa/pr89430-7-comp-ref.c: New test.
+ * gcc.dg/tree-ssa/pr89430-8-mem-ref-size.c: New test.
+ * gcc.dg/tree-ssa/ssa-pre-17.c: Add -fno-tree-cselim.
+
+2020-06-04 Andreas Schwab <schwab@suse.de>
+
+ PR libfortran/59227
+ * gfortran.dg/erf_3.F90: Remove XFAIL on ia64-*-linux*.
+
+2020-06-04 Hongtao.liu <hongtao.liu@intel.com>
+
+ * gcc.target/i386/pr92658-avx512bw-trunc.c: Adjust testcase.
+
+2020-06-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/82304
+ PR c++/95307
+ * g++.dg/template/pr79650.C: Expect different diagnostics and expect
+ it on all lines that do pointer to integer casts.
+ * g++.dg/cpp1y/constexpr-shift1.C: Expect different diagnostics.
+ * g++.dg/cpp1y/constexpr-82304.C: New test.
+ * g++.dg/cpp0x/constexpr-95307.C: New test.
+
+2020-06-03 Mark Wielaard <mark@klomp.org>
+
+ * g++.dg/spellcheck-inttypes.C: Add string-literal testcases.
+
+2020-06-03 Mark Wielaard <mark@klomp.org>
+
+ * gcc.dg/spellcheck-inttypes.c: New test.
+ * g++.dg/spellcheck-inttypes.C: Likewise.
+
+2020-06-03 Mark Wielaard <mark@klomp.org>
+
+ * c-c++-common/missing-close-func-paren.c: New test.
+
+2020-06-03 Vitor Guidi <vitor.guidi@usp.br>
+
+ * gcc.dg/tanhbysinh.c: New testcase.
+
+2020-06-03 Patrick Palka <ppalka@redhat.com>
+
+ * g++.dg/cpp2a/concepts-partial-spec8.C: New test.
+
+2020-06-03 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/92103
+ * g++.dg/cpp2a/concepts-partial-spec7.C: New test.
+
+2020-06-03 Jan Hubicka <hubicka@ucw.cz>
+
+ * g++.dg/lto/pr84805_0.C: Update.
+
+2020-06-03 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95345
+ * g++.dg/coroutines/pr95345.C: New test.
+
+2020-06-03 Jason Merrill <jason@redhat.com>
+
+ PR c++/95232
+ * g++.dg/ubsan/vla-2.C: New test.
+
+2020-06-03 José Rui Faustino de Sousa <jrfsousa@gmail.com>
+
+ PR fortran/95214
+ PR fortran/66833
+ PR fortran/67938
+ * gfortran.dg/PR95214.f90: New test.
+
+2020-06-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95487
+ * g++.dg/vect/pr95487.cc: New testcase.
+
+2020-06-03 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/95306
+ * jit.dg/test-pr95306-builtin-types.c (create_code): Add
+ test of getting __atomic_load.
+
+2020-06-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95495
+ * gcc.dg/vect/pr95495.c: New testcase.
+
+2020-06-03 Thomas Schwinge <thomas@codesourcery.com>
+ Tobias Burnus <tobias@codesourcery.com>
+
+ PR middle-end/94874
+ * c-c++-common/gomp/pr94874.c: New.
+
+2020-06-02 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/95426
+ * jit.dg/all-non-failing-tests.h: Add note about...
+ * jit.dg/test-builtin-unreachable.c: New test.
+
+2020-06-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/95193
+ * g++.dg/cpp1z/lambda-this7.C: New test.
+
+2020-06-02 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95050
+ * g++.dg/coroutines/pr95050.C: New test.
+
+2020-06-02 Alexandre Oliva <oliva@adacore.com>
+
+ * gcc.misc-tests/outputs.exp: Spell ldscript correctly.
+ * lib/gcc-defs.exp (gcc_adjust_linker_flags): Likewise.
+
+2020-06-02 Felix Yang <felix.yang@huawei.com>
+
+ PR target/95459
+ * gcc.target/aarch64/mgeneral-regs_6.c: New test.
+
+2020-06-02 Andrew Stubbs <ams@codesourcery.com>
+
+ * gcc.dg/intermod-1.c: Don't use -mlocal-symbol-id.
+
+2020-06-02 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
+
+ * gcc.target/s390/vector/align-1.c: Change target architecture
+ to z13.
+ * gcc.target/s390/vector/align-2.c: Change target architecture
+ to z13.
+
+2020-06-02 Kito Cheng <kito.cheng@sifive.com>
+
+ * lib/ubsan-dg.exp (orig_ubsan_options_saved): New
+ (orig_ubsan_options): Ditto.
+ (ubsan_init): Store UBSAN_OPTIONS and set UBSAN_OPTIONS.
+ (ubsan_finish): Restore UBSAN_OPTIONS.
+
+2020-06-02 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/92633
+ PR c++/92838
+ * g++.dg/cpp2a/concepts-lambda11.C: New test.
+ * g++.dg/cpp2a/concepts-lambda12.C: New test.
+
+2020-06-01 Jason Merrill <jason@redhat.com>
+
+ PR c++/95466
+ * g++.dg/ubsan/vptr-17.C: New test.
+
+2020-06-01 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95350
+ * g++.dg/coroutines/torture/func-params-08.C: Adjust test to
+ reflect that all rvalue refs are dangling.
+ * g++.dg/coroutines/torture/func-params-09-awaitable-parms.C:
+ Likewise.
+ * g++.dg/coroutines/pr95350.C: New test.
+
+2020-06-01 Feng Xue <fxue@os.amperecomputing.com>
+
+ PR ipa/93429
+ * gcc.dg/ipa/ipcp-agg-8.c: Change dump string.
+ * gcc.dg/ipa/ipcp-agg-13.c: New test.
+
+2020-05-31 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95087
+ * g++.dg/coroutines/co-return-syntax-08-bad-return.C:
+ Adjust the testcase to do the compile (rather than an
+ -fsyntax-only parse).
+
+2020-05-31 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/94361
+ * gfortran.dg/finalize_28.f90: Adjusted free counts.
+ * gfortran.dg/finalize_33.f90: Likewise.
+ * gfortran.dg/finalize_34.f90: Likewise.
+ * gfortran.dg/finalize_35.f90: New test.
+
+2020-05-31 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/95052
+ * gcc.dg/pr95052.c: New test.
+
+2020-05-31 Jim Wilson <jimw@sifive.com>
+
+ * gcc.target/riscv/zero-extend-5.c: New.
+
+2020-05-30 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95373
+ * gfortran.dg/pr95373_1.f90: Adjust error messages.
+ * gfortran.dg/pr95373_2.f90: Adjust error message.
+
+2020-05-30 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/95386
+ * g++.dg/concepts/pr95386.C: New test.
+
+2020-05-29 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * gcc.target/powerpc/vsx-vector-6.p9.c: Allow xxperm as perm as well.
+
+2020-05-29 Patrick Palka <ppalka@redhat.com>
+ Jason Merrill <jason@redhat.com>
+
+ PR c++/95181
+ * g++.dg/concepts/pr95181.C: New test.
+ * g++.dg/concepts/pr95181-2.C: New test.
+
+2020-05-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/95371
+ * g++.dg/cpp2a/concepts-ttp1.C: New test.
+
+2020-05-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR libfortran/95390
+ * gfortran.dg/findloc_8.f90: New test.
+
+2020-05-29 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95344
+ * c-c++-common/Wparentheses-2.c: New test.
+
+2020-05-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/95311
+ * g++.dg/ubsan/vptr-16.C: New test.
+
+2020-05-29 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/92652
+ PR c++/93698
+ PR c++/94128
+ * g++.dg/cpp2a/concepts-lambda8.C: New test.
+ * g++.dg/cpp2a/concepts-lambda9.C: New test.
+ * g++.dg/cpp2a/concepts-lambda10.C: New test.
+
+2020-05-29 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/95241
+ * g++.dg/cpp0x/constexpr-array25.C: New test.
+
+2020-05-29 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95272
+ * gcc.dg/vect/pr95272.c: New testcase.
+
+2020-05-29 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95403
+ * gfortran.dg/vect/pr95403.f: New testcase.
+
+2020-05-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/95315
+ * gcc.dg/gomp/pr95315-2.c: New test.
+
+2020-05-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/95052
+ * gcc.target/i386/pr95052.c: New test.
+
+2020-05-29 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95393
+ * gcc.dg/tree-ssa/phi-opt-21.c: New testcase.
+ * g++.dg/vect/slp-pr87105.cc: Adjust.
+
+2020-05-29 Joe Ramsay <joe.ramsay@arm.com>
+
+ * gcc.target/aarch64/sve/load_const_offset_2.c: Force using packed
+ vectors.
+ * gcc.target/aarch64/sve/logical_unpacked_and_1.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_and_2.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_and_3.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_and_4.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_and_5.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_and_6.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_and_7.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_eor_1.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_eor_2.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_eor_3.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_eor_4.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_eor_5.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_eor_6.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_eor_7.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_orr_1.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_orr_2.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_orr_3.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_orr_4.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_orr_5.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_orr_6.c: New test.
+ * gcc.target/aarch64/sve/logical_unpacked_orr_7.c: New test.
+ * gcc.target/aarch64/sve/scatter_store_6.c: Force using packed vectors.
+ * gcc.target/aarch64/sve/scatter_store_7.c: Force using packed vectors.
+ * gcc.target/aarch64/sve/strided_load_3.c: Force using packed vectors.
+ * gcc.target/aarch64/sve/strided_store_3.c: Force using packed vectors.
+ * gcc.target/aarch64/sve/unpack_signed_1.c: Force using packed vectors.
+
+2020-05-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/95328
+ * g++.dg/cpp1z/decomp53.C: New test.
+
+2020-05-28 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95373
+ * gfortran.dg/pr95373_1.f90: New test.
+ * gfortran.dg/pr95373_2.f90: New test.
+
+2020-05-28 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp1z/pr86648.C: Expect error.
+ * g++.dg/cpp1z/static2.C: Expect error.
+ * g++.dg/cpp0x/nsdmi16.C: New test.
+
+2020-05-28 Marek Polacek <polacek@redhat.com>
+
+ * g++.dg/cpp0x/initlist-array12.C: Fix the definition of
+ initializer_list for ilp32 target.
+
+2020-05-28 Marek Polacek <polacek@redhat.com>
+
+ * g++.dg/ext/tmplattr10.C: Only run in c++11.
+
+2020-05-28 H.J. Lu <hjl.tools@gmail.com>
+
+ * gcc.dg/builtin-bswap-10.c: Check "! int128" instead of ilp32
+
+2020-05-28 Steven G. Kargl <kargl@gcc.gnu.org>
+ Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/94397
+ * gfortran.dg/pr94397.F90: New test.
+
+2020-05-28 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/shrink_wrap_1.c: New test.
+
+2020-05-28 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR testsuite/95361
+ * gcc.target/aarch64/sve/pr95361.c: New test.
+
+2020-05-28 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95273
+ PR tree-optimization/95356
+ * gcc.target/i386/pr95356.c: New testcase.
+
+2020-05-28 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/95363
+ * gcc.dg/vect/bb-slp-pr95271.c: Fix on ilp32 targets.
+
+2020-05-28 Alexandre Oliva <oliva@adacore.com>
+
+ * lib/gcc-defs.exp: Avoid introducing empty arguments between
+ consecutive blanks in board linking options.
+ * gcc.misc-tests/outputs.exp: Likewise. Document
+ -gsplit-dwarf testing, skip LTO tests if -flto is not
+ supported, detect the default linker output name, cope with
+ the need for an explicit executable output.
+
+2020-05-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/builtin-bswap-10.c: New test.
+ * gcc.dg/builtin-bswap-11.c: Likewise.
+ * gcc.dg/builtin-bswap-12.c: Likewise.
+ * gcc.target/i386/builtin-bswap-5.c: Likewise.
+
+2020-05-27 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95090
+ * gfortran.dg/pr95090.f90: New test.
+
+2020-05-27 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/95355
+ * gcc.target/i386/pr95355.c: New test.
+
+2020-05-27 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/95314
+ * jit.dg/all-non-failing-tests.h: Add test-pr95314-rvalue-reuse.c.
+ * jit.dg/test-pr95314-rvalue-reuse.c: New test.
+
+2020-05-27 Jason Merrill <jason@redhat.com>
+
+ PR c++/95319
+ * g++.dg/cpp0x/initlist-array12.C: New test.
+
+2020-05-27 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/50392
+ * gfortran.dg/pr50392.f: New test.
+
+2020-05-27 Uroš Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/vperm-v2sf.c: New test.
+
+2020-05-27 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp2a/spaceship-synth2.C: Add
+ -Wzero-as-null-pointer-constant.
+
+2020-05-27 Jason Merrill <jason@redhat.com>
+
+ PR c++/95222
+ * g++.dg/ext/tmplattr10.C: New test.
+
+2020-05-27 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/95263
+ * g++.dg/template/pr95263.C: New file.
+
+2020-05-27 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95295
+ * gcc.dg/torture/pr95295-3.c: New testcase.
+
+2020-05-27 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95335
+ * gcc.dg/vect/bb-slp-pr95335.c: New testcase.
+
+2020-05-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/95315
+ * gcc.dg/gomp/pr95315.c: New test.
+
+2020-05-26 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/95306
+ * jit.dg/all-non-failing-tests.h: Add test-builtin-memcpy.c and
+ test-pr95306-builtin-types.c.
+ * jit.dg/test-builtin-memcpy.c: New test.
+ * jit.dg/test-error-gcc_jit_context_get_builtin_function-unimplemented-type.c:
+ New test.
+ * jit.dg/test-pr95306-builtin-types.c: New test.
+
+2020-05-26 Harald Anlauf <anlauf@gmx.de>
+ Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR libfortran/95104
+ * gfortran.dg/pr95104.f90: New test.
+
+2020-05-26 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95195
+ * gfortran.dg/namelist_97.f90: New test.
+
+2020-05-26 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95089
+ * gfortran.dg/pr95089.f90: New test.
+
+2020-05-26 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/95296
+ * jit.dg/test-error-gcc_jit_context_new_global-void-type.c: New
+ test.
+ * jit.dg/test-error-gcc_jit_function_new_local-void-type.c: New
+ test.
+ * jit.dg/test-fuzzer.c (fuzzer_init): Allow for make_random_type
+ to return NULL.
+ (get_random_type): Allow for elements in f->types to be NULL.
+
+2020-05-26 Uroš Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/vperm-v2si.c: New test.
+ * gcc.target/i386/vperm-v4hi.c: Ditto.
+
+2020-05-26 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C: Check for
+ promise destruction via a global variable.
+
+2020-05-26 Alexandre Oliva <oliva@adacore.com>
+
+ * gcc.misc-tests/outputs.exp: New.
+ * gcc.misc-tests/outputs-0.c: New.
+ * gcc.misc-tests/outputs-1.c: New.
+ * gcc.misc-tests/outputs-2.c: New.
+ * lib/gcc-defs.exp (gcc_adjusted_linker_flags): New.
+ (gcc_adjust_linker_flags): New.
+ (dg-additional-files-options): Call it. Pass -dumpbase ""
+ when there are additional sources.
+ * lib/profopt.exp (profopt-execute): Pass the executable
+ suffix with -dumpbase-ext.
+ * lib/scandump.exp (dump-base): Mention -dumpbase "" use.
+ * lib/scanltranstree.exp: Adjust dump suffix expectation.
+ * lib/scanwpaipa.exp: Likewise.
+
+2020-05-26 Hongtao Liu <hongtao.liu@intel.com>
+ Uroš Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/pr95211.c: New test.
+
+2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/opt84.adb: New test.
+
+2020-05-25 Uroš Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/sse2-mmx-18a.c (dg-options): Remove -mno-avx512vl.
+ * gcc.target/i386/sse2-mmx-19a.c (dg-options): Remove -mno-avx.
+ * gcc.target/i386/sse2-mmx-18b.c: Remove.
+ * gcc.target/i386/sse2-mmx-18c.c: Ditto.
+ * gcc.target/i386/sse2-mmx-19b.c: Ditto.
+ * gcc.target/i386/sse2-mmx-19c.c: Ditto.
+ * gcc.target/i386/sse2-mmx-19d.c: Ditto.
+ * gcc.target/i386/sse2-mmx-19e.c: Ditto.
+
+2020-05-25 Martin Jambor <mjambor@suse.cz>
+
+ * brig.dg/test/gimple/packed.hsail: Fix scan dump patterns.
+
+2020-05-25 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95308
+ * g++.dg/torture/pr95308.C: New testcase.
+
+2020-05-25 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95295
+ * gcc.dg/torture/pr95295-1.c: New testcase.
+ * gcc.dg/torture/pr95295-2.c: Likewise.
+ * gcc.dg/torture/pr95283.c: Likewise.
+
+2020-05-25 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95271
+ * gcc.dg/vect/bb-slp-pr95271.c: New testcase.
+
+2020-05-25 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95297
+ * g++.dg/vect/pr95297.cc: New testcase.
+ * g++.dg/vect/pr95290.cc: Likewise.
+
+2020-05-25 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95284
+ * g++.dg/torture/pr95284.C: New testcase.
+
+2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/renaming16.adb: New test.
+ * gnat.dg/renaming16_pkg.ads: New helper.
+
+2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/array40.adb: New test.
+ * gnat.dg/array40_pkg.ads: New helper.
+
+2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/array39.adb: New test.
+ * gnat.dg/array39_pkg.ads: New helper.
+ * gnat.dg/array39_pkg.adb: Likewise.
+
+2020-05-25 Hongtao Liu <hongtao.liu@intel.com>
+
+ * gcc.target/i386/pr95125-avx.c: New test.
+ * gcc.target/i386/pr95125-avx512f.c: Ditto.
+
+2020-05-24 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95106
+ * gfortran.dg/equiv_11.f90: New test.
+
+2020-05-23 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94038
+ * g++.dg/warn/pr94038-3.C: New test.
+
+2020-05-22 Mark Wielaard <mark@klomp.org>
+
+ * gcc.dg/spellcheck-stdint.c: New test.
+ * g++.dg/spellcheck-stdint.C: Likewise.
+
+2020-05-22 Mark Wielaard <mark@klomp.org>
+
+ * gcc.dg/spellcheck-stdbool.c: New test.
+
+2020-05-22 Mark Wielaard <mark@klomp.org>
+
+ * gcc.dg/analyzer/signal-exit.c: New testcase.
+
+2020-05-22 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/95255
+ * gcc.target/i386/pr95255.c: New test.
+
+2020-05-22 Hongtao.liu <hongtao.liu@intel.com>
+
+ * gcc.target/i386/pr92658-avx512f.c: New test.
+ * gcc.target/i386/pr92658-avx512vl.c: Ditto.
+ * gcc.target/i386/pr92658-avx512bw-trunc.c: Ditto.
+
+2020-05-22 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95268
+ * g++.dg/torture/pr95268.C: New testcase.
+
+2020-05-22 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95248
+ * gcc.dg/torture/pr95248.c: New testcase.
+
+2020-05-21 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94038
+ * g++.dg/warn/pr94038-2.C: New test.
+
+2020-05-21 Martin Liska <mliska@suse.cz>
+
+ PR target/95229
+ * g++.target/i386/pr95229.C: Fix
+ error: unnamed type with no linkage used
+ to declare variable ‘<unnamed class> e’ with linkage
+ with -std=gnu++98.
+
+2020-05-21 Nathan Sidwell <nathan@acm.org>
+
+ * c-c++-common/cpp/cmd-1.c: Delete.
+ * c-c++-common/cpp/cmd-1.h: Delete.
+
+2020-05-21 Martin Liska <mliska@suse.cz>
+
+ * gcc.target/aarch64/target_attr_20.c: New test.
+ * gcc.target/aarch64/target_attr_21.c: New test.
+
+2020-05-20 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * g++.dg/warn/Wconversion-null-2.C: Add explicit declarations for l()
+ and g() with int, long, long long and __int20 arguments.
+ * g++.dg/warn/Wconversion-null.C: Likewise.
+
+2020-05-20 Marek Polacek <polacek@redhat.com>
+
+ DR 2237
+ * g++.dg/DRs/dr2237.C: New test.
+ * g++.dg/parse/constructor2.C: Add dg-error for C++20.
+ * g++.dg/parse/dtor12.C: Likewise.
+ * g++.dg/parse/dtor4.C: Likewise.
+ * g++.dg/template/dtor4.C: Adjust dg-error.
+ * g++.dg/template/error34.C: Likewise.
+ * g++.old-deja/g++.other/inline15.C: Only run for C++17 and lesses.
+ * g++.old-deja/g++.pt/ctor2.C: Add dg-error for C++20.
+
+2020-05-20 Marek Polacek <polacek@redhat.com>
+
+ DR 2289
+ PR c++/94553
+ * g++.dg/cpp1z/decomp52.C: New test.
+
+2020-05-20 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/95229
+ * g++.target/i386/pr95229.C: New test.
+
+2020-05-20 Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/39695
+ * gfortran.dg/pr39695_1.f90: New test.
+ * gfortran.dg/pr39695_2.f90: New test.
+ * gfortran.dg/pr39695_3.f90: New test.
+ * gfortran.dg/pr39695_4.f90: New test.
+
+2020-05-20 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/95223
+ * g++.dg/template/typename23.C: New test.
+
+2020-05-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ PR target/94959
+ * gcc.target/arm/mve/intrinsics/mve_vector_float2.c: Modify.
+ * gcc.target/arm/mve/intrinsics/mve_vldr.c: New test.
+ * gcc.target/arm/mve/intrinsics/mve_vldr_z.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vstr.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vstr_p.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_f16.c: Modify.
+ * gcc.target/arm/mve/intrinsics/vld1q_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_z_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_z_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_z_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_float.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_int.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c: Likewise.
+
+2020-05-20 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95219
+ * tree-vect-loop.c (vectorizable_induction): Reduce
+ group_size before computing the number of required IVs.
+
+2020-05-20 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/95231
+ * g++.dg/other/pr95231.C: New testcase.
+
+2020-05-30 Richard Biener <rguenther@suse.de>
+
+ PR c/95141
+ * gcc.dg/pr95141.c: New testcase.
+
+2020-05-19 Alex Coplan <alex.coplan@arm.com>
+
+ PR target/94591
+ * gcc.c-torture/execute/pr94591.c: New test.
+
+2020-05-19 Nathan Sidwell <nathan@acm.org>
+
+ * c-c++-common/raw-string-14.c: Adjust errors.
+ * c-c++-common/raw-string-16.c: Likewise.
+ * c-c++-common/raw-string-5.c: Likewise.
+
+2020-05-19 Richard Biener <rguenther@suse.de>
+
+ * gcc.target/i386/pr92645-4.c: Adjust expected pattern.
+
+2020-05-19 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * c-c++-common/builtin-has-attribute-7.c: Require size24plus.
+ * c-c++-common/cpp/pr63831-1.c: Store result in _has_cpp_attribute in a
+ long.
+ * c-c++-common/pr81376.c: Skip scan-tree-dump for short_eq_int. Extend
+ test for short_eq_int.
+ * g++.dg/abi/scoped1.C: Skip dg-warning tests for short_eq_int.
+ * g++.dg/cpp0x/constexpr-70001-1.C: Require size24plus.
+ * g++.dg/cpp0x/constexpr-bitfield3.C: Require int32plus.
+ * g++.dg/cpp0x/enum13.C: Skip dg-warning for short_eq_int.
+ * g++.dg/cpp0x/initlist5.C: Add dg-error for short_eq_int.
+ * g++.dg/cpp0x/initlist7.C: Add dg-warning for !int32plus.
+ * g++.dg/cpp0x/nullptr04.C: Skip dg-error for ptr_eq_short.
+ * g++.dg/cpp0x/variadic-value1.C: Add typedef for int32_t.
+ * g++.dg/cpp1y/constexpr-arith-overflow.C: Fix test for
+ sizeof(int) == sizeof(short).
+ * g++.dg/cpp1y/digit-sep-neg.C: Add typedef for int32_t.
+ * g++.dg/cpp1y/pr57644.C: Add typedef for uint32_t.
+ * g++.dg/cpp1y/pr77321.C: Require size24plus.
+ * g++.dg/cpp1y/var-templ4.C: Add typedef for int32_t.
+ * g++.dg/cpp1z/direct-enum-init1.C: Skip dg-error for short_eq_int.
+ * g++.dg/delayedfold/fwrapv1.C: Skip for int16.
+ * g++.dg/expr/bitfield9.C: Add typedef for int32_t.
+ * g++.dg/ext/attribute-test-1.C: Add typedef for uint32_t.
+ * g++.dg/ext/bitfield1.C: Add typedef for int32_t.
+ * g++.dg/ext/flexary13.C: Add typedef for int32_t.
+ * g++.dg/ext/utf-cvt.C: Adjust dg-warning for int16.
+ * g++.dg/ext/vector28.C: Add typedef for int32_t.
+ * g++.dg/ext/vla15.C: Add typedef for int32_t.
+ * g++.dg/init/array11.C: Require size32plus.
+ * g++.dg/init/array15.C: Require size24plus.
+ * g++.dg/init/array4.C: Require size20plus.
+ * g++.dg/init/const7.C: Skip dg-message for ptr_eq_short.
+ * g++.dg/init/new38.C: Relax regex in dg-error.
+ * g++.dg/init/new44.C: Skip dg-error for msp430_small.
+ Adjust test for 16-bit size_t.
+ Add special case for msp430 -mlarge.
+ * g++.dg/init/value9.C: Add typedef for int32_t.
+ * g++.dg/ipa/pr77333.C: Add typedef for int32_t.
+ * g++.dg/lto/20080908-1_0.C: Add typedef for int32_t.
+ * g++.dg/opt/pr55717.C: Add typedef for uint32_t.
+ * g++.dg/opt/pr60597.C: Add typedef for int32_t.
+ * g++.dg/opt/pr81715.C: Require size20plus.
+ * g++.dg/opt/reload3.C: Add typedef for uint32_t.
+ * g++.dg/opt/temp2.C: Require size20plus.
+ * g++.dg/opt/thunk1.C: Likewise.
+ * g++.dg/other/error23.C: Dont assume __SIZEOF_INT__ == 4.
+ * g++.dg/other/pr31078.C: Adjust typedef for 32-bit int.
+ * g++.dg/parse/concat1.C: Skip dg-error for size20plus.
+ * g++.dg/parse/defarg5.C: Add typedef for int32_t and uint32_t.
+ * g++.dg/pr48484.C: Add typedef for int32_t.
+ * g++.dg/pr53037-2.C: Likewise.
+ * g++.dg/pr53037-3.C: Likewise.
+ * g++.dg/pr66655.C: Use int32_t.
+ * g++.dg/pr66655.h: Add typedef for int32_t.
+ * g++.dg/pr66655_1.cc: Use int32_t.
+ * g++.dg/pr67351.C: Define 32-bit uint.
+ * g++.dg/template/array30.C: Add typedef for int32_t.
+ * g++.dg/template/constant1.C: Extend test for 8-bit and 16-bit int.
+ * g++.dg/template/constant2.C: Likewise.
+ * g++.dg/template/friend18.C: Add typedef for int32_t.
+ * g++.dg/template/pr68978.C: Likewise.
+ * g++.dg/torture/pr37421.C: Require int_eq_float.
+ * g++.dg/torture/pr88861.C: Handle 16-bit int.
+ * g++.dg/tree-ssa/pr19807.C: Likewise.
+ * g++.dg/tree-ssa/pr27291.C: Fix typedef for uint32_t.
+ * g++.dg/tree-ssa/pr49516.C: Fix typedefs for int{16,32}_t and
+ uint{32,64}_t.
+ * g++.dg/warn/Wconversion-integer.C: Add typedefs for {u,}int32_t.
+ * g++.dg/warn/Wconversion-null-2.C: Adjust g() declaration.
+ * g++.dg/warn/Wconversion-null.C: Likewise.
+ * g++.dg/warn/Wconversion3.C: Skip dg-warning for short_eq_int.
+ * g++.dg/warn/Wduplicated-branches1.C: Add dg-warning for short_eq_int.
+ * g++.dg/warn/Wplacement-new-size-5.C: Add typedef for int32_t.
+ * g++.dg/warn/Wplacement-new-size.C: Likewise.
+ * g++.dg/warn/Wstrict-aliasing-5.C: Add typedef for uint32_t.
+ * g++.dg/warn/Wstrict-aliasing-bogus-signed-unsigned.C: Add typedef for
+ {u,}int32_t.
+ * g++.dg/warn/Wtype-limits-Wextra.C: Adjust dg-warning for
+ short_eq_int.
+ * g++.dg/warn/Wtype-limits.C: Likewise.
+ * g++.old-deja/g++.brendan/enum11.C: Add typedef for uint32_t.
+ * g++.old-deja/g++.bugs/900227_01.C: Skip dg-error for ptr_eq_short.
+ * g++.old-deja/g++.mike/ns15.C: Require size20plus.
+ * g++.old-deja/g++.other/exprstmt1.C: Add typedef for uint32_t.
+ * g++.old-deja/g++.other/inline12.C: Adjust udword typedef.
+ * g++.old-deja/g++.other/new6.C: Add typedef for int32_t.
+ * g++.old-deja/g++.pt/crash16.C: Skip for int16.
+ * g++.old-deja/g++.robertl/eb76.C: Likewise.
+ * g++.old-deja/g++.warn/flow1.C: Add typedef for int32_t.
+ * gcc.dg/Walloca-14.c: Adjust -Walloca-larger-than= parameter for
+ !ptr32plus.
+ * gcc.dg/Warray-bounds-32.c: Adjust dg-warning for size20plus.
+ * gcc.dg/Wbuiltin-declaration-mismatch-4.c: Adjust dg-warning for
+ short_eq_int.
+ Handle case where ptrdiff_t/size_t is __int20.
+ * gcc.dg/concat2.c: Skip dg-error for size20plus.
+ * gcc.dg/fold-convmaxconv-1.c: Add typedef for {u,}int32_t.
+ * gcc.dg/fold-convminconv-1.c: Likewise.
+ * gcc.dg/graphite/scop-4.c: Require size20plus.
+ * gcc.dg/loop-versioning-1.c: Adjust test for small size_t.
+ * gcc.dg/loop-versioning-2.c: Require size20plus.
+ * gcc.dg/lto/20081210-1_0.c: Adjust typedef for uintptr_t.
+ * gcc.dg/lto/pr85870_0.c: Add typedef for uint32_t.
+ * gcc.dg/lto/pr85870_1.c: Likewise.
+ * gcc.dg/pr36227.c: Adjust typedef for ptrcast.
+ * gcc.dg/pr42611.c: First check for size_t equality with void *
+ before trying other types.
+ * gcc.dg/pr59963-2.c: Skip dg-warning for int16 instead of
+ xfail.
+ * gcc.dg/pr68317.c: Add typedef for int32_t.
+ * gcc.dg/pr78973.c: Adjust dg-warning for int16.
+ * gcc.dg/pr85859.c: Cast using __INTPTR_TYPE__ instead of long.
+ * gcc.dg/pr86179.c: Add typedef for {u,}int32_t.
+ * gcc.dg/torture/20181024-1.c: Require size32plus.
+ * gcc.dg/torture/pr71598-2.c: Skip for short_eq_int.
+ * gcc.dg/torture/pr86034.c: Add typedef for int32_t.
+ * gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Adjust dg-warning
+ for int16 and msp430 -mlarge.
+ * gcc.dg/tree-ssa/integer-addr.c: Use __INTPTR_MAX__ for a large
+ constant that is a valid address.
+ * gcc.dg/tree-ssa/loop-interchange-10.c: Add typedef for
+ int32_t.
+ * gcc.dg/tree-ssa/pr84436-3.c: Adjust dg-final for int16.
+ * gcc.dg/tree-ssa/pr84648.c: Add typedef for uint32_t.
+ * gcc.dg/tree-ssa/scev-8.c: Cast to char if sizeof(int) ==
+ sizeof(short).
+ * gcc.dg/tree-ssa/ssa-dom-thread-8.c: Adjust test for msp430 -mlarge.
+ * lib/target-supports.exp (check_effective_target_size24plus): New.
+ (check_effective_target_short_eq_int): New.
+ (check_effective_target_ptr_eq_short): New.
+ (check_effective_target_msp430_small): New.
+ (check_effective_target_msp430_large): New.
+
+2020-05-19 Jose E. Marchesi <jose.marchesi@oracle.com>
+
+ * gcc.target/bpf/xbpf-callee-saved-regs-1.c: New test.
+ * gcc.target/bpf/xbpf-callee-saved-regs-2.c: Likewise.
+
+2020-05-19 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/92658
+ * gcc.target/i386/pr92658-sse4.c: New test.
+ * gcc.target/i386/pr92658-avx2.c: New test.
+ * gcc.target/i386/pr92658-avx512bw.c: New test.
+
+2020-05-19 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.target/riscv/arch-6.c: New.
+ * gcc.target/riscv/attribute-11.c: New.
+ * gcc.target/riscv/attribute-12.c: New.
+
+2020-05-19 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.target/riscv/arch-3.c: Adjust option.
+ * gcc.target/riscv/arch-5.c: New.
+ * gcc.target/riscv/attribute-9.c: Adjust option and test
+ condition.
+
+2020-05-19 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/66439
+ * g++.dg/cpp2a/concepts-ts4.C: Expect a "type/value mismatch"
+ diagnostic.
+ * g++.dg/cpp2a/concepts-ts6.C: Likewise.
+ * g++.dg/template/error56.C: Likewise.
+ * g++.dg/template/error59.C: New test.
+
+2020-05-18 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94955
+ * g++.dg/cpp0x/constexpr-shift2.C: New test.
+
+2020-05-18 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94937
+ * g++.dg/cpp1z/constexpr-if34.C: New test.
+ * g++.dg/cpp2a/is-constant-evaluated10.C: New test.
+
+2020-05-18 Martin Sebor <msebor@redhat.com>
+
+ PR c++/94923
+ * g++.dg/Wclass-memaccess.C: Add tests for std::byte.
+
+2020-05-18 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/92815
+ * gcc.dg/builtin-object-size-20.c: Adjust to avoid failures in
+ ILP32 mode.
+
+2020-05-18 Marek Polacek <polacek@redhat.com>
+
+ PR c++/90915
+ * g++.dg/ext/builtin-has-attribute.C: New test.
+
+2020-05-18 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/92815
+ * gcc.dg/Warray-bounds-56.c: Remove xfails.
+ * gcc.dg/builtin-object-size-20.c: New test.
+ * gcc.dg/builtin-object-size-21.c: New test.
+
+2020-05-18 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/94940
+ * gcc.dg/Warray-bounds-61.c: New test.
+
+2020-05-18 Marek Polacek <polacek@redhat.com>
+
+ DR 1512
+ PR c++/87699
+ * g++.dg/cpp0x/constexpr-array-ptr10.C: Change dg-warning to dg-error
+ and adjust the expected messages in dg-error.
+ * g++.dg/expr/composite-ptr-type.C: New test.
+ * g++.dg/expr/ptr-comp1.C: New test.
+ * g++.dg/expr/ptr-comp2.C: New test.
+ * g++.dg/expr/ptr-comp3.C: New test.
+ * g++.dg/overload/builtin4.C: New test.
+ * g++.dg/warn/Wextra-3.C: Change dg-warning to dg-error.
+
+2020-05-18 Marek Polacek <polacek@redhat.com>
+
+ * g++.dg/overload/builtin5.C: New test.
+
+2020-05-18 Doug Rupp <rupp@adacore.com>
+
+ * gcc.target/powerpc/pr71763.c: Require powerpc_vsx_ok.
+
+2020-05-18 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95053
+ * gfortran.dg/dec_structure_23.f90: Adjust to new error messages.
+ * gfortran.dg/pr93499.f90: Adjust to new error messages.
+ * gfortran.dg/pr95053_2.f90: New test.
+ * gfortran.dg/pr95053_3.f90: New test.
+
+2020-05-18 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95143
+ * g++.dg/cpp0x/sfinae66.C: New test.
+
+2020-05-18 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/95169
+ * gcc.target/i386/pr95169.c: New test.
+
+2020-05-18 Alex Coplan <alex.coplan@arm.com>
+
+ * gcc.c-torture/compile/packed-aligned-1.c: New test.
+ * gcc.c-torture/execute/packed-aligned.c: New test.
+
+2020-05-18 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/95171
+ * gcc.dg/pr95171.c: New testcase.
+
+2020-05-18 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95172
+ * gcc.dg/torture/pr95172.c: New testcase.
+
+2020-05-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/95021
+ * c-c++-common/dfp/func-vararg-mixed-2.c: Removed.
+ * gcc.target/i386/pr95021-1.c: New test.
+ * gcc.target/i386/pr95021-2.c: Likewise.
+ * gcc.target/i386/pr95021-3.c: Likewise.
+ * gcc.target/i386/pr95021-4.c: Likewise.
+ * gcc.target/i386/pr95021-5.c: Likewise.
+
+2020-05-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ * gcc.target/i386/strncmp-1.c: New test.
+
+2020-05-16 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/co-return-syntax-10-movable.C: New test.
+
+2020-05-16 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/57943
+ * g++.dg/cpp0x/decltype76.C: New test.
+
+2020-05-15 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/coroutines/coro.h: Always #include <utility>.
+ * g++.dg/coroutines/coroutines.exp (DEFAULT_COROFLAGS): Use
+ -std=c++20.
+
+2020-05-15 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * gcc.target/powerpc/vec-gnb-0.c: Use int128 effective target.
+ * gcc.target/powerpc/vec-gnb-1.c: Ditto.
+ * gcc.target/powerpc/vec-gnb-2.c: Ditto.
+ * gcc.target/powerpc/vec-ternarylogic-8.c: Ditto.
+ * gcc.target/powerpc/vec-ternarylogic-9.c: Ditto.
+ * gcc.target/powerpc/vec-ternarylogic-10.c: Ditto.
+
+2020-05-15 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * gcc.target/powerpc/cnttzdm-0.c: Use lp64.
+
+2020-05-15 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * gcc.target/powerpc/cntlzdm-0.c: Use lp64 instead of powerpc64.
+ * gcc.target/powerpc/cntlzdm-1.c: Ditto.
+ * gcc.target/powerpc/cnttzdm-1.c: Ditto.
+ * gcc.target/powerpc/pdep-0.c: Ditto.
+ * gcc.target/powerpc/pdep-1.c: Ditto.
+ * gcc.target/powerpc/pextd-0.c: Ditto.
+ * gcc.target/powerpc/pextd-1.c: Ditto.
+
+2020-05-15 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * gcc.target/powerpc/pdep-0.c: Change -mcpu= to -mdejagnu-cpu=.
+ * gcc.target/powerpc/pdep-1.c: Ditto.
+ * gcc.target/powerpc/pextd-0.c: Ditto.
+ * gcc.target/powerpc/pextd-1.c: Ditto.
+ * gcc.target/powerpc/pr90763.c: Ditto.
+ * gcc.target/powerpc/pr91275.c: Ditto.
+ * gcc.target/powerpc/pr92796.c: Ditto.
+ * gcc.target/powerpc/pr93658.c: Ditto.
+ * gcc.target/powerpc/pr93800.c: Ditto.
+ * gcc.target/powerpc/setbceq.c: Ditto.
+ * gcc.target/powerpc/setbcge.c: Ditto.
+ * gcc.target/powerpc/setbcgt.c: Ditto.
+ * gcc.target/powerpc/setbcle.c: Ditto.
+ * gcc.target/powerpc/setbclt.c: Ditto.
+ * gcc.target/powerpc/setbcne.c: Ditto.
+ * gcc.target/powerpc/setnbceq.c: Ditto.
+ * gcc.target/powerpc/setnbcge.c: Ditto.
+ * gcc.target/powerpc/setnbcgt.c: Ditto.
+ * gcc.target/powerpc/setnbcle.c: Ditto.
+ * gcc.target/powerpc/setnbclt.c: Ditto.
+ * gcc.target/powerpc/setnbcne.c: Ditto.
+ * gcc.target/powerpc/xxgenpc-runnable.c: Ditto.
+
+2020-05-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/90996
+ * g++.dg/cpp1y/pr90996.C: Turn into execution test to verify that each
+ PLACEHOLDER_EXPR gets correctly resolved.
+
+2020-05-15 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/94690
+ * gfortran.dg/gomp/openmp-simd-4.f90: New test.
+
+2020-05-15 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95133
+ * gcc.dg/pr95133.c: New testcase.
+
+2020-05-15 Tobias Burnus <tobias@codesourcery.com>
+
+ PR middle-end/94635
+ * gfortran.dg/gomp/target-exit-data.f90: New.
+
+2020-05-15 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/95046
+ * gcc.target/i386/pr95046-8.c: New test.
+
+2020-05-15 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/33315
+ * gcc.dg/tree-ssa/ssa-sink-13.c: New testcase.
+ * gcc.dg/tree-ssa/ssa-sink-14.c: Likewise.
+ * gcc.dg/tree-ssa/split-path-7.c: Disable sinking.
+
+2020-05-14 Xiong Hu Luo <luoxhu@linux.ibm.com>
+
+ PR rtl-optimization/37451, part of PR target/61837
+ * gcc.target/powerpc/doloop-2.c: New test.
+
+2020-05-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR jit/94778
+ * jit.dg/jit.exp: Skip jit tests for targets that don't support
+ -lgccjit.
+ * lib/target-supports.exp (check_effective_target_lgccjit): New.
+
+2020-05-14 Andrew Stubbs <ams@codesourcery.com>
+
+ * testsuite/gcc.target/gcn/gcn.exp: New file.
+ * testsuite/gcc.target/gcn/vcc-clobber.c: New file.
+
+2020-05-14 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/95046
+ * gcc.target/i386/pr95046-7.c: New test.
+
+2020-05-14 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/78446
+ * g++.dg/template/sfinae31.C: New test.
+
+2020-05-14 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/95046
+ * gcc.target/i386/pr95046-6.c: New test.
+
+2020-05-14 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/95105
+ * gcc.target/aarch64/sve/acle/general/attributes_8.c: New test.
+ * g++.target/aarch64/sve/acle/general-c++/attributes_1.C: Likewise.
+
+2020-05-14 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/94703
+ * gcc.dg/tree-ssa/pr94703.c: Skip for strict-align targets.
+
+2020-05-14 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/95118
+ * gcc.dg/pr95118.c: New testcase.
+
+2020-05-14 Jakub Jelinek <jakub@redhat.com>
+
+ * c-c++-common/gomp/declare-variant-14.c: New test.
+
+ PR middle-end/95108
+ * gcc.dg/gomp/pr95108.c: New test.
+
+2020-05-14 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/95046
+ * gcc.target/i386/pr95046-5.c: New test.
+
+2020-05-14 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ * gcc.target/s390/stack-clash-2.c: New test.
+
+2020-05-14 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ * gcc.target/s390/stack-clash-1.c: New test.
+
+2020-05-14 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ * gcc.target/s390/stack-clash-3.c: New test.
+
+2020-05-13 Kelvin Nilsen <kelvin@gcc.gnu.org>
+
+ * gcc.target/powerpc/vec-extracth-0.c: New.
+ * gcc.target/powerpc/vec-extracth-1.c: New.
+ * gcc.target/powerpc/vec-extracth-2.c: New.
+ * gcc.target/powerpc/vec-extracth-3.c: New.
+ * gcc.target/powerpc/vec-extracth-4.c: New.
+ * gcc.target/powerpc/vec-extracth-5.c: New.
+ * gcc.target/powerpc/vec-extracth-6.c: New.
+ * gcc.target/powerpc/vec-extracth-7.c: New.
+ * gcc.target/powerpc/vec-extracth-be-0.c: New.
+ * gcc.target/powerpc/vec-extracth-be-1.c: New.
+ * gcc.target/powerpc/vec-extracth-be-2.c: New.
+ * gcc.target/powerpc/vec-extracth-be-3.c: New.
+ * gcc.target/powerpc/vec-extractl-0.c: New.
+ * gcc.target/powerpc/vec-extractl-1.c: New.
+ * gcc.target/powerpc/vec-extractl-2.c: New.
+ * gcc.target/powerpc/vec-extractl-3.c: New.
+ * gcc.target/powerpc/vec-extractl-4.c: New.
+ * gcc.target/powerpc/vec-extractl-5.c: New.
+ * gcc.target/powerpc/vec-extractl-6.c: New.
+ * gcc.target/powerpc/vec-extractl-7.c: New.
+ * gcc.target/powerpc/vec-extractl-be-0.c: New.
+ * gcc.target/powerpc/vec-extractl-be-1.c: New.
+ * gcc.target/powerpc/vec-extractl-be-2.c: New.
+ * gcc.target/powerpc/vec-extractl-be-3.c: New.
+
+2020-05-13 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/79706
+ * g++.dg/template/sfinae30.C: New test.
+
+2020-05-13 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/95020
+ * g++.dg/cpp2a/concepts-lambda7.C: New test.
+
+2020-05-13 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95066
+ * g++.dg/cpp2a/explicit16.C: New test.
+
+2020-05-13 Jason Merrill <jason@redhat.com>
+
+ * lib/target-supports.exp (check_effective_target_c++20_only)
+ (check_effective_target_c++20): New.
+
+2020-05-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR testsuite/95110
+ * gcc.dg/tree-ssa/pr94969.c: Swap scan-tree-dump-not arguments.
+
+2020-05-13 Marek Polacek <polacek@redhat.com>
+
+ * g++.dg/parse/attr4.C: Use c++11 in a target selector.
+
+2020-05-13 Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/93497
+ * gfortran.dg/pr88025.f90: Change in wording of error.
+ * gfortran.dg/pr93497.f90: New test.
+ * gfortran.dg/pr93714_1.f90: Change in wording of errors.
+ * gfortran.dg/pr93714_2.f90: Change in wording of errors.
+
+2020-05-13 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/70642
+ * g++.dg/cpp0x/alias-decl-70.C: New test.
+
+2020-05-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/95080
+ * g++.dg/opt/pr95080.C: New test.
+
+ PR tree-optimization/95060
+ * gcc.target/i386/avx512f-pr95060.c: New test.
+ * gcc.target/i386/fma_double_1.c: Adjust expected insn counts.
+ * gcc.target/i386/fma_double_2.c: Likewise.
+ * gcc.target/i386/fma_double_3.c: Likewise.
+ * gcc.target/i386/fma_double_4.c: Likewise.
+ * gcc.target/i386/fma_double_5.c: Likewise.
+ * gcc.target/i386/fma_double_6.c: Likewise.
+ * gcc.target/i386/fma_float_1.c: Likewise.
+ * gcc.target/i386/fma_float_2.c: Likewise.
+ * gcc.target/i386/fma_float_3.c: Likewise.
+ * gcc.target/i386/fma_float_4.c: Likewise.
+ * gcc.target/i386/fma_float_5.c: Likewise.
+ * gcc.target/i386/fma_float_6.c: Likewise.
+ * gcc.target/i386/l_fma_double_1.c: Likewise.
+ * gcc.target/i386/l_fma_double_2.c: Likewise.
+ * gcc.target/i386/l_fma_double_3.c: Likewise.
+ * gcc.target/i386/l_fma_double_4.c: Likewise.
+ * gcc.target/i386/l_fma_double_5.c: Likewise.
+ * gcc.target/i386/l_fma_double_6.c: Likewise.
+ * gcc.target/i386/l_fma_float_1.c: Likewise.
+ * gcc.target/i386/l_fma_float_2.c: Likewise.
+ * gcc.target/i386/l_fma_float_3.c: Likewise.
+ * gcc.target/i386/l_fma_float_4.c: Likewise.
+ * gcc.target/i386/l_fma_float_5.c: Likewise.
+ * gcc.target/i386/l_fma_float_6.c: Likewise.
+
+2020-05-13 Martin Liska <mliska@suse.cz>
+
+ PR sanitizer/95051
+ * gcc.dg/asan/pr95051.c: Simplify options as -fsanitize=address
+ and -O2 were enough to trigger the original ICE.
+
+2020-05-13 Christophe Lyon <christophe.lyon@linaro.org>
+
+ PR preprocessor/95013
+ * gcc.dg/unclosed-init.c: Add missing comment in dg-error.
+
+2020-05-13 Bin Cheng <bin.cheng@linux.alibaba.com>
+
+ PR tree-optimization/94969
+ * gcc.dg/tree-ssa/pr94969.c: New test.
+
+2020-05-12 Craig Blackmore <craig.blackmore@embecosm.com>
+
+ * gcc.target/riscv/shorten-memrefs-1.c: New test.
+ * gcc.target/riscv/shorten-memrefs-2.c: New test.
+ * gcc.target/riscv/shorten-memrefs-3.c: New test.
+ * gcc.target/riscv/shorten-memrefs-4.c: New test.
+ * gcc.target/riscv/shorten-memrefs-5.c: New test.
+ * gcc.target/riscv/shorten-memrefs-6.c: New test.
+ * gcc.target/riscv/shorten-memrefs-7.c: New test.
+
+2020-05-12 Nathan Sidwell <nathan@acm.org>
+
+ PR preprocessor/95013
+ * c-c++-common/goacc/pr79428-1.c: Adjust EOF diagnostic location.
+ * c-c++-common/gomp/pr79428-2.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/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.
+ * gcc.dg/empty-source-2.c: Likewise.
+ * gcc.dg/empty-source-3.c: Likewise.
+ * gcc.dg/noncompile/pr30552-3.c: Likewise.
+ * gcc.dg/noncompile/pr35447-1.c: Likewise.
+ * gcc.dg/pr20245-1.c: Likewise.
+ * gcc.dg/pr28419.c: Likewise.
+ * gcc.dg/rtl/truncated-rtl-file.c: Likewise.
+ * gcc.dg/unclosed-init.c: Likewise.
+ * obj-c++.dg/property/property-neg-6.mm: Likewise.
+ * obj-c++.dg/syntax-error-10.mm: Likewise.
+ * obj-c++.dg/syntax-error-8.mm: Likewise.
+ * obj-c++.dg/syntax-error-9.mm: Likewise.
+
+2020-05-12 Marek Polacek <polacek@redhat.com>
+
+ PR c++/95074
+ * g++.dg/lookup/koenig15.C: New test.
+
+2020-05-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/95051
+ * gcc.dg/asan/pr95051.c: Add -fno-sanitize=all to dg-options.
+
+2020-05-12 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/95046
+ * gcc.target/i386/pr95046-4.c: New test.
+
+2020-05-12 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/78752
+ * g++.dg/cpp2a/concepts-pr78752-2.C: New test.
+
+2020-05-12 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/95046
+ * gcc.target/i386/pr95046-3.c: New test.
+
+2020-05-12 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/95046
+ * gcc.target/i386/pr95046-2.c: New test.
+
+2020-05-12 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * gcc.c-torture/execute/noinit-attribute.c: Skip for msp430
+ in the large memory model.
+
+2020-05-12 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * gcc.target/msp430/region-attribute-misuse.c: Allow a .bss section to
+ be created.
+
+2020-05-12 Martin Liska <mliska@suse.cz>
+
+ PR sanitizer/95033
+ PR sanitizer/95051
+ * g++.dg/asan/function-argument-4.C: New test.
+ * gcc.dg/asan/pr95033.c: New test.
+ * gcc.dg/asan/pr95051.c: New test.
+
+2020-05-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/95063
+ * g++.dg/gomp/pr95063.C: New test.
+
+2020-05-12 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR tree-optimization/94980
+ * gcc.target/i386/pr94980.c: New test.
+
+2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
+
+ * gcc.target/powerpc/vec-clzm-0.c: Rename to...
+ * gcc.target/powerpc/vec-cntlzm-0.c: ...this.
+ * gcc.target/powerpc/vec-clzm-1.c: Rename to...
+ * gcc.target/powerpc/vec-cntlzm-1.c: ...this.
+ * gcc.target/powerpc/vec-ctzm-0.c: Rename to...
+ * gcc.target/powerpc/vec-cnttzm-0.c: ...this.
+ * gcc.target/powerpc/vec-ctzm-1.c: Rename to...
+ * gcc.target/powerpc/vec-cnttzm-1.c: ...this.
+ * gcc.target/powerpc/vec-gnb-8.c: Rename to...
+ * gcc.target/powerpc/vec-gnb-0.c: ...this, deleting the old file.
+ * gcc.target/powerpc/vec-gnb-9.c: Rename to...
+ * gcc.target/powerpc/vec-gnb-1.c: ...this, deleting the old file.
+ * gcc.target/powerpc/vec-gnb-10.c: Rename to...
+ * gcc.target/powerpc/vec-gnb-2.c: ...this, deleting the old file.
+ * gcc.target/powerpc/vec-gnb-3.c: Delete.
+ * gcc.target/powerpc/vec-gnb-4.c: Delete.
+ * gcc.target/powerpc/vec-gnb-5.c: Delete.
+ * gcc.target/powerpc/vec-gnb-6.c: Delete.
+ * gcc.target/powerpc/vec-gnb-7.c: Delete.
+
+2020-05-11 Carl Love <cel@us.ibm.com>
+
+ * gcc.target/powerpc/xxgenpc-runnable.c: New.
+
+2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
+
+ * gcc.target/powerpc/vec-stril-0.c: New.
+ * gcc.target/powerpc/vec-stril-1.c: New.
+ * gcc.target/powerpc/vec-stril-10.c: New.
+ * gcc.target/powerpc/vec-stril-11.c: New.
+ * gcc.target/powerpc/vec-stril-12.c: New.
+ * gcc.target/powerpc/vec-stril-13.c: New.
+ * gcc.target/powerpc/vec-stril-14.c: New.
+ * gcc.target/powerpc/vec-stril-15.c: New.
+ * gcc.target/powerpc/vec-stril-16.c: New.
+ * gcc.target/powerpc/vec-stril-17.c: New.
+ * gcc.target/powerpc/vec-stril-18.c: New.
+ * gcc.target/powerpc/vec-stril-19.c: New.
+ * gcc.target/powerpc/vec-stril-2.c: New.
+ * gcc.target/powerpc/vec-stril-20.c: New.
+ * gcc.target/powerpc/vec-stril-21.c: New.
+ * gcc.target/powerpc/vec-stril-22.c: New.
+ * gcc.target/powerpc/vec-stril-23.c: New.
+ * gcc.target/powerpc/vec-stril-3.c: New.
+ * gcc.target/powerpc/vec-stril-4.c: New.
+ * gcc.target/powerpc/vec-stril-5.c: New.
+ * gcc.target/powerpc/vec-stril-6.c: New.
+ * gcc.target/powerpc/vec-stril-7.c: New.
+ * gcc.target/powerpc/vec-stril-8.c: New.
+ * gcc.target/powerpc/vec-stril-9.c: New.
+ * gcc.target/powerpc/vec-stril_p-0.c: New.
+ * gcc.target/powerpc/vec-stril_p-1.c: New.
+ * gcc.target/powerpc/vec-stril_p-10.c: New.
+ * gcc.target/powerpc/vec-stril_p-11.c: New.
+ * gcc.target/powerpc/vec-stril_p-2.c: New.
+ * gcc.target/powerpc/vec-stril_p-3.c: New.
+ * gcc.target/powerpc/vec-stril_p-4.c: New.
+ * gcc.target/powerpc/vec-stril_p-5.c: New.
+ * gcc.target/powerpc/vec-stril_p-6.c: New.
+ * gcc.target/powerpc/vec-stril_p-7.c: New.
+ * gcc.target/powerpc/vec-stril_p-8.c: New.
+ * gcc.target/powerpc/vec-stril_p-9.c: New.
+ * gcc.target/powerpc/vec-strir-0.c: New.
+ * gcc.target/powerpc/vec-strir-1.c: New.
+ * gcc.target/powerpc/vec-strir-10.c: New.
+ * gcc.target/powerpc/vec-strir-11.c: New.
+ * gcc.target/powerpc/vec-strir-12.c: New.
+ * gcc.target/powerpc/vec-strir-13.c: New.
+ * gcc.target/powerpc/vec-strir-14.c: New.
+ * gcc.target/powerpc/vec-strir-15.c: New.
+ * gcc.target/powerpc/vec-strir-16.c: New.
+ * gcc.target/powerpc/vec-strir-17.c: New.
+ * gcc.target/powerpc/vec-strir-18.c: New.
+ * gcc.target/powerpc/vec-strir-19.c: New.
+ * gcc.target/powerpc/vec-strir-2.c: New.
+ * gcc.target/powerpc/vec-strir-20.c: New.
+ * gcc.target/powerpc/vec-strir-21.c: New.
+ * gcc.target/powerpc/vec-strir-22.c: New.
+ * gcc.target/powerpc/vec-strir-23.c: New.
+ * gcc.target/powerpc/vec-strir-3.c: New.
+ * gcc.target/powerpc/vec-strir-4.c: New.
+ * gcc.target/powerpc/vec-strir-5.c: New.
+ * gcc.target/powerpc/vec-strir-6.c: New.
+ * gcc.target/powerpc/vec-strir-7.c: New.
+ * gcc.target/powerpc/vec-strir-8.c: New.
+ * gcc.target/powerpc/vec-strir-9.c: New.
+ * gcc.target/powerpc/vec-strir_p-0.c: New.
+ * gcc.target/powerpc/vec-strir_p-1.c: New.
+ * gcc.target/powerpc/vec-strir_p-10.c: New.
+ * gcc.target/powerpc/vec-strir_p-11.c: New.
+ * gcc.target/powerpc/vec-strir_p-2.c: New.
+ * gcc.target/powerpc/vec-strir_p-3.c: New.
+ * gcc.target/powerpc/vec-strir_p-4.c: New.
+ * gcc.target/powerpc/vec-strir_p-5.c: New.
+ * gcc.target/powerpc/vec-strir_p-6.c: New.
+ * gcc.target/powerpc/vec-strir_p-7.c: New.
+ * gcc.target/powerpc/vec-strir_p-8.c: New.
+ * gcc.target/powerpc/vec-strir_p-9.c: New.
+
+2020-05-11 Kelvin Nilsen <wschmidt@linux.ibm.com>
+
+ * gcc.target/powerpc/vec-ternarylogic-0.c: New.
+ * gcc.target/powerpc/vec-ternarylogic-1.c: New.
+ * gcc.target/powerpc/vec-ternarylogic-10.c: New.
+ * gcc.target/powerpc/vec-ternarylogic-2.c: New.
+ * gcc.target/powerpc/vec-ternarylogic-3.c: New.
+ * gcc.target/powerpc/vec-ternarylogic-4.c: New.
+ * gcc.target/powerpc/vec-ternarylogic-5.c: New.
+ * gcc.target/powerpc/vec-ternarylogic-6.c: New.
+ * gcc.target/powerpc/vec-ternarylogic-7.c: New.
+ * gcc.target/powerpc/vec-ternarylogic-8.c: New.
+ * gcc.target/powerpc/vec-ternarylogic-9.c: New.
+
+2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
+
+ * gcc.target/powerpc/pdep-0.c: New.
+ * gcc.target/powerpc/pdep-1.c: New.
+ * gcc.target/powerpc/pextd-0.c: New.
+ * gcc.target/powerpc/pextd-1.c: New.
+
+2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
+
+ * gcc.target/powerpc/vec-clrl-0.c: New.
+ * gcc.target/powerpc/vec-clrl-1.c: New.
+ * gcc.target/powerpc/vec-clrr-0.c: New.
+ * gcc.target/powerpc/vec-clrr-1.c: New.
+
+2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
+
+ * gcc.target/powerpc/cntlzdm-0.c: New test.
+ * gcc.target/powerpc/cntlzdm-1.c: New test.
+ * gcc.target/powerpc/cnttzdm-0.c: New test.
+ * gcc.target/powerpc/cnttzdm-1.c: New test.
+
+2020-05-11 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/95053
+ * gfortran.dg/pr95053.f: New test.
+
+2020-05-11 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/95046
+ * gcc.target/i386/pr95046-1.c (test_sqrt): Add.
+
+2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
+
+ * gcc.target/powerpc/vec-cfuged-0.c: New test.
+ * gcc.target/powerpc/vec-cfuged-1.c: New test.
+
+2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
+
+ * gcc.target.powerpc/cfuged-0.c: New test.
+ * gcc.target.powerpc/cfuged-1.c: New test.
+
+2020-05-11 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/95049
+ * gcc.dg/torture/pr95049.c: New testcase.
+
+2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
+ Bill Schmidt <wschmidt@linux.ibm.com>
+
+ * gcc.target/powerpc/vec-gnb-0.c: New test.
+ * gcc.target/powerpc/vec-gnb-1.c: New test.
+ * gcc.target/powerpc/vec-gnb-10.c: New test.
+ * gcc.target/powerpc/vec-gnb-2.c: New test.
+ * gcc.target/powerpc/vec-gnb-3.c: New test.
+ * gcc.target/powerpc/vec-gnb-4.c: New test.
+ * gcc.target/powerpc/vec-gnb-5.c: New test.
+ * gcc.target/powerpc/vec-gnb-6.c: New test.
+ * gcc.target/powerpc/vec-gnb-7.c: New test.
+ * gcc.target/powerpc/vec-gnb-8.c: New test.
+ * gcc.target/powerpc/vec-gnb-9.c: New test.
+
+2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
+
+ * gcc.target/powerpc/vec-pdep-0.c: New.
+ * gcc.target/powerpc/vec-pdep-1.c: New.
+ * gcc.target/powerpc/vec-pext-0.c: New.
+ * gcc.target/powerpc/vec-pext-1.c: New.
+
+2020-05-11 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/94988
+ PR tree-optimization/95025
+ * gcc.dg/torture/pr94988.c: New testcase.
+ * gcc.dg/torture/pr95025.c: Likewise.
+ * gcc.dg/torture/pr95045.c: Likewise.
+ * g++.dg/asan/pr95025.C: New testcase.
+
+2020-05-11 Jakub Jelinek <jakub@redhat.com>
+ Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/94672
+ * gfortran.dg/gomp/pr94672.f90: New.
+ * gfortran.dg/missing_optional_dummy_6a.f90: Update scan-tree.
+
+2020-05-11 Felix Yang <felix.yang@huawei.com>
+
+ PR target/94991
+ * gcc.target/aarch64/mgeneral-regs_5.c: New test.
+
+2020-05-11 Alex Coplan <alex.coplan@arm.com>
+
+ * gcc.target/aarch64/csinv-neg.c: New test.
+
+2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
+
+ * gcc.target/powerpc/vec-clzm-0.c: New test.
+ * gcc.target/powerpc/vec-clzm-1.c: New test.
+ * gcc.target/powerpc/vec-ctzm-0.c: New test.
+ * gcc.target/powerpc/vec-ctzm-1.c: New test.
+
+2020-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
+
+ * gcc.target/powerpc/dg-future-0.c: New.
+ * gcc.target/powerpc/dg-future-1.c: New.
+ * lib/target-supports.exp (check_powerpc_future_hw_available):
+ Replace -mfuture with -mcpu=future.
+ (check_effective_target_powerpc_future_ok): Likewise.
+ (is-effective-target): Add powerpc_future_hw.
+
+2020-05-11 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc/testsuite/g++.dg/ipa/pr94856.C: Require fgnu-tm.
+
+2020-05-11 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/95046
+ * gcc.target/i386/pr95046-1.c: New test.
+
+2020-05-11 Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/59107
+ * gfortran.dg/pr59107.f90: New test.
+
+2020-05-11 Xiong Hu Luo <luoxhu@linux.ibm.com>
+
+ PR tree-optimization/83403
+ * gcc.dg/tree-ssa/pr83403-1.c: New test.
+ * gcc.dg/tree-ssa/pr83403-2.c: New test.
+ * gcc.dg/tree-ssa/pr83403.h: New header.
+
+2020-05-10 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/93499
+ * gfortran.dg/pr93499.f90: New test.
+
+2020-05-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR testsuite/95008
+ * gcc.dg/two-types-6.c: Remove dg-warning directive that never
+ triggered.
+ * gcc.dg/analyzer/pr93382.c: Properly escape ()s in the diagnostic
+ message.
+
+2020-05-09 Hans-Peter Nilsson <hp@axis.com>
+
+ * gcc.target/cris/: Adjust for removing crisv32-* and cris-linux-*.
+ * gcc.dg/20020919-1.c, gcc.dg/pr31866.c, gcc.dg/pr46647.c,
+ gcc.dg/sibcall-10.c, gcc.dg/sibcall-3.c, gcc.dg/sibcall-4.c,
+ gcc.dg/sibcall-9.c, gcc.dg/torture/cris-asm-mof-1.c,
+ gcc.dg/torture/cris-volatile-1.c, gcc.dg/torture/pr38948.c,
+ gcc.dg/tree-ssa/20040204-1.c, gcc.dg/tree-ssa/loop-1.c,
+ gcc.dg/weak/typeof-2.c, lib/target-supports.exp: Remove remaining
+ traces of crisv32-*.
+
+2020-05-08 Vladimir Makarov <vmakarov@redhat.com>
+
+ * gcc.target/i386/pr92807-1.c: Improve the regex.
+
+2020-05-08 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/95003
+ * g++.dg/coroutines/torture/pr95003.C: New test.
+
+2020-05-08 Nathan Sidwell <nathan@acm.org>
+
+ * gcc.dg/cpp/counter-[23].c: Move to c-c+_-common/cpp.
+ * gcc.dg/cpp/dir-only-*: Likewise.
+ * c-c++-common/cpp/dir-only-[78].c: New.
+
+2020-05-08 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/bb-slp-pr68892.c: Adjust for not supported
+ SLP permutations becoming builds from scalars.
+ * gcc.dg/vect/bb-slp-pr78205.c: Likewise.
+ * gcc.dg/vect/bb-slp-34.c: Likewise.
+
+2020-05-08 Nathan Sidwell <nathan@acm.org>
+
+ * c-c++-common/raw-string-6.c: Adjust EOF error location.
+ * 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/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/crash10.C: Likewise.
+ * g++.dg/parse/crash18.C: Likewise.
+ * g++.dg/parse/crash35.C: Likewise.
+ * g++.dg/parse/crash59.C: Likewise.
+ * g++.dg/parse/crash61.C: Likewise.
+ * g++.dg/parse/crash67.C: Likewise.
+ * g++.dg/parse/ctor3.C: Likewise.
+ * g++.dg/parse/error14.C: Likewise.
+ * g++.dg/parse/error5.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/pr46852.C: Likewise.
+ * g++.dg/pr46868.C: Likewise.
+ * g++.dg/template/crash115.C: Likewise.
+ * g++.dg/template/crash43.C: Likewise.
+ * g++.dg/template/error-recovery1.C: Likewise.
+ * g++.dg/template/error57.C: Likewise.
+ * g++.old-deja/g++.other/crash31.C: Likewise.
+
+2020-05-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/addr15.adb: New test.
+
+2020-05-08 Richard Biener <rguenther@suse.de>
+
+ * gnat.dg/opt83.adb: New testcase.
+
+2020-05-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/94786
+ * gcc.dg/tree-ssa/pr94786.c: New test.
+
+ PR target/94857
+ * gcc.target/i386/pr94857.c: New test.
+
+ PR tree-optimization/94783
+ * gcc.dg/tree-ssa/pr94783.c: New test.
+
+ PR tree-optimization/94956
+ * gcc.target/i386/pr94956.c: New test.
+
+ PR tree-optimization/94913
+ * gcc.dg/tree-ssa/pr94913.c: New test.
+
+2020-05-07 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * gcc.target/powerpc/setnbc.h: New.
+ * gcc.target/powerpc/setnbceq.c: New.
+ * gcc.target/powerpc/setnbcge.c: New.
+ * gcc.target/powerpc/setnbcgt.c: New.
+ * gcc.target/powerpc/setnbcle.c: New.
+ * gcc.target/powerpc/setnbclt.c: New.
+ * gcc.target/powerpc/setnbcne.c: New.
+
+2020-05-07 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * gcc.target/powerpc/setbc.h: New.
+ * gcc.target/powerpc/setbceq.c: New.
+ * gcc.target/powerpc/setbcge.c: New.
+ * gcc.target/powerpc/setbcgt.c: New.
+ * gcc.target/powerpc/setbcle.c: New.
+ * gcc.target/powerpc/setbclt.c: New.
+ * gcc.target/powerpc/setbcne.c: New.
+
+2020-05-07 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/94817
+ PR c++/94829
+ * g++.dg/coroutines/coro-missing-final-suspend.C: New test.
+ * g++.dg/coroutines/coro-missing-initial-suspend.C: New test.
+ * g++.dg/coroutines/coro-missing-promise-yield.C: Check for
+ continuation of compilation.
+ * g++.dg/coroutines/coro-missing-promise.C: Likewise.
+ * g++.dg/coroutines/coro-missing-ret-value.C: Likewise
+ * g++.dg/coroutines/coro-missing-ret-void.C: Likewise
+ * g++.dg/coroutines/coro-missing-ueh-3.C: Likewise
+ * g++.dg/coroutines/pr94817.C: New test.
+ * g++.dg/coroutines/pr94829.C: New test.
+
+2020-05-07 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94590 - Detect long double -> double narrowing.
+ * g++.dg/cpp0x/Wnarrowing18.C: New test.
+
+2020-05-07 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94255
+ * g++.dg/template/spec41.C: New test.
+
+2020-05-07 Marek Polacek <polacek@redhat.com>
+
+ P1957R2
+ * g++.dg/cpp0x/initlist92.C: Don't expect an error in C++20 only.
+
+2020-05-07 Manfred Schwarb <manfred99@gmx.ch>
+
+ * gcc.dg/20050121-1.c: Fix broken dg directives.
+ * gcc.dg/analzyer/pr93382.c: Likewise.
+ * gcc.dg/autopar/pr68460.c: Likewise.
+ * gcc.dg/c90-fordecl-1.c: Likewise.
+ * gcc.dg/cpp/trad/funlike-5.c: Likewise.
+ * gcc.dg/debug/dwarf2/dwarf-dfp.c: Likewise.
+ * gcc.dg/debug/dwarf2/dwarf-float.c: Likewise.
+ * gcc.dg/lto/pr52634_0.c: Likewise.
+ * gcc.dg/pr32069.c: Likewise.
+ * gcc.dg/pr35445.c: Likewise.
+ * gcc.dg/pr40172-3.c: Likewise.
+ * gcc.dg/pr87347.c: Likewise.
+ * gcc.dg/pr88660.c: Likewise.
+ * gcc.dg/pr89689.c: Likewise.
+ * gcc.dg/sinatan-2.c: Likewise.
+ * gcc.dg/sinhatanh-1.c: Likewise.
+ * gcc.dg/sinhovercosh-1.c: Likewise.
+ * gcc.dg/tls/opt-9.c: Likewise.
+ * gcc.dg/torture/builtins-1.c: Likewise.
+ * gcc.dg/torture/pr51106-1.c: Likewise.
+ * gcc.dg/torture/pr51106-2.c: Likewise.
+ * gcc.dg/torture/pr80281.c: Likewise.
+ * gcc.dg/torture/pr92252.c: Likewise.
+ * gcc.dg/tree-ssa/pr79448-2.c: Likewise.
+ * gcc.dg/tree-ssa/pr79448.c: Likewise.
+ * gcc.dg/tree-ssa/pr92163.c: Likewise.
+ * gcc.dg/tree-ssa/reassoc-28.c: Likewise.
+ * gcc.dg/tree-ssa/upcast-1.c: Likewise.
+ * gcc.dg/two-types-6.c: Likewise.
+ * gcc.dg/ubsan/c-shift-1.c: Likewise.
+ * gcc.dg/var-expand3.c: Likewise.
+ * gcc.dg/vect/costmodel/x86_64/costmodel-pr30843.c: Likewise.
+ * gcc.dg/vect/pr71264.c: Likewise.
+
+2020-05-07 Marek Polacek <polacek@redhat.com>
+
+ * g++.dg/other/operator1.C: Adjust expected message.
+ * g++.dg/overload/operator2.C: Likewise.
+ * g++.dg/template/error30.C: Likewise.
+ * g++.old-deja/g++.jason/operator.C: Likewise.
+
+2020-05-07 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/94703
+ * gcc.dg/tree-ssa/pr94703.c: New testcase.
+
+2020-05-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/94946
+ * g++.dg/ext/attr-parm-1.C: Enable the test also for lp64 x86, use
+ sysv_abi and ms_abi attributes in that case instead of fastcall and
+ no attribute.
+
+ PR c/94968
+ * gcc.dg/pr94968.c: New test.
+
+2020-05-07 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/57359
+ * gcc.dg/torture/pr57359-1.c: New testcase.
+ * gcc.dg/torture/pr57359-1.c: Likewise.
+ * gcc.dg/tree-ssa/ssa-lim-14.c: Likewise.
+ * gcc.dg/graphite/pr80906.c: XFAIL.
+
+2020-05-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/debug16.adb: New test.
+
+2020-05-06 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94938
+ * g++.dg/warn/Wdiv-by-zero-3.C: New test.
+ * g++.dg/warn/Wtype-limits4.C: New test.
+ * g++.dg/warn/template-2.C: New test.
+ * g++.old-deja/g++.pt/crash10.C: Add dg-warning.
+
+2020-05-06 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/94970
+ * gdc.dg/pr94970.d: New test.
+
+2020-05-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/94951
+ * g++.dg/warn/Wstrict-aliasing-bogus-tmpl.C: New test.
+
+ PR c++/94907
+ * g++.dg/cpp2a/spaceship-synth8.C: New test.
+
+2020-05-06 qing zhao <qing.zhao@oracle.com>
+
+ PR c/94230
+ * gcc.dg/plugin/location-overflow-test-1.c (fn_1): New message to
+ provide hint to use the new -flarge-source-files option.
+
+2020-05-06 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/94913
+ * gcc.target/i386/pr94913-1.c: New test.
+ * gcc.target/i386/pr94913-2.c: Ditto.
+
+2020-05-06 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/94963
+ * gcc.dg/pr94963.c: New testcase.
+
+2020-05-06 Hongtao Liu <hongtao.liu@intel.com>
+
+ * g++.dg/other/i386-2.c: Add -mtsxldtrk.
+ * g++.dg/other/i386-3.c: Likewise.
+ * gcc.target/i386/sse-12.c: Likewise.
+ * gcc.target/i386/sse-13.c: Likewise.
+ * gcc.target/i386/sse-14.c: Likewise.
+ * gcc.target/i386/sse-22.c: Likewsie.
+ * gcc.target/i386/sse-23.c: Likewise.
+ * gcc.target/i386/tsxldtrk-1.c: New test.
+ * gcc.target/i386/funcspec-56.inc: Add target attribute tests
+ for tsxldtrk.
+
+2020-05-06 Hongtao Liu <hongtao.liu@intel.com>
+
+ * gcc.target/i386/funcspec-56.inc: Add enqcmd, avx512bf16,
+ avx512vp2intersect.
+
+2020-05-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/94921
+ * match.pd (~(~X - Y) -> X + Y, ~(~X + Y) -> X - Y): New
+ simplifications.
+
+ PR rtl-optimization/94873
+ * gcc.dg/pr94873.c: New test.
+
+2020-05-06 Hongtao.liu <hongtao.liu@intel.com>
+ Wei Xiao <wei3.xiao@intel.com>
+
+ * gcc/testsuite/gcc.target/i386/serialize-1.c: New test.
+ * gcc/testsuite/g++.dg/other/i386-2.C: Add -mserialize.
+ * gcc/testsuite/g++.dg/other/i386-3.C: Ditto.
+ * gcc/testsuite/gcc.target/i386/funcspec-56.inc: Ditto.
+ * gcc/testsuite/gcc.target/i386/sse-12.c: Ditto.
+ * gcc/testsuite/gcc.target/i386/sse-13.c: Ditto.
+ * gcc/testsuite/gcc.target/i386/sse-14.c: Ditto.
+ * gcc/testsuite/gcc.target/i386/sse-22.c: Ditto.
+ * gcc/testsuite/gcc.target/i386/sse-23.c: Ditto.
+
+2020-05-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR testsuite/84324
+ * objc/execute/exceptions/matcher-1.m (my_exception_matcher):
+ Change return type to int.
+
+2020-05-05 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/93366
+ * gfortran.dg/pr93366.f90: New test.
+
+2020-05-05 Michael Meissner <meissner@linux.ibm.com>
+
+ * gcc.dg/nextafter-2.c: Delete changes meant for a private branch.
+ * gcc.target/powerpc/pr70117.c: Likewise.
+
+2020-05-05 Dimitar Dimitrov <dimitar@dinux.eu>
+
+ * gcc.target/pru/clobber-sp.c: New test.
+
+2020-05-05 Dimitar Dimitrov <dimitar@dinux.eu>
+
+ * gcc.target/pru/lra-framepointer-fragmentation-1.c: Update test to
+ take into account additional available registers.
+ * gcc.target/pru/lra-framepointer-fragmentation-2.c: Ditto.
+
+2020-05-05 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94799
+ * g++.dg/lookup/this1.C: Adjust dg-error.
+ * g++.dg/template/lookup12.C: New test.
+ * g++.dg/template/lookup13.C: New test.
+ * g++.dg/template/lookup14.C: New test.
+ * g++.dg/template/lookup15.C: New test.
+
+2020-05-05 Martin Liska <mliska@suse.cz>
+
+ * gcc.dg/spellcheck-options-22.c: New test.
+
+2020-05-05 Martin Liska <mliska@suse.cz>
+
+ * g++.dg/concepts/diagnostic1.C: Merge dg-options and
+ dg-additional-options if len <= 120 chars.
+ * g++.dg/cpp1y/new1.C: Likewise.
+ * g++.dg/cpp1y/new2.C: Likewise.
+ * g++.dg/debug/dwarf2/pr61433.C: Likewise.
+ * g++.dg/init/new18.C: Likewise.
+ * g++.dg/ipa/devirt-19.C: Likewise.
+ * g++.dg/ipa/devirt-52.C: Likewise.
+ * g++.dg/ipa/pr44372.C: Likewise.
+ * g++.dg/ipa/pr58371.C: Likewise.
+ * g++.dg/ipa/pr63587-2.C: Likewise.
+ * g++.dg/ipa/pr78211.C: Likewise.
+ * g++.dg/opt/dump1.C: Likewise.
+ * g++.dg/opt/pr44919.C: Likewise.
+ * g++.dg/opt/pr47615.C: Likewise.
+ * g++.dg/opt/pr82159-2.C: Likewise.
+ * g++.dg/other/pr52048.C: Likewise.
+ * g++.dg/pr57662.C: Likewise.
+ * g++.dg/pr59510.C: Likewise.
+ * g++.dg/pr67989.C: Likewise.
+ * g++.dg/pr81194.C: Likewise.
+ * g++.dg/template/canon-type-8.C: Likewise.
+ * g++.dg/template/crash107.C: Likewise.
+ * g++.dg/template/show-template-tree-3.C: Likewise.
+ * g++.dg/tm/cgraph_edge.C: Likewise.
+ * g++.dg/torture/20141013.C: Likewise.
+ * g++.dg/torture/pr34641.C: Likewise.
+ * g++.dg/torture/pr34850.C: Likewise.
+ * g++.dg/torture/pr36745.C: Likewise.
+ * g++.dg/torture/pr40991.C: Likewise.
+ * g++.dg/torture/pr48271.C: Likewise.
+ * g++.dg/torture/pr53602.C: Likewise.
+ * g++.dg/torture/pr53752.C: Likewise.
+ * g++.dg/torture/pr54838.C: Likewise.
+ * g++.dg/torture/pr58252.C: Likewise.
+ * g++.dg/tree-ssa/pr22444.C: Likewise.
+ * g++.dg/tree-ssa/pr24351-3.C: Likewise.
+ * g++.dg/tree-ssa/pr27283.C: Likewise.
+ * g++.dg/tree-ssa/pr27291.C: Likewise.
+ * g++.dg/tree-ssa/pr27548.C: Likewise.
+ * g++.dg/tree-ssa/pr42337.C: Likewise.
+ * g++.dg/ubsan/pr65583.C: Likewise.
+ * g++.old-deja/g++.robertl/eb27.C: Likewise.
+ * gcc.dg/tree-ssa/dse-points-to.c: Likewise.
+ * gcc.target/arm/simd/vmmla_1.c: Likewise.
+ * gcc.target/i386/vect-pr67800.c: Likewise.
+ * gcc.target/mips/cfgcleanup-jalr2.c: Likewise.
+ * gcc.target/mips/cfgcleanup-jalr3.c: Likewise.
+
+2020-05-05 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/92177
+ * gcc.dg/vect/bb-slp-22.c: Adjust.
+
+2020-05-05 Richard Biener <rguenther@suse.de>
+
+ PR ipa/94947
+ * gcc.dg/torture/pr94947-1.c: New testcase.
+ * gcc.dg/torture/pr94947-2.c: Likewise.
+
+2020-05-05 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/aggr29.adb: New test.
+
+2020-05-05 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/94949
+ * gcc.dg/torture/pr94949.c: New testcase.
+
+2020-05-05 Alex Coplan <alex.coplan@arm.com>
+
+ * gcc.target/aarch64/mvn_zero_ext.c: New test.
+
+2020-05-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/94800
+ * gcc.dg/tree-ssa/pr94800.c: New test.
+ * gcc.dg/tree-ssa/popcount5.c: New test.
+ * gcc.dg/tree-ssa/popcount5l.c: New test.
+ * gcc.dg/tree-ssa/popcount5ll.c: New test.
+
+ PR target/94942
+ * gcc.target/i386/pr94942.c: New test.
+
+ PR tree-optimization/94914
+ * gcc.target/i386/pr94914.c: New test.
+
+2020-05-04 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94038
+ * g++.dg/warn/pr94038.C: New test.
+
+2020-05-04 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR middle-end/94941
+ * gcc.target/aarch64/sve/acle/general/unoptimized_1.c: New test.
+
+2020-05-04 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/94795
+ * gcc.target/i386/pr94795-1.c: New test.
+ * gcc.target/i386/pr94795-2.c: Ditto.
+
+2020-05-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/39612
+ * gcc.dg/tree-ssa/pr39612.c: New testcase.
+
+2020-05-04 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/94650
+ * gcc.targeti/i386/pr94650.c: New test.
+
+2020-05-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/94718
+ * gcc.dg/tree-ssa/pr94718-4.c: New test.
+ * gcc.dg/tree-ssa/pr94718-5.c: New test.
+
+ PR tree-optimization/94718
+ * gcc.dg/tree-ssa/pr94718-3.c: New test.
+
+ PR tree-optimization/94718
+ * gcc.dg/tree-ssa/pr94718-1.c: New test.
+ * gcc.dg/tree-ssa/pr94718-2.c: New test.
+
+2020-05-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/limited1_inner.adb (Finalize): Use 'Unrestricted_Access.
+
+2020-05-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR fortran/94788
+ * lib/gfortran.exp (gfortran_target_compile): Get asan library
+ from TEST_ALWAYS_FLAGS.
+
+2020-05-02 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/94788
+ * gfortran.dg/asan: New directory.
+ * gfortran.dg/asan/asan.exp: New file.
+ * gfortran.dg/asan/pointer_assign_16.f90: New test case.
+
+2020-05-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/93492
+ * c-c++-common/patchable_function_entry-error-1.c: New test.
+ * c-c++-common/patchable_function_entry-error-2.c: Likewise.
+ * c-c++-common/patchable_function_entry-error-3.c: Likewise.
+
+2020-05-01 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/90880
+ * g++.dg/template/sfinae29.C: New test.
+
+2020-05-01 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94885
+ * g++.dg/cpp2a/paren-init26.C: New test.
+
+2020-05-01 Andreas Tobler <andreast@gcc.gnu.org>
+
+ * gcc.dg/asan/pr87930.c: Enable on x86_64 FreeBSD.
+ * c-c++-common/asan/asan-interface-1.c: Likewise.
+ * c-c++-common/asan/clone-test-1.c: Likewise.
+ * c-c++-common/asan/no-asan-stack.c: Likewise.
+ * c-c++-common/asan/pr59063-1.c: Likewise.
+ * c-c++-common/asan/pr59063-2.c: Likewise.
+ * g++.dg/asan/asan_test.C: Likewise.
+ * g++.dg/asan/asan_test_utils.h: Likewise.
+ * g++.dg/asan/interception-failure-test-1.C: Likewise.
+ * g++.dg/asan/interception-malloc-test-1.C: Likewise.
+
+2020-04-30 Peter Bergner <bergner@linux.ibm.com>
+
+ PR rtl-optimization/94740
+ * gcc.target/powerpc/pr94740.c: New test.
+
+2020-04-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/94842
+ * gcc.dg/pr94842.c: New test.
+
+2020-04-30 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/94856
+ * g++.dg/ipa/pr94856.C: New test.
+
+2020-04-30 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/94886
+ * g++.dg/coroutines/pr94886-folly-3.C: New test.
+
+2020-04-30 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/94883
+ * g++.dg/coroutines/pr94883-folly-2.C: New test.
+
+2020-04-30 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/94879
+ * g++.dg/coroutines/pr94xxx-folly-1.C: New test.
+
+2020-04-30 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94775
+ * g++.dg/warn/Warray-bounds-10.C: New test.
+
+2020-04-30 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
+ PR target/94748
+ * gcc.target/aarch64/pr94748.c: New test.
+
+2020-04-30 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ * gcc.target/s390/zvector/vec_load_len_r.c: New test.
+ * gcc.target/s390/zvector/vec_store_len_r.c: New test.
+
+2020-04-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94704
+ * g++.target/s390/s390.exp: New file.
+ * g++.target/s390/pr94704-1.C: New test.
+ * g++.target/s390/pr94704-2.C: New test.
+ * g++.target/s390/pr94704-3.C: New test.
+ * g++.target/s390/pr94704-4.C: New test.
+
+2020-04-29 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94830
+ * g++.dg/concepts/diagnostics12.C: Clarify the dg-message now
+ that the corresponding diagnostic is deterministic.
+ * g++.dg/concepts/diagnostics13.C: New test.
+
+2020-04-29 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/93654
+ * gcc.target/i386/pr93654.c: New test.
+
+2020-04-29 Richard Sandiford <richard.sandiford@arm.com>
+
+ * lib/target-supports.exp: Add v8a_hard to the list of arm_arch_*
+ targets.
+ * g++.target/arm/no_unique_address_1.C: New test.
+ * g++.target/arm/no_unique_address_2.C: Likewise.
+
+2020-04-29 Richard Biener <rguenther@suse.de>
+ Li Zekun <lizekun1@huawei.com>
+
+ PR lto/94822
+ * gcc.dg/lto/pr94822_0.c: New testcase.
+ * gcc.dg/lto/pr94822_1.c: Alternate file.
+ * gcc.dg/lto/pr94822.h: Likewise.
+
+2020-04-29 Richard Sandiford <richard.sandiford@arm.com>
+
+ * g++.target/aarch64/no_unique_address_1.C: New test.
+ * g++.target/aarch64/no_unique_address_2.C: Likewise.
+
+2020-04-29 Richard Sandiford <richard.sandiford@arm.com>
+
+ * g++.target/arm/mve.exp: Restore the original dg-do-what-default
+ before finishing.
+
+2020-04-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94707
+ * g++.target/powerpc/pr94707-1.C: New test.
+ * g++.target/powerpc/pr94707-2.C: New test.
+ * g++.target/powerpc/pr94707-3.C: New test.
+ * g++.target/powerpc/pr94707-4.C: New test.
+ * g++.target/powerpc/pr94707-5.C: New test.
+ * g++.target/powerpc/pr94707-4.C: New test.
+
+2020-04-29 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94819
+ * g++.dg/cpp2a/concepts-inherit-ctor10.C: New test.
+ * g++.dg/cpp2a/concepts-inherit-ctor11.C: New test.
+
+ PR c++/94808
+ * g++.dg/concepts/diagnostic12.C: New test.
+ * g++.dg/concepts/diagnostic5.C: Adjust dg-message.
+
+2020-04-28 Alexandre Oliva <oliva@adacore.com>
+
+ PR target/94812
+ * gcc.target/powerpc/test_mffsl.c: Call mffsl only once.
+ Reinterpret the doubles as long longs for compares. Mask out
+ mffs bits that are not expected from mffsl.
+
+2020-04-28 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/94816
+ * g++.dg/analyzer/pr94816.C: New test.
+
+2020-04-28 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/94447
+ PR analyzer/94639
+ PR analyzer/94732
+ PR analyzer/94754
+ * gcc.dg/analyzer/data-model-1.c: Mark "use of uninitialized
+ value" warnings as xfail for now.
+ * gcc.dg/analyzer/data-model-5b.c: Remove uninitialized warning.
+ * gcc.dg/analyzer/pr94099.c: Mark "uninitialized" warning as xfail
+ for now.
+ * gcc.dg/analyzer/pr94447.c: New test.
+ * gcc.dg/analyzer/pr94639.c: New test.
+ * gcc.dg/analyzer/pr94732.c: New test.
+ * gcc.dg/analyzer/pr94754.c: New test.
+ * gcc.dg/analyzer/zlib-6.c: Mark "uninitialized" warning as xfail
+ for now.
+
+2020-04-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/94809
+ * gcc.c-torture/execute/pr94809.c: New test.
+
+2020-04-28 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/94760
+ * g++.dg/coroutines/pr94760-mismatched-traits-and-promise-prev.C:
+ New test.
+
+2020-04-28 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/94759
+ * g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C: Adjust for
+ updated error messages.
+ * g++.dg/coroutines/coro-bad-alloc-01-bad-op-del.C: Likewise.
+ * g++.dg/coroutines/coro-bad-alloc-02-no-op-new-nt.C: Likewise.
+ * g++.dg/coroutines/coro-missing-promise.C: Likewise.
+ * g++.dg/coroutines/pr93458-5-bad-coro-type.C: Liekwise.
+ * g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C: New test.
+
+2020-04-27 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/94701
+ * g++.dg/coroutines/torture/local-var-06-structured-binding.C:
+ New test.
+
+2020-04-27 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/93956
+ PR fortran/94788
+ * gfortran.dg/pointer_assign_13.f90: Remove.
+
+2020-04-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94780
+ * gcc.dg/pr94780.c: New test.
+
+2020-04-27 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94772
+ * g++.dg/cpp1y/constexpr-tracking-const23.C: New test.
+ * g++.dg/cpp1y/constexpr-tracking-const24.C: New test.
+ * g++.dg/cpp1y/constexpr-tracking-const25.C: New test.
+
+2020-04-27 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
+ PR target/94697
+ * gcc.target/aarch64/pr94697.c: Require lp64.
+
+2020-04-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/94755
+ * c-c++-common/pr94755.c: New test.
+
+2020-04-27 Felix Yang <felix.yang@huawei.com>
+
+ PR tree-optimization/94784
+ * gcc.dg/pr94784.c: New test.
+
+2020-04-27 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
+ PR target/94515
+ * g++.target/aarch64/pr94515-1.C: New test.
+ * g++.target/aarch64/pr94515-2.C: New test.
+
+2020-04-26 Marek Polacek <polacek@redhat.com>
+
+ PR c++/90320
+ * g++.dg/cpp0x/explicit13.C: New test.
+ * g++.dg/cpp0x/explicit14.C: New test.
+
+2020-04-27 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/89418
+ * lib/gdc-utils.exp (gdc-convert-test): Add dg-skip-if for compilable
+ tests that depend on the phobos standard library.
+
+2020-04-27 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/94777
+ * gdc.dg/pr94777a.d: New test.
+ * gdc.dg/pr94777b.d: New test.
+
+2020-04-26 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/94752
+ * g++.dg/coroutines/pr94752.C: New test.
+
+2020-04-26 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/94737
+ * gfortran.dg/binding_label_tests_34.f90: New test case.
+
+2020-04-25 David Edelsohn <dje.gcc@gmail.com>
+
+ * g++.dg/debug/dwarf2/pr61433.C: Unfail AIX.
+ * g++.dg/opt/pr48549.C: Same.
+ * g++.dg/opt/pr60002.C: Same.
+ * g++.dg/opt/pr80436.C: Same.
+ * g++.dg/opt/pr83084.C: Same.
+ * g++.dg/other/pr42685.C: Same.
+ * gcc.dg/pr41241.c: Same.
+ * gcc.dg/pr42629.c: Same.
+ * gcc.dg/pr42630.c: Same.
+ * gcc.dg/pr42719.c: Same.
+ * gcc.dg/pr42728.c: Same.
+ * gcc.dg/pr42889.c: Same.
+ * gcc.dg/pr42916.c: Same.
+ * gcc.dg/pr43084.c: Same.
+ * gcc.dg/pr43670.c: Same.
+ * gcc.dg/pr44023.c: Same.
+ * gcc.dg/pr44971.c: Same.
+ * gcc.dg/pr45449.c: Same.
+ * gcc.dg/pr46771.c: Same.
+ * gcc.dg/pr47684.c: Same.
+ * gcc.dg/pr47881.c: Same.
+ * gcc.dg/pr48768.c: Same.
+ * gcc.dg/pr50017.c: Same.
+ * gcc.dg/pr56023.c: Same.
+ * gcc.dg/pr64935-1.c: Same.
+ * gcc.dg/pr64935-2.c: Same.
+ * gcc.dg/pr65521.c: Same.
+ * gcc.dg/pr65779.c: Same.
+ * gcc.dg/pr65980.c: Same.
+ * gcc.dg/pr66688.c: Same.
+ * gcc.dg/pr70405.c: Same.
+ * gcc.dg/vect/pr49352.c: Same.
+
+2020-04-25 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.dg/ipa/ipa-sra-19.c: Add -Wno-psabi option on AIX.
+
+2020-04-25 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.dg/spellcheck-options-21.c: Require LTO.
+
+2020-04-25 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.dg/debug/dwarf2/pr82718-1.c: Skip on AIX.
+ * gcc.dg/debug/dwarf2/pr82718-2.c: Skip on AIX.
+
+2020-04-25 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/94578
+ * gfortran.dg/pointer_assign_14.f90: New test.
+ * gfortran.dg/pointer_assign_15.f90: New test.
+
+2020-04-25 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C:
+ Enable test.
+
+2020-04-25 Patrick Palka <ppalka@redhat.com>
+
+ * g++.dg/concepts/diagnostic11.C: New test.
+
+2020-04-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/94742
+ * g++.dg/warn/Wreturn-type-12.C: New test.
+
+ PR tree-optimization/94734
+ PR tree-optimization/89430
+ * gcc.dg/tree-ssa/pr89430-1.c: Add xfail.
+ * gcc.dg/tree-ssa/pr89430-2.c: Add xfail.
+ * gcc.dg/tree-ssa/pr89430-5.c: Add xfail.
+ * gcc.dg/tree-ssa/pr89430-6.c: Add xfail.
+ * gcc.c-torture/execute/pr94734.c: New test.
+
+2020-04-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/94383
+ * g++.dg/compat/struct-layout-1.exp: Use the -std=c++14 vs. -std=c++17
+ ABI compatibility testing even with ALT_CXX_UNDER_TEST, as long as
+ that compiler accepts -std=c++14 and -std=c++17 options.
+
+2020-04-24 Andrew Stubbs <ams@codesourcery.com>
+
+ * lib/target-supports.exp (available_vector_sizes): Add amdgcn.
+ (check_effective_target_vect_cmdline_needed): Disable for amdgcn.
+ (check_effective_target_vect_pack_trunc): Add amdgcn.
+
+2020-04-24 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/94288
+ * g++.dg/coroutines/pr94288.C: New test.
+
+2020-04-24 Alexandre Oliva <oliva@adacore.com>
+
+ * lib/target-supports.exp (check_effective_target_fileio): New.
+ * gcc.c-torture/execute/fprintf-2.c: Require it.
+ * gcc.c-torture/execute/printf-2.c: Likewise.
+ * gcc.c-torture/execute/user-printf.c: Likewise.
+
+2020-04-24 Haijian Zhang <z.zhanghaijian@huawei.com>
+
+ PR rtl-optimization/94708
+ * gfortran.dg/pr94708.f90: New test.
+
+2020-04-23 David Edelsohn <dje.gcc@gmail.com>
+
+ * gcc.dg/torture/pr90020.c: Skip on AIX.
+
+2020-04-23 David Edelsohn <dje.gcc@gmail.com>
+
+ * g++.dg/cpp0x/lambda/pr94426-1.C: Require LTO.
+
+2020-04-23 Martin Sebor <msebor@redhat.com>
+
+ PR driver/90983
+ * gcc.dg/Wframe-larger-than-3.c: New test.
+ * gcc.dg/Wlarger-than4.c: New test.
+ * gcc.dg/Wstack-usage.c: New test.
+
+2020-04-23 Patrick Palka <ppalka@redhat.com>
+
+ * g++.dg/cpp0x/dependent3.C: New test.
+
+ PR c++/94645
+ * g++.dg/cpp2a/concepts-lambda6.C: New test.
+
+2019-04-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * g++.dg/opt/store-merging-4.C: New test.
+
+2020-04-23 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/94288
+ * g++.dg/coroutines/torture/co-await-18-if-cond.C: New test.
+ * g++.dg/coroutines/torture/co-await-19-while-cond.C: New test.
+ * g++.dg/coroutines/torture/co-await-20-do-while-cond.C: New test.
+ * g++.dg/coroutines/torture/co-await-21-switch-value.C: New test.
+ * g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C: New test.
+ * g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C: New test.
+
+2020-04-23 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94733
+ * g++.dg/tm/attrib-5.C: New test.
+
+2020-04-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/94724
+ * gcc.c-torture/execute/pr94724.c: New test.
+
+2020-04-23 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/93956
+ * gfortran.dg/pointer_assign_13.f90: New test.
+
+2020-04-23 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C: Adjust for
+ changed inline namespace.
+ * g++.dg/coroutines/coro-bad-alloc-01-bad-op-del.C: Likewise.
+ * g++.dg/coroutines/coro-bad-alloc-02-no-op-new-nt.C: Likewise
+ * g++.dg/coroutines/coro.h: Likewise
+
+2020-04-23 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
+ PR target/94697
+ * gcc.target/aarch64/pr94697.c: New test.
+
+2020-04-23 Felix Yang <felix.yang@huawei.com>
+
+ PR target/94678
+ * gcc.target/aarch64/pragma_cpp_predefs_2.c: Fix typos, pop_pragma ->
+ pop_options. Add tests for general-regs-only.
+ * gcc.target/aarch64/pragma_cpp_predefs_3.c: Add tests for
+ general-regs-only.
+
+2020-04-23 Andrew Stubbs <ams@codesourcery.com>
+ Thomas Schwinge <thomas@codesourcery.com>
+
+ PR middle-end/93488
+
+ * c-c++-common/goacc/pr93488.c: New file.
+
+2020-04-23 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR tree-optimization/94727
+ * gcc.dg/vect/pr94727.c: New test.
+
+2020-04-23 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
+ PR target/94514
+ * g++.target/aarch64/pr94514.C: Require lp64.
+ * gcc.target/aarch64/pr94514.c: Likewise.
+
+2020-04-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94707
+ * g++.dg/tree-ssa/pr27830.C: Use -Wpsabi -w for -std=c++17 and higher.
+
+ PR c/94705
+ * gcc.dg/pr94705.c: New test.
+
+2020-04-22 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94719
+ PR c++/94549
+ * g++.dg/cpp2a/concepts-inherit-ctor9.C: New test.
+
+2020-04-22 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93807
+ * g++.dg/cpp2a/fn-template20.C: New test.
+
+2020-04-22 Duan bo <duanbo3@huawei.com>
+
+ PR testsuite/94712
+ * gcc.target/aarch64/pr63304_1.c: Require lp64 target.
+ * gcc.target/aarch64/pr70120-2.c: Likewise.
+ * gcc.target/aarch64/pr94530.c: Likewise.
+ * gcc.target/aarch64/reload-valid-spoff.c: Likewise.
+
+2020-04-22 Felix Yang <felix.yang@huawei.com>
+
+ PR target/94678
+ * gcc.target/aarch64/sve/acle/general/nosve_6.c: New test.
+
+2020-04-22 José Rui Faustino de Sousa <jrfsousa@gmail.com>
+
+ PR fortran/90350
+ * gfortran.dg/PR90350.f90: New test.
+
+2020-04-22 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/90448
+ * g++.dg/cpp1y/lambda-generic-variadic20.C: New.
+
+2020-04-22 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/94647
+ * c-c++-common/Warray-bounds-2.c: Replace a large value harcoded
+ in an expected warning with a pattern.
+
+2020-04-22 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * lib/target-supports.exp (check_effective_target_arm_dsp)
+ (check_effective_target_arm_crc_ok_nocache)
+ (check_effective_target_arm_coproc1_ok_nocache)
+ (check_effective_target_arm_coproc2_ok_nocache)
+ (check_effective_target_arm_coproc3_ok_nocache)
+ (check_effective_target_arm_coproc4_ok_nocache): Include
+ arm_acle.h.
+
+2020-04-22 Christophe Lyon <christophe.lyon@linaro.org>
+
+ gcc/testsuite/
+ * lib/target-supports.exp (arm_v8m_main_cde, arm_v8m_main_cde_fp)
+ (arm_v8_1m_main_cde_mve, arm_v8_1m_main_cde_mve_fp): Include
+ arm_cde.h and arm_mve.h as ineeded.
+
+2020-04-22 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * lib/target-supports.exp
+ (check_effective_target_arm_v8_1m_mve_ok_nocache): Include
+ arm_mve.h.
+
+2020-04-22 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/mve/intrinsics/mve_vector_float.c: Use
+ arm_v8_1m_mve_fp.
+ * gcc.target/arm/mve/intrinsics/mve_vector_float1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_float2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int.c: Use
+ arm_v8_1m_mve.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_uint.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_uint1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_uint2.c: Likewise.
+
+2020-04-22 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/mve/intrinsics/mve_move_gpr_to_gpr.c: Remove
+ useless options.
+
+2020-04-22 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/mve/intrinsics/mve_fp_fpu1.c: Use arm_hard_ok
+ effective target and arm_v8_1m_mve_fp options.
+ * gcc.target/arm/mve/intrinsics/mve_fp_fpu2.c: Use arm_softfp_ok
+ effective target and arm_v8_1m_mve_fp options.
+ * gcc.target/arm/mve/intrinsics/mve_fpu1.c: Use arm_hard_ok
+ effective target and arm_v8_1m_mve options.
+ * gcc.target/arm/mve/intrinsics/mve_fpu2.c: Use arm_softfp_ok
+ effective target and arm_v8_1m_mve options.
+
+2020-04-22 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * lib/target-supports.exp (arm_softfp_ok): New effective target.
+ (arm_hard_ok): Likewise.
+
+2020-04-22 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/94709
+ * gfortran.dg/gomp/warn_truncated.f: New.
+ * gfortran.dg/gomp/warn_truncated.f90: New.
+
+2020-04-22 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR tree-optimization/94700
+ * gcc.target/aarch64/sve/acle/general/pr94700.c: New test.
+
+2020-04-22 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/torture/local-var-0.C: Rename to...
+ * g++.dg/coroutines/torture/local-var-00-const.C: ...this.
+ * g++.dg/coroutines/torture/local-var-1.C: Rename to...
+ * g++.dg/coroutines/torture/local-var-01-single.C: ...this.
+ * g++.dg/coroutines/torture/local-var-2.C: Rename to...
+ * g++.dg/coroutines/torture/local-var-02-conditional.C: ...this.
+ * g++.dg/coroutines/torture/local-var-3.C: Rename to...
+ * g++.dg/coroutines/torture/local-var-03-with-awaits.C: ...this.
+ * g++.dg/coroutines/torture/local-var-4.C: Rename to...
+ * g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C: this.
+ * g++.dg/coroutines/torture/local-var-5-awaitable.C: Rename to...
+ * g++.dg/coroutines/torture/local-var-05-awaitable.C: ...this.
+
+2020-04-22 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/94682
+ * g++.dg/coroutines/promise-parm-preview-this.C: New test.
+
+2020-04-22 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * lib/gcc-dg.exp (schedule-cleanups): Accept --save-temps.
+
+2020-04-22 Martin Sebor <msebor@redhat.com>
+
+ PR c++/94510
+ * g++.dg/init/array58.C: New test.
+ * g++.dg/init/array59.C: New test.
+ * g++.dg/cpp2a/nontype-class34.C: New test.
+ * g++.dg/cpp2a/nontype-class35.C: New test.
+
+2020-04-22 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/67825
+ * g++.dg/concepts/diagnostic10.C: New test.
+ * g++.dg/cpp2a/concepts-pr67178.C: Adjust dg-message.
+
+2020-04-21 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94549
+ * g++.dg/concepts/inherit-ctor3.C: Adjust expected diagnostics.
+ * g++.dg/cpp2a/concepts-inherit-ctor4.C: Likewise.
+ * g++.dg/cpp2a/concepts-inherit-ctor8.C: New test.
+
+2020-04-21 Jonathan Wakely <jwakely@redhat.com>
+
+ PR c++/94149
+ * g++.dg/cpp2a/paren-init24.C: Fix FIXMEs.
+
+2020-04-21 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/94647
+ * c-c++-common/Warray-bounds-2.c: Adjust a test case and add a new one.
+ * c-c++-common/Warray-bounds-3.c: Add tests for missing warnings.
+ * c-c++-common/Wrestrict.c: Invert bounds in printed ranges.
+ * gcc.dg/Warray-bounds-59.c: New test.
+ * gcc.dg/Wrestrict-10.c: Add a missing warning.
+ * gcc.dg/Wrestrict-5.c: Adjust text of expected warning.
+ * gcc.dg/Wrestrict-6.c: Expect to see a range of overlap offsets.
+
+2020-04-21 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
+ PR target/94514
+ * g++.target/aarch64/pr94514.C: New test.
+ * gcc.target/aarch64/pr94514.c: New test.
+
+2020-04-21 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR tree-optimization/94683
+ * gcc.target/aarch64/sve/acle/general/pr94683.c: New test.
+
+2020-04-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/94383
+ * g++.dg/compat/struct-layout-1.exp: If !$use_alt, add -c to generator
+ args.
+ * g++.dg/compat/struct-layout-1_generate.c (dg_options): Add another
+ %s to the start of dg-options arg.
+ (cxx14_vs_cxx17, do_cxx14_vs_cxx17): New variables.
+ (switchfiles): If cxx14_vs_cxx17, prepend -std=c++14 -DCXX14_VS_CXX17
+ or -std=c++17 -DCXX17_VS_CXX14 - randomly - to dg-options.
+ (output): Don't append further fields once one with flexible array
+ member is added.
+ (generate_random_tests): Don't use toplevel unions if cxx14_vs_cxx17.
+ (main): If -c, emit second set of tests for -std=c++14 vs. -std=c++17
+ testing.
+ * g++.dg/compat/struct-layout-1_x1.h (empty_base): New type.
+ (EMPTY_BASE): Define.
+ (TX): Use EMPTY_BASE.
+ * g++.dg/compat/struct-layout-1_y1.h (empty_base): New type.
+ (EMPTY_BASE): Define.
+ (TX): Use EMPTY_BASE.
+
+ PR c/94641
+ * c-c++-common/ubsan/pr94641.c: New test.
+
+2020-04-21 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94597
+ * g++.dg/cpp2a/concepts-conv2.C: New test.
+
+2020-04-21 Duan bo <duanbo3@huawei.com>
+
+ PR target/94577
+ * gcc.target/aarch64/pr94577.c: New test.
+
+2020-04-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/94686
+ * gcc.c-torture/compile/pr94686.c: New test.
+
+2020-04-21 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/94661
+ * g++.dg/coroutines/ramp-return-a.C: New test.
+ * g++.dg/coroutines/ramp-return-b.C: New test.
+ * g++.dg/coroutines/ramp-return-c.C: New test.
+
+2020-04-17 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94592
+ * g++.dg/cpp2a/nontype-class34.C: New test.
+ * g++.dg/cpp2a/nontype-class35.C: New test.
+
+2020-04-20 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94628
+ * g++.dg/cpp0x/variadic179.C: New test.
+ * g++.dg/cpp0x/variadic180.C: New test.
+
+2020-04-20 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94505 - bogus -Wparentheses warning with fold-expression.
+ * g++.dg/cpp1z/fold11.C: New test.
+
+2020-04-20 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ * g++.dg/pr94666.C: New test.
+
+2020-04-20 Andreas Krebbel <krebbel@linux.ibm.com>
+
+ PR target/94613
+ * gcc.target/s390/zvector/pr94613.c: New test.
+ * gcc.target/s390/zvector/vec_sel-1.c: New test.
+
+2020-04-20 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/cost_model_8.c: New test.
+ * gcc.target/aarch64/sve/cost_model_9.c: Likewise.
+ * gcc.target/aarch64/sve/pr89007-1.c: Add -msve-vector-bits=512.
+ * gcc.target/aarch64/sve/pr89007-2.c: Likewise.
+
+2020-04-20 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/94668
+ * gcc.target/aarch64/sve/pr94668.c: New test.
+
+2020-04-20 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/94582
+ PR ipa/94582
+ * g++.dg/torture/pr94582.C: New test.
+
+2020-04-20 Harald Anlauf <anlauf@gmx.de>
+
+ PR fortran/93364
+ * gfortran.dg/pr93364.f90: New test.
+
+2020-04-20 Steve Kargl <kargl@gcc.gnu.org>
+ Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/91800
+ * gfortran.dg/hollerith_9.f90: New test.
+
+2020-04-19 David Edelsohn <dje.gcc@gmail.com>
+
+ * g++.dg/debug/dwarf2/pr85550.C: Skip AIX.
+ * g++.dg/debug/pr94272.C: Skip AIX.
+ * g++.dg/debug/pr94281.C: Skip AIX.
+ * g++.dg/debug/pr94323.C: Skip AIX.
+
+2020-04-19 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: Require
+ C++17.
+ * g++.dg/coroutines/torture/co-ret-15-default-return_void.C: Likewise.
+
+2020-04-19 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/94347
+ * gfortran.dg/char_pointer_init_12.f90: New test.
+
+2020-04-19 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/57129
+ * gfortran.dg/subroutine_as_type.f90: New test.
+
+2020-04-19 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/93500
+ * gfortran.dg/arith_divide_3.f90: New test.
+
+2020-04-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR objc/94637
+ * objc.dg/pr94637.m: New test.
+
+2020-04-18 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * lib/gdc-utils.exp (gdc-convert-test): Add dg-skip-if for tests that
+ depending on the phobos standard library.
+
+2020-04-18 Jeff Law <law@redhat.com>
+
+ PR debug/94439
+ * gcc.dg/torture/pr94439.c: New test.
+
+2020-04-18 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * gdc.dg/link.d: Use d_runtime_has_std_library effective target.
+ * gdc.dg/runnable.d: Move phobos tests to...
+ * gdc.dg/runnable2.d: ...here. New test.
+ * lib/target-supports.exp
+ (check_effective_target_d_runtime_has_std_library): New.
+
+2020-04-18 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94632
+ * g++.dg/template/canon-type-14.C: New test.
+
+ PR c++/92187
+ * g++.dg/concepts/abbrev5.C: New test.
+ * g++.dg/concepts/abbrev6.C: New test.
+
+2020-04-17 Jeff Law <law@redhat.com>
+
+ PR rtl-optimization/90275
+ * gcc.c-torture/compile/pr90275-2.c: New test.
+
+2020-04-17 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94483
+ * g++.dg/cpp2a/lambda-pack-init5.C: New test.
+
+ PR c++/88754
+ * g++.dg/parse/ambig10.C: New test.
+
+2020-04-17 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/94090
+ * gfortran.dg/interface_46.f90: New test.
+
+2020-04-17 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/cost_model_2.c: New test.
+ * gcc.target/aarch64/sve/cost_model_3.c: Likewise.
+ * gcc.target/aarch64/sve/cost_model_4.c: Likewise.
+ * gcc.target/aarch64/sve/cost_model_5.c: Likewise.
+ * gcc.target/aarch64/sve/cost_model_6.c: Likewise.
+ * gcc.target/aarch64/sve/cost_model_7.c: Likewise.
+
+2020-04-17 Jakub Jelinek <jakub@redhat.com>
+ Jeff Law <law@redhat.com>
+
+ PR target/94567
+ * gcc.c-torture/execute/pr94567.c: New test.
+
+2020-04-17 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/94608
+ * g++.dg/lto/pr83720_0.C: Add fn def to avoid warning on arm ABI.
+
+2020-04-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/94618
+ * g++.dg/opt/pr94618.C: New test.
+
+ PR tree-optimization/94621
+ * gcc.c-torture/compile/pr94621.c: New test.
+
+ PR c++/94314
+ * g++.dg/pr94314-4.C: Require c++14 rather than c++11.
+
+2020-04-16 Peter Bergner <bergner@linux.ibm.com>
+
+ PR rtl-optimization/93974
+ * g++.dg/pr93974.C: New test.
+
+2020-04-16 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/cpp0x/lambda/pr94426-2.C: Adjust scan-asms to test
+ for the change on more platforms.
+
+2020-04-16 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/93621
+ * g++.dg/ipa/pr93621.C: New test.
+
+2020-04-16 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/94606
+ * gcc.dg/vect/pr94606.c: New test.
+
+2020-04-16 Martin Liska <mliska@suse.cz>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/94314
+ * g++.dg/pr94314.C: Do not use dg-additional-options
+ and remove not needed stdio.h include.
+ * g++.dg/pr94314-2.C: Likewise.
+ * g++.dg/pr94314-3.C: Likewise.
+ * g++.dg/pr94314-4.C: New test.
+
+2020-04-16 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94475
+ * g++.dg/conversion/err-recover2.C: New test.
+ * g++.dg/diagnostic/pr84138.C: Remove now-bogus warning.
+ * g++.dg/warn/Wsign-compare-8.C: Remove now-bogus warning.
+
+2020-04-16 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR rtl-optimization/94605
+ * gcc.target/aarch64/sve/pr94605.c: New test.
+
+2020-04-16 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/graphite/interchange-1.c: Remove scan for tiled.
+ * gcc.dg/graphite/interchange-10.c: Likewise.
+ * gcc.dg/graphite/interchange-11.c: Likewise.
+ * gcc.dg/graphite/interchange-3.c: Likewise.
+ * gcc.dg/graphite/interchange-4.c: Likewise.
+ * gcc.dg/graphite/interchange-7.c: Likewise.
+ * gcc.dg/graphite/interchange-9.c: Likewise.
+ * gcc.dg/graphite/uns-interchange-9.c: Likewise.
+ * gfortran.dg/graphite/interchange-3.f90: Likewise.
+
+2020-04-16 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/94598
+ * gcc.dg/tree-ssa/pr94598.c: New test.
+
+2020-04-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR ipa/92372
+ * gcc.c-torture/pr92372.c: Move ...
+ * gcc.c-torture/compile/pr92372.c: ... here.
+
+ PR c++/94571
+ * g++.dg/cpp1z/decomp51.C: New test.
+
+2020-04-15 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/94603
+ * gcc.target/i386/pr94603.c: New test.
+
+2020-04-15 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/mve_vec_duplicate.c: New test.
+
+2020-04-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/94593
+ * c-c++-common/gomp/requires-1.c: Fix a typo, requries -> requires.
+ Move directives to file scope.
+ (i): Remove.
+ * c-c++-common/gomp/requires-2.c: Move directives to file scope.
+ (i, foo): Remove.
+ * c-c++-common/gomp/requires-4.c: Move directives to file scope.
+ * gcc.dg/gomp/requires-1.c: New test.
+ * g++.dg/gomp/requires-1.C: New test.
+ * g++.dg/gomp/requires-2.C: New test.
+
+2020-04-15 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/94539
+ * gcc.dg/alias-14.c: Make dg-do run.
+
+2020-04-13 Max Filippov <jcmvbkbc@gmail.com>
+
+ PR target/94584
+ * gcc.target/xtensa/pr94584.c: New test.
+
+2020-04-14 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/94359
+ * g++.dg/coroutines/torture/symmetric-transfer-00-basic.C:
+ Expect a run fail for targets without arbitrary indirect
+ tail-calls.
+
+2020-04-14 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/93207
+ * g++.dg/concepts/variadic5.C: New test.
+
+ PR c++/85278
+ * g++.dg/concepts/diagnostic9.C: New test.
+
+ PR c++/94034
+ * g++.dg/cpp0x/constexpr-empty15.C: New test.
+ * g++.dg/cpp1y/constexpr-nsdmi6a.C: New test.
+ * g++.dg/cpp1y/constexpr-nsdmi6b.C: New test.
+ * g++.dg/cpp1y/constexpr-nsdmi7a.C: New test.
+ * g++.dg/cpp1y/constexpr-nsdmi7b.C: New test.
+
+2020-04-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/94573
+ * gcc.dg/store_merging_30.c: New test.
+
+2020-04-14 Yang Yang <yangyang305@huawei.com>
+
+ PR tree-optimization/94574
+ * gcc.dg/pr94574.c: New test.
+
+2020-04-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/94561
+ * gcc.target/i386/pr94561.c: New test.
+
+2020-04-14 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/use_rename_10.f90: New.
+ * gfortran.dg/use_rename_11.f90: New.
+
+2020-04-13 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94588
+ * g++.dg/diagnostic/redeclaration-1.C: Add dg-message.
+
+2020-04-13 Martin Sebor <msebor@redhat.com>
+
+ PR c/92326
+ * c-c++-common/Warray-bounds-8.c: New test.
+ * gcc.dg/Warray-bounds-46.c: Adjust expected format of flexible array
+ memebrs in diagnostics.
+ * gcc.dg/Warray-bounds-49.c: Same.
+
+2020-04-13 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94521
+ * g++.dg/cpp2a/lambda-uneval12.C: New test.
+
+ PR c++/94470
+ * g++.dg/cpp1y/constexpr-nsdmi8.C: New test.
+ * g++.dg/cpp1y/constexpr-nsdmi9.C: New test.
+ * g++.dg/init/array57.C: New test.
+
+2020-04-13 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/coro-pre-proc.C: Update coroutines builtin
+ define, per n4861.
+ * g++.dg/coroutines/coro.h: Likewise.
+
+2020-04-13 Iain Sandoe <iain@sandoe.co.uk>
+
+ * gcc.dg/darwin-version-1.c: Use -mmacosx-version-min= 10.8
+ for system versions 10.14 and 10.15.
+
+2020-04-13 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/87644
+ * gfortran.dg/variable_parameter.f90: New test.
+
+2020-04-13 Linus Koenig <link@sig-st.de>
+
+ PR fortran/94192
+ * gfortran.dg/bound_resolve_after_error_1.f90: New test.
+
+2020-04-13 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/94426
+ * g++.dg/cpp0x/lambda/pr94426-[12].C: New.
+ * g++.dg/abi/lambda-vis.C: Drop a warning.
+ * g++.dg/cpp0x/lambda/lambda-mangle.C: Lambda visibility on
+ variable changes.
+ * g++.dg/opt/dump1.C: Drop warnings of no import.
+
+2020-04-13 Jozef Lawrynowicz <jozef.l@mittosystems.com>
+
+ * gcc.target/msp430/operand-modifiers.c: New test.
+
+2020-04-12 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/94091
+ * gfortran.dg/char_length_22.f90: New test.
+
+2020-04-12 Iain Sandoe <iain@sandoe.co.uk>
+
+ * gcc.target/i386/indirect-thunk-1.c: Adjust for fno-common
+ change, removing indirections for vars in .data.
+ * gcc.target/i386/indirect-thunk-2.c: Likewise.
+ * gcc.target/i386/indirect-thunk-3.c: Likewise.
+ * gcc.target/i386/indirect-thunk-4.c: Likewise.
+ * gcc.target/i386/indirect-thunk-attr-1.c: Likewise.
+ * gcc.target/i386/indirect-thunk-attr-2.c: Likewise.
+ * gcc.target/i386/indirect-thunk-attr-3.c: Likewise.
+ * gcc.target/i386/indirect-thunk-attr-4.c: Likewise.
+ * gcc.target/i386/indirect-thunk-attr-5.c: Likewise.
+ * gcc.target/i386/indirect-thunk-attr-6.c: Likewise.
+ * gcc.target/i386/indirect-thunk-extern-1.c: Likewise.
+ * gcc.target/i386/indirect-thunk-extern-2.c: Likewise.
+ * gcc.target/i386/indirect-thunk-extern-3.c: Likewise.
+ * gcc.target/i386/indirect-thunk-extern-4.c: Likewise.
+ * gcc.target/i386/indirect-thunk-inline-1.c: Likewise.
+ * gcc.target/i386/indirect-thunk-inline-2.c: Likewise.
+ * gcc.target/i386/indirect-thunk-inline-3.c: Likewise.
+ * gcc.target/i386/indirect-thunk-inline-4.c: Likewise.
+
+2020-04-11 Marek Polacek <polacek@redhat.com>
+
+ PR c++/86327
+ * g++.dg/cpp1y/constexpr-return5.C: New test.
+
+2020-04-11 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/94494
+ * gcc.target/i386/pr94494.c: New test.
+
+2020-04-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/94482
+ * gcc.dg/torture/pr94482.c: Add -Wno-psabi -w. Don't add -msse
+ and sse_runtime effective target on x86, instead only add -msse2
+ if target is sse2_runtime.
+
+2020-04-10 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/94528
+ * g++.dg/coroutines/pr94528.C: New test.
+
+2020-04-10 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94149
+ * g++.dg/cpp2a/paren-init24.C: New test.
+ * g++.dg/cpp2a/paren-init25.C: New test.
+ * g++.dg/ext/is_constructible5.C: New test.
+
+2020-04-10 Fritz Reese <foreese@gcc.gnu.org>
+
+ * gfortran.dg/asynchronous_5.f03: Fix typo in testcase and add
+ IMPLICIT NONE.
+
+2020-04-10 Fritz Reese <foreese@gcc.gnu.org>
+
+ * gfortran.dg/asynchronous_5.f03: Add -fdump-tree-original and fix
+ patterns for scan-tree-dump.
+
+2020-04-10 Thomas Schwinge <thomas@codesourcery.com>
+
+ PR middle-end/89433
+ PR middle-end/93465
+ * c-c++-common/goacc-gomp/pr93465-1.c: New file.
+
+2020-04-10 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * lib/gdc.exp (gdc_link_flags): Remove libdruntime library paths.
+
+2020-04-10 Bin Cheng <bin.cheng@linux.alibaba.com>
+
+ * g++.dg/coroutines/co-await-syntax-10.C: New test.
+ * g++.dg/coroutines/co-await-syntax-11.C: New test.
+
+2020-04-09 Fritz Reese <foreese@gcc.gnu.org>
+
+ PR fortran/87923
+ * gfortran.dg/f2003_io_8.f03: Fix expected error messages.
+ * gfortran.dg/io_constraints_8.f90: Likewise.
+ * gfortran.dg/iomsg_2.f90: Likewise.
+ * gfortran.dg/pr66725.f90: Likewise.
+ * gfortran.dg/pr88205.f90: Likewise.
+ * gfortran.dg/write_check4.f90: Likewise.
+ * gfortran.dg/asynchronous_5.f03: New test.
+ * gfortran.dg/io_constraints_15.f90: Likewise.
+ * gfortran.dg/io_constraints_16.f90: Likewise.
+ * gfortran.dg/io_constraints_17.f90: Likewise.
+ * gfortran.dg/io_constraints_18.f90: Likewise.
+ * gfortran.dg/io_tags_1.f90: Likewise.
+ * gfortran.dg/io_tags_10.f90: Likewise.
+ * gfortran.dg/io_tags_2.f90: Likewise.
+ * gfortran.dg/io_tags_3.f90: Likewise.
+ * gfortran.dg/io_tags_4.f90: Likewise.
+ * gfortran.dg/io_tags_5.f90: Likewise.
+ * gfortran.dg/io_tags_6.f90: Likewise.
+ * gfortran.dg/io_tags_7.f90: Likewise.
+ * gfortran.dg/io_tags_8.f90: Likewise.
+ * gfortran.dg/io_tags_9.f90: Likewise.
+ * gfortran.dg/write_check5.f90: Likewise.
+
+2020-04-09 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/attributes_1.c: New test.
+ * gcc.target/aarch64/sve/acle/general/attributes_2.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/attributes_3.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/attributes_4.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/attributes_5.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/attributes_6.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/attributes_7.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/struct.h: New file.
+ * gcc.target/aarch64/sve/pcs/struct_1_128.c: New test.
+ * gcc.target/aarch64/sve/pcs/struct_1_256.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/struct_1_512.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/struct_1_1024.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/struct_1_2048.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/struct_2_128.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/struct_2_256.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/struct_2_512.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/struct_2_1024.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/struct_2_2048.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/struct_3_128.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/struct_3_256.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/struct_3_512.c: Likewise.
+ * lib/target-supports.exp (check_effective_target_aarch64_sve128_hw)
+ (check_effective_target_aarch64_sve512_hw)
+ (check_effective_target_aarch64_sve1024_hw)
+ (check_effective_target_aarch64_sve2048_hw): New procedures.
+
+2020-04-09 Matthew Malcomson <matthew.malcomson@arm.com>
+
+ * g++.target/arm/cde_mve.C: New test.
+
+2020-04-09 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/cmse/cmse-15.c: Use check-function-bodies.
+
+2020-04-09 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * lib/scanasm.exp (check-function-bodies): Use non-greedy regexp
+ when extracting the target selector.
+
+2020-04-09 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/94482
+ * gcc.dg/torture/pr94482.c: New test.
+ * gcc.dg/tree-ssa/pr94482-2.c: Likewise.
+
+2020-04-09 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93790
+ * g++.dg/cpp2a/paren-init23.C: New test.
+ * g++.dg/init/aggr14.C: New test.
+
+2020-04-09 Jan Hubicka <hubicka@ucw.cz>
+
+ PR tree-optimization/91322
+ * g++.dg/lto/alias-4_0.C: Fix typo.
+ * g++.dg/lto/alias-4_0.C: Avoid conflict with va_list on ARM and add
+ a template testing that
+
+2020-04-09 Richard Sandiford <richard.sandiford@arm.com>
+
+ * lib/scanasm.exp (check-function-bodies): Treat the third
+ parameter as a list of option regexps and require each regexp
+ to match. Check for cases in which a target/xfail selector
+ was mistakenly passed to the options argument.
+ * gcc.target/aarch64/sve/pcs/args_1.c: Add an empty options list
+ to the invocation of check-function-bodies.
+ * gcc.target/aarch64/sve/pcs/args_2.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_3.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_4.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_1.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_1_1024.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_1_128.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_1_2048.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_1_256.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_1_512.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_2.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_3.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_4.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_4_1024.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_4_128.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_4_2048.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_4_256.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_4_512.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_5.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_5_1024.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_5_128.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_5_2048.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_5_256.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_5_512.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_6.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_6_1024.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_6_128.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_6_2048.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_6_256.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_6_512.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_2_be_nowrap.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_2_be_wrap.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_2_le_nowrap.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_2_le_wrap.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_3.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_4_be.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_4_le.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/stack_clash_2_128.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_1.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_f16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_f32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_f64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_s16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_s32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_s64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_s8.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_u16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_u32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_u64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_u8.c: Likewise.
+
+2020-04-09 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/93369
+ * g++.dg/lto/pr64076_0.C: Add -shared -fPIC.
+ * g++.dg/lto/pr64076_1.C: Add -fPIC.
+
+2020-04-09 Andrea Corallo <andrea.corallo@arm.com>
+
+ * gcc.target/aarch64/pr94530.c: New test.
+
+2020-04-09 Bin Cheng <bin.cheng@linux.alibaba.com>
+
+ PR tree-optimization/93674
+ * g++.dg/pr93674.C: New test.
+
+2020-04-08 Sandra Loosemore <sandra@codesourcery.com>
+
+ * g++.dg/tree-ssa/pr93940.C: Require pthread target.
+
+2020-04-09 Kewen Lin <linkw@gcc.gnu.org>
+
+ PR testsuite/94079
+ * gfortran.dg/vect/pr83232.f90: Expect 2 rather than 3 times SLP on
+ non-vect_hw_misalign targets.
+
+2020-04-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/94526
+ * gcc.dg/pr94526.c: New test.
+
+ PR tree-optimization/94524
+ * gcc.c-torture/execute/pr94524-1.c: New test.
+ * gcc.c-torture/execute/pr94524-2.c: New test.
+
+ PR c++/94314
+ * g++.dg/pr94314.C (A::operator new, B::operator new, C::operator new):
+ Use __SIZE_TYPE__ instead of unsigned long.
+ * g++.dg/pr94314-3.C (base::operator new, B::operator new): Likewise.
+
+ PR middle-end/94120
+ PR testsuite/94533
+ * g++.dg/declare-pr94120.C: Move test to ...
+ * g++.dg/goacc/declare-pr94120.C: ... here. Add dg-error directives.
+
+2020-04-08 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94507 - ICE-on-invalid with lambda template.
+ * g++.dg/cpp2a/lambda-generic7.C: New test.
+
+2020-04-08 Alexandre Oliva <oliva@adacore.com>
+
+ * gcc.target/arm/fp16-aapcs-3.c: Explicitly use the
+ -mfp16-format=alternative option.
+
+2020-04-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/94417
+ * gcc.target/i386/pr94417-1.c: New test.
+ * gcc.target/i386/pr94417-2.c: Likewise.
+ * gcc.target/i386/pr94417-3.c: Likewise.
+
+2020-04-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94438
+ * gcc.target/i386/avx512bw-pr94438.c: New test.
+ * gcc.target/i386/avx512vlbw-pr94438.c: New test.
+
+2020-04-08 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/93871
+ * gfortran.dg/dec_math_5.f90: Move to ...
+ * gfortran.dg/ieee/dec_math_1.f90: ... here; change
+ dg-options to dg-additional-options.
+
+2020-04-08 Alexandre Oliva <oliva@adacore.com>
+
+ * gcc.dg/tls/pr78796.c: Require tls_runtime.
+
+2020-04-08 Martin Liska <mliska@suse.cz>
+
+ PR c++/94314
+ * g++.dg/pr94314-2.C: New test.
+ * g++.dg/pr94314-3.C: New test.
+ * g++.dg/pr94314.C: New test.
+
+2020-04-08 Dennis Zhang <dennis.zhang@arm.com>
+
+ * gcc.target/arm/acle/cde_v_1.c: New test.
+ * gcc.target/arm/acle/cde_v_1_err.c: New test.
+ * gcc.target/arm/acle/cde_v_1_mve.c: New test.
+
+2020-04-08 Patrick Palka <ppalka@redhat.com>
+
+ Core issues 1001 and 1322
+ PR c++/92010
+ * g++.dg/cpp2a/lambda-uneval11.c: New test.
+ * g++.dg/template/array33.C: New test.
+ * g++.dg/template/array34.C: New test.
+ * g++.dg/template/defarg22.C: New test.
+
+2020-04-08 Dennis Zhang <dennis.zhang@arm.com>
+
+ * gcc.target/arm/pragma_cde.c: New test.
+ * lib/target-supports.exp (arm_v8m_main_cde_ok): New target support
+ option.
+ (arm_v8m_main_cde_fp, arm_v8_1m_main_cde_mve): Likewise.
+
+2020-04-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/94325
+ * g++.dg/ubsan/vptr-15.C: New test.
+
+2020-04-08 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94478 - ICE with defaulted comparison operator
+ * g++.dg/cpp2a/spaceship-err4.C: New test.
+
+2020-04-08 Alexandre Oliva <oliva@adacore.com>
+
+ * gcc.target/arm/polytypes.c: Add quotes around
+ -flax-vector-conversions.
+
+2020-04-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/94516
+ * gcc.dg/torture/pr94516.c: New test.
+
+2020-04-08 Tobias Burnus <tobias@codesourcery.com>
+
+ PR middle-end/94120
+ * c-c++-common/goacc/declare-pr94120.c: New.
+ * g++.dg/declare-pr94120.C: New.
+
+2020-04-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/94291
+ PR rtl-optimization/84169
+ * gcc.dg/pr94291.c: New test.
+
+2020-04-07 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/94479
+ * gcc.dg/torture/pr94479.c: New testcase.
+
+2020-04-01 Fritz Reese <foreese@gcc.gnu.org>
+
+ PR fortran/93871
+ * gfortran.dg/dec_math.f90: Extend coverage to real(10) and real(16).
+ * gfortran.dg/dec_math_2.f90: New test.
+ * gfortran.dg/dec_math_3.f90: Likewise.
+ * gfortran.dg/dec_math_4.f90: Likewise.
+ * gfortran.dg/dec_math_5.f90: Likewise.
+
+2020-04-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ * g++.target/arm/mve.exp: New.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f16: Fix testism.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f32: Likewise.
+
+2020-04-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_float.c: Fix testism.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_int.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c: Likewise.
+
+2020-04-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/mve_vec_extracts_from_memory.c: New
+ test.
+
+2020-04-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/mve_immediates_1_n.c: New test.
+
+2020-04-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/mve_load_from_array.c: New test.
+ * gcc.target/arm/mve/intrinsics/mve_vector_float.c: Remove
+ scan-assembler.
+ * gcc.target/arm/mve/intrinsics/mve_vector_float1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int2.c: Likewise.
+
+2020-04-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vmulq_n_f16.c: Fix test.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_u8.c: Likewise.
+
+2020-04-07 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/90996
+ * g++.dg/cpp1y/pr90996.C: New test.
+
+2020-04-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94509
+ * gcc.target/i386/avx512bw-pr94509-1.c: New test.
+ * gcc.target/i386/avx512bw-pr94509-2.c: New test.
+
+ PR c++/94512
+ * g++.dg/gomp/pr94512.C: New test.
+
+ PR target/94488
+ * gcc.c-torture/compile/pr94488.c: New test.
+
+ PR target/94500
+ * gcc.target/i386/avx512bw-pr94500.c: New test.
+
+2020-04-06 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/93686
+ * gfortran.dg/pr93686_1.f90: New test.
+ * gfortran.dg/pr93686_2.f90: Likewise.
+ * gfortran.dg/pr93686_3.f90: Likewise.
+ * gfortran.dg/pr93686_4.f90: Likewise.
+
+2020-04-06 Joel Brobecker <brobecker@adacore.com>
+
+ * gcc.target/arm/div64-unwinding.c: Skip on vxworks_kernel targets.
+
+2020-04-04 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94155 - crash in gimplifier with paren init of aggregates.
+ * g++.dg/cpp2a/paren-init22.C: New test.
+
+2020-04-05 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/torture/co-await-14-template-traits.C: Rename...
+ * g++.dg/coroutines/torture/co-await-16-template-traits.C: to this.
+ * g++.dg/coroutines/torture/co-await-15-capture-comp-ref.C: Rename..
+ * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: to this.
+
+2020-04-05 Nagaraju Mekala <nmekala@xilix.com>
+
+ * gcc.target/microblaze/others/builtin-trap.c: Update expected output.
+
+2020-04-04 Hannes Domani <ssbssa@yahoo.de>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/94459
+ * g++.dg/debug/pr94459.C: New test.
+
+2020-04-04 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94205
+ PR c++/79937
+ * g++.dg/cpp1y/pr79937-5.C: New test.
+ * g++.dg/cpp1z/lambda-this6.C: New test.
+
+ PR c++/94219
+ PR c++/94205
+ * g++.dg/cpp1y/constexpr-nsdmi3.C: New test.
+ * g++.dg/cpp1y/constexpr-nsdmi4.C: New test.
+ * g++.dg/cpp1y/constexpr-nsdmi5.C: New test.
+ * g++.dg/cpp1z/lambda-this5.C: New test.
+
+2020-04-04 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/93940
+ * g++.dg/tree-ssa/pr93940.C: New test.
+
+2020-04-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/94468
+ * g++.dg/opt/pr94468.C: New test.
+
+ PR debug/94441
+ * g++.dg/opt/pr94441.C: New test.
+
+ PR c++/94477
+ * g++.dg/gomp/pr94477.C: New test.
+
+2020-04-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/94467
+ * gcc.target/i386/pr94467-1.c: New test.
+ * gcc.target/i386/pr94467-2.c: Likewise.
+
+2020-04-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94460
+ * gcc.target/i386/avx2-pr94460.c: New test.
+
+2020-04-03 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/93211
+ PR c++/90711
+ * g++.dg/template/koenig11.C: New test.
+
+2020-04-03 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/mve_vector_float.c: Put -mfpu=auto back.
+ * gcc.target/arm/mve/intrinsics/mve_vector_float1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_float2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_uint.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_uint1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_uint2.c: Likewise.
+
+2020-04-03 Tamar Christina <tamar.christina@arm.com>
+
+ PR target/94396
+ * gcc.target/aarch64/options_set_11.c: New test.
+ * gcc.target/aarch64/options_set_12.c: New test.
+ * gcc.target/aarch64/options_set_13.c: New test.
+ * gcc.target/aarch64/options_set_14.c: New test.
+ * gcc.target/aarch64/options_set_15.c: New test.
+ * gcc.target/aarch64/options_set_16.c: New test.
+ * gcc.target/aarch64/options_set_17.c: New test.
+ * gcc.target/aarch64/options_set_18.c: New test.
+ * gcc.target/aarch64/options_set_19.c: New test.
+ * gcc.target/aarch64/options_set_20.c: New test.
+ * gcc.target/aarch64/options_set_21.c: New test.
+ * gcc.target/aarch64/options_set_22.c: New test.
+ * gcc.target/aarch64/options_set_23.c: New test.
+ * gcc.target/aarch64/options_set_24.c: New test.
+ * gcc.target/aarch64/options_set_25.c: New test.
+ * gcc.target/aarch64/options_set_26.c: New test.
+
+2020-04-03 Kewen Lin <linkw@gcc.gnu.org>
+
+ PR tree-optimization/94443
+ * gcc.dg/vect/pr94443.c: New test.
+
+2020-04-02 Sandra Loosemore <sandra@codesourcery.com>
+
+ * lib/target-supports.exp (check_effective_target_sigsetjmp): Test
+ for __sigsetjmp as well as sigsetjmp.
+
+2020-04-02 Fritz Reese <foreese@gcc.gnu.org>
+
+ PR fortran/85982
+ * gfortran.dg/dec_structure_28.f90: New test.
+
+2020-04-02 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/dtio_35.f90: New.
+
+2020-04-02 Richard Biener <rguenther@suse.de>
+
+ PR c/94392
+ * gcc.dg/torture/pr94392.c: New testcase.
+
+2020-04-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94435
+ * gcc.target/aarch64/pr94435.c: New test.
+
+2020-04-02 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ PR target/94317
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c: Modify.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c: Likewise.
+
+2020-04-02 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/93522
+ * gfortran.dg/select_rank_4.f90: New.
+
+2020-04-02 Mark Eggleston <mark.eggleston@codethink.com>
+
+ PR fortran/93498
+ * gfortran.dg/pr93498_1.f90: New test.
+ * gfortran.dg/pr93498_2.f90: New test.
+
+2020-04-02 Mark Eggleston <mark.eggleston@codethink.com>
+ Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/94030
+ * gfortran.dg/pr94030_1.f90: New test.
+ * gfortran.dg/pr94030_2.f90: New test.
+
+2020-04-01 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/94315
+ * gdc.dg/pr93038.d: Split scan-file into multiple tests.
+ * gdc.dg/pr93038b.d: Likewise.
+
+2020-04-01 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/94321
+ * gdc.dg/pr92216.d: Update to work on targets with 16 or 32-bit
+ pointers.
+
+2020-04-01 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/94378
+ * gcc.dg/analyzer/compound-assignment-1.c: New test.
+ * gcc.dg/analyzer/compound-assignment-2.c: New test.
+ * gcc.dg/analyzer/compound-assignment-3.c: New test.
+
+2020-04-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/94436
+ * gcc.dg/pr94436.c: New test.
+
+ PR middle-end/94423
+ * gcc.dg/ubsan/pr94423.c: New test.
+
+2020-04-01 Kewen Lin <linkw@gcc.gnu.org>
+
+ PR tree-optimization/94043
+ * gfortran.dg/graphite/vect-pr94043.f90: New test.
+
+2020-04-01 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/90136
+ * gdc.dg/pr90136a.d: New test.
+ * gdc.dg/pr90136b.d: New test.
+ * gdc.dg/pr90136c.d: New test.
+
+2020-03-31 Andrea Corallo <andrea.corallo@arm.com>
+
+ * jit.dg/test-version.c: New testcase.
+ * jit.dg/all-non-failing-tests.h: Add test-version.c.
+
+2020-03-31 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/94424
+ * gdc.dg/pr94424.d: New test.
+
+2020-03-31 Felix Yang <felix.yang@huawei.com>
+
+ PR tree-optimization/94398
+ * gcc.target/aarch64/pr94398.c: New test.
+
+2020-03-31 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vbicq_n_s16.c: Modify.
+ * gcc.target/arm/mve/intrinsics/vbicq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_n_u32.c: Likewise.
+
+2020-03-31 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u16.c: Modify.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f32.c: Likewise.
+
+2020-03-31 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94368
+ * gcc.dg/pr94368.c: New test.
+
+ PR middle-end/94412
+ * gcc.c-torture/execute/pr94412.c: New test.
+
+ PR tree-optimization/94403
+ * g++.dg/tree-ssa/pr94403.C: New test.
+
+ PR rtl-optimization/94344
+ * gcc.dg/pr94344.c: New test.
+
+2020-03-30 David Malcolm <dmalcolm@redhat.com>
+
+ * jit.dg/all-non-failing-tests.h: Add test-empty.c
+
+2020-03-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/94385
+ * c-c++-common/pr94385.c: New test.
+
+2020-03-30 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ * gcc.target/powerpc/pragma_power6.c: New.
+ * gcc.target/powerpc/pragma_power7.c: New.
+ * gcc.target/powerpc/pragma_power8.c: New.
+ * gcc.target/powerpc/pragma_power9.c: New.
+ * gcc.target/powerpc/pragma_misc9.c: New.
+ * gcc.target/powerpc/vsu/vec-all-nez-7.c: Update error message.
+ * gcc.target/powerpc/vsu/vec-any-eqz-7.c: Update error message.
+
+2020-03-30 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ * gcc.target/powerpc/bswap64-4.c: Update scan-assembler
+ expected results.
+
+2020-03-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94343
+ * gcc.target/i386/avx512f-pr94343.c: New test.
+ * gcc.target/i386/avx512vl-pr94343.c: New test.
+
+2020-03-30 Martin Liska <mliska@suse.cz>
+
+ PR rtl-optimization/87716
+ * gcc.target/i386/pr57193.c: XFAIL a test-case.
+
+2020-03-30 Martin Liska <mliska@suse.cz>
+
+ PR testsuite/94402
+ * gfortran.dg/vect/vect-8.f90: Allow 22 or 23 loops
+ to be vectorized (based on libmvec presence).
+
+2020-03-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93069
+ * gcc.target/i386/avx512vl-pr93069.c: New test.
+ * gcc.dg/vect/pr93069.c: New test.
+
+2020-03-29 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * lib/gdc-utils.exp: (gdc-convert-args): Handle compilation test
+ arguments -D, -H, -X, and set compilable_output_file_ext.
+ (gdc-convert-test): Document and add cases DFLAGS and
+ EXTRA_CPP_SOURCES. Add dg-final entry for output generation tests,
+ and set compilable_do_what to compile.
+ (gdc-do-test): Define compilable_do_what, default to assemble.
+
+2020-03-29 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * gdc.test/runnable_cxx/runnable_cxx.exp: New file.
+ * lib/gdc-utils.exp (gdc-do-test): Add case for runnable_cxx.
+ * lib/gdc.exp (gdc_include_flags): Only add flags for libstdc++-v3 if
+ GDC_INCLUDE_CXX_FLAGS is true.
+ (gdc_link_flags): Likewise.
+ (gdc_init): Move setting of default gdc test flags to...
+ (gdc_target_compile): ...here.
+
+2020-03-29 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * gdc.test/compilable/compilable.exp: New file.
+ * gdc.test/fail_compilation/fail_compilation.exp: New file.
+ * gdc.test/runnable/runnable.exp: New file.
+ * gdc.test/gdc-test.exp: Move and rename to...
+ * lib/gdc-utils.exp: ...this. Remove load_lib gdc-dg.exp.
+ (dmd2dg): Rename to...
+ (gdc-convert-test): ...this.
+ (gdc-do-test): Add testcases parameter and remove subdir handling.
+
+2020-03-28 Roman Zhuykov <zhroma@ispras.ru>
+
+ * gcc.dg/torture/pr87197-debug-sms.c: Move to ...
+ * gcc.dg/sms-compare-debug-1.c: ... this. Add -O2.
+ * gcc.c-torture/execute/pr70127-debug-sms.c: Move to ...
+ * gcc.dg/sms-compare-debug-2.c: ... this. Add -O2.
+
+2020-03-28 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/94348
+ * gfortran.dg/module_procedure_3.f90: New.
+
+2020-03-28 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94306
+ * g++.dg/concepts/diagnostic8.C: New test.
+
+ PR c++/94252
+ * g++.dg/concepts/diagnostic7.C: New test.
+ * g++.dg/concepts/pr94252.C: New test.
+ * g++.dg/cpp2a/concepts-requires18.C: Adjust to expect an additional
+ diagnostic.
+
+ * g++.dg/concepts/diagnostic1.C: Pass -fconcepts-diagnostics-depth=2.
+ * g++.dg/concepts/diagnostic5.C: Adjust expected diagnostics.
+ * g++.dg/cpp2a/concepts-iconv1.C: Pass -fconcepts-diagnostics-depth=2.
+ * g++.dg/cpp2a/concepts-requires5.C: Likewise.
+
+ * g++.dg/concepts/diagnostic2.C: Expect "no operand" instead of
+ "neither operand".
+ * g++.dg/concepts/diagnostic5.C: New test.
+
+2020-03-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/93573
+ * gcc.dg/pr93573-1.c: New test.
+ * gcc.dg/pr93573-2.c: New test.
+
+ PR tree-optimization/94329
+ * gfortran.dg/pr94329.f90: New test.
+
+2020-03-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/94339
+ * g++.dg/ext/attr-copy-2.C: Revert the last changes.
+
+2020-03-27 Martin Sebor <msebor@redhat.com>
+
+ PR c++/94346
+ * c-c++-common/attr-copy.c: New test.
+
+2020-03-27 Martin Sebor <msebor@redhat.com>
+
+ PR c++/94098
+ * g++.dg/ext/attr-access-2.C: New test.
+
+2020-03-27 Martin Sebor <msebor@redhat.com>
+
+ PR c++/94078
+ PR c++/93824
+ PR c++/93810
+ * g++.dg/warn/Wmismatched-tags-3.C: New test.
+ * g++.dg/warn/Wmismatched-tags-4.C: New test.
+ * g++.dg/warn/Wmismatched-tags-5.C: New test.
+ * g++.dg/warn/Wmismatched-tags-6.C: New test.
+ * g++.dg/warn/Wredundant-tags-3.C: Remove xfails.
+ * g++.dg/warn/Wredundant-tags-6.C: New test.
+ * g++.dg/warn/Wredundant-tags-7.C: New test.
+
+2020-03-27 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/data-model-5b.c: Add xfail for new false
+ positive leak.
+ * gcc.dg/analyzer/data-model-5c.c: Likewise.
+ * gcc.dg/analyzer/malloc-5.c: New test.
+
+2020-03-27 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/dot-output.c: Check that
+ dot-output.c.supergraph-eg.dot is valid.
+
+2020-03-27 Richard Biener <rguenther@suse.de>
+
+ PR debug/94273
+ * g++.dg/debug/pr94273.C: New testcase.
+
+2020-03-27 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/93957
+ * gfortran.dg/assumed_rank_19.f90: New.
+
+2020-03-27 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/93363
+ * gfortran.dg/associate_51.f90: Fix test case.
+ * gfortran.dg/associate_53.f90: New.
+
+2020-03-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/94326
+ * g++.dg/other/pr94326.C: New test.
+
+ PR c++/94339
+ * g++.dg/other/pr94339.C: New test.
+ * g++.dg/ext/attr-copy-2.C: Comment out failing tests due to PR94346.
+
+2020-03-27 Roman Zhuykov <zhroma@ispras.ru>
+
+ * gcc.c-torture/execute/pr70127-debug-sms.c: New test.
+ * gcc.dg/torture/pr87197-debug-sms.c: New test.
+
+2020-03-27 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94336 - template keyword accepted before destructor names.
+ * g++.dg/template/template-keyword2.C: New test.
+
+2020-03-27 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/torture/symmetric-transfer-00-basic.C:
+ Add <cstdio>.
+
+2020-03-26 Marek Polacek <polacek@redhat.com>
+
+ DR 1710
+ PR c++/94057 - template keyword in a typename-specifier.
+ * g++.dg/cpp1y/alias-decl1.C: New test.
+ * g++.dg/cpp1y/alias-decl2.C: New test.
+ * g++.dg/cpp1y/alias-decl3.C: New test.
+ * g++.dg/parse/missing-template1.C: Update dg-error.
+ * g++.dg/parse/template3.C: Likewise.
+ * g++.dg/template/error4.C: Likewise.
+ * g++.dg/template/meminit2.C: Likewise.
+ * g++.dg/template/dependent-name5.C: Likewise.
+ * g++.dg/template/dependent-name7.C: New test.
+ * g++.dg/template/dependent-name8.C: New test.
+ * g++.dg/template/dependent-name9.C: New test.
+ * g++.dg/template/dependent-name10.C: New test.
+ * g++.dg/template/dependent-name11.C: New test.
+ * g++.dg/template/dependent-name12.C: New test.
+ * g++.dg/template/dependent-name13.C: New test.
+ * g++.dg/template/dr1794.C: New test.
+ * g++.dg/template/dr314.C: New test.
+ * g++.dg/template/dr1710.C: New test.
+ * g++.dg/template/dr1710-2.C: New test.
+ * g++.old-deja/g++.pt/crash38.C: Update dg-error.
+
+2020-03-26 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C: Amend
+ to n4849 behaviour.
+ * g++.dg/coroutines/torture/symmetric-transfer-00-basic.C: New
+ test.
+
+2020-03-26 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C: New test.
+
+2020-03-26 Martin Liska <mliska@suse.cz>
+
+ * gcc.target/i386/pr81213.c: Do not scan assembler
+ and add one missing PR entry.
+
+2020-03-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/94323
+ * g++.dg/debug/pr94323.C: New test.
+
+2020-03-26 Martin Liska <mliska@suse.cz>
+
+ PR testsuite/94334
+ * gcc.dg/lto/pr94271_0.c: Skip for non-x86 targets
+ and add ifunc effective target.
+ * gcc.target/i386/pr81213-2.c: Add ifunc effective target.
+
+2020-03-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/94281
+ * g++.dg/debug/pr94281.C: New test.
+
+ PR c++/81349
+ * g++.dg/cpp1z/pr81349.C: New test.
+
+ PR c++/94272
+ * g++.dg/debug/pr94272.C: New test.
+
+2020-03-26 Felix Yang <felix.yang@huawei.com>
+
+ PR tree-optimization/94269
+ * gcc.dg/pr94269.c: New test.
+
+2020-03-25 Andrew Stubbs <ams@codesourcery.com>
+
+ * gcc.dg/vect/bb-slp-pr69907.c: Disable the dump scan for amdgcn.
+ * lib/target-supports.exp (check_effective_target_vect_unpack):
+ Add amdgcn.
+
+2020-03-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94292
+ * gcc.dg/pr94292.c: New test.
+
+2020-03-25 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/94004
+ * gcc.dg/Walloca-larger-than-3.c: New test.
+ * gcc.dg/Walloca-larger-than-3.h: New test header.
+ * gcc.dg/Wvla-larger-than-4.c: New test.
+
+2020-03-25 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94265
+ * g++.dg/warn/Wduplicated-cond1.C: New test.
+
+2020-03-25 Martin Sebor <msebor@redhat.com>
+
+ PR tree-optimization/94131
+ * gcc.dg/pr94131.c: New test.
+
+2020-03-25 Sandra Loosemore <sandra@codesourcery.com>
+
+ * gcc.dg/pr92301.c (main): Allow argc to be 0 to support
+ embedded targets.
+
+2020-03-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/94296
+ * gcc.dg/cleanup-13.c: Add a comment that the test is not
+ -fcompare-debug compatible with certain other options.
+
+ PR target/94308
+ * gcc.target/i386/pr94308.c: New test.
+
+2020-03-25 Martin Liska <mliska@suse.cz>
+
+ PR target/93274
+ PR ipa/94271
+ * gcc.target/i386/pr81213-2.c: New test.
+ * gcc.target/i386/pr81213.c: Add additional source.
+ * gcc.dg/lto/pr94271_0.c: New test.
+ * gcc.dg/lto/pr94271_1.c: New test.
+
+2020-03-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/94280
+ * gfortran.dg/iso_c_binding_compiler_1.f90: Add dg-skip-if for
+ -fcompare-debug.
+ * gfortran.dg/iso_c_binding_compiler_3.f90: Likewise.
+ * gfortran.dg/unlimited_polymorphic_31.f03: Likewise.
+
+2020-03-25 Mark Eggleston <mark.eggleston@codethink.com>
+
+ PR fortran/93484
+ * gfortran.dg/pr93484_1.f90: New test.
+ * gfortran.dg/pr93484_2.f90: New test.
+
+2020-03-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/94303
+ * g++.dg/torture/pr94303.C: New test.
+
+ PR c++/94223
+ * g++.dg/opt/pr94223.C: New test.
+
+ PR tree-optimization/94300
+ * gcc.target/i386/avx512f-pr94300.c: New test.
+
+ PR debug/94283
+ * gcc.dg/pr94283.c: New test.
+
+2020-03-24 Sandra Loosemore <sandra@codesourcery.com>
+
+ * gcc.dg/analyzer/sigsetjmp-5.c: Require sigsetjmp support.
+ * gcc.dg/analyzer/sigsetjmp-6.c: Likewise.
+ * lib/target-supports.exp (check_effective_target_sigsetjmp): New.
+
+2020-03-24 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94190 - wrong no post-decrement operator error in template.
+ * g++.dg/conversion/op7.C: New test.
+
+2020-03-24 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc/arm/vfp-1.c: Use arm_fp__ok effective-target.
+ * gcc.target/arm/vfp-ldmdbd.c: Likewise.
+ * gcc.target/arm/vfp-ldmiad.c: Likewise.
+ * gcc.target/arm/vfp-stmdbd.c: Likewise.
+ * gcc.target/arm/vfp-stmiad.c: Likewise.
+ * gcc.target/arm/vnmul-1.c: Likewise.
+ * gcc.target/arm/vnmul-3.c: Likewise.
+ * gcc.target/arm/vnmul-4.c: Likewise.
+
+2020-03-24 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/cmp-2.c: Move double-precision tests to...
+ * gcc.target/arm/cmp-3.c: ...here (new file)
+
+2020-03-24 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * lib/target-supports.exp
+ (check_effective_target_arm_fp_dp_ok_nocache): New.
+ (check_effective_target_arm_fp_dp_ok): New.
+ (add_options_for_arm_fp_dp): New.
+
+2020-03-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94286
+ * gcc.dg/pr94286.c: New test.
+
+ PR debug/94285
+ * gfortran.dg/pr94285.f90: New test.
+
+ PR debug/94283
+ * gcc.target/i386/pr94283.c: New test.
+
+ PR debug/94277
+ * gcc.dg/pr94277.c: New test.
+
+2020-03-23 Jeff Law <law@redhat.com>
+
+ PR target/94144
+ PR target/94238
+ * gcc.c-torture/compile/pr94144.c: New test.
+ * gcc.c-torture/compile/pr94238.c: New test.
+
+2020-03-23 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/93805
+ * g++.dg/warn/Wnoexcept2.C: New test.
+
+2020-03-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/91993
+ * g++.dg/warn/Wconversion-pr91993.C: New test.
+ * g++.dg/ubsan/pr91993.C: New test.
+ * c-c++-common/ubsan/float-cast-overflow-1.c: Add -Wno-overflow
+ to dg-options.
+ * c-c++-common/ubsan/float-cast-overflow-2.c: Likewise.
+ * c-c++-common/ubsan/float-cast-overflow-4.c: Likewise.
+
+2020-03-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+ Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vshlcq_m_s16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vshlcq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlcq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlcq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlcq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlcq_m_u8.c: Likewise.
+
+2020-03-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/asrl.c: New test.
+ * gcc.target/arm/mve/intrinsics/lsll.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/sqrshr.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/sqrshrl_sat48.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/sqrshrl_sat64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/sqshl.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/sqshll.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/srshr.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/srshrl.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/uqrshl.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/uqrshll_sat48.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/uqrshll_sat64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/uqshl.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/uqshll.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/urshr.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/urshrl.c: Likewise.
+ * lib/target-supports.exp:
+ (check_effective_target_arm_v8_1m_mve_fp_ok_nocache): Modify to not
+ support MVE floating point in Big Endian mode.
+ (check_effective_target_arm_v8_1m_mve_ok_nocache): Modify to not
+ support MVE integer in Big Endian mode.
+
+2020-03-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+ Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsetq_lane_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsetq_lane_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsetq_lane_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsetq_lane_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsetq_lane_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsetq_lane_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsetq_lane_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsetq_lane_u8.c: Likewise.
+
+2020-03-23 Andrea Corallo <andrea.corallo@arm.com>
+
+ * jit.dg/all-non-failing-tests.h: Add test-long-string-literal.c.
+ * jit.dg/test-long-string-literal.c: New testcase.
+
+2020-03-23 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/mve_fp_fpu1.c: Remove dg-do.
+ * gcc.target/arm/mve/intrinsics/mve_fp_fpu2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_fpu1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_fpu2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_fpu3.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_libcall1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_libcall2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_move_gpr_to_gpr.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_float.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_float1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_float2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_uint.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_uint1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_uint2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vadciq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vadciq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vadciq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vadciq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vadcq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vadcq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vadcq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vadcq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddlvaq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddlvaq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddlvaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddlvaq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddlvq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddlvq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddlvq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddlvq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vctp16q.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vctp16q_m.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vctp32q.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vctp32q_m.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vctp64q.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vctp64q_m.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vctp8q.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vctp8q_m.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_m_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_m_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_m_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_m_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_x_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_x_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_x_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_x_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtbq_f16_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtbq_f32_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtbq_m_f16_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtbq_m_f32_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtbq_x_f32_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_m_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_m_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_m_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_m_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_x_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_x_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_x_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_x_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_m_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_m_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_m_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_m_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_x_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_x_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_x_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_x_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_m_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_m_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_m_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_m_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_x_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_x_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_x_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_x_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_f16_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_f16_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_f32_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_f32_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_f16_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_f16_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_f32_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_f32_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_n_f16_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_n_f16_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_n_f32_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_n_f32_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_n_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_n_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_n_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_n_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_f16_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_f16_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_f32_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_f32_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvttq_f16_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvttq_f32_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvttq_m_f16_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvttq_m_f32_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvttq_x_f32_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmasq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmasq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmsq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmsq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmsq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmsq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld2q_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld2q_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld2q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld2q_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld2q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld2q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld2q_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld2q_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld4q_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld4q_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld4q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld4q_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld4q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld4q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld4q_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld4q_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_z_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_z_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_z_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_z_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_z_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_z_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_z_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_z_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxaq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxaq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminaq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminaq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminaq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminaq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminaq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmaq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmaq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmaq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmaq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmavq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmavq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmavq_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmavq_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmvq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmvq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmvq_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmvq_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavxq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavxq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavaq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavaxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavaxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovnbq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovnbq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovnbq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovnbq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovnbq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovnbq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovnbq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovnbq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovntq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovntq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovntq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovntq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovntq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovntq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovntq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovntq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_p16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_p8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_p16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_p8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpnot.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqabsq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqabsq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqabsq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqabsq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqabsq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqabsq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmullbq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmullbq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmullbq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmullbq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmullbq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmullbq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulltq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulltq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulltq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulltq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulltq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulltq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovnbq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovnbq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovnbq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovnbq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovnbq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovnbq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovnbq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovnbq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovntq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovntq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovntq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovntq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovntq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovntq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovntq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovntq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovunbq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovunbq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovunbq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovunbq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovuntq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovuntq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovuntq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovuntq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqnegq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqnegq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqnegq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqnegq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqnegq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqnegq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrntq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrntq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrntq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrntq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshruntq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshruntq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_r_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_r_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_r_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_r_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_r_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_r_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshluq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshluq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshluq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshluq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshluq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshluq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrnbq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrnbq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrnbq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrnbq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrntq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrntq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrntq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrntq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrunbq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrunbq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshruntq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshruntq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev16q_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev16q_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev16q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev16q_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev16q_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev16q_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlsldavhaq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlsldavhaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlsldavhq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlsldavhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlsldavhxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlsldavhxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndaq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndaq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndaq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndaq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndaq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndaq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndmq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndmq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndmq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndmq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndmq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndmq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndnq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndnq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndnq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndnq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndnq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndnq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndpq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndpq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndpq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndpq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndpq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndpq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndxq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndxq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndxq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndxq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndxq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndxq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrnbq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrnbq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrnbq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrnbq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrntq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrntq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrntq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrntq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsbciq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsbciq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsbciq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsbciq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsbcq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsbcq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlcq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlcq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlcq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlcq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlcq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlcq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_r_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_r_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_r_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_r_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_r_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_r_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrnbq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrnbq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrnbq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrnbq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst2q_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst2q_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst2q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst2q_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst2q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst2q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst2q_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst2q_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst4q_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst4q_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst4q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst4q_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst4q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst4q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst4q_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst4q_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_float.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_int.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c: Likewise.
+ * gcc.target/arm/mve/mve.exp: Change default dg-do to assemble.
+ * lib/target-supports.exp: Add --save-temps to mve options.
+
+2020-03-23 Mark Eggleston <mark.eggleston@codethink.com>
+
+ PR fortran/93365
+ PR fortran/93600
+ * gfortran.dg/pr93365.f90: New test.
+ * gfortran.dg/pr93600_1.f90: New test.
+ * gfortran.dg/pr93600_2.f90: New test.
+
+2020-03-23 Tobias Burnus <tobias@codesourcery.com>
+
+ * lib/target-supports.exp (check_effective_target_offload_gcn):
+ Check for -foffload=amdgcn-amdhsa not ...=amdgcn-unknown-amdhsa.
+
+2020-03-22 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/93038
+ * gdc.dg/pr93038b.d: New test.
+
+2020-03-22 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/abi/lambda-vis.C: Amend assembler match
+ strings for targets using a USER_LABEL_PREFIX.
+
+2020-03-22 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/93038
+ * gdc.dg/fileimports/pr93038.txt: New test.
+ * gdc.dg/pr93038.d: New test.
+
+2020-03-21 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/94066
+ * g++.dg/cpp1y/constexpr-union2.C: New test.
+ * g++.dg/cpp1y/constexpr-union3.C: New test.
+ * g++.dg/cpp1y/constexpr-union4.C: New test.
+ * g++.dg/cpp1y/constexpr-union5.C: New test.
+ * g++.dg/cpp1y/pr94066.C: New test.
+ * g++.dg/cpp1y/pr94066-2.C: New test.
+ * g++.dg/cpp1y/pr94066-3.C: New test.
+ * g++.dg/cpp2a/constexpr-union1.C: New test.
+
+2020-03-21 Tamar Christina <tamar.christina@arm.com>
+
+ PR target/94052
+ * gcc.target/aarch64/pr94052.C: New test.
+
+2020-03-20 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/93435
+ * gcc.dg/tree-ssa/pr93435.c: New test.
+
+2020-03-20 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/93347
+ * g++.dg/torture/pr93347.C: New test.
+
+2020-03-20 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/69694
+ * g++.dg/cpp0x/decltype74.C: New test.
+ * g++.dg/cpp0x/decltype75.C: New test.
+
+2020-03-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+ Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vld1q_z_f16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_z_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld2q_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld2q_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld2q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld2q_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld2q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld2q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld2q_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld2q_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld4q_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld4q_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld4q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld4q_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld4q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld4q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld4q_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld4q_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst2q_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst2q_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst2q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst2q_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst2q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst2q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst2q_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst2q_u8.c: Likewise.
+
+2020-03-20 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR middle-end/94072
+ * gcc.target/aarch64/pr94072.c: New test.
+
+2020-03-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+ Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vadciq_m_s32.c: New test.
+ * gcc.target/arm/mve/intrinsics/vadciq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vadciq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vadciq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vadcq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vadcq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vadcq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vadcq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsbciq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsbciq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsbciq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsbciq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsbcq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsbcq_u32.c: Likewise.
+
+2020-03-20 Patrick Palka <ppalka@redhat.com>
+
+ * g++.dg/concepts/diagnostic6.C: New test.
+
+2020-03-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vabdq_x_f16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vabdq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_x_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_x_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_x_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_x_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtbq_x_f32_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_x_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_x_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_x_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_x_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_x_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_x_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_x_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_x_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_x_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_x_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_x_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_x_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_f16_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_f16_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_f32_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_f32_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f16_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_f32_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_n_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_x_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvttq_x_f32_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_x_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_x_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev16q_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev16q_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndaq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndaq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndmq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndmq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndnq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndnq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndpq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndpq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndxq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndxq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_x_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_x_u8.c: Likewise.
+
+2020-03-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+ Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c: New test.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_s64.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_u64.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_f32.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_s32.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_u32.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_u32.c: Likewise.
+
+2020-03-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+ Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vddupq_m_n_u16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vddupq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_m_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vddupq_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_m_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vidupq_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_wb_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_wb_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/viwdupq_wb_u8.c: Likewise.
+
+2020-03-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_float.c: New test.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_int.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vreinterpretq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_float.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_int.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c: Likewise.
+
+2020-03-20 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+ Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vaddq_f16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vaddq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_u8.c: Likewise.
+
+2020-03-20 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/mve_fp_fpu1.c: Fix testisms.
+ * gcc.target/arm/mve/intrinsics/mve_fp_fpu2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_fpu1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_fpu2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_fpu3.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_libcall1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_libcall2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_float.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_float1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_float2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_uint.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_uint1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_uint2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_m_n_u32.c: Likewise.
+
+2020-03-20 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/mve_move_gpr_to_gpr.c: New test.
+
+2020-03-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/94224
+ * g++.dg/tree-ssa/pr94224.C: New test.
+
+2020-03-19 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/94202
+ * g++.dg/torture/pr94202.C: New test.
+
+2020-03-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR gcov-profile/94029
+ * gcc.misc-tests/gcov-pr94029.c: New test.
+
+2020-03-19 Jan Hubicka <hubicka@ucw.cz>
+
+ PR ipa/92372
+ * gcc.c-torture/pr92372.c: New test.
+ * gcc.dg/attr-flatten-1.c: New test.
+
+2020-03-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/94211
+ * gcc.dg/pr94211.c: New test.
+
+2020-03-19 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/94216
+ * g++.dg/torture/pr94216.C: New testcase.
+
+2020-03-18 Martin Sebor <msebor@redhat.com>
+
+ PR ipa/92799
+ * gcc.dg/attr-weakref-5.c: New test.
+
+2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_s64.c: New test.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_p_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_p_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_offset_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_s64.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_p_u64.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_s64.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrdq_scatter_shifted_offset_u64.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_f16.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_f16.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_f32.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_f32.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_s32.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_p_u32.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_s32.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_u32.c:
+ Likewise.
+
+2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vst1q_f16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vst1q_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst1q_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s16.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s32.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u16.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u32.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s16.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s32.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u16.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u32.c:
+ Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrhq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_u32.c: Likewise.
+
+2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vld1q_f16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vld1q_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_z_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_z_u32.c: Likewise.
+
+2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vld1q_f16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vld1q_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vld1q_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrhq_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_z_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_z_u32.c: Likewise.
+
+2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_z_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_z_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_z_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_z_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_z_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_u32.c: Likewise.
+
+2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vstrbq_p_s16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vstrbq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_p_u32.c: Likewise.
+
+2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrbq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vldrwq_gather_base_u32.c: Likewise.
+
+2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vstrbq_s16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vstrbq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrbq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_u32.c: Likewise.
+
+2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vabdq_m_f16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vabdq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmsq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmsq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_f32.c: Likewise.
+
+2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmullbq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmullbq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulltq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulltq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlsldavhaq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_m_n_u32.c: Likewise.
+
+2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vabdq_m_s16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vabdq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaxq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_n_u8.c: Likewise.
+
+2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vabavq_p_s16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vabavq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f16_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_n_f32_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshluq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshluq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshluq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_m_u8.c: Likewise.
+
+2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vabsq_m_f16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vabsq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddlvaq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddlvaq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtbq_m_f16_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtbq_m_f32_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_m_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_m_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_m_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_m_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_m_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_m_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_m_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_m_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_m_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_m_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_m_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_m_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvttq_m_f16_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvttq_m_f32_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmaq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmasq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmasq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmsq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vfmsq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmaq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmaq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmavq_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmavq_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmvq_p_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmvq_p_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavaxq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavxq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavxq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavaq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavaxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavaxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovnbq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovnbq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovnbq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovnbq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovntq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovntq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovntq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovntq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovnbq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovnbq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovnbq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovnbq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovntq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovntq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovntq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovntq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovunbq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovunbq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovuntq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovuntq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrntq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrntq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrntq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrntq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshruntq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshruntq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrnbq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrnbq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrnbq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrnbq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrntq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrntq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrntq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrntq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrunbq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshrunbq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshruntq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshruntq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev16q_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev16q_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlsldavhaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlsldavhq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlsldavhxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndaq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndaq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndmq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndmq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndnq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndnq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndpq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndpq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndxq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndxq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrnbq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrnbq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrnbq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrnbq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrntq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrntq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrntq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrntq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrnbq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrnbq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrnbq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrnbq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrntq_n_u32.c: Likewise.
+
+2020-03-18 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vabsq_m_s16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vabsq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminaq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminaq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminaq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavaxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavxq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavxq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlasq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavaxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpselq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqabsq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqabsq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqabsq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmladhxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlahq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqnegq_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqnegq_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqnegq_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmladhxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlahq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlashq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_m_r_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_m_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_m_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_m_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_m_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_m_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_m_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_m_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_m_r_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsliq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsriq_n_u8.c: Likewise.
+
+2020-03-18 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/94047
+ * gcc.dg/analyzer/pr94047.c: New test.
+
+2020-03-18 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/94206
+ * gcc.dg/torture/pr94206.c: New testcase.
+
+2020-03-18 Duan bo <duanbo3@huawei.com>
+
+ PR target/94201
+ * gcc.target/aarch64/pr94201.c:New test.
+
+2020-03-18 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/cpy_1.c: Leave gaps for in the
+ check-function-bodies patterns for p15 to be saved.
+ * gcc.target/aarch64/sve/pcs/args_1.c (callee_pred): Expect two
+ predicates to be saved.
+ * gcc.target/aarch64/sve/pcs/saves_1_be_nowrap.c (test_1): Expect
+ p12-p15 to be saved and restored.
+ (test_2): Remove p12-p15 from the clobber list.
+ * gcc.target/aarch64/sve/pcs/saves_1_be_wrap.c (test_1): Expect
+ p12-p15 to be saved and restored.
+ (test_2): Remove p12-p15 from the clobber list.
+ * gcc.target/aarch64/sve/pcs/saves_1_le_nowrap.c (test_1): Expect
+ p12-p15 to be saved and restored.
+ (test_2): Remove p12-p15 from the clobber list.
+ * gcc.target/aarch64/sve/pcs/saves_1_le_wrap.c (test_1): Expect
+ p12-p15 to be saved and restored.
+ (test_2): Remove p12-p15 from the clobber list.
+ * gcc.target/aarch64/sve/pcs/saves_2_be_nowrap.c: Expect p12-p15
+ to be saved and restored.
+ * gcc.target/aarch64/sve/pcs/saves_2_be_wrap.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_2_le_nowrap.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_2_le_wrap.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_4_be.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_4_le.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_5_be.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_5_le.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/stack_clash_1.c (test_1): Likewise.
+ (test_2): Remove p12-p15 from the clobber list.
+ * gcc.target/aarch64/sve/pcs/stack_clash_1_128.c (test_1): Expect
+ p12-p15 to be saved and restored.
+ (test_2): Remove p12-p15 from the clobber list.
+ * gcc.target/aarch64/sve/pcs/stack_clash_1_256.c (test_1): Expect
+ p12-p15 to be saved and restored.
+ (test_2): Remove p12-p15 from the clobber list.
+ (test_4): Expect only 16 bytes of stack to be allocated for the
+ predicate save slot.
+ * gcc.target/aarch64/sve/pcs/stack_clash_1_512.c (test_1): Expect
+ p12-p15 to be saved and restored.
+ (test_2): Remove p12-p15 from the clobber list.
+ (test_4): Expect only 16 bytes of stack to be allocated for the
+ predicate save slot.
+ * gcc.target/aarch64/sve/pcs/stack_clash_1_1024.c (test_1): Expect
+ p12-p15 to be saved and restored.
+ (test_2): Remove p12-p15 from the clobber list.
+ (test_4): Expect only 16 bytes of stack to be allocated for the
+ predicate save slot.
+ * gcc.target/aarch64/sve/pcs/stack_clash_1_2048.c (test_1): Expect
+ p12-p15 to be saved and restored.
+ (test_2): Remove p12-p15 from the clobber list.
+ (test_4): Expect only 32 bytes of stack to be allocated for the
+ predicate save slot.
+ * gcc.target/aarch64/sve/pcs/stack_clash_2_256.c: Use z16 rather
+ than p4 to create a vector-sized save slot.
+ * gcc.target/aarch64/sve/pcs/stack_clash_2_512.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/stack_clash_2_1024.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/stack_clash_2_2048.c: Likewise.
+
+2020-03-18 Tobias Burnus <tobias@codesourcery.com>
+
+ * g++.dg/goacc/firstprivate-mappings-1.C: Only set DO_LONG_DOUBLE if
+ not defined; update comments.
+ * c-c++-common/goacc/firstprivate-mappings-1.c: Likewise.
+
+2020-03-18 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/94188
+ * gcc.dg/pr94188.c: New testcase.
+
+2020-03-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/91759
+ * g++.dg/cpp1z/class-deduction72.C: New test.
+
+2020-03-17 Uroš Bizjak <ubizjak@gmail.com>
+
+ * g++.dg/debug/dwarf2/const2b.C (dg-do): Fix target selector.
+
+2020-03-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/94172
+ * gcc.dg/pr94172-1.c: New test.
+ * gcc.dg/pr94172-2.c: New test.
+
+ PR c++/90995
+ * g++.dg/cpp0x/enum40.C: New test.
+
+2020-03-17 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/bfcvt-nosimd.c: Skip for
+ -fno-fat-lto-objects. Use tabs rather than spaces in the
+ check-function-bodies code.
+
+2020-03-17 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/torture/coro-torture.exp: Ensure that
+ DEFAULT_CXXFLAGS has a value, even if unset by a higher level.
+
+2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vabavq_s16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vabavq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabavq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_m_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_m_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_m_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_m_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_m_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_m_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_f16_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_f16_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_f32_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_m_f32_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrnbq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshrunbq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlcq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlcq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlcq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlcq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlcq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlcq_u8.c: Likewise.
+
+2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vabdq_f16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vabdq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddlvaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddlvaq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot180_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot270_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmulq_rot90_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vctp16q_m.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vctp32q_m.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vctp64q_m.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vctp8q_m.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtbq_f16_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvttq_f16_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmaq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmaq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmavq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmavq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmvq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminnmvq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavxq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlaldavxq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsldavxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovnbq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovnbq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovnbq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovnbq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovntq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovntq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovntq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovntq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_p16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_poly_p8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_p16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_poly_p8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmullbq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmullbq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmullbq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmullbq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulltq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulltq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulltq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulltq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovnbq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovnbq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovnbq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovnbq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovntq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovntq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovntq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovntq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovunbq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovunbq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovuntq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqmovuntq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlaldavhxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlsldavhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmlsldavhxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshllbq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlltq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_f32.c: Likewise.
+
+2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vabdq_s16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vabdq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabdq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvaq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_p_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_p_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_p_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_p_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_p_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vandq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbicq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot270_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcaddq_rot90_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpcsq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpeqq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgeq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpgtq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmphiq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpleq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpltq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/veorq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhaddq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot270_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhcaddq_rot90_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vhsubq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxaq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxaq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxavq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmaxvq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminaq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminaq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminaq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminavq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vminvq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmladavxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmlsdavxq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulhq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmullbq_int_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulltq_int_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmulq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vornq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vorrq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqaddq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqdmulhq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrdmulhq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqrshlq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_r_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_r_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_r_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_r_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_r_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_r_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshlq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshluq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshluq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqshluq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqsubq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrhaddq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrmulhq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshlq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrshrq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_r_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_r_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_r_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_r_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_r_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_r_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_u8.c: Likewise.
+
+2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vaddlvq_p_s32.c: New test.
+ * gcc.target/arm/mve/intrinsics/vaddlvq_p_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcmpneq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshlq_u8.c: Likewise.
+
+2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vcreateq_s16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vcreateq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_s64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_u64.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_n_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_n_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_n_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_n_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vshrq_n_u8.c: Likewise.
+
+2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_f16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vbrsrq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcreateq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_n_f16_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_n_f16_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_n_f32_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_n_f32_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vsubq_n_f32.c: Likewise.
+
+2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vctp16q.c: New test.
+ * gcc.target/arm/mve/intrinsics/vctp32q.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vctp64q.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vctp8q.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vpnot.c: Likewise.
+
+2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vabsq_s16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vabsq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vabsq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddlvq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddlvq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vaddvq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclsq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vclzq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtaq_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtmq_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtnq_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_s16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtpq_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_n_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_n_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovlbq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmovltq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqabsq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqabsq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqabsq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqnegq_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqnegq_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vqnegq_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev16q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev16q_u8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_u8.c: Likewise.
+
+2020-03-17 Mihail Ionescu <mihail.ionescu@arm.com>
+
+ * gcc.target/arm/multilib.exp: Add new v8.1-M entry.
+
+2020-03-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/94015
+ * gcc.dg/pr94015.c: New test.
+
+2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vcvtq_s16_f16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vcvtq_s32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_u16_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_u32_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_n_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_n_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_n_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vmvnq_n_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_u8.c: Likewise.
+
+2020-03-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vabsq_f16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vabsq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtbq_f32_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_f16_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_f16_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_f32_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvtq_f32_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vcvttq_f32_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_n_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vdupq_n_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vnegq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev32q_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrev64q_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndaq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndaq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndmq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndmq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndnq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndnq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndpq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndpq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndq_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndxq_f16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vrndxq_f32.c: Likewise.
+
+2020-03-16 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/vst4q_f16.c: New test.
+ * gcc.target/arm/mve/intrinsics/vst4q_f32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst4q_s16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst4q_s32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst4q_s8.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst4q_u16.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst4q_u32.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/vst4q_u8.c: Likewise.
+
+2020-03-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94185
+ * g++.target/i386/pr94185.C (l): Use 4294967295U instead of 4294967295
+ to avoid FAIL with -m32 -std=c++98.
+
+2020-03-17 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/aarch64/sve/acle/general-c/sizeless-1.c: Remove
+ superfluous dg-error.
+ * gcc.target/aarch64/sve/acle/general-c/sizeless-2.c: Likewise.
+
+2020-03-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/94189
+ * gcc.dg/pr94189.c: New test.
+
+2020-03-17 Martin Liska <mliska@suse.cz>
+
+ PR lto/94157
+ * gcc.dg/lto/pr94157_0.c: Add gas effective
+ target filter.
+
+2020-03-16 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/92309
+ * gdc.dg/pr92309.d: New test.
+
+2020-03-16 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ PR d/92216
+ * gdc.dg/imports/pr92216.d: New.
+ * gdc.dg/pr92216.d: New test.
+
+2020-03-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/94179
+ * gcc.c-torture/compile/pr94179.c: New test.
+
+2020-03-16 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/94185
+ * g++.target/i386/pr94185.C: New test.
+
+2020-03-16 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general-c/sizeless-1.c: Add a test
+ name to .-1 dg-error tests.
+ * gcc.target/aarch64/sve/acle/general-c/sizeless-2.c: Likewise.
+
+2020-03-16 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/mve_libcall1.c: New test.
+ * gcc.target/arm/mve/intrinsics/mve_libcall2.c: Likewise.
+
+2020-03-16 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/mve_fp_fpu1.c: New test.
+ * gcc.target/arm/mve/intrinsics/mve_fp_fpu2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_fpu1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_fpu2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_fpu3.c: Likewise.
+
+
+2020-03-16 Andre Vieira <andre.simoesdiasvieira@arm.com>
+ Mihail Ionescu <mihail.ionescu@arm.com>
+ Srinath Parvathaneni <srinath.parvathaneni@arm.com>
+
+ * gcc.target/arm/mve/intrinsics/mve_vector_float.c: New test.
+ * gcc.target/arm/mve/intrinsics/mve_vector_float1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_float2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_int2.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_uint.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_uint1.c: Likewise.
+ * gcc.target/arm/mve/intrinsics/mve_vector_uint2.c: Likewise.
+ * gcc.target/arm/mve/mve.exp: New file.
+ * lib/target-supports.exp
+ (check_effective_target_arm_v8_1m_mve_fp_ok_nocache): Proc to check
+ armv8.1-m.main+mve.fp and returning corresponding options.
+ (check_effective_target_arm_v8_1m_mve_fp_ok): Proc to call
+ check_effective_target_arm_v8_1m_mve_fp_ok_nocache to check support of
+ MVE with floating point on the current target.
+ (add_options_for_arm_v8_1m_mve_fp): Proc to call
+ check_effective_target_arm_v8_1m_mve_fp_ok to return corresponding
+ compiler options for MVE with floating point.
+ (check_effective_target_arm_v8_1m_mve_ok_nocache): Modify to test and
+ return hard float-abi on success.
+
+2020-03-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/89229
+ * gcc.target/i386/pr89229-7a.c: New test.
+ * gcc.target/i386/pr89229-7b.c: Likewise.
+ * gcc.target/i386/pr89229-7c.c: Likewise.
+
+2020-03-16 Iain Buclaw <ibuclaw@gdcproject.org>
+
+ * gdc.dg/asm1.d: Add new test for ICE in asm parser.
+ * gdc.dg/asm5.d: New test.
+
+2020-03-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/94167
+ * gcc.dg/pr94167.c: New test.
+
+ PR tree-optimization/94166
+ * gcc.dg/pr94166.c: New test.
+
+2020-03-16 Bin Cheng <bin.cheng@linux.alibaba.com>
+
+ PR tree-optimization/94125
+ * gcc.dg/tree-ssa/pr94125.c: New test.
+
+2020-03-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/89229
+ * gcc.target/i386/pr89229-6a.c: New test.
+ * gcc.target/i386/pr89229-6b.c: Likewise.
+ * gcc.target/i386/pr89229-6c.c: Likewise.
+
+2020-03-15 Lewis Hyatt <lhyatt@gmail.com>
+
+ * gcc.misc-tests/help.exp: Adapt to new output for
+ -Walloc-size-larger-than= option.
+
+2020-03-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/89229
+ * gcc.target/i386/pr89229-5a.c: New test.
+ * gcc.target/i386/pr89229-5b.c: Likewise.
+ * gcc.target/i386/pr89229-5c.c: Likewise.
+
+2020-03-14 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR target/94176
+ * gcc.target/powerpc/fold-vec-mule-misc.c: Use vmx_hw selector.
+
+2020-03-13 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/94099
+ PR analyzer/94105
+ * gcc.dg/analyzer/pr94099.c: New test.
+ * gcc.dg/analyzer/pr94105.c: New test.
+
+2020-03-13 Vasee Vinayagamoorthy <vaseeharan.vinayagamoorthy@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/bfcvt-nosimd.c: Fix DejaGnu
+ typo.
+
+2020-03-13 Martin Sebor <msebor@redhat.com>
+
+ PR c/94040
+ * gcc.dg/Wbuiltin-declaration-mismatch-12.c: Relax test to look
+ for warning name rather than the exact text.
+ * gcc.dg/Wbuiltin-declaration-mismatch-14.c: New test.
+ * gcc.dg/Wbuiltin-declaration-mismatch-15.c: New test.
+ * gcc.dg/pr62090.c: Prune expected warning.
+ * gcc.dg/pr89314.c: Look for warning name rather than text.
+ * gcc.dg/torture/pr54261-1.c: Correct built-in declartion.
+
+2020-03-13 Uroš Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/pr64409.c: Do not limit compilation to x32 targets.
+ (dg-error): Quote 'ms_abi' attribute.
+ * gcc.target/i386/pr71958.c: Do not limit compilation to x32 targets.
+ Require maybe_x32 effective target.
+ (dg-options): Add -mx32.
+ (dg-error): Quote 'ms_abi' attribute.
+ * gcc.target/i386/pr90096.c (dg-error): Update relative
+ location of target x32 error.
+
+2020-03-13 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/67960
+ * g++.dg/diagnostic/pr67960.C: New test.
+ * g++.dg/diagnostic/pr67960-2.C: New test.
+
+2020-03-13 Martin Liska <mliska@suse.cz>
+
+ PR lto/94157
+ * gcc.dg/lto/pr94157_0.c: New test.
+
+2020-03-13 Kewen Lin <linkw@gcc.gnu.org>
+
+ PR testsuite/93935
+ * gcc.dg/vect/bb-slp-over-widen-2.c: Expect basic block vectorized
+ messages only on vect_hw_misalign targets.
+
+2020-03-13 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/89229
+ * gcc.target/i386/pr89229-4a.c: New test.
+ * gcc.target/i386/pr89229-4b.c: Likewise.
+ * gcc.target/i386/pr89229-4c.c: Likewise.
+
+2019-03-13 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.c-torture/compile/20200313-1.c: New test.
+
+2020-03-12 Jeff Law <law@redhat.com>
+
+ PR rtl-optimization/90275
+ * gcc.c-torture/compile/pr90275.c: New test.
+
+2020-03-12 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/94103
+ * gcc.target/i386/pr94103.c: New testcase.
+
+2020-03-12 Tobias Burnus <tobias@codesourcery.com>
+
+ PR middle-end/94120
+ * gfortran.dg/goacc/pr78260-2.f90: Correct scan-tree-dump-times.
+ Extend test case to result variables.
+ * gfortran.dg/goacc/declare-2.f95: Actually check module-declaration
+ restriction of OpenACC.
+ * gfortran.dg/goacc/declare-3.f95: Remove case where this
+ restriction is violated.
+ * gfortran.dg/goacc/pr94120-1.f90: New.
+ * gfortran.dg/goacc/pr94120-2.f90: New.
+ * gfortran.dg/goacc/pr94120-3.f90: New.
+
+2020-03-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/94130
+ * gcc.c-torture/execute/pr94130.c: New test.
+
+ PR c++/93907
+ * g++.dg/cpp2a/concepts-using2.C (cc): Use long long instead of
+ __int128 if __SIZEOF_INT128__ isn't defined.
+
+2020-03-06 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94074 - wrong modifying const object error for COMPONENT_REF.
+ * g++.dg/cpp1y/constexpr-tracking-const17.C: New test.
+ * g++.dg/cpp1y/constexpr-tracking-const18.C: New test.
+ * g++.dg/cpp1y/constexpr-tracking-const19.C: New test.
+ * g++.dg/cpp1y/constexpr-tracking-const20.C: New test.
+ * g++.dg/cpp1y/constexpr-tracking-const21.C: New test.
+ * g++.dg/cpp1y/constexpr-tracking-const22.C: New test.
+
+2020-03-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94134
+ * gcc.c-torture/execute/pr94134.c: New test.
+
+2020-03-11 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.target/riscv/interrupt-2.c: Update testcase and expected output.
+
+2020-03-11 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/torture/20200311-1.c: New testcase.
+
+2020-03-11 Matthew Malcomson <matthew.malcomson@arm.com>
+
+ * lib/scanasm.exp (parse_function_bodies): Lines starting with '@' also
+ counted as fluff.
+
+2020-03-11 Richard Wai <richard@annexi-strayline.com>
+
+ * gnat.dg/subpools1.adb: New test.
+
+2020-03-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94121
+ * gcc.dg/pr94121.c: New test.
+
+ PR middle-end/94111
+ * gcc.dg/dfp/pr94111.c: New test.
+
+ PR tree-optimization/94114
+ * gcc.dg/pr94114.c: New test.
+
+2020-03-10 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94124 - wrong conversion error with non-viable overload.
+ * g++.dg/cpp0x/initlist-overload1.C: New test.
+
+2020-03-10 Jiufu Guo <guojiufu@linux.ibm.com>
+
+ PR target/93709
+ * gcc.target/powerpc/p9-minmax-3.c: New test.
+
+2020-03-10 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ PR target/90763
+ * gcc.target/powerpc/pr90763.c: New.
+
+2020-03-10 Uroš Bizjak <ubizjak@gmail.com>
+
+ * g++.dg/pr80481.C (dg-final): Scan for SSE reg-reg moves only.
+
+2020-03-10 Jeff Law <law@redhat.com>
+
+ Revert:
+ 2020-02-29 Jeff Law <law@redhat.com>
+
+ * gcc.target/xstormy16/sfr/06_sfrw_to_var.c: Update expected output.
+
+2020-03-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94088
+ * gcc.target/i386/pr94088.c: New test.
+
+2020-03-09 Marek Polacek <polacek@redhat.com>
+
+ PR c++/92031 - bogus taking address of rvalue error.
+ PR c++/91465 - ICE with template codes in check_narrowing.
+ PR c++/93870 - wrong error when converting template non-type arg.
+ PR c++/94068 - ICE with template codes in check_narrowing.
+ * g++.dg/cpp0x/conv-tmpl2.C: New test.
+ * g++.dg/cpp0x/conv-tmpl3.C: New test.
+ * g++.dg/cpp0x/conv-tmpl4.C: New test.
+ * g++.dg/cpp0x/conv-tmpl5.C: New test.
+ * g++.dg/cpp0x/conv-tmpl6.C: New test.
+ * g++.dg/cpp1z/conv-tmpl1.C: New test.
+
+2020-03-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/94067
+ * g++.dg/warn/Wconversion-pr94067.C: New test.
+
+2020-03-09 Marek Polacek <polacek@redhat.com>
+
+ PR c++/94050 - ABI issue with alignas on armv7hl.
+ * g++.dg/abi/align3.C: New test.
+
+2020-03-09 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * gcc.target/arm/fuse-caller-save.c: Fix DejaGnu typo.
+
+2020-03-09 Martin Liska <mliska@suse.cz>
+
+ PR target/93800
+ * gcc.target/powerpc/pr93800.c: New test.
+
+2020-03-09 Bin Cheng <bin.cheng@linux.alibaba.com>
+
+ * g++.dg/coroutines/torture/co-ret-15-default-return_void.C: New.
+
+2020-03-09 Kewen Lin <linkw@gcc.gnu.org>
+
+ PR testsuite/94019
+ * gcc.dg/vect/vect-over-widen-17.c: Don't expect vector char if it's
+ without misaligned vector access support.
+
+2020-03-09 Kewen Lin <linkw@gcc.gnu.org>
+
+ PR testsuite/94023
+ * gcc.dg/vect/slp-perm-12.c: Expect loop vectorized messages only on
+ vect_hw_misalign targets.
+
+2020-03-08 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/93581
+ * gfortran.dg/inquiry_type_ref_6.f90 : New test.
+
+2020-03-08 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/93729
+ * g++.dg/concepts/pr93729.C: New test.
+
+ * g++.dg/concepts/diagnostic4.C: New test.
+
+2020-03-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/89229
+ PR target/89346
+ * gcc.target/i386/pr89229-3c.c: Include "pr89229-3a.c", instead
+ of "pr89229-5a.c".
+
+2020-03-06 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/malloc-4.c: Update expected output of leak to
+ reflect fix to region_model::get_representative_path_var, adding
+ the missing "*" from the cast.
+
+2020-03-06 Wilco Dijkstra <wdijkstr@arm.com>
+
+ * gcc.target/aarch64/fmla_intrinsic_1.c: Check for correct lane syntax.
+ * gcc.target/aarch64/fmls_intrinsic_1.c: Likewise.
+ * gcc.target/aarch64/mla_intrinsic_1.c: Likewise.
+ * gcc.target/aarch64/mls_intrinsic_1.c: Likewise.
+
+2020-03-06 Claudiu Zissulescu <claziss@synopsys.com>
+
+ * gcc.target/arc/tumaddsidi4.c: Step-up optimization level.
+
+2020-03-06 Delia Burduv <delia.burduv@arm.com>
+
+ * gcc.target/arm/simd/bf16_vldn_1.c: New test.
+
+2020-03-06 Delia Burduv <delia.burduv@arm.com>
+
+ * gcc.target/arm/simd/bf16_vstn_1.c: New test.
+
+2020-03-06 Kito Cheng <kito.cheng@sifive.com>
+
+ * gcc.target/riscv/pr93304.c: Update expected output and comment.
+
+2020-03-06 Delia Burduv <delia.burduv@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/bfcvt-compile.c: New test.
+ * gcc.target/aarch64/advsimd-intrinsics/bfcvt-nobf16.c: New test.
+ * gcc.target/aarch64/advsimd-intrinsics/bfcvt-nosimd.c: New test.
+ * gcc.target/aarch64/advsimd-intrinsics/bfcvtnq2-untied.c: New test.
+
+2020-03-06 Kito Cheng <kito.cheng@sifive.com>
+
+ PR tree-optimization/90883
+ * g++.dg/tree-ssa/pr90883.c: Add --param max-inline-insns-size=1.
+ Add aarch64-*-* mips*-*-* to XFAIL.
+
+2020-03-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/89229
+ PR target/89346
+ * gcc.target/i386/avx512vl-vmovdqa64-1.c: Updated.
+ * gcc.target/i386/pr89229-2a.c: New test.
+ * gcc.target/i386/pr89229-2b.c: Likewise.
+ * gcc.target/i386/pr89229-2c.c: Likewise.
+ * gcc.target/i386/pr89229-3a.c: Likewise.
+ * gcc.target/i386/pr89229-3b.c: Likewise.
+ * gcc.target/i386/pr89229-3c.c: Likewise.
+ * gcc.target/i386/pr89346.c: Likewise.
+
+2020-03-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ * g++.dg/pr80481.C: Disable epilogue vectorization.
+
+2020-03-05 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/93577
+ * gcc.dg/pr93577-1.c, gcc.dg/pr93577-2.c, gcc.dg/pr93577-3.c,
+ gcc.dg/pr93577-4.c, gcc.dg/pr93577-5.c, gcc.dg/pr93577-6.c: New
+ tests.
+ * gcc.dg/vla-init-1.c: Expect fewer errors about VLA initializer.
+
+2020-03-05 Jeff Law <law@redhat.com>
+
+ PR tree-optimization/91890
+ * gcc.dg/pragma-diag-8.c: New test.
+
+2020-03-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/94046
+ * g++.target/i386/pr94046-1.C: New test.
+ * g++.target/i386/pr94046-2.C: New test.
+
+2020-03-05 Uroš Bizjak <ubizjak@gmail.com>
+
+ * g++.dg/asan/asan_test.C (dg-options): Add
+ -Wno-alloc-size-larger-than.
+
+2020-03-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/90311
+ * gcc.c-torture/execute/pr90311.c: New test.
+
+2020-03-05 Jeff Law <law@redhat.com>
+
+ * gcc.target/arm/fuse-caller-save.c: Generalize expected output.
+
+2020-03-05 Mark Eggleston <mark.eggleston@codethink.com>
+
+ PR fortran/93792
+ * gfortran.dg/pr93792.f90: New test.
+
+2020-03-05 Delia Burduv <delia.burduv@arm.com>
+
+ * gcc.target/arm/simd/bf16_ma_1.c: New test.
+ * gcc.target/arm/simd/bf16_ma_2.c: New test.
+ * gcc.target/arm/simd/bf16_mmla_1.c: New test.
+
+2020-03-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/93399
+ * gcc.dg/pr93399.c: New test.
+
+ PR tree-optimization/93582
+ * gcc.dg/tree-ssa/pr93582-11.c: New test.
+
+2020-03-04 Martin Sebor <msebor@redhat.com>
+
+ PR c++/90938
+ * g++.dg/init/array55.C: New test.
+ * g++.dg/init/array56.C: New test.
+ * g++.dg/cpp2a/nontype-class33.C: New test.
+
+2020-03-04 Martin Sebor <msebor@redhat.com>
+
+ PR tree-optimization/93986
+ * gcc.dg/pr93986.c: New test.
+
+2020-03-04 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/94028
+ * g++.dg/analyzer/pr94028.C: New test.
+
+2020-03-04 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/81401
+ * gcc.dg/tree-ssa/builtin-sprintf-warn-24.c: New test.
+
+2020-03-04 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ * gcc.target/powerpc/20050603-3.c: Remove XFAILS.
+
+2020-03-04 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ * gcc.target/powerpc/pr93122.c: Add dg-require.
+
+2020-03-04 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93993
+ * gcc.dg/analyzer/expect-1.c: New test.
+ * gcc.dg/analyzer/malloc-4.c: New test.
+ * gfortran.dg/analyzer/pr93993.f90: Remove xfail from dg-bogus.
+ Move location of leak warning and update message.
+
+2020-03-04 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93993
+ * gfortran.dg/analyzer/pr93993.f90: New test.
+
+2020-03-04 Martin Liska <mliska@suse.cz>
+
+ * gcc.target/i386/pr91623.c: Add -fcommon in order
+ to re-trigger the needed code for the test-case which
+ was added in r10-2910-g9151048d854e352a9b83b771c6711b8221c73f7e.
+
+2020-03-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/93888
+ * g++.dg/guality/pr93888.C: New test.
+
+2020-02-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/93964
+ * gcc.dg/graphite/pr93964.c: New testcase.
+
+2020-03-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/94001
+ * gcc.dg/pr94001.c: New test.
+
+2020-03-04 Kito Cheng <kito.cheng@sifive.com>
+
+ PR target/93995
+ * gcc.dg/pr93995.c: New.
+
+2020-03-03 Marek Polacek <polacek@redhat.com>
+
+ PR c++/90505 - mismatch in template argument deduction.
+ * g++.dg/template/deduce4.C: New test.
+ * g++.dg/template/deduce5.C: New test.
+ * g++.dg/template/deduce6.C: New test.
+ * g++.dg/template/deduce7.C: New test.
+
+2020-03-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/93998
+ * g++.dg/ext/pr93998.C: New test.
+
+2020-03-03 Dennis Zhang <dennis.zhang@arm.com>
+
+ * gcc.target/arm/simd/bf16_cvt_1.c: New test.
+
+2020-03-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/93582
+ * gcc.dg/tree-ssa/pr93582-10.c: New test.
+ * gcc.dg/pr93582.c: New test.
+ * gcc.c-torture/execute/pr93582.c: New test.
+
+2020-03-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/93946
+ * gcc.dg/torture/pr93946-1.c: New testcase.
+ * gcc.dg/torture/pr93946-2.c: Likewise.
+
+2020-03-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/94002
+ * gcc.dg/pr94002.c: New test.
+
+ PR tree-optimization/93927
+ * gcc.c-torture/compile/pr93927-1.c: New test.
+ * gcc.c-torture/compile/pr93927-2.c: New test.
+
+2020-03-03 Jun Ma <JunMa@linux.alibaba.com>
+
+ * g++.dg/coroutines/torture/co-await-15-capture-comp-ref.C: New test.
+
+2020-03-03 Jun Ma <JunMa@linux.alibaba.com>
+
+ * g++.dg/coroutines/torture/co-await-14-template-traits.C: New test.
+
+2020-03-02 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/CVE-2005-1689-dedupe-issue.c: Add
+ -fanalyzer-show-duplicate-count.
+
+2020-03-02 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93959
+ * g++.dg/analyzer/cstdlib-2.C: New test.
+ * g++.dg/analyzer/cstdlib.C: New test.
+
+2020-03-02 Iain Sandoe <iain@sandoe.co.uk>
+ Jun Ma <JunMa@linux.alibaba.com>
+
+ * g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C:
+ * g++.dg/coroutines/torture/lambda-09-init-captures.C: New test.
+ * g++.dg/coroutines/torture/lambda-10-mutable.C: New test.
+
+2020-03-02 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/93997
+ * gcc.target/i386/pr93997.c: New test.
+
+2020-03-02 Martin Sebor <msebor@redhat.com>
+
+ PR tree-optimization/92982
+ * gcc.dg/strlenopt-94.c: New test.
+
+2020-03-02 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/torture/func-params-09-awaitable-parms.C: New test.
+ * g++.dg/coroutines/torture/local-var-5-awaitable.C: New test.
+
+2020-03-02 Jeff Law <law@redhat.com>
+
+ * gcc.target/arm/fuse-caller-save.c: Update expected output.
+
+2020-03-02 Martin Liska <mliska@suse.cz>
+
+ * gcc.dg/vect/bb-slp-19.c: The comment
+ does not align with fact that we started
+ to SLP the testcase.
+
+2020-03-02 Kewen Lin <linkw@gcc.gnu.org>
+
+ * gcc.dg/tree-ssa/scev-8.c: Revise check string.
+ * gcc.dg/tree-ssa/scev-9.c: Ditto.
+ * gcc.dg/tree-ssa/scev-10.c: Ditto.
+ * gcc.dg/tree-ssa/scev-11.c: Ditto.
+ * gcc.dg/tree-ssa/scev-12.c: Ditto.
+
+2020-03-01 Martin Sebor <msebor@redhat.com>
+
+ PR c++/92721
+ g++.dg/ext/attr-access.C: New test.
+
+2020-03-01 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/93926
+ * gcc.dg/Wbuiltin-declaration-mismatch-13.c: New test.
+
+2020-03-01 Martin Sebor <msebor@redhat.com>
+
+ PR c/93812
+ * gcc.dg/format/proto.c: New test.
+
+2020-03-01 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/93829
+ * gcc.dg/Wstringop-overflow-32.c: New test.
+
+2020-03-01 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR testsuite/91797
+ * gcc.target/powerpc/pr68805.c: Update expected output.
+
+ PR testsuite/91799
+ * gcc.target/powerpc/pr88233.c: Update expected output and
+ add target selector.
+
+2020-03-01 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/torture/class-07-data-member.C: New test.
+
+2020-03-01 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/92976
+ * gfortran.dg/select_type_48.f90 : New test.
+
+2020-03-01 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/92959
+ * gfortran.dg/associated_8.f90 : New test.
+
+2020-02-29 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/coro1-ret-int-yield-int.h: Add templated
+ awaitable.
+ * g++.dg/coroutines/torture/co-await-15-return-non-triv.C: New test.
+
+2020-02-29 John David Anglin <danglin@gcc.gnu.org>
+
+ PR ada/91100
+ * gnat.dg/socket1.adb: Disable on hppa*-*-hpux*.
+
+ * g++.dg/pr90981.C: Skip on hppa*-*-hpux*.
+ * gcc.dg/gnu2x-attrs-1.c: Add dg-require-alias.
+ * gcc.dg/pr90756.c: Add -fno-common option on hppa*-*-hpux*.
+ * gcc.dg/torture/20190327-1.c: Likewise.
+ * gcc.dg/spellcheck-options-21.c: Skip on 32-bit hppa*-*-hpux*.
+ * gcc.dg/strlenopt-68.c: Skip on hppa*-*-hpux*.
+ * gcc.dg/torture/pr90020.c: Likewise.
+ * gcc.dg/ucnid-16-utf8.c: Add dg-require-iconv "latin1".
+
+ PR ipa/92548
+ * gcc.dg/ipa/ipa-sra-12.c: xfail parameter split test on 32-bit
+ hppa*-*-hpux*.
+ * gcc.dg/ipa/ipa-sra-14.c: Likewise.
+ * gcc.dg/ipa/ipcp-agg-12.c: xfail adding extra caller test.
+
+ * g++.dg/ext/visibility/ref-temp1.C: Require visibility.
+ * gfortran.dg/pr90988_4.f: Likewise.
+ * gfortran.dg/pr91372.f90: Likewise.
+
+2020-02-29 Jeff Law <law@redhat.com>
+
+ * gcc.target/or1k/return-2.c: Update expected output.
+
+ * gcc.target/xstormy16/sfr/06_sfrw_to_var.c: Update expected output.
+
+2020-02-28 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/torture/func-params-08.C: Update
+ to suspend for each co_await operation.
+
+2020-02-28 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/92785
+ * gfortran.dg/unlimited_polymorphic_31.f03 : New test.
+
+2020-02-28 Jakub Jelinek <jakub@redhat.com>
+
+ P1937R2 - Fixing inconsistencies between const{expr,eval} functions
+ * g++.dg/cpp2a/consteval3.C: Change dg-error about taking address of
+ immediate function in unevaluated contexts into dg-bogus.
+ * g++.dg/cpp2a/consteval16.C: New test.
+
+ PR middle-end/92152
+ * g++.dg/torture/pr92152.C (size_t): Use decltype (sizeof (0)) instead
+ of hardcoding unsigned long.
+ (uint64_t): Use unsigned long long instead of unsigned long.
+
+2020-02-27 Michael Meissner <meissner@linux.ibm.com>
+
+ PR target/93932
+ * gcc.target/powerpc/fold-vec-extract-longlong.p8.c: Adjust
+ instruction counts.
+
+2020-02-27 Martin Jambor <mjambor@suse.cz>
+ Feng Xue <fxue@os.amperecomputing.com>
+
+ PR ipa/93707
+ * gcc.dg/ipa/pr93707.c: New test.
+
+2020-02-27 Jan Hubicka <hubicka@ucw.cz>
+
+ PR middle-end/92152
+ * gcc.dg/tree-ssa/alias-access-path-12.c: New testcase.
+ * g++.dg/torture/pr92152.C: New testcase.
+ * gcc.dg/torture/pr92152.c: New testcase.
+ * gcc.dg/tree-ssa/20030807-7.c: xfail.
+ * gcc.dg/tree-ssa/alias-access-path-4.c: xfail one case.
+ * gcc.dg/tree-ssa/alias-access-path-5.c: xfail one case.
+
+2020-02-27 Mihail Ionescu <mihail.ionescu@arm.com>
+
+ * gcc.target/arm/bf16_dup.c: New test.
+ * gcc.target/arm/bf16_reinterpret.c: Likewise.
+
+2020-02-27 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ * lib/target_supports.exp (check_effective_target_has_arch_pwr5): New.
+ (check_effective_target_has_arch_pwr6): New.
+ (check_effective_target_has_arch_pwr7): New.
+ (check_effective_target_has_arch_pwr8): New.
+ (check_effective_target_has_arch_pwr9): New.
+ * gcc.target/powerpc/pr92132-fp-1.c: Add target check.
+
+
+2020-02-27 Bill Schmidt <wschmidt@linux.ibm.com>
+
+ * gcc.target/powerpc/ppc64-abi-1.c: Compile with -mno-pcrel.
+ * gcc.target/powerpc/ppc64-abi-2.c: Likewise.
+
+2020-02-27 Alexandre Oliva <oliva@adacore.com>
+
+ * gcc.target/aarch64/vect-mull.x (SH): Undefine.
+
+2020-02-27 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/93508
+ * gcc.dg/tree-ssa/ssa-fre-85.c: New testcase.
+
+2020-02-27 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/93953
+ * gcc.dg/pr93953.c: New testcase.
+
+2020-02-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/93949
+ * gcc.c-torture/compile/pr93949.c: New test.
+
+ PR tree-optimization/93582
+ PR tree-optimization/93945
+ * gcc.dg/tree-ssa/pr93582-9.c: New test.
+ * gcc.c-torture/execute/pr93945.c: New test.
+
+2020-02-26 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93789 - ICE with invalid array bounds.
+ * g++.dg/ext/vla22.C: New test.
+
+2020-02-26 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93950
+ * g++.dg/analyzer/pr93950.C: New test.
+
+2020-02-26 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93947
+ * gcc.dg/analyzer/torture/pr93947.c: New test.
+
+2020-02-26 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/coro1-refs-and-ctors.h: New.
+ * g++.dg/coroutines/torture/func-params-07.C: New test.
+ * g++.dg/coroutines/torture/func-params-08.C: New test.
+
+2020-02-26 Peter Bergner <bergner@linux.ibm.com>
+
+ PR target/93913
+ * gcc.target/powerpc/fold-vec-st-char.c (scan-assembler-times): Allow
+ stxv and stxvx instructions as well.
+ * gcc.target/powerpc/fold-vec-st-float.c: Likewise.
+ * gcc.target/powerpc/fold-vec-st-int.c: Likewise.
+ * gcc.target/powerpc/fold-vec-st-short.c: Likewise.
+
+2020-02-26 Patrick Palka <ppalka@redhat.com>
+
+ * g++.dg/concepts/diagnostic2.C: New test.
+ * g++.dg/concepts/diagnostic3.C: New test.
+
+2020-02-26 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93676 - value-init crash in template.
+ * g++.dg/cpp0x/nsdmi-template19.C: New test.
+
+2020-02-26 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93862 - ICE with static_cast when converting from int[].
+ * g++.dg/cpp0x/rv-cast7.C: New test.
+
+2020-02-26 Marek Polacek <polacek@redhat.com>
+
+ DR 1423, Convertibility of nullptr to bool.
+ * g++.dg/DRs/dr1423.C: New test.
+
+2020-02-26 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93803 - ICE with constexpr init and [[no_unique_address]].
+ * g++.dg/cpp2a/constexpr-init16.C: New test.
+ * g++.dg/cpp2a/constexpr-init17.C: New test.
+
+2020-02-26 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR middle-end/93843
+ * gcc.dg/vect/pr93843-1.c: New test.
+ * gcc.dg/vect/pr93843-2.c: Likewise.
+
+2020-02-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/93820
+ * gcc.dg/pr93820-2.c: New test.
+
+ PR tree-optimization/93820
+ * gcc.dg/pr93820.c: New test.
+
+ PR c++/93905
+ * g++.dg/cpp0x/pr93905.C: New test.
+
+2020-02-25 Mihail Ionescu <mihail.ionescu@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/bf16_vstn.c: New test.
+ * gcc.target/aarch64/advsimd-intrinsics/bf16_vldn.c: New test.
+
+2020-02-25 Mihail Ionescu <mihail.ionescu@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/bf16_dup.c: New test.
+ * gcc.target/aarch64/advsimd-intrinsics/bf16_reinterpret.c: New test.
+
+2020-02-25 Dennis Zhang <dennis.zhang@arm.com>
+
+ * gcc.target/arm/simd/bf16_dot_1.c: New test.
+ * gcc.target/arm/simd/bf16_dot_2.c: New test.
+ * gcc.target/arm/simd/bf16_dot_3.c: New test.
+
+2020-02-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/93908
+ * gcc.c-torture/execute/pr93908.c: New test.
+
+2019-02-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/lto24.adb: New test.
+ * gnat.dg/lto24_pkg1.ads: New helper.
+ * gnat.dg/lto24_pkg2.ad[sb]: Likewise.
+
+2020-02-25 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/tree-ssa/ssa-fre-86.c: New testcase.
+
+2020-02-25 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/93868
+ * gcc.dg/torture/pr93868.c: New testcase.
+
+2020-02-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/93874
+ * gcc.dg/pr93874.c: New test.
+
+ PR ipa/93763
+ * gcc.dg/ipa/pr93763.c: Adjust the test so that it compiles without
+ warnings and still ICEs before the ipa-cp.c fix.
+ * g++.dg/ipa/pr93763.C: Require c++11 effective target.
+
+ PR translation/93864
+ * objc.dg/encode-2.m: Fix comment typo paramter -> parameter.
+ * obj-c++.dg/encode-4.mm: Likewise.
+ * gfortran.dg/data_array_5.f90: Likewise.
+ * gcc.dg/decl-1.c: Likewise.
+
+2020-02-24 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93032
+ * gcc.dg/analyzer/pr93382.c: Add "-fanalyzer-checker=taint".
+ * gcc.dg/analyzer/taint-1.c: Likewise.
+
+2020-02-24 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93899
+ * g++.dg/analyzer/pr93899.C: New test.
+
+2020-02-24 Martin Sebor <msebor@redhat.com>
+
+ PR c++/93804
+ * g++.dg/warn/Wredundant-tags-4.C: New test.
+ * g++.dg/warn/Wredundant-tags-5.C: New test.
+ * g++.dg/warn/Wredundant-tags-5.h: New test.
+
+2020-02-24 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/analyzer-verbosity-2a.c: New test.
+ * gcc.dg/analyzer/analyzer-verbosity-3.c: New test, based on
+ analyzer-verbosity-2.c
+ * gcc.dg/analyzer/analyzer-verbosity-3a.c: New test.
+ * gcc.dg/analyzer/edges-1.c: New test.
+ * gcc.dg/analyzer/edges-2.c: New test.
+ * gcc.dg/analyzer/file-paths-1.c: Add -fanalyzer-verbosity=3.
+
+2020-02-24 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93869 - ICE with -Wmismatched-tags.
+ * g++.dg/warn/Wmismatched-tags-2.C: New test.
+
+2020-02-20 Mark Eggleston <mark.eggleston@codethink.com>
+
+ PR fortran/93835
+ * gfortran.dg/pr77351.f90 : Check for one error instead of two.
+ * gfortran.dg/pr93835.f08 : New test.
+
+2020-02-24 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93712 - ICE with ill-formed array list-initialization.
+ * g++.dg/cpp0x/initlist-array11.C: New test.
+
+2020-02-20 Mark Eggleston <mark.eggleston@codethink.com>
+
+ PR fortran/93604
+ * gfortran.dg/pr93604.f90 : New test.
+
+2020-02-24 Jakub Jelinek <jakub@redhat.com>
+
+ P1937R2 - Fixing inconsistencies between const{expr,eval} functions
+ * g++.dg/ext/consteval1.C: Change dg-{message,error} into dg-bogus.
+ * g++.dg/cpp2a/consteval6.C: Likewise.
+ * g++.dg/cpp2a/consteval3.C: Change dg-error for unevaluated operands
+ into dg-bogus.
+
+2020-02-24 Christophe Lyon <christophe.lyon@linaro.org>
+
+ PR lto/78353
+ * gcc.target/arm/pr78353-1.c: Add arm_arch_v7a_multilib effective
+ target.
+ * gcc.target/arm/pr78353-2.c: Likewise.
+
+2020-02-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/93582
+ * gcc.dg/tree-ssa/pr93582-4.c: New test.
+ * gcc.dg/tree-ssa/pr93582-5.c: New test.
+ * gcc.dg/tree-ssa/pr93582-6.c: New test.
+ * gcc.dg/tree-ssa/pr93582-7.c: New test.
+ * gcc.dg/tree-ssa/pr93582-8.c: New test.
+
+2020-02-24 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/93552
+ * gfortran.dg/goacc/tile-4.f90: New.
+
+2020-02-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
+ Kugan Vivekandarajah <kugan.vivekanandarajah@linaro.org>
+
+ PR driver/47785
+ PR lto/78353
+ * gcc.target/arm/pr78353-1.c: New test.
+ * gcc.target/arm/pr78353-2.c: Likewise.
+
+2020-02-23 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/93890
+ * gfortran.dg/argument_checking_24.f90: Correct test case.
+
+2020-02-21 Martin Sebor <msebor@redhat.com>
+
+ PR gcov-profile/93753
+ * g++.dg/ext/flexary36.C: New test.
+ * g++.dg/lto/pr93166_0.C: Make struct with flexarray valid.
+
+2020-02-21 Dennis Zhang <dennis.zhang@arm.com>
+
+ * gcc.target/arm/simd/vmmla_1.c: New test.
+
+2020-02-21 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
+
+ * gcc.target/arm/armv8_1m-shift-imm-1.c: Add MVE target checks.
+ * gcc.target/arm/armv8_1m-shift-reg-1.c: Likewise.
+ * lib/target-supports.exp
+ (check_effective_target_arm_v8_1m_mve_ok_nocache): New.
+ (check_effective_target_arm_v8_1m_mve_ok): New.
+ (add_options_for_v8_1m_mve): New.
+
+2020-02-21 Uroš Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/pr69052.c: Require target ia32.
+ (dg-options): Add -fcommon and remove -pie.
+
+2020-02-21 Uroš Bizjak <ubizjak@gmail.com>
+
+ * gcc.dg/vect/vect-epilogues.c (scan-tree-dump): Require
+ vect_mutiple_sizes effective target.
+
+2020-02-21 Jan Hubicka <hubicka@ucw.cz>
+ Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/93586
+ * gcc.dg/torture/pr93586.c: New testcase.
+
+2020-02-21 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/93845
+ * g++.dg/tree-ssa/pr93845.C: New test.
+
+2020-02-21 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/rsqrt_1.c: New test.
+ * gcc.target/aarch64/sve/rsqrt_1_run.c: Likewise.
+ * gcc.target/aarch64/sve/sqrt_1.c: Likewise.
+ * gcc.target/aarch64/sve/sqrt_1_run.c: Likewise.
+
+2020-02-21 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/recip_1.c: New test.
+ * gcc.target/aarch64/sve/recip_1_run.c: Likewise.
+ * gcc.target/aarch64/sve/recip_2.c: Likewise.
+ * gcc.target/aarch64/sve/recip_2_run.c: Likewise.
+
+2020-02-20 Martin Sebor <msebor@redhat.com>
+
+ PR c++/93801
+ * g++.dg/warn/Wredundant-tags-3.C: New test.
+
+2020-02-20 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/93828
+ * g++.target/i386/pr93828.C: New test.
+
+2020-02-20 Peter Bergner <bergner@linux.ibm.com>
+
+ PR target/93658
+ * gcc.target/powerpc/pr93658.c: New test.
+
+2020-02-20 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/93825
+ * gfortran.dg/goacc/tile-3.f90: New.
+
+2020-02-19 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93169 - wrong-code with a non-constexpr constructor.
+ * g++.dg/cpp0x/constexpr-93169.C: New test.
+
+2020-02-19 Martin Sebor <msebor@redhat.com>
+
+ PR tree-optimization/92128
+ * gcc.dg/strlenopt-81.c: Align arrays to let strictly aligned targets
+ optimize away calls as expected.
+
+2020-02-19 Uroš Bizjak <ubizjak@gmail.com>
+
+ * gcc.dg/gimplefe-41.c: Add -msse2 additional options for x86 targets.
+ * gcc.dg/ipa/ipa-sra-19.c: Ditto.
+
+2020-02-19 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR tree-optimization/93767
+ * gcc.dg/vect/pr93767.c: New test.
+
+2020-02-19 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/93776
+ * gcc.dg/tree-ssa/pr93776.c: New test.
+
+2020-02-19 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/93667
+ * g++.dg/tree-ssa/pr93667.C: New test.
+
+2020-02-19 Hongtao Liu <hongtao.liu@intel.com>
+
+ * g++.dg/other/i386-2.C: add -mavx512vbmi2
+ * g++.dg/other/i386-3.C: Ditto.
+
+2020-02-18 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * gcc.target/aarch64/vmull_high.c: New.
+
+2020-02-18 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93817
+ * g++.dg/diagnostic/array-init1.C: Fix for ILP32.
+
+2020-02-18 Jon Beniston <jon@beniston.com>
+
+ * gcc.dg/strcmpopt_6.c: Add space in array for terminator.
+
+2020-02-18 Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/93714
+ * gfortran.dg/char_pointer_assign_6.f90: Look for no target
+ message instead of length mismatch.
+ * gfortran.dg/pr93714_1.f90
+ * gfortran.dg/pr93714_2.f90
+
+2020-02-18 Mark Eggleston <mark.eggleston@codethink.com>
+
+ PR fortran/93601
+ * gfortran.dg/pr93601.f90 : New test.
+
+2020-02-18 Martin Liska <mliska@suse.cz>
+
+ PR ipa/93583
+ * gcc.dg/ipa/pr93583.c: New test.
+
+2020-02-18 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93777
+ * g++.dg/analyzer/pr93777.C: New test.
+ * gfortran.dg/analyzer/pr93777.f90: New test.
+
+2020-02-18 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93778
+ * gfortran.dg/analyzer/pr93778.f90: New test.
+
+2020-02-18 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93774
+ * gfortran.dg/analyzer/deferred_character_25.f90: New test,
+ based on gfortran.dg/deferred_character_25.f90.
+
+2020-02-18 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93779
+ * gfortran.dg/analyzer/pr88304-2.f90: New test, adapted from
+ gfortran.fortran-torture/compile/pr88304-2.f90
+
+2020-02-18 Mark Eggleston <mark.eggleston@codethink.com>
+
+ PR fortran/93603
+ * gfortran.dg/pr93603.f90 : New test.
+
+2020-02-20 Mark Eggleston <markeggleston@gcc.gnu.org>
+
+ PR fortran/93580
+ * gfortran.dg/dg/pr93580.f90: New test.
+
+2020-02-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/93780
+ * gcc.dg/pr93780.c: New test.
+
+2020-02-17 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93775
+ * gcc.dg/analyzer/20020129-1.c: New test.
+
+2020-02-17 Alexandre Oliva <oliva@adacore.com>
+
+ * gcc.dg/tls/emutls-3.c: New, combining emutls-2.c and
+ thr-init-2.c into an execution test with explicitly common
+ variables.
+
+2020-02-17 Wilco Dijkstra <wdijkstr@arm.com>
+
+ * gcc.target/aarch64/pr93565.c: Fix test for ilp32.
+
+2020-02-17 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ * gcc.target/powerpc/fold-vec-extract-longlong.p8.c: Correct
+ number of expected insns.
+
+2020-02-17 Martin Liska <mliska@suse.cz>
+
+ PR ipa/93760
+ * g++.dg/lto/odr-8_1.C: Fix grammar.
+
+2020-02-17 Richard Biener <rguenther@suse.de>
+
+ PR c/86134
+ * gcc.dg/pr86134.c: New testcase.
+ * gcc.dg/pr28322-2.c: Adjust.
+
+2020-02-17 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93388
+ * gcc.dg/analyzer/torture/20060625-1.c: New test.
+ * gcc.dg/analyzer/torture/pr51628-30.c: New test.
+ * gcc.dg/analyzer/torture/pr59037.c: New test.
+
+2020-02-17 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/malloc-1.c (test_48): New.
+
+2020-02-17 Jiufu Guo <guojiufu@linux.ibm.com>
+
+ PR target/93047
+ * gcc.dg/torture/stackalign/builtin-return-2.c: New test case.
+
+2020-02-16 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/93743
+ * gcc.target/i386/pr93743.c : New test.
+
+2020-02-15 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93710 - poor diagnostic for array initializer.
+ * g++.dg/diagnostic/array-init1.C: New test.
+
+2020-02-15 Jason Merrill <jason@redhat.com>
+
+ * lib/target-supports.exp (check_effective_target_c++2a_only): Also
+ look for -std=*++20.
+ (check_effective_target_concepts): Use check_effective_target_c++2a.
+
+2020-02-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/93744
+ * gcc.c-torture/execute/pr93744-1.c: New test.
+ * gcc.c-torture/execute/pr93744-2.c: New test.
+ * gcc.c-torture/execute/pr93744-3.c: New test.
+
+2020-02-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/61414
+ * g++.dg/cpp0x/enum39.C: New test.
+
+2020-02-14 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/93516
+ * g++.dg/tree-ssa/pr93516.C: New test.
+
+2020-02-14 Hongtao Liu <hongtao.liu@intel.com>
+
+ * gcc.target/i386/avx512vbmi2-vpshld-1.c: New test.
+ * gcc.target/i386/avx512vbmi2-vpshrd-1.c: Ditto.
+ * gcc.target/i386/sse-12.c: Add -mavx512vbmi2.
+ * gcc.target/i386/sse-13.c: Ditto.
+ * gcc.target/i386/sse-14.c: Add -mavx512vbmi2 and tests.
+ * gcc.target/i386/sse-22.c: Ditto.
+
+2020-02-14 Jakub Jelinek <jakub@redhat.com>
+
+ Partially implement P1042R1: __VA_OPT__ wording clarifications
+ PR preprocessor/92319
+ * c-c++-common/cpp/va-opt-4.c: New test.
+
+2020-02-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/93576
+ * gcc.dg/pr93576.c: New test.
+
+2020-02-13 Sandra Loosemore <sandra@codesourcery.com>
+
+ * g++.dg/cpp0x/constexpr-static13.C:
+ Add -fdelete-null-pointer-checks.
+ * g++.dg/cpp2a/constexpr-new11.C: Likewise.
+ * g++.dg/cpp2a/constexpr-new12.C: Likewise.
+
+2020-02-13 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/93656
+ * gcc.target/i386/pr93656.c: New test.
+
+2020-02-13 Claudiu Zissulescu <claziss@synopsys.com>
+
+ * gcc.target/arc/nps400-1.c: Update test.
+
+2020-02-13 Claudiu Zissulescu <claziss@synopsys.com>
+
+ * gcc.target/arc/or-cnst-size2.c: Update test.
+
+2020-02-13 Claudiu Zissulescu <claziss@synopsys.com>
+ Petro Karashchenko <petro.karashchenko@ring.com>
+
+ * gcc.target/arc/mul64-1.c: New test.
+
+2020-02-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93696
+ * gcc.target/i386/pr93696-1.c: New test.
+ * gcc.target/i386/pr93696-2.c: New test.
+ * gcc.target/i386/avx512bitalg-vpopcntw-1.c (TEST): Fix argument order
+ of _mm*_mask_popcnt_*.
+ * gcc.target/i386/avx512vpopcntdq-vpopcntq-1.c (TEST): Likewise.
+ * gcc.target/i386/avx512vpopcntdq-vpopcntd-1.c (TEST): Likewise.
+ * gcc.target/i386/avx512bitalg-vpopcntb-1.c (TEST): Likewise.
+ * gcc.target/i386/avx512bitalg-vpopcntb.c (foo): Likewise.
+ * gcc.target/i386/avx512bitalg-vpopcntbvl.c (foo): Likewise.
+ * gcc.target/i386/avx512vpopcntdq-vpopcntd.c (foo): Likewise.
+ * gcc.target/i386/avx512bitalg-vpopcntwvl.c (foo): Likewise.
+ * gcc.target/i386/avx512bitalg-vpopcntw.c (foo): Likewise.
+ * gcc.target/i386/avx512vpopcntdq-vpopcntq.c (foo): Likewise.
+
+ PR tree-optimization/93582
+ * gcc.dg/tree-ssa/pr93582-1.c: New test.
+ * gcc.dg/tree-ssa/pr93582-2.c: New test.
+ * gcc.dg/tree-ssa/pr93582-3.c: New test.
+
+2020-02-13 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/93717
+ * gcc.dg/optimize-bswapsi-2.c: Add BE case.
+
+2020-02-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93673
+ * gcc.target/i386/avx512f-pr93673.c: New test.
+ * gcc.target/i386/avx512dq-pr93673.c: New test.
+ * gcc.target/i386/avx512bw-pr93673.c: New test.
+
+ * g++.dg/analyzer/pr93212.C: Require c++14 rather than c++11.
+
+2020-02-12 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/coro1-allocators.h: New.
+ * g++.dg/coroutines/coro-bad-alloc-00-bad-op-new.C: New test.
+ * g++.dg/coroutines/coro-bad-alloc-01-bad-op-del.C: New test.
+ * g++.dg/coroutines/coro-bad-alloc-02-no-op-new-nt.C: New test.
+ * g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C: Use new
+ coro1-allocators.h header.
+ * g++.dg/coroutines/torture/alloc-01-overload-newdel.C: Likewise.
+ * g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C: New.
+ * g++.dg/coroutines/torture/alloc-03-overload-new-1.C: New test.
+ * g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C:New.
+
+2020-02-12 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.target/powerpc/pr93122.c: Use -mprefixed instead of
+ -mprefixed-addr in dg-options.
+
+ PR middle-end/93663
+ * gcc.dg/torture/builtin-round-roundeven.c (main): Add tests
+ for DBL_MAX, inf, their negations and nan.
+
+2020-02-12 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/93646
+ * gcc.dg/Wstringop-overflow-31.c: New test.
+
+2020-02-12 Wilco Dijkstra <wdijkstr@arm.com>
+
+ PR rtl-optimization/93565
+ * gcc.target/aarch64/pr93565.c: New test.
+
+2020-02-12 Wilco Dijkstra <wdijkstr@arm.com>
+
+ * gcc.target/aarch64/popcnt2.c: New test.
+
+2020-02-12 Marek Polacek <polacek@redhat.com>
+
+ PR c++/88819
+ * g++.dg/cpp2a/nontype-class32.C: New test.
+
+2020-02-12 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93684 - ICE-on-invalid with broken attribute.
+ * g++.dg/parse/attr4.C: New test.
+
+2020-02-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93670
+ * gcc.target/i386/avx512vl-pr93670.c: New test.
+
+2020-02-12 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/93697
+ * gcc.dg/pr93661.c: Pass -w, remove dg-warning.
+
+2020-02-11 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93288
+ * g++.dg/analyzer/malloc.C: Add test coverage for a double-free
+ called in a constructor.
+ * g++.dg/analyzer/pr93288.C: New test.
+
+2020-02-11 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93212
+ * g++.dg/analyzer/analyzer.exp: New subdirectory and .exp suite.
+ * g++.dg/analyzer/malloc.C: New test.
+ * g++.dg/analyzer/pr93212.C: New test.
+
+2020-02-11 Martin Sebor <msebor@redhat.com>
+
+ PR tree-optimization/93683
+ * gcc.dg/tree-ssa/ssa-dse-39.c: New test.
+
+2020-02-11 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ * lib/target-supports.exp (check_effective_target_ppc_ieee128_ok): New.
+ * gcc.target/powerpc/pr92796.c: Add a require-effective-target
+ statement for ppc_ieee128_ok.
+
+2020-02-11 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93374
+ * gcc.dg/analyzer/torture/pr93374.c: New test.
+
+2020-02-11 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93669
+ * gcc.dg/analyzer/pr93669.c: New test.
+
+2020-02-11 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93649
+ * gcc.dg/analyzer/torture/pr93649.c: New test.
+
+2020-02-11 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ * gcc.target/powerpc/pr70010-2.c: Add -maltivec.
+ * gcc.target/powerpc/pr70010-3.c: Add -maltivec.
+
+2020-02-11 Stam Markianos-Wright <stam.markianos-wright@arm.com>
+
+ * gcc.target/arm/simd/vdot-2-1.c: New test.
+ * gcc.target/arm/simd/vdot-2-2.c: New test.
+ * gcc.target/arm/simd/vdot-2-3.c: New test.
+ * gcc.target/arm/simd/vdot-2-4.c: New test.
+
+2020-02-11 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/93661
+ PR tree-optimization/93662
+ * gcc.dg/pr93661.c: New testcase.
+
+2020-02-12 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/69448
+ PR c++/80471
+ * g++.dg/concepts/abbrev3.C: New test.
+ * g++.dg/cpp2a/concepts-pr80471.C: Adjust a static_assert to expect the
+ correct behavior.
+ * g++.dg/cpp0x/auto9.C: Adjust a dg-error directive.
+
+ * g++.dg/cpp2a/concepts6.C: New test.
+
+2020-02-10 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93350
+ * gcc.dg/analyzer/torture/pr93350.c: New test.
+
+2020-02-10 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93647
+ * gcc.dg/analyzer/torture/pr93647.c: New test.
+
+2020-02-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93637
+ * gcc.target/i386/avx-pr93637.c: New test.
+
+2020-02-10 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93405
+ * gfortran.dg/analyzer/pr93405.f90: New test.
+
+2020-02-10 David Malcolm <dmalcolm@redhat.com>
+
+ * gfortran.dg/analyzer/analyzer.exp: New subdirectory and .exp
+ suite.
+ * gfortran.dg/analyzer/malloc-example.f90: New test.
+ * gfortran.dg/analyzer/malloc.f90: New test.
+
+2020-02-10 Martin Sebor <msebor@redhat.com>
+
+ PR c/93640
+ * gcc.dg/attr-access.c: New test.
+
+2020-02-10 Hans-Peter Nilsson <hp@axis.com>
+
+ * gcc.target/cris/cris.exp (check_effective_target_cc0): New.
+
+ PR target/93372
+ * gcc.target/cris/pr93372-1.c, gcc.target/cris/pr93372-2.c,
+ gcc.target/cris/pr93372-5.c, gcc.target/cris/pr93372-8.c,
+ gcc.target/cris/pr93372-3.c, gcc.target/cris/pr93372-4.c,
+ gcc.target/cris/pr93372-6.c, gcc.target/cris/pr93372-7.c,
+ gcc.target/cris/pr93372-9.c, gcc.target/cris/pr93372-10.c,
+ gcc.target/cris/pr93372-11.c, gcc.target/cris/pr93372-12.c,
+ gcc.target/cris/pr93372-13.c, gcc.target/cris/pr93372-14.c,
+ gcc.target/cris/pr93372-15.c, gcc.target/cris/pr93372-16.c,
+ gcc.target/cris/pr93372-17.c, gcc.target/cris/pr93372-18.c,
+ gcc.target/cris/pr93372-19.c, gcc.target/cris/pr93372-20.c,
+ gcc.target/cris/pr93372-21.c, gcc.target/cris/pr93372-22.c,
+ gcc.target/cris/pr93372-23.c, gcc.target/cris/pr93372-24.c,
+ gcc.target/cris/pr93372-25.c, gcc.target/cris/pr93372-26.c,
+ gcc.target/cris/pr93372-27.c, gcc.target/cris/pr93372-28.c,
+ gcc.target/cris/pr93372-29.c, gcc.target/cris/pr93372-30.c,
+ gcc.target/cris/pr93372-31.c, gcc.target/cris/pr93372-32.c,
+ gcc.target/cris/pr93372-33.c, gcc.target/cris/pr93372-34.c,
+ gcc.target/cris/pr93372-35.c, gcc.target/cris/dbr-1.c: New tests.
+
+2020-02-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/91913
+ * gfortran.dg/pr91913.f90: New test.
+
+2020-02-10 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR libgcc/85334
+ * g++.target/i386/pr85334-1.C: New test.
+ * g++.target/i386/pr85334-2.C: Likewise.
+
+2020-02-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR other/93641
+ * gcc.dg/format/gcc_diag-11.c (test_cdiag_bad_words): Add two further
+ tests.
+
+2020-02-10 Feng Xue <fxue@os.amperecomputing.com>
+
+ PR ipa/93203
+ * g++.dg/ipa/pr93203.C: New test.
+ * gcc.dg/ipa/ipcp-1: Change dump string.
+
+2020-02-09 Uroš Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/pr91333.c (dg-do): Fix target selector.
+
+2020-02-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/93633
+ * g++.dg/cpp2a/constexpr-new11.C: New test.
+ * g++.dg/cpp2a/constexpr-new12.C: New test.
+ * g++.dg/cpp2a/constexpr-new13.C: New test.
+
+2020-02-08 Andrew Pinski <apinski@marvel.com>
+
+ PR target/91927
+ * gcc.target/aarch64/pr91927.c: New testcase.
+
+2020-02-08 Peter Bergner <bergner@linux.ibm.com>
+
+ PR target/93136
+ * gcc.dg/vmx/ops.c: Add -flax-vector-conversions to dg-options.
+ * gcc.target/powerpc/vsx-vector-6.h: Split tests into smaller functions.
+ * gcc.target/powerpc/vsx-vector-6.p7.c: Adjust scan-assembler-times
+ regex directives. Adjust expected instruction counts.
+ * gcc.target/powerpc/vsx-vector-6.p8.c: Likewise.
+ * gcc.target/powerpc/vsx-vector-6.p9.c: Likewise.
+
+2020-02-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/93549
+ * g++.dg/ext/constexpr-pr93549.C: New test.
+
+2020-02-08 Uroš Bizjak <ubizjak@gmail.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR target/65782
+ * gcc.target/i386/pr65782.c: New test.
+
+2020-02-07 Marek Polacek <polacek@redhat.com>
+
+ PR c++/92947 - Paren init of aggregates in unevaluated context.
+ * g++.dg/cpp2a/paren-init21.C: New test.
+
+2020-02-07 Will Schmidt <will_schmidt@vnet.ibm.com>
+
+ * testsuite/gcc.target/powerpc/pr92923-1.c: Add -mvsx.
+
+2020-02-07 Dennis Zhang <dennis.zhang@arm.com>
+
+ * gcc.target/aarch64/simd/vmmla.c: New test.
+
+2020-02-07 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/93519
+ * gcc.dg/Wrestrict-21.c: New testcase.
+
+2020-02-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/85667
+ * gcc.target/i386/pr85667-10.c: New test.
+ * gcc.target/i386/pr85667-7.c: Likewise.
+ * gcc.target/i386/pr85667-8.c: Likewise.
+ * gcc.target/i386/pr85667-9.c: Likewise.
+
+2020-02-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93122
+ * gcc.target/powerpc/pr93122.c: New test.
+
+2020-02-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/89404
+ * g++.dg/ext/vla21.C: New.
+
+2020-02-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93615
+ * gcc.dg/pr93615.c: New test.
+
+ PR target/93611
+ * gcc.target/i386/pr93611.c: New test.
+
+2020-02-06 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93375
+ * gcc.dg/analyzer/pr93375.c: Rework test case to avoid per-target
+ differences in how __builtin_memcpy has been optimized at the time
+ the analyzer runs.
+
+2020-02-06 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/torture/intptr_t.c: New test.
+
+2020-02-06 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * gcc.target/powerpc/pr93012.c: New.
+
+2020-02-06 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/87763
+ * gcc.target/aarch64/movk_2.c: New test.
+
+2020-02-06 Uroš Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/memcpy-strategy-1.c (dg-final):
+ Unify scan-assembler strings for all targets.
+ * gcc.target/i386/memcpy-strategy-2.c (dg-final): Ditto.
+ * gcc.target/i386/memcpy-strategy-3.c (dg-final): Ditto.
+ * gcc.target/i386/memcpy-vector_loop-1.c (dg-final): Ditto.
+
+2020-02-06 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93597 - ICE with lambda in operator function.
+ * g++.dg/cpp0x/lambda/lambda-93597.C: New test.
+
+2020-02-06 Tobias Burnus <tobias@codesourcery.com>
+
+ * gcc.target/arm/multilib.exp (multilib_config): Pass flags to
+ …_target_compile as (additional_flags=) option and not as source
+ filename to make it work with remote execution.
+ * lib/target-supports.exp (check_runtime, check_gc_sections_available,
+ check_effective_target_gas, check_effective_target_gld): Likewise.
+
+2020-02-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93594
+ * gcc.target/i386/avx2-pr93594.c: New test.
+
+2020-02-05 Martin Sebor <msebor@redhat.com>
+
+ PR tree-optimization/92765
+ * g++.dg/tree-ssa/strlenopt-1.C: New test.
+ * g++.dg/tree-ssa/strlenopt-2.C: New test.
+ * gcc.dg/Warray-bounds-58.c: New test.
+ * gcc.dg/Wrestrict-20.c: Avoid a valid -Wformat-overflow.
+ * gcc.dg/Wstring-compare.c: Xfail a test.
+ * gcc.dg/strcmpopt_2.c: Disable tests.
+ * gcc.dg/strcmpopt_4.c: Adjust tests.
+ * gcc.dg/strcmpopt_10.c: New test.
+ * gcc.dg/strcmpopt_11.c: New test.
+ * gcc.dg/strlenopt-69.c: Disable tests.
+ * gcc.dg/strlenopt-92.c: New test.
+ * gcc.dg/strlenopt-93.c: New test.
+ * gcc.dg/strlenopt.h: Declare calloc.
+ * gcc.dg/tree-ssa/pr92056.c: Xfail tests until pr93518 is resolved.
+ * gcc.dg/tree-ssa/builtin-sprintf-warn-23.c: Correct test (pr93517).
+
+2020-02-05 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93559 - ICE with CONSTRUCTOR flags verification.
+ * g++.dg/cpp0x/initlist119.C: New test.
+ * g++.dg/cpp0x/initlist120.C: New test.
+
+2020-02-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/93557
+ * c-c++-common/Wunused-var-17.c: New test.
+
+2020-02-05 Jeff Law <law@redhat.com>
+
+ * gcc.target/hppa/shadd-3.c: Disable delay slot filling and
+ adjust expected shadd insn count appropriately.
+
+2020-02-05 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/data-model-1.c: Update for changed output to
+ __analyzer_dump_exploded_nodes, dropping redundant call at merger.
+ * gcc.dg/analyzer/data-model-7.c: Likewise.
+ * gcc.dg/analyzer/loop-2.c: Update for changed output format.
+ * gcc.dg/analyzer/loop-2a.c: Likewise.
+ * gcc.dg/analyzer/loop-4.c: Likewise.
+ * gcc.dg/analyzer/loop.c: Likewise.
+ * gcc.dg/analyzer/malloc-paths-10.c: Likewise; drop redundant
+ call at merger.
+ * gcc.dg/analyzer/malloc-vs-local-1a.c: Likewise.
+ * gcc.dg/analyzer/malloc-vs-local-1b.c: Likewise.
+ * gcc.dg/analyzer/malloc-vs-local-2.c: Likewise.
+ * gcc.dg/analyzer/malloc-vs-local-3.c: Likewise.
+ * gcc.dg/analyzer/paths-1.c: Likewise.
+ * gcc.dg/analyzer/paths-1a.c: Likewise.
+ * gcc.dg/analyzer/paths-2.c: Likewise.
+ * gcc.dg/analyzer/paths-3.c: Likewise.
+ * gcc.dg/analyzer/paths-4.c: Update for changed output format.
+ * gcc.dg/analyzer/paths-5.c: Likewise.
+ * gcc.dg/analyzer/paths-6.c: Likewise; drop redundant calls
+ at merger.
+ * gcc.dg/analyzer/paths-7.c: Likewise.
+ * gcc.dg/analyzer/torture/conditionals-2.c: Update for changed
+ output format.
+ * gcc.dg/analyzer/zlib-1.c: Likewise; drop redundant calls.
+ * gcc.dg/analyzer/zlib-5.c: Update for changed output format.
+
+2020-02-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/92190
+ * gcc.target/i386/pr92190.c: New test.
+
+2020-02-05 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/92177
+ * gcc.dg/vect/bb-slp-22.c: Adjust.
+
+2020-02-05 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/90648
+ * gcc.dg/pr90648.c: New testcase.
+
+2020-02-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/93555
+ * c-c++-common/gomp/pr93555-1.c: New test.
+ * c-c++-common/gomp/pr93555-2.c: New test.
+ * gfortran.dg/gomp/pr93555.f90: New test.
+
+2020-02-05 Jun Ma <JunMa@linux.alibaba.com>
+
+ * g++.dg/coroutines/co-await-14-return-ref-to-auto.C: New test.
+
+2020-02-04 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/data-model-1.c (struct coord): Convert fields
+ from int to long.
+
+2020-02-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/93538
+ * gcc.dg/tree-ssa/forwprop-38.c: New testcase.
+
+2020-02-04 Jakub Jelinek <jakub@redhat.com>
+
+ * c-c++-common/cpp/has-include-1.c: New test.
+ * c-c++-common/cpp/has-include-next-1.c: New test.
+ * c-c++-common/gomp/has-include-1.c: New test.
+
+ PR preprocessor/93545
+ * c-c++-common/cpp/pr88974.c: Expect another diagnostics during error
+ recovery.
+ * c-c++-common/cpp/pr93545-1.c: New test.
+ * c-c++-common/cpp/pr93545-2.c: New test.
+ * c-c++-common/cpp/pr93545-3.c: New test.
+ * c-c++-common/cpp/pr93545-4.c: New test.
+
+2020-02-04 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/coro-missing-promise.C: New test.
+
+2020-02-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/91123
+ * gcc.dg/tree-ssa/ssa-fre-85.c: New testcase.
+
+2020-02-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/92819
+ * gcc.target/i386/pr92819.c: New testcase.
+ * gcc.target/i386/pr92803.c: Adjust.
+
+2020-02-03 Iain Sandoe <iain@sandoe.co.uk>
+
+ PR c++/93458
+ * g++.dg/coroutines/pr93458-1-missing-traits.C: New test.
+ * g++.dg/coroutines/pr93458-2-bad-traits.C: New test.
+ * g++.dg/coroutines/pr93458-3-missing-handle.C: New test.
+ * g++.dg/coroutines/pr93458-4-bad-coro-handle.C: New test.
+ * g++.dg/coroutines/pr93458-5-bad-coro-type.C: New test.
+
+2020-02-03 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93544
+ * gcc.dg/analyzer/torture/pr93544.c: New test.
+
+2020-02-03 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93546
+ * gcc.dg/analyzer/pr93546.c: New test.
+
+2020-02-03 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93547
+ * gcc.dg/analyzer/pr93547.c: New test.
+
+2020-02-03 Stam Markianos-Wright <stam.markianos-wright@arm.com>
+
+ PR target/91816
+ * gcc.target/arm/pr91816.c: New test.
+
+2020-02-03 Julian Brown <julian@codesourcery.com>
+ Tobias Burnus <tobias@codesourcery.com>
+
+ * c-c++-common/cpp/openacc-define-3.c: Update expected value for
+ _OPENACC define.
+ * gfortran.dg/openacc-define-3.f90: Likewise.
+
+2020-02-03 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/93427
+ * gfortran.dg/associate_52.f90: New.
+
+2020-02-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93533
+ * gcc.c-torture/compile/pr93533.c: New test.
+ * gcc.target/s390/pr93533.c: New test.
+
+2020-02-03 Jun Ma <JunMa@linux.alibaba.com>
+
+ * g++.dg/coroutines/co-await-04-control-flow.C: Add label.
+
+2020-02-02 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93530 - ICE on invalid alignas in a template.
+ * g++.dg/cpp0x/alignas18.C: New test.
+
+2020-02-02 Iain Sandoe <iain@sandoe.co.uk>
+
+ * gcc.target/powerpc/darwin-abi-12.c: Add '-fcommon' to the
+ options.
+
+2020-02-02 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/91333
+ * gcc.target/i386/pr91333.c: Add vmovsd to regexp. Set up count
+ to 3.
+
+2020-01-31 Sandra Loosemore <sandra@codesourcery.com>
+
+ nios2: Support for GOT-relative DW_EH_PE_datarel encoding.
+
+ * g++.target/nios2/hello-pie.C: New.
+ * g++.target/nios2/nios2.exp: New.
+
+2020-01-31 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93457
+ * gcc.dg/analyzer/pr93457.c: New test.
+
+2020-01-31 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93373
+ * gcc.dg/analyzer/torture/pr93373.c: New test.
+
+2020-01-31 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/91333
+ * gcc.target/i386/pr91333.c: New.
+
+2020-01-31 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93379
+ * gcc.dg/analyzer/torture/pr93379-2.c: New test.
+ * gcc.dg/analyzer/torture/pr93379.c: New test.
+
+2020-01-31 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93438
+ * gcc.dg/analyzer/torture/pr93438.c: New test.
+ * gcc.dg/analyzer/torture/pr93438-2.c: New test.
+
+2020-01-31 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/91838
+ * g++.dg/pr91838.C: Moved to ...
+ * g++.dg/opt/pr91838.C: ... here. Require c++11 target instead of
+ dg-skip-if for c++98. Pass -Wno-psabi -w to avoid psabi style
+ warnings on vector arg passing or return. Add -masm=att on i?86/x86_64.
+ Only check for pxor %xmm0, %xmm0 on lp64 i?86/x86_64.
+
+2020-01-31 Richard Sandiford <richard.sandiford@arm.com>
+
+ * lib/target-supports.exp (check_effective_target_aarch64_asm_bf16_ok):
+ New proc.
+ * gcc.target/aarch64/sve/acle/asm/bfdot_f32.c: New test.
+ * gcc.target/aarch64/sve/acle/asm/bfdot_lane_f32.c: Likweise.
+ * gcc.target/aarch64/sve/acle/asm/bfmlalb_f32.c: Likweise.
+ * gcc.target/aarch64/sve/acle/asm/bfmlalb_lane_f32.c: Likweise.
+ * gcc.target/aarch64/sve/acle/asm/bfmlalt_f32.c: Likweise.
+ * gcc.target/aarch64/sve/acle/asm/bfmlalt_lane_f32.c: Likweise.
+ * gcc.target/aarch64/sve/acle/asm/bfmmla_f32.c: Likweise.
+ * gcc.target/aarch64/sve/acle/asm/cvt_bf16.c: Likweise.
+ * gcc.target/aarch64/sve/acle/asm/cvtnt_bf16.c: Likweise.
+ * gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_1.c: Likweise.
+ * gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_lane_1.c:
+ Likweise.
+ * gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_lanex2_1.c:
+ Likweise.
+ * gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_opt_n_1.c:
+ Likweise.
+
+2020-01-31 Richard Sandiford <richard.sandiford@arm.com>
+
+ * g++.target/aarch64/sve/acle/general-c++/mangle_1.C: Test mangling
+ of svbfloat16_t.
+ * g++.target/aarch64/sve/acle/general-c++/mangle_2.C: Likewise for
+ __SVBfloat16_t.
+ * gcc.target/aarch64/sve/acle/asm/clasta_bf16.c: New test.
+ * gcc.target/aarch64/sve/acle/asm/clastb_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/cnt_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/create2_1.c (create_bf16): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/create3_1.c (create_bf16): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/create4_1.c (create_bf16): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/dup_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/dup_lane_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/dupq_lane_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ext_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/get2_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/get3_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/get4_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/insr_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/lasta_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/lastb_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1rq_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld2_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld3_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld4_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnt1_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/len_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/reinterpret_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/reinterpret_f16.c
+ (reinterpret_f16_bf16_tied1, reinterpret_f16_bf16_untied): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/reinterpret_f32.c
+ (reinterpret_f32_bf16_tied1, reinterpret_f32_bf16_untied): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/reinterpret_f64.c
+ (reinterpret_f64_bf16_tied1, reinterpret_f64_bf16_untied): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/reinterpret_s16.c
+ (reinterpret_s16_bf16_tied1, reinterpret_s16_bf16_untied): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/reinterpret_s32.c
+ (reinterpret_s32_bf16_tied1, reinterpret_s32_bf16_untied): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/reinterpret_s64.c
+ (reinterpret_s64_bf16_tied1, reinterpret_s64_bf16_untied): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/reinterpret_s8.c
+ (reinterpret_s8_bf16_tied1, reinterpret_s8_bf16_untied): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/reinterpret_u16.c
+ (reinterpret_u16_bf16_tied1, reinterpret_u16_bf16_untied): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/reinterpret_u32.c
+ (reinterpret_u32_bf16_tied1, reinterpret_u32_bf16_untied): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/reinterpret_u64.c
+ (reinterpret_u64_bf16_tied1, reinterpret_u64_bf16_untied): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/reinterpret_u8.c
+ (reinterpret_u8_bf16_tied1, reinterpret_u8_bf16_untied): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/rev_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/sel_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/set2_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/set3_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/set4_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/splice_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st2_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st3_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st4_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/stnt1_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/tbl_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn1_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn1q_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn2_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn2q_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/undef2_1.c (bfloat16_t): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/undef3_1.c (bfloat16_t): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/undef4_1.c (bfloat16_t): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/undef_1.c (bfloat16_t): Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp1_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp1q_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp2_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp2q_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip1_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip1q_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip2_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip2q_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/annotate_1.c (ret_bf16, ret_bf16x2)
+ (ret_bf16x3, ret_bf16x4): Likewise.
+ * gcc.target/aarch64/sve/pcs/annotate_2.c (fn_bf16, fn_bf16x2)
+ (fn_bf16x3, fn_bf16x4): Likewise.
+ * gcc.target/aarch64/sve/pcs/annotate_3.c (fn_bf16, fn_bf16x2)
+ (fn_bf16x3, fn_bf16x4): Likewise.
+ * gcc.target/aarch64/sve/pcs/annotate_4.c (fn_bf16, fn_bf16x2)
+ (fn_bf16x3, fn_bf16x4): Likewise.
+ * gcc.target/aarch64/sve/pcs/annotate_5.c (fn_bf16, fn_bf16x2)
+ (fn_bf16x3, fn_bf16x4): Likewise.
+ * gcc.target/aarch64/sve/pcs/annotate_6.c (fn_bf16, fn_bf16x2)
+ (fn_bf16x3, fn_bf16x4): Likewise.
+ * gcc.target/aarch64/sve/pcs/annotate_7.c (fn_bf16, fn_bf16x2)
+ (fn_bf16x3, fn_bf16x4): Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_be_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_le_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_be_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_le_bf16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/gnu_vectors_1.c (bfloat16x16_t): New
+ typedef.
+ (bfloat16_callee, bfloat16_caller): New tests.
+ * gcc.target/aarch64/sve/pcs/gnu_vectors_2.c (bfloat16x16_t): New
+ typedef.
+ (bfloat16_callee, bfloat16_caller): New tests.
+ * gcc.target/aarch64/sve/pcs/return_4.c (CALLER_BF16): New macro.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_4_128.c (CALLER_BF16): New macro.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_4_256.c (CALLER_BF16): New macro.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_4_512.c (CALLER_BF16): New macro.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_4_1024.c (CALLER_BF16): New macro.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_4_2048.c (CALLER_BF16): New macro.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_5.c (CALLER_BF16): New macro.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_5_128.c (CALLER_BF16): New macro.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_5_256.c (CALLER_BF16): New macro.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_5_512.c (CALLER_BF16): New macro.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_5_1024.c (CALLER_BF16): New macro.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_5_2048.c (CALLER_BF16): New macro.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_6.c (bfloat16_t): New typedef.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_6_128.c (bfloat16_t): New typedef.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_6_256.c (bfloat16_t): New typedef.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_6_512.c (bfloat16_t): New typedef.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_6_1024.c (bfloat16_t): New typedef.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_6_2048.c (bfloat16_t): New typedef.
+ (callee_bf16, caller_bf16): New tests.
+ * gcc.target/aarch64/sve/pcs/return_7.c (callee_bf16): Likewise
+ (caller_bf16): Likewise.
+ * gcc.target/aarch64/sve/pcs/return_8.c (callee_bf16): Likewise
+ (caller_bf16): Likewise.
+ * gcc.target/aarch64/sve/pcs/return_9.c (callee_bf16): Likewise
+ (caller_bf16): Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/tbl2_bf16.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/tbx_bf16.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilerw_bf16.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilewr_bf16.c: Likewise.
+
+2020-01-31 Dennis Zhang <dennis.zhang@arm.com>
+ Matthew Malcomson <matthew.malcomson@arm.com>
+ Richard Sandiford <richard.sandiford@arm.com>
+
+ * lib/target-supports.exp (check_effective_target_aarch64_asm_i8mm_ok)
+ (check_effective_target_aarch64_asm_f32mm_ok): New target selectors.
+ * gcc.target/aarch64/pragma_cpp_predefs_2.c: Test handling of
+ __ARM_FEATURE_SVE_MATMUL_INT8, __ARM_FEATURE_SVE_MATMUL_FP32 and
+ __ARM_FEATURE_SVE_MATMUL_FP64.
+ * gcc.target/aarch64/sve/acle/asm/test_sve_acle.h (TEST_TRIPLE_Z):
+ (TEST_TRIPLE_Z_REV2, TEST_TRIPLE_Z_REV, TEST_TRIPLE_LANE_REG)
+ (TEST_TRIPLE_ZX): New macros.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_f16.c: Remove +sve and
+ rely on +f64mm to enable it.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/mmla_f32.c: New test.
+ * gcc.target/aarch64/sve/acle/asm/mmla_f64.c: Likewise,
+ * gcc.target/aarch64/sve/acle/asm/mmla_s32.c: Likewise,
+ * gcc.target/aarch64/sve/acle/asm/mmla_u32.c: Likewise,
+ * gcc.target/aarch64/sve/acle/asm/sudot_lane_s32.c: Likewise,
+ * gcc.target/aarch64/sve/acle/asm/sudot_s32.c: Likewise,
+ * gcc.target/aarch64/sve/acle/asm/trn1q_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn1q_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn1q_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn1q_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn1q_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn1q_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn1q_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn1q_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn1q_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn1q_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn1q_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn2q_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn2q_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn2q_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn2q_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn2q_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn2q_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn2q_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn2q_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn2q_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn2q_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/trn2q_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/usdot_lane_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/usdot_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/usmmla_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp1q_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp1q_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp1q_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp1q_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp1q_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp1q_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp1q_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp1q_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp1q_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp1q_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp1q_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp2q_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp2q_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp2q_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp2q_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp2q_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp2q_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp2q_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp2q_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp2q_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp2q_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/uzp2q_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip1q_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip1q_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip1q_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip1q_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip1q_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip1q_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip1q_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip1q_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip1q_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip1q_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip1q_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip2q_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip2q_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip2q_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip2q_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip2q_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip2q_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip2q_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip2q_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip2q_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip2q_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/zip2q_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/mmla_1.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/mmla_2.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/mmla_3.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/mmla_4.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/mmla_5.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/mmla_6.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/mmla_7.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/ternary_intq_uintq_lane_1.c:
+ Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/ternary_intq_uintq_opt_n_1.c:
+ Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/ternary_uintq_intq_1.c:
+ Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/ternary_uintq_intq_lane_1.c:
+ Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/ternary_uintq_intq_opt_n_1.c:
+ Likewise.
+
+2020-01-31 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/pcs/args_1.c: Require lp64 for
+ check-function-bodies tests.
+ * gcc.target/aarch64/sve/pcs/args_2.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_3.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_4.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_1.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_1_256.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_1_512.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_1_1024.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_1_2048.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_2.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_3.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_4.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_4_256.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_4_512.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_4_1024.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_4_2048.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_5.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_5_256.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_5_512.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_5_1024.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_5_2048.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_6.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_6_256.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_6_512.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_6_1024.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_6_2048.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_2_be_nowrap.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_2_be_wrap.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_2_le_nowrap.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_2_le_wrap.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_3.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_4_be.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/saves_4_le.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_1.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_f16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_f32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_f64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_s16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_s32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_s64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_s8.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_u16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_u32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_u64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/varargs_2_u8.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_be_f16.c: Require lp64.
+ * gcc.target/aarch64/sve/pcs/args_5_be_f32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_be_f64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_be_s16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_be_s32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_be_s64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_be_s8.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_be_u16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_be_u32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_be_u64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_be_u8.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_le_f16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_le_f32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_le_f64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_le_s16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_le_s32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_le_s64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_le_s8.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_le_u16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_le_u32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_le_u64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_5_le_u8.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_be_f16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_be_f32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_be_f64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_be_s16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_be_s32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_be_s64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_be_s8.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_be_u16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_be_u32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_be_u64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_be_u8.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_le_f16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_le_f32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_le_f64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_le_s16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_le_s32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_le_s64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_le_s8.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_le_u16.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_le_u32.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_le_u64.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_6_le_u8.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_7.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_8.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/args_9.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_4_128.c: Require lp64 and
+ aarch64_little_endian for check-function-bodies tests.
+ * gcc.target/aarch64/sve/pcs/return_5_128.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/stack_clash_2_128.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_1_128.c: Likewise. Remove
+ target selector from dg-compile.
+ * gcc.target/aarch64/sve/pcs/return_6_128.c: Likewise.
+
+2020-01-31 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/93462
+ * gfortran.dg/goacc/atomic-1.f90: New.
+
+2020-01-31 Tamar Christina <tamar.christina@arm.com>
+
+ PR rtl-optimization/91838
+ * g++.dg/pr91838.C: New test.
+
+2020-01-30 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/malloc-1.c: Remove include of <string.h>.
+ Use __builtin_ forms of memset and strlen throughout.
+
+2020-01-30 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/conditionals-2.c: Move to...
+ * gcc.dg/analyzer/torture/conditionals-2.c: ...here, converting
+ to a torture test. Remove redundant include.
+
+2020-01-30 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93356
+ * gcc.dg/analyzer/conditionals-notrans.c (test_float_selfcmp):
+ Add.
+ * gcc.dg/analyzer/conditionals-trans.c: Mark floating point
+ comparison test as failing.
+ (test_float_selfcmp): Add.
+ * gcc.dg/analyzer/data-model-1.c: Mark floating point comparison
+ tests as failing.
+ * gcc.dg/analyzer/torture/pr93356.c: New test.
+
+2020-01-30 Jeff Law <law@redhat.com>
+
+ PR c/88660
+ * gcc.dg/pr88660.c: New test
+
+2020-01-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR lto/93384
+ * gcc.dg/lto/pr93384_0.c: New test.
+ * gcc.dg/lto/pr93384_1.c: New file.
+
+ PR middle-end/93505
+ * gcc.c-torture/compile/pr93505.c: New test.
+
+2020-01-30 Jeff Law <law@redhat.com
+
+ * gcc.dg/tree-ssa/ssa-dse-26.c: Make existing dg-final scan
+ conditional on !c6x. Add dg-final scan pattern for c6x.
+
+2020-01-30 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/92323
+ * gcc.dg/Warray-bounds-57.c: New test.
+
+2020-01-30 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93450
+ * gcc.dg/analyzer/torture/pr93450.c: New test.
+
+2020-01-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93494
+ * gcc.c-torture/execute/pr93494.c: New test.
+
+2020-01-30 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/90338
+ * g++.dg/pr90338.C: New.
+
+2020-01-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/91824
+ * gcc.target/i386/pr91824-2.c: New test.
+
+ PR target/91824
+ * gcc.target/i386/pr91824-1.c: New test.
+
+2020-01-30 Bin Cheng <bin.cheng@linux.alibaba.com>
+
+ * g++.dg/coroutines/co-await-syntax-09-convert.C: New test.
+
+2020-01-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/92706
+ * gcc.dg/tree-ssa/pr92706-1.c: Require int128 effective target.
+
+2020-01-29 Marek Polacek <polacek@redhat.com>
+
+ PR c++/88092
+ * g++.dg/cpp2a/nontype-class31.C: New test.
+
+2020-01-29 Jeff Law <law@redhat.com
+
+ PR tree-optimization/89689
+ * gcc.dg/pr89689.c: New test.
+
+2020-01-29 Marek Polacek <polacek@redhat.com>
+
+ PR c++/91754 - Fix template arguments comparison with class NTTP.
+ * g++.dg/cpp2a/nontype-class30.C: New test.
+
+2020-01-29 Marek Polacek <polacek@redhat.com>
+
+ PR c++/92948 - Fix class NTTP with template arguments.
+ * g++.dg/cpp2a/nontype-class28.C: New test.
+ * g++.dg/cpp2a/nontype-class29.C: New test.
+
+2020-01-29 Joel Hutton <Joel.Hutton@arm.com>
+
+ PR target/93221
+ * gcc.target/aarch64/pr93221.c: New test.
+
+2020-01-29 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/92706
+ * gcc.dg/tree-ssa/pr92706-1.c: New test.
+
+2020-01-29 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/92706
+ * gcc.dg/tree-ssa/pr92706-2.c: New test.
+ * gcc.dg/guality/pr59776.c: Xfail tests for s2.g.
+
+2020-01-28 Jan Hubicka <hubicka@ucw.cz>
+
+ * gcc.dg/tree-prof/indir-call-prof-2.c: New testcase.
+
+2020-01-29 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR testsuite/93393
+ * gcc.dg/torture/pr93133.c: XFAIL for powerpc*-*-*.
+
+2020-01-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/91118
+ * g++.dg/gomp/pr91118-1.C: New test.
+ * g++.dg/gomp/pr91118-2.C: New test.
+
+ PR fortran/93463
+ * gfortran.dg/goacc/pr93463.f90: New test.
+
+2020-01-29 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/93428
+ * gcc.dg/torture/pr93428.c: New testcase.
+
+2020-01-28 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/93437
+ * g++.dg/warn/Wstringop-overflow-5.C: New test.a
+
+2020-01-28 Jan Hubicka <hubicka@ucw.cz>
+
+ * g++.dg/tree-prof/indir-call-prof.C: Update template.
+ * gcc.dg/tree-prof/crossmodule-indircall-1.c: Add more targets.
+ * gcc.dg/tree-prof/crossmodule-indircall-1a.c: Add more targets.
+ * gcc.dg/tree-prof/indir-call-prof.c: Update template.
+
+2020-01-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/91461
+ * gcc.target/i386/avx256-unaligned-store-2.c: Don't check
+ vmovups.
+ * gcc.target/i386/avx256-unaligned-store-3.c: Likewise.
+ * gcc.target/i386/pieces-memcpy-4.c: Likewise.
+ * gcc.target/i386/pieces-memcpy-5.c: Likewise.
+ * gcc.target/i386/pieces-memcpy-6.c: Likewise.
+ * gcc.target/i386/pieces-strcpy-2.c: Likewise.
+ * gcc.target/i386/pr90980-1.c: Likewise.
+ * gcc.target/i386/pr87317-4.c: Check "\tvmovd\t" instead of
+ "vmovd" to avoid matching "vmovdqu".
+ * gcc.target/i386/pr87317-5.c: Likewise.
+ * gcc.target/i386/pr87317-7.c: Likewise.
+ * gcc.target/i386/pr91461-1.c: New test.
+ * gcc.target/i386/pr91461-2.c: Likewise.
+ * gcc.target/i386/pr91461-3.c: Likewise.
+ * gcc.target/i386/pr91461-4.c: Likewise.
+ * gcc.target/i386/pr91461-5.c: Likewise.
+
+2020-01-28 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/plugin/diagnostic_plugin_test_metadata.c: Update for
+ renaming of warning_at overload to warning_meta.
+ * gcc.dg/plugin/diagnostic_plugin_test_paths.c: Likewise.
+
+2020-01-28 Tobias Burnus <tobias@codesourcery.com>
+ Julian Brown <julian@codesourcery.com>
+
+ * gfortran.dg/goacc/mapping-tests-2.f90: New test.
+ * gfortran.dg/goacc/subarrays.f95: Expect rejection of non-contiguous
+ array.
+
+2020-01-28 Julian Brown <julian@codesourcery.com>
+
+ * gfortran.dg/goacc/deep-copy-2.f90: Move test here (from libgomp
+ testsuite). Make a compilation test, and expect rejection of mixed
+ component/non-component accesses.
+ * gfortran.dg/goacc/mapping-tests-1.f90: New test.
+
+2020-01-28 Tobias Burnus <tobias@codesourcery.com>
+ Julian Brown <julian@codesourcery.com>
+
+ * gfortran.dg/goacc/strided-alloc-ptr.f90: New test.
+
+2020-01-28 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/93439
+ * gfortran.dg/graphite/pr93439.f90: New testcase.
+
+2020-01-28 Sahahb Vahedi <shahab@synopsys.com>
+
+ * gcc.target/arc/code-density-flag.c: New test
+
+2020-01-28 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/93464
+ * gfortran.dg/goacc/pr93464.f90: New.
+
+2020-01-28 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR tree-optimization/93434
+ * gcc.c-torture/execute/pr93434.c: New test.
+
+2020-01-28 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR testsuite/93460
+ * gcc.dg/torture/pr93170.c: Add -Wpsabi.
+
+2020-01-28 Martin Liska <mliska@suse.cz>
+
+ PR c++/92440
+ * g++.dg/template/pr92440.C: New test.
+ * g++.dg/cpp0x/vt-34314.C: Update error to note.
+ * g++.dg/template/pr59930-2.C: Likewise.
+ * g++.old-deja/g++.pt/redecl1.C: Likewise.
+
+2020-01-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93418
+ * gcc.target/i386/avx2-pr93418.c: New test.
+
+ PR tree-optimization/93454
+ * gcc.dg/pr93454.c: New test.
+
+2020-01-27 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93451
+ * gcc.dg/analyzer/torture/pr93451.c: New test.
+
+2020-01-27 Stam Markianos-Wright <stam.markianos-wright@arm.com>
+
+ * gcc.target/arm/armv8_2-fp16-move-1.c: Update following load/store
+ optimisation.
+
+2020-01-27 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93349
+ * gcc.dg/analyzer/torture/pr93349.c: New test.
+
+2020-01-27 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93291
+ * gcc.dg/analyzer/pattern-test-2.c: Remove include of stdlib.h.
+ (test_2): Rewrite to explicitly perform a bitwise-or of two
+ boolean conditions.
+ (test_3): New function, to test bitwise-and.
+
+2020-01-27 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR testsuite/71727
+ * gcc.target/aarch64/pr71727.c: Add -fcommon.
+
+2020-01-27 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/sigsetjmp-5.c: New test.
+ * gcc.dg/analyzer/sigsetjmp-6.c: New test.
+
+2020-01-27 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/91171
+ * gcc.dg/graphite/scop-21.c: un-XFAIL.
+
+2020-01-27 Claudiu Zissulescu <claziss@synopsys.com>
+
+ * gcc.target/arc/interrupt-6.c: Update test.
+
+2020-01-27 Claudiu Zissulescu <claziss@synopsys.com>
+ Petro Karashchenko <petro.karashchenko@ring.com>
+
+ * gcc.target/arc/uncached-3.c: New test.
+ * gcc.target/arc/uncached-4.c: Likewise.
+ * gcc.target/arc/uncached-5.c: Likewise.
+ * gcc.target/arc/uncached-6.c: Likewise.
+ * gcc.target/arc/uncached-7.c: Likewise.
+ * gcc.target/arc/uncached-8.c: Likewise.
+ * gcc.target/arc/arc.exp (ll64): New predicate.
+
+2020-01-27 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/torture/pr93170.c: New test.
+
+2020-01-27 Martin Liska <mliska@suse.cz>
+
+ PR target/93274
+ * gcc.target/i386/pr81213.c: Adjust to not expect
+ a globally unique name.
+
+2020-01-27 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/93397
+ * gcc.dg/torture/pr93397.c: New testcase.
+
+2020-01-27 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/85781
+ * gfortran.dg/bind_c_char_2.f90: New.
+ * gfortran.dg/bind_c_char_3.f90: New.
+ * gfortran.dg/bind_c_char_4.f90: New.
+ * gfortran.dg/bind_c_char_5.f90: New.
+
+2020-01-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * gcc.target/i386/pr91298-1.c: xfail on Solaris/x86 with native
+ assembler.
+ * gcc.target/i386/pr91298-2.c: Likewise.
+
+2020-01-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93412
+ * gcc.dg/pr93412.c: New test.
+
+ PR target/93430
+ * gcc.dg/pr93430.c: New test.
+ * gcc.target/i386/avx2-pr93430.c: New test.
+
+ PR ipa/93166
+ * g++.dg/pr93166.C: Move to ...
+ * g++.dg/pr93166_0.C: ... here. Turn it into a proper lto test.
+
+ PR tree-optimization/92788
+ * g++.dg/pr92788.C: Move to ...
+ * g++.target/i386/pr92788.C: ... here. Remove target from dg-do line.
+ Change type of operator new's first parameter to __SIZE_TYPE__.
+
+2020-01-25 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93414 - poor diagnostic for dynamic_cast in constexpr context.
+ * g++.dg/cpp2a/constexpr-dynamic18.C: New test.
+
+2020-01-25 Feng Xue <fxue@os.amperecomputing.com>
+
+ PR ipa/93166
+ * g++.dg/pr93166.C: New test.
+
+2020-01-25 Andrew Pinski <apinski@marvell.com>
+
+ * gcc.target/aarch64/vec_zeroextend.c: Fix for big-endian.
+
+2020-01-24 Jeff Law <law@redhat.com
+
+ PR tree-optimization/92788
+ * g++.dg/pr92788.C: New test.
+
+2020-01-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93395
+ * gcc.target/i386/pr93395.c: New test.
+ * gcc.target/i386/avx512vl-vpermilpdi-1.c: Remove xfail.
+
+2020-01-24 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93299 - ICE in tsubst_copy with parenthesized expression.
+ * g++.dg/cpp1y/paren5.C: New test.
+
+2020-01-24 Sandra Loosemore <sandra@codesourcery.com>
+
+ * g++.dg/cpp0x/constexpr-odr1.C: Add -fdelete-null-pointer-checks.
+ * g++.dg/cpp0x/constexpr-odr2.C: Likewise.
+ * g++.dg/cpp0x/nontype4.C: Likewise.
+ * g++.dg/cpp1y/constexpr-new.C: Likewise.
+ * g++.dg/cpp1y/new1.C: Likewise.
+ * g++.dg/cpp1y/new2.C: Likewise.
+ * g++.dg/cpp2a/constexpr-dynamic11.C: Likewise.
+ * g++.dg/cpp2a/constexpr-dynamic17.C: Likewise.
+ * g++.dg/cpp2a/constexpr-dynamic4.C: Likewise.
+ * g++.dg/cpp2a/constexpr-new1.C: Likewise.
+ * g++.dg/cpp2a/constexpr-new10.C: Likewise.
+ * g++.dg/cpp2a/constexpr-new2.C: Likewise.
+ * g++.dg/cpp2a/constexpr-new3.C: Likewise.
+ * g++.dg/cpp2a/constexpr-new4.C: Likewise.
+ * g++.dg/cpp2a/constexpr-new8.C: Likewise.
+ * g++.dg/cpp2a/constexpr-new9.C: Likewise.
+ * g++.dg/cpp2a/nontype-class1.C: Likewise.
+
+2020-01-24 Jason Merrill <jason@redhat.com>
+
+ * lib/target-supports.exp (check_effective_target_unsigned_char):
+ New.
+
+2020-01-24 Jeff Law <law@redhat.com
+
+ PR target/13721
+ * gcc.target/h8300/pr13721.c: New test.
+
+2020-01-24 Christophe Lyon <christophe.lyon@linaro.org>
+
+ PR debug/92763
+ * g++.dg/debug/pr92763.C: Require fopenmp.
+
+2020-01-23 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93367
+ * gcc.dg/analyzer/abort.c: Remove include of <assert.h>.
+ Replace use of assert with a custom assertion implementation.
+
+2020-01-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR inline-asm/93027
+ * gcc.target/i386/pr93027.c: Require lp64 target rather x86_64-*-*.
+
+ PR rtl-optimization/93402
+ * gcc.c-torture/execute/pr93402.c: New test.
+
+2020-01-23 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/92804
+ * g++.dg/concepts/pr92804-1.C: New.
+ * g++.dg/concepts/pr92804-2.C: Likewise.
+
+2020-01-23 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93375
+ * gcc.dg/analyzer/pr93375.c: New test.
+
+2020-01-23 Jason Merrill <jason@redhat.com>
+
+ * lib/target-supports.exp (check_effective_target_unsigned_char):
+ New.
+
+2020-01-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93376
+ * gcc.dg/pr93376.c: New test.
+
+2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR target/93341
+ * gcc.target/aarch64/pr93341.c: New test.
+
+2020-01-23 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/data-model-3.c: Remove hardcoded "-O2" and move
+ to torture/conftest-1.c.
+ * gcc.dg/analyzer/torture/analyzer-torture.exp: New.
+ * gcc.dg/analyzer/torture/conftest-1.c: Move here from
+ analyzer/data-model-3.c.
+ * gcc.dg/analyzer/torture/poc.c: New test.
+
+2020-01-23 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/93381
+ * gcc.dg/torture/pr93354.c: New testcase.
+
+2020-01-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93346
+ * gcc.target/i386/pr93346.c: New test.
+
+2020-01-23 Martin Sebor <msebor@redhat.com>
+
+ PR c/84919
+ * gcc.dg/Wrestrict-20.c: New test.
+
+2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
+
+ * g++.target/aarch64/sve/acle/general-c++/whilele_1.C: Skip for ILP32.
+
+2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/asm/ld1_f16.c: Skip check-function-bodies
+ test for ILP32.
+ * gcc.target/aarch64/sve/acle/asm/ld1_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1_gather_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1_gather_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1_gather_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1_gather_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1rq_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1rq_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1rq_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1rq_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1rq_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1rq_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1rq_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1rq_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1rq_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1rq_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1rq_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sb_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sb_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sb_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sb_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sb_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sb_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sb_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sb_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sh_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sh_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sh_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sh_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sh_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sh_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sw_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sw_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sw_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1sw_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ub_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ub_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ub_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ub_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ub_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ub_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ub_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ub_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1uh_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1uh_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1uh_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1uh_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1uh_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1uh_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1uw_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1uw_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1uw_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1uw_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld2_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld2_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld2_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld2_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld2_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld2_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld2_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld2_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld2_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld2_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld2_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld3_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld3_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld3_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld3_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld3_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld3_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld3_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld3_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld3_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld3_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld3_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld4_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld4_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld4_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld4_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld4_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld4_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld4_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld4_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld4_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld4_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld4_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_gather_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_gather_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_gather_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_gather_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sb_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sb_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sb_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sb_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sb_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sb_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sb_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sh_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sh_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sh_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sh_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sh_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sw_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sw_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1sw_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1ub_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1ub_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1ub_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1ub_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1ub_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1ub_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1ub_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1uh_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1uh_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1uh_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1uh_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1uh_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1uw_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1uw_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldff1uw_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1sb_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1sb_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1sb_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1sb_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1sb_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1sb_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1sh_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1sh_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1sh_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1sh_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1sw_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1sw_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1ub_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1ub_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1ub_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1ub_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1ub_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1ub_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1uh_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1uh_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1uh_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1uh_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1uw_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnf1uw_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnt1_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnt1_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnt1_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnt1_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnt1_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnt1_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnt1_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnt1_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnt1_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnt1_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ldnt1_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/prfb.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/prfb_gather.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/prfd.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/prfd_gather.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/prfh.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/prfh_gather.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/prfw.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/prfw_gather.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_scatter_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_scatter_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_scatter_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_scatter_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_scatter_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_scatter_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1b_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1b_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1b_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1b_scatter_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1b_scatter_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1b_scatter_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1b_scatter_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1b_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1b_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1b_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1h_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1h_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1h_scatter_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1h_scatter_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1h_scatter_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1h_scatter_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1h_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1h_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1w_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1w_scatter_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1w_scatter_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st1w_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st2_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st2_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st2_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st2_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st2_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st2_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st2_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st2_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st2_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st2_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st2_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st3_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st3_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st3_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st3_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st3_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st3_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st3_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st3_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st3_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st3_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st3_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st4_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st4_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st4_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st4_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st4_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st4_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st4_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st4_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st4_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st4_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/st4_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/stnt1_f16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/stnt1_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/stnt1_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/stnt1_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/stnt1_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/stnt1_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/stnt1_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/stnt1_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/stnt1_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/stnt1_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/stnt1_u8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general/temporaries_1.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_f64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1sb_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1sh_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1sw_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1ub_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1uh_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_s64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/ldnt1uw_gather_u64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_f64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_s64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/stnt1_scatter_u64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_s64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/stnt1b_scatter_u64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_s64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/stnt1h_scatter_u64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_s64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/stnt1w_scatter_u64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilerw_f16.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilerw_f32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilerw_f64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilerw_s16.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilerw_s32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilerw_s64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilerw_s8.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilerw_u16.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilerw_u32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilerw_u64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilerw_u8.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilewr_f16.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilewr_f32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilewr_f64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilewr_s16.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilewr_s32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilewr_s64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilewr_s8.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilewr_u16.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilewr_u32.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilewr_u64.c: Likewise.
+ * gcc.target/aarch64/sve2/acle/asm/whilewr_u8.c: Likewise.
+
+2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
+
+ * lib/scanasm.exp (check-function-bodies): Add an optional
+ target/xfail selector.
+
+2020-01-23 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/torture/pr93124.c: New test.
+
+2020-01-22 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93382
+ * gcc.dg/analyzer/pr93382.c: New test.
+
+2020-01-22 Andrew Pinski <apinski@marvell.com>
+
+ * gcc.dg/tree-ssa/pr88497-1.c: Move to ...
+ * gcc.dg/vect/pr88497-1.c: This.
+ * gcc.dg/tree-ssa/pr88497-2.c: Move to ...
+ * gcc.dg/vect/pr88497-2.c: This.
+ * gcc.dg/tree-ssa/pr88497-3.c: Move to ...
+ * gcc.dg/vect/pr88497-3.c: This.
+ * gcc.dg/tree-ssa/pr88497-4.c: Move to ...
+ * gcc.dg/vect/pr88497-4.c: This.
+ * gcc.dg/tree-ssa/pr88497-5.c: Move to ...
+ * gcc.dg/vect/pr88497-5.c: This.
+ * gcc.dg/tree-ssa/pr88497-6.c: Move to ...
+ * gcc.dg/vect/pr88497-6.c: This.
+ * gcc.dg/tree-ssa/pr88497-7.c: Move to ...
+ * gcc.dg/vect/pr88497-7.c: This.
+
+ Revert:
+ * tree-ssa.exp: Set DEFAULT_VECTCFLAGS and DEFAULT_VECTCFLAGS.
+ Call check_vect_support_and_set_flags also.
+
+2020-01-22 Andrew Pinski <apinski@marvell.com>
+
+ * tree-ssa.exp: Set DEFAULT_VECTCFLAGS and DEFAULT_VECTCFLAGS.
+ Call check_vect_support_and_set_flags also.
+
+2020-01-22 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93378
+ * gcc.dg/analyzer/setjmp-pr93378.c: Use setjmp rather than
+ _setjmp.
+
+2020-01-22 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93378
+ * gcc.dg/analyzer/setjmp-pr93378.c: New test.
+
+2020-01-22 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93316
+ * gcc.dg/analyzer/data-model-1.c: Include <alloca.h>.
+ * gcc.dg/analyzer/malloc-1.c: Likewise.
+ * gcc.dg/analyzer/malloc-callbacks.c (get_alloca): Return
+ __builtin_alloca rather than alloca.
+ * gcc.dg/analyzer/malloc-paths-8.c: Include <alloca.h>.
+ * gcc.dg/analyzer/sensitive-1.c: Define __EXTENSIONS__ before
+ including unistd.h.
+ * gcc.dg/analyzer/setjmp-2.c: Replace include of <setjmp.h>
+ with "test-setjmp.h" and usage of setjmp with new SETJMP macro.
+ * gcc.dg/analyzer/setjmp-3.c: Likewise.
+ * gcc.dg/analyzer/setjmp-4.c: Likewise.
+ * gcc.dg/analyzer/setjmp-5.c: Likewise.
+ * gcc.dg/analyzer/setjmp-6.c: Likewise.
+ * gcc.dg/analyzer/setjmp-7.c: Likewise.
+ * gcc.dg/analyzer/setjmp-7a.c: Likewise.
+ * gcc.dg/analyzer/setjmp-8.c: Likewise.
+ * gcc.dg/analyzer/setjmp-9.c: Likewise.
+ * gcc.dg/analyzer/test-setjmp.h: New header.
+
+2020-01-22 Marek Polacek <polacek@redhat.com>
+
+ PR c++/92907 - noexcept does not consider "const" in member functions.
+ * parser.c (cp_parser_lambda_declarator_opt): Pass the proper
+ qualifiers to cp_parser_exception_specification_opt.
+ (cp_parser_direct_declarator): Pass the function qualifiers to
+ cp_parser_exception_specification_opt.
+ (cp_parser_class_specifier_1): Pass the function declaration to
+ cp_parser_late_noexcept_specifier.
+ (cp_parser_late_noexcept_specifier): Add a tree parameter. Use it to
+ pass the qualifiers of the function to
+ cp_parser_noexcept_specification_opt.
+ (cp_parser_noexcept_specification_opt): New cp_cv_quals parameter.
+ Use it in inject_this_parameter.
+ (cp_parser_exception_specification_opt): New cp_cv_quals parameter.
+ Use it.
+ (cp_parser_transaction): Pass TYPE_UNQUALIFIED to
+ cp_parser_noexcept_specification_opt.
+ (cp_parser_transaction_expression): Likewise.
+
+2020-01-22 Marek Polacek <polacek@redhat.com>
+
+ PR c++/93324 - ICE with -Wall on constexpr if.
+ * g++.dg/cpp1z/constexpr-if33.C: New test.
+
+2020-01-22 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/stack_vars_1.c: New test.
+
+2020-01-22 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/tls_preserve_1.c: Require tls_native.
+ * gcc.target/aarch64/sve/tls_preserve_2.c: Likewise.
+ * gcc.target/aarch64/sve/tls_preserve_3.c: Likewise.
+
+2020-01-22 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/sel_3.c (permute_vnx4sf): Take __SVFloat32_t
+ rather than __SVFloat16_t
+
+2020-01-22 Richard Sandiford <richard.sandiford@arm.com>
+
+ * g++.dg/ext/sve-sizeless-1.C: Don't expect an error for alias
+ templates.
+
+2020-01-22 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/93381
+ * gcc.dg/torture/pr93381.c: New testcase.
+
+2020-01-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93335
+ * gcc.c-torture/compile/pr93335.c: New test.
+
+ PR target/91298
+ * gcc.target/i386/pr91298-1.c: New test.
+ * gcc.target/i386/pr91298-2.c: New test.
+
+ * gfortran.dg/gomp/target-parallel1.f90: New test.
+ * gfortran.dg/goacc/pr93329.f90: Enable commented out target parallel
+ test.
+
+ PR fortran/93329
+ * gfortran.dg/goacc/pr93329.f90: New test.
+
+2020-01-22 Jun Ma <JunMa@linux.alibaba.com>
+
+ * g++.dg/coroutines/coro1-missing-await-method.C: New test.
+
+2020-01-21 Andrew Pinski <apinski@marvell.com>
+
+ PR target/93119
+ * gcc.target/aarch64/pr93119.c: New test.
+
+2020-01-22 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/93348
+ * gcc.c-torture/compile/pr93348-1.c: New test.
+
+2020-01-21 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93352
+ * gcc.dg/analyzer/pr93352.c: New test.
+
+2020-01-22 Hans-Peter Nilsson <hp@axis.com>
+
+ * gcc.target/cris/asm-v8.S, gcc.target/cris/inasm-v8.c,
+ gcc.target/cris/sync-1.c: Apply effective_target_march_option.
+
+2020-01-21 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/93319
+ * gcc.target/i386/pr93319-1a.c: Don't include <stdio.h>.
+ (test1): Replace printf with __builtin_printf.
+
+2020-01-21 Bin Cheng <bin.cheng@linux.alibaba.com>
+
+ * g++.dg/coroutines/co-await-void_type.C: New test.
+
+2020-01-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93333
+ * gcc.c-torture/compile/pr93333.c: New test.
+
+2020-01-21 Sandra Loosemore <sandra@codesourcery.com>
+
+ * g++.dg/coroutines/torture/mid-suspend-destruction-0.C: Generalize
+ line terminators in patterns.
+
+2020-01-21 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general-c/load_1.c (f1): Cast to
+ int32_t * rather than int *.
+ * gcc.target/aarch64/sve/acle/general-c/load_2.c (f1): Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/load_gather_sv_1.c
+ (f1): Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/load_gather_sv_2.c
+ (f1): Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/load_gather_sv_restricted_1.c
+ (f1): Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/load_replicate_1.c
+ (f1): Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/store_1.c (f1): Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/store_2.c (f1): Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/store_scatter_index_1.c
+ (f1): Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_2.c
+ (f1): Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_restricted_1.c
+ (f1): Likewise.
+
+2020-01-21 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
+ PR target/92424
+ * gcc.target/aarch64/pr92424-1.c: New test.
+ * gcc.target/aarch64/pr92424-2.c: New test.
+ * gcc.target/aarch64/pr92424-3.c: New test.
+
+2020-01-21 Matthew Malcomson <matthew.malcomson@arm.com>
+
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_f16.c: Use require
+ directive.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_f32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_f64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_s16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_s32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_s64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_s8.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_u16.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_u32.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_u64.c: Likewise.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_u8.c: Likewise.
+ * lib/target-supports.exp: Add assembly requirement directive.
+
+2020-01-21 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/93309
+ * gfortran.dg/external_implicit_none_2.f90: New.
+
+2020-01-21 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/92328
+ * gcc.dg/torture/pr92328.c: New testcase.
+
+2020-01-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93073
+ * gcc.target/powerpc/pr93073.c: New test.
+
+2020-01-20 Bin Cheng <bin.cheng@linux.alibaba.com>
+
+ * g++.dg/coroutines/co-return-warning-1.C: New test.
+
+2020-01-21 Kito Cheng <kito.cheng@sifive.com>
+
+ PR target/93304
+ * gcc.target/riscv/pr93304.c: New test.
+
+2020-01-20 Martin Sebor <msebor@redhat.com>
+
+ PR testsuite/92829
+ * g++.dg/warn/Wstringop-overflow-4.C: Adjust test to avoid failures
+ due to an aparrent VRP limtation.
+ * gcc.dg/Wstringop-overflow-25.c: Same.
+
+2020-01-20 Nathan Sidwell <nathan@acm.org>
+
+ PR preprocessor/80005
+ * g++.dg/cpp1y/feat-cxx14.C: Adjust.
+ * g++.dg/cpp1z/feat-cxx17.C: Adjust.
+ * g++.dg/cpp2a/feat-cxx2a.C: Adjust.
+ * g++.dg/cpp/pr80005.C: New.
+
+2020-01-20 Mark Eggleston <mark.eggleston@codethink.com>
+
+ * gfortran.dg/pr93263_1.f90: Change scan-tree-dump-not to
+ scan-tree-dump.
+
+2020-01-20 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/93319
+ * gcc.target/i386/pr93319-1a.c: New test.
+ * gcc.target/i386/pr93319-1b.c: Likewise.
+ * gcc.target/i386/pr93319-1c.c: Likewise.
+ * gcc.target/i386/pr93319-1d.c: Likewise.
+
+2020-01-20 Richard Biener <rguenther@suse.de>
+
+ PR debug/92763
+ * g++.dg/debug/pr92763.C: New testcase.
+
+2020-01-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/92536
+ * g++.dg/cpp1z/pr92536.C: New.
+
+2020-01-20 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/93094
+ * gcc.dg/vect/pr93094.c: New testcase.
+
+2020-01-19 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/CVE-2005-1689-dedupe-issue.c: Ensure that all
+ test names are unique.
+ * gcc.dg/analyzer/attribute-nonnull.c: Likewise.
+ * gcc.dg/analyzer/conditionals-notrans.c: Likewise.
+ * gcc.dg/analyzer/data-model-1.c: Likewise.
+ * gcc.dg/analyzer/data-model-18.c: Likewise.
+ * gcc.dg/analyzer/data-model-8.c: Likewise.
+ * gcc.dg/analyzer/data-model-9.c: Likewise.
+ * gcc.dg/analyzer/file-1.c: Likewise.
+ * gcc.dg/analyzer/file-paths-1.c: Likewise.
+ * gcc.dg/analyzer/loop-2.c: Likewise.
+ * gcc.dg/analyzer/loop-2a.c: Likewise.
+ * gcc.dg/analyzer/loop-4.c: Likewise.
+ * gcc.dg/analyzer/loop.c: Likewise.
+ * gcc.dg/analyzer/malloc-1.c: Likewise.
+ * gcc.dg/analyzer/malloc-2.c: Likewise.
+ * gcc.dg/analyzer/malloc-ipa-10.c: Likewise.
+ * gcc.dg/analyzer/malloc-ipa-2.c: Likewise.
+ * gcc.dg/analyzer/malloc-macro-separate-events.c: Likewise.
+ * gcc.dg/analyzer/malloc-paths-1.c: Likewise.
+ * gcc.dg/analyzer/malloc-paths-2.c: Likewise.
+ * gcc.dg/analyzer/malloc-paths-3.c: Likewise.
+ * gcc.dg/analyzer/malloc-paths-4.c: Likewise.
+ * gcc.dg/analyzer/malloc-paths-5.c: Likewise.
+ * gcc.dg/analyzer/malloc-paths-7.c: Likewise.
+ * gcc.dg/analyzer/malloc-paths-9.c: Likewise.
+ * gcc.dg/analyzer/operations.c: Likewise.
+ * gcc.dg/analyzer/params.c: Likewise.
+ * gcc.dg/analyzer/pattern-test-1.c: Likewise.
+ * gcc.dg/analyzer/pattern-test-2.c: Likewise.
+ * gcc.dg/analyzer/sensitive-1.c: Likewise.
+ * gcc.dg/analyzer/switch.c: Likewise.
+ * gcc.dg/analyzer/taint-1.c: Likewise.
+ * gcc.dg/analyzer/unknown-fns.c: Likewise.
+
+2020-01-19 Hans-Peter Nilsson <hp@axis.com>
+
+ * gcc.dg/torture/pr26515.c (cris*-*-*): Conditionalize
+ -march=v10 option on target ! march_option.
+ * gcc.target/cris/asm-v10.S, gcc.target/cris/inasm-v10.c,
+ gcc.target/cris/sync-1-v10.c: Similar.
+ * lib/target-supports.exp (effective_target_march_option): New.
+
+2020-01-19 Thomas König <tkoenig@gcc.gnu.org>
+
+ PR fortran/44960
+ * gfortran.dg/function_reference_1.f90: New test.
+ * gfortran.dg/function_reference_2.f90: New test.
+
+2020-01-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/92833
+ * c-c++-common/pr92833-4.c: Fix dg-message syntax.
+
+2020-01-18 Iain Sandoe <iain@sandoe.co.uk>
+
+ * g++.dg/coroutines/co-await-syntax-00-needs-expr.C: New test.
+ * g++.dg/coroutines/co-await-syntax-01-outside-fn.C: New test.
+ * g++.dg/coroutines/co-await-syntax-02-outside-fn.C: New test.
+ * g++.dg/coroutines/co-await-syntax-03-auto.C: New test.
+ * g++.dg/coroutines/co-await-syntax-04-ctor-dtor.C: New test.
+ * g++.dg/coroutines/co-await-syntax-05-constexpr.C: New test.
+ * g++.dg/coroutines/co-await-syntax-06-main.C: New test.
+ * g++.dg/coroutines/co-await-syntax-07-varargs.C: New test.
+ * g++.dg/coroutines/co-await-syntax-08-lambda-auto.C: New test.
+ * g++.dg/coroutines/co-return-syntax-01-outside-fn.C: New test.
+ * g++.dg/coroutines/co-return-syntax-02-outside-fn.C: New test.
+ * g++.dg/coroutines/co-return-syntax-03-auto.C: New test.
+ * g++.dg/coroutines/co-return-syntax-04-ctor-dtor.C: New test.
+ * g++.dg/coroutines/co-return-syntax-05-constexpr-fn.C: New test.
+ * g++.dg/coroutines/co-return-syntax-06-main.C: New test.
+ * g++.dg/coroutines/co-return-syntax-07-vararg.C: New test.
+ * g++.dg/coroutines/co-return-syntax-08-bad-return.C: New test.
+ * g++.dg/coroutines/co-return-syntax-09-lambda-auto.C: New test.
+ * g++.dg/coroutines/co-yield-syntax-00-needs-expr.C: New test.
+ * g++.dg/coroutines/co-yield-syntax-01-outside-fn.C: New test.
+ * g++.dg/coroutines/co-yield-syntax-02-outside-fn.C: New test.
+ * g++.dg/coroutines/co-yield-syntax-03-auto.C: New test.
+ * g++.dg/coroutines/co-yield-syntax-04-ctor-dtor.C: New test.
+ * g++.dg/coroutines/co-yield-syntax-05-constexpr.C: New test.
+ * g++.dg/coroutines/co-yield-syntax-06-main.C: New test.
+ * g++.dg/coroutines/co-yield-syntax-07-varargs.C: New test.
+ * g++.dg/coroutines/co-yield-syntax-08-needs-expr.C: New test.
+ * g++.dg/coroutines/co-yield-syntax-09-lambda-auto.C: New test.
+ * g++.dg/coroutines/coro-builtins.C: New test.
+ * g++.dg/coroutines/coro-missing-gro.C: New test.
+ * g++.dg/coroutines/coro-missing-promise-yield.C: New test.
+ * g++.dg/coroutines/coro-missing-ret-value.C: New test.
+ * g++.dg/coroutines/coro-missing-ret-void.C: New test.
+ * g++.dg/coroutines/coro-missing-ueh-1.C: New test.
+ * g++.dg/coroutines/coro-missing-ueh-2.C: New test.
+ * g++.dg/coroutines/coro-missing-ueh-3.C: New test.
+ * g++.dg/coroutines/coro-missing-ueh.h: New test.
+ * g++.dg/coroutines/coro-pre-proc.C: New test.
+ * g++.dg/coroutines/coro.h: New file.
+ * g++.dg/coroutines/coro1-ret-int-yield-int.h: New file.
+ * g++.dg/coroutines/coroutines.exp: New file.
+ * g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C: New test.
+ * g++.dg/coroutines/torture/alloc-01-overload-newdel.C: New test.
+ * g++.dg/coroutines/torture/call-00-co-aw-arg.C: New test.
+ * g++.dg/coroutines/torture/call-01-multiple-co-aw.C: New test.
+ * g++.dg/coroutines/torture/call-02-temp-co-aw.C: New test.
+ * g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C: New test.
+ * g++.dg/coroutines/torture/class-00-co-ret.C: New test.
+ * g++.dg/coroutines/torture/class-01-co-ret-parm.C: New test.
+ * g++.dg/coroutines/torture/class-02-templ-parm.C: New test.
+ * g++.dg/coroutines/torture/class-03-operator-templ-parm.C: New test.
+ * g++.dg/coroutines/torture/class-04-lambda-1.C: New test.
+ * g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C: New test.
+ * g++.dg/coroutines/torture/class-06-lambda-capture-ref.C: New test.
+ * g++.dg/coroutines/torture/co-await-00-trivial.C: New test.
+ * g++.dg/coroutines/torture/co-await-01-with-value.C: New test.
+ * g++.dg/coroutines/torture/co-await-02-xform.C: New test.
+ * g++.dg/coroutines/torture/co-await-03-rhs-op.C: New test.
+ * g++.dg/coroutines/torture/co-await-04-control-flow.C: New test.
+ * g++.dg/coroutines/torture/co-await-05-loop.C: New test.
+ * g++.dg/coroutines/torture/co-await-06-ovl.C: New test.
+ * g++.dg/coroutines/torture/co-await-07-tmpl.C: New test.
+ * g++.dg/coroutines/torture/co-await-08-cascade.C: New test.
+ * g++.dg/coroutines/torture/co-await-09-pair.C: New test.
+ * g++.dg/coroutines/torture/co-await-10-template-fn-arg.C: New test.
+ * g++.dg/coroutines/torture/co-await-11-forwarding.C: New test.
+ * g++.dg/coroutines/torture/co-await-12-operator-2.C: New test.
+ * g++.dg/coroutines/torture/co-await-13-return-ref.C: New test.
+ * g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C: New test.
+ * g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C: New test.
+ * g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C: New test.
+ * g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C: New test.
+ * g++.dg/coroutines/torture/co-ret-05-return-value.C: New test.
+ * g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C: New test.
+ * g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C: New test.
+ * g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C: New test.
+ * g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C: New test.
+ * g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C: New test.
+ * g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C: New test.
+ * g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C: New test.
+ * g++.dg/coroutines/torture/co-ret-13-template-2.C: New test.
+ * g++.dg/coroutines/torture/co-ret-14-template-3.C: New test.
+ * g++.dg/coroutines/torture/co-yield-00-triv.C: New test.
+ * g++.dg/coroutines/torture/co-yield-01-multi.C: New test.
+ * g++.dg/coroutines/torture/co-yield-02-loop.C: New test.
+ * g++.dg/coroutines/torture/co-yield-03-tmpl.C: New test.
+ * g++.dg/coroutines/torture/co-yield-04-complex-local-state.C: New test.
+ * g++.dg/coroutines/torture/co-yield-05-co-aw.C: New test.
+ * g++.dg/coroutines/torture/co-yield-06-fun-parm.C: New test.
+ * g++.dg/coroutines/torture/co-yield-07-template-fn-param.C: New test.
+ * g++.dg/coroutines/torture/co-yield-08-more-refs.C: New test.
+ * g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C: New test.
+ * g++.dg/coroutines/torture/coro-torture.exp: New file.
+ * g++.dg/coroutines/torture/exceptions-test-0.C: New test.
+ * g++.dg/coroutines/torture/func-params-00.C: New test.
+ * g++.dg/coroutines/torture/func-params-01.C: New test.
+ * g++.dg/coroutines/torture/func-params-02.C: New test.
+ * g++.dg/coroutines/torture/func-params-03.C: New test.
+ * g++.dg/coroutines/torture/func-params-04.C: New test.
+ * g++.dg/coroutines/torture/func-params-05.C: New test.
+ * g++.dg/coroutines/torture/func-params-06.C: New test.
+ * g++.dg/coroutines/torture/lambda-00-co-ret.C: New test.
+ * g++.dg/coroutines/torture/lambda-01-co-ret-parm.C: New test.
+ * g++.dg/coroutines/torture/lambda-02-co-yield-values.C: New test.
+ * g++.dg/coroutines/torture/lambda-03-auto-parm-1.C: New test.
+ * g++.dg/coroutines/torture/lambda-04-templ-parm.C: New test.
+ * g++.dg/coroutines/torture/lambda-05-capture-copy-local.C: New test.
+ * g++.dg/coroutines/torture/lambda-06-multi-capture.C: New test.
+ * g++.dg/coroutines/torture/lambda-07-multi-yield.C: New test.
+ * g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C: New test.
+ * g++.dg/coroutines/torture/local-var-0.C: New test.
+ * g++.dg/coroutines/torture/local-var-1.C: New test.
+ * g++.dg/coroutines/torture/local-var-2.C: New test.
+ * g++.dg/coroutines/torture/local-var-3.C: New test.
+ * g++.dg/coroutines/torture/local-var-4.C: New test.
+ * g++.dg/coroutines/torture/mid-suspend-destruction-0.C: New test.
+ * g++.dg/coroutines/torture/pr92933.C: New test.
+
+2020-01-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libfortran/93234
+ * gfortran.dg/inquire_pre.f90: New test.
+
+2020-01-17 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93290
+ * gcc.dg/analyzer/pr93290.c: New test.
+
+2020-01-17 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/92542
+ * g++.dg/pr92542.C: New.
+
+2020-01-17 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
+ Sudakshina Das <sudi.das@arm.com>
+
+ * gcc.target/arm/armv8_1m-shift-imm_1.c: New test.
+
+2020-01-17 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
+ Sudakshina Das <sudi.das@arm.com>
+
+ * gcc.target/arm/armv8_1m-shift-reg_1.c: New test.
+
+2020-01-17 Jonathan Wakely <jwakely@redhat.com>
+
+ PR testsuite/93227
+ * g++.dg/cpp0x/std-layout1.C: Use -Wno-deprecated-declarations for
+ C++20, due to std::is_pod being deprecated.
+
+2020-01-17 Matthew Malcomson <matthew.malcomson@arm.com>
+
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_f16.c: New test.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_f32.c: New test.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_f64.c: New test.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_s16.c: New test.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_s32.c: New test.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_s64.c: New test.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_s8.c: New test.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_u16.c: New test.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_u32.c: New test.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_u64.c: New test.
+ * gcc.target/aarch64/sve/acle/asm/ld1ro_u8.c: New test.
+
+2020-01-17 Matthew Malcomson <matthew.malcomson@arm.com>
+
+ * gcc.target/aarch64/pragma_cpp_predefs_2.c: Check for f64mm
+ predef.
+
+2020-01-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/93228
+ * g++.dg/cpp1y/attr-deprecated-3.C: New test.
+
+2020-01-17 Richard Sandiford <richard.sandiford@arm.com>
+
+ * g++.target/aarch64/sve/acle/general-c++/gimplify_1.C: New test.
+
+2020-01-17 Mark Eggleston <mark.eggleston@codethink.com>
+ Tobias Burnus <burnus@gcc.gnu.org>
+
+ PR fortran/93236
+ * gfortran.dg/pr93263_1.f90: New test.
+ * gfortran.dg/pr93263_2.f90: New test.
+
+2020-01-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/93292
+ * g++.dg/opt/pr93292.C: New test.
+
+ PR testsuite/93294
+ * lib/c-compat.exp (compat-use-alt-compiler): Handle
+ -fdiagnostics-urls=never similarly to -fdiagnostics-color=never.
+ (compat_setup_dfp): Likewise.
+
+2020-01-16 Kerem Kat <keremkat@gmail.com>
+
+ PR c/92833
+ * c-c++-common/pr92833-1.c, c-c++-common/pr92833-2.c,
+ c-c++-common/pr92833-3.c, c-c++-common/pr92833-4.c: New tests.
+
+2020-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
+
+ * g++.target/arm/bfloat_cpp_typecheck.C: New test.
+ * gcc.target/arm/bfloat16_scalar_typecheck.c: New test.
+ * gcc.target/arm/bfloat16_vector_typecheck_1.c: New test.
+ * gcc.target/arm/bfloat16_vector_typecheck_2.c: New test.
+
+2020-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
+
+ * g++.dg/abi/mangle-neon.C: Add BF16 SIMD types.
+ * g++.dg/ext/arm-bf16/bf16-mangle-1.C: New test.
+ * gcc.target/arm/bfloat16_scalar_1_1.c: New test.
+ * gcc.target/arm/bfloat16_scalar_1_2.c: New test.
+ * gcc.target/arm/bfloat16_scalar_2_1.c: New test.
+ * gcc.target/arm/bfloat16_scalar_2_2.c: New test.
+ * gcc.target/arm/bfloat16_scalar_3_1.c: New test.
+ * gcc.target/arm/bfloat16_scalar_3_2.c: New test.
+ * gcc.target/arm/bfloat16_scalar_4.c: New test.
+ * gcc.target/arm/bfloat16_simd_1_1.c: New test.
+ * gcc.target/arm/bfloat16_simd_1_2.c: New test.
+ * gcc.target/arm/bfloat16_simd_2_1.c: New test.
+ * gcc.target/arm/bfloat16_simd_2_2.c: New test.
+ * gcc.target/arm/bfloat16_simd_3_1.c: New test.
+ * gcc.target/arm/bfloat16_simd_3_2.c: New test.
+
+2020-01-16 Mihail Ionescu <mihail.ionescu@arm.com>
+ Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ * testsuite/gcc.target/arm/multilib.exp: Add v8.1-M entries.
+
+2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
+ Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * gcc.target/arm/cmse/cmse-1.c: Add check for BLXNS when instructions
+ introduced in Armv8.1-M Mainline Security Extensions are available and
+ restrict checks for libcall to __gnu_cmse_nonsecure_call to Armv8-M
+ targets only. Adapt CLRM check to verify register used for BLXNS is
+ not in the CLRM register list.
+ * gcc.target/arm/cmse/cmse-14.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-4.c: Likewise and adapt
+ check for LSB clearing bit to be using the same register as BLXNS when
+ targeting Armv8.1-M Mainline.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-5.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-6.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-9.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-and-union.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-13.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-13.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/union-1.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/union-2.c: Likewise.
+ * gcc.target/arm/cmse/cmse-15.c: Count BLXNS when targeting Armv8.1-M
+ Mainline and restrict libcall count to Armv8-M.
+
+2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
+ Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13.c: Add check for VLSTM and
+ VLLDM.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8.c: Likewise.
+
+2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
+ Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-13.c: Add check for
+ VPUSH and VPOP and update expectation for VSCCLRM.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-13.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-8.c: Likewise.
+
+2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
+ Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * gcc.target/arm/cmse/cmse-1.c: Add check for PUSH and POP and update
+ CLRM check.
+ * gcc.target/arm/cmse/cmse-14.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-4.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-5.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-6.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-9.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-and-union.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-13.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-13.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/soft-sp/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/soft-sp/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/union-1.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/union-2.c: Likewise.
+
+2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
+ Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * gcc.target/arm/cmse/bitfield-1.c: Add check for VSCCLRM.
+ * gcc.target/arm/cmse/bitfield-2.c: Likewise.
+ * gcc.target/arm/cmse/bitfield-3.c: Likewise.
+ * gcc.target/arm/cmse/cmse-1.c: Likewise.
+ * gcc.target/arm/cmse/struct-1.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-13.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-5.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-13.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-5.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-5.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-5.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-5.c: Likewise.
+
+2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
+ Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * gcc.target/arm/cmse/bitfield-1.c: Add check for CLRM.
+ * gcc.target/arm/cmse/bitfield-2.c: Likewise.
+ * gcc.target/arm/cmse/bitfield-3.c: Likewise.
+ * gcc.target/arm/cmse/struct-1.c: Likewise.
+ * gcc.target/arm/cmse/cmse-14.c: Likewise.
+ * gcc.target/arm/cmse/cmse-1.c: Likewise. Restrict checks for Armv8-M
+ GPR clearing when CLRM is not available.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-4.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-5.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-6.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-9.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-13.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-5.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-13.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-5.c: likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-7.c: likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-8.c: likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-5.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-5.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-5.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/union-1.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/union-2.c: Likewise.
+
+2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
+ Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * gcc.target/arm/cmse/bitfield-1.c: add checks for VSTR and VLDR.
+ * gcc.target/arm/cmse/bitfield-2.c: Likewise.
+ * gcc.target/arm/cmse/bitfield-3.c: Likewise.
+ * gcc.target/arm/cmse/cmse-1.c: Likewise.
+ * gcc.target/arm/cmse/struct-1.c: Likewise.
+ * gcc.target/arm/cmse/cmse.exp: Run existing Armv8-M Mainline tests
+ from mainline/8m subdirectory and new Armv8.1-M Mainline tests from
+ mainline/8_1m subdirectory.
+ * gcc.target/arm/cmse/mainline/bitfield-4.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/bitfield-4.c: This.
+ * gcc.target/arm/cmse/mainline/bitfield-5.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/bitfield-5.c: This.
+ * gcc.target/arm/cmse/mainline/bitfield-6.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/bitfield-6.c: This.
+ * gcc.target/arm/cmse/mainline/bitfield-7.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/bitfield-7.c: This.
+ * gcc.target/arm/cmse/mainline/bitfield-8.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/bitfield-8.c: This.
+ * gcc.target/arm/cmse/mainline/bitfield-9.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/bitfield-9.c: This.
+ * gcc.target/arm/cmse/mainline/bitfield-and-union-1.c: Move and rename
+ into ...
+ * gcc.target/arm/cmse/mainline/8m/bitfield-and-union.c: This.
+ * gcc.target/arm/cmse/mainline/hard-sp/cmse-13.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/hard-sp/cmse-13.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/hard-sp/cmse-5.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/hard-sp/cmse-5.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/hard-sp/cmse-7.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/hard-sp/cmse-7.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/hard-sp/cmse-8.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/hard-sp/cmse-8.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/hard/cmse-13.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/hard/cmse-13.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/hard/cmse-5.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/hard/cmse-5.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/hard/cmse-7.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/hard/cmse-7.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/hard/cmse-8.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/hard/cmse-8.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/soft/cmse-13.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/soft/cmse-13.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/soft/cmse-5.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/soft/cmse-5.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/soft/cmse-7.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/soft/cmse-7.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/soft/cmse-8.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/soft/cmse-8.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/softfp-sp/cmse-5.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/softfp-sp/cmse-5.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/softfp-sp/cmse-7.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/softfp-sp/cmse-7.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/softfp-sp/cmse-8.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/softfp-sp/cmse-8.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/softfp/cmse-13.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/softfp/cmse-13.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/softfp/cmse-5.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/softfp/cmse-5.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/softfp/cmse-7.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/softfp/cmse-7.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/softfp/cmse-8.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/softfp/cmse-8.c: This. Clean up
+ dg-skip-if directive for float ABI.
+ * gcc.target/arm/cmse/mainline/union-1.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/union-1.c: This.
+ * gcc.target/arm/cmse/mainline/union-2.c: Move into ...
+ * gcc.target/arm/cmse/mainline/8m/union-2.c: This.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-4.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-5.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-6.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-7.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-8.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-9.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/bitfield-and-union.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-13.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-5.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-7.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/hard-sp/cmse-8.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-13.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-5.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-7.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/hard/cmse-8.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-5.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-5.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-5.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/union-1.c: New file.
+ * gcc.target/arm/cmse/mainline/8_1m/union-2.c: New file.
+ * lib/target-supports.exp (check_effective_target_arm_cmse_clear_ok):
+ New procedure.
+
+2020-01-16 Mihail-Calin Ionescu <mihail.ionescu@arm.com>
+ Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * lib/target-supports.exp
+ (check_effective_target_arm_arch_v8_1m_main_ok): Define.
+ (add_options_for_arm_arch_v8_1m_main): Likewise.
+ (check_effective_target_arm_arch_v8_1m_main_multilib): Likewise.
+
+2020-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/bfdot-1.c: New.
+ * gcc.target/aarch64/advsimd-intrinsics/bfdot-2.c: New.
+ * gcc.target/aarch64/advsimd-intrinsics/bfdot-3.c: New.
+
+2020-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
+
+ * gcc.target/aarch64/advsimd-intrinsics/vdot-3-1.c: New test.
+ * gcc.target/aarch64/advsimd-intrinsics/vdot-3-2.c: New test.
+ * gcc.target/aarch64/advsimd-intrinsics/vdot-3-3.c: New test.
+ * gcc.target/aarch64/advsimd-intrinsics/vdot-3-4.c: New test.
+
+2020-01-16 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ PR tree-optimization/92429
+ * gcc.dg/vect/pr92429.c: New test.
+
+2020-01-16 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/93253
+ * fortran.dg/boz_7.f90: Updated dg-error.
+
+2020-01-15 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/91073
+ * g++.dg/concepts/pr91073-1.C: New.
+ * g++.dg/concepts/pr91073-2.C: Likewise.
+
+2020-01-15 Wilco Dijkstra <wdijkstr@arm.com>
+
+ * gcc.dg/pr90838.c: New test.
+ * gcc.dg/pr93231.c: New test.
+ * gcc.target/aarch64/pr90838.c: Use #define u 0.
+
+2020-01-15 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/93273
+ * g++.dg/torture/pr93273.C: New testcase.
+
+2020-01-15 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR tree-optimization/93247
+ * gcc.dg/vect/pr93247-1.c: New test.
+ * gcc.dg/vect/pr93247-2.c: Likewise.
+
+2020-01-15 Martin Sebor <msebor@redhat.com>
+
+ * gcc.dg/Wstringop-overflow-17.c: Tweak test to avoid unrelated
+ failures due the absence of loop unrolling.
+
+2020-01-15 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/93072
+ * gcc.dg/inline-42.c, gcc.dg/inline-43.c: New tests.
+
+2020-01-14 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/signal-6.c: New test.
+
+2020-01-14 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/dot-output.c: Add test coverage for a BB with
+ no statements.
+
+2020-01-14 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/58237
+ * gcc.dg/analyzer/file-paths-1.c: New test.
+
+2020-01-14 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/58237
+ * gcc.dg/analyzer/file-1.c (test_4): New.
+ * gcc.dg/analyzer/file-pr58237.c: New test.
+
+2020-01-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/93262
+ * gcc.c-torture/execute/builtins/pr93262-chk.c: New test.
+ * gcc.c-torture/execute/builtins/pr93262-chk-lib.c: New file.
+ * gcc.c-torture/execute/builtins/pr93262-chk.x: New file.
+
+ PR tree-optimization/93249
+ * gcc.c-torture/execute/pr93249.c: New test.
+
+2020-01-14 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/signal-5.c: New test.
+
+2020-01-14 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/data-model-1.c: Remove xfail.
+ * gcc.dg/analyzer/data-model-5b.c: Likewise.
+ * gcc.dg/analyzer/data-model-5c.c: Likewise.
+ * gcc.dg/analyzer/setjmp-3.c: Mark "foo" as pure.
+ * gcc.dg/analyzer/setjmp-4.c: Likewise.
+ * gcc.dg/analyzer/setjmp-6.c: Likewise.
+ * gcc.dg/analyzer/setjmp-7.c: Likewise.
+ * gcc.dg/analyzer/setjmp-7a.c: Likewise.
+ * gcc.dg/analyzer/setjmp-8.c: Likewise.
+ * gcc.dg/analyzer/setjmp-9.c: Likewise.
+ * gcc.dg/analyzer/unknown-fns.c: New test.
+
+2020-01-14 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/CVE-2005-1689-dedupe-issue.c: New test.
+
+2020-01-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR lto/91576
+ * g++.dg/lto/odr-8_1.C: Remove bogus initial lines.
+
+ PR target/93009
+ * gcc.target/i386/avx512vl-pr93009.c: New test.
+
+2020-01-14 Jan Hubicka <hubicka@ucw.cz>
+
+ PR lto/91576
+ * g++.dg/lto/odr-8_0.C: New testcase.
+ * g++.dg/lto/odr-8_1.C: New testcase.
+
+2020-01-14 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/analyzer/CVE-2005-1689-minimal.c: New test.
+ * gcc.dg/analyzer/abort.c: New test.
+ * gcc.dg/analyzer/alloca-leak.c: New test.
+ * gcc.dg/analyzer/analyzer-decls.h: New header.
+ * gcc.dg/analyzer/analyzer-verbosity-0.c: New test.
+ * gcc.dg/analyzer/analyzer-verbosity-1.c: New test.
+ * gcc.dg/analyzer/analyzer-verbosity-2.c: New test.
+ * gcc.dg/analyzer/analyzer.exp: New suite.
+ * gcc.dg/analyzer/attribute-nonnull.c: New test.
+ * gcc.dg/analyzer/call-summaries-1.c: New test.
+ * gcc.dg/analyzer/conditionals-2.c: New test.
+ * gcc.dg/analyzer/conditionals-3.c: New test.
+ * gcc.dg/analyzer/conditionals-notrans.c: New test.
+ * gcc.dg/analyzer/conditionals-trans.c: New test.
+ * gcc.dg/analyzer/data-model-1.c: New test.
+ * gcc.dg/analyzer/data-model-2.c: New test.
+ * gcc.dg/analyzer/data-model-3.c: New test.
+ * gcc.dg/analyzer/data-model-4.c: New test.
+ * gcc.dg/analyzer/data-model-5.c: New test.
+ * gcc.dg/analyzer/data-model-5b.c: New test.
+ * gcc.dg/analyzer/data-model-5c.c: New test.
+ * gcc.dg/analyzer/data-model-5d.c: New test.
+ * gcc.dg/analyzer/data-model-6.c: New test.
+ * gcc.dg/analyzer/data-model-7.c: New test.
+ * gcc.dg/analyzer/data-model-8.c: New test.
+ * gcc.dg/analyzer/data-model-9.c: New test.
+ * gcc.dg/analyzer/data-model-11.c: New test.
+ * gcc.dg/analyzer/data-model-12.c: New test.
+ * gcc.dg/analyzer/data-model-13.c: New test.
+ * gcc.dg/analyzer/data-model-14.c: New test.
+ * gcc.dg/analyzer/data-model-15.c: New test.
+ * gcc.dg/analyzer/data-model-16.c: New test.
+ * gcc.dg/analyzer/data-model-17.c: New test.
+ * gcc.dg/analyzer/data-model-18.c: New test.
+ * gcc.dg/analyzer/data-model-19.c: New test.
+ * gcc.dg/analyzer/data-model-path-1.c: New test.
+ * gcc.dg/analyzer/disabling.c: New test.
+ * gcc.dg/analyzer/dot-output.c: New test.
+ * gcc.dg/analyzer/double-free-lto-1-a.c: New test.
+ * gcc.dg/analyzer/double-free-lto-1-b.c: New test.
+ * gcc.dg/analyzer/double-free-lto-1.h: New header.
+ * gcc.dg/analyzer/equivalence.c: New test.
+ * gcc.dg/analyzer/explode-1.c: New test.
+ * gcc.dg/analyzer/explode-2.c: New test.
+ * gcc.dg/analyzer/factorial.c: New test.
+ * gcc.dg/analyzer/fibonacci.c: New test.
+ * gcc.dg/analyzer/fields.c: New test.
+ * gcc.dg/analyzer/file-1.c: New test.
+ * gcc.dg/analyzer/file-2.c: New test.
+ * gcc.dg/analyzer/function-ptr-1.c: New test.
+ * gcc.dg/analyzer/function-ptr-2.c: New test.
+ * gcc.dg/analyzer/function-ptr-3.c: New test.
+ * gcc.dg/analyzer/gzio-2.c: New test.
+ * gcc.dg/analyzer/gzio-3.c: New test.
+ * gcc.dg/analyzer/gzio-3a.c: New test.
+ * gcc.dg/analyzer/gzio.c: New test.
+ * gcc.dg/analyzer/infinite-recursion.c: New test.
+ * gcc.dg/analyzer/loop-2.c: New test.
+ * gcc.dg/analyzer/loop-2a.c: New test.
+ * gcc.dg/analyzer/loop-3.c: New test.
+ * gcc.dg/analyzer/loop-4.c: New test.
+ * gcc.dg/analyzer/loop.c: New test.
+ * gcc.dg/analyzer/malloc-1.c: New test.
+ * gcc.dg/analyzer/malloc-2.c: New test.
+ * gcc.dg/analyzer/malloc-3.c: New test.
+ * gcc.dg/analyzer/malloc-callbacks.c: New test.
+ * gcc.dg/analyzer/malloc-dce.c: New test.
+ * gcc.dg/analyzer/malloc-dedupe-1.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-1.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-10.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-11.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-12.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-13.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-2.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-3.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-4.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-5.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-6.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-7.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-8-double-free.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-8-lto-a.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-8-lto-b.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-8-lto-c.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-8-lto.h: New test.
+ * gcc.dg/analyzer/malloc-ipa-8-unchecked.c: New test.
+ * gcc.dg/analyzer/malloc-ipa-9.c: New test.
+ * gcc.dg/analyzer/malloc-macro-inline-events.c: New test.
+ * gcc.dg/analyzer/malloc-macro-separate-events.c: New test.
+ * gcc.dg/analyzer/malloc-macro.h: New header.
+ * gcc.dg/analyzer/malloc-many-paths-1.c: New test.
+ * gcc.dg/analyzer/malloc-many-paths-2.c: New test.
+ * gcc.dg/analyzer/malloc-many-paths-3.c: New test.
+ * gcc.dg/analyzer/malloc-paths-1.c: New test.
+ * gcc.dg/analyzer/malloc-paths-10.c: New test.
+ * gcc.dg/analyzer/malloc-paths-2.c: New test.
+ * gcc.dg/analyzer/malloc-paths-3.c: New test.
+ * gcc.dg/analyzer/malloc-paths-4.c: New test.
+ * gcc.dg/analyzer/malloc-paths-5.c: New test.
+ * gcc.dg/analyzer/malloc-paths-6.c: New test.
+ * gcc.dg/analyzer/malloc-paths-7.c: New test.
+ * gcc.dg/analyzer/malloc-paths-8.c: New test.
+ * gcc.dg/analyzer/malloc-paths-9.c: New test.
+ * gcc.dg/analyzer/malloc-vs-local-1a.c: New test.
+ * gcc.dg/analyzer/malloc-vs-local-1b.c: New test.
+ * gcc.dg/analyzer/malloc-vs-local-2.c: New test.
+ * gcc.dg/analyzer/malloc-vs-local-3.c: New test.
+ * gcc.dg/analyzer/malloc-vs-local-4.c: New test.
+ * gcc.dg/analyzer/operations.c: New test.
+ * gcc.dg/analyzer/params-2.c: New test.
+ * gcc.dg/analyzer/params.c: New test.
+ * gcc.dg/analyzer/paths-1.c: New test.
+ * gcc.dg/analyzer/paths-1a.c: New test.
+ * gcc.dg/analyzer/paths-2.c: New test.
+ * gcc.dg/analyzer/paths-3.c: New test.
+ * gcc.dg/analyzer/paths-4.c: New test.
+ * gcc.dg/analyzer/paths-5.c: New test.
+ * gcc.dg/analyzer/paths-6.c: New test.
+ * gcc.dg/analyzer/paths-7.c: New test.
+ * gcc.dg/analyzer/pattern-test-1.c: New test.
+ * gcc.dg/analyzer/pattern-test-2.c: New test.
+ * gcc.dg/analyzer/pointer-merging.c: New test.
+ * gcc.dg/analyzer/pr61861.c: New test.
+ * gcc.dg/analyzer/pragma-1.c: New test.
+ * gcc.dg/analyzer/scope-1.c: New test.
+ * gcc.dg/analyzer/sensitive-1.c: New test.
+ * gcc.dg/analyzer/setjmp-1.c: New test.
+ * gcc.dg/analyzer/setjmp-2.c: New test.
+ * gcc.dg/analyzer/setjmp-3.c: New test.
+ * gcc.dg/analyzer/setjmp-4.c: New test.
+ * gcc.dg/analyzer/setjmp-5.c: New test.
+ * gcc.dg/analyzer/setjmp-6.c: New test.
+ * gcc.dg/analyzer/setjmp-7.c: New test.
+ * gcc.dg/analyzer/setjmp-7a.c: New test.
+ * gcc.dg/analyzer/setjmp-8.c: New test.
+ * gcc.dg/analyzer/setjmp-9.c: New test.
+ * gcc.dg/analyzer/signal-1.c: New test.
+ * gcc.dg/analyzer/signal-2.c: New test.
+ * gcc.dg/analyzer/signal-3.c: New test.
+ * gcc.dg/analyzer/signal-4a.c: New test.
+ * gcc.dg/analyzer/signal-4b.c: New test.
+ * gcc.dg/analyzer/strcmp-1.c: New test.
+ * gcc.dg/analyzer/switch.c: New test.
+ * gcc.dg/analyzer/taint-1.c: New test.
+ * gcc.dg/analyzer/zlib-1.c: New test.
+ * gcc.dg/analyzer/zlib-2.c: New test.
+ * gcc.dg/analyzer/zlib-3.c: New test.
+ * gcc.dg/analyzer/zlib-4.c: New test.
+ * gcc.dg/analyzer/zlib-5.c: New test.
+ * gcc.dg/analyzer/zlib-6.c: New test.
+ * lib/gcc-defs.exp (dg-check-dot): New procedure.
+ * lib/target-supports.exp (check_dot_available): New procedure.
+ (check_effective_target_analyzer): New.
+ * lib/target-supports-dg.exp (dg-require-dot): New procedure.
+
+2020-01-14 Jason Merrill <jason@redhat.com>
+
+ * lib/prune.exp (prune_gcc_output): Adjust constexpr pattern.
+
+2020-01-14 Xiong Hu Luo <luoxhu@linux.ibm.com>
+
+ PR ipa/69678
+ * gcc.dg/tree-prof/indir-call-prof-topn.c: New testcase.
+ * gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c: New testcase.
+ * gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c: New testcase.
+ * gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c: New testcase.
+ * lib/scandump.exp: Dump executable file name.
+ * lib/scanwpaipa.exp: New scan-pgo-wap-ipa-dump.
+
+2020-01-13 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/plugin/diagnostic-test-paths-2.c: Remove unused dg-line
+ directive.
+
+2020-01-13 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/93241
+ * gcc.dg/c11-static-assert-10.c, gcc.dg/c99-const-expr-15.c: New
+ tests.
+
+2020-01-13 Martin Sebor <msebor@redhat.com>
+
+ PR tree-optimization/93213
+ * gcc.c-torture/execute/pr93213.c: New test.
+
+2020-01-10 Thomas Schwinge <thomas@codesourcery.com>
+
+ * c-c++-common/goacc/host_data-1.c: Extend.
+ * gfortran.dg/goacc/host_data-tree.f95: Likewise.
+
+2020-01-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/93210
+ * gcc.dg/pr93210.c: New test.
+ * g++.dg/opt/pr93210.C: New test.
+
+2020-01-10 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR inline-asm/93027
+ * gcc.target/i386/pr93027.c: Use the right PR number in the test.
+
+2020-01-10 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR inline-asm/93027
+ * gcc.target/i386/pr93207.c: Rename to pr93027.c.
+
+2020-01-10 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR inline-asm/93027
+ * gcc.target/i386/pr93207.c: Run it only for x86-64.
+
+2020-01-10 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc.dg/format/gcc_diag-10.c (diagnostic_event_id_t): New
+ typedef.
+ (test_diag): Add coverage of "%@".
+ * gcc.dg/plugin/diagnostic-path-format-default.c: New test.
+ * gcc.dg/plugin/diagnostic-path-format-inline-events-1.c: New test.
+ * gcc.dg/plugin/diagnostic-path-format-inline-events-2.c: New test.
+ * gcc.dg/plugin/diagnostic-path-format-inline-events-3.c: New test.
+ * gcc.dg/plugin/diagnostic-path-format-none.c: New test.
+ * gcc.dg/plugin/diagnostic-test-paths-1.c: New test.
+ * gcc.dg/plugin/diagnostic-test-paths-2.c: New test.
+ * gcc.dg/plugin/diagnostic-test-paths-3.c: New test.
+ * gcc.dg/plugin/diagnostic-test-paths-4.c: New test.
+ * gcc.dg/plugin/diagnostic_plugin_test_paths.c: New.
+ * gcc.dg/plugin/plugin.exp: Add the new plugin and test cases.
+
+2020-01-10 David Malcolm <dmalcolm@redhat.com>
+
+ * lib/gcc-dg.exp (cleanup-after-saved-dg-test): Reset global
+ nn_line_numbers_enabled.
+ * lib/multiline.exp (nn_line_numbers_enabled): New global.
+ (dg-enable-nn-line-numbers): New proc.
+ (maybe-handle-nn-line-numbers): New proc.
+ * lib/prune.exp (prune_gcc_output): Call maybe-handle-nn-line-numbers.
+
+2020-01-10 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR inline-asm/93027
+ * gcc.target/i386/pr93207.c: New test.
+
+2020-01-10 Wilco Dijkstra <wdijkstr@arm.com>
+
+ * testsuite/gcc.target/aarch64/pr90838.c: New test.
+
+2020-01-10 Stam Markianos-Wright <stam.markianos-wright@arm.com>
+
+ * g++.target/aarch64/bfloat_cpp_typecheck.C: New test.
+ * gcc.target/aarch64/bfloat16_scalar_typecheck.c: New test.
+ * gcc.target/aarch64/bfloat16_vector_typecheck_1.c: New test.
+ * gcc.target/aarch64/bfloat16_vector_typecheck_2.c: New test.
+
+2020-01-10 Stam Markianos-Wright <stam.markianos-wright@arm.com>
+
+ * g++.dg/abi/mangle-neon-aarch64.C: Add Bfloat SIMD types to test.
+ * g++.dg/ext/arm-bf16/bf16-mangle-aarch64-1.C: New test.
+ * gcc.target/aarch64/bfloat16_scalar_1.c: New test.
+ * gcc.target/aarch64/bfloat16_scalar_2.c: New test.
+ * gcc.target/aarch64/bfloat16_scalar_3.c: New test.
+ * gcc.target/aarch64/bfloat16_scalar_4.c: New test.
+ * gcc.target/aarch64/bfloat16_simd_1.c: New test.
+ * gcc.target/aarch64/bfloat16_simd_2.c: New test.
+ * gcc.target/aarch64/bfloat16_simd_3.c: New test.
+
+2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/struct_vect_1.c (N): Protect with #ifndef.
+ * gcc.target/aarch64/sve/pcs/return_1_128.c: New test.
+ * gcc.target/aarch64/sve/pcs/return_4_128.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_5_128.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/return_6_128.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/stack_clash_1_128.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/stack_clash_2_128.c: Likewise.
+ * gcc.target/aarch64/sve/single_5.c: Likewise.
+ * gcc.target/aarch64/sve/struct_vect_25.c: Likewise.
+ * gcc.target/aarch64/sve/struct_vect_26.c: Likewise.
+
+2020-01-10 Martin Sebor <msebor@redhat.com>
+
+ PR c/93132
+ * gcc.dg/attr-access-read-only-2.c: New test.
+
+2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/sel_1.c: Use SVE types for the arguments and
+ return values. Use check-function-bodies instead of scan-assembler.
+ * gcc.target/aarch64/sve/sel_2.c: Likewise
+ * gcc.target/aarch64/sve/sel_3.c: Likewise.
+
+2020-01-10 Martin Jambor <mjambor@suse.cz>
+
+ * gcc.dg/ipa/ipa-clone-3.c: Replace struct initializer with
+ piecemeal initialization.
+
+2020-01-10 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/index_1_run.c: Require aarch64_sve256_hw
+ rather than aarch64_sve_hw.
+
+2020-01-10 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/93216
+ * gcc.dg/optimize-bswaphi-1.c: Split previously added
+ case into a LE and BE variant.
+
+2020-01-09 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/65428
+ * gfortran.dg/zero_sized_11.f90: New test.
+ * gfortran.dg/zero_sized_12.f90: New test.
+
+2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
+
+ * g++.target/aarch64/sve/acle/general-c++/mul_lane_1.c: New test.
+ * g++.target/aarch64/sve2/acle: New directory.
+ * gcc.target/aarch64/pragma_cpp_predefs_3.c: New test.
+ * gcc.target/aarch64/sve/acle/asm/test_sve_acle.h (TEST_TYPE_CHANGE_Z)
+ (TEST_DUAL_ZD, TEST_TYPE_CHANGE_ZX, TEST_TBL2, TEST_TBL2_REV): New
+ macros.
+ * gcc.target/aarch64/sve/acle/general-c/binary_lane_1.c: Do not
+ expect an error saying that the function has no f32 form, but instead
+ expect an error about SVE2 being required if the current target
+ doesn't support SVE2.
+ * gcc.target/aarch64/sve/acle/general-c/ternary_lane_1.c: Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/ternary_lane_rotate_1.c Likewise.
+ * gcc.target/aarch64/sve/acle/general-c/binary_long_lane_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/binary_long_opt_n_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/binary_narrowb_opt_n_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/binary_narrowt_opt_n_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/binary_to_uint_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/binary_wide_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/binary_wide_opt_n_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/compare_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/compare_ptr_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/load_ext_gather_index_restricted_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/load_ext_gather_offset_restricted_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/load_ext_gather_offset_restricted_2.c,
+ * gcc.target/aarch64/sve/acle/general-c/load_ext_gather_offset_restricted_3.c,
+ * gcc.target/aarch64/sve/acle/general-c/load_ext_gather_offset_restricted_4.c,
+ * gcc.target/aarch64/sve/acle/general-c/load_gather_sv_restricted_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/load_gather_sv_restricted_2.c,
+ * gcc.target/aarch64/sve/acle/general-c/mul_lane_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/shift_left_imm_long_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/shift_left_imm_to_uint_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/shift_left_imm_to_uint_2.c,
+ * gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowb_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowb_to_uint_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowt_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowt_to_uint_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/store_scatter_index_restricted_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/store_scatter_offset_restricted_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/tbl_tuple_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/ternary_long_lane_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/ternary_long_opt_n_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/ternary_qq_lane_rotate_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/ternary_qq_rotate_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/ternary_shift_right_imm_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/ternary_uint_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/unary_convert_narrowt_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/unary_narrowb_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/unary_narrowb_to_uint_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/unary_narrowt_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/unary_narrowt_to_uint_1.c,
+ * gcc.target/aarch64/sve/acle/general-c/unary_to_int_1.c: New tests.
+ * gcc.target/aarch64/sve2/bcax_1.c: Likewise.
+ * gcc.target/aarch64/sve2/acle: New directory.
+
+2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general-c/unary_count_1.c: Rename to...
+ * gcc.target/aarch64/sve/acle/general-c/unary_to_uint_1.c: ...this.
+ * gcc.target/aarch64/sve/acle/general-c/unary_count_2.c: Rename to...
+ * gcc.target/aarch64/sve/acle/general-c/unary_to_uint_2.c: ...this.
+ * gcc.target/aarch64/sve/acle/general-c/unary_count_3.c: Rename to...
+ * gcc.target/aarch64/sve/acle/general-c/unary_to_uint_3.c: ...this.
+
+2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/nrv_1.c: New test.
+
+2020-01-09 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/pcs/gnu_vectors_1.c: New test.
+ * gcc.target/aarch64/sve/pcs/gnu_vectors_2.c: Likewise.
+
+2020-01-09 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/84135
+ * gfortran.dg/coarray/codimension_3.f90: New.
+
+2020-01-09 Martin Sebor <msebor@redhat.com>
+
+ PR middle-end/93200
+ * gcc.dg/Wstringop-overflow-30.c: New test.
+
+2020-01-09 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/93054
+ * gcc.dg/pr93054.c: New testcase.
+
+2020-01-09 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/93040
+ * gcc.dg/optimize-bswaphi-1.c: Amend.
+ * gcc.dg/optimize-bswapsi-2.c: Likewise.
+
+2020-01-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR inline-asm/93202
+ * gcc.target/riscv/pr93202.c: New test.
+
+ PR target/93141
+ * gcc.target/i386/pr93141-1.c: Add tests with constants that have MSB
+ of the low half of the constant set.
+ * gcc.target/i386/pr93141-2.c: New test.
+
+2020-01-08 Jeff Law <law@redhat.com>
+
+ * gcc.dg/Wstringop-overflow-27.c: Make testnames unique.
+
+2020-01-08 Joel Brobecker <brobecker@adacore.com>
+ Olivier Hainque <hainque@adacore.com>
+
+ * g++.target/aarch64/sve/tls_2.C: Add missing
+ { dg-require-effective-target fpic } directive.
+ * gcc.target/aarch64/noplt_2.c: Likewise.
+ * gcc.target/aarch64/noplt_3.c: Likewise.
+ * gcc.target/aarch64/pic-constantpool1.c: Likewise.
+ * gcc.target/aarch64/pic-small.c: Likewise.
+ * gcc.target/aarch64/pic-symrefplus.c: Likewise.
+ * gcc.target/aarch64/pr66912.c: Likewise.
+ * gcc.target/aarch64/sve/tls_1.c: Likewise.
+ * gcc.target/aarch64/sve/tls_preserve_1.c: Likewise.
+ * gcc.target/aarch64/sve/tls_preserve_2.c: Likewise.
+ * gcc.target/aarch64/sve/tls_preserve_3.c: Likewise.
+ * gcc.target/aarch64/tlsie_tiny_1.c: Likewise.
+ * gcc.target/aarch64/tlsle12_1.c: Likewise.
+ * gcc.target/aarch64/tlsle12_tiny_1.c: Likewise.
+ * gcc.target/aarch64/tlsle24_1.c: Likewise.
+ * gcc.target/aarch64/tlsle24_tiny_1.c: Likewise.
+ * gcc.target/aarch64/tlsle32_1.c: Likewise.
+ * gcc.target/aarch64/tlsle_sizeadj_small_1.c: Likewise.
+ * gcc.target/aarch64/tlsle_sizeadj_tiny_1.c: Likewise.
+
+2020-01-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93187
+ * g++.dg/opt/pr93187.C: New test.
+
+ PR target/93174
+ * gcc.c-torture/compile/pr93174.c: New test.
+
+2020-01-08 Olivier Hainque <hainque@adacore.com>
+ Alexandre Oliva <oliva@adacore.com>
+
+ * gcc.target/aarch64/stack-check-alloca.h: Remove
+ #include alloca.h. #define alloca __builtin_alloca
+ instead.
+ * gcc.target/aarch64/stack-check-alloca-1.c: Add
+ { dg-require-effective-target alloca }.
+ * gcc.target/aarch64/stack-check-alloca-2.c: Likewise.
+ * gcc.target/aarch64/stack-check-alloca-3.c: Likewise.
+ * gcc.target/aarch64/stack-check-alloca-4.c: Likewise.
+ * gcc.target/aarch64/stack-check-alloca-5.c: Likewise.
+ * gcc.target/aarch64/stack-check-alloca-6.c: Likewise.
+ * gcc.target/aarch64/stack-check-alloca-7.c: Likewise.
+ * gcc.target/aarch64/stack-check-alloca-8.c: Likewise.
+ * gcc.target/aarch64/stack-check-alloca-9.c: Likewise.
+ * gcc.target/aarch64/stack-check-alloca-10.c: Likewise.
+
+2020-01-08 Martin Liska <mliska@suse.cz>
+
+ * gcc.dg/ipa/ipa-icf-1.c: Update expected scanned output.
+ * gcc.dg/ipa/ipa-icf-10.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-11.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-12.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-13.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-16.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-18.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-2.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-20.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-21.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-23.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-25.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-26.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-27.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-3.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-35.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-36.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-37.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-38.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-5.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-7.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-8.c: Likewise.
+ * gcc.dg/ipa/ipa-icf-merge-1.c: Likewise.
+ * gcc.dg/ipa/pr64307.c: Likewise.
+ * gcc.dg/ipa/pr90555.c: Likewise.
+ * gcc.dg/ipa/propmalloc-1.c: Likewise.
+ * gcc.dg/ipa/propmalloc-2.c: Likewise.
+ * gcc.dg/ipa/propmalloc-3.c: Likewise.
+
+2020-01-08 Richard Biener <rguenther@suse.de>
+
+ PR testsuite/92997
+
+2020-01-08 Richard Earnshaw <rearnsha@arm.com>
+
+ PR target/93188
+ * gcc.target/arm/multilib.exp: Add new tests for rm-profile only.
+
+2020-01-08 Feng Xue <fxue@os.amperecomputing.com>
+
+ PR ipa/93084
+ * gcc.dg/ipa/ipa-clone-3.c: New test.
+
+2020-01-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * g++.old-deja/g++.bugs/900208_03.C: Check locations too.
+ * g++.old-deja/g++.bugs/900519_06.C: Likewise.
+
+2020-01-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
+
+ * gcc.dg/vect/vect-epilogues.c: XFAIL for arm big endian.
+
+2020-01-07 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/pcs/asm_4.c: New test.
+
+2020-01-07 Richard Sandiford <richard.sandiford@arm.com>
+
+ * g++.target/aarch64/sve/acle/general-c++/mangle_5.C: New test.
+ * gcc.target/aarch64/sve/pcs/asm_1.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/asm_2.c: Likewise.
+ * gcc.target/aarch64/sve/pcs/asm_3.c: Likewise.
+
+2020-01-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/93156
+ * gcc.dg/tree-ssa/pr93156.c: New test.
+
+ PR tree-optimization/93118
+ * gcc.dg/tree-ssa/pr93118.c: New test.
+
+2020-01-07 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/92860
+ * gcc.dg/pr92860-2.c: New test.
+
+2020-01-07 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/92860
+ * gcc.dg/pr92860.c: New test.
+
+2020-01-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/91369
+ * g++.dg/cpp1y/constexpr-new.C: Expect an error explaining why
+ static_assert failed for C++2a.
+ * g++.dg/cpp2a/constexpr-new9.C: New test.
+
+2020-01-06 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/asrdiv_1.c: Remove trailing %s.
+ * gcc.target/aarch64/sve/asrdiv_2.c: New test.
+ * gcc.target/aarch64/sve/asrdiv_3.c: Likewise.
+
+2020-01-06 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.dg/vect/vect-cond-arith-8.c: New test.
+ * gcc.target/aarch64/sve/cond_fmul_5.c: Likewise.
+
+2020-01-06 Nathan Sidwell <nathan@acm.org>
+
+ PR c++/79592
+ * g++.dg/ubsan/vptr-4.C: Add expected error.
+
+2020-01-06 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/cpy_1.c: New test.
+
+2020-01-05 Andrew Pinski <apinski@marvell.com>
+
+ * gcc.c-torture/compile/20200105-1.c: New testcase.
+ * gcc.c-torture/compile/20200105-2.c: New testcase.
+ * gcc.c-torture/compile/20200105-3.c: New testcase.
+
+2020-01-05 Iain Sandoe <iain@sandoe.co.uk>
+
+ * gcc.dg/darwin-version-1.c: Adjust test to use different
+ options for Darwin4-9 and Darwin10+.
+
+2020-01-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93141
+ * gcc.target/i386/pr93141-1.c: New test.
+ * gcc.dg/pr67089-6.c: Expect 16 ADD_OVERFLOW calls even on ia32.
+
+ PR c++/93138
+ * g++.dg/warn/Wredundant-tags-2.C: New test.
+
+ PR c++/93046
+ * g++.dg/ext/cond4.C: New test.
+
+2020-01-04 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/91640
+ * gfortran.dg/contiguous_10.f90: New.
+
+2020-01-03 Iain Sandoe <iain@sandoe.co.uk>
+
+ * gcc.target/i386/avx512bw-pr92686-vpcmp-intelasm-1.c: Require
+ effective target masm_intel.
+ * gcc.target/i386/avx512vl-pr92686-vpcmp-intelasm-1.c: Likewise.
+
+2020-01-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/93089
+ * gcc.target/i386/pr93089-2.c: New test.
+ * gcc.target/i386/pr93089-3.c: New test.
+
+ PR target/93089
+ * gcc.target/i386/pr93089-1.c: New test.
+
+ PR target/93110
+ * gcc.dg/torture/pr93110.c: New test.
+
+ PR rtl-optimization/93088
+ * gcc.target/i386/pr93088.c: New test.
+
+2020-01-03 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/92994
+ * gfortran.dg/associate_50.f90: Update dg-error.
+ * gfortran.dg/associate_51.f90: New.
+
+2020-01-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/68020
+ * gfortran.dg/impled_shape_5.f90: Use dg-do compile rather than dg-do
+ run.
+
+2020-01-02 Andrew Pinski <apinski@marvell.com>
+
+ * gcc.c-torture/execute/bitfld-8.c: New testcase.
+ * gcc.c-torture/execute/bitfld-9.c: New testcase.
+
+2020-01-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/90677
+ * c-c++-common/pr90677-2.c: New test.
+
+2020-01-02 Dennis Zhang <dennis.zhang@arm.com>
+
+ * gcc.target/arm/multilib.exp: Add combination tests for armv8.6-a.
+
+2020-01-02 Tobias Burnus <tobias@codesourcery.com>
+
+ PR fortran/68020
+ * gfortran.dg/implied_shape_4.f90: New.
+ * gfortran.dg/implied_shape_5.f90: New.
+
+2020-01-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR ipa/93087
+ * c-c++-common/cold-1.c: New test.
+
+2020-01-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libfortran/90374
+ * gfortran.dg/fmt_zero_width.f90: Update test case.
+
+2020-01-01 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/93113
+ * gfortran.dg/dependency_58.f90: New test.
+
+2020-01-01 Jakub Jelinek <jakub@redhat.com>
+
+ Update copyright years.
+
+ PR tree-optimization/93098
+ * gcc.c-torture/compile/pr93098.c: New test.
+
+Copyright (C) 2020 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/gcc/testsuite/README b/gcc/testsuite/README
index 30f3360..744ca2a 100644
--- a/gcc/testsuite/README
+++ b/gcc/testsuite/README
@@ -31,7 +31,7 @@ STRUCTURE OF THE G++ TESTSUITE
g++.gb Tests by Gerald Baumgartner
g++.jason Tests by Jason Merill
g++.jeff Tests by Jeffrey A Law
- g++.martin Tests by Martin v. Löwis
+ g++.martin Tests by Martin v. Löwis
g++.mike Tests by Mike Stump
g++.niklas Tests by Niklas Hallqvist
g++.ns Tests for namespaces
@@ -61,7 +61,7 @@ where
testsuite directory.
-Copyright (C) 1998-2020 Free Software Foundation, Inc.
+Copyright (C) 1998-2021 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gcc/testsuite/README.compat b/gcc/testsuite/README.compat
index 04e1eb6..95b7462 100644
--- a/gcc/testsuite/README.compat
+++ b/gcc/testsuite/README.compat
@@ -85,7 +85,7 @@ Janis Johnson, <janis187@us.ibm.com>
October 2002
-Copyright (C) 2002-2020 Free Software Foundation, Inc.
+Copyright (C) 2002-2021 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gcc/testsuite/README.gcc b/gcc/testsuite/README.gcc
index d545df1..f7d7299 100644
--- a/gcc/testsuite/README.gcc
+++ b/gcc/testsuite/README.gcc
@@ -80,7 +80,7 @@ For execution tests, put them in execute.
If a test does not fit into the torture framework, use the dg framework.
-Copyright (C) 1997-2020 Free Software Foundation, Inc.
+Copyright (C) 1997-2021 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gcc/testsuite/brig.dg/dg.exp b/gcc/testsuite/brig.dg/dg.exp
index 797eadb..6441092 100644
--- a/gcc/testsuite/brig.dg/dg.exp
+++ b/gcc/testsuite/brig.dg/dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/c-c++-common/Wfree-nonheap-object-2.c b/gcc/testsuite/c-c++-common/Wfree-nonheap-object-2.c
new file mode 100644
index 0000000..0aedf1b
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/Wfree-nonheap-object-2.c
@@ -0,0 +1,52 @@
+/* PR middle-end/98166: bogus -Wmismatched-dealloc on user-defined allocator
+ and inlining
+ Verify that the allocator can be declared inline without a warning when
+ it's associated with a standard deallocator. Associating an inline
+ deallocator with an allocator would cause false positives when the former
+ calls a deallocation function the allocator isn't associated with, so
+ that triggers a warning on declaration.
+ { dg-do compile }
+ { dg-options "-O2 -Wall" } */
+
+__attribute__ ((malloc (__builtin_free)))
+inline int*
+alloc_int (int n)
+{
+ return (int*)__builtin_malloc (n + sizeof (int));
+}
+
+void test_nowarn_int (int n)
+{
+ {
+ int *p = alloc_int (n);
+ __builtin_free (p);
+ }
+
+ {
+ int *p = alloc_int (n);
+ __builtin_free (p + 1); // { dg-warning "\\\[-Wfree-nonheap-object" }
+ }
+}
+
+
+inline void
+dealloc_long (long *p)
+{
+ __builtin_free (p); // { dg-warning "'__builtin_free|void __builtin_free\\(void\\*\\)' called on pointer 'p|<unknown>' with nonzero offset" }
+}
+
+__attribute__ ((malloc (dealloc_long)))
+long* alloc_long (int); // { dg-warning "'malloc \\\(dealloc_long\\\)' attribute ignored with deallocation functions declared 'inline'" }
+
+void test_nowarn_long (int n)
+{
+ {
+ long *p = alloc_long (n);
+ dealloc_long (p);
+ }
+
+ {
+ long *p = alloc_long (n);
+ dealloc_long (p + 1);
+ }
+}
diff --git a/gcc/testsuite/c-c++-common/Wfree-nonheap-object-3.c b/gcc/testsuite/c-c++-common/Wfree-nonheap-object-3.c
new file mode 100644
index 0000000..41a5b50
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/Wfree-nonheap-object-3.c
@@ -0,0 +1,70 @@
+/* PR middle-end/98166: bogus -Wmismatched-dealloc on user-defined allocator
+ and inlining
+ Verify that without inlining, both the allocator and the deallocator
+ can be declared inline without a warning and that mismatched calls are
+ detected, but that declaring them always_inline does trigger a warning.
+ { dg-do compile }
+ { dg-options "-Wall" } */
+
+__attribute__ ((malloc (__builtin_free)))
+inline int*
+alloc_int (int n)
+{
+ return (int*)__builtin_malloc (n + sizeof (int));
+}
+
+void test_nowarn_int (int n)
+{
+ {
+ int *p = alloc_int (n);
+ __builtin_free (p);
+ }
+
+ {
+ int *p = alloc_int (n);
+ __builtin_free (p + 1); // { dg-warning "'__builtin_free|void __builtin_free\\(void\\*\\)' called on pointer 'p|<unknown>' with nonzero offset" }
+ }
+}
+
+
+inline void
+dealloc_long (long *p) { __builtin_free (p); }
+
+__attribute__ ((malloc (dealloc_long)))
+long* alloc_long (int);
+
+void test_nowarn_long (int n)
+{
+ {
+ long *p = alloc_long (n);
+ dealloc_long (p);
+ }
+
+ {
+ long *p = alloc_long (n);
+ dealloc_long (p + 1); // { dg-warning "'dealloc_long' called on pointer 'p|<unknown>' with nonzero offset" }
+ }
+}
+
+
+inline __attribute__ ((always_inline)) void
+dealloc_float (float *p) // { dg-message "deallocation function declared here" }
+{
+ __builtin_free (p); // { dg-warning "'__builtin_free|void __builtin_free\\(void\\*\\)' called on pointer 'p|<unknown>' with nonzero offset" }
+}
+
+__attribute__ ((malloc (dealloc_float)))
+float* alloc_float (int); // { dg-warning "'malloc \\(dealloc_float\\)' attribute ignored with deallocation functions declared 'inline'" }
+
+void test_nowarn_float (int n)
+{
+ {
+ float *p = alloc_float (n);
+ dealloc_float (p);
+ }
+
+ {
+ float *p = alloc_float (n);
+ dealloc_float (p + 2);
+ }
+}
diff --git a/gcc/testsuite/c-c++-common/Wfree-nonheap-object.c b/gcc/testsuite/c-c++-common/Wfree-nonheap-object.c
new file mode 100644
index 0000000..dfbb296
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/Wfree-nonheap-object.c
@@ -0,0 +1,50 @@
+/* Verify that built-in forms of functions can be used interchangeably
+ with their ordinary (library) forms in attribute malloc.
+ { dg-do compile }
+ { dg-options "-Wall" } */
+
+char* f (void) __attribute__ ((malloc (__builtin_free)));
+
+#if __cplusplus
+extern "C" {
+#endif
+
+void free (void*);
+
+#if __cplusplus
+}
+#endif
+
+char* g (void) __attribute__ ((malloc (free)));
+
+
+void test_nowarm (void)
+{
+ char *p = f ();
+ free (p);
+
+ p = g ();
+ free (p);
+
+ p = f ();
+ __builtin_free (p);
+
+ p = g ();
+ __builtin_free (p);
+}
+
+
+void test_warn (void)
+{
+ char *p = f ();
+ free (p + 1); // { dg-warning "'free|void free\\(void\\*\\)' called on pointer 'p|<unknown>' with nonzero offset" }
+
+ p = g ();
+ free (p + 2); // { dg-warning "'free|void free\\(void\\*\\)' called on pointer 'p|<unknown>' with nonzero offset" }
+
+ p = f ();
+ __builtin_free (p + 3); // { dg-warning "'__builtin_free|void __builtin_free\\(void\\*\\)' called on pointer 'p|<unknown>' with nonzero offset" }
+
+ p = g ();
+ __builtin_free (p + 4); // { dg-warning "'__builtin_free|void __builtin_free\\(void\\*\\)' called on pointer 'p|<unknown>' with nonzero offset" }
+}
diff --git a/gcc/testsuite/c-c++-common/Wmismatched-dealloc.c b/gcc/testsuite/c-c++-common/Wmismatched-dealloc.c
new file mode 100644
index 0000000..27af2c2
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/Wmismatched-dealloc.c
@@ -0,0 +1,67 @@
+/* PR middle-end/98166: bogus -Wmismatched-dealloc on user-defined allocator
+ and inlining
+ { dg-do compile }
+ { dg-options "-O2 -Wall" } */
+
+
+void dealloc_shrt (short *p)
+{
+ /* A positive offset would be diagnosed but a negative one must
+ not be. */
+ __builtin_free (p - 1); // { dg-bogus "-Wmismatched-dealloc" }
+}
+
+__attribute__ ((malloc (dealloc_shrt)))
+short* alloc_shrt (int n) /* { return malloc (n) + 1; } */;
+
+void test_nowarn_shrt (int n)
+{
+ short *p = alloc_shrt (n);
+ dealloc_shrt (p);
+}
+
+
+void dealloc_int (int *p) /* { free (p - 1); } */;
+
+__attribute__ ((malloc (dealloc_int, 1)))
+int* alloc_int (int n)
+{
+ return (int*)__builtin_malloc (n) + 1;
+}
+
+void test_nowarn_int (int n)
+{
+ int *p = alloc_int (n);
+ dealloc_int (p); // { dg-bogus "-Wmismatched-dealloc" }
+}
+
+
+void dealloc_long (int, long *p) /* { free (p - 2); } */;
+
+__attribute__ ((malloc (dealloc_long, 2)))
+inline long*
+alloc_long (int n) { // { dg-warning "'malloc \\(\[^\n\r\]*dealloc_long\[^\n\r\]*\\)' attribute ignored on functions declared 'inline'" }
+ return (long*)__builtin_malloc (n) + 2;
+}
+
+void test_nowarn_long (int n)
+{
+ long *p = alloc_long (n);
+ dealloc_long (0, p); // { dg-bogus "\\\[-Wmismatched-dealloc" }
+}
+
+
+inline void
+dealloc_float (int, int, float *p) // { dg-message "deallocation function declared here" }
+{
+ __builtin_free (p - 3);
+}
+
+__attribute__ ((malloc (dealloc_float, 3)))
+float* alloc_float (int n); // { dg-warning "'malloc \\(\[^\n\r\]*dealloc_float\[^\n\r\]*\\)' attribute ignored with deallocation functions declared 'inline'" }
+
+void test_nowarn_float (int n)
+{
+ float *p = alloc_float (n);
+ dealloc_float (0, 1, p); // { dg-bogus "\\\[-Wmismatched-dealloc" }
+}
diff --git a/gcc/testsuite/c-c++-common/asan/pr98204.c b/gcc/testsuite/c-c++-common/asan/pr98204.c
new file mode 100644
index 0000000..7532646
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/asan/pr98204.c
@@ -0,0 +1,6 @@
+/* PR sanitizer/98204 */
+/* { dg-options "-fsanitize=address,pointer-subtract,pointer-compare" } */
+
+struct{int c;}v;
+static long i=((char*)&(v.c)-(char*)&v);
+static long i2=((char*)&(v.c)<(char*)&v);
diff --git a/gcc/testsuite/c-c++-common/attr-used-5.c b/gcc/testsuite/c-c++-common/attr-used-5.c
new file mode 100644
index 0000000..5b49241
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/attr-used-5.c
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-skip-if "non-ELF target" { *-*-darwin* } } */
+/* { dg-options "-Wall -O2" } */
+
+struct dtv_slotinfo_list
+{
+ struct dtv_slotinfo_list *next;
+};
+
+extern struct dtv_slotinfo_list *list;
+
+static int __attribute__ ((section ("__libc_freeres_fn")))
+free_slotinfo (struct dtv_slotinfo_list **elemp)
+/* { dg-warning "'.*' without 'used' attribute and '.*' with 'used' attribute are placed in a section with the same name" "" { target R_flag_in_section } .-1 } */
+{
+ if (!free_slotinfo (&(*elemp)->next))
+ return 0;
+ return 1;
+}
+
+__attribute__ ((used, section ("__libc_freeres_fn")))
+static void free_mem (void)
+{
+ free_slotinfo (&list);
+}
+
+/* { dg-final { scan-assembler "__libc_freeres_fn,\"ax\"" { target R_flag_in_section } } } */
+/* { dg-final { scan-assembler "__libc_freeres_fn,\"axR\"" { target R_flag_in_section } } } */
diff --git a/gcc/testsuite/c-c++-common/attr-used-6.c b/gcc/testsuite/c-c++-common/attr-used-6.c
new file mode 100644
index 0000000..3cf288d
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/attr-used-6.c
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-skip-if "non-ELF target" { *-*-darwin* } } */
+/* { dg-options "-Wall -O2" } */
+
+struct dtv_slotinfo_list
+{
+ struct dtv_slotinfo_list *next;
+};
+
+extern struct dtv_slotinfo_list *list;
+
+static int __attribute__ ((used, section ("__libc_freeres_fn")))
+free_slotinfo (struct dtv_slotinfo_list **elemp)
+{
+ if (!free_slotinfo (&(*elemp)->next))
+ return 0;
+ return 1;
+}
+
+__attribute__ ((section ("__libc_freeres_fn")))
+void free_mem (void)
+/* { dg-warning "'.*' without 'used' attribute and '.*' with 'used' attribute are placed in a section with the same name" "" { target R_flag_in_section } .-1 } */
+{
+ free_slotinfo (&list);
+}
+
+/* { dg-final { scan-assembler "__libc_freeres_fn,\"ax\"" { target R_flag_in_section } } } */
+/* { dg-final { scan-assembler "__libc_freeres_fn,\"axR\"" { target R_flag_in_section } } } */
diff --git a/gcc/testsuite/c-c++-common/attr-used-7.c b/gcc/testsuite/c-c++-common/attr-used-7.c
new file mode 100644
index 0000000..1721a8a
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/attr-used-7.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-skip-if "non-ELF target" { *-*-darwin* } } */
+/* { dg-options "-Wall -O2" } */
+
+int __attribute__((used,section(".data.foo"))) foo2 = 2;
+int __attribute__((section(".data.foo"))) foo1 = 1;
+/* { dg-warning "'.*' without 'used' attribute and '.*' with 'used' attribute are placed in a section with the same name" "" { target R_flag_in_section } .-1 } */
+
+/* { dg-final { scan-assembler ".data.foo,\"aw\"" { target R_flag_in_section } } } */
+/* { dg-final { scan-assembler ".data.foo,\"awR\"" { target R_flag_in_section } } } */
diff --git a/gcc/testsuite/c-c++-common/attr-used-8.c b/gcc/testsuite/c-c++-common/attr-used-8.c
new file mode 100644
index 0000000..20662ca
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/attr-used-8.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-skip-if "non-ELF target" { *-*-darwin* } } */
+/* { dg-options "-Wall -O2" } */
+
+int __attribute__((section(".data.foo"))) foo1 = 1;
+/* { dg-warning "'.*' without 'used' attribute and '.*' with 'used' attribute are placed in a section with the same name" "" { target R_flag_in_section } .-1 } */
+int __attribute__((used,section(".data.foo"))) foo2 = 2;
+
+/* { dg-final { scan-assembler ".data.foo,\"aw\"" { target R_flag_in_section } } } */
+/* { dg-final { scan-assembler ".data.foo,\"awR\"" { target R_flag_in_section } } } */
diff --git a/gcc/testsuite/c-c++-common/attr-used-9.c b/gcc/testsuite/c-c++-common/attr-used-9.c
new file mode 100644
index 0000000..5847b05
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/attr-used-9.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-skip-if "non-ELF target" { *-*-darwin* } } */
+/* { dg-options "-Wall -O2" } */
+
+struct dtv_slotinfo_list
+{
+ struct dtv_slotinfo_list *next;
+};
+
+extern struct dtv_slotinfo_list *list;
+
+static int __attribute__ ((used, section ("__libc_freeres_fn")))
+free_slotinfo (struct dtv_slotinfo_list **elemp)
+{
+ if (!free_slotinfo (&(*elemp)->next))
+ return 0;
+ return 1;
+}
+
+__attribute__ ((section ("__libc_freeres_fn")))
+static void free_mem (void)
+/* { dg-warning "defined but not used" "" { target *-*-* } .-1 } */
+{
+ free_slotinfo (&list);
+}
+
+/* { dg-final { scan-assembler-not "__libc_freeres_fn\n" } } */
+/* { dg-final { scan-assembler-not "__libc_freeres_fn,\"ax\"" { target R_flag_in_section } } } */
+/* { dg-final { scan-assembler "__libc_freeres_fn,\"axR\"" { target R_flag_in_section } } } */
diff --git a/gcc/testsuite/c-c++-common/goacc/pr79428-1.c b/gcc/testsuite/c-c++-common/goacc/pr79428-1.c
index 68dea5b..a8047e9 100644
--- a/gcc/testsuite/c-c++-common/goacc/pr79428-1.c
+++ b/gcc/testsuite/c-c++-common/goacc/pr79428-1.c
@@ -4,5 +4,5 @@ void
foo ()
{
#pragma acc routine /* { dg-error ".#pragma acc routine. must be at file scope" } */
-// { dg-error "expected" "end" { target c } .-1 }
-// { dg-error "-:expected" "end" { target c++ } .+1 }
+// { dg-error "expected" "end" { target *-*-* } .-1 }
+
diff --git a/gcc/testsuite/c-c++-common/gomp/allocate-5.c b/gcc/testsuite/c-c++-common/gomp/allocate-5.c
new file mode 100644
index 0000000..34dcb48
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/gomp/allocate-5.c
@@ -0,0 +1,41 @@
+typedef enum omp_allocator_handle_t
+#if __cplusplus >= 201103L
+: __UINTPTR_TYPE__
+#endif
+{
+ omp_null_allocator = 0,
+ omp_default_mem_alloc = 1,
+ omp_large_cap_mem_alloc = 2,
+ omp_const_mem_alloc = 3,
+ omp_high_bw_mem_alloc = 4,
+ omp_low_lat_mem_alloc = 5,
+ omp_cgroup_mem_alloc = 6,
+ omp_pteam_mem_alloc = 7,
+ omp_thread_mem_alloc = 8,
+ __omp_allocator_handle_t_max__ = __UINTPTR_MAX__
+} omp_allocator_handle_t;
+
+void
+foo ()
+{
+ int a, b;
+ omp_allocator_handle_t my_allocator;
+#pragma omp allocate (a) /* { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" } */
+#pragma omp allocate (b) allocator(my_allocator) /* { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" } */
+}
+
+void
+bar ()
+{
+ int a, b;
+ omp_allocator_handle_t my_allocator;
+#pragma omp allocate /* { dg-error "expected '\\(' before end of line" } */
+ /* { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target *-*-* } .-1 } */
+#pragma omp allocate allocator(my_allocator) /* { dg-error "expected '\\(' before 'allocator'" } */
+ /* { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target *-*-* } .-1 } */
+#pragma omp allocate(a) foo(my_allocator) /* { dg-error "expected 'allocator'" } */
+ /* { dg-error "expected end of line before '\\(' token" "" { target *-*-* } .-1 } */
+ /* { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target *-*-* } .-2 } */
+#pragma omp allocate(a) allocator(b) /* { dg-error "'allocator' clause allocator expression has type 'int' rather than 'omp_allocator_handle_t'" "todo: cp/semantics.c" { xfail c++ } } */
+ /* { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target *-*-* } .-1 } */
+}
diff --git a/gcc/testsuite/c-c++-common/gomp/doacross-4.c b/gcc/testsuite/c-c++-common/gomp/doacross-4.c
new file mode 100644
index 0000000..a1182e3
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/gomp/doacross-4.c
@@ -0,0 +1,30 @@
+/* PR middle-end/98205 */
+
+void baz (int) __attribute__((noreturn));
+
+void
+foo (int n)
+{
+ int i;
+ #pragma omp for ordered(1)
+ for (i = 0; i < 8; i += n)
+ {
+ #pragma omp ordered depend(source)
+ #pragma omp ordered depend(sink: i - 2)
+ baz (i);
+ }
+}
+
+void
+bar (int n)
+{
+ int i, j;
+ #pragma omp for collapse(2) ordered(2)
+ for (i = 0; i < 8; i += n)
+ for (j = 0; j < 8; j += n)
+ {
+ #pragma omp ordered depend(source)
+ #pragma omp ordered depend(sink: i - 2, j + 2)
+ baz (i);
+ }
+}
diff --git a/gcc/testsuite/c-c++-common/gomp/pr79428-2.c b/gcc/testsuite/c-c++-common/gomp/pr79428-2.c
index 0914963..6d162a2 100644
--- a/gcc/testsuite/c-c++-common/gomp/pr79428-2.c
+++ b/gcc/testsuite/c-c++-common/gomp/pr79428-2.c
@@ -5,5 +5,4 @@ foo ()
{
#pragma omp sections
#pragma omp section /* { dg-error "'#pragma omp section' may only be used in '#pragma omp sections' construct|not allowed" } */
-// { dg-error "expected" "end" { target c } .-1 }
-// { dg-error "-:expected" "end" { target c++ } .+1 }
+// { dg-error "expected" "end" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/c-c++-common/gomp/pr98187.c b/gcc/testsuite/c-c++-common/gomp/pr98187.c
new file mode 100644
index 0000000..fc252fd
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/gomp/pr98187.c
@@ -0,0 +1,109 @@
+/* PR c++/98187 */
+/* { dg-do compile } */
+/* { dg-options "-fopenmp-simd -O2 -fdump-tree-gimple" } */
+/* { dg-final { scan-tree-dump-times "#pragma omp simd" 17 "gimple" } } */
+
+void
+foo (int *p)
+{
+ int i;
+ #pragma omp distribute parallel for
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp distribute parallel for simd
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp distribute simd
+ for (i = 0; i < 64; i++)
+ p[i]++;
+}
+
+void
+bar (int *p)
+{
+ int i;
+ #pragma omp for simd
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp master taskloop
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp master taskloop simd
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp parallel for
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp parallel for simd
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp parallel loop
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp parallel master
+ p[0]++;
+ #pragma omp parallel master taskloop
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp parallel master taskloop simd
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp parallel sections
+ {
+ p[0]++;
+ #pragma omp section
+ p[1]++;
+ #pragma omp section
+ p[2]++;
+ }
+ #pragma omp target parallel
+ #pragma omp master
+ p[0]++;
+ #pragma omp target parallel for
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp target parallel for simd
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp target parallel loop
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp target teams private (i)
+ i = 0;
+ #pragma omp target teams distribute
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp target teams distribute parallel for
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp target teams distribute parallel for simd
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp target teams distribute simd
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp target teams loop
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp target simd
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp taskloop simd
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp teams distribute
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp teams distribute parallel for
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp teams distribute parallel for simd
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp teams distribute simd
+ for (i = 0; i < 64; i++)
+ p[i]++;
+ #pragma omp teams loop
+ for (i = 0; i < 64; i++)
+ p[i]++;
+}
diff --git a/gcc/testsuite/c-c++-common/gomp/task-detach-1.c b/gcc/testsuite/c-c++-common/gomp/task-detach-1.c
new file mode 100644
index 0000000..4558bc1
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/gomp/task-detach-1.c
@@ -0,0 +1,37 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp" } */
+
+typedef enum omp_event_handle_t
+{
+ __omp_event_handle_t_max__ = __UINTPTR_MAX__
+} omp_event_handle_t;
+
+extern void omp_fulfill_event (omp_event_handle_t);
+
+void f (omp_event_handle_t x, omp_event_handle_t y, int z)
+{
+ #pragma omp task detach (x) detach (y) /* { dg-error "too many 'detach' clauses on a task construct" } */
+ ;
+
+ #pragma omp task mergeable detach (x) /* { dg-error "'detach' clause must not be used together with 'mergeable' clause" } */
+ ;
+
+ #pragma omp task detach (x) mergeable /* { dg-error "'detach' clause must not be used together with 'mergeable' clause" } */
+ ;
+
+ #pragma omp task detach (z) /* { dg-error "'detach' clause event handle has type 'int' rather than 'omp_event_handle_t'" } */
+ ;
+
+ #pragma omp parallel master default (none) /* { dg-message "enclosing 'parallel'" } */
+ #pragma omp task detach (x) /* { dg-error "'x' not specified in enclosing 'parallel'" } */
+ ;
+
+ #pragma omp task detach (x) default (none) /* This should work. */
+ omp_fulfill_event (x);
+
+ #pragma omp task detach (x) firstprivate (x) /* { dg-error "the event handle of a 'detach' clause should not be in a data-sharing clause" } */
+ ;
+
+ #pragma omp task detach (x) shared (x) /* { dg-error "the event handle of a 'detach' clause should not be in a data-sharing clause" } */
+ ;
+}
diff --git a/gcc/testsuite/c-c++-common/gomp/task-detach-2.c b/gcc/testsuite/c-c++-common/gomp/task-detach-2.c
new file mode 100644
index 0000000..2d197d2
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/gomp/task-detach-2.c
@@ -0,0 +1,9 @@
+/* PR c++/98742 */
+/* { dg-do compile } */
+
+void
+foo ()
+{
+#pragma omp task detach(0) /* { dg-error "before numeric constant" } */
+ ;
+}
diff --git a/gcc/testsuite/c-c++-common/pr98556.c b/gcc/testsuite/c-c++-common/pr98556.c
new file mode 100644
index 0000000..865957b
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/pr98556.c
@@ -0,0 +1,11 @@
+/* PR c++/98556 */
+/* { dg-do compile } */
+/* { dg-options "-O0" } */
+
+enum T { E = -__LONG_MAX__ - 1 };
+
+enum T
+foo (char *p, char *q)
+{
+ return (enum T) (p - q);
+}
diff --git a/gcc/testsuite/c-c++-common/raw-string-6.c b/gcc/testsuite/c-c++-common/raw-string-6.c
index a2cb30e..819dd44 100644
--- a/gcc/testsuite/c-c++-common/raw-string-6.c
+++ b/gcc/testsuite/c-c++-common/raw-string-6.c
@@ -3,5 +3,4 @@
// { dg-options "-std=c++0x" { target c++ } }
const void *s0 = R"ouch()ouCh"; // { dg-error "unterminated raw string" "unterminated" }
-// { dg-error "at end of input" "end" { target c } .-1 }
-// { dg-error "-:at end of input" "end" { target c++ } .+1 }
+// { dg-error "at end of input" "end" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/config/default.exp b/gcc/testsuite/config/default.exp
index 7f1241a..9158c1c 100644
--- a/gcc/testsuite/config/default.exp
+++ b/gcc/testsuite/config/default.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/README b/gcc/testsuite/g++.dg/README
index 123a5fc..600a2e7 100644
--- a/gcc/testsuite/g++.dg/README
+++ b/gcc/testsuite/g++.dg/README
@@ -33,7 +33,7 @@ special Tests that need custom expect code to run them; see special/ecos.exp
for an example.
-Copyright (C) 2001-2020 Free Software Foundation, Inc.
+Copyright (C) 2001-2021 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gcc/testsuite/g++.dg/Wclass-memaccess-6.C b/gcc/testsuite/g++.dg/Wclass-memaccess-6.C
new file mode 100644
index 0000000..7f6fe03
--- /dev/null
+++ b/gcc/testsuite/g++.dg/Wclass-memaccess-6.C
@@ -0,0 +1,18 @@
+/* PR c++/98835 - -Wclass-memaccess with class with ref-qualified
+ copy-assignment operator
+ { dg-do compile { target { c++11 } } }
+ { dg-options "-Wall" } */
+
+struct Bad
+{
+ Bad* operator& () { return this; }
+ Bad & operator=(Bad const &) & = default;
+};
+
+void test ()
+{
+ static_assert (__has_trivial_copy (Bad));
+
+ // T () = T (); // error
+ __builtin_memcpy (&Bad (), &Bad (), sizeof (Bad)); // { dg-warning "\\\[-Wclass-memaccess" }
+}
diff --git a/gcc/testsuite/g++.dg/abi/abi-tag24.C b/gcc/testsuite/g++.dg/abi/abi-tag24.C
new file mode 100644
index 0000000..c758544
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/abi-tag24.C
@@ -0,0 +1,17 @@
+// PR c++/98481
+// { dg-do compile { target c++11 } }
+inline namespace N __attribute ((__abi_tag__ ("myabi")))
+{
+ struct A {};
+}
+template <typename T>
+struct B { typedef int size_type; };
+struct S1 { B<A>::size_type foo () const { return 1; } };
+struct S2 { B<A>::size_type foo () const; };
+int S2::foo () const { return 2; }
+int (S1::*f1) () const = &S1::foo;
+int (S2::*f2) () const = &S2::foo;
+
+// { dg-final { scan-assembler "_ZNK2S13fooEv" } }
+// { dg-final { scan-assembler "_ZNK2S23fooEv" } }
+// { dg-final { scan-assembler-not "_ZNK2S13fooB5myabiEv" } }
diff --git a/gcc/testsuite/g++.dg/abi/mangle76.C b/gcc/testsuite/g++.dg/abi/mangle76.C
new file mode 100644
index 0000000..fe326e6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle76.C
@@ -0,0 +1,40 @@
+// PR c++/98545
+// { dg-do compile { target c++11 } }
+// { dg-options "-Wabi=14" }
+
+class a {
+public:
+ a();
+ template <typename b> a(b);
+};
+template <class = double> using c = a;
+class f {
+protected:
+ template <class d, class e> void operator()(d, double, e);
+};
+class i : f {
+public:
+ template <class... g>
+ [[gnu::used]] auto h(g...) -> decltype(operator()(g()...)) {} // { dg-warning "mangled name" }
+// { dg-final { scan-assembler "_ZN1i1hIJ1adS1_EEEDTcldtdefpTonclspcvT__EEEDpS2_" } }
+};
+template <class> class C {
+public:
+ template <class j> C(j);
+ i k() const;
+ int operator()() {
+ int l = 10;
+ c<> m, n;
+ operator()(m, l, n);
+ return 0;
+ }
+ int operator()(c<> &, c<> const &, c<> const &) const;
+ template <class d, class e> void k(d m, double gamma, e o) const {
+ k().h(m, gamma, o);
+ }
+};
+template <class r> int C<r>::operator()(c<> &, c<> const &, c<> const &) const {
+ [&](c<> m, double gamma, c<> o) { k(m, gamma, o); };
+ return 0;
+}
+c<> p = C<double>(p)();
diff --git a/gcc/testsuite/g++.dg/analyzer/analyzer.exp b/gcc/testsuite/g++.dg/analyzer/analyzer.exp
index 78edff2..baca230 100644
--- a/gcc/testsuite/g++.dg/analyzer/analyzer.exp
+++ b/gcc/testsuite/g++.dg/analyzer/analyzer.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/asan/asan.exp b/gcc/testsuite/g++.dg/asan/asan.exp
index b294088..1ad7327 100644
--- a/gcc/testsuite/g++.dg/asan/asan.exp
+++ b/gcc/testsuite/g++.dg/asan/asan.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/g++.dg/bprob/bprob.exp b/gcc/testsuite/g++.dg/bprob/bprob.exp
index ec15748..c7c82a8 100644
--- a/gcc/testsuite/g++.dg/bprob/bprob.exp
+++ b/gcc/testsuite/g++.dg/bprob/bprob.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/charset/charset.exp b/gcc/testsuite/g++.dg/charset/charset.exp
index af146ad..08b4437 100644
--- a/gcc/testsuite/g++.dg/charset/charset.exp
+++ b/gcc/testsuite/g++.dg/charset/charset.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/compat/break/README b/gcc/testsuite/g++.dg/compat/break/README
index 6c4df5e..fc27647 100644
--- a/gcc/testsuite/g++.dg/compat/break/README
+++ b/gcc/testsuite/g++.dg/compat/break/README
@@ -11,7 +11,7 @@ ABI-compliant should also be covered by a test for -Wabi to ensure that
there is a warning for the construct.
-Copyright (C) 2002-2020 Free Software Foundation, Inc.
+Copyright (C) 2002-2021 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gcc/testsuite/g++.dg/compat/compat.exp b/gcc/testsuite/g++.dg/compat/compat.exp
index 53aeee9..0773ff0 100644
--- a/gcc/testsuite/g++.dg/compat/compat.exp
+++ b/gcc/testsuite/g++.dg/compat/compat.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/compat/struct-layout-1.exp b/gcc/testsuite/g++.dg/compat/struct-layout-1.exp
index f2a20aa..acb08f0 100644
--- a/gcc/testsuite/g++.dg/compat/struct-layout-1.exp
+++ b/gcc/testsuite/g++.dg/compat/struct-layout-1.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/coroutines/coroutines.exp b/gcc/testsuite/g++.dg/coroutines/coroutines.exp
index 1bef98a..2b1da3d 100644
--- a/gcc/testsuite/g++.dg/coroutines/coroutines.exp
+++ b/gcc/testsuite/g++.dg/coroutines/coroutines.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 Free Software Foundation, Inc.
# Contributed by Iain Sandoe <iain@sandoe.co.uk> under contract to Facebook.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
index fbbce97..2e72183 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
@@ -5,7 +5,7 @@
struct pt_b
{
std::suspend_always initial_suspend() const noexcept { return {}; }
- std::suspend_never final_suspend() const noexcept { return {}; }
+ std::suspend_always final_suspend() const noexcept { return {}; }
constexpr void return_void () noexcept {};
constexpr void unhandled_exception() const noexcept {}
};
diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-targ1.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-targ1.C
new file mode 100644
index 0000000..dd97479
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-targ1.C
@@ -0,0 +1,9 @@
+// PR c++/98570
+// { dg-do compile { target c++11 } }
+
+template <int> struct b { enum { c }; };
+template <typename> using i = b<0>;
+
+template <int> struct d { };
+template <typename l> d<i<l>::c> m() { }
+template <typename n> d<i<n*>::c> m() { }
diff --git a/gcc/testsuite/g++.dg/cpp0x/alignas19.C b/gcc/testsuite/g++.dg/cpp0x/alignas19.C
new file mode 100644
index 0000000..892125b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/alignas19.C
@@ -0,0 +1,8 @@
+// PR c++/94775
+// { dg-do compile { target c++11 } }
+// { dg-additional-options "-mstrict-align" { target { aarch64*-*-* powerpc*-*-linux* powerpc*-*-elf* } } }
+
+struct alignas(8) S {
+ S *arr[1];
+ void fn () const { (void) arr[0]; }
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto55.C b/gcc/testsuite/g++.dg/cpp0x/auto55.C
new file mode 100644
index 0000000..5bd32ac
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/auto55.C
@@ -0,0 +1,13 @@
+// PR c++/98441
+// { dg-do compile { target c++11 } }
+
+struct a {
+ int& mfn();
+};
+
+void fn()
+{
+ int& (a::*myvar1)(void) = &a::mfn;
+ auto& (a::*myvar2)(void) = &a::mfn;
+ auto (a::*myvar3)(void) = &a::mfn;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-98295.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-98295.C
new file mode 100644
index 0000000..930bd5a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-98295.C
@@ -0,0 +1,11 @@
+// PR c++/98295
+// { dg-do compile { target c++11 } }
+
+struct A { constexpr A(); };
+
+void f() {
+ A b[2][3];
+ [b] { };
+}
+
+constexpr A::A() {}
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-overflow3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-overflow3.C
new file mode 100644
index 0000000..6176625
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-overflow3.C
@@ -0,0 +1,7 @@
+// PR c++/98332
+// { dg-do compile { target c++11 } }
+
+#include <limits.h>
+
+struct S { int a = INT_MAX + 1; }; // { dg-warning "overflow" }
+struct { S b[2][1][1][1]; } c;
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-pmf2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-pmf2.C
new file mode 100644
index 0000000..a76e712
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-pmf2.C
@@ -0,0 +1,9 @@
+// PR c++/98551
+// { dg-do compile { target c++11 } }
+
+struct A {};
+struct B { int t(); };
+using pmf = decltype(&B::t);
+constexpr pmf f() { return &B::t; }
+constexpr A g(pmf) { return {}; };
+constexpr A x = g(f());
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype-71879.C b/gcc/testsuite/g++.dg/cpp0x/decltype-71879.C
new file mode 100644
index 0000000..9da4d40
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/decltype-71879.C
@@ -0,0 +1,5 @@
+// PR c++/71879
+// { dg-do compile { target c++11 } }
+
+template <class T> void f(T x) { x.fail(); }
+using R = decltype(&f<int>);
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype37.C b/gcc/testsuite/g++.dg/cpp0x/decltype37.C
index c885e9a..5d0f085 100644
--- a/gcc/testsuite/g++.dg/cpp0x/decltype37.C
+++ b/gcc/testsuite/g++.dg/cpp0x/decltype37.C
@@ -8,7 +8,7 @@ template<typename T> auto foo(T* t) -> wrap<T>* { return 0; }
template<typename T>
struct holder : decltype(*foo((T*)0)) // { dg-error "class type" }
{
- using decltype(*foo((T*)0))::bar; // { dg-error "is not a base" }
+ using decltype(*foo((T*)0))::bar; // { dg-error "is not a class" }
};
holder<int> h;
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype63.C b/gcc/testsuite/g++.dg/cpp0x/decltype63.C
index b588bc3..ab1a4111 100644
--- a/gcc/testsuite/g++.dg/cpp0x/decltype63.C
+++ b/gcc/testsuite/g++.dg/cpp0x/decltype63.C
@@ -4,5 +4,4 @@
template<typename T>
class C{
T t;
- decltype(t)::a:: // { dg-error "expected" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+ decltype(t)::a:: // { dg-error "expected" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/friend6.C b/gcc/testsuite/g++.dg/cpp0x/friend6.C
new file mode 100644
index 0000000..fce7e55
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/friend6.C
@@ -0,0 +1,23 @@
+// PR c++/68451
+// { dg-do compile { target c++11 } }
+
+struct A {};
+
+struct B
+{
+ A a;
+ friend decltype(a);
+};
+
+template <typename T>
+struct C
+{
+ A a;
+ friend decltype(a);
+};
+
+int main()
+{
+ B b;
+ C<int> c;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C
index 822b64e..c82beb9 100644
--- a/gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C
+++ b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C
@@ -2,4 +2,3 @@
// { dg-do compile { target c++11 } }
namespace alignas() N {} // { dg-error "expected" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
diff --git a/gcc/testsuite/g++.dg/cpp0x/inh-ctor36.C b/gcc/testsuite/g++.dg/cpp0x/inh-ctor36.C
new file mode 100644
index 0000000..c531af9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/inh-ctor36.C
@@ -0,0 +1,10 @@
+// { dg-do compile { target c++11 } }
+
+struct A { A(); A(int); };
+
+template <class... T> struct C: T...
+{
+ using A::A;
+};
+
+C<A> c1(42);
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-array13.C b/gcc/testsuite/g++.dg/cpp0x/initlist-array13.C
new file mode 100644
index 0000000..92fe971
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-array13.C
@@ -0,0 +1,16 @@
+// PR c++/63707
+// { dg-do compile { target c++11 } }
+
+struct Child
+{
+ Child (int);
+ ~Child ();
+ Child (const Child &) = delete;
+};
+
+struct Parent
+{
+ Parent () : children {{5}, {7}} {}
+
+ Child children[2];
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/new4.C b/gcc/testsuite/g++.dg/cpp0x/new4.C
new file mode 100644
index 0000000..728ef4e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/new4.C
@@ -0,0 +1,36 @@
+// PR c++/59238
+// { dg-do compile { target c++11 } }
+
+struct A { ~A () = delete; };
+A *pa{new A{}};
+A *pa2{new A[2]{}};
+
+class B { ~B () = default; };
+B *pb{new B{}};
+
+struct E {
+ ~E () = delete;
+private:
+ int x;
+};
+E *pe{new E{}};
+
+class C { ~C (); };
+C *pc{new C{}};
+
+class D { ~D () {} };
+D *pd{new D{}};
+
+struct F {
+ F () = default;
+ ~F () = delete;
+};
+F *pf{new F{}};
+
+struct G {
+ G () = default;
+ ~G () = delete;
+private:
+ int x;
+};
+G *pg{new G{}};
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept61.C b/gcc/testsuite/g++.dg/cpp0x/noexcept61.C
new file mode 100644
index 0000000..653cd7e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept61.C
@@ -0,0 +1,17 @@
+// PR c++/82099
+// { dg-do compile { target c++11 } }
+
+template <typename T, typename U>
+void bar (T &x, T &y, U u)
+{
+ u (x, y);
+}
+
+template <typename T>
+void baz (T &x, T &y) noexcept (noexcept (x == y));
+
+void
+foo (int x, int y)
+{
+ bar (x, y, baz<int>);
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept62.C b/gcc/testsuite/g++.dg/cpp0x/noexcept62.C
new file mode 100644
index 0000000..53606c7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept62.C
@@ -0,0 +1,10 @@
+// PR c++/98333
+// { dg-do compile { target c++11 } }
+
+struct T {
+ template <bool N>
+ struct S {
+ S () noexcept (N) {}
+ };
+ int a = __has_nothrow_constructor (S<true>);
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept63.C b/gcc/testsuite/g++.dg/cpp0x/noexcept63.C
new file mode 100644
index 0000000..cf048f5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept63.C
@@ -0,0 +1,63 @@
+// PR c++/97966
+// { dg-do compile { target c++11 } }
+
+template <int>
+struct S1 {
+ __attribute__((used)) S1() noexcept(noexcept(this->foo())) { }
+ void foo();
+};
+
+template <int>
+struct S2 {
+ __attribute__((used)) void bar() noexcept(noexcept(this->foo())) { }
+ void foo();
+};
+
+template <int>
+struct S3 {
+ void __attribute__((used)) bar() noexcept(noexcept(this->foo())) { }
+ void foo();
+};
+
+template <int>
+struct S4 {
+ [[gnu::used]] void bar() noexcept(noexcept(this->foo())) { }
+ void foo();
+};
+
+template <int>
+struct S5 {
+ void bar() noexcept(noexcept(this->foo())) __attribute__((used)) { }
+ void foo();
+};
+
+template <int>
+struct S6 {
+ template <int>
+ struct N {
+ [[gnu::used]] void bar() noexcept(noexcept(this->foo())) { }
+ void foo();
+ };
+};
+
+void
+g ()
+{
+ S1<1> s1;
+ S2<1> s2;
+ S3<1> s3;
+ S4<1> s4;
+ S5<1> s5;
+ S6<1>::N<1> n;
+}
+
+// Make sure that we did emit the functions marked with attribute used
+// even though they're not referenced in this TU. (Well, the S1()
+// constructor is.)
+// { dg-final { scan-assembler "_ZN2S1ILi1EEC1Ev" } }
+// { dg-final { scan-assembler "_ZN2S1ILi1EEC2Ev" } }
+// { dg-final { scan-assembler "_ZN2S2ILi1EE3barEv" } }
+// { dg-final { scan-assembler "_ZN2S3ILi1EE3barEv" } }
+// { dg-final { scan-assembler "_ZN2S4ILi1EE3barEv" } }
+// { dg-final { scan-assembler "_ZN2S5ILi1EE3barEv" } }
+// { dg-final { scan-assembler "_ZN2S6ILi1EE1NILi1EE3barEv" } }
diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept64.C b/gcc/testsuite/g++.dg/cpp0x/noexcept64.C
new file mode 100644
index 0000000..8b7303c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/noexcept64.C
@@ -0,0 +1,24 @@
+// PR c++/96623
+// { dg-do compile { target c++11 } }
+
+constexpr int x = 0;
+struct A {
+ int a1;
+ void foo (int p) {
+ int foovar;
+ struct B {
+ int b1;
+ void bar1 () noexcept(x);
+ void bar2 () noexcept(noexcept(this->b1));
+ void bar3 () noexcept(noexcept(this->b2));
+ void bar4 () noexcept(noexcept(a1));
+ void bar5 () noexcept(noexcept(a2));
+ void bar6 () noexcept(noexcept(b1));
+ void bar7 () noexcept(noexcept(b2));
+ void bar8 () noexcept(noexcept(foovar));
+ void bar9 () noexcept(noexcept(p));
+ int b2;
+ };
+ }
+ int a2;
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr68726.C b/gcc/testsuite/g++.dg/cpp0x/pr68726.C
index 636a20c..8edd439 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr68726.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr68726.C
@@ -5,4 +5,3 @@ template <typename> struct A {
template <typename... _Args>
using __has_construct typename __construct_helper<_Args...>::type; // { dg-error "expected" }
} struct : A<int> { // { dg-error "expected" }
- // { dg-error "-:expected" "" { target *-*-* } .+1 }
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr78341.C b/gcc/testsuite/g++.dg/cpp0x/pr78341.C
index 8573f9f..0a69210 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr78341.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr78341.C
@@ -2,4 +2,3 @@
// { dg-do compile { target c++11 } }
alignas (alignas double // { dg-error "expected" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
diff --git a/gcc/testsuite/g++.dg/cpp0x/this2.C b/gcc/testsuite/g++.dg/cpp0x/this2.C
new file mode 100644
index 0000000..ccc2608
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/this2.C
@@ -0,0 +1,8 @@
+// PR c++/88548
+// { dg-do compile { target c++11 } }
+
+struct S {
+ int a;
+ template <class> static auto m1 ()
+ -> decltype(this->a) { return 0; } // { dg-error "'this'" }
+};
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
index ad31692..3d742cf 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
@@ -19,7 +19,7 @@ private:
constexpr A f() {
A a{};
- for (int i = 1; i <= n; i++) {
+ for (int i = 0; i < n; i++) {
a[i] = i;
}
return a;
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-84494.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-84494.C
new file mode 100644
index 0000000..762cfb4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-84494.C
@@ -0,0 +1,11 @@
+// PR c++/84494
+// { dg-do compile { target c++14 } }
+
+struct X {
+ constexpr X() = default;
+ constexpr X(int x) : m_value(x) {}
+ constexpr X& operator=(const X &o) = default;
+ int m_value {};
+};
+
+static_assert((X() = X(10)).m_value == 10, "");
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-98672.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-98672.C
new file mode 100644
index 0000000..06f7e42
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-98672.C
@@ -0,0 +1,92 @@
+// PR c++/98672
+// { dg-do compile { target c++14 } }
+
+void
+foo ()
+{
+}
+
+constexpr int
+bar ()
+{
+ for (int i = 0; i < 5; ++i)
+ return i;
+ foo ();
+ return 0;
+}
+
+constexpr int
+baz ()
+{
+ int i = 0;
+ while (i < 5)
+ {
+ if (i == 3)
+ return i;
+ else
+ ++i;
+ }
+ foo ();
+ return 0;
+}
+
+constexpr int
+qux (int x)
+{
+ if (x > 10)
+ ++x;
+ else
+ return 7;
+ foo ();
+ return 0;
+}
+
+constexpr int
+corge (int x)
+{
+ for (int a = 1; ; a++)
+ {
+ if (x > 10)
+ ++x;
+ else
+ return 4;
+ foo ();
+ }
+}
+
+constexpr int
+garply (int x)
+{
+ for (int a = 1; ; a++)
+ {
+ if (x > 10)
+ ++x;
+ else
+ break;
+ foo ();
+ }
+ return x;
+}
+
+constexpr int
+waldo (int x)
+{
+ for (int a = 1; ; a++)
+ {
+ if (x > 10)
+ break;
+ else
+ return 5;
+ foo ();
+ }
+ foo ();
+ return x;
+}
+
+constexpr int i = bar ();
+constexpr int j = baz ();
+constexpr int k = qux (4);
+constexpr int l = corge (5);
+constexpr int m = garply (2);
+constexpr int n = waldo (-2);
+static_assert (i == 0 && j == 3 && k == 7 && l == 4 && m == 2 && n == 5, "");
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr65202.C b/gcc/testsuite/g++.dg/cpp1y/pr65202.C
index a76f8da..1f7219b 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr65202.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr65202.C
@@ -24,5 +24,4 @@ int main()
{
foo<ns::bar> f;
adl::swap(f, f) // { dg-error "expected ';'" }
-}
-// { dg-error "-:expected '.'" "expected end of namespace" { target *-*-* } .+1 }
+} // { dg-error "2:expected" }
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr65340.C b/gcc/testsuite/g++.dg/cpp1y/pr65340.C
index d3e03f7..e0ce681 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr65340.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr65340.C
@@ -17,4 +17,4 @@ struct traverse {
}
auto &traverse = constant < functors :: traverse > ;
operator()()->decltype(traverse(0, 0))// { dg-error "no match" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "39:expected" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr68578.C b/gcc/testsuite/g++.dg/cpp1y/pr68578.C
index 9b38981..f4be9da 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr68578.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr68578.C
@@ -1,4 +1,4 @@
// { dg-do compile { target c++14 } }
template <typename> struct bar foo; template <> struct foo<>: // { dg-error "class template|redeclared" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "62:expected" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction-decltype1.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction-decltype1.C
new file mode 100644
index 0000000..b83f7ad
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction-decltype1.C
@@ -0,0 +1,11 @@
+// PR c++/98929
+// { dg-do compile { target c++17 } }
+
+template <typename T>
+struct A {
+ void foo ();
+ using c = decltype (foo ());
+ A (c); // { dg-message {decltype \(A<T>::foo} }
+};
+A d; // { dg-error "deduction failed" }
+// { dg-error "no match" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction44.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction44.C
index 95caa99..419aaa2 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction44.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction44.C
@@ -3,4 +3,3 @@
template <typename> struct A;
template <typename> struct B : A < B { , // { dg-error "" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction76.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction76.C
index 23bb6e8..a131a38 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction76.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction76.C
@@ -1,6 +1,5 @@
// PR c++/90799
// { dg-do compile { target c++17 } }
-// { dg-ice "unify" }
template<class T>
void foo() noexcept(T::value);
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction77.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction77.C
new file mode 100644
index 0000000..c5462fb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction77.C
@@ -0,0 +1,6 @@
+// { dg-do compile { target c++17 } }
+
+template <class...> struct A {};
+
+template <template <class> class... Ts>
+using B = A<decltype(Ts{0})...>;
diff --git a/gcc/testsuite/g++.dg/cpp1z/elide4.C b/gcc/testsuite/g++.dg/cpp1z/elide4.C
new file mode 100644
index 0000000..03335e4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1z/elide4.C
@@ -0,0 +1,24 @@
+// { dg-do compile { target c++11 } }
+
+// Check that there's a call to some base constructor of B: either the default
+// constructor, if the copy is elided, or the copy constructor.
+
+// { dg-final { scan-assembler {call[ \t]*_?_ZN1BC2} { target { i?86-*-* x86_64-*-* } } } }
+
+int count;
+struct A { int i = count++; };
+struct B: virtual A {
+ B() { }
+ B(const B& b);
+};
+bool x;
+struct C: B
+{
+ C() : B(x ? (0,B()) : B()) { }
+};
+
+int main()
+{
+ C c;
+ return count;
+}
diff --git a/gcc/testsuite/g++.dg/cpp1z/elide5.C b/gcc/testsuite/g++.dg/cpp1z/elide5.C
new file mode 100644
index 0000000..abe80ec
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1z/elide5.C
@@ -0,0 +1,15 @@
+// PR c++/98642
+// { dg-do compile { target c++11 } }
+
+struct base {
+ base(void) {}
+ base(base &&) = delete;
+};
+
+struct foo : public base { };
+
+static foo c1 { };
+
+#if __cpp_aggregate_bases
+static foo c2 { {} };
+#endif
diff --git a/gcc/testsuite/g++.dg/cpp1z/inh-ctor39.C b/gcc/testsuite/g++.dg/cpp1z/inh-ctor39.C
new file mode 100644
index 0000000..3e6356c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1z/inh-ctor39.C
@@ -0,0 +1,12 @@
+// { dg-do compile { target c++17 } }
+
+struct A { A(); A(int); };
+struct B { B(); B(void*); };
+
+template <class... T> struct C: T...
+{
+ using T::T...;
+};
+
+C<A,B> c1(42);
+C<A,B> c2(nullptr);
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype-auto17.C b/gcc/testsuite/g++.dg/cpp1z/nontype-auto17.C
new file mode 100644
index 0000000..509eb0e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype-auto17.C
@@ -0,0 +1,10 @@
+// { dg-do compile { target c++11 } }
+
+template <int> struct K { };
+
+template <class T = void, typename T::type M> int f(K<M>); // { dg-error "void" }
+int a = f(K<42>{}); // { dg-error "no match" }
+
+struct S { using type = void; };
+template <class T = S, typename T::type M> int g(K<M>); // { dg-message "deduction" }
+int b = g(K<42>{}); // { dg-error "no match" }
diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype-auto18.C b/gcc/testsuite/g++.dg/cpp1z/nontype-auto18.C
new file mode 100644
index 0000000..936c841
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1z/nontype-auto18.C
@@ -0,0 +1,7 @@
+// { dg-do compile { target c++11 } }
+
+template <int> struct K { };
+
+struct S { using type = int; };
+template <class T = S, typename T::type M> int g(K<M>);
+int a = g(K<42>{});
diff --git a/gcc/testsuite/g++.dg/cpp23/cplusplus.C b/gcc/testsuite/g++.dg/cpp23/cplusplus.C
new file mode 100644
index 0000000..29a941b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp23/cplusplus.C
@@ -0,0 +1,4 @@
+// { dg-do compile }
+// { dg-options "-std=c++23" }
+
+static_assert(__cplusplus > 202002L);
diff --git a/gcc/testsuite/g++.dg/cpp2a/bit-cast10.C b/gcc/testsuite/g++.dg/cpp2a/bit-cast10.C
new file mode 100644
index 0000000..69298fb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/bit-cast10.C
@@ -0,0 +1,42 @@
+// PR c++/98329
+// { dg-do compile { target c++20 } }
+
+template <typename To, typename From>
+constexpr To
+foo (const From &from)
+{
+ return __builtin_bit_cast (To, &from);
+}
+
+template <typename To, typename From>
+constexpr To
+bar (const From &from)
+{
+ return __builtin_bit_cast (To, *from);
+}
+
+template <typename To, typename From>
+constexpr To
+baz (const From &from)
+{
+ return __builtin_bit_cast (To, **from);
+}
+
+template <typename To, typename From>
+constexpr To
+qux (const From &from)
+{
+ return __builtin_bit_cast (To, -from);
+}
+
+void
+test ()
+{
+ int i = 0;
+ int *j = &i;
+ int **k = &j;
+ foo <char *> (i);
+ bar <int> (j);
+ baz <int> (k);
+ qux <int> (i);
+}
diff --git a/gcc/testsuite/g++.dg/cpp2a/bit-cast7.C b/gcc/testsuite/g++.dg/cpp2a/bit-cast7.C
new file mode 100644
index 0000000..4a3c682
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/bit-cast7.C
@@ -0,0 +1,39 @@
+// PR c++/98193
+// { dg-do compile { target c++20 } }
+
+template <typename To, typename From>
+constexpr To
+bit_cast (const From &from)
+{
+ return __builtin_bit_cast (To, from);
+}
+
+struct J
+{
+ long int a, b : 11, h;
+};
+
+struct K
+{
+ long int a, b : 11, c;
+ constexpr bool operator == (const K &x)
+ {
+ return a == x.a && b == x.b && c == x.c;
+ }
+};
+
+struct L
+{
+ long long int a, b : 11, h;
+};
+struct M
+{
+ long long int a, b : 11, c;
+ constexpr bool operator == (const M &x)
+ {
+ return a == x.a && b == x.b && c == x.c;
+ }
+};
+
+static_assert (bit_cast <K> (J{}) == K{}, "");
+static_assert (bit_cast <M> (L{0x0feedbacdeadbeefLL}) == M{0x0feedbacdeadbeefLL}, "");
diff --git a/gcc/testsuite/g++.dg/cpp2a/bit-cast8.C b/gcc/testsuite/g++.dg/cpp2a/bit-cast8.C
new file mode 100644
index 0000000..17a4165
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/bit-cast8.C
@@ -0,0 +1,11 @@
+// PR c++/98469
+// { dg-do compile { target c++20 } }
+// { dg-options "-Wall" }
+
+struct S { int s; };
+
+S
+foo ()
+{
+ return __builtin_bit_cast (S, 0);
+}
diff --git a/gcc/testsuite/g++.dg/cpp2a/bit-cast9.C b/gcc/testsuite/g++.dg/cpp2a/bit-cast9.C
new file mode 100644
index 0000000..bf3d368
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/bit-cast9.C
@@ -0,0 +1,15 @@
+// PR c++/98469
+// { dg-do compile { target c++20 } }
+// { dg-options "-Wall" }
+
+template<typename T, typename F>
+constexpr T
+bit_cast (const F &f) noexcept
+{
+ return __builtin_bit_cast (T, f);
+}
+struct S { int s; };
+constexpr int foo (const S &x) { return x.s; }
+constexpr int bar () { return foo (bit_cast<S> (0)); }
+constexpr int x = bar ();
+static_assert (!x);
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-complete1.C b/gcc/testsuite/g++.dg/cpp2a/concepts-complete1.C
new file mode 100644
index 0000000..e8487bf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-complete1.C
@@ -0,0 +1,18 @@
+// Verify we diagnose an unstable satisfaction result that depends on
+// completeness of the type A below.
+//
+// { dg-do compile { target c++20 } }
+
+template <class T> concept has_mem_type = requires { typename T::type; };
+// { dg-message "satisfaction of 'has_mem_type<T>' .with T = A." "" { target *-*-* } .-1 }
+// { dg-error "satisfaction value of atomic constraint 'requires.typename T::type;. .with T = A.' changed from 'false' to 'true'" "" { target *-*-* } .-2 }
+
+template <has_mem_type T> int f () { return 0; }
+template <class T> char f() { return 0; }
+
+struct A;
+static_assert (sizeof (f<A>()) == 1); // { dg-message "first evaluated to 'false' from here" }
+struct A { typedef int type; };
+static_assert (sizeof (f<A>()) > 1); // { dg-error "assert" }
+// { dg-message "required from here" "" { target *-*-* } .-1 }
+static_assert (sizeof (f<A>()) > 1);
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-complete2.C b/gcc/testsuite/g++.dg/cpp2a/concepts-complete2.C
new file mode 100644
index 0000000..b2c1160
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-complete2.C
@@ -0,0 +1,23 @@
+// Verify we diagnose an unstable satisfaction result that depends on
+// completeness of the type A below.
+//
+// Like in the previous test, here satisfaction also initially fails,
+// but this time due to failed substitution into the atom's parameter mapping.
+//
+// { dg-do compile { target c++20 } }
+
+template <class T> concept valid_type = requires { typename T; };
+// { dg-message "satisfaction of 'valid_type<typename T::type>' .with T = A." "" { target *-*-* } .-1 }
+// { dg-error "satisfaction value of atomic constraint 'requires.T;. .with T = typename T::type.' changed from 'false' to 'true'" "" { target *-*-* } .-2 }
+
+template <class T> concept has_mem_type = valid_type<typename T::type>;
+// { dg-message "satisfaction of 'has_mem_type<T>' .with T = A." "" { target *-*-* } .-1 }
+
+template <has_mem_type T> int f () { return 0; }
+template <class T> char f() { return 0; }
+
+struct A;
+static_assert (sizeof (f<A>()) == 1); // { dg-message "first evaluated to 'false' from here" }
+struct A { typedef int type; };
+static_assert (sizeof (f<A>()) > 1); // { dg-error "assert" }
+static_assert (sizeof (f<A>()) > 1);
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-complete3.C b/gcc/testsuite/g++.dg/cpp2a/concepts-complete3.C
new file mode 100644
index 0000000..5b07371
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-complete3.C
@@ -0,0 +1,16 @@
+// Verify we diagnose an unstable satisfaction result that depends on
+// return type deduction of the member function A::foo() below.
+//
+// { dg-do compile { target c++20 } }
+
+template <class T> concept fooable = requires (T t) { t.foo(); };
+// { dg-error "'false' to 'true'" "" { target *-*-* } .-1 }
+
+template <fooable T> int f () { return 0; }
+template <class T> char f() { return 0; }
+
+struct A { auto foo(); };
+static_assert (sizeof (f<A>()) == 1); // { dg-message "first evaluated to 'false' from here" }
+auto A::foo() { }
+static_assert (sizeof (f<A>()) > 1); // { dg-error "assert" }
+static_assert (sizeof (f<A>()) > 1);
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-conv3.C b/gcc/testsuite/g++.dg/cpp2a/concepts-conv3.C
new file mode 100644
index 0000000..d53f37c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-conv3.C
@@ -0,0 +1,25 @@
+// { dg-do compile { target c++20 } }
+
+// Here, normal overload resolution would consider B::operator bool when
+// evaluating A(b), leading to a hard error instantiating Error<int>, but we
+// avoid considering it by noticing that converting bool (a scalar) to A (a
+// class) would require a user-defined conversion, which is not allowed when
+// we're already dealing with the user-defined conversion to A.
+
+// This seems to be allowed by [temp.inst]/9: "If the function selected by
+// overload resolution (12.4) can be determined without instantiating a class
+// template definition, it is unspecified whether that instantiation actually
+// takes place."
+
+template <class T>
+struct Error { static constexpr auto value = T::value; };
+
+struct A { A(const A&); };
+
+template <class T>
+struct B { operator bool() requires Error<T>::value; };
+
+template <class T>
+concept C = requires (B<T> b) { A(b); };
+
+static_assert(!C<int>);
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-conv3a.C b/gcc/testsuite/g++.dg/cpp2a/concepts-conv3a.C
new file mode 100644
index 0000000..7e9e284
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-conv3a.C
@@ -0,0 +1,17 @@
+// { dg-do compile { target c++20 } }
+
+// But make sure we do consider template conversions that could produce the
+// right type.
+
+template <class T>
+struct Error { static constexpr auto value = T::value; }; // { dg-error "not a member" }
+
+struct A { A(const A&); };
+
+template <class T>
+struct B { template <class U> operator U() requires Error<T>::value; };
+
+template <class T>
+concept C = requires (B<T> b) { A(b); }; // { dg-message "required from here" }
+
+static_assert(!C<int>);
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-ctad1.C b/gcc/testsuite/g++.dg/cpp2a/concepts-ctad1.C
new file mode 100644
index 0000000..ec2e4b0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-ctad1.C
@@ -0,0 +1,16 @@
+// PR c++/98611
+// { dg-do compile { target c++20 } }
+
+template <class T, class U>
+concept IsSame = __is_same(T, U);
+
+template <class T, template <class...> class _Class>
+concept IsInstantiationOf = requires(T object) {
+ { _Class{object} } -> IsSame<T>;
+};
+
+template <class T> struct Degrees {};
+static_assert(IsInstantiationOf<Degrees<int>, Degrees>);
+
+template <class T> struct NotDegrees {};
+static_assert(!IsInstantiationOf<Degrees<int>, NotDegrees>);
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-ctad2.C b/gcc/testsuite/g++.dg/cpp2a/concepts-ctad2.C
new file mode 100644
index 0000000..0d7f979
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-ctad2.C
@@ -0,0 +1,13 @@
+// PR c++/98611
+// { dg-do compile { target c++20 } }
+
+template <class>
+struct S {
+ template <class T> struct Tmpl { Tmpl(T); };
+
+ template <class T>
+ requires requires (T object) { Tmpl{object}; }
+ static int f(T);
+};
+
+int a = S<int>::f(0);
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-nodiscard1.C b/gcc/testsuite/g++.dg/cpp2a/concepts-nodiscard1.C
index 907e68b..3d5cd85 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-nodiscard1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-nodiscard1.C
@@ -1,6 +1,6 @@
// PR c++/98019
// { dg-do compile { target c++20 } }
-// { dg-excess-errors *-*-* }
+// Don't give [[nodiscard]] warning for an expression requirement.
template <class T, class U> concept same_as = __is_same_as (T, U);
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-pr78173.C b/gcc/testsuite/g++.dg/cpp2a/concepts-pr78173.C
new file mode 100644
index 0000000..50f561a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-pr78173.C
@@ -0,0 +1,9 @@
+// PR c++/78173
+// { dg-do compile { target c++20 } }
+
+template <class T>
+concept CanDifference = requires(T x, T y) {
+ x - y;
+};
+
+static_assert(!CanDifference<void*>);
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-pr88395.C b/gcc/testsuite/g++.dg/cpp2a/concepts-pr88395.C
index 1c25252..e1792e1 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-pr88395.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-pr88395.C
@@ -1,9 +1,9 @@
// { dg-do compile { target c++20 } }
template <class T, class U>
-concept Concept2 = requires (T t, U u)
+concept Concept2 = requires (T t, U u) // { dg-error "depends on itself" }
{
- t += u; // { dg-error "template instantiation depth" }
+ t += u;
};
template <class T>
@@ -17,7 +17,5 @@ struct S
constexpr S operator * (S a, S b)
{
- return a += b;
+ return a += b; // { dg-error "no match" }
}
-
-// { dg-prune-output "compilation terminated" }
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C b/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C
index 992fcbb..9bc96f5 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C
@@ -1,7 +1,7 @@
// { dg-do compile { target c++20 } }
template<typename T>
-concept Fooable = requires(T t) { foo(t); }; // { dg-error "template instantiation depth" }
+concept Fooable = requires(T t) { foo(t); }; // { dg-error "depends on itself" }
template<Fooable T>
void foo(T t) { }
@@ -9,7 +9,5 @@ void foo(T t) { }
void test()
{
struct S {} s;
- foo(s);
+ foo(s); // { dg-error "no match" }
}
-
-// { dg-prune-output "compilation terminated" }
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat4.C b/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat4.C
new file mode 100644
index 0000000..18d126e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat4.C
@@ -0,0 +1,13 @@
+// PR c++/96840
+// { dg-do compile { target c++20 } }
+
+template <class T, class U> concept C = requires(T t, U u) { t * u; };
+// { dg-message "required for the satisfaction of 'C<T, Rep>' .with T = Int<int>; Rep = int." "" { target *-*-* } .-1 }
+// { dg-error "depends on itself" "" { target *-*-* } .-2 }
+
+template <class Rep> struct Int {
+ template <class T> requires C<T, Rep> friend void operator*(T, Int) { }
+ template <class T> requires C<T, Rep> friend void operator*(Int, T) { }
+};
+
+void f() { 0 * Int<int>{}; }
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-requires23.C b/gcc/testsuite/g++.dg/cpp2a/concepts-requires23.C
new file mode 100644
index 0000000..e109bea
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-requires23.C
@@ -0,0 +1,9 @@
+// { dg-do compile { target c++20 } }
+
+// Verify f<A>'s associated constraints evaluate to false due
+// to return type deduction failure for A::foo().
+
+template <class T> concept fooable = requires { T::foo(0); };
+template <fooable T> int f ();
+struct A { static auto *foo(auto); };
+int a = f<A>(); // { dg-error "no match" }
diff --git a/gcc/testsuite/g++.dg/cpp2a/lambda-generic9.C b/gcc/testsuite/g++.dg/cpp2a/lambda-generic9.C
new file mode 100644
index 0000000..20ceb37
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/lambda-generic9.C
@@ -0,0 +1,9 @@
+// PR c++/95434
+// { dg-do compile { target c++20 } }
+
+template <class>
+void f() {
+ [] <template <class> class U> { U{0}; };
+}
+
+template void f<int>();
diff --git a/gcc/testsuite/g++.dg/cpp2a/lambda-uneval1.C b/gcc/testsuite/g++.dg/cpp2a/lambda-uneval1.C
index 816b6e9..f4505b6 100644
--- a/gcc/testsuite/g++.dg/cpp2a/lambda-uneval1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/lambda-uneval1.C
@@ -2,7 +2,7 @@
typedef decltype([]{}) C; // the closure type has no name for linkage purposes
-// { dg-final { scan-assembler-not "globl\[ \t]*_Z1f" } }
+// { dg-final { scan-assembler-not "\[^l\]globl\[ \t\.\]*_Z1f" } }
// { dg-final { scan-assembler-not "_Z1f1C" } }
void f(C) {}
diff --git a/gcc/testsuite/g++.dg/cpp2a/lambda-uneval5.C b/gcc/testsuite/g++.dg/cpp2a/lambda-uneval5.C
index dc19004..1e16679 100644
--- a/gcc/testsuite/g++.dg/cpp2a/lambda-uneval5.C
+++ b/gcc/testsuite/g++.dg/cpp2a/lambda-uneval5.C
@@ -2,4 +2,4 @@
using L = decltype([]{ });
void f(L) { }
-// { dg-final { scan-assembler-not "globl.*_Z1f" } }
+// { dg-final { scan-assembler-not "\[^l\]globl\[ \t\.\]*_Z1f" } }
diff --git a/gcc/testsuite/g++.dg/cpp2a/no_unique_address10.C b/gcc/testsuite/g++.dg/cpp2a/no_unique_address10.C
new file mode 100644
index 0000000..cd9e8de
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/no_unique_address10.C
@@ -0,0 +1,16 @@
+// Make sure [[no_unique_address]] doesn't affect is_standard_layout.
+// { dg-do compile { target c++11 } }
+
+struct E1 { }; struct E2 { };
+struct A
+{
+ [[no_unique_address]] E1 e;
+};
+
+struct B: A
+{
+ [[no_unique_address]] E2 e;
+};
+
+static_assert(__is_standard_layout (A), "");
+static_assert(!__is_standard_layout (B), "");
diff --git a/gcc/testsuite/g++.dg/cpp2a/no_unique_address8.C b/gcc/testsuite/g++.dg/cpp2a/no_unique_address8.C
new file mode 100644
index 0000000..8b63ca3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/no_unique_address8.C
@@ -0,0 +1,11 @@
+// PR c++/98463
+// { dg-do compile { target c++11 } }
+
+template <typename T> struct A { constexpr A () : a() {} [[no_unique_address]] T a; };
+template <unsigned long, typename...> struct B;
+template <unsigned long T, typename U, typename... V>
+struct B<T, U, V...> : B<1, V...>, A<U> {};
+template <unsigned long T, typename U> struct B<T, U> : A<U> {};
+template <typename... h> struct C : B<0, h...> {};
+struct D {};
+struct E { C<int, D> k; virtual ~E (); } a;
diff --git a/gcc/testsuite/g++.dg/cpp2a/no_unique_address9.C b/gcc/testsuite/g++.dg/cpp2a/no_unique_address9.C
new file mode 100644
index 0000000..7837acf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/no_unique_address9.C
@@ -0,0 +1,50 @@
+// PR c++/97566
+// { dg-do compile { target c++14 } }
+
+// error disappears if E doesn't inherit from B
+struct B {};
+struct E : B {};
+
+struct counter {
+ constexpr void inc() { size++; }
+
+ // error disappears if you remove or reorder this value
+ int unused = 0;
+ int size = 0;
+ [[no_unique_address]] E empty = {};
+};
+
+#define SA(X) static_assert((X),#X)
+
+constexpr int test1() {
+ counter x;
+ x.inc();
+ return x.size;
+}
+SA(test1() == 1);
+
+constexpr int test2() {
+ counter x = { 0, 1, {} };
+ x.inc();
+ return x.size;
+}
+SA(test2() == 2);
+
+counter y;
+
+struct counter2 {
+ constexpr counter2() { inc(); }
+ constexpr void inc() { size++; }
+
+ // error disappears if you remove or reorder this value
+ int unused = 0;
+ int size = 0;
+ [[no_unique_address]] E empty = {};
+};
+
+constexpr int test3() {
+ counter2 x;
+ x.inc();
+ return x.size;
+}
+SA(test3() == 2);
diff --git a/gcc/testsuite/g++.dg/cpp2a/spaceship-p1186.C b/gcc/testsuite/g++.dg/cpp2a/spaceship-p1186.C
new file mode 100644
index 0000000..a979fcb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/spaceship-p1186.C
@@ -0,0 +1,117 @@
+// PR c++/96299
+// P1186R3
+// { dg-do compile { target c++20 } }
+
+#include <compare>
+
+struct H {
+ bool operator==(H const &) const;
+ bool operator<(H const &) const;
+};
+
+// Can't deduce category from op< and op==.
+struct A {
+ int i;
+ char c;
+ H h; // { dg-error "operator<=>" }
+ auto operator<=>(A const &) const = default;
+};
+
+// OK, explicit return type tells us how to interpret op</==.
+struct B {
+ int i;
+ char c;
+ H h;
+ std::strong_ordering operator<=>(B const &) const = default;
+};
+
+struct C {
+ bool operator<(C const &) const;
+};
+
+// C's op< isn't enough, need op== as well.
+struct D {
+ C c; // { dg-error "operator<=>" }
+ std::strong_ordering operator<=>(D const &) const = default;
+};
+
+struct E {
+ std::partial_ordering operator<=>(E const &) const;
+};
+
+// Can't use a weak op<=> to build a strong op<=>.
+struct F {
+ E e; // { dg-error "strong_ordering" }
+ H h;
+ std::strong_ordering operator<=>(F const &) const = default;
+};
+
+struct G {
+ std::strong_ordering operator<=>(G const &) const;
+};
+
+// OK, uses op<=> for g and op</op== for h.
+struct I {
+ G g;
+ H h;
+ std::partial_ordering operator<=>(I const &) const = default;
+};
+
+template <class T>
+struct J {
+ T t; // { dg-error "no match|ambiguous" }
+ auto operator<=>(J const &) const = default;
+};
+
+template <class T>
+struct K {
+ T t; // { dg-error "no match" }
+ std::partial_ordering operator<=>(K const &) const = default;
+};
+
+template <class T>
+struct M {
+ T t; // { dg-error "no match|strong_ordering" }
+ std::strong_ordering operator<=>(M const &) const = default;
+};
+
+// Test that we don't fall back to </== if <=> is ambiguous.
+struct N {
+ bool operator==(N const &) const;
+ bool operator<(N const &) const;
+};
+template <class T>
+std::partial_ordering operator<=>(N const &, T&&);
+template <class T>
+std::partial_ordering operator<=>(T&&, N const &);
+
+void
+foo (A &a1, A &a2, B &b1, B &b2, D& d1, D& d2, F& f1, F& f2, I& i1, I& i2)
+{
+ auto a = a1 < a2; // { dg-error "deleted" }
+ auto b = b1 < b2;
+ auto d = d1 < d2; // { dg-error "deleted" }
+ auto f = f1 < f2; // { dg-error "deleted" }
+ auto i = i1 < i2;
+
+ auto j1 = J<int>() < J<int>();
+ auto j2 = J<H>() < J<H>(); // { dg-error "deleted" }
+ auto j3 = J<C>() < J<C>(); // { dg-error "deleted" }
+ auto j4 = J<E>() < J<E>();
+ auto j5 = J<G>() < J<G>();
+ auto j6 = J<N>() < J<N>(); // { dg-error "deleted" }
+
+ auto k1 = K<int>() < K<int>();
+ auto k2 = K<H>() < K<H>();
+ auto k3 = K<C>() < K<C>(); // { dg-error "deleted" }
+ auto k4 = K<E>() < K<E>();
+ auto k5 = K<G>() < K<G>();
+ auto k6 = K<N>() < K<N>(); // { dg-error "deleted" }
+
+ auto m1 = M<int>() < M<int>();
+ auto m2 = M<H>() < M<H>();
+ auto m3 = M<C>() < M<C>(); // { dg-error "deleted" }
+ auto m4 = M<E>() < M<E>(); // { dg-error "deleted" }
+ auto m5 = M<G>() < M<G>();
+ auto m6 = M<N>() < M<N>(); // { dg-error "deleted" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg2.C b/gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg2.C
index 486db6c..c6acb7b 100644
--- a/gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg2.C
+++ b/gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg2.C
@@ -14,9 +14,9 @@ bool operator<(const X<T>&, const X<T>&) { return true; }
struct Y
{
int a;
- X<int> c;
+ X<int> c; // { dg-error "no match" }
- auto operator <=>(Y const&) const = default; // { dg-error "no match" }
+ auto operator <=>(Y const&) const = default;
};
void f()
diff --git a/gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg5.C b/gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg5.C
new file mode 100644
index 0000000..a01d3d3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg5.C
@@ -0,0 +1,16 @@
+// { dg-do compile { target c++20 } }
+// { dg-options "" }
+
+#include <compare>
+
+struct C {
+ int y;
+ int x[]; // { dg-message "cannot default compare flexible array member" }
+ auto operator<=>(C const&) const = default; // { dg-message "is implicitly deleted because the default definition would be ill-formed" }
+};
+
+bool
+foo (C &c1, C &c2)
+{
+ return c1 > c2; // { dg-error "use of deleted function" }
+}
diff --git a/gcc/testsuite/g++.dg/cpp2a/spaceship-synth10.C b/gcc/testsuite/g++.dg/cpp2a/spaceship-synth10.C
new file mode 100644
index 0000000..235e002
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/spaceship-synth10.C
@@ -0,0 +1,57 @@
+// { dg-do run { target c++20 } }
+// { dg-options "" }
+
+#include <compare>
+
+struct C {
+ int y;
+ int x[4];
+ auto operator<=>(C const&) const = default;
+};
+
+struct D {
+ int y;
+ int x[1];
+ auto operator<=>(D const&) const = default;
+};
+
+struct E {
+ int y;
+ int x[0];
+ auto operator<=>(E const&) const = default;
+};
+
+int
+main ()
+{
+ constexpr C c1 = { 1, { 2, 3, 4, 5 } };
+ constexpr C c2 = { 1, { 2, 3, 5, 4 } };
+ constexpr C c3 = { 1, { 2, 2, 6, 7 } };
+ static_assert (c1 < c2);
+ static_assert (c3 < c1);
+ constexpr D d1 = { 1, { 2 } };
+ constexpr D d2 = { 1, { 3 } };
+ constexpr D d3 = { 1, { 1 } };
+ static_assert (d1 < d2);
+ static_assert (d3 < d1);
+ constexpr E e1 = { 1, {} };
+ constexpr E e2 = { 2, {} };
+ constexpr E e3 = { 1, {} };
+ static_assert (e1 < e2);
+ static_assert (e1 == e3);
+ C c4 = { 1, { 2, 3, 4, 5 } };
+ C c5 = { 1, { 2, 3, 5, 4 } };
+ C c6 = { 1, { 2, 2, 6, 7 } };
+ if (c4 >= c5 || c6 >= c4)
+ __builtin_abort ();
+ D d4 = { 1, { 2 } };
+ D d5 = { 1, { 3 } };
+ D d6 = { 1, { 1 } };
+ if (d4 >= d5 || d6 >= d4)
+ __builtin_abort ();
+ E e4 = { 1, {} };
+ E e5 = { 2, {} };
+ E e6 = { 1, {} };
+ if (e4 >= e5 || e4 != e6)
+ __builtin_abort ();
+}
diff --git a/gcc/testsuite/g++.dg/cpp2a/using-enum-7.C b/gcc/testsuite/g++.dg/cpp2a/using-enum-7.C
new file mode 100644
index 0000000..4ba3b9e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/using-enum-7.C
@@ -0,0 +1,27 @@
+// PR c++/97874
+// { dg-do compile { target c++20 } }
+
+struct A { enum E { kl }; };
+
+template <typename UQ>
+int
+v4 ()
+{
+ using UQ::kl;
+ return kl;
+}
+
+template <typename UQ>
+int
+v5 ()
+{
+ using UQ::kl; // { dg-error "not a class" }
+ return kl; // { dg-error "not declared" }
+}
+
+int main()
+{
+ v4<A>();
+ v4<A::E>();
+ v5<int>();
+}
diff --git a/gcc/testsuite/g++.dg/debug/debug.exp b/gcc/testsuite/g++.dg/debug/debug.exp
index 306fbbf..2448ff6 100644
--- a/gcc/testsuite/g++.dg/debug/debug.exp
+++ b/gcc/testsuite/g++.dg/debug/debug.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp b/gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp
index 0bf1af9..bcefc2d 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/inline-ns-2.C b/gcc/testsuite/g++.dg/debug/dwarf2/inline-ns-2.C
index 4d9aed7..c244f8f 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/inline-ns-2.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/inline-ns-2.C
@@ -1,4 +1,5 @@
// { dg-options "-O2 -gdwarf-5 -dA" }
+// { dg-skip-if "AIX DWARF5" { powerpc-ibm-aix* } }
// { dg-final { scan-assembler-times " DW_AT_export_symbols" 2 } }
// { dg-final { scan-assembler-not "DIE \\(\[^\n\r\]*\\) DW_TAG_imported_module" } }
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-2.C b/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-2.C
index 63052d6..9858cf1 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-2.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-2.C
@@ -1,6 +1,7 @@
// { dg-do compile { target c++17 } }
// { dg-options "-O -gdwarf-5 -dA -gno-strict-dwarf" }
// { dg-require-weak "" }
+// { dg-skip-if "AIX DWARF5" { powerpc-ibm-aix* } }
// { dg-final { scan-assembler-not "DW_TAG_member" } }
inline int a;
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-3.C b/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-3.C
index 7225258..6345b5e 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-3.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/inline-var-3.C
@@ -2,6 +2,7 @@
// { dg-do compile { target c++17 } }
// { dg-options "-O -gdwarf-5 -dA -gno-strict-dwarf -fno-eliminate-unused-debug-symbols" }
// { dg-require-weak "" }
+// { dg-skip-if "AIX DWARF5" { powerpc-ibm-aix* } }
// { dg-final { scan-assembler-times " DW_AT_inline \\(0x3\\)" 2 } }
// { dg-final { scan-assembler-times "0x3\[^\n\r]* DW_AT_inline" 4 } }
// { dg-final { scan-assembler-times "0x1\[^\n\r]* DW_AT_inline" 2 } }
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp11.C b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp11.C
index 6bdc175..4066c2b 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp11.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp11.C
@@ -1,5 +1,6 @@
// { dg-do compile }
// { dg-options "-O -std=c++11 -gdwarf-5 -dA" }
+// { dg-skip-if "AIX DWARF5" { powerpc-ibm-aix* } }
// DW_LANG_C_plus_plus_11 = 0x001a
// { dg-final { scan-assembler "0x1a\[^\n\r]* DW_AT_language" } } */
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp14.C b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp14.C
index 4fbc075..bb587be 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp14.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp14.C
@@ -1,5 +1,6 @@
// { dg-do compile }
// { dg-options "-O -std=c++14 -gdwarf-5 -dA" }
+// { dg-skip-if "AIX DWARF5" { powerpc-ibm-aix* } }
// DW_LANG_C_plus_plus_14 = 0x0021
// { dg-final { scan-assembler "0x21\[^\n\r]* DW_AT_language" } } */
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp17.C b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp17.C
index 460294c..a1e3ccc 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp17.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp17.C
@@ -1,5 +1,6 @@
// { dg-do compile }
// { dg-options "-O -std=c++17 -gdwarf-5 -dA" }
+// { dg-skip-if "AIX DWARF5" { powerpc-ibm-aix* } }
// For -gdwarf-6 hopefully DW_LANG_C_plus_plus_17
// DW_LANG_C_plus_plus_14 = 0x0021
// { dg-final { scan-assembler "0x21\[^\n\r]* DW_AT_language" } } */
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp20.C b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp20.C
index abd7351..62abd61 100644
--- a/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp20.C
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp20.C
@@ -1,5 +1,6 @@
// { dg-do compile }
// { dg-options "-O -std=c++20 -gdwarf-5 -dA" }
+// { dg-skip-if "AIX DWARF5" { powerpc-ibm-aix* } }
// For -gdwarf-6 hopefully DW_LANG_C_plus_plus_20
// DW_LANG_C_plus_plus_14 = 0x0021
// { dg-final { scan-assembler "0x21\[^\n\r]* DW_AT_language" } } */
diff --git a/gcc/testsuite/g++.dg/dfp/dfp.exp b/gcc/testsuite/g++.dg/dfp/dfp.exp
index 672ca03..dedde23 100644
--- a/gcc/testsuite/g++.dg/dfp/dfp.exp
+++ b/gcc/testsuite/g++.dg/dfp/dfp.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2020 Free Software Foundation, Inc.
+# Copyright (C) 2005-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/dg.exp b/gcc/testsuite/g++.dg/dg.exp
index fce7c6c..8a91898 100644
--- a/gcc/testsuite/g++.dg/dg.exp
+++ b/gcc/testsuite/g++.dg/dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2000-2020 Free Software Foundation, Inc.
+# Copyright (C) 2000-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/diagnostic/nullptr.C b/gcc/testsuite/g++.dg/diagnostic/nullptr.C
new file mode 100644
index 0000000..bc0d829
--- /dev/null
+++ b/gcc/testsuite/g++.dg/diagnostic/nullptr.C
@@ -0,0 +1,8 @@
+// PR c++/97517
+// { dg-do compile { target c++20 } }
+// Test that we print "decltype(nullptr)" correctly.
+
+template<typename T> struct Trait { static constexpr bool value = false; };
+template<typename T> concept Concept = Trait<T>::value; // { dg-message {\[with T = std::nullptr_t\]} }
+static_assert( Concept<decltype(nullptr)> ); // { dg-error "static assertion failed" }
+// { dg-message "constraints not satisfied" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/diagnostic/pr96045-1.C b/gcc/testsuite/g++.dg/diagnostic/pr96045-1.C
new file mode 100644
index 0000000..b84a5d5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/diagnostic/pr96045-1.C
@@ -0,0 +1,4 @@
+// PR 96045 EOF location
+
+template <class> class A {};
+struct A <int> // { dg-error "15:" }
diff --git a/gcc/testsuite/g++.dg/diagnostic/pr96045-2.C b/gcc/testsuite/g++.dg/diagnostic/pr96045-2.C
new file mode 100644
index 0000000..1009ad0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/diagnostic/pr96045-2.C
@@ -0,0 +1,6 @@
+// PR 96045 EOF location
+
+template <class> class A {};
+struct A <int> // { dg-error "15:" }
+/* A comment */
+
diff --git a/gcc/testsuite/g++.dg/diagnostic/pr96045-3.C b/gcc/testsuite/g++.dg/diagnostic/pr96045-3.C
new file mode 100644
index 0000000..ad1f2a5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/diagnostic/pr96045-3.C
@@ -0,0 +1,6 @@
+// PR 96045 EOF location
+
+#define BORKED <int> // { dg-error "20:" }
+
+template <class> class A {};
+struct A BORKED // { dg-message "10: in expansion of" }
diff --git a/gcc/testsuite/g++.dg/diagnostic/unclosed-extern-c.C b/gcc/testsuite/g++.dg/diagnostic/unclosed-extern-c.C
index f905e4f..4dad8a2 100644
--- a/gcc/testsuite/g++.dg/diagnostic/unclosed-extern-c.C
+++ b/gcc/testsuite/g++.dg/diagnostic/unclosed-extern-c.C
@@ -10,4 +10,4 @@ void bar (void);
void test (void);
// { message "12: to match this '.'" "" { target *-*-* } open_extern_c }
-/* { dg-error "-:expected '.' at end of input" "" { target *-*-* } .+1 } */
+/* { dg-error "18:expected '.' at end of input" "" { target *-*-* } .-2 } */
diff --git a/gcc/testsuite/g++.dg/diagnostic/unclosed-function.C b/gcc/testsuite/g++.dg/diagnostic/unclosed-function.C
index 4d841d5..ff94bc7 100644
--- a/gcc/testsuite/g++.dg/diagnostic/unclosed-function.C
+++ b/gcc/testsuite/g++.dg/diagnostic/unclosed-function.C
@@ -1,4 +1,3 @@
void test (void)
{ /* { dg-message "1: to match this '.'" } */
- int filler;
- /* { dg-error "-:expected '.' at end of input" "" { target *-*-* } .+1 } */
+ int filler; /* { dg-error "14:expected '.' at end of input" } */
diff --git a/gcc/testsuite/g++.dg/diagnostic/unclosed-namespace.C b/gcc/testsuite/g++.dg/diagnostic/unclosed-namespace.C
index 0887bc1..fc3fc08 100644
--- a/gcc/testsuite/g++.dg/diagnostic/unclosed-namespace.C
+++ b/gcc/testsuite/g++.dg/diagnostic/unclosed-namespace.C
@@ -1,3 +1,2 @@
namespace unclosed { /* { dg-message "20: to match this '.'" } */
-int filler;
-/* { dg-error "-:expected '.' at end of input" "" { target *-*-* } .+1 } */
+int filler; /* { dg-error "12:expected '.' at end of input" } */
diff --git a/gcc/testsuite/g++.dg/diagnostic/unclosed-struct.C b/gcc/testsuite/g++.dg/diagnostic/unclosed-struct.C
index e68e599..e3faaae 100644
--- a/gcc/testsuite/g++.dg/diagnostic/unclosed-struct.C
+++ b/gcc/testsuite/g++.dg/diagnostic/unclosed-struct.C
@@ -1,3 +1,2 @@
struct unclosed { /* { dg-message "17: to match this '.'" } */
- int dummy;
- // { dg-error "-:expected" "" { target *-*-* } .+1 }
+ int dummy; // { dg-error "13:expected" }
diff --git a/gcc/testsuite/g++.dg/eh/spbp.C b/gcc/testsuite/g++.dg/eh/spbp.C
index 6f228f2..6afd539 100644
--- a/gcc/testsuite/g++.dg/eh/spbp.C
+++ b/gcc/testsuite/g++.dg/eh/spbp.C
@@ -1,6 +1,6 @@
/* { dg-do run } */
/* { dg-options "-gdwarf-2" } */
-/* { dg-skip-if "No Dwarf" { { *-*-aix* hppa*-*-hpux* } && { ! hppa*64*-*-* } } } */
+/* { dg-skip-if "No Dwarf" { { hppa*-*-hpux* } && { ! hppa*64*-*-* } } } */
/* { dg-require-effective-target alloca } */
/* This was a bug on x86-darwin, where the register numbering for SP
diff --git a/gcc/testsuite/g++.dg/ext/builtin-has-attribute2.C b/gcc/testsuite/g++.dg/ext/builtin-has-attribute2.C
new file mode 100644
index 0000000..aba7932
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/builtin-has-attribute2.C
@@ -0,0 +1,8 @@
+// PR c++/98355
+// { dg-do compile { target c++11 } }
+
+struct S { int a; };
+template <int> struct T
+{
+ static_assert (!__builtin_has_attribute (((S*)0) -> a, packed), ""); // { dg-message "sorry, unimplemented: .__builtin_has_attribute. with dependent argument not supported yet" }
+};
diff --git a/gcc/testsuite/g++.dg/ext/pr84598.C b/gcc/testsuite/g++.dg/ext/pr84598.C
index 8b78e0f..1dd09f9 100644
--- a/gcc/testsuite/g++.dg/ext/pr84598.C
+++ b/gcc/testsuite/g++.dg/ext/pr84598.C
@@ -1,4 +1,4 @@
// { dg-options "-fpermissive -w" }
-template<int b> __attribute__ a([] { class c, __attribute__(vector_size(operator+()))) d; // { dg-error "" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+template<int b> __attribute__ a([] { class c, __attribute__(vector_size(operator+()))) d; // { dg-error "before" }
+// { dg-error "90:expected" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/gcov/gcov-17.C b/gcc/testsuite/g++.dg/gcov/gcov-17.C
new file mode 100644
index 0000000..d11883c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gcov/gcov-17.C
@@ -0,0 +1,40 @@
+/* { dg-options "--coverage -std=c++11" } */
+/* { dg-do run { target native } } */
+
+template <class T> class Foo
+{
+public:
+ Foo () : b (1000) {}
+
+ void inc () { b++; }
+
+private:
+ int b;
+};
+
+template class Foo<int>;
+template class Foo<char>;
+
+int
+main (void)
+{
+ int i, total;
+ Foo<int> counter;
+
+ counter.inc ();
+ counter.inc ();
+ total = 0;
+
+ for (i = 0; i < 10; i++)
+ total += i;
+
+ int v = total > 100 ? 1 : 2;
+
+ if (total != 45)
+ __builtin_printf ("Failure\n");
+ else
+ __builtin_printf ("Success\n");
+ return 0;
+}
+
+/* { dg-final { run-gcov-pytest gcov-17.C "test-gcov-17.py" } } */
diff --git a/gcc/testsuite/g++.dg/gcov/gcov.exp b/gcc/testsuite/g++.dg/gcov/gcov.exp
index d004a50..1b9fdca 100644
--- a/gcc/testsuite/g++.dg/gcov/gcov.exp
+++ b/gcc/testsuite/g++.dg/gcov/gcov.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/gcov/gcov.py b/gcc/testsuite/g++.dg/gcov/gcov.py
new file mode 100644
index 0000000..a8c4ea9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gcov/gcov.py
@@ -0,0 +1,10 @@
+import gzip
+import json
+import os
+
+
+def gcov_from_env():
+ # return parsed JSON content a GCOV_PATH file
+ json_filename = os.environ['GCOV_PATH'] + '.gcov.json.gz'
+ json_data = gzip.open(json_filename).read()
+ return json.loads(json_data)
diff --git a/gcc/testsuite/g++.dg/gcov/pr98273.C b/gcc/testsuite/g++.dg/gcov/pr98273.C
new file mode 100644
index 0000000..bfa83cb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gcov/pr98273.C
@@ -0,0 +1,24 @@
+/* PR gcov-profile/98273 */
+
+/* { dg-options "--coverage -std=c++11" } */
+/* { dg-do run { target native } } */
+
+int
+main ()
+{
+ int i = 42;
+ {
+ auto f = [] () {
+ auto g = [] () {};
+ g ();
+ g ();
+ };
+ f ();
+ }
+ ++i;
+ ++i;
+ ++i;
+ return 45 - i;
+}
+
+/* { dg-final { run-gcov-pytest pr98273.C "test-pr98273.py" } } */
diff --git a/gcc/testsuite/g++.dg/gcov/test-gcov-17.py b/gcc/testsuite/g++.dg/gcov/test-gcov-17.py
new file mode 100644
index 0000000..ec5df3d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gcov/test-gcov-17.py
@@ -0,0 +1,37 @@
+from gcov import gcov_from_env
+
+import pytest
+
+
+@pytest.fixture(scope='function', autouse=True)
+def gcov():
+ return gcov_from_env()
+
+
+def test_basics(gcov):
+ files = gcov['files']
+ assert len(files) == 1
+ functions = files[0]['functions']
+ assert len(functions) == 5
+
+
+def test_lines(gcov):
+ lines = gcov['files'][0]['lines']
+ linesdict = {}
+ for line in lines:
+ lineno = int(line['line_number'])
+ linesdict.setdefault(lineno, [])
+ linesdict[lineno].append(line)
+
+ line9 = linesdict[9]
+ assert len(line9) == 2
+ assert line9[0]['function_name'] == '_ZN3FooIcE3incEv'
+ assert line9[1]['function_name'] == '_ZN3FooIiE3incEv'
+ assert line9[0]['count'] == 0
+ assert line9[1]['count'] == 2
+ assert line9[0]['unexecuted_block']
+ assert not line9[1]['unexecuted_block']
+ assert linesdict[31][0]['unexecuted_block']
+ assert linesdict[34][0]['unexecuted_block']
+ assert not linesdict[37][0]['unexecuted_block']
+ assert 32 not in linesdict
diff --git a/gcc/testsuite/g++.dg/gcov/test-pr98273.py b/gcc/testsuite/g++.dg/gcov/test-pr98273.py
new file mode 100644
index 0000000..6cb39d1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gcov/test-pr98273.py
@@ -0,0 +1,27 @@
+from gcov import gcov_from_env
+
+import pytest
+
+
+@pytest.fixture(scope='function', autouse=True)
+def gcov():
+ return gcov_from_env()
+
+
+def test_basics(gcov):
+ files = gcov['files']
+ assert len(files) == 1
+ functions = files[0]['functions']
+ assert len(functions) == 3
+
+
+def test_lines(gcov):
+ lines = gcov['files'][0]['lines']
+ linesdict = {}
+ for line in lines:
+ linesdict[int(line['line_number'])] = line
+
+ assert linesdict[21]['function_name'] == 'main'
+ assert linesdict[15]['function_name'] == '_ZZ4mainENKUlvE_clEv'
+ assert (linesdict[12]['function_name']
+ == '_ZZZ4mainENKUlvE_clEvENKUlvE_clEv')
diff --git a/gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp b/gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp
index dfd2eb5..7c29591 100644
--- a/gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp
+++ b/gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/g++.dg/goacc/goacc.exp b/gcc/testsuite/g++.dg/goacc/goacc.exp
index 417e40d..5656e26 100644
--- a/gcc/testsuite/g++.dg/goacc/goacc.exp
+++ b/gcc/testsuite/g++.dg/goacc/goacc.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/g++.dg/gomp/declare-target-3.C b/gcc/testsuite/g++.dg/gomp/declare-target-3.C
new file mode 100644
index 0000000..1e23c86
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gomp/declare-target-3.C
@@ -0,0 +1,31 @@
+// { dg-do compile }
+// { dg-additional-options "-fdump-tree-gimple" }
+
+// Test implicit marking of declare target to.
+
+int foo () { return 1; }
+int bar () { return 2; } // Implicitly marked (due to b)
+int baz () { return 3; } // Implicitly marked (due to d via c)
+int qux () { return 4; } // Implicitly marked (due to g via f and e)
+
+int a = foo ();
+int b = bar (); // Explicitly marked
+int c = baz (); // Implicitly marked (due to d)
+int *d = &c; // Explicitly marked
+int e = qux (); // Implicitly marked (due to g via f)
+int f = e + 1; // Implicitly marked (due to g)
+int *g = &f; // Explicitly marked
+
+#pragma omp declare target to(b, d, g)
+
+// { dg-final { scan-tree-dump-not "__attribute__\\\(\\\(omp declare target\\\)\\\)\\\nint foo \\\(\\\)" "gimple" } }
+// { dg-final { scan-tree-dump "__attribute__\\\(\\\(omp declare target\\\)\\\)\\\nint bar \\\(\\\)" "gimple" } }
+// { dg-final { scan-tree-dump "__attribute__\\\(\\\(omp declare target\\\)\\\)\\\nint baz \\\(\\\)" "gimple" } }
+// { dg-final { scan-tree-dump "__attribute__\\\(\\\(omp declare target\\\)\\\)\\\nint qux \\\(\\\)" "gimple" } }
+// { dg-final { scan-assembler-not "\\\.offload_var_table:\\n.+\\\.quad\\s+a" { target { offloading_enabled } } } }
+// { dg-final { scan-assembler "\\\.offload_var_table:\\n.+\\\.quad\\s+b" { target { offloading_enabled } } } }
+// { dg-final { scan-assembler "\\\.offload_var_table:\\n.+\\\.quad\\s+c" { target { offloading_enabled } } } }
+// { dg-final { scan-assembler "\\\.offload_var_table:\\n.+\\\.quad\\s+d" { target { offloading_enabled } } } }
+// { dg-final { scan-assembler "\\\.offload_var_table:\\n.+\\\.quad\\s+e" { target { offloading_enabled } } } }
+// { dg-final { scan-assembler "\\\.offload_var_table:\\n.+\\\.quad\\s+f" { target { offloading_enabled } } } }
+// { dg-final { scan-assembler "\\\.offload_var_table:\\n.+\\\.quad\\s+g" { target { offloading_enabled } } } }
diff --git a/gcc/testsuite/g++.dg/gomp/gomp.exp b/gcc/testsuite/g++.dg/gomp/gomp.exp
index f5c68fb..25f6f13 100644
--- a/gcc/testsuite/g++.dg/gomp/gomp.exp
+++ b/gcc/testsuite/g++.dg/gomp/gomp.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/g++.dg/gomp/pr98383.C b/gcc/testsuite/g++.dg/gomp/pr98383.C
new file mode 100644
index 0000000..8106138
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gomp/pr98383.C
@@ -0,0 +1,18 @@
+// PR c++/98383
+// { dg-options "-fopenmp -O1" }
+
+int bar (const int &);
+
+void
+foo (int *a)
+{
+#pragma omp simd
+ for (int i = 0; i < bar (8); ++i)
+ a[i]++;
+#pragma omp simd
+ for (int i = bar (9); i < 16; ++i)
+ a[i]++;
+#pragma omp simd
+ for (int i = 0; i < 32; i += bar (10))
+ a[i]++;
+}
diff --git a/gcc/testsuite/g++.dg/gomp/task-detach-1.C b/gcc/testsuite/g++.dg/gomp/task-detach-1.C
new file mode 100644
index 0000000..6028cb4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gomp/task-detach-1.C
@@ -0,0 +1,29 @@
+// { dg-do compile }
+// { dg-options "-fopenmp" }
+
+typedef enum omp_event_handle_t
+{
+ __omp_event_handle_t_max__ = __UINTPTR_MAX__
+} omp_event_handle_t;
+
+template <typename T>
+void foo ()
+{
+ T t;
+ #pragma omp task detach (t)
+ ;
+}
+
+template <typename T>
+void bar ()
+{
+ T t;
+ #pragma omp task detach (t) // { dg-error "'detach' clause event handle has type 'int' rather than 'omp_event_handle_t'" }
+ ;
+}
+
+void f()
+{
+ foo <omp_event_handle_t> ();
+ bar <int> (); // { dg-message "required from here" }
+}
diff --git a/gcc/testsuite/g++.dg/gomp/tls-5.C b/gcc/testsuite/g++.dg/gomp/tls-5.C
index b18a127..eb187b6 100644
--- a/gcc/testsuite/g++.dg/gomp/tls-5.C
+++ b/gcc/testsuite/g++.dg/gomp/tls-5.C
@@ -1,8 +1,8 @@
// The reference temp should be TLS, not normal data.
// { dg-require-effective-target c++11 }
// { dg-final { scan-assembler-not "\\.data" { target tls_native xfail powerpc-*-aix* } } }
-// { dg-final { scan-assembler-symbol-section {^_?ir$} {^\.tbss|\[TL\]} } }
-// { dg-final { scan-assembler-symbol-section {^_?_ZGR2ir_$} {^\.tdata|\[TL\]} } }
+// { dg-final { scan-assembler-symbol-section {^_?ir$} {^\.tbss|\[TL\]} { target tls_native } } }
+// { dg-final { scan-assembler-symbol-section {^_?_ZGR2ir_$} {^\.tdata|\[TL\]} { target tls_native } } }
extern int&& ir;
#pragma omp threadprivate (ir)
diff --git a/gcc/testsuite/g++.dg/graphite/graphite.exp b/gcc/testsuite/g++.dg/graphite/graphite.exp
index cab0910..ed70cc0 100644
--- a/gcc/testsuite/g++.dg/graphite/graphite.exp
+++ b/gcc/testsuite/g++.dg/graphite/graphite.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/hwasan/hwasan.exp b/gcc/testsuite/g++.dg/hwasan/hwasan.exp
index 559cf06..8b49178 100644
--- a/gcc/testsuite/g++.dg/hwasan/hwasan.exp
+++ b/gcc/testsuite/g++.dg/hwasan/hwasan.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2019 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/g++.dg/init/array60.C b/gcc/testsuite/g++.dg/init/array60.C
new file mode 100644
index 0000000..db5095a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/array60.C
@@ -0,0 +1,8 @@
+// PR c++/91506
+
+double
+test(int *arr, int x)
+{
+ double ret(double(arr[x]) + 1);
+ return ret;
+}
diff --git a/gcc/testsuite/g++.dg/init/elide7.C b/gcc/testsuite/g++.dg/init/elide7.C
new file mode 100644
index 0000000..d4bacaf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/elide7.C
@@ -0,0 +1,9 @@
+// PR c++/98744
+// { dg-additional-options "-O2 -fno-inline -Wmaybe-uninitialized" }
+
+struct A {};
+struct B : virtual A {};
+struct C : B {
+ C() : B(B()) {}
+};
+int main() { C c; return 0; }
diff --git a/gcc/testsuite/g++.dg/init/empty3.C b/gcc/testsuite/g++.dg/init/empty3.C
new file mode 100644
index 0000000..510338b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/empty3.C
@@ -0,0 +1,18 @@
+// PR c++/97597
+
+struct pq {
+ pq (const pq &);
+};
+
+struct a9 {
+ operator pq () const;
+};
+
+struct zp : pq {
+ zp (const a9 &k3) : pq (k3) { }
+};
+
+int main()
+{
+ zp z = a9();
+}
diff --git a/gcc/testsuite/g++.dg/init/new26.C b/gcc/testsuite/g++.dg/init/new26.C
index 541de30..75bdcb1 100644
--- a/gcc/testsuite/g++.dg/init/new26.C
+++ b/gcc/testsuite/g++.dg/init/new26.C
@@ -16,8 +16,12 @@ inline void *operator new(__SIZE_TYPE__)
return p;
}
+// C++11 and earlier
inline void operator delete (void*) {}
+// C++14 profile
+inline void operator delete (void*, __SIZE_TYPE__) {}
+
int * __attribute__((noinline)) doit(int n)
{
float *q;
diff --git a/gcc/testsuite/g++.dg/ipa/pr98690.C b/gcc/testsuite/g++.dg/ipa/pr98690.C
new file mode 100644
index 0000000..004418e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/pr98690.C
@@ -0,0 +1,27 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fnon-call-exceptions" } */
+
+int g;
+volatile int v;
+
+static int * __attribute__((noinline))
+almost_useless_return (void)
+{
+ v = 1;
+ return &g;
+}
+
+static void __attribute__((noinline))
+foo (void)
+{
+ int *p = almost_useless_return ();
+ int i = *p;
+ v = 2;
+}
+
+int
+main (int argc, char *argv[])
+{
+ foo ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/lookup/scoped1.C b/gcc/testsuite/g++.dg/lookup/scoped1.C
index 663f718..2f7f603 100644
--- a/gcc/testsuite/g++.dg/lookup/scoped1.C
+++ b/gcc/testsuite/g++.dg/lookup/scoped1.C
@@ -4,12 +4,12 @@
struct A
{
static int i1;
- int i2; // { dg-message "declared" }
+ int i2;
static void f1 ();
void f2 ();
};
-struct B: private A { };
+struct B: private A { }; // { dg-message "declared" }
struct C: public B
{
void g ()
diff --git a/gcc/testsuite/g++.dg/lookup/using4.C b/gcc/testsuite/g++.dg/lookup/using4.C
index facb2b4..a9a8ec2 100644
--- a/gcc/testsuite/g++.dg/lookup/using4.C
+++ b/gcc/testsuite/g++.dg/lookup/using4.C
@@ -10,6 +10,6 @@ template <class T>
struct Bar : public Foo<T> {
void foo()
{
- using Foo<T>::i; // { dg-error "member at non-class scope" }
+ using Foo<T>::i; // { dg-error "member at non-class scope" "" { target c++17_down } }
}
};
diff --git a/gcc/testsuite/g++.dg/lookup/using63.C b/gcc/testsuite/g++.dg/lookup/using63.C
new file mode 100644
index 0000000..fd4bf26
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/using63.C
@@ -0,0 +1,17 @@
+// PR c++/98231
+// { dg-do compile }
+
+template <typename, typename = int> struct basic_ostream {};
+namespace N {
+ template <typename Char, typename CharTraits, typename T>
+ void operator<<(basic_ostream<Char, CharTraits>, T);
+}
+basic_ostream<char> os;
+
+template<typename T> void
+foo (T value)
+{
+ using N::operator<<;
+ os << value;
+}
+void bar() { foo (1); }
diff --git a/gcc/testsuite/g++.dg/lookup/using64.C b/gcc/testsuite/g++.dg/lookup/using64.C
new file mode 100644
index 0000000..a50cd273
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/using64.C
@@ -0,0 +1,69 @@
+// PR c++/98687
+// { dg-do compile }
+
+struct S { };
+
+namespace N {
+ template <typename T>
+ bool operator==(T, int);
+
+ template <typename T>
+ void X(T);
+}
+
+namespace M {
+ template <typename T>
+ bool operator==(T, double);
+}
+
+template<typename T>
+bool fn1 (T t)
+{
+ using N::operator==;
+ return t == 1;
+}
+
+template<typename T>
+bool fn2 (T t)
+{
+ // Redeclaration.
+ using N::operator==;
+ using N::operator==;
+ return t == 1;
+}
+
+template<typename T>
+bool fn3 (T t)
+{
+ // Need update_local_overload.
+ using N::operator==;
+ using M::operator==;
+ return t == 1;
+}
+
+template<typename T>
+void fn4 (T)
+{
+ struct X { };
+ using N::X;
+ X(1);
+}
+
+template<typename T>
+void fn5 (T)
+{
+ int S;
+ using ::S;
+ struct S s;
+}
+
+void
+g ()
+{
+ S s;
+ fn1 (s);
+ fn2 (s);
+ fn3 (s);
+ fn4 (s);
+ fn5 (s);
+}
diff --git a/gcc/testsuite/g++.dg/lookup/using65.C b/gcc/testsuite/g++.dg/lookup/using65.C
new file mode 100644
index 0000000..bc6c086
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/using65.C
@@ -0,0 +1,17 @@
+// PR c++/98687
+// { dg-do compile }
+
+extern "C" namespace std {
+ double log1p(double);
+}
+namespace std_fallback {
+ template <typename> void log1p();
+}
+template <typename> struct log1p_impl {
+ static int run() {
+ using std::log1p;
+ using std_fallback::log1p;
+ return 0;
+ }
+};
+void log1p() { log1p_impl<int>::run(); }
diff --git a/gcc/testsuite/g++.dg/lto/lto.exp b/gcc/testsuite/g++.dg/lto/lto.exp
index 06bdaff..211e052 100644
--- a/gcc/testsuite/g++.dg/lto/lto.exp
+++ b/gcc/testsuite/g++.dg/lto/lto.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/modules/access-1_a.C b/gcc/testsuite/g++.dg/modules/access-1_a.C
new file mode 100644
index 0000000..2417017
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/access-1_a.C
@@ -0,0 +1,10 @@
+// { dg-additional-options -fmodules-ts }
+
+export module Foo;
+// { dg-module-cmi Foo }
+
+export class Base
+{
+public:
+ int m;
+};
diff --git a/gcc/testsuite/g++.dg/modules/access-1_b.C b/gcc/testsuite/g++.dg/modules/access-1_b.C
new file mode 100644
index 0000000..454dea5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/access-1_b.C
@@ -0,0 +1,12 @@
+// { dg-additional-options -fmodules-ts }
+
+export module Bar;
+// { dg-module-cmi Bar }
+
+import Foo;
+
+export class Derived : public Base
+{
+private:
+ using Base::m;
+};
diff --git a/gcc/testsuite/g++.dg/modules/access-1_c.C b/gcc/testsuite/g++.dg/modules/access-1_c.C
new file mode 100644
index 0000000..27b84c2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/access-1_c.C
@@ -0,0 +1,10 @@
+// { dg-additional-options -fmodules-ts }
+
+import Bar;
+import Foo;
+
+void foo (Derived *d)
+{
+ d->m = 1; // { dg-error "inaccessible within this context" }
+ static_cast<Base *> (d)->m = 1; //ok
+}
diff --git a/gcc/testsuite/g++.dg/modules/adhoc-1_a.C b/gcc/testsuite/g++.dg/modules/adhoc-1_a.C
new file mode 100644
index 0000000..50067ac
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adhoc-1_a.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+// { dg-module-cmi bob }
+
+export module bob;
+export int massivelongnamethatcausesadhoclocationsokeepaddingcharsyourgettheidea (int);
+ export void massivelongnamethatcausesadhoclocationsokeepaddingcharsyourgettheidea (float);
diff --git a/gcc/testsuite/g++.dg/modules/adhoc-1_b.C b/gcc/testsuite/g++.dg/modules/adhoc-1_b.C
new file mode 100644
index 0000000..59907a0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adhoc-1_b.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts -fdiagnostics-show-caret" }
+
+import bob;
+void foo ()
+{
+ massivelongnamethatcausesadhoclocationsokeepaddingcharsyourgettheidea ();
+}
+
+// { dg-regexp "\n\[^\n]*adhoc-1_b.C:6:74: error: no matching function for call to 'massivelongnamethatcausesadhoclocationsokeepaddingcharsyourgettheidea\\(\\)'\n massivelongnamethatcausesadhoclocationsokeepaddingcharsyourgettheidea \\(\\);\n \\^$" }
+// { dg-regexp "\nIn module bob, imported at \[^\n]*adhoc-1_b.C:3:\n\[^\n]*adhoc-1_a.C:5:12: note: candidate: 'int massivelongnamethatcausesadhoclocationsokeepaddingcharsyourgettheidea@bob\\(int\\)'\n export int massivelongnamethatcausesadhoclocationsokeepaddingcharsyourgettheidea \\(int\\);\n \\^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~$" }
+// { dg-regexp "\nIn module bob, imported at \[^\n]*adhoc-1_b.C:3:\n\[^\n]*adhoc-1_a.C:6:188: note: candidate: 'void massivelongnamethatcausesadhoclocationsokeepaddingcharsyourgettheidea@bob\\(float\\)'\n\[ \t]*export void massivelongnamethatcausesadhoclocationsokeepaddingcharsyourgettheidea \\(float\\);\n\[ \t]*\\^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~?$" }
+// For some reason dg-regexp inserts a blank line
+// { dg-allow-blank-lines-in-output 1 }
diff --git a/gcc/testsuite/g++.dg/modules/adl-1_a.C b/gcc/testsuite/g++.dg/modules/adl-1_a.C
new file mode 100644
index 0000000..d4a53cb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adl-1_a.C
@@ -0,0 +1,13 @@
+// { dg-module-do run }
+// { dg-additional-options -fmodules-ts }
+export module worker;
+// { dg-module-cmi worker }
+
+namespace details {
+
+export int fn (int x)
+{
+ return x;
+}
+
+}
diff --git a/gcc/testsuite/g++.dg/modules/adl-1_b.C b/gcc/testsuite/g++.dg/modules/adl-1_b.C
new file mode 100644
index 0000000..6cf123e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adl-1_b.C
@@ -0,0 +1,18 @@
+// { dg-additional-options -fmodules-ts }
+export module inter;
+// { dg-module-cmi inter }
+
+import worker;
+
+namespace hidden {
+export int fn (int x)
+{
+ return -x;
+}
+}
+
+export template <typename T>
+int TPL (T &t)
+{
+ return fn (t);
+}
diff --git a/gcc/testsuite/g++.dg/modules/adl-1_c.C b/gcc/testsuite/g++.dg/modules/adl-1_c.C
new file mode 100644
index 0000000..8be02e7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adl-1_c.C
@@ -0,0 +1,57 @@
+// { dg-additional-options -fmodules-ts }
+
+import inter;
+
+namespace details
+{
+
+struct X
+{
+
+ int m;
+ X (int m) : m(m)
+ {
+ }
+
+ operator int () const
+ {
+ return m;
+ }
+};
+
+}
+
+namespace hidden
+{
+
+struct Y
+{
+
+ int m;
+ Y (int m) : m(m)
+ {
+ }
+
+ operator int () const
+ {
+ return m;
+ }
+};
+
+}
+
+int main ()
+{
+ details::X x(2);
+ hidden::Y y(2);
+
+ // details::fn@worker is visible from TPL@inter
+ if (TPL (x) != 2) // instantiate TPL<details::X>(T&)
+ return 1;
+
+ // hidden::fn@inter is visible from TPL@inter
+ if (TPL (y) != -2) // instantiate TPL<hidden::Y>(T&)
+ return 2;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/adl-2_a.C b/gcc/testsuite/g++.dg/modules/adl-2_a.C
new file mode 100644
index 0000000..d8f481ca
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adl-2_a.C
@@ -0,0 +1,10 @@
+// { dg-module-do run }
+// { dg-additional-options -fmodules-ts }
+export module foo;
+// { dg-module-cmi foo }
+
+export template <typename T>
+int TPL (T const &t)
+{
+ return frob (t);
+}
diff --git a/gcc/testsuite/g++.dg/modules/adl-2_b.C b/gcc/testsuite/g++.dg/modules/adl-2_b.C
new file mode 100644
index 0000000..60e7943
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adl-2_b.C
@@ -0,0 +1,21 @@
+// { dg-additional-options -fmodules-ts }
+
+export module hidden;
+// { dg-module-cmi hidden }
+
+export struct X
+{
+ int m;
+
+ X(int m) :m(m) {}
+
+ operator int () const
+ {
+ return m;
+ }
+};
+
+export int frob (int x)
+{
+ return x;
+}
diff --git a/gcc/testsuite/g++.dg/modules/adl-2_c.C b/gcc/testsuite/g++.dg/modules/adl-2_c.C
new file mode 100644
index 0000000..9c75b6d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adl-2_c.C
@@ -0,0 +1,17 @@
+// { dg-additional-options -fmodules-ts }
+
+import foo;
+import hidden;
+
+int main ()
+{
+ X x (2);
+
+ if (frob (x) != 2)
+ return 1;
+
+ if (TPL (x) != 2)
+ return 2;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/adl-3_a.C b/gcc/testsuite/g++.dg/modules/adl-3_a.C
new file mode 100644
index 0000000..a263978
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adl-3_a.C
@@ -0,0 +1,12 @@
+// { dg-additional-options -fmodules-ts }
+export module worker;
+// { dg-module-cmi worker }
+
+namespace details {
+
+int fn (int x)
+{
+ return x;
+}
+
+}
diff --git a/gcc/testsuite/g++.dg/modules/adl-3_b.C b/gcc/testsuite/g++.dg/modules/adl-3_b.C
new file mode 100644
index 0000000..1f3011f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adl-3_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+export module inter;
+// { dg-module-cmi inter }
+
+export template <typename T>
+int TPL (T &t)
+{
+ return fn (t);
+}
diff --git a/gcc/testsuite/g++.dg/modules/adl-3_c.C b/gcc/testsuite/g++.dg/modules/adl-3_c.C
new file mode 100644
index 0000000..c4dc0ad
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adl-3_c.C
@@ -0,0 +1,36 @@
+// { dg-additional-options -fmodules-ts }
+
+import inter;
+import worker;
+
+namespace details
+{
+struct X
+{
+
+ int m;
+ X (int m) : m(m)
+ {
+ }
+
+ operator int () const
+ {
+ return m;
+ }
+};
+
+}
+
+int main ()
+{
+ details::X x(2);
+
+ if (fn (x) != 2) // { dg-error "not declared in" }
+ return 1;
+
+ // { dg-regexp "\n\[^\n]*adl-3_b.C:8:13: error: 'fn' was not declared in this scope$" }
+ if (TPL (x) != 2) // { dg-message "required from here" }
+ return 2;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/adl-4_a.C b/gcc/testsuite/g++.dg/modules/adl-4_a.C
new file mode 100644
index 0000000..5d956c0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adl-4_a.C
@@ -0,0 +1,15 @@
+// { dg-additional-options -fmodules-ts }
+export module inter;
+// { dg-module-cmi inter }
+
+namespace hidden {
+// not found via ADL
+int fn (int x);
+
+}
+
+export template <typename T>
+int TPL (T &t)
+{
+ return fn (t);
+}
diff --git a/gcc/testsuite/g++.dg/modules/adl-4_b.C b/gcc/testsuite/g++.dg/modules/adl-4_b.C
new file mode 100644
index 0000000..aa1396f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adl-4_b.C
@@ -0,0 +1,36 @@
+// { dg-additional-options -fmodules-ts }
+
+import inter;
+
+namespace hidden
+{
+
+struct Y
+{
+
+ int m;
+ Y (int m) : m(m)
+ {
+ }
+
+ operator int () const
+ {
+ return m;
+ }
+};
+
+}
+
+int main ()
+{
+ hidden::Y y(2);
+
+ // unexported hidden::fn@inter is not visible from TPL@inter
+ if (TPL (y) != -2)
+ return 2;
+
+ return 0;
+}
+
+// ADL fails
+// { dg-regexp {[^\n]*/adl-4_a.C:14:[0-9]*: error: 'fn' was not declared in this scope\n} }
diff --git a/gcc/testsuite/g++.dg/modules/adl-5_a.c b/gcc/testsuite/g++.dg/modules/adl-5_a.c
new file mode 100644
index 0000000..5b86922
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adl-5_a.c
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+export module foo;
+// { dg-module-cmi foo }
+
+export template <typename T>
+int TPL (T const &t)
+{
+ return frob (t);
+}
diff --git a/gcc/testsuite/g++.dg/modules/adl-5_b.C b/gcc/testsuite/g++.dg/modules/adl-5_b.C
new file mode 100644
index 0000000..3c64cd4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adl-5_b.C
@@ -0,0 +1,22 @@
+// { dg-additional-options -fmodules-ts }
+
+export module hidden;
+// { dg-module-cmi hidden }
+
+export struct X
+{
+ int m;
+
+ X(int m) :m(m) {}
+
+ operator int () const
+ {
+ return m;
+ }
+};
+
+// Not found via any ADL outside of module hidden
+int frob (int x)
+{
+ return x;
+}
diff --git a/gcc/testsuite/g++.dg/modules/adl-5_c.C b/gcc/testsuite/g++.dg/modules/adl-5_c.C
new file mode 100644
index 0000000..e047aec
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adl-5_c.C
@@ -0,0 +1,17 @@
+// { dg-additional-options -fmodules-ts }
+
+module hidden;
+import foo;
+
+int frob ()
+{
+ X x (2);
+
+ if (frob (x) != 2)
+ return 1;
+
+ if (TPL (x) != 2)
+ return 2;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/adl-5_d.C b/gcc/testsuite/g++.dg/modules/adl-5_d.C
new file mode 100644
index 0000000..9c75b6d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/adl-5_d.C
@@ -0,0 +1,17 @@
+// { dg-additional-options -fmodules-ts }
+
+import foo;
+import hidden;
+
+int main ()
+{
+ X x (2);
+
+ if (frob (x) != 2)
+ return 1;
+
+ if (TPL (x) != 2)
+ return 2;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/alias-1_a.H b/gcc/testsuite/g++.dg/modules/alias-1_a.H
new file mode 100644
index 0000000..8c56836
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/alias-1_a.H
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodule-header -isystem [srcdir]" }
+// { dg-module-cmi {} }
+
+#ifndef ALIAS_1_A
+#define ALIAS_1_A
+
+int frob ();
+
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/alias-1_b.C b/gcc/testsuite/g++.dg/modules/alias-1_b.C
new file mode 100644
index 0000000..b3d7c2d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/alias-1_b.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module -isystem [srcdir]" }
+
+// Alias at the header file. We have one CMI file
+import "alias-1_a.H";
+import <alias-1_a.H>;
+
+int main ()
+{
+ frob ();
+}
+
+// { dg-final { scan-lang-dump-times {CMI is } 1 module } }
diff --git a/gcc/testsuite/g++.dg/modules/alias-1_c.C b/gcc/testsuite/g++.dg/modules/alias-1_c.C
new file mode 100644
index 0000000..6f9f1aa
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/alias-1_c.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts -isystem [srcdir]" }
+// { dg-module-cmi bob }
+
+export module bob;
+import "alias-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/alias-1_d.C b/gcc/testsuite/g++.dg/modules/alias-1_d.C
new file mode 100644
index 0000000..9b481e5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/alias-1_d.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts -isystem [srcdir]" }
+// { dg-module-cmi kevin }
+
+export module kevin;
+import <alias-1_a.H>;
diff --git a/gcc/testsuite/g++.dg/modules/alias-1_e.C b/gcc/testsuite/g++.dg/modules/alias-1_e.C
new file mode 100644
index 0000000..862ae32
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/alias-1_e.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -isystem [srcdir]" }
+
+import bob;
+import kevin;
diff --git a/gcc/testsuite/g++.dg/modules/alias-1_f.C b/gcc/testsuite/g++.dg/modules/alias-1_f.C
new file mode 100644
index 0000000..4c694d1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/alias-1_f.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module -isystem [srcdir]" }
+
+import kevin;
+import bob;
diff --git a/gcc/testsuite/g++.dg/modules/alias-2_a.H b/gcc/testsuite/g++.dg/modules/alias-2_a.H
new file mode 100644
index 0000000..1befe85
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/alias-2_a.H
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodule-header -isystem [srcdir]/sys" }
+// { dg-module-cmi {} }
+// { dg-module-headers test sys/alias-2_a.H }
+#ifndef ALIAS_2_A
+#define ALIAS_2_A
+
+int frob ();
+
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/alias-2_b.C b/gcc/testsuite/g++.dg/modules/alias-2_b.C
new file mode 100644
index 0000000..00eff59
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/alias-2_b.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module -isystem [srcdir]/sys" }
+
+// These find different headers
+import "alias-2_a.H";
+import <alias-2_a.H>;
+
+int main ()
+{
+ frob ();
+ frob (1);
+}
+
+// { dg-final { scan-lang-dump-times {CMI is} 2 module } }
diff --git a/gcc/testsuite/g++.dg/modules/align-type-1_a.C b/gcc/testsuite/g++.dg/modules/align-type-1_a.C
new file mode 100644
index 0000000..7124034
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/align-type-1_a.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export using aint = __attribute__ ((aligned(16))) int;
+
+
diff --git a/gcc/testsuite/g++.dg/modules/align-type-1_b.C b/gcc/testsuite/g++.dg/modules/align-type-1_b.C
new file mode 100644
index 0000000..8372e6f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/align-type-1_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options -fmodules-ts }
+
+import foo;
+
+struct B
+{
+ aint m;
+};
+
+static_assert (alignof (B) == 16);
diff --git a/gcc/testsuite/g++.dg/modules/ambig-1_a.C b/gcc/testsuite/g++.dg/modules/ambig-1_a.C
new file mode 100644
index 0000000..fbb3db2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ambig-1_a.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+export module One;
+// { dg-module-cmi One }
+
+export int foo ();
+export char bax ();
+export int quux (float);
+
+
diff --git a/gcc/testsuite/g++.dg/modules/ambig-1_b.C b/gcc/testsuite/g++.dg/modules/ambig-1_b.C
new file mode 100644
index 0000000..c1de919
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ambig-1_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodules-ts }
+import One;
+
+int foo (); // { dg-error "conflicts with import" }
+int bax (); // { dg-error "ambiguating new declaration" }
+int quux (int);
diff --git a/gcc/testsuite/g++.dg/modules/anon-1_a.C b/gcc/testsuite/g++.dg/modules/anon-1_a.C
new file mode 100644
index 0000000..e56b85c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/anon-1_a.C
@@ -0,0 +1,14 @@
+// { dg-additional-options -fmodules-ts }
+
+export module anon;
+// { dg-module-cmi anon }
+
+export struct foo
+{
+ enum {bob};
+ union
+ {
+ int i;
+ float f;
+ };
+};
diff --git a/gcc/testsuite/g++.dg/modules/anon-1_b.C b/gcc/testsuite/g++.dg/modules/anon-1_b.C
new file mode 100644
index 0000000..66d2505
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/anon-1_b.C
@@ -0,0 +1,18 @@
+// { dg-additional-options -fmodules-ts }
+
+export module namer;
+// { dg-module-cmi namer }
+
+import anon;
+
+export inline int &get_int (foo &obj)
+{
+ return obj.i;
+}
+
+export inline float &get_float (foo &obj)
+{
+ return obj.f;
+}
+
+
diff --git a/gcc/testsuite/g++.dg/modules/anon-1_c.C b/gcc/testsuite/g++.dg/modules/anon-1_c.C
new file mode 100644
index 0000000..cbe89e1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/anon-1_c.C
@@ -0,0 +1,13 @@
+// { dg-additional-options -fmodules-ts }
+
+import namer;
+import anon;
+
+int main ()
+{
+ foo obj;
+ int *ip = &get_int (obj);
+ float *fp = &get_float (obj);
+
+ return !((void *)ip == (void *)fp);
+}
diff --git a/gcc/testsuite/g++.dg/modules/anon-2.h b/gcc/testsuite/g++.dg/modules/anon-2.h
new file mode 100644
index 0000000..81c793c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/anon-2.h
@@ -0,0 +1,6 @@
+
+
+struct __pthread_cond_s
+{
+ union {};
+};
diff --git a/gcc/testsuite/g++.dg/modules/anon-2_a.H b/gcc/testsuite/g++.dg/modules/anon-2_a.H
new file mode 100644
index 0000000..6861c19
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/anon-2_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "anon-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/anon-2_b.C b/gcc/testsuite/g++.dg/modules/anon-2_b.C
new file mode 100644
index 0000000..24bb61b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/anon-2_b.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include "anon-2.h"
+import "anon-2_a.H";
+
diff --git a/gcc/testsuite/g++.dg/modules/atom-decl-0_a.C b/gcc/testsuite/g++.dg/modules/atom-decl-0_a.C
new file mode 100644
index 0000000..d226f32
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/atom-decl-0_a.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module thing;
+// { dg-module-cmi "thing" }
+
+export int baz ();
diff --git a/gcc/testsuite/g++.dg/modules/atom-decl-0_b.C b/gcc/testsuite/g++.dg/modules/atom-decl-0_b.C
new file mode 100644
index 0000000..8ca006d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/atom-decl-0_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts" }
+import thing;
+
+void bink ()
+{
+ baz ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/atom-decl-0_c.C b/gcc/testsuite/g++.dg/modules/atom-decl-0_c.C
new file mode 100644
index 0000000..96e7495
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/atom-decl-0_c.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts" }
+export module pop;
+// { dg-module-cmi "pop" }
+export import thing;
+
+void bink ();
+
+void bonk ()
+{
+ baz ();
+ bink ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/atom-decl-2.C b/gcc/testsuite/g++.dg/modules/atom-decl-2.C
new file mode 100644
index 0000000..b463dc8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/atom-decl-2.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+export module thing;
+int i;
+import baz; // { dg-error "must be contiguous" }
+
+// { dg-prune-output "not writing module" }
diff --git a/gcc/testsuite/g++.dg/modules/atom-decl-3.C b/gcc/testsuite/g++.dg/modules/atom-decl-3.C
new file mode 100644
index 0000000..6eb6e6b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/atom-decl-3.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+int i;
+import bazza;
+// { dg-error "failed to read" "" { target *-*-* } 0 }
+// { dg-prune-output "fatal error:" }
+// { dg-prune-output "compilation terminated" }
diff --git a/gcc/testsuite/g++.dg/modules/atom-pragma-1.C b/gcc/testsuite/g++.dg/modules/atom-pragma-1.C
new file mode 100644
index 0000000..133382e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/atom-pragma-1.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+export module foo;
+// { dg-module-cmi foo }
+
+#pragma bob
+int i;
diff --git a/gcc/testsuite/g++.dg/modules/atom-pragma-3.C b/gcc/testsuite/g++.dg/modules/atom-pragma-3.C
new file mode 100644
index 0000000..b95b2c8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/atom-pragma-3.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+
+export module foo;
+// { dg-module-cmi !foo }
+;
+
+#pragma pack(2)
+import baz; // { dg-error "must be contiguous" }
+
+int i;
+
+// { dg-prune-output "not writing module" }
diff --git a/gcc/testsuite/g++.dg/modules/atom-preamble-1.C b/gcc/testsuite/g++.dg/modules/atom-preamble-1.C
new file mode 100644
index 0000000..1161d41
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/atom-preamble-1.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+
+#define EXPORT export // { dg-error "only occur after a module" }
+EXPORT module bob; // { dg-error "does not name a type" }
+// { dg-message "not recognized as" "" { target *-*-* } .-1 }
+
diff --git a/gcc/testsuite/g++.dg/modules/atom-preamble-2_a.C b/gcc/testsuite/g++.dg/modules/atom-preamble-2_a.C
new file mode 100644
index 0000000..02fbd84
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/atom-preamble-2_a.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+#define malcolm kevin
+export module malcolm;
+// { dg-module-cmi kevin }
+
+export class X;
diff --git a/gcc/testsuite/g++.dg/modules/atom-preamble-2_b.C b/gcc/testsuite/g++.dg/modules/atom-preamble-2_b.C
new file mode 100644
index 0000000..a97d975
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/atom-preamble-2_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts" }
+#if 1
+export module bob;
+// { dg-module-cmi bob }
+#endif
+
+import kevin;
+
+X *f;
+
diff --git a/gcc/testsuite/g++.dg/modules/atom-preamble-2_c.C b/gcc/testsuite/g++.dg/modules/atom-preamble-2_c.C
new file mode 100644
index 0000000..d3804c2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/atom-preamble-2_c.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+#pragma bob
+
+import kevin;
+
+X *f;
diff --git a/gcc/testsuite/g++.dg/modules/atom-preamble-2_d.C b/gcc/testsuite/g++.dg/modules/atom-preamble-2_d.C
new file mode 100644
index 0000000..0c3b290
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/atom-preamble-2_d.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts" }
+import kevin;
+
+#if 1
+#if 1
+import kevin;
+#endif
+#elif 1
+int i;
+#endif
+
+int j; // end here
diff --git a/gcc/testsuite/g++.dg/modules/atom-preamble-2_e.C b/gcc/testsuite/g++.dg/modules/atom-preamble-2_e.C
new file mode 100644
index 0000000..074f8eb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/atom-preamble-2_e.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts" }
+import kevin;
+
+#if 0
+#if 1
+import kevin;
+#endif
+#elif 1
+import kevin;
+#endif
+
+int i; // end here
diff --git a/gcc/testsuite/g++.dg/modules/atom-preamble-2_f.C b/gcc/testsuite/g++.dg/modules/atom-preamble-2_f.C
new file mode 100644
index 0000000..28e54b8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/atom-preamble-2_f.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+export module stuart;
+// { dg-module-cmi !stuart }
+
+# 6 "atom-preamble-2_f.C" 1
+import kevin; // { dg-error "not be from header" }
+# 8 "" 2
+
+import kevin; // ok
+// { dg-prune-output "not writing module" }
diff --git a/gcc/testsuite/g++.dg/modules/atom-preamble-3.C b/gcc/testsuite/g++.dg/modules/atom-preamble-3.C
new file mode 100644
index 0000000..74dba7d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/atom-preamble-3.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts" }
+#define import import
+import malcolm; // { dg-error "object-like macro" }
+// { dg-error "failed to read" "" { target *-*-* } 0 }
+
+// { dg-prune-output "compilation terminated" }
+// { dg-prune-output "fatal error:" }
diff --git a/gcc/testsuite/g++.dg/modules/atom-preamble-4.C b/gcc/testsuite/g++.dg/modules/atom-preamble-4.C
new file mode 100644
index 0000000..21a8d57
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/atom-preamble-4.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts" }
+#define NAME(X) X;
+
+export module NAME(bob)
+
diff --git a/gcc/testsuite/g++.dg/modules/auto-1.h b/gcc/testsuite/g++.dg/modules/auto-1.h
new file mode 100644
index 0000000..f8ae751
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/auto-1.h
@@ -0,0 +1,19 @@
+
+template <typename T> auto frob (T t)
+{
+ return t;
+}
+
+struct Bob
+{
+ operator auto ()
+ {
+ return 0;
+ }
+};
+
+inline auto foo ()
+{
+ return frob (1) + int (Bob ());
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/auto-1_a.H b/gcc/testsuite/g++.dg/modules/auto-1_a.H
new file mode 100644
index 0000000..4d3bc77
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/auto-1_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "auto-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/auto-1_b.C b/gcc/testsuite/g++.dg/modules/auto-1_b.C
new file mode 100644
index 0000000..9635066
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/auto-1_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "auto-1.h"
+import "auto-1_a.H";
+
+int bar ()
+{
+ return foo () + frob (0u);
+}
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/auto-2.h b/gcc/testsuite/g++.dg/modules/auto-2.h
new file mode 100644
index 0000000..4759ab8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/auto-2.h
@@ -0,0 +1,13 @@
+
+template<typename _Callable>
+struct _RangeAdaptor
+{
+ constexpr _RangeAdaptor(const _Callable &) { }
+};
+
+template<typename _Callable>
+_RangeAdaptor(_Callable) -> _RangeAdaptor<_Callable>;
+
+template<unsigned _Nm>
+inline constexpr _RangeAdaptor elements = [] (auto&& __r) {};
+
diff --git a/gcc/testsuite/g++.dg/modules/auto-2_a.H b/gcc/testsuite/g++.dg/modules/auto-2_a.H
new file mode 100644
index 0000000..46bd746
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/auto-2_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodule-header -fconcepts" }
+// { dg-module-cmi {} }
+
+#include "auto-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/auto-2_b.C b/gcc/testsuite/g++.dg/modules/auto-2_b.C
new file mode 100644
index 0000000..5ed882f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/auto-2_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts -fconcepts -fdump-lang-module-alias -fno-module-lazy" }
+
+#include "auto-2.h"
+import "auto-2_a.H";
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/bad-mapper-1.C b/gcc/testsuite/g++.dg/modules/bad-mapper-1.C
new file mode 100644
index 0000000..7ed75b8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/bad-mapper-1.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts -fmodule-mapper=|this-will-not-work" }
+import unique1.bob;
+// { dg-error "-:failed exec.*mapper.* .*this-will-not-work" "" { target *-*-* } 0 }
+// { dg-prune-output "fatal error:" }
+// { dg-prune-output "failed to read" }
+// { dg-prune-output "compilation terminated" }
diff --git a/gcc/testsuite/g++.dg/modules/bad-mapper-2.C b/gcc/testsuite/g++.dg/modules/bad-mapper-2.C
new file mode 100644
index 0000000..f35d16b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/bad-mapper-2.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts -fmodule-mapper=not-a-host:3838" }
+import unique2.bob;
+// { dg-error "failed .* mapper 'not-a-host" "" { target *-*-* } 0 }
+// { dg-prune-output "fatal error:" }
+// { dg-prune-output "failed to read" }
+// { dg-prune-output "compilation terminated" }
diff --git a/gcc/testsuite/g++.dg/modules/bad-mapper-3.C b/gcc/testsuite/g++.dg/modules/bad-mapper-3.C
new file mode 100644
index 0000000..9dab332
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/bad-mapper-3.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts -fmodule-mapper=localhost:172477262" }
+import unique3.bob;
+// { dg-error {failed connecting mapper 'localhost:172477262'} "" { target *-*-* } 0 }
+// { dg-prune-output "fatal error:" }
+// { dg-prune-output "failed to read" }
+// { dg-prune-output "compilation terminated" }
diff --git a/gcc/testsuite/g++.dg/modules/ben-1.map b/gcc/testsuite/g++.dg/modules/ben-1.map
new file mode 100644
index 0000000..182183a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ben-1.map
@@ -0,0 +1,3 @@
+$root .
+module:import partitions/module:import.mod
+module module.mod
diff --git a/gcc/testsuite/g++.dg/modules/ben-1_a.C b/gcc/testsuite/g++.dg/modules/ben-1_a.C
new file mode 100644
index 0000000..7e9b566
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ben-1_a.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts -fmodule-mapper=[srcdir]/ben-1.map" }
+// { dg-additional-files ben-1.map }
+
+export module module:import;
+// { dg-module-cmi =partitions/module:import.mod }
+
+export int b() {
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/ben-1_b.C b/gcc/testsuite/g++.dg/modules/ben-1_b.C
new file mode 100644
index 0000000..e16fa2f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ben-1_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options "-fmodules-ts -fmodule-mapper=[srcdir]/ben-1.map" }
+// { dg-additional-files ben-1.map }
+
+export module module;
+// { dg-module-cmi =module.mod }
+export import :import;
+
+export int c ()
+{
+ return b ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/bfield-1_a.C b/gcc/testsuite/g++.dg/modules/bfield-1_a.C
new file mode 100644
index 0000000..15b8cb6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/bfield-1_a.C
@@ -0,0 +1,15 @@
+// { dg-additional-options -fmodules-ts }
+export module foo;
+// { dg-module-cmi foo }
+
+export struct timex
+{
+ int a;
+ int :32;
+ int :32;
+ int :32;
+ int :32;
+ int :32;
+ int :32;
+};
+
diff --git a/gcc/testsuite/g++.dg/modules/bfield-1_b.C b/gcc/testsuite/g++.dg/modules/bfield-1_b.C
new file mode 100644
index 0000000..6c8dae6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/bfield-1_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodules-ts }
+import foo;
+
+timex v = {1};
diff --git a/gcc/testsuite/g++.dg/modules/bfield-2_a.C b/gcc/testsuite/g++.dg/modules/bfield-2_a.C
new file mode 100644
index 0000000..5329e62
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/bfield-2_a.C
@@ -0,0 +1,11 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export struct ting
+{
+ int a;
+ int b : 3;
+ int c : 5;
+};
diff --git a/gcc/testsuite/g++.dg/modules/bfield-2_b.C b/gcc/testsuite/g++.dg/modules/bfield-2_b.C
new file mode 100644
index 0000000..7371736
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/bfield-2_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodules-ts }
+import foo;
+
+ting v = {1, 2, 3};
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_a.H b/gcc/testsuite/g++.dg/modules/binding-1_a.H
new file mode 100644
index 0000000..2d2460d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/binding-1_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_b.H b/gcc/testsuite/g++.dg/modules/binding-1_b.H
new file mode 100644
index 0000000..eb5140b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/binding-1_b.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include <string>
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_c.C b/gcc/testsuite/g++.dg/modules/binding-1_c.C
new file mode 100644
index 0000000..b63f88f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/binding-1_c.C
@@ -0,0 +1,7 @@
+// { dg-additional-options -fmodules-ts }
+
+export module hello;
+// { dg-module-cmi hello }
+
+import "binding-1_a.H";
+import "binding-1_b.H";
diff --git a/gcc/testsuite/g++.dg/modules/binding-2.H b/gcc/testsuite/g++.dg/modules/binding-2.H
new file mode 100644
index 0000000..e82d7cf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/binding-2.H
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodule-header -Wextra" }
+// { dg-module-cmi {} }
+
+void* operator new(__SIZE_TYPE__, void* __p) noexcept;
+void* operator new[](__SIZE_TYPE__, void* __p) noexcept;
+
+void operator delete (void*, void*) noexcept;
+void operator delete[](void*, void*) noexcept;
+
diff --git a/gcc/testsuite/g++.dg/modules/bool-1.h b/gcc/testsuite/g++.dg/modules/bool-1.h
new file mode 100644
index 0000000..80f0ec1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/bool-1.h
@@ -0,0 +1,8 @@
+typedef signed char __v16qs __attribute__ ((__vector_size__ (16)));
+
+
+inline auto
+_mm_cmplt_epi8 (__v16qs __A, __v16qs __B)
+{
+ return __A < __B;
+}
diff --git a/gcc/testsuite/g++.dg/modules/bool-1_a.H b/gcc/testsuite/g++.dg/modules/bool-1_a.H
new file mode 100644
index 0000000..3b4232c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/bool-1_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options {-fmodule-header -Wno-psabi} }
+// { dg-module-cmi {} }
+
+#include "bool-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/bool-1_b.H b/gcc/testsuite/g++.dg/modules/bool-1_b.H
new file mode 100644
index 0000000..d22e1d9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/bool-1_b.H
@@ -0,0 +1,5 @@
+// { dg-additional-options {-fmodule-header -fno-module-lazy -Wno-psabi} }
+// { dg-module-cmi {} }
+
+#include "bool-1.h"
+import "bool-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/bool-1_c.C b/gcc/testsuite/g++.dg/modules/bool-1_c.C
new file mode 100644
index 0000000..01b0877
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/bool-1_c.C
@@ -0,0 +1,8 @@
+// { dg-additional-options {-fmodules-ts -Wno-psabi} }
+
+import "bool-1_b.H";
+
+void frob (signed char __attribute__ ((__vector_size__ (16))) arg)
+{
+ _mm_cmplt_epi8 (arg, arg);
+}
diff --git a/gcc/testsuite/g++.dg/modules/bug-1_a.C b/gcc/testsuite/g++.dg/modules/bug-1_a.C
new file mode 100644
index 0000000..b828b7b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/bug-1_a.C
@@ -0,0 +1,9 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+export module One;
+// { dg-module-cmi "One" }
+
+export int Frob (int a)
+{
+ return -a;
+}
diff --git a/gcc/testsuite/g++.dg/modules/bug-1_b.C b/gcc/testsuite/g++.dg/modules/bug-1_b.C
new file mode 100644
index 0000000..7b5baeb9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/bug-1_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts" }
+import One;
+
+int main ()
+{
+ if (Frob (2) != -2)
+ return 1;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/builtin-1_a.C b/gcc/testsuite/g++.dg/modules/builtin-1_a.C
new file mode 100644
index 0000000..6d0731a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/builtin-1_a.C
@@ -0,0 +1,18 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks-alias-uid" }
+export module builtin;
+// { dg-module-cmi builtin }
+
+export inline void ary_del (int *ptr)
+{
+ delete[] ptr;
+}
+
+export inline void scalar_del (int *ptr)
+{
+ delete ptr;
+}
+
+// { dg-final { scan-lang-dump {Wrote GMF:-[0-9]* function_decl:'::operator delete'@builtin} module } }
+// { dg-final { scan-lang-dump {Wrote GMF:-[0-9]* function_decl:'::operator delete \[\]'@builtin} module } }
+
+// { dg-final { scan-lang-dump {Writing named:-[0-9]* function_decl:'::operator delete'\n *Wrote[^\n]*\n *Writing:-[0-9]*'s named merge key \(decl\) function_decl:'::operator delete'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/builtin-1_b.C b/gcc/testsuite/g++.dg/modules/builtin-1_b.C
new file mode 100644
index 0000000..e9f7348
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/builtin-1_b.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-alias" }
+import builtin;
+
+int main ()
+{
+ ary_del (nullptr);
+ scalar_del (nullptr);
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(matched\) function_decl:'::operator delete \[\]'} module } }
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(matched\) function_decl:'::operator delete'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/builtin-2.C b/gcc/testsuite/g++.dg/modules/builtin-2.C
new file mode 100644
index 0000000..f9de98f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/builtin-2.C
@@ -0,0 +1,7 @@
+// { dg-additional-options -fmodules-ts }
+
+extern "C"
+{
+ extern int printf (const char *__restrict __format, ...);
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/builtin-3_a.C b/gcc/testsuite/g++.dg/modules/builtin-3_a.C
new file mode 100644
index 0000000..ad30ccf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/builtin-3_a.C
@@ -0,0 +1,44 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks-alias-uid" }
+module;
+#include <stdarg.h>
+export module builtins;
+// { dg-module-cmi builtins }
+
+export inline unsigned length (char const *ptr)
+{
+ return __builtin_strlen (ptr);
+}
+
+export inline int count (int a, ...)
+{
+ int c = 0;
+
+ va_list args;
+ va_start (args, a);
+ while (va_arg (args, char *))
+ c++;
+ va_end (args);
+
+ return c;
+}
+
+// { dg-final { scan-lang-dump-not {Cluster members:\n \[0\]=decl declaration '::__builtin_strlen'\n \[1\]=binding '::__builtin_strlen'\n} module } }
+// { dg-final { scan-lang-dump {Wrote GMF:-[0-9]* function_decl:'::__builtin_strlen'@builtins} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s named merge key \(decl\) function_decl:'::__builtin_strlen'} module } }
+// { dg-final { scan-lang-dump-not {Writing tree:-[0-9]* function_decl:'__builtin_strlen'\(strlen\)} module } }
+
+// The implementation details of va_list's are target-specific.
+// Usually one of two patterns though
+// { dg-final { scan-lang-dump-not { Cluster members:\n \[0\]=decl declaration '::__builtin_va_list'\n \[1\]=binding '::__builtin_va_list'\n} module { target i?86-*-linux* x86_64-*-linux* } } }
+// { dg-final { scan-lang-dump {Wrote GMF:-[0-9]* type_decl:'::__builtin_va_list'@builtins} module { target x86_64-*-linux* } } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s named merge key \(decl\) type_decl:'::__builtin_va_list'} module { target x86_64-*-linux* } } }
+
+// { dg-final { scan-lang-dump {Writing:-1's named merge key \(decl\) type_decl:'::__gnuc_va_list'} module { target i?86-*-linux* *-*-darwin* } } }
+// { dg-final { scan-lang-dump {Wrote GMF:-3 type_decl:'::__gnuc_va_list'@builtins} module { target i?86-*-linux* *-*-darwin* } } }
+
+// { dg-final { scan-lang-dump {Wrote fixed:[0-9]* record_type:'__va_list'} module { target aarch64*-*-linux* } } }
+// { dg-final { scan-lang-dump {Wrote fixed:[0-9]* pointer_type:'::__builtin_va_list'} module { target powerpc*-*-linux* } } }
+
+// { dg-final { scan-lang-dump-not { Cluster members:\n \[0\]=decl declaration '::va_list'\n \[1\]=binding '::va_list'\n} module } }
+// { dg-final { scan-lang-dump {Wrote GMF:-[0-9]* type_decl:'::va_list'@builtins} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s named merge key \(decl\) type_decl:'::va_list'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/builtin-3_b.C b/gcc/testsuite/g++.dg/modules/builtin-3_b.C
new file mode 100644
index 0000000..93489bd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/builtin-3_b.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-alias" }
+import builtins;
+
+int main ()
+{
+ length ("");
+ count (1, "", "", nullptr);
+}
+
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(matched\) function_decl:'::__builtin_strlen'} module } }
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(matched\) type_decl:'::__builtin_va_list'} module { target { x86_64-*-linux* } } } }
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(new\) type_decl:'::va_list'} module } }
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(new\) type_decl:'::__gnuc_va_list'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/builtin-4_a.H b/gcc/testsuite/g++.dg/modules/builtin-4_a.H
new file mode 100644
index 0000000..f7bc6af
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/builtin-4_a.H
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+void* operator new(__SIZE_TYPE__);
+void* operator new[](__SIZE_TYPE__);
+
+void operator delete (void*) noexcept;
+void operator delete[](void*) noexcept;
+
diff --git a/gcc/testsuite/g++.dg/modules/builtin-4_b.C b/gcc/testsuite/g++.dg/modules/builtin-4_b.C
new file mode 100644
index 0000000..1d780e6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/builtin-4_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+import "builtin-4_a.H";
+
+int main ()
+{
+ operator delete (operator new (10));
+ operator delete[] (operator new[] (10));
+}
+
+// { dg-final { scan-lang-dump {named merge key \(matched\) function_decl:'::operator new'} module } }
+// { dg-final { scan-lang-dump {named merge key \(matched\) function_decl:'::operator delete'} module } }
+// { dg-final { scan-lang-dump {named merge key \(matched\) function_decl:'::operator new \[\]'} module } }
+// { dg-final { scan-lang-dump {named merge key \(matched\) function_decl:'::operator delete \[\]'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/builtin-5_a.H b/gcc/testsuite/g++.dg/modules/builtin-5_a.H
new file mode 100644
index 0000000..735d323
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/builtin-5_a.H
@@ -0,0 +1,3 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+extern "C" int printf (char const *, ...);
diff --git a/gcc/testsuite/g++.dg/modules/builtin-5_b.C b/gcc/testsuite/g++.dg/modules/builtin-5_b.C
new file mode 100644
index 0000000..bfaa64f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/builtin-5_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-alias" }
+
+import "builtin-5_a.H";
+
+void foo ()
+{
+ printf ("bob\n");
+}
+
+extern "C" int printf (char const *, int);
+
+// { dg-regexp {[^\n]*builtin-5_b.C:10:[0-9]*: error: conflicting declaration of C function 'int printf\(const char\*, int\)'\nIn module [^\n]*builtin-5_a.H, imported at [^\n]*builtin-5_b.C:3:\n[^\n]*builtin-5_a.H:3:[0-9]*: note: previous declaration 'int printf\(const char\*, ...\)'} }
+
+// { dg-final { scan-lang-dump {Read:-1's named merge key \(matched\) function_decl:'::printf'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/builtin-6_a.H b/gcc/testsuite/g++.dg/modules/builtin-6_a.H
new file mode 100644
index 0000000..b3263bc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/builtin-6_a.H
@@ -0,0 +1,12 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+extern "C" {
+
+static double sin (double)
+{
+ // extra small angle approximation :)
+ return 0.0;
+}
+
+}
diff --git a/gcc/testsuite/g++.dg/modules/builtin-6_b.C b/gcc/testsuite/g++.dg/modules/builtin-6_b.C
new file mode 100644
index 0000000..80f8dc6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/builtin-6_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+
+
+import "builtin-6_a.H";
+
+int main ()
+{
+ return sin (0.0);
+}
diff --git a/gcc/testsuite/g++.dg/modules/builtin-7_a.H b/gcc/testsuite/g++.dg/modules/builtin-7_a.H
new file mode 100644
index 0000000..a98a7b7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/builtin-7_a.H
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module_cmi {} }
+
+extern "C"
+{
+extern double nan(const char *);
+inline long double nanl(const char * __x) { return nan(__x); }
+}
diff --git a/gcc/testsuite/g++.dg/modules/builtin-7_b.C b/gcc/testsuite/g++.dg/modules/builtin-7_b.C
new file mode 100644
index 0000000..2851457
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/builtin-7_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+import "builtin-7_a.H";
+
+void f ()
+{
+ nanl ("");
+}
diff --git a/gcc/testsuite/g++.dg/modules/by-name-1.C b/gcc/testsuite/g++.dg/modules/by-name-1.C
new file mode 100644
index 0000000..44eb447
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/by-name-1.C
@@ -0,0 +1,15 @@
+// check internals by name unless SCC
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-uid" }
+
+export module frob;
+// { dg-module-cmi frob }
+
+class X
+{
+ int i;
+};
+
+export X *f ();
+
+// { dg-final { scan-lang-dump {Wrote purview:-[0-9]* type_decl:'::X'} "module" } }
+// { dg-final { scan-lang-dump {Indirect:-[0-9]* decl's type record_type:'::X'} "module" } }
diff --git a/gcc/testsuite/g++.dg/modules/cexpr-1_a.C b/gcc/testsuite/g++.dg/modules/cexpr-1_a.C
new file mode 100644
index 0000000..b9c4b16
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cexpr-1_a.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts" }
+export module Const;
+// { dg-module-cmi "Const" }
+
+export constexpr int SQ (int b)
+{
+ return b * b;
+}
diff --git a/gcc/testsuite/g++.dg/modules/cexpr-1_b.C b/gcc/testsuite/g++.dg/modules/cexpr-1_b.C
new file mode 100644
index 0000000..3056611
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cexpr-1_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts" }
+import Const;
+
+static_assert (SQ(88) == 88 * 88, "waaa!");
diff --git a/gcc/testsuite/g++.dg/modules/cexpr-2_a.C b/gcc/testsuite/g++.dg/modules/cexpr-2_a.C
new file mode 100644
index 0000000..632a4e3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cexpr-2_a.C
@@ -0,0 +1,19 @@
+// { dg-additional-options "-fmodules-ts" }
+export module sqrt;
+// { dg-module-cmi "sqrt" }
+
+export constexpr unsigned sqrt (unsigned X, unsigned x = 1)
+{
+ // Newton-Raphson, not binary restoring
+ // x <= x - f(x)/f'(x)
+ // f(x) = x^2 - X
+ // f'(x) = 2x
+ // x <= x - (x^2 - X) / 2x
+ // x <= x - x/2 + X/2x
+ // x <= x/2 + X/2x
+ // x <= 1/2(x + X/x)
+ unsigned nx = (x + X/x) / 2;
+ if (nx != x)
+ nx = sqrt (X, nx);
+ return nx;
+}
diff --git a/gcc/testsuite/g++.dg/modules/cexpr-2_b.C b/gcc/testsuite/g++.dg/modules/cexpr-2_b.C
new file mode 100644
index 0000000..6a589ae
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cexpr-2_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts" }
+import sqrt;
+
+static_assert (sqrt(81) == 9, "waaa!");
diff --git a/gcc/testsuite/g++.dg/modules/circ-1_a.C b/gcc/testsuite/g++.dg/modules/circ-1_a.C
new file mode 100644
index 0000000..fa56c78
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/circ-1_a.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts" }
+export module Bob;
+// { dg-module-cmi Bob }
+
+export int bob ();
diff --git a/gcc/testsuite/g++.dg/modules/circ-1_b.C b/gcc/testsuite/g++.dg/modules/circ-1_b.C
new file mode 100644
index 0000000..9174c15
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/circ-1_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts" }
+export module Kevin;
+// { dg-module-cmi Kevin }
+
+import Bob;
+
+export int kevin ();
diff --git a/gcc/testsuite/g++.dg/modules/circ-1_c.C b/gcc/testsuite/g++.dg/modules/circ-1_c.C
new file mode 100644
index 0000000..cea17d7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/circ-1_c.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts" }
+export module Bob; // { dg-message "declared here" }
+// No need to dg-module-cmi
+
+import Kevin;
+// { dg-error "failed to read" "" { target *-*-* } 0 }
+// { dg-error "cannot import module" "" { target *-*-* } 0 }
+// { dg-prune-output "fatal error:" }
+// { dg-prune-output "compilation terminated" }
diff --git a/gcc/testsuite/g++.dg/modules/circ-1_d.C b/gcc/testsuite/g++.dg/modules/circ-1_d.C
new file mode 100644
index 0000000..b6f6b7d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/circ-1_d.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+module;
+import Kevin;
+
+export module Bob; // { dg-error "module already imported" }
+// { dg-message "imported here" "Kevin.nms:" { target *-*-* } 0 }
diff --git a/gcc/testsuite/g++.dg/modules/class-1_a.C b/gcc/testsuite/g++.dg/modules/class-1_a.C
new file mode 100644
index 0000000..6463719
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-1_a.C
@@ -0,0 +1,15 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+export module One;
+// { dg-module-cmi "One" }
+
+namespace Bob
+{
+ struct X;
+ export struct Y {
+ unsigned a;
+ unsigned b;
+ };
+}
+
+export void copy (Bob::Y *, const Bob::Y *);
diff --git a/gcc/testsuite/g++.dg/modules/class-1_b.C b/gcc/testsuite/g++.dg/modules/class-1_b.C
new file mode 100644
index 0000000..5eac51d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-1_b.C
@@ -0,0 +1,16 @@
+// { dg-additional-options "-fmodules-ts" }
+module One;
+
+struct Bob::X
+{
+ int i;
+};
+
+
+int x = sizeof (Bob::X);
+
+void copy (Bob::Y *dst, Bob::Y const *src)
+{
+ dst->a = src->a;
+ dst->b = src->b;
+}
diff --git a/gcc/testsuite/g++.dg/modules/class-1_c.C b/gcc/testsuite/g++.dg/modules/class-1_c.C
new file mode 100644
index 0000000..8e23c4f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-1_c.C
@@ -0,0 +1,35 @@
+// { dg-additional-options "-fmodules-ts" }
+import One;
+
+int y = sizeof (Bob::Y);
+
+unsigned Foo (Bob::Y *ptr)
+{
+ return ptr->a + ptr->b;
+}
+
+int main ()
+{
+ if (y != 2 * sizeof (int))
+ return 1;
+
+ unsigned pun[4];
+ pun[0] = 0xdeadbeef;
+ pun[1] = 0xfeedface;
+ pun[2] = 0x8badf00d;
+ pun[3] = 0xcafed00d;
+
+ copy ((Bob::Y *)pun, (Bob::Y *)&pun[2]);
+
+ if (pun[0] != 0x8badf00d)
+ return 2;
+ if (pun[1] != 0xcafed00d)
+ return 3;
+ if (pun[2] != 0x8badf00d)
+ return 4;
+
+ if (Foo ((Bob::Y *)&pun[1]) != 0xcafed00d + 0x8badf00d)
+ return 5;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/class-2_a.C b/gcc/testsuite/g++.dg/modules/class-2_a.C
new file mode 100644
index 0000000..04f11cd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-2_a.C
@@ -0,0 +1,16 @@
+// { dg-additional-options "-fmodules-ts" }
+// This sequence is for errors
+
+export module One;
+// { dg-module-cmi "One" }
+
+namespace Bob
+{
+ struct X;
+ export struct Y {
+ unsigned a;
+ unsigned b;
+ };
+}
+
+export void copy (Bob::Y *, const Bob::Y *);
diff --git a/gcc/testsuite/g++.dg/modules/class-2_b.C b/gcc/testsuite/g++.dg/modules/class-2_b.C
new file mode 100644
index 0000000..0f8edb8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-2_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts" }
+import One;
+
+int z = sizeof (Bob::X); // { dg-error "not a member of .Bob." }
diff --git a/gcc/testsuite/g++.dg/modules/class-3_a.C b/gcc/testsuite/g++.dg/modules/class-3_a.C
new file mode 100644
index 0000000..c775f7b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-3_a.C
@@ -0,0 +1,15 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+export module One;
+// { dg-module-cmi "One" }
+
+export struct X
+{
+ X (int, int);
+ X (int a_)
+ : a(a_), b (a_ << 16)
+ {
+ }
+ int a;
+ int b;
+};
diff --git a/gcc/testsuite/g++.dg/modules/class-3_b.C b/gcc/testsuite/g++.dg/modules/class-3_b.C
new file mode 100644
index 0000000..0e07e88
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-3_b.C
@@ -0,0 +1,18 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-uid" }
+export module Two;
+
+export import One;
+
+export inline void Frob (X &q)
+{
+ q.b = q.a;
+}
+
+// { dg-final { scan-lang-dump {Wrote import:-1 type_decl:'::X@One:.'} module } }
+// { dg-final { scan-lang-dump {Indirect:-2 decl's type record_type:'::X@One:.'} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* type_decl:'::X@One:.'@One} module } }
+// { dg-final { scan-lang-dump {Indirect:-[0-9]* decl's type record_type:'::X@One:.'} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* type_decl:'::X@One:.'@One} module } }
+// { dg-final { scan-lang-dump {Indirect:-[0-9]* decl's type record_type:'::X@One:.'} module } }
+// { dg-final { scan-lang-dump {Wrote member:-[0-9]* field_decl:'::X@One:.::a'} module } }
+// { dg-final { scan-lang-dump {Wrote member:-[0-9]* field_decl:'::X@One:.::b'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/class-3_c.C b/gcc/testsuite/g++.dg/modules/class-3_c.C
new file mode 100644
index 0000000..6b82d1e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-3_c.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts" }
+module One;
+
+X::X (int a_, int b_)
+ : a (a_), b (b_)
+{
+}
diff --git a/gcc/testsuite/g++.dg/modules/class-3_d.C b/gcc/testsuite/g++.dg/modules/class-3_d.C
new file mode 100644
index 0000000..0710941
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-3_d.C
@@ -0,0 +1,25 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-uid" }
+import Two;
+
+int main ()
+{
+ X x (0xdead, 0xbeef);
+
+ if (x.a != 0xdead || x.b != 0xbeef)
+ return 1;
+
+ Frob (x);
+ if (x.b != 0xdead)
+ return 2;
+
+ X y (0xcafe);
+ if (y.a != 0xcafe || y.b != 0xcafe << 16)
+ return 3;
+
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Imported:-1 type_decl:'::X@One:.'@One} module } }
+// { dg-final { scan-lang-dump {Indirect:-2 decl's type record_type:'::X@One:.'} module } }
+// { dg-final { scan-lang-dump {Read member:-[0-9]* field_decl:'::X@One:.::a'} module } }
+// { dg-final { scan-lang-dump {Read member:-[0-9]* field_decl:'::X@One:.::b'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/class-4_a.C b/gcc/testsuite/g++.dg/modules/class-4_a.C
new file mode 100644
index 0000000..a9810ab
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-4_a.C
@@ -0,0 +1,25 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+export module One;
+// { dg-module-cmi "One" }
+
+export struct base
+{
+ int b;
+
+ base (int b_)
+ : b (b_)
+ {
+ }
+
+};
+
+export struct derived : base
+{
+ int d;
+
+ derived (int b_, int d_)
+ : base (b_), d (d_)
+ {
+ }
+};
diff --git a/gcc/testsuite/g++.dg/modules/class-4_b.C b/gcc/testsuite/g++.dg/modules/class-4_b.C
new file mode 100644
index 0000000..1cd3998
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-4_b.C
@@ -0,0 +1,15 @@
+// { dg-additional-options "-fmodules-ts" }
+import One;
+
+int main ()
+{
+ base b (0xfeed);
+ if (!(b.b == 0xfeed))
+ return 1;
+
+ derived d (0xcafe, 0xbeef);
+ if (!(d.b == 0xcafe && d.d == 0xbeef))
+ return 2;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/class-5_a.C b/gcc/testsuite/g++.dg/modules/class-5_a.C
new file mode 100644
index 0000000..417cb6b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-5_a.C
@@ -0,0 +1,16 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+export module One;
+// { dg-module-cmi "One" }
+
+export struct base
+{
+ int b;
+
+ base (int b_)
+ : b (b_)
+ {
+ }
+
+ virtual int getter () const;
+};
diff --git a/gcc/testsuite/g++.dg/modules/class-5_b.C b/gcc/testsuite/g++.dg/modules/class-5_b.C
new file mode 100644
index 0000000..89db01c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-5_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts" }
+module One;
+
+int base::getter () const
+{
+ return b;
+}
diff --git a/gcc/testsuite/g++.dg/modules/class-5_c.C b/gcc/testsuite/g++.dg/modules/class-5_c.C
new file mode 100644
index 0000000..ee3250d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-5_c.C
@@ -0,0 +1,17 @@
+// { dg-additional-options "-fmodules-ts" }
+import One;
+
+int vcall (base *ptr)
+{
+ return ptr->getter ();
+}
+
+int main ()
+{
+ base b (0xfeed);
+
+ if (!(vcall (&b) == 0xfeed))
+ return 1;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/class-6_a.C b/gcc/testsuite/g++.dg/modules/class-6_a.C
new file mode 100644
index 0000000..9c117c9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-6_a.C
@@ -0,0 +1,30 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+export module One;
+// { dg-module-cmi "One" }
+
+export struct base
+{
+ int b;
+
+ base (int b_)
+ : b (b_)
+ {
+ }
+
+ virtual int getter () const;
+};
+
+export struct pad
+{
+ int pad;
+ virtual ~pad ();
+};
+
+export struct derived : pad, virtual base
+{
+ derived (int v)
+ :base (v)
+ {
+ }
+};
diff --git a/gcc/testsuite/g++.dg/modules/class-6_b.C b/gcc/testsuite/g++.dg/modules/class-6_b.C
new file mode 100644
index 0000000..1a49ced
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-6_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options "-fmodules-ts" }
+module One;
+
+pad::~pad ()
+{
+}
+
+int base::getter () const
+{
+ return b;
+}
diff --git a/gcc/testsuite/g++.dg/modules/class-6_c.C b/gcc/testsuite/g++.dg/modules/class-6_c.C
new file mode 100644
index 0000000..4d3abf9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-6_c.C
@@ -0,0 +1,17 @@
+// { dg-additional-options "-fmodules-ts" }
+import One;
+
+int vcall (derived *ptr)
+{
+ return ptr->getter ();
+}
+
+int main ()
+{
+ derived b (0xfeed);
+
+ if (!(vcall (&b) == 0xfeed))
+ return 1;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/class-7_a.C b/gcc/testsuite/g++.dg/modules/class-7_a.C
new file mode 100644
index 0000000..20fd54b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-7_a.C
@@ -0,0 +1,19 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+export module One;
+// { dg-module-cmi "One" }
+
+export struct base
+{
+ long long b;
+
+ base (int b_)
+ :b (b_)
+ {
+ }
+
+ base ()
+ :b(99)
+ {
+ }
+};
diff --git a/gcc/testsuite/g++.dg/modules/class-7_b.C b/gcc/testsuite/g++.dg/modules/class-7_b.C
new file mode 100644
index 0000000..3ed936f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-7_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts" }
+export module Two;
+// { dg-module-cmi "Two" }
+import One;
+
+export struct middle : virtual base
+{
+ long long m;
+
+ middle (int b_, int m_)
+ : base (b_), m (m_)
+ {
+ }
+};
diff --git a/gcc/testsuite/g++.dg/modules/class-7_c.C b/gcc/testsuite/g++.dg/modules/class-7_c.C
new file mode 100644
index 0000000..d1f2f56
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-7_c.C
@@ -0,0 +1,39 @@
+// { dg-additional-options "-fmodules-ts" }
+import One;
+import Two;
+
+struct derived : middle
+{
+ long long d;
+
+ derived (int b_, int m_, int d_)
+ : middle (b_, m_), d (d_)
+ {
+ }
+};
+
+int check (derived *d)
+{
+ if ((char *)&d->b != (char *)&d->d + sizeof (long long))
+ return 3;
+ if ((char *)&d->d != (char *)&d->m + sizeof (long long))
+ return 4;
+ return 0;
+}
+
+
+int main ()
+{
+ middle m (1, 2);
+
+
+ if (m.b != 1 || m.m != 2)
+ return 1;
+
+ derived d (1, 2, 3);
+
+ if (d.b != 99 || d.m != 2 || d.d != 3)
+ return 2;
+
+ return check (&d);
+}
diff --git a/gcc/testsuite/g++.dg/modules/class-8_a.C b/gcc/testsuite/g++.dg/modules/class-8_a.C
new file mode 100644
index 0000000..53caa5c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-8_a.C
@@ -0,0 +1,10 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+class A;
+
+class B
+{
+};
diff --git a/gcc/testsuite/g++.dg/modules/class-8_b.C b/gcc/testsuite/g++.dg/modules/class-8_b.C
new file mode 100644
index 0000000..0bb01ac
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/class-8_b.C
@@ -0,0 +1,23 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module} }
+module foo;
+
+// completes class A from interface
+class A
+{
+};
+
+void bill ()
+{
+ A a;
+}
+
+// redeclaration of class B{} from interface
+class B;
+
+void bob ()
+{
+ B b;
+}
+
+// { dg-final { scan-lang-dump {Lazily binding '::A'@'foo' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::B'@'foo' section:} module } }
diff --git a/gcc/testsuite/g++.dg/modules/clone-1_a.C b/gcc/testsuite/g++.dg/modules/clone-1_a.C
new file mode 100644
index 0000000..43c4bbd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/clone-1_a.C
@@ -0,0 +1,18 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+template<typename _CharT >
+struct basic_string
+{
+ template<typename = unsigned> basic_string();
+};
+
+inline basic_string<char>
+to_string ()
+{
+ basic_string<char> __str;
+
+ return __str;
+}
diff --git a/gcc/testsuite/g++.dg/modules/clone-1_b.C b/gcc/testsuite/g++.dg/modules/clone-1_b.C
new file mode 100644
index 0000000..a013b9b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/clone-1_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+module foo;
+
+void frob ()
+{
+ to_string ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/concept-1_a.C b/gcc/testsuite/g++.dg/modules/concept-1_a.C
new file mode 100644
index 0000000..1b4d831
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-1_a.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts -fconcepts" }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export template<typename T>
+requires (!!sizeof (bool (T{})))
+T f1 (T x)
+{ return x; }
+
diff --git a/gcc/testsuite/g++.dg/modules/concept-1_b.C b/gcc/testsuite/g++.dg/modules/concept-1_b.C
new file mode 100644
index 0000000..d6542e6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-1_b.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts -fconcepts" }
+
+import foo;
+
+struct X {};
+
+void foo (int i, X &x)
+{
+ f1 (i); // ok
+ f1 (x); // { dg-error "no match" }
+}
+
+// { dg-regexp {[^\n]*concept-1_a.C:7:[0-9]*: error: invalid cast[^\n]*\n} }
diff --git a/gcc/testsuite/g++.dg/modules/concept-2_a.C b/gcc/testsuite/g++.dg/modules/concept-2_a.C
new file mode 100644
index 0000000..b1d477d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-2_a.C
@@ -0,0 +1,18 @@
+// { dg-additional-options "-fmodules-ts -fconcepts" }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export template<typename T>
+requires (sizeof (T) == 1)
+ char f1 (T x) { return 0; }
+
+export template<typename T>
+requires (sizeof (T) != 1)
+ int f1 (T x) { return 0; }
+
+void foo (int i, char c)
+{
+ static_assert (sizeof (f1 (i)) == sizeof (int));
+ static_assert (sizeof (f1 (c)) == sizeof (char));
+}
diff --git a/gcc/testsuite/g++.dg/modules/concept-2_b.C b/gcc/testsuite/g++.dg/modules/concept-2_b.C
new file mode 100644
index 0000000..af0ab3a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-2_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts -fconcepts" }
+
+import foo;
+
+void foo (int i, char c)
+{
+ static_assert (sizeof (f1 (i)) == sizeof (int));
+ static_assert (sizeof (f1 (c)) == sizeof (char));
+}
diff --git a/gcc/testsuite/g++.dg/modules/concept-3_a.C b/gcc/testsuite/g++.dg/modules/concept-3_a.C
new file mode 100644
index 0000000..36fc086
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-3_a.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts -std=c++2a" }
+
+export module foo;
+// { dg-module-cmi foo }
+
+namespace foo
+{
+export template<typename _Tp>
+concept Addable = requires(_Tp& __t)
+ {
+ __t + __t;
+ };
+}
diff --git a/gcc/testsuite/g++.dg/modules/concept-3_b.C b/gcc/testsuite/g++.dg/modules/concept-3_b.C
new file mode 100644
index 0000000..46bfe03
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-3_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts -std=c++2a" }
+
+import foo;
+
+template <foo::Addable T> T Add (T a, T b)
+{
+ return a + b;
+}
+
+void frob ()
+{
+ Add (1, 2);
+ Add ((int *)0, (int *)0); // { dg-error "no match" }
+}
diff --git a/gcc/testsuite/g++.dg/modules/concept-4.H b/gcc/testsuite/g++.dg/modules/concept-4.H
new file mode 100644
index 0000000..66d1201
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-4.H
@@ -0,0 +1,18 @@
+// { dg-additional-options "-std=c++2a -fmodule-header" }
+// { dg-module-cmi {} }
+
+template<typename T>
+inline constexpr bool disable = false;
+
+template<typename U>
+concept sized = true;
+
+template<typename V>
+class TPL
+{
+};
+
+template<typename W>
+requires (!sized<W>)
+inline constexpr bool disable<TPL<W>>
+= true;
diff --git a/gcc/testsuite/g++.dg/modules/concept-5.h b/gcc/testsuite/g++.dg/modules/concept-5.h
new file mode 100644
index 0000000..1b049f5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-5.h
@@ -0,0 +1,7 @@
+template<typename T>
+requires (sizeof (T) == 1)
+constexpr int f1 (T x) { return 1; }
+
+template<typename T>
+requires (sizeof (T) != 1)
+constexpr int f1 (T x) { return 0; }
diff --git a/gcc/testsuite/g++.dg/modules/concept-5_a.H b/gcc/testsuite/g++.dg/modules/concept-5_a.H
new file mode 100644
index 0000000..f38febe
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-5_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodule-header -fconcepts" }
+// { dg-module-cmi {} }
+
+#include "concept-5.h"
diff --git a/gcc/testsuite/g++.dg/modules/concept-5_b.C b/gcc/testsuite/g++.dg/modules/concept-5_b.C
new file mode 100644
index 0000000..6a196d8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-5_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts -fconcepts -fdump-lang-module-alias" }
+
+#include "concept-5.h"
+import "concept-5_a.H";
+
+static_assert (f1 ('a') == 1);
+static_assert (f1 (0xa) == 0);
+
+// { dg-final { scan-lang-dump-times {named merge key \(matched\) template_decl:'::template f1'} 2 module } }
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/concept-6.h b/gcc/testsuite/g++.dg/modules/concept-6.h
new file mode 100644
index 0000000..0e98c98
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-6.h
@@ -0,0 +1,19 @@
+
+template<typename _Callable>
+struct Base
+{
+ Base (const _Callable &)
+ requires true
+ {}
+};
+
+template<typename _Callable>
+struct Derived : Base<_Callable>
+{
+ using Base<_Callable>::Base;
+};
+
+template<typename _Callable>
+Derived (_Callable) -> Derived<_Callable>;
+
+inline Derived all = [] (auto&& __r) {};
diff --git a/gcc/testsuite/g++.dg/modules/concept-6_a.H b/gcc/testsuite/g++.dg/modules/concept-6_a.H
new file mode 100644
index 0000000..e677531
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-6_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodule-header -fconcepts" }
+// { dg-module-cmi {} }
+
+#include "concept-6.h"
diff --git a/gcc/testsuite/g++.dg/modules/concept-6_b.C b/gcc/testsuite/g++.dg/modules/concept-6_b.C
new file mode 100644
index 0000000..4c2058d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/concept-6_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -fconcepts -fdump-lang-module-alias -fno-module-lazy" }
+
+#include "concept-6.h"
+import "concept-6_a.H";
+
+// { dg-final { scan-lang-dump-times {named merge key \(matched\) function_decl:'::Derived<::._anon_0>::__ct '} 6 module } }
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/constrained-partial-1_a.C b/gcc/testsuite/g++.dg/modules/constrained-partial-1_a.C
new file mode 100644
index 0000000..5a5482e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/constrained-partial-1_a.C
@@ -0,0 +1,38 @@
+// { dg-additional-options "-fmodules-ts -std=c++20" }
+
+export module M;
+// { dg-module-cmi M }
+
+export template <typename T0>
+struct traits
+{
+ static constexpr int variant = 0;
+};
+
+// #2
+template <typename T2>
+requires requires { typename T2::element_type; }
+struct traits<T2 *>
+{
+ using type = typename T2::element_type;
+ static constexpr int variant = 2;
+};
+
+
+// #1
+template <typename T1>
+struct traits<T1 *>
+{
+ using type = T1;
+ static constexpr int variant = 1;
+};
+
+
+// #3
+template <typename T3>
+requires requires { typename T3::value_type; }
+struct traits<T3 *>
+{
+ using type = typename T3::value_type;
+ static constexpr int variant = 3;
+};
diff --git a/gcc/testsuite/g++.dg/modules/constrained-partial-1_b.C b/gcc/testsuite/g++.dg/modules/constrained-partial-1_b.C
new file mode 100644
index 0000000..bbbbab5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/constrained-partial-1_b.C
@@ -0,0 +1,31 @@
+// { dg-additional-options "-fmodules-ts -std=c++20" }
+
+import M;
+
+struct Variant0
+{
+};
+
+
+struct Variant2
+{
+ using element_type = double;
+};
+
+struct Variant3
+{
+ using value_type = float;
+};
+
+void f()
+{
+ using v0 = traits<Variant0>;
+ using v1 = traits<Variant0 *>;
+ using v2 = traits<Variant2 *>;
+ using v3 = traits<Variant3 *>;
+
+ static_assert (v0::variant == 0);
+ static_assert (v1::variant == 1);
+ static_assert (v2::variant == 2);
+ static_assert (v3::variant == 3);
+}
diff --git a/gcc/testsuite/g++.dg/modules/convop-1_a.C b/gcc/testsuite/g++.dg/modules/convop-1_a.C
new file mode 100644
index 0000000..d0edec8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/convop-1_a.C
@@ -0,0 +1,12 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+export module frob;
+// { dg-module-cmi "frob" }
+
+export struct A
+{
+ operator int ()
+ {
+ return 0;
+ }
+};
diff --git a/gcc/testsuite/g++.dg/modules/convop-1_b.C b/gcc/testsuite/g++.dg/modules/convop-1_b.C
new file mode 100644
index 0000000..65350ee
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/convop-1_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options "-fmodules-ts" }
+import frob;
+
+int main ()
+{
+ A a;
+
+ if (static_cast<int> (a))
+ return 1;
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/cpp-1.C b/gcc/testsuite/g++.dg/modules/cpp-1.C
new file mode 100644
index 0000000..2ad9637
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cpp-1.C
@@ -0,0 +1,14 @@
+// { dg-do preprocess }
+
+module bob;
+#if 1
+export import stuart;
+#else
+import kevin;
+#endif
+import gru;
+#define EXPORT
+EXPORT import mabel;
+int i;
+
+// { dg-final { scan-file cpp-1.i "cpp-1.C\"\n\n\nmodule bob;\n\nexport import stuart;\n\n\n\nimport gru;\n\n import mabel;\n" } }
diff --git a/gcc/testsuite/g++.dg/modules/cpp-2_a.H b/gcc/testsuite/g++.dg/modules/cpp-2_a.H
new file mode 100644
index 0000000..391843f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cpp-2_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+#define STRING_H
+#define NOPE
diff --git a/gcc/testsuite/g++.dg/modules/cpp-2_b.H b/gcc/testsuite/g++.dg/modules/cpp-2_b.H
new file mode 100644
index 0000000..34c138d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cpp-2_b.H
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+#define STDIO_H
+#define think THIS IS STDIO
+#define CLOSE ]]
diff --git a/gcc/testsuite/g++.dg/modules/cpp-2_c.C b/gcc/testsuite/g++.dg/modules/cpp-2_c.C
new file mode 100644
index 0000000..c6e02b7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cpp-2_c.C
@@ -0,0 +1,17 @@
+// { dg-do preprocess }
+// { dg-additional-options "-fmodules-ts" }
+
+module bob;
+#pragma GCC unused
+import "./cpp-2_b.H" [[ CLOSE ]];
+import "cpp-2_a.H" [[ CLOSE;
+int i;
+#ifndef NOPE
+import nope;
+#endif
+think
+
+// { dg-final { scan-file cpp-2_c.i {cpp-2_c.C"\n\n\n\nmodule bob;\n#pragma GCC unused\nimport "[^\n]*\./cpp-2_b.H" \[\[ CLOSE ]];\nimport "[^\n]*cpp-2_a.H" \[\[ ]];\n} } }
+// { dg-final { scan-file cpp-2_c.i "int i;" } }
+// { dg-final { scan-file-not cpp-2_c.i "import *nope;" } }
+// { dg-final { scan-file cpp-2_c.i "THIS IS STDIO\n" } }
diff --git a/gcc/testsuite/g++.dg/modules/cpp-3.C b/gcc/testsuite/g++.dg/modules/cpp-3.C
new file mode 100644
index 0000000..3aa0c6e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cpp-3.C
@@ -0,0 +1,9 @@
+// { dg-do preprocess }
+
+#define NAME(X) X;
+
+export module NAME(bob)
+
+int i;
+// { dg-final { scan-file cpp-3.i "\nexport module bob;\n" } }
+// { dg-final { scan-file cpp-3.i "\nint i;\n" } }
diff --git a/gcc/testsuite/g++.dg/modules/cpp-4.C b/gcc/testsuite/g++.dg/modules/cpp-4.C
new file mode 100644
index 0000000..6c19431
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cpp-4.C
@@ -0,0 +1,10 @@
+// { dg-do preprocess }
+
+#if 1
+#include "cpp-4.h"
+#endif
+
+// { dg-final { scan-file cpp-4.i "/cpp-4.h\\\" 1" } }
+// { dg-final { scan-file cpp-4.i "/cpp-4.C\\\" 2" } }
+// { dg-final { scan-file cpp-4.i "import x;\n" } }
+// { dg-final { scan-file cpp-4.i "int" } }
diff --git a/gcc/testsuite/g++.dg/modules/cpp-4.h b/gcc/testsuite/g++.dg/modules/cpp-4.h
new file mode 100644
index 0000000..aec9547
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cpp-4.h
@@ -0,0 +1,4 @@
+#if 1
+import x;
+int i; // end here in middle of #if (ok)
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/cpp-5_a.H b/gcc/testsuite/g++.dg/modules/cpp-5_a.H
new file mode 100644
index 0000000..3941ee8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cpp-5_a.H
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+#ifndef AA
+#define AA
+
+#define Q 0
+
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/cpp-5_b.C b/gcc/testsuite/g++.dg/modules/cpp-5_b.C
new file mode 100644
index 0000000..504e792
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cpp-5_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts" }
+// missing semicolon
+import "cpp-5_a.H" // { dg-error "expected" }
+
+int main ()
+{
+}
diff --git a/gcc/testsuite/g++.dg/modules/cpp-5_c.C b/gcc/testsuite/g++.dg/modules/cpp-5_c.C
new file mode 100644
index 0000000..e0a78a5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cpp-5_c.C
@@ -0,0 +1,10 @@
+// { dg-do preprocess }
+// { dg-additional-options "-fmodules-ts" }
+#define Q 0
+#undef Q
+
+import "cpp-5_a.H";
+
+Q
+
+// { dg-final { scan-file cpp-5_c.i {\nimport "[^\n]*cpp-5_a.H";\n\n0\n} } }
diff --git a/gcc/testsuite/g++.dg/modules/cpp-6_a.H b/gcc/testsuite/g++.dg/modules/cpp-6_a.H
new file mode 100644
index 0000000..0bb1f41
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cpp-6_a.H
@@ -0,0 +1,3 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+#define bibity cpp-6_b.H
diff --git a/gcc/testsuite/g++.dg/modules/cpp-6_b.H b/gcc/testsuite/g++.dg/modules/cpp-6_b.H
new file mode 100644
index 0000000..2d5bccc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cpp-6_b.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#define bobity cpp-6_b
diff --git a/gcc/testsuite/g++.dg/modules/cpp-6_c.C b/gcc/testsuite/g++.dg/modules/cpp-6_c.C
new file mode 100644
index 0000000..f9b1e2d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/cpp-6_c.C
@@ -0,0 +1,18 @@
+// { dg-do preprocess }
+// { dg-additional-options "-fmodules-ts -isystem [srcdir]" }
+
+#define empty
+#define nop(X) X
+
+ONE bibity bobity
+import <cpp-6_a.H>;
+TWO bibity bobity
+import empty nop(<bibity>);
+THREE bibity bobity
+import empty <bobity.H>;
+FOUR bibity bobity
+
+// { dg-final { scan-file cpp-6_c.i {ONE bibity bobity\n} } }
+// { dg-final { scan-file cpp-6_c.i {TWO cpp-6_b.H bobity\n} } }
+// { dg-final { scan-file cpp-6_c.i {THREE cpp-6_b.H cpp-6_b\n} } }
+// { dg-final { scan-file cpp-6_c.i {FOUR cpp-6_b.H cpp-6_b\n} } }
diff --git a/gcc/testsuite/g++.dg/modules/debug-1_a.C b/gcc/testsuite/g++.dg/modules/debug-1_a.C
new file mode 100644
index 0000000..b0f1763
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/debug-1_a.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts -g" }
+
+export module frob;
+// { dg-module-cmi frob }
+
+export struct thingy
+{
+ virtual void X ()
+ {
+ thingy w;
+ }
+};
diff --git a/gcc/testsuite/g++.dg/modules/debug-1_b.C b/gcc/testsuite/g++.dg/modules/debug-1_b.C
new file mode 100644
index 0000000..7fca87b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/debug-1_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options "-fmodules-ts -g" }
+
+import frob;
+
+struct thongy : thingy
+{
+ void X ()
+ {
+ thongy w;
+ }
+};
diff --git a/gcc/testsuite/g++.dg/modules/decomp-1_a.C b/gcc/testsuite/g++.dg/modules/decomp-1_a.C
new file mode 100644
index 0000000..07506c9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/decomp-1_a.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts -std=c++2a" }
+export module foo;
+// { dg-module-cmi foo }
+
+struct tuple { int a, b, c;};
+
+tuple maker ();
+
+export inline int bob ()
+{
+ auto [a, b, c] = maker ();
+
+ return a + b + c;
+}
diff --git a/gcc/testsuite/g++.dg/modules/decomp-1_b.C b/gcc/testsuite/g++.dg/modules/decomp-1_b.C
new file mode 100644
index 0000000..709c333
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/decomp-1_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts -std=c++2a" }
+import foo;
+
+void x ()
+{
+ bob ();
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/deferred-1.h b/gcc/testsuite/g++.dg/modules/deferred-1.h
new file mode 100644
index 0000000..dc0fd78
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/deferred-1.h
@@ -0,0 +1,12 @@
+template<bool _Const>
+struct _Iterator
+{
+private:
+ static void mover (const _Iterator &arg = {}) noexcept (noexcept (arg));
+
+public:
+ _Iterator() = default;
+
+ friend void move (const _Iterator &arg2) noexcept (noexcept (mover (arg2)))
+ {}
+};
diff --git a/gcc/testsuite/g++.dg/modules/deferred-1_a.H b/gcc/testsuite/g++.dg/modules/deferred-1_a.H
new file mode 100644
index 0000000..88e6fab
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/deferred-1_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "deferred-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/deferred-1_b.C b/gcc/testsuite/g++.dg/modules/deferred-1_b.C
new file mode 100644
index 0000000..5f75aec
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/deferred-1_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "deferred-1.h"
+import "deferred-1_a.H";
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
+// { dg-final { scan-lang-dump-not {merge key \(unique\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/dep-1_a.C b/gcc/testsuite/g++.dg/modules/dep-1_a.C
new file mode 100644
index 0000000..5ec5dd3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/dep-1_a.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts -MD" }
+
+export module m:part;
+// { dg-module-cmi m:part }
+
+// All The Backslashes!
+// { dg-final { scan-file dep-1_a.d {\nm:part\.c\+\+m: gcm.cache/m-part\.gcm} } }
+// { dg-final { scan-file dep-1_a.d {\ngcm.cache/m-part\.gcm:| dep-1_a\.o} } }
+// { dg-final { scan-file dep-1_a.d {\n\.PHONY: m:part\.c\+\+m} } }
diff --git a/gcc/testsuite/g++.dg/modules/dep-1_b.C b/gcc/testsuite/g++.dg/modules/dep-1_b.C
new file mode 100644
index 0000000..7a0794e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/dep-1_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts -MD" }
+export module m;
+// { dg-module-cmi m }
+
+export import :part;
+// { dg-final { scan-file dep-1_b.d {\ndep-1_b\.s gcm.cache/m\.gcm: m:part\.c\+\+m} } }
+// { dg-final { scan-file dep-1_b.d {\nm\.c\+\+m: gcm.cache/m\.gcm} } }
+// { dg-final { scan-file dep-1_b.d {\n\.PHONY: m\.c\+\+m} } }
+// { dg-final { scan-file dep-1_b.d {\ngcm.cache/m\.gcm:| dep-1_b.o} } }
+// { dg-final { scan-file dep-1_b.d {\nCXX_IMPORTS \+= m:part\.c\+\+m} } }
diff --git a/gcc/testsuite/g++.dg/modules/dep-2.C b/gcc/testsuite/g++.dg/modules/dep-2.C
new file mode 100644
index 0000000..0962430
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/dep-2.C
@@ -0,0 +1,12 @@
+// { dg-do preprocess }
+// { dg-additional-options "-fmodules-ts -MD" }
+
+module m:part;
+// { dg-module-cmi !m:part }
+
+// All The Backslashes!
+// { dg-final { scan-file dep-2.d {\nm:part\.c\+\+m: gcm.cache/m-part\.gcm} } }
+// { dg-final { scan-file dep-2.d {\ngcm.cache/m:part\.gcm:| dep-2\.o} } }
+// { dg-final { scan-file dep-2.d {\n\.PHONY: m:part\.c\+\+m} } }
+
+// { dg-final { scan-file dep-2.i {\nmodule m:part;\n} } }
diff --git a/gcc/testsuite/g++.dg/modules/dep-3.C b/gcc/testsuite/g++.dg/modules/dep-3.C
new file mode 100644
index 0000000..f0f883e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/dep-3.C
@@ -0,0 +1,9 @@
+// { dg-do preprocess }
+// { dg-additional-options "-fmodules-ts -MD -Mno-modules" }
+
+module m:part;
+// { dg-module-cmi !m:part }
+
+// All The Backslashes!
+// { dg-final { scan-file-not dep-3.d {part\.gcm} } }
+// { dg-final { scan-file-not dep-3.d {part\.c\+\+m} } }
diff --git a/gcc/testsuite/g++.dg/modules/dir-only-1.C b/gcc/testsuite/g++.dg/modules/dir-only-1.C
new file mode 100644
index 0000000..d035b5f3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/dir-only-1.C
@@ -0,0 +1,16 @@
+// { dg-do preprocess }
+// { dg-additional-options -fdirectives-only }
+
+#define major NO NOT ME
+
+#ifdef major
+# undef major
+#else
+# error major not initially defined
+#endif
+
+#ifdef major
+# error major still defined
+#endif
+
+// { dg-final { scan-file dir-only-1.i "#undef major\n" } }
diff --git a/gcc/testsuite/g++.dg/modules/dir-only-2_a.H b/gcc/testsuite/g++.dg/modules/dir-only-2_a.H
new file mode 100644
index 0000000..3ed0de5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/dir-only-2_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#define X 1
diff --git a/gcc/testsuite/g++.dg/modules/dir-only-2_b.C b/gcc/testsuite/g++.dg/modules/dir-only-2_b.C
new file mode 100644
index 0000000..0691f76
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/dir-only-2_b.C
@@ -0,0 +1,28 @@
+// { dg-do preprocess }
+// { dg-additional-options "-fmodules-ts -fdirectives-only -isystem [srcdir]" }
+// a comment
+module; // line
+frob
+export
+import foo; // line
+import 7;
+
+im\
+port \
+sing;
+// comment
+import "dir-only-2_a.H";
+import <dir-only-2_a.H>;
+X
+#if !X
+#error "no X!"
+#endif
+export module bob;
+
+export import q;
+
+// { dg-final { scan-file dir-only-2_b.i {// a comment\nmodule ;\nfrob} } }
+// { dg-final { scan-file dir-only-2_b.i {frob\nexport\nimport foo;\nimport 7;} } }
+// { dg-final { scan-file dir-only-2_b.i {import "[^\n]*/dir-only-2_a.H";\nimport "[^\n]*/dir-only-2_a.H";\nX} } }
+// { dg-final { scan-file dir-only-2_b.i {export module bob;\n\nexport import q;} } }
+// { dg-final { scan-file dir-only-2_b.i {import sing;\n\n\n// comment} } }
diff --git a/gcc/testsuite/g++.dg/modules/dir-only-3.C b/gcc/testsuite/g++.dg/modules/dir-only-3.C
new file mode 100644
index 0000000..6e3af8d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/dir-only-3.C
@@ -0,0 +1,18 @@
+# 0 "dir-only-3.C"
+# 1 "<built-in>"
+# 1 "<command-line>"
+# 31 "<command-line>"
+# 1 "/usr/include/stdc-predef.h" 1 3 4
+
+# 32 "<command-line>" 2
+# 1 "dir-only-3.C"
+// { dg-additional-options {-fmodules-ts -fpreprocessed -fdirectives-only} }
+// { dg-module-cmi foo }
+module;
+#define foo baz
+export module foo;
+
+class import {};
+
+import
+x;
diff --git a/gcc/testsuite/g++.dg/modules/dir-only-4.C b/gcc/testsuite/g++.dg/modules/dir-only-4.C
new file mode 100644
index 0000000..80d6461
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/dir-only-4.C
@@ -0,0 +1,10 @@
+// { dg-additional-options {-fmodules-ts -fpreprocessed -fdirectives-only} }
+// { dg-module-cmi !foo }
+module;
+#define foo baz
+export module foo;
+
+class import {};
+
+import x; // { dg-error "post-module-declaration" }
+ // { dg-prune-output "not writing module" }
diff --git a/gcc/testsuite/g++.dg/modules/dir-recovery.C b/gcc/testsuite/g++.dg/modules/dir-recovery.C
new file mode 100644
index 0000000..90794b9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/dir-recovery.C
@@ -0,0 +1,9 @@
+// { dg-additional-options {-fmodules-ts -fpreprocessed} }
+module;
+
+; export module Hello; // { dg-error "global module fragment" }
+// { dg-error "after a module interface" "" { target *-*-* } .-1 }
+// { dg-error "not name a type" "" { target *-*-* } .-2 }
+// { dg-message "not recognized as a module control-line" "" { target *-*-* } .-3 }
+
+void SayHello ();
diff --git a/gcc/testsuite/g++.dg/modules/enum-1_a.C b/gcc/testsuite/g++.dg/modules/enum-1_a.C
new file mode 100644
index 0000000..53e2ac8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-1_a.C
@@ -0,0 +1,30 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-uid" }
+export module enUm;
+// { dg-module-cmi "enUm" }
+
+export enum Bill
+{
+ Zero,
+ One,
+ Three = 3
+};
+
+export enum class Ben
+{
+ Zero,
+ Two = 2,
+ Three
+};
+
+export inline Ben func1 ()
+{
+ return Ben::Three;
+}
+
+export inline Ben func2 ()
+{
+ return Ben (4);
+}
+
+// { dg-final { scan-lang-dump-times {Written enum value '::Ben::Three'} 2 module } }
diff --git a/gcc/testsuite/g++.dg/modules/enum-1_b.C b/gcc/testsuite/g++.dg/modules/enum-1_b.C
new file mode 100644
index 0000000..4b8c647
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-1_b.C
@@ -0,0 +1,22 @@
+// { dg-additional-options "-fmodules-ts" }
+import enUm;
+
+Bill x = Three;
+Ben y = Ben::Three;
+
+int main ()
+{
+ if (x != 3)
+ return 1;
+
+ if (int (y) != 3)
+ return 2;
+
+ if (int (func1 ()) != 3)
+ return 3;
+
+ if (int (func2 ()) != 4)
+ return 4;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/enum-2_a.C b/gcc/testsuite/g++.dg/modules/enum-2_a.C
new file mode 100644
index 0000000..9e5e42a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-2_a.C
@@ -0,0 +1,21 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export struct X
+{
+ enum q
+ {
+ frob
+ };
+};
+
+export template <int I> struct TPL
+{
+ enum p
+ {
+ u,
+ v = I
+ };
+};
diff --git a/gcc/testsuite/g++.dg/modules/enum-2_b.C b/gcc/testsuite/g++.dg/modules/enum-2_b.C
new file mode 100644
index 0000000..4e0aed4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-2_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+
+import foo;
+
+int i = X::frob;
+
+int k = TPL<2>::v;
+
+static_assert (!TPL<1>::u);
diff --git a/gcc/testsuite/g++.dg/modules/enum-3_a.C b/gcc/testsuite/g++.dg/modules/enum-3_a.C
new file mode 100644
index 0000000..514bdd0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-3_a.C
@@ -0,0 +1,11 @@
+// { dg-additional-options -fmodules-ts }
+// from https://godbolt.org/beta/z/V45BSw
+
+export module m0;
+// { dg-module-cmi m0 }
+namespace m0_ns
+{
+template <typename T> struct s0 {
+ enum t { a };
+};
+}
diff --git a/gcc/testsuite/g++.dg/modules/enum-3_b.C b/gcc/testsuite/g++.dg/modules/enum-3_b.C
new file mode 100644
index 0000000..073611c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-3_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodules-ts }
+module m0;
+
+static_assert (!m0_ns::s0<int>::a);
diff --git a/gcc/testsuite/g++.dg/modules/enum-4_a.C b/gcc/testsuite/g++.dg/modules/enum-4_a.C
new file mode 100644
index 0000000..96880b4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-4_a.C
@@ -0,0 +1,17 @@
+// { dg-additional-options -fmodules-ts }
+
+export module bob;
+// { dg-module-cmi bob }
+
+export template <typename T, typename U>
+struct same
+{
+ enum { value = 0 };
+};
+
+template<typename T>
+struct same <T, T>
+{
+ enum { value = 1 };
+};
+
diff --git a/gcc/testsuite/g++.dg/modules/enum-4_b.C b/gcc/testsuite/g++.dg/modules/enum-4_b.C
new file mode 100644
index 0000000..0f88fa1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-4_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodules-ts }
+
+import bob;
+
+static_assert (same<int, float>::value == 0);
+static_assert (same<int *, int *>::value == 1);
diff --git a/gcc/testsuite/g++.dg/modules/enum-5_a.H b/gcc/testsuite/g++.dg/modules/enum-5_a.H
new file mode 100644
index 0000000..1f2e84f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-5_a.H
@@ -0,0 +1,7 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+enum
+{
+ Zero,
+};
diff --git a/gcc/testsuite/g++.dg/modules/enum-5_b.C b/gcc/testsuite/g++.dg/modules/enum-5_b.C
new file mode 100644
index 0000000..385c1d3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-5_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodules-ts }
+import "enum-5_a.H";
+
+int i = Zero;
diff --git a/gcc/testsuite/g++.dg/modules/enum-6_a.H b/gcc/testsuite/g++.dg/modules/enum-6_a.H
new file mode 100644
index 0000000..0669046
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-6_a.H
@@ -0,0 +1,10 @@
+// { dg-module-do run }
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+enum { _S_chunk_size = 7 };
+
+template<typename T> T getter ()
+{
+ return _S_chunk_size;
+}
diff --git a/gcc/testsuite/g++.dg/modules/enum-6_b.C b/gcc/testsuite/g++.dg/modules/enum-6_b.C
new file mode 100644
index 0000000..04c1ee2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-6_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+import "enum-6_a.H";
+
+int main ()
+{
+ return !(getter<int> () == 7);
+}
diff --git a/gcc/testsuite/g++.dg/modules/enum-7.C b/gcc/testsuite/g++.dg/modules/enum-7.C
new file mode 100644
index 0000000..8cf31a9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-7.C
@@ -0,0 +1,20 @@
+// { dg-additional-options -fmodules-ts }
+
+// ICE getting template info of a function-scope enum
+
+template <typename T> void adl (T) {}
+
+template <typename T>
+void frob (T arg)
+{
+ enum class case_conv {none};
+
+ case_conv x = case_conv::none;
+
+ adl (x);
+}
+
+void foo ()
+{
+ frob (1);
+}
diff --git a/gcc/testsuite/g++.dg/modules/enum-8_a.H b/gcc/testsuite/g++.dg/modules/enum-8_a.H
new file mode 100644
index 0000000..90ccb91
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-8_a.H
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodule-header }
+
+enum : char
+{
+ Foo = 1,
+};
diff --git a/gcc/testsuite/g++.dg/modules/enum-8_b.H b/gcc/testsuite/g++.dg/modules/enum-8_b.H
new file mode 100644
index 0000000..021ad17
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-8_b.H
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodule-header }
+
+enum : int
+{
+ Foo = 2,
+};
diff --git a/gcc/testsuite/g++.dg/modules/enum-8_c.C b/gcc/testsuite/g++.dg/modules/enum-8_c.C
new file mode 100644
index 0000000..d14469b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-8_c.C
@@ -0,0 +1,5 @@
+// { dg-additional-options {-fmodules-ts -fno-module-lazy} }
+
+export module Char;
+
+import "enum-8_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/enum-8_d.C b/gcc/testsuite/g++.dg/modules/enum-8_d.C
new file mode 100644
index 0000000..6650773
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-8_d.C
@@ -0,0 +1,11 @@
+// { dg-additional-options {-fmodules-ts -fno-module-lazy -fdump-lang-module-alias} }
+
+import "enum-8_b.H";
+
+import Char;
+
+
+// { dg-final { scan-lang-dump {Read:-1's enum merge key \(new\) type_decl:'#null#'} module } }
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(new\) const_decl:'::._anon_0@[^\n]*/enum-8_b.H:1::Foo'} module } }
+// { dg-final { scan-lang-dump {Read:-1's enum merge key \(new\) type_decl:'#null#'} module } }
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(new\) const_decl:'::._anon_1@[^\n]*/enum-8_a.H:2::Foo'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/enum-bad-1_a.H b/gcc/testsuite/g++.dg/modules/enum-bad-1_a.H
new file mode 100644
index 0000000..2d8a7ba
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-bad-1_a.H
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodule-header }
+
+// { dg-module-cmi {} }
+
+enum ONE {A};
+enum {TWO, THREE};
+enum FOUR {B = 5};
+enum FIVE {C, D, E};
diff --git a/gcc/testsuite/g++.dg/modules/enum-bad-1_b.C b/gcc/testsuite/g++.dg/modules/enum-bad-1_b.C
new file mode 100644
index 0000000..b01cd66
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/enum-bad-1_b.C
@@ -0,0 +1,26 @@
+// { dg-additional-options {-fmodules-ts} }
+
+enum ONE {Q};
+enum {TWO, DREI};
+enum FOUR {B = 3};
+enum FIVE {C, D};
+
+import "enum-bad-1_a.H";
+
+
+
+
+
+
+ONE one;
+// { dg-regexp {In module [^\n]*enum-bad-1_a.H, imported at [^\n]*enum-bad-1_b.C:8:\n[^\n]*enum-bad-1_a.H:5:6: error: definition of 'enum ONE' does not match\n[^\n]*enum-bad-1_b.C:3:6: note: existing definition 'enum ONE'\nIn module [^\n]*enum-bad-1_a.H, imported at [^\n]*enum-bad-1_b.C:8:\n[^\n]*enum-bad-1_a.H:5:11: note: ... this enumerator 'A'\n[^\n]*enum-bad-1_b.C:3:11: note: enumerator 'Q' does not match ...\n[^\n]*enum-bad-1_b.C:15:1: note: during load of binding '::ONE'\n} }
+
+int i = TWO;
+// { dg-regexp {In module [^\n]*enum-bad-1_a.H, imported at [^\n]*enum-bad-1_b.C:8:\n[^\n]*enum-bad-1_a.H:6:6: error: definition of 'enum<unnamed>' does not match\n[^\n]*enum-bad-1_b.C:4:6: note: existing definition 'enum<unnamed>'\nIn module [^\n]*enum-bad-1_a.H, imported at [^\n]*enum-bad-1_b.C:8:\n[^\n]*enum-bad-1_a.H:6:12: note: ... this enumerator 'THREE'\n[^\n]*enum-bad-1_b.C:4:12: note: enumerator 'DREI' does not match ...\n[^\n]*enum-bad-1_b.C:18:9: note: during load of binding '::TWO'\n} }
+
+FOUR four;
+// { dg-regexp {In module [^\n]*enum-bad-1_a.H, imported at [^\n]*enum-bad-1_b.C:8:\n[^\n]*enum-bad-1_a.H:7:6: error: definition of 'enum FOUR' does not match\n[^\n]*enum-bad-1_b.C:5:6: note: existing definition 'enum FOUR'\nIn module [^\n]*enum-bad-1_a.H, imported at [^\n]*enum-bad-1_b.C:8:\n[^\n]*enum-bad-1_a.H:7:12: note: ... this enumerator 'B'\n[^\n]*enum-bad-1_b.C:5:12: note: enumerator 'B' does not match ...\n[^\n]*enum-bad-1_b.C:21:1: note: during load of binding '::FOUR'\n} }
+
+FIVE five;
+// { dg-regexp {In module [^\n]*enum-bad-1_a.H, imported at [^\n]*enum-bad-1_b.C:8:\n[^\n]*enum-bad-1_a.H:8:6: error: definition of 'enum FIVE' does not match\n[^\n]*enum-bad-1_b.C:6:6: note: existing definition 'enum FIVE'\nIn module [^\n]*enum-bad-1_a.H, imported at [^\n]*enum-bad-1_b.C:8:\n[^\n]*enum-bad-1_a.H:8:18: note: additional enumerators beginning with 'E'\n[^\n]*enum-bad-1_b.C:24:1: note: during load of binding '::FIVE'\n} }
+
diff --git a/gcc/testsuite/g++.dg/modules/err-1_a.C b/gcc/testsuite/g++.dg/modules/err-1_a.C
new file mode 100644
index 0000000..1f7ddec
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/err-1_a.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+export module Foo;
+// { dg-module-cmi "Foo" }
+
+export int Frob (int, int, long);
+export int Frob (int, long, int);
diff --git a/gcc/testsuite/g++.dg/modules/err-1_b.C b/gcc/testsuite/g++.dg/modules/err-1_b.C
new file mode 100644
index 0000000..6d5609c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/err-1_b.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts" }
+export module Bar;
+// { dg-module-cmi "Bar" }
+
+export int Frob (long, int, int);
diff --git a/gcc/testsuite/g++.dg/modules/err-1_c.C b/gcc/testsuite/g++.dg/modules/err-1_c.C
new file mode 100644
index 0000000..3a93cc6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/err-1_c.C
@@ -0,0 +1,22 @@
+// { dg-additional-options "-fmodules-ts" }
+import Foo;
+
+void One ()
+{
+ Frob (0, 0, 0L);
+ Frob (0, 0L, 0);
+ Frob (0L, 0, 0); // { dg-error "ambiguous" }
+ // { dg-regexp {candidate: 'int Frob@Foo\(int, long int, int\)'} }
+ // { dg-regexp {candidate: 'int Frob@Foo\(int, int, long int\)'} }
+}
+
+import Bar;
+
+void Two ()
+{
+ Frob (0L, 0, 0);
+ Frob (0, 0, 0); // { dg-error "ambiguous" }
+ // { dg-regexp {candidate: 'int Frob@Foo\(int, long int, int\)'} }
+ // { dg-regexp {candidate: 'int Frob@Foo\(int, int, long int\)'} }
+ // { dg-regexp {candidate: 'int Frob@Bar\(long int, int, int\)'} }
+}
diff --git a/gcc/testsuite/g++.dg/modules/err-1_d.C b/gcc/testsuite/g++.dg/modules/err-1_d.C
new file mode 100644
index 0000000..eb6b4ba
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/err-1_d.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts" }
+import Foo;
+import Bar;
+
+
+void Three ()
+{
+ Frob (0L, 0, 0);
+
+ Frob (0, 0, 0); // { dg-error "ambiguous" }
+ // { dg-regexp {candidate: 'int Frob@Foo\(int, long int, int\)'} }
+ // { dg-regexp {candidate: 'int Frob@Foo\(int, int, long int\)'} }
+ // { dg-regexp {candidate: 'int Frob@Bar\(long int, int, int\)'} }
+}
diff --git a/gcc/testsuite/g++.dg/modules/except-1.C b/gcc/testsuite/g++.dg/modules/except-1.C
new file mode 100644
index 0000000..6135c8f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/except-1.C
@@ -0,0 +1,18 @@
+// { dg-additional-options -fmodules-ts }
+export module bill;
+// { dg-module-cmi bill }
+
+// Make sure no deferred parse exception spec detritus remains
+
+template<typename T>
+class bob
+{
+ void frob () noexcept(T::frob ());
+ template<typename U> void frobber (int) noexcept (T::frob ());
+};
+
+
+class bill
+{
+ template<typename U> void frobbest (int) noexcept (U::frob ());
+};
diff --git a/gcc/testsuite/g++.dg/modules/except-2.h b/gcc/testsuite/g++.dg/modules/except-2.h
new file mode 100644
index 0000000..38355ec
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/except-2.h
@@ -0,0 +1,42 @@
+
+// Causes the CMI to have instantiated a deferred noexept spec that
+// the textually included file has not.
+
+typedef long unsigned int size_t;
+
+
+template<typename _Tp, _Tp __v>
+struct integral_constant
+{
+ static constexpr _Tp value = __v;
+ typedef integral_constant<_Tp, __v> type;
+};
+template<typename _Tp, _Tp __v>
+constexpr _Tp integral_constant<_Tp, __v>::value;
+
+template<typename _Head>
+struct _Tuple_impl : _Head
+{
+ _Tuple_impl(_Tuple_impl&& __in)
+ noexcept (integral_constant<bool,
+ noexcept(_Head(static_cast<_Head &&>(*(_Head *) (0))))>::type::value);
+};
+
+template <typename _Dp>
+struct __uniq_ptr_impl
+{
+ __uniq_ptr_impl (__uniq_ptr_impl&& __u) noexcept
+ : _M_t(static_cast <_Tuple_impl<_Dp> &&>(__u._M_t))
+ {}
+
+ _Tuple_impl<_Dp> _M_t;
+};
+
+struct _Impl_deleter {};
+
+typedef __uniq_ptr_impl<_Impl_deleter> up;
+
+inline void frob (up && p)
+{
+ up _M_cmpts (static_cast <up &&> (p));
+}
diff --git a/gcc/testsuite/g++.dg/modules/except-2_a.H b/gcc/testsuite/g++.dg/modules/except-2_a.H
new file mode 100644
index 0000000..966169c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/except-2_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "except-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/except-2_b.C b/gcc/testsuite/g++.dg/modules/except-2_b.C
new file mode 100644
index 0000000..78ed8f8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/except-2_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include "except-2.h"
+import "except-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/except-3.h b/gcc/testsuite/g++.dg/modules/except-3.h
new file mode 100644
index 0000000..8bf0f84
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/except-3.h
@@ -0,0 +1,24 @@
+
+template<typename _Tp>
+struct is_nothrow_move_constructible
+{
+ static constexpr bool value = false;
+};
+
+template<typename _Head>
+struct _Tuple_impl
+{
+ _Tuple_impl () noexcept(is_nothrow_move_constructible<_Head>::value)
+ { }
+};
+
+template<typename T>
+void TPL (_Tuple_impl<T> &) noexcept
+{
+ _Tuple_impl<T> m;
+}
+
+inline void foo (_Tuple_impl<int> &p)
+{
+ TPL<int> (p);
+}
diff --git a/gcc/testsuite/g++.dg/modules/except-3_a.H b/gcc/testsuite/g++.dg/modules/except-3_a.H
new file mode 100644
index 0000000..2f9f00e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/except-3_a.H
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+// We end up with instantiated noexcept specs in the CMI data matching
+// textually loaded fns with uninstantiated ones. Have to propagate,
+// not reinstantiate.
+#include "except-3.h"
diff --git a/gcc/testsuite/g++.dg/modules/except-3_b.C b/gcc/testsuite/g++.dg/modules/except-3_b.C
new file mode 100644
index 0000000..0cb8472
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/except-3_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "except-3.h"
+import "except-3_a.H";
+
+// { dg-final { scan-lang-dump-times {merge key \(new\) function_decl:'::_Tuple_impl<int>::__[cd]t '} 3 module } }
+// { dg-final { scan-lang-dump-times {Propagating instantiated noexcept to '::_Tuple_impl<int>::__ct <int>'} 1 module } }
diff --git a/gcc/testsuite/g++.dg/modules/exp-xlate-1_a.H b/gcc/testsuite/g++.dg/modules/exp-xlate-1_a.H
new file mode 100644
index 0000000..2079f90
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/exp-xlate-1_a.H
@@ -0,0 +1,5 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#define PROTECT 1
+int foo ();
diff --git a/gcc/testsuite/g++.dg/modules/exp-xlate-1_b.C b/gcc/testsuite/g++.dg/modules/exp-xlate-1_b.C
new file mode 100644
index 0000000..3295a6a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/exp-xlate-1_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options -fmodules-ts }
+export module evil;
+// { dg-module-cmi !evil }
+
+export // { dg-error "not part of following" }
+#include "exp-xlate-1_a.H" // { dg-error "must be contiguous" }
+// { dg-prune-output {not writing module} }
diff --git a/gcc/testsuite/g++.dg/modules/export-1.C b/gcc/testsuite/g++.dg/modules/export-1.C
new file mode 100644
index 0000000..8ca696e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/export-1.C
@@ -0,0 +1,22 @@
+// { dg-additional-options -fmodules-ts }
+
+export module frob;
+// { dg-module-cmi !frob }
+
+int x ();
+export int x (); // { dg-error "conflicting exporting declaration" }
+
+int y;
+export extern int y; // { dg-error "conflicting exporting declaration" }
+
+typedef int z;
+export typedef int z; // { dg-error "conflicting exporting declaration" }
+
+template <typename T> int f (T);
+export template <typename T> int f (T); // { dg-error "conflicting exporting declaration" }
+
+// doesn't go via duplicate_decls so we miss this for now
+class A;
+export class A; // { dg-error "conflicting exporting declaration" "" { xfail *-*-* } }
+
+// { dg-warning "due to errors" "" { target *-*-* } 0 }
diff --git a/gcc/testsuite/g++.dg/modules/extern-tpl-1_a.H b/gcc/testsuite/g++.dg/modules/extern-tpl-1_a.H
new file mode 100644
index 0000000..93afc4e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/extern-tpl-1_a.H
@@ -0,0 +1,23 @@
+// { dg-module-do link }
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+template <unsigned I> struct TPL
+{
+ int Source ()
+ {
+ return I;
+ }
+};
+
+extern template class TPL<1>;
+
+struct Foo
+{
+ TPL<1> m;
+
+ Foo () {m.Source ();};
+
+};
+
+static Foo __ioinit;
diff --git a/gcc/testsuite/g++.dg/modules/extern-tpl-1_b.C b/gcc/testsuite/g++.dg/modules/extern-tpl-1_b.C
new file mode 100644
index 0000000..f3c0dc4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/extern-tpl-1_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options {-fmodules-ts -fmodule-mapper=|@g++-mapper-server} }
+
+// Have to textually include, because we currently get confused about
+// the explicit instantiations and think they conflict
+#include "extern-tpl-1_a.H"
+
+template class TPL<1>;
diff --git a/gcc/testsuite/g++.dg/modules/extern-tpl-1_c.C b/gcc/testsuite/g++.dg/modules/extern-tpl-1_c.C
new file mode 100644
index 0000000..d1b6cb6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/extern-tpl-1_c.C
@@ -0,0 +1,7 @@
+// { dg-additional-options -fmodules-ts }
+
+import "extern-tpl-1_a.H";
+
+int main ()
+{
+}
diff --git a/gcc/testsuite/g++.dg/modules/extern-tpl-2_a.H b/gcc/testsuite/g++.dg/modules/extern-tpl-2_a.H
new file mode 100644
index 0000000..a90d50e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/extern-tpl-2_a.H
@@ -0,0 +1,13 @@
+// { dg-module-do link }
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+template <unsigned I> struct TPL
+{
+ int Source ()
+ {
+ return I;
+ }
+};
+
+extern template class TPL<1>;
diff --git a/gcc/testsuite/g++.dg/modules/extern-tpl-2_b.H b/gcc/testsuite/g++.dg/modules/extern-tpl-2_b.H
new file mode 100644
index 0000000..5f9875c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/extern-tpl-2_b.H
@@ -0,0 +1,13 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+import "extern-tpl-2_a.H";
+
+struct Foo
+{
+ TPL<1> m;
+
+ Foo () {m.Source ();};
+
+};
+
+static Foo __ioinit;
diff --git a/gcc/testsuite/g++.dg/modules/extern-tpl-2_c.C b/gcc/testsuite/g++.dg/modules/extern-tpl-2_c.C
new file mode 100644
index 0000000..b73ec6e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/extern-tpl-2_c.C
@@ -0,0 +1,5 @@
+// { dg-additional-options -fmodules-ts }
+
+import "extern-tpl-2_a.H";
+
+template class TPL<1>;
diff --git a/gcc/testsuite/g++.dg/modules/extern-tpl-2_d.C b/gcc/testsuite/g++.dg/modules/extern-tpl-2_d.C
new file mode 100644
index 0000000..25a977f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/extern-tpl-2_d.C
@@ -0,0 +1,7 @@
+// { dg-additional-options -fmodules-ts }
+
+import "extern-tpl-2_b.H";
+
+int main ()
+{
+}
diff --git a/gcc/testsuite/g++.dg/modules/flag-1_a.C b/gcc/testsuite/g++.dg/modules/flag-1_a.C
new file mode 100644
index 0000000..9f73320
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/flag-1_a.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -std=c++17" }
+export module opt;
+
+// { dg-module-cmi opt }
diff --git a/gcc/testsuite/g++.dg/modules/flag-1_b.C b/gcc/testsuite/g++.dg/modules/flag-1_b.C
new file mode 100644
index 0000000..32bfd82
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/flag-1_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts -std=c++2a" }
+
+// { dg-error "language dialect differs" "" { target *-*-* } 0 }
+
+import opt;
+
+// { dg-error "failed to read" "" { target *-*-* } 0 }
+// { dg-prune-output "compilation terminated" }
+// { dg-prune-output "fatal error" }
diff --git a/gcc/testsuite/g++.dg/modules/fn-inline-1_a.C b/gcc/testsuite/g++.dg/modules/fn-inline-1_a.C
new file mode 100644
index 0000000..13e717bb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/fn-inline-1_a.C
@@ -0,0 +1,21 @@
+// { dg-require-weak "" }
+// { dg-additional-options "-fmodules-ts" }
+export module bob;
+// { dg-module-cmi "bob" }
+
+export inline int frob (int a)
+{
+ return -a;
+}
+
+inline int frob (int s, int a)
+{
+ while (s--)
+ a <<= 1;
+ return a;
+}
+
+export int Frob (int s, int a);
+
+// { dg-final { scan-assembler-not "_Z4frobi:" } }
+// { dg-final { scan-assembler-not "_ZW3bobE4frobii:" } }
diff --git a/gcc/testsuite/g++.dg/modules/fn-inline-1_b.C b/gcc/testsuite/g++.dg/modules/fn-inline-1_b.C
new file mode 100644
index 0000000..72de1a9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/fn-inline-1_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options "-fmodules-ts" }
+module bob;
+
+int Frob (int n, int a)
+{
+ return frob (n, a);
+}
+
+// { dg-final { scan-assembler "_ZW3bobE4frobii:" } }
+// { dg-final { scan-assembler ".weak(_definition)?\[\t ]*_?_ZW3bobE4frobii" } }
+// { dg-final { scan-assembler "_Z4Frobii:" } }
diff --git a/gcc/testsuite/g++.dg/modules/fn-inline-1_c.C b/gcc/testsuite/g++.dg/modules/fn-inline-1_c.C
new file mode 100644
index 0000000..55a7aaa
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/fn-inline-1_c.C
@@ -0,0 +1,16 @@
+// { dg-additional-options "-fmodules-ts" }
+import bob;
+
+int main ()
+{
+ if (frob (2) != -2)
+ return 1;
+ if (Frob (0, 2) != 2)
+ return 1;
+ if (Frob (2, 2) != 8)
+ return 1;
+ return 0;
+}
+
+// { dg-final { scan-assembler "_Z4frobi:" } }
+// { dg-final { scan-assembler ".weak(_definition)?\[\t ]*_?_Z4frobi" } }
diff --git a/gcc/testsuite/g++.dg/modules/freeze-1_a.C b/gcc/testsuite/g++.dg/modules/freeze-1_a.C
new file mode 100644
index 0000000..f05dd3d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/freeze-1_a.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts" }
+export module bob;
+// { dg-module-cmi "bob" }
+
+export void bob ();
diff --git a/gcc/testsuite/g++.dg/modules/freeze-1_b.C b/gcc/testsuite/g++.dg/modules/freeze-1_b.C
new file mode 100644
index 0000000..36d1323
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/freeze-1_b.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts" }
+export module stuart;
+// { dg-module-cmi "stuart" }
+
+export void stuart ();
diff --git a/gcc/testsuite/g++.dg/modules/freeze-1_c.C b/gcc/testsuite/g++.dg/modules/freeze-1_c.C
new file mode 100644
index 0000000..3941d30
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/freeze-1_c.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts" }
+export module kevin;
+// { dg-module-cmi "kevin" }
+
+export void kevin ();
diff --git a/gcc/testsuite/g++.dg/modules/freeze-1_d.C b/gcc/testsuite/g++.dg/modules/freeze-1_d.C
new file mode 100644
index 0000000..faeae14
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/freeze-1_d.C
@@ -0,0 +1,21 @@
+// { dg-additional-options "-fmodules-ts --param lazy-modules=1 -fdump-lang-module" }
+
+import bob;
+import stuart;
+import kevin;
+
+int main ()
+{
+ stuart ();
+ bob ();
+ kevin ();
+
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Freezing 'bob.[^']*'} module } }
+// { dg-final { scan-lang-dump {Freezing 'stuart.[^']*'} module } }
+// { dg-final { scan-lang-dump {Freezing 'kevin.[^']*'} module } }
+// { dg-final { scan-lang-dump {Defrosting 'bob.[^']*'} module } }
+// { dg-final { scan-lang-dump {Defrosting 'stuart.[^']*'} module } }
+// { dg-final { scan-lang-dump {Defrosting 'kevin.[^']*'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/friend-1_a.C b/gcc/testsuite/g++.dg/modules/friend-1_a.C
new file mode 100644
index 0000000..2cfab400
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/friend-1_a.C
@@ -0,0 +1,37 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks" }
+
+export module bob;
+// { dg-module-cmi bob }
+
+export struct peeker
+{
+ static int peek (void *);
+};
+
+
+export class hidey
+{
+protected:
+ int key;
+
+public:
+ hidey (int key) :key (key)
+ {
+ }
+
+ friend class peeker;
+};
+
+export class secret : public hidey
+{
+public:
+ secret (int key) : hidey (key)
+ {
+ }
+};
+
+// hidey, peeker & secret are all in different clusters
+
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl definition '::peeker'\n( \[.\]=[^\n]*'\n)* \[.\]=binding '::peeker'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl definition '::hidey'\n( \[.\]=[^\n]*'\n)* \[.\]=binding '::hidey'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl definition '::secret'\n( \[.\]=[^\n]*'\n)* \[.\]=binding '::secret'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/friend-1_b.C b/gcc/testsuite/g++.dg/modules/friend-1_b.C
new file mode 100644
index 0000000..380bbc5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/friend-1_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+
+module bob;
+
+int peeker::peek (void *data)
+{
+ return reinterpret_cast <secret *> (data)->key;
+}
+
+// { dg-final { scan-lang-dump {Class '::hidey@bob:.' befriending record_type:'::peeker@bob:.'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/friend-1_c.C b/gcc/testsuite/g++.dg/modules/friend-1_c.C
new file mode 100644
index 0000000..2fb2988
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/friend-1_c.C
@@ -0,0 +1,13 @@
+// { dg-additional-options -fmodules-ts }
+
+import bob;
+
+int main ()
+{
+ secret s (5);
+
+ if (peeker::peek (&s) != 5)
+ return 1;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/friend-2_a.C b/gcc/testsuite/g++.dg/modules/friend-2_a.C
new file mode 100644
index 0000000..ed329d4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/friend-2_a.C
@@ -0,0 +1,16 @@
+// { dg-additional-options -fmodules-ts }
+
+export module bink;
+// { dg-module-cmi bink }
+
+class pusher
+{
+ friend void frob (pusher *){}
+public:
+ pusher (){}
+};
+
+inline void grabber (pusher *p)
+{
+ frob (p);
+}
diff --git a/gcc/testsuite/g++.dg/modules/friend-2_b.C b/gcc/testsuite/g++.dg/modules/friend-2_b.C
new file mode 100644
index 0000000..27034c7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/friend-2_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options -fmodules-ts }
+
+module bink;
+
+struct other {};
+
+void f (pusher *p, other *q)
+{
+ grabber (p);
+
+ frob (p); // ok, found by ADL
+
+ frob (q); // { dg-error "not declared" }
+}
diff --git a/gcc/testsuite/g++.dg/modules/friend-3.C b/gcc/testsuite/g++.dg/modules/friend-3.C
new file mode 100644
index 0000000..48320eb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/friend-3.C
@@ -0,0 +1,34 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi !foo }
+
+namespace bob {
+
+export void corge ();
+void grault ();
+
+export class Q
+{
+ friend void foo ();
+ friend void bar ();
+ friend void corge ();
+ friend void grault ();
+};
+
+export void foo ();
+void bar (); // exported
+
+class R
+{
+ friend void quux ();
+ friend void toto ();
+ friend void corge ();
+ friend void grault ();
+};
+
+export void quux (); // { dg-error "conflicting export" }
+void toto (); // not exported
+
+}
+// { dg-prune-output "not writing module" }
diff --git a/gcc/testsuite/g++.dg/modules/friend-4_a.C b/gcc/testsuite/g++.dg/modules/friend-4_a.C
new file mode 100644
index 0000000..d9559c6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/friend-4_a.C
@@ -0,0 +1,33 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+namespace bob {
+
+export void corge ();
+void grault ();
+
+export class Q
+{
+ friend void foo ();
+ friend void bar ();
+ friend void corge ();
+ friend void grault ();
+ friend void xyzzy (Q);
+};
+
+export void foo ();
+void bar (); // exported
+
+class R
+{
+ friend void toto ();
+ friend void corge ();
+ friend void grault ();
+ friend void xyzzy (R);
+};
+
+void toto (); // not exported
+export R getR ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/friend-4_b.C b/gcc/testsuite/g++.dg/modules/friend-4_b.C
new file mode 100644
index 0000000..759dbb5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/friend-4_b.C
@@ -0,0 +1,19 @@
+// { dg-additional-options -fmodules-ts }
+
+import foo;
+
+using namespace bob;
+
+void doit ()
+{
+ corge ();
+ foo ();
+ bar ();
+
+ grault (); // { dg-error "not declared" }
+ toto (); // { dg-error "not declared" }
+ xyzzy (); // { dg-error "not declared" }
+
+ xyzzy (getR); // ADL
+ xyzzy (Q{}); // ADL
+}
diff --git a/gcc/testsuite/g++.dg/modules/friend-5_a.C b/gcc/testsuite/g++.dg/modules/friend-5_a.C
new file mode 100644
index 0000000..4d005a8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/friend-5_a.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+// From Andrew Sutton
+
+export module foo;
+// { dg-module-cmi foo }
+export class A {
+ friend class B;
+};
diff --git a/gcc/testsuite/g++.dg/modules/friend-5_b.C b/gcc/testsuite/g++.dg/modules/friend-5_b.C
new file mode 100644
index 0000000..f043d7a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/friend-5_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options -fmodules-ts }
+// From Andrew Sutton
+
+export module bar;
+import foo;
+
+class B { // { dg-error "in a different module" }
+ B() { object.value = 42; }
+ A object;
+};
+// { dg-prune-output "not writing module" }
diff --git a/gcc/testsuite/g++.dg/modules/gc-1_a.C b/gcc/testsuite/g++.dg/modules/gc-1_a.C
new file mode 100644
index 0000000..5ee20c9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/gc-1_a.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts --param ggc-min-expand=0 --param ggc-min-heapsize=0" }
+
+export module bob;
+// { dg-module-cmi bob }
+
+export int bob ();
+
+void frink ()
+{
+}
diff --git a/gcc/testsuite/g++.dg/modules/gc-1_b.C b/gcc/testsuite/g++.dg/modules/gc-1_b.C
new file mode 100644
index 0000000..d6ff09c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/gc-1_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts" }
+export module stuart;
+
+export int stuart ();
diff --git a/gcc/testsuite/g++.dg/modules/gc-1_c.C b/gcc/testsuite/g++.dg/modules/gc-1_c.C
new file mode 100644
index 0000000..289a999
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/gc-1_c.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts" }
+export module kevin;
+
+export int kevin ();
diff --git a/gcc/testsuite/g++.dg/modules/gc-1_d.C b/gcc/testsuite/g++.dg/modules/gc-1_d.C
new file mode 100644
index 0000000..a27e5d4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/gc-1_d.C
@@ -0,0 +1,28 @@
+// { dg-additional-options "-fmodules-ts --param ggc-min-expand=0 --param ggc-min-heapsize=0" }
+
+import bob;
+import stuart;
+import kevin;
+
+void frob ()
+{
+}
+
+void stuart (int);
+
+void quux ()
+{
+ bob ();
+}
+
+void toto ()
+{
+ stuart (1);
+}
+
+void fido ()
+{
+ stuart ();
+ kevin ();
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/gc-2.map b/gcc/testsuite/g++.dg/modules/gc-2.map
new file mode 100644
index 0000000..58963bd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/gc-2.map
@@ -0,0 +1,2 @@
+$root .
+frob map-1_a.nms
diff --git a/gcc/testsuite/g++.dg/modules/gc-2_a.C b/gcc/testsuite/g++.dg/modules/gc-2_a.C
new file mode 100644
index 0000000..a006fb3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/gc-2_a.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts --param ggc-min-expand=0 --param ggc-min-heapsize=0 -fno-module-lazy -fmodule-mapper=[srcdir]/gc-2.map" }
+// { dg-additional-files map-1.map }
+
+// Make sure the module hash table survives GC
+
+// { dg-module-cmi "=map-1_a.nms" }
+export module frob;
+
+int thing;
diff --git a/gcc/testsuite/g++.dg/modules/global-1_a.C b/gcc/testsuite/g++.dg/modules/global-1_a.C
new file mode 100644
index 0000000..68e18e3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/global-1_a.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+module;
+# 4 "gmf" 1
+int bar ();
+# 6 "" 2
+export module thing;
+// { dg-module-cmi "thing" }
+
+export int baz ();
diff --git a/gcc/testsuite/g++.dg/modules/global-1_b.C b/gcc/testsuite/g++.dg/modules/global-1_b.C
new file mode 100644
index 0000000..9a67fb1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/global-1_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts" }
+import thing;
+
+void bink ()
+{
+ baz ();
+ bar (); // { dg-error "not declared" "" }
+}
diff --git a/gcc/testsuite/g++.dg/modules/global-2_a.C b/gcc/testsuite/g++.dg/modules/global-2_a.C
new file mode 100644
index 0000000..7f86fe9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/global-2_a.C
@@ -0,0 +1,22 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-graph" }
+module;
+#include <stdio.h>
+#include <stdarg.h>
+export module logger;
+// { dg-module-cmi logger }
+
+export void Log (char const *fmt, ...)
+{
+ va_list args;
+ va_start (args, fmt);
+ printf ("Logging:");
+ vprintf (fmt, args);
+ printf ("\n");
+ va_end (args);
+}
+
+// { dg-final { scan-lang-dump {Dependencies of decl function_decl:'::Log'} module } }
+// not reachable (body not inline)
+// { dg-final { scan-lang-dump-not {Reachable GMF '::printf[^\n']*' added} module } }
+
diff --git a/gcc/testsuite/g++.dg/modules/global-2_b.C b/gcc/testsuite/g++.dg/modules/global-2_b.C
new file mode 100644
index 0000000..7d49e1d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/global-2_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import logger;
+
+int main ()
+{
+ Log ("hello world!");
+ return 0;
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/global-3_a.C b/gcc/testsuite/g++.dg/modules/global-3_a.C
new file mode 100644
index 0000000..fe7bb84
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/global-3_a.C
@@ -0,0 +1,16 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-graph" }
+module;
+#include <iostream>
+export module logger;
+// { dg-module-cmi logger }
+
+export void Log (char const *msg)
+{
+ std::cout << "Logging:" << msg << "\n";
+}
+
+// { dg-final { scan-lang-dump {Dependencies of decl function_decl:'::Log'} module } }
+// not reachable (body not inline)
+// { dg-final { scan-lang-dump-not {Reachable GMF '::printf[^'\n]*' added} module } }
+
diff --git a/gcc/testsuite/g++.dg/modules/global-3_b.C b/gcc/testsuite/g++.dg/modules/global-3_b.C
new file mode 100644
index 0000000..da0a399
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/global-3_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import logger;
+
+int main ()
+{
+ Log ("hello world!");
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/gmf-1_a.C b/gcc/testsuite/g++.dg/modules/gmf-1_a.C
new file mode 100644
index 0000000..a340e3f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/gmf-1_a.C
@@ -0,0 +1,19 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+
+module;
+
+# 6 "std" 1
+template<typename T>
+class basic_string_view
+{
+public:
+ basic_string_view(const char* __str) noexcept;
+};
+
+# 14 "" 2
+export module hello;
+// { dg-module-cmi hello }
+export void greeter (basic_string_view<char> const &name)
+{
+
+}
diff --git a/gcc/testsuite/g++.dg/modules/gmf-1_b.C b/gcc/testsuite/g++.dg/modules/gmf-1_b.C
new file mode 100644
index 0000000..7162d2d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/gmf-1_b.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+
+import hello;
+int main (void)
+{
+ greeter ("world");
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Reading definition of '::template basic_string_view@hello:1'} module } }
+// { dg-final { scan-lang-dump {Read declaration of '::basic_string_view@hello:1<char>'} module } }
+// { dg-final { scan-lang-dump {Read declaration of '::greeter@hello:1'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/gmf-2_a.H b/gcc/testsuite/g++.dg/modules/gmf-2_a.H
new file mode 100644
index 0000000..4318b16
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/gmf-2_a.H
@@ -0,0 +1,10 @@
+// { dg-module-do run }
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#define MACRO(X) X
+
+inline int frob (int x)
+{
+ return x + 2;
+}
diff --git a/gcc/testsuite/g++.dg/modules/gmf-2_b.C b/gcc/testsuite/g++.dg/modules/gmf-2_b.C
new file mode 100644
index 0000000..15fafd6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/gmf-2_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options -fmodules-ts }
+module;
+
+import "gmf-2_a.H";
+
+export module Foo;
+// { dg-module-cmi Foo }
+
+export inline int MACRO (fn) (int i)
+{
+ return frob (i);
+}
+
+export int (MACRO) (int i);
diff --git a/gcc/testsuite/g++.dg/modules/gmf-2_c.C b/gcc/testsuite/g++.dg/modules/gmf-2_c.C
new file mode 100644
index 0000000..4b4acc6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/gmf-2_c.C
@@ -0,0 +1,14 @@
+// { dg-additional-options -fmodules-ts }
+module Foo;
+
+// We see no frob from primary's GMF
+int frob (int x)
+{
+ return fn (-x);
+}
+
+// We see no macro from primary's GMF
+int MACRO (int i)
+{
+ return frob (i);
+}
diff --git a/gcc/testsuite/g++.dg/modules/gmf-2_d.C b/gcc/testsuite/g++.dg/modules/gmf-2_d.C
new file mode 100644
index 0000000..357c8e8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/gmf-2_d.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+import Foo;
+
+// We see no MACRO
+
+int main ()
+{
+ return !(MACRO (5) == -3);
+}
diff --git a/gcc/testsuite/g++.dg/modules/gvar_a.C b/gcc/testsuite/g++.dg/modules/gvar_a.C
new file mode 100644
index 0000000..2855b33
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/gvar_a.C
@@ -0,0 +1,15 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+module;
+# 3 __FILE__ 1
+
+int v1;
+
+# 9 "" 2
+export module b;
+// { dg-module-cmi b }
+
+export inline auto get ()
+{
+ return v1;
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/gvar_b.C b/gcc/testsuite/g++.dg/modules/gvar_b.C
new file mode 100644
index 0000000..e53e3f2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/gvar_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts" }
+import b;
+
+int main ()
+{
+ get ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/hdr-1_a.H b/gcc/testsuite/g++.dg/modules/hdr-1_a.H
new file mode 100644
index 0000000..4ce045b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/hdr-1_a.H
@@ -0,0 +1,10 @@
+// { dg-additional-options {-fmodule-header -fdump-lang-module-blocks} }
+
+// { dg-module-cmi {} }
+
+class frob;
+
+template<int I> class FROB;
+
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl declaration '::frob'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl declaration '::template FROB'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/hdr-1_b.H b/gcc/testsuite/g++.dg/modules/hdr-1_b.H
new file mode 100644
index 0000000..6817f93
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/hdr-1_b.H
@@ -0,0 +1,21 @@
+// { dg-additional-options {-fmodule-header -fdump-lang-module-blocks} }
+
+// { dg-module-cmi {} }
+
+import "hdr-1_a.H";
+
+class frob
+{
+public:
+ int field;
+};
+
+template<int J>
+class FROB
+{
+public:
+ static constexpr int val = J;
+};
+
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl definition '::frob'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl definition '::template FROB'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/hdr-1_c.C b/gcc/testsuite/g++.dg/modules/hdr-1_c.C
new file mode 100644
index 0000000..f8fa093
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/hdr-1_c.C
@@ -0,0 +1,14 @@
+// { dg-additional-options {-fmodules-ts} }
+
+import "hdr-1_b.H";
+
+int foo (frob *p)
+{
+ return p->field;
+}
+
+int foo (FROB<2> *p)
+{
+ return p->val;
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/hdr-init-1_a.H b/gcc/testsuite/g++.dg/modules/hdr-init-1_a.H
new file mode 100644
index 0000000..25cbf3f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/hdr-init-1_a.H
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+int bob ();
+
+static int var = bob ();
diff --git a/gcc/testsuite/g++.dg/modules/hdr-init-1_b.H b/gcc/testsuite/g++.dg/modules/hdr-init-1_b.H
new file mode 100644
index 0000000..25cbf3f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/hdr-init-1_b.H
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+int bob ();
+
+static int var = bob ();
diff --git a/gcc/testsuite/g++.dg/modules/hdr-init-1_c.C b/gcc/testsuite/g++.dg/modules/hdr-init-1_c.C
new file mode 100644
index 0000000..efcc485
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/hdr-init-1_c.C
@@ -0,0 +1,24 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-alias} }
+
+import "hdr-init-1_a.H";
+import "hdr-init-1_b.H";
+
+int bob ()
+{
+ static int i;
+
+ return ++i;
+}
+
+int main ()
+{
+ return !(var == 1);
+}
+
+// { dg-final { scan-lang-dump-times {Reading 1 initializers} 2 module } }
+
+// { dg-final { scan-lang-dump {Read:-1's named merge key \(new\) var_decl:'::var'} module } }
+// { dg-final { scan-lang-dump-times {Reading definition var_decl '::var@[^\n]*/hdr-init-1_a.H:1'} 2 module } }
+
+// { dg-final { scan-lang-dump {Read:-1's named merge key \(matched\) var_decl:'::var'} module } }
+
diff --git a/gcc/testsuite/g++.dg/modules/hello-1_a.C b/gcc/testsuite/g++.dg/modules/hello-1_a.C
new file mode 100644
index 0000000..75853d6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/hello-1_a.C
@@ -0,0 +1,12 @@
+// { dg-module-do run }
+// { dg-additional-options -fmodules-ts }
+
+module;
+#include <iostream>
+#include <string_view>
+export module hello;
+// { dg-module-cmi hello }
+export void greeter (std::string_view const &name)
+{
+ std::cout << "Hello " << name << "!\n";
+}
diff --git a/gcc/testsuite/g++.dg/modules/hello-1_b.C b/gcc/testsuite/g++.dg/modules/hello-1_b.C
new file mode 100644
index 0000000..b7d78c4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/hello-1_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+
+#include <string_view>
+import hello;
+int main (void)
+{
+ greeter ("world");
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/horcrux-1_a.C b/gcc/testsuite/g++.dg/modules/horcrux-1_a.C
new file mode 100644
index 0000000..ff548d0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/horcrux-1_a.C
@@ -0,0 +1,17 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+template<typename _Tp, _Tp __v>
+struct integral_constant
+{};
+
+template<bool __v>
+using __bool_constant = integral_constant<bool, __v>;
+
+template<typename _Tp, typename... _Args>
+struct __is_constructible_impl
+ : public __bool_constant<__is_constructible(_Tp, _Args...)>
+{ };
+
diff --git a/gcc/testsuite/g++.dg/modules/horcrux-1_b.C b/gcc/testsuite/g++.dg/modules/horcrux-1_b.C
new file mode 100644
index 0000000..842bf41
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/horcrux-1_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+
+module foo;
+
+int main ()
+{
+ __is_constructible_impl<bool> x;
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/ice-1.C b/gcc/testsuite/g++.dg/modules/ice-1.C
new file mode 100644
index 0000000..128734d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ice-1.C
@@ -0,0 +1,3 @@
+// { dg-additional-options "-fmodules-ts" }
+// we ICED on malformed preambles ending at EOF.
+import bob // { dg-error "expected" }
diff --git a/gcc/testsuite/g++.dg/modules/imp-inline-1_a.C b/gcc/testsuite/g++.dg/modules/imp-inline-1_a.C
new file mode 100644
index 0000000..56bbbdd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/imp-inline-1_a.C
@@ -0,0 +1,37 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+
+module;
+
+# 6 __FILE__ 1
+struct Bob
+{
+ // inline
+ static auto frob ()
+ {
+ }
+};
+
+# 14 "" 2
+
+export module Foo;
+// { dg-module-cmi Foo }
+
+export struct Bill
+{
+ // not inline
+ static auto dob ()
+ {
+ }
+ static inline auto frob ()
+ {
+ }
+};
+
+export inline auto GMF ()
+{
+ return Bob::frob ();
+}
+
+// { dg-final { scan-assembler-not {_ZN3Bob4frobEv:} } }
+// { dg-final { scan-assembler-not {_ZN4Bill4frobEv:} } }
+// { dg-final { scan-assembler {_ZN4Bill3dobEv:} } }
diff --git a/gcc/testsuite/g++.dg/modules/imp-inline-1_b.C b/gcc/testsuite/g++.dg/modules/imp-inline-1_b.C
new file mode 100644
index 0000000..c127f70
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/imp-inline-1_b.C
@@ -0,0 +1,22 @@
+// { dg-additional-options "-fmodules-ts -fno-inline" }
+
+import Foo;
+
+int main ()
+{
+ GMF ();
+ Bill::dob ();
+ Bill::frob ();
+
+ return 0;
+}
+
+// { dg-final { scan-assembler {_ZN3Bob4frobEv:} } }
+// { dg-final { scan-assembler {_ZN4Bill4frobEv:} } }
+// { dg-final { scan-assembler-not {_ZN4Bill3dobEv:} } }
+// { dg-final { scan-assembler {_Z3GMFv:} } }
+
+// { dg-final { scan-assembler {call[ \t]+_?_ZN3Bob4frobEv} { target i?86-*-* x86_64-*-* } } }
+// { dg-final { scan-assembler {call[ \t]+_?_Z3GMFv} { target i?86-*-* x86_64-*-* } } }
+// { dg-final { scan-assembler {call[ \t]+_?_ZN4Bill3dobEv} { target i?86-*-* x86_64-*-* } } }
+// { dg-final { scan-assembler {call[ \t]+_?_ZN4Bill4frobEv} { target i?86-*-* x86_64-*-* } } }
diff --git a/gcc/testsuite/g++.dg/modules/imp-member-1_a.C b/gcc/testsuite/g++.dg/modules/imp-member-1_a.C
new file mode 100644
index 0000000..4798ce5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/imp-member-1_a.C
@@ -0,0 +1,16 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks" }
+export module A;
+// { dg-module-cmi A }
+
+struct M
+{
+ M (){}
+};
+
+export struct C
+{
+ M m;
+ // lazy implicit ctor
+};
+
+// { dg-final { scan-lang-dump-not {'::C::__ct '} module } }
diff --git a/gcc/testsuite/g++.dg/modules/imp-member-1_b.C b/gcc/testsuite/g++.dg/modules/imp-member-1_b.C
new file mode 100644
index 0000000..849cf3c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/imp-member-1_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks" }
+export module B;
+// { dg-module-cmi B }
+export import A;
+
+export struct D
+{
+ C c;
+
+ // ctor causes C::C to exist, and we need to put it in out CMI
+ inline D (){}
+};
+
+// { dg-final { scan-lang-dump {\[.*\]=decl definition '::C@A:1::__ct '} module } }
diff --git a/gcc/testsuite/g++.dg/modules/imp-member-1_c.C b/gcc/testsuite/g++.dg/modules/imp-member-1_c.C
new file mode 100644
index 0000000..b354ca8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/imp-member-1_c.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks-alias" }
+import B;
+
+void fn ()
+{
+ D d; // reads in C::C implicit ctor
+}
+
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(new\) function_decl:'::C@A:.::__ct '\n} module } }
+// { dg-final { scan-lang-dump {Adding implicit member '::C@A:.::__ct @B:.} module } }
diff --git a/gcc/testsuite/g++.dg/modules/imp-member-1_d.C b/gcc/testsuite/g++.dg/modules/imp-member-1_d.C
new file mode 100644
index 0000000..c7f3158
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/imp-member-1_d.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks" }
+import B;
+
+void fn ()
+{
+ C c; // creates C::C implicitly (we never read B's version)
+}
+
+// { dg-final { scan-lang-dump-not {Read:-1's named merge key \([a-z]*\) function_decl:'::C@A:.::__ct '\n} module } }
+// { dg-final { scan-lang-dump-not {Adding implicit member '::C@A:.::__ct @B:.} module } }
diff --git a/gcc/testsuite/g++.dg/modules/imp-member-1_e.C b/gcc/testsuite/g++.dg/modules/imp-member-1_e.C
new file mode 100644
index 0000000..b771850
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/imp-member-1_e.C
@@ -0,0 +1,15 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks-alias" }
+import B;
+
+void fn ()
+{
+ C c; // created C::C implicitly
+}
+
+void fn2 ()
+{
+ D d; // merges implicit C::C
+}
+
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(matched\) function_decl:'::C@A:.::__ct '\n} module } }
+// { dg-final { scan-lang-dump-not {Adding implicit member '::C@A:.::__ct @B:.} module } }
diff --git a/gcc/testsuite/g++.dg/modules/imp-member-2_a.C b/gcc/testsuite/g++.dg/modules/imp-member-2_a.C
new file mode 100644
index 0000000..8d4d839
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/imp-member-2_a.C
@@ -0,0 +1,28 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks" }
+// A more complete imp-member test
+export module A;
+// { dg-module-cmi A }
+
+struct M
+{
+ M (){}
+ M (M const &){}
+ M (M &&){}
+ ~M (){}
+ M &operator=(M const &){ return *this;}
+ M &operator=(M &&){ return *this;}
+};
+
+export struct C
+{
+ M m;
+ // lazy implicit ctors, dtors, assop
+};
+
+// C doesn't contain a lot
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl definition '::C'\n \[1\]=decl declaration '::C::C'\n \[2\]=binding '::C'\n} module } }
+
+// particularly not ...
+// { dg-final { scan-lang-dump-not {'::C::__ct '} module } }
+// { dg-final { scan-lang-dump-not {'::C::__dt '} module } }
+// { dg-final { scan-lang-dump-not {'::C::operator= '} module } }
diff --git a/gcc/testsuite/g++.dg/modules/imp-member-2_b.C b/gcc/testsuite/g++.dg/modules/imp-member-2_b.C
new file mode 100644
index 0000000..09795af
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/imp-member-2_b.C
@@ -0,0 +1,21 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks" }
+export module B;
+// { dg-module-cmi B }
+export import A;
+
+export struct D
+{
+ C c;
+
+ // cause all C's implicit members to exist, and we need to put it in out CMI
+ inline D (){}
+ inline D (D const &v) : c (v.c) {}
+ inline D (D &&v) : c (static_cast<C &&> (v.c)) {}
+ inline ~D () {}
+ inline D &operator= (D const &v) { c = v.c; return *this;}
+ inline D &operator= (D &&v) { c =static_cast<C &&> (v.c); return *this;}
+};
+
+// { dg-final { scan-lang-dump-times {\[0\]=decl definition '::C@A:1::__dt '} 1 module } }
+// { dg-final { scan-lang-dump-times {\[0\]=decl definition '::C@A:1::__ct '} 3 module } }
+// { dg-final { scan-lang-dump-times {\[0\]=decl definition '::C@A:1::operator='} 2 module } }
diff --git a/gcc/testsuite/g++.dg/modules/imp-member-2_c.C b/gcc/testsuite/g++.dg/modules/imp-member-2_c.C
new file mode 100644
index 0000000..bb6b5de
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/imp-member-2_c.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks-alias" }
+import B;
+
+void fn ()
+{
+ D d; // reads in C::C implicits
+}
+
+// { dg-final { scan-lang-dump-times {Read:-[0-9]*'s named merge key \(new\) function_decl:'::C@A:.::__dt '\n} 1 module } }
+// { dg-final { scan-lang-dump-times {Adding implicit member '::C@A:.::__dt @B:.} 1 module } }
+// { dg-final { scan-lang-dump-times {Read:-[0-9]*'s named merge key \(new\) function_decl:'::C@A:.::__ct '\n} 3 module } }
+// { dg-final { scan-lang-dump-times {Adding implicit member '::C@A:.::__ct @B:.} 3 module } }
+// { dg-final { scan-lang-dump-times {Read:-[0-9]*'s named merge key \(new\) function_decl:'::C@A:.::operator='\n} 2 module } }
+// { dg-final { scan-lang-dump-times {Adding implicit member '::C@A:.::operator=@B:.} 2 module } }
diff --git a/gcc/testsuite/g++.dg/modules/imp-member-3.H b/gcc/testsuite/g++.dg/modules/imp-member-3.H
new file mode 100644
index 0000000..d26b13c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/imp-member-3.H
@@ -0,0 +1,16 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+class bad_optional_access
+{
+public:
+
+ virtual ~bad_optional_access() noexcept = default; // { dg-bogus "" }
+};
+
+inline void
+__throw_bad_optional_access()
+{
+ throw bad_optional_access ();
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/import-1_a.C b/gcc/testsuite/g++.dg/modules/import-1_a.C
new file mode 100644
index 0000000..b42153c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/import-1_a.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts" }
+export module Bar;
+// { dg-module-cmi "Bar" }
+
+export void Quux (int);
diff --git a/gcc/testsuite/g++.dg/modules/import-1_b.C b/gcc/testsuite/g++.dg/modules/import-1_b.C
new file mode 100644
index 0000000..ec15856
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/import-1_b.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts" }
+export module Baz;
+// { dg-module-cmi "Baz" }
+
+export void Quux (int, int);
diff --git a/gcc/testsuite/g++.dg/modules/import-1_c.C b/gcc/testsuite/g++.dg/modules/import-1_c.C
new file mode 100644
index 0000000..b01aa5e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/import-1_c.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+// { dg-final { scan-lang-dump "Writing exported import:.->. Baz" "module" } }
+// { dg-final { scan-lang-dump "Writing exported import:.->. Bar" "module" } }
+
+export module Foo;
+// { dg-module-cmi "Foo" }
+
+export import Bar;
+export import Baz;
+
diff --git a/gcc/testsuite/g++.dg/modules/import-1_d.C b/gcc/testsuite/g++.dg/modules/import-1_d.C
new file mode 100644
index 0000000..45e6340
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/import-1_d.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts" }
+export module Foop;
+// { dg-module-cmi "Foop" }
+
+import Bar;
+
+export int Thing ();
diff --git a/gcc/testsuite/g++.dg/modules/import-1_e.C b/gcc/testsuite/g++.dg/modules/import-1_e.C
new file mode 100644
index 0000000..ae7cce2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/import-1_e.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+
+import Foo;
+
+int main ()
+{
+ Quux (1); // from Bar
+ Quux (1, 2); // from Baz
+ return 0;
+}
+
+// { dg-final { scan-lang-dump "Found exported import:1 Bar->1" "module" } }
+// { dg-final { scan-lang-dump "Found exported import:2 Baz->2" "module" } }
diff --git a/gcc/testsuite/g++.dg/modules/import-1_f.C b/gcc/testsuite/g++.dg/modules/import-1_f.C
new file mode 100644
index 0000000..8dbe9c0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/import-1_f.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts" }
+module Foop;
+
+int Thing ()
+{
+ Quux (1); // from Bar
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/import-1_g.C b/gcc/testsuite/g++.dg/modules/import-1_g.C
new file mode 100644
index 0000000..556ba80
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/import-1_g.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts" }
+import Foop;
+
+int main ()
+{
+ Thing ();
+ Quux (1); // { dg-error "not declared" }
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/import-2.C b/gcc/testsuite/g++.dg/modules/import-2.C
new file mode 100644
index 0000000..86a1494
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/import-2.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts" }
+// Don't segfault on missing module BMI
+
+// { dg-module-cmi "!bob" }
+// { dg-module-cmi "!bill" }
+
+import bill;
+// { dg-regexp "In module imported at \[^\n]*import-2.C:7:.:\nbill: error: failed to read compiled module: \[^\n]*\n" }
+
+// { dg-prune-output "fatal error:" }
+// { dg-prune-output "compilation terminated" }
+
diff --git a/gcc/testsuite/g++.dg/modules/inc-xlate-1.map b/gcc/testsuite/g++.dg/modules/inc-xlate-1.map
new file mode 100644
index 0000000..f2429bf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inc-xlate-1.map
@@ -0,0 +1,2 @@
+<stdarg.h>
+<stdio.h>
diff --git a/gcc/testsuite/g++.dg/modules/inc-xlate-1_a.H b/gcc/testsuite/g++.dg/modules/inc-xlate-1_a.H
new file mode 100644
index 0000000..cd906a5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inc-xlate-1_a.H
@@ -0,0 +1,15 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#ifndef _STDARG_H
+#define _STDARG_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ extern void frob ();
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/inc-xlate-1_b.H b/gcc/testsuite/g++.dg/modules/inc-xlate-1_b.H
new file mode 100644
index 0000000..50b27ef
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inc-xlate-1_b.H
@@ -0,0 +1,21 @@
+// { dg-do preprocess }
+// { dg-additional-options -fmodule-header }
+
+#ifndef _STDIO_H
+#define _STDIO_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ // Yes, inside extern "C" block :(
+ #include "inc-xlate-1_a.H"
+ #ifndef _STDARG_H
+ #error barf
+ #endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+// { dg-final { scan-file inc-xlate-1_b.i {import "[^\n]*inc-xlate-1_a.H" \[\[__translated\]\];\n} } }
diff --git a/gcc/testsuite/g++.dg/modules/inc-xlate-1_c.C b/gcc/testsuite/g++.dg/modules/inc-xlate-1_c.C
new file mode 100644
index 0000000..e1247e6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inc-xlate-1_c.C
@@ -0,0 +1,11 @@
+// { dg-additional-options -fmodules-ts }
+
+extern "C" {
+ #include "inc-xlate-1_a.H"
+}
+
+int main ()
+{
+ frob ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/inc-xlate-1_e.C b/gcc/testsuite/g++.dg/modules/inc-xlate-1_e.C
new file mode 100644
index 0000000..f33c464
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inc-xlate-1_e.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts -fmodule-mapper=|@g++-mapper-server\\ -t\\ [srcdir]/inc-xlate-1.map" }
+export module bad;
+#include "inc-xlate-1_a.H" // { dg-error "not be include-translated" }
+
+// { dg-prune-output "not writing module" }
diff --git a/gcc/testsuite/g++.dg/modules/indirect-1_a.C b/gcc/testsuite/g++.dg/modules/indirect-1_a.C
new file mode 100644
index 0000000..f241717
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/indirect-1_a.C
@@ -0,0 +1,41 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+
+// indirect references to import. Non-template cases
+
+export module foo;
+// { dg-module-cmi foo }
+
+namespace foo {
+
+ export int frob (int i)
+ {
+ return i;
+ }
+
+
+ export class X
+ {
+ int i;
+
+ public:
+ X (int i) :i(i) { }
+ operator int () const { return i; }
+ };
+
+ export class Y : public virtual X
+ {
+ int j;
+ public:
+ Y (int i, int j) : X(i), j(j){}
+ virtual int frob () const;
+ };
+
+ int Y::frob () const
+ {
+ return *this + j;
+ }
+
+ export enum Plain {A, B, C, D};
+ export enum class Scoped {A, B, C, D};
+}
diff --git a/gcc/testsuite/g++.dg/modules/indirect-1_b.C b/gcc/testsuite/g++.dg/modules/indirect-1_b.C
new file mode 100644
index 0000000..c450fa9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/indirect-1_b.C
@@ -0,0 +1,54 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-uid" }
+
+export module bar;
+// { dg-module-cmi bar }
+
+import foo;
+
+namespace bar
+{
+ export int frob (int i = foo::frob (0))
+ {
+ return i;
+ }
+
+ export int quux (int i = foo::X (0) )
+ {
+ return i;
+ }
+
+ export class Z : public foo::Y
+ {
+ public:
+ Z (int i, int j) : X(i), Y(i, j)
+ {
+ }
+ };
+
+ export constexpr auto Plain_One (bool b) { return b ? foo::B : foo::C; }
+ export constexpr auto Scoped_One (bool b) { return b ? foo::Scoped::B
+ : foo::Scoped::C; }
+
+ export extern auto const Plain_Const_Three = foo::D;
+ export extern auto const Scoped_Const_Three = foo::Scoped::D;
+}
+
+// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::frob'@'foo' section:} module } }
+// { dg-final { scan-lang-dump-not {namespace:-[0-9]* namespace_decl:'::foo'} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* function_decl:'::foo@foo:.::frob@foo:.'@foo} module } }
+
+// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::X'@'foo' section:} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* type_decl:'::foo@foo:.::X@foo:.'@foo} module } }
+
+// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::Y'@'foo' section:} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* type_decl:'::foo@foo:.::Y@foo:.'@foo} module } }
+
+// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::B'@'foo' section:} module } }
+// { dg-final { scan-lang-dump-not {Lazily binding '::foo@foo:.::C@foo:.'@'foo' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::Scoped'@'foo' section:} module } }
+// { dg-final { scan-lang-dump-not {Lazily binding '::foo@foo:.::Scoped@foo:.::[ABCD]'@'foo' section:} module } }
+
+// { dg_final { scan-lang-dump {Wrote named import:-[0-9]* const_decl:'::foo::Plain@\(foo\)::C'@foo} module } }
+// { dg_final { scan-lang-dump {Wrote named import:-[0-9]* const_decl:'::foo::Plain@\(foo\)::B'@foo} module } }
+// { dg_final { scan-lang-dump {Wrote named import:-[0-9]* const_decl:'::foo::Scoped@\(foo\)::C'@foo} module } }
+// { dg_final { scan-lang-dump {Wrote named import:-[0-9]* const_decl:'::foo::Scoped@\(foo\)::B'@foo} module } }
diff --git a/gcc/testsuite/g++.dg/modules/indirect-1_c.C b/gcc/testsuite/g++.dg/modules/indirect-1_c.C
new file mode 100644
index 0000000..73d5974
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/indirect-1_c.C
@@ -0,0 +1,49 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-uid" }
+import bar;
+
+
+int main ()
+{
+ if (bar::frob ())
+ return 1;
+ if (bar::quux ())
+ return 2;
+
+ if (bar::Z (1, 2).frob () != 3)
+ return 3;
+
+ static_assert (bar::Plain_One (true) == 1);
+ static_assert (bar::Plain_One (false) == 2);
+ static_assert (int (bar::Scoped_One (true)) == 1);
+ static_assert (int (bar::Scoped_One (false)) == 2);
+
+ static_assert (bar::Plain_Const_Three == 3);
+ static_assert (int (bar::Scoped_Const_Three) == 3);
+
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::frob'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {>Loading entity foo\[14\] section:4} module } }
+// { dg-final { scan-lang-dump {Named:-[0-9]* namespace_decl:'::foo@foo:1'@foo} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* function_decl:'::foo@foo:.::frob@foo:.'@foo} module } }
+
+// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::quux'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {>Loading entity foo\[1\] section:1} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* type_decl:'::foo@foo:.::X@foo:.'@foo} module } }
+
+// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::Z'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {>Loading entity foo\[8\] section:2} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* type_decl:'::foo@foo:.::Y@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Read member:-[0-9]* field_decl:'::foo@foo:.::Y@foo:.::_vptr.Y'} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* function_decl:'::foo@foo:.::Y@foo:.::frob@foo:.'@foo} module } }
+
+// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::Plain_One'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {>Loading entity foo\[13\] section:3} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::Scoped_One'@'bar' section} module } }
+// { dg-final { scan-lang-dump {>Loading entity foo\[15\] section:5} module } }
+// { dg-final { scan-lang-dump-not {Lazily binding '::foo@foo:.::[ABC]'@'foo' section:} module } }
+// { dg-final { scan-lang-dump-not {Lazily binding '::foo@foo:.::Scoped@\(foo\)::[ABC]'@'foo' section:} module } }
+
+// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::Plain_Const_Three'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::Scoped_Const_Three'@'bar' section} module } }
diff --git a/gcc/testsuite/g++.dg/modules/indirect-2_a.C b/gcc/testsuite/g++.dg/modules/indirect-2_a.C
new file mode 100644
index 0000000..20febb9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/indirect-2_a.C
@@ -0,0 +1,24 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+
+// indirect references to import, simple templates
+
+export module foo;
+// { dg-module-cmi foo }
+
+namespace foo
+{
+ export template<int I> int frob ()
+ {
+ return I;
+ }
+
+ export template<int I> class X
+ {
+ int i = I;
+
+ public:
+ operator int () const { return i; }
+ };
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/indirect-2_b.C b/gcc/testsuite/g++.dg/modules/indirect-2_b.C
new file mode 100644
index 0000000..16e060a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/indirect-2_b.C
@@ -0,0 +1,31 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks-alias-uid" }
+export module bar;
+// { dg-module-cmi bar }
+
+import foo;
+
+namespace bar
+{
+ export int frob (int i = foo::frob<0> ())
+ {
+ return i;
+ }
+
+ export int quux (int i = foo::X<0> ())
+ {
+ return i;
+ }
+}
+
+// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::frob'@'foo' section} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo@foo:.::template frob@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s decl spec merge key \(specialization\) function_decl:'::foo@foo:.::frob<0x0>'} module } }
+
+// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::X'@'foo' section:} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo@foo:.::template X@foo:.'@foo} module } }
+
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::foo@foo:.::X<0x0>'\n \[1\]=specialization declaration '::foo@foo:.::X<0x0>::__conv_op <0x0>'\n \[2\]=specialization declaration '::foo@foo:.::X<0x0>::X<0x0>'\n( \[.\]=[^\n]* '\n)*} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s type spec merge key \(specialization\) type_decl:'::foo@foo:.::X<0x0>'} module } }
+// { dg-final { scan-lang-dump {Depset:. specialization entity:. type_decl:'::foo@foo:.::X<0x0>'} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s type spec merge key \(specialization\) type_decl:'::foo@foo:.::X<0x0>'} module } }
+// { dg-final { scan-lang-dump {Wrote purview:-[0-9]* type_decl:'::foo@foo:.::X<0x0>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/indirect-2_c.C b/gcc/testsuite/g++.dg/modules/indirect-2_c.C
new file mode 100644
index 0000000..a5cf44b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/indirect-2_c.C
@@ -0,0 +1,25 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-uid" }
+import bar;
+
+int main ()
+{
+
+ if (bar::frob ())
+ return 1;
+
+ if (bar::quux ())
+ return 2;
+
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::frob'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {>Loading entity foo\[4\] section:2} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* template_decl:'::foo@foo:.::template frob@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump-not {Wrote mergeable} module } }
+
+
+// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::quux'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {>Loading entity foo\[1\] section:1} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* template_decl:'::foo@foo:.::template X@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Read:-[0-9]* function_decl:'::foo@foo:.::frob<0x0>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/indirect-3_a.C b/gcc/testsuite/g++.dg/modules/indirect-3_a.C
new file mode 100644
index 0000000..fad9ecf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/indirect-3_a.C
@@ -0,0 +1,23 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+
+// indirect references to import, template member non-template or
+// non-template member of template cases
+
+export module foo;
+// { dg-module-cmi foo }
+
+namespace foo
+{
+ export class X
+ {
+ public:
+ template <int I> int frob () const { return I; }
+ };
+
+ export template<int I> class TPL
+ {
+ public:
+ int frob () const { return I; }
+ };
+}
diff --git a/gcc/testsuite/g++.dg/modules/indirect-3_b.C b/gcc/testsuite/g++.dg/modules/indirect-3_b.C
new file mode 100644
index 0000000..5bdfc1d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/indirect-3_b.C
@@ -0,0 +1,30 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks-uid-alias" }
+export module bar;
+// { dg-module-cmi bar }
+
+import foo;
+
+namespace bar
+{
+ export int quux (int i = foo::X().frob<0> ())
+ {
+ return i;
+ }
+
+ export int toto (int i = foo::TPL<0>().frob ())
+ {
+ return i;
+ }
+}
+
+// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::X'@'foo' section} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo@foo:.::X@foo:.::template frob@foo:.'@foo} module } }
+
+// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::TPL'@'foo' section} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo@foo:.::template TPL@foo:.'@foo} module } }
+
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::foo@foo:.::TPL<0x0>'\n \[1\]=specialization declaration '::foo@foo:.::TPL<0x0>::TPL<0x0>'\n( \[.\]=[^\n]* '\n)* \[.\]=decl definition '::foo@foo:.::TPL<0x0>::frob<0x0>'\n} module } }
+
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::foo@foo:.::X@foo:.::frob<0x0>'} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s type spec merge key \(specialization\) type_decl:'::foo@foo:.::TPL<0x0>'} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s decl spec merge key \(specialization\) function_decl:'::foo@foo:.::X@foo:.::frob<0x0>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/indirect-3_c.C b/gcc/testsuite/g++.dg/modules/indirect-3_c.C
new file mode 100644
index 0000000..9c5cb23
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/indirect-3_c.C
@@ -0,0 +1,24 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-uid" }
+import bar;
+
+int main ()
+{
+
+ if (bar::quux ())
+ return 1;
+
+ if (bar::toto ())
+ return 2;
+
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::quux'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {>Loading entity foo\[5\] section:2} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* template_decl:'::foo@foo:.::X@foo:.::template frob@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump-not {Instantiation:-[0-9]* function_decl:'::foo::X@foo:.::frob@.()<0x0>'} module } }
+
+// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::toto'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {>Loading entity foo\[1\] section:1} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* template_decl:'::foo@foo:.::template TPL@foo:.'@foo} module } }
+// { dg-final { scan-lang-dump {Reading definition type_decl '::foo@foo:.::TPL@bar:.<0x0>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/indirect-4_a.C b/gcc/testsuite/g++.dg/modules/indirect-4_a.C
new file mode 100644
index 0000000..44f4b66
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/indirect-4_a.C
@@ -0,0 +1,20 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+
+// indirect references to import, template member of template case
+
+export module foo;
+// { dg-module-cmi foo }
+
+namespace foo
+{
+ export template<int I> class TPL
+ {
+ public:
+ template <int J> int frob () const
+ {
+ return I + J;
+ }
+ };
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/indirect-4_b.C b/gcc/testsuite/g++.dg/modules/indirect-4_b.C
new file mode 100644
index 0000000..8c51ce8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/indirect-4_b.C
@@ -0,0 +1,22 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks-alias-uid" }
+export module bar;
+// { dg-module-cmi bar }
+
+import foo;
+
+namespace bar
+{
+ export int quux (int i = foo::TPL<1> ().frob<2> ())
+ {
+ return i;
+ }
+}
+
+// { dg-final { scan-lang-dump {Lazily binding '::foo@foo:.::TPL'@'foo' section:} module } }
+// { dg-final { scan-lang-dump {Wrote import:-[0-9]* template_decl:'::foo@foo:.::template TPL@foo:.'@foo} module } }
+
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::foo@foo:.::TPL<0x1>'\n \[1\]=specialization declaration '::foo@foo:.::TPL<0x1>::template frob<#unnamed#>'\n \[2\]=specialization declaration '::foo@foo:.::TPL<0x1>::TPL<0x1>'\n( \[.\]=[^\n]* '\n)*} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::foo@foo:.::TPL<0x1>::frob<0x2>'} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s type spec merge key \(specialization\) type_decl:'::foo@foo:.::TPL<0x1>'} module } }
+// { dg-final { scan-lang-dump {Wrote purview:-[0-9]* type_decl:'::foo@foo:.::TPL<0x1>'} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s decl spec merge key \(specialization\) function_decl:'::foo@foo:.::TPL<0x1>::frob<0x2>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/indirect-4_c.C b/gcc/testsuite/g++.dg/modules/indirect-4_c.C
new file mode 100644
index 0000000..7efcc11
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/indirect-4_c.C
@@ -0,0 +1,17 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-uid-alias" }
+import bar;
+
+int main ()
+{
+ if (bar::quux () != 3)
+ return 1;
+
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Lazily binding '::bar@bar:.::quux'@'bar' section:} module } }
+// { dg-final { scan-lang-dump {>Loading entity foo\[2\] section:1} module } }
+// { dg-final { scan-lang-dump {Imported:-[0-9]* template_decl:'::foo@foo:.::template TPL@foo:.'@foo} module } }
+
+// { dg-final { scan-lang-dump {Reading definition function_decl '::foo@foo:.::TPL@bar:.<0x1>::frob@bar:.<0x2>'} module } }
+// { dg-final { scan-lang-dump {Reading definition type_decl '::foo@foo:.::TPL@bar:.<0x1>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/inext-1.H b/gcc/testsuite/g++.dg/modules/inext-1.H
new file mode 100644
index 0000000..7708c39
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inext-1.H
@@ -0,0 +1,11 @@
+// { dg-additional-options "-fmodule-header -isystem [srcdir] -isystem [srcdir]/sys -fdump-lang-module" }
+
+#ifndef _PROTECT
+#define _PROTECT
+
+/* We were found on the system inc path, so have been turned into a
+ system header, so no warning on the following extension. */
+#include_next <inext-1.H>
+
+#endif
+
diff --git a/gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1.h b/gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1.h
new file mode 100644
index 0000000..13f769f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1.h
@@ -0,0 +1,35 @@
+
+template <typename _Tp>
+struct Base
+{
+ // template constructor
+ template<typename _Del> Base(_Tp *__p, _Del __d);
+};
+
+template <typename _Tp, typename _Dp>
+struct Derived : Base<_Tp>
+{
+ // Inheriting the template constructor
+ using Base<_Tp>::Base;
+};
+
+template <typename _Tp>
+class unique_ptr
+{
+ Derived<_Tp, int> _M_t;
+
+public:
+ // Instantiates Derived<ResultDerived,int>::Derived
+ template<typename _Up> unique_ptr(unique_ptr<_Up>&& __u) noexcept
+ : _M_t ((_Tp *)0, 1) { }
+};
+
+struct ResultBase { };
+struct ResultDerived : ResultBase { };
+
+void Frob (unique_ptr<ResultBase> &&__res) ;
+
+inline void X (unique_ptr<ResultDerived> &parm)
+{
+ Frob (static_cast <unique_ptr<ResultDerived> &&> (parm));
+}
diff --git a/gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1_a.H b/gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1_a.H
new file mode 100644
index 0000000..8222212
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "inh-tmpl-ctor-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1_b.C b/gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1_b.C
new file mode 100644
index 0000000..ae1612c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1_b.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include "inh-tmpl-ctor-1.h"
+import "inh-tmpl-ctor-1_a.H";
+
diff --git a/gcc/testsuite/g++.dg/modules/init-1_a.C b/gcc/testsuite/g++.dg/modules/init-1_a.C
new file mode 100644
index 0000000..b5727d7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/init-1_a.C
@@ -0,0 +1,11 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts -fno-inline" }
+export module Foo;
+// { dg-module-cmi Foo }
+
+int Frob (int i)
+{
+ return i;
+}
+
+export int j = Frob (5);
diff --git a/gcc/testsuite/g++.dg/modules/init-1_b.C b/gcc/testsuite/g++.dg/modules/init-1_b.C
new file mode 100644
index 0000000..3d2239f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/init-1_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts -fno-inline" }
+import Foo;
+
+int frob (int j)
+{
+ return j + 1;
+}
+
+int q = frob (j);
+
+int main ()
+{
+ return !(q == 6);
+}
diff --git a/gcc/testsuite/g++.dg/modules/init-2_a.C b/gcc/testsuite/g++.dg/modules/init-2_a.C
new file mode 100644
index 0000000..1e9093ef
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/init-2_a.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts -fno-inline" }
+export module Foo;
+// { dg-module-cmi Foo }
+
+// { dg-final { scan-assembler {_ZGIW3FooEv:} } }
diff --git a/gcc/testsuite/g++.dg/modules/init-2_b.C b/gcc/testsuite/g++.dg/modules/init-2_b.C
new file mode 100644
index 0000000..b9692ca
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/init-2_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts -fno-inline" }
+export module Bar;
+// { dg-module-cmi Bar }
+
+import Foo;
+
+// { dg-final { scan-assembler {_?_ZGIW3BarEv:} } }
+// { dg-final { scan-assembler {call[ \t]+_?_ZGIW3FooEv} { target i?86-*-* x86_64-*-* } } }
diff --git a/gcc/testsuite/g++.dg/modules/init-2_c.C b/gcc/testsuite/g++.dg/modules/init-2_c.C
new file mode 100644
index 0000000..c1fa5d8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/init-2_c.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts -fno-inline" }
+
+import Foo;
+import Bar;
+
+// We know Bar imports Foo, so only call Bar's Global Init
+// { dg-final { scan-assembler {call[ \t]+_?_ZGIW3BarEv} { target i?86-*-* x86_64-*-* } } }
+// { dg-final { scan-assembler-not {call[ \t]+_?_ZGIW3FooEv} { target i?86-*-* x86_64-*-* } } }
diff --git a/gcc/testsuite/g++.dg/modules/inst-1_a.C b/gcc/testsuite/g++.dg/modules/inst-1_a.C
new file mode 100644
index 0000000..e1d438b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inst-1_a.C
@@ -0,0 +1,42 @@
+// { dg-module-do run }
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-graph-blocks} }
+
+export module foo;
+// { dg-module-cmi foo }
+
+int i_baz (int i)
+{
+ return i;
+}
+
+inline int baz (int i)
+{
+ return i_baz (i);
+}
+
+int f_baz (float f)
+{
+ return int (f);
+}
+
+inline int baz (float f)
+{
+ return f_baz (f);
+}
+
+export template <typename T>
+int foo (T t)
+{
+ return baz (t);
+}
+
+export inline void user ()
+{
+ foo (1);
+ foo (1.0f);
+}
+
+// { dg-final { scan-lang-dump {Depending definition function_decl:'::foo<float>'} module } }
+// { dg-final { scan-lang-dump {Depending definition function_decl:'::foo<int>'} module } }
+// { dg-final { scan-lang-dump {\[0\]=specialization definition '::foo<float>'} module } }
+// { dg-final { scan-lang-dump {\[0\]=specialization definition '::foo<int>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/inst-1_b.C b/gcc/testsuite/g++.dg/modules/inst-1_b.C
new file mode 100644
index 0000000..08a92ae
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inst-1_b.C
@@ -0,0 +1,16 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-uid-alias} }
+import foo;
+
+int main ()
+{
+ user ();
+ foo ('a'); // new inst
+ foo (1); // find foo's inst
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Reading definition function_decl '::foo@foo:.<int>'} module } }
+// { dg-final { scan-lang-dump {Reading definition function_decl '::foo@foo:.<float>'} module } }
+
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(unique\) function_decl:'::baz'} module } }
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(unique\) function_decl:'::baz'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/inst-2_a.C b/gcc/testsuite/g++.dg/modules/inst-2_a.C
new file mode 100644
index 0000000..40d6229
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inst-2_a.C
@@ -0,0 +1,26 @@
+// { dg-module-do run }
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-blocks-uid-alias} }
+
+export module foo;
+// { dg-module-cmi foo }
+
+inline int baz (int i)
+{
+ return i;
+}
+
+export template <typename T>
+inline int foo (T t)
+{
+ return baz (t);
+}
+
+export inline void user ()
+{
+ foo (1);
+}
+
+// { dg-final { scan-lang-dump {\[0\]=specialization definition '::foo<int>'} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s named merge key \(decl\) function_decl:'::baz'} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s decl spec merge key \(specialization\) function_decl:'::foo<int>'} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s decl spec merge key \(specialization\) function_decl:'::foo<int>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/inst-2_b.C b/gcc/testsuite/g++.dg/modules/inst-2_b.C
new file mode 100644
index 0000000..3e918bc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inst-2_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-uid-alias} }
+import foo;
+
+int main ()
+{
+ foo (1); // read pending inst
+ user (); //
+ foo (1); // reuse inst
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Reading 1 pending specializations} module } }
+
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s decl spec merge key \(new\) function_decl:'::foo'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/inst-3_a.C b/gcc/testsuite/g++.dg/modules/inst-3_a.C
new file mode 100644
index 0000000..3305805
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inst-3_a.C
@@ -0,0 +1,21 @@
+// { dg-module-do run }
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-graph-blocks-alias} }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export template<typename T> struct TPL
+{
+ T m;
+};
+
+export inline int user (int i)
+{
+ TPL<int> x;
+ x.m = i;
+ return x.m;
+}
+
+// { dg-final { scan-lang-dump {Cluster members:\n( \[.\]=[^\n]*'\n)* \[.\]=specialization definition '::TPL<int>'\n \[.\]=specialization declaration '::TPL<int>::TPL<int>'\n} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s type spec merge key \(specialization\) type_decl:'::TPL<int>'} module } }
+// { dg-final { scan-lang-dump {Depset:. specialization entity:. type_decl:'::TPL<int>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/inst-3_b.C b/gcc/testsuite/g++.dg/modules/inst-3_b.C
new file mode 100644
index 0000000..80a9946
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inst-3_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-alias-uid} }
+import foo;
+
+int main ()
+{
+ if (user (1) != 1)
+ return 1;
+ TPL<int> x;
+ TPL<float> y;
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s type spec merge key \(new\) type_decl:'::TPL'} module } }
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s decl spec merge key \(new\) type_decl:'::template TPL@foo:.<T>::TPL'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/inst-4_a.C b/gcc/testsuite/g++.dg/modules/inst-4_a.C
new file mode 100644
index 0000000..e7435ec
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inst-4_a.C
@@ -0,0 +1,20 @@
+// { dg-module-do run }
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-graph-blocks-alias} }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export template<typename T> struct TPL
+{
+ T m;
+};
+
+export inline int user (int i)
+{
+ TPL<int> x;
+ x.m = i;
+ return x.m;
+}
+
+// { dg-final { scan-lang-dump {Specialization '::TPL<int>' entity:. keyed to foo\[.\] '::template TPL'} module } }
+// { dg-final { scan-lang-dump {Specialization '::TPL<int>::TPL<int>' entity:. keyed to foo\[.\] '::template TPL<T>::template TPL'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/inst-4_b.C b/gcc/testsuite/g++.dg/modules/inst-4_b.C
new file mode 100644
index 0000000..c83e1c1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inst-4_b.C
@@ -0,0 +1,13 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-alias-uid} }
+import foo;
+
+int main ()
+{
+ TPL<int> x;
+ if (user (1) != 1)
+ return 1;
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Reading 1 pending specializations keyed to foo\[.\] '::template TPL@foo:.'} module } }
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s type spec merge key \(new\) type_decl:'::TPL'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/inst-5_a.H b/gcc/testsuite/g++.dg/modules/inst-5_a.H
new file mode 100644
index 0000000..46d9432
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inst-5_a.H
@@ -0,0 +1,12 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+template <int I> int fn ()
+{
+ return I;
+}
+
+inline void g ()
+{
+ fn<1> (); // instantiation gets emitted
+}
diff --git a/gcc/testsuite/g++.dg/modules/inst-5_b.C b/gcc/testsuite/g++.dg/modules/inst-5_b.C
new file mode 100644
index 0000000..7cc94c8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/inst-5_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+template <int I> int fn ()
+{
+ return I;
+}
+
+void f ()
+{
+ fn<1> ();
+}
+
+import "inst-5_a.H";
+// no longer need to instantate
diff --git a/gcc/testsuite/g++.dg/modules/internal-1.C b/gcc/testsuite/g++.dg/modules/internal-1.C
new file mode 100644
index 0000000..45d3bf0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/internal-1.C
@@ -0,0 +1,21 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module frob; // { dg-error "failed to write" }
+// { dg-module-cmi !frob }
+
+namespace {
+// We shouldn't be complaining about members of internal linkage
+// entities
+class X // { dg-bogus "internal linkage" "" { xfail *-*-* } }
+{ // { dg-bogus "internal linkage" "" { xfail *-*-* } }
+};
+
+}
+
+static int frob ()
+{
+ return 1;
+}
+
+export int f (int = frob ()); // { dg-error "references internal linkage" }
+int goof (X &); // { dg-error "references internal linkage" }
diff --git a/gcc/testsuite/g++.dg/modules/internal-2_a.H b/gcc/testsuite/g++.dg/modules/internal-2_a.H
new file mode 100644
index 0000000..4b530bd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/internal-2_a.H
@@ -0,0 +1,10 @@
+// { dg-module-do run }
+// { dg-additional-options {-fmodule-header -fdump-lang-module-blocks} }
+// { dg-module-cmi {} }
+
+static int bob (int x)
+{
+ return x;
+}
+
+// { dg-final { scan-lang-dump { Cluster members:\n \[0\]=decl definition '::bob'\n \[1\]=binding '::bob'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/internal-2_b.H b/gcc/testsuite/g++.dg/modules/internal-2_b.H
new file mode 100644
index 0000000..cdcbe77
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/internal-2_b.H
@@ -0,0 +1,7 @@
+// { dg-additional-options {-fmodule-header} }
+// { dg-module-cmi {} }
+
+static int bob (int x)
+{
+ return x;
+}
diff --git a/gcc/testsuite/g++.dg/modules/internal-2_c.C b/gcc/testsuite/g++.dg/modules/internal-2_c.C
new file mode 100644
index 0000000..c0bc46d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/internal-2_c.C
@@ -0,0 +1,12 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-alias} }
+
+import "internal-2_a.H";
+import "internal-2_b.H";
+
+int main ()
+{
+ bob (2);
+}
+
+// { dg-final { scan-lang-dump { Read:-1's named merge key \(new\) function_decl:'::bob'} module } }
+// { dg-final { scan-lang-dump { Read:-1's named merge key \(matched\) function_decl:'::bob'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/iostream-1_a.H b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
new file mode 100644
index 0000000..00f8c19
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
@@ -0,0 +1,10 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+#ifndef MY_IOSTREAM_H
+#define MY_IOSTREAM_H
+/* Proxy iostream, because command line in flux. */
+#include <iostream>
+
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/iostream-1_b.C b/gcc/testsuite/g++.dg/modules/iostream-1_b.C
new file mode 100644
index 0000000..8058a7f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/iostream-1_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+
+import "iostream-1_a.H";
+
+int main ()
+{
+ std::cout << "hello world!\n";
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/isalnum.H b/gcc/testsuite/g++.dg/modules/isalnum.H
new file mode 100644
index 0000000..2fac358
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/isalnum.H
@@ -0,0 +1,12 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+extern "C"
+{
+ extern int isalnum (int) __attribute__ ((__nothrow__, __leaf__));
+}
+
+namespace std
+{
+using ::isalnum;
+}
diff --git a/gcc/testsuite/g++.dg/modules/keyword-1_a.C b/gcc/testsuite/g++.dg/modules/keyword-1_a.C
new file mode 100644
index 0000000..190f573
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/keyword-1_a.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module bob;
+// { dg-module-cmi bob }
+
+export struct import {};
+export ::import *a;
+export ::import (b);
diff --git a/gcc/testsuite/g++.dg/modules/keyword-1_b.C b/gcc/testsuite/g++.dg/modules/keyword-1_b.C
new file mode 100644
index 0000000..24a5b5b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/keyword-1_b.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import bob;
+
+::import (d); // not import
+import (e); // not import
+
+void foo ()
+{
+ void *c = a;
+ void *e = &b;
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/lambda-1_a.C b/gcc/testsuite/g++.dg/modules/lambda-1_a.C
new file mode 100644
index 0000000..1b97187
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lambda-1_a.C
@@ -0,0 +1,15 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+export module tom.riddle;
+// { dg-module-cmi tom.riddle }
+
+export inline auto One (int a)
+{
+ return [=] (int b) { return a + b; };
+}
+
+// Look Ma! this isn't inline!
+export auto Two (int a)
+{
+ return [=] (int b) { return a * b; };
+}
diff --git a/gcc/testsuite/g++.dg/modules/lambda-1_b.C b/gcc/testsuite/g++.dg/modules/lambda-1_b.C
new file mode 100644
index 0000000..af21349
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lambda-1_b.C
@@ -0,0 +1,16 @@
+// { dg-additional-options "-fmodules-ts" }
+import tom.riddle;
+
+int main ()
+{
+ auto one = One (2);
+
+ if (one (1) != 3)
+ return 1;
+
+ auto two = Two (3);
+ if (two (2) != 6)
+ return 2;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/lambda-2.h b/gcc/testsuite/g++.dg/modules/lambda-2.h
new file mode 100644
index 0000000..3433686
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lambda-2.h
@@ -0,0 +1,2 @@
+// The lambda is attached to 'all', and should be merged keyed by that.
+inline constexpr auto all = [] () {};
diff --git a/gcc/testsuite/g++.dg/modules/lambda-2_a.H b/gcc/testsuite/g++.dg/modules/lambda-2_a.H
new file mode 100644
index 0000000..7940120
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lambda-2_a.H
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodule-header -fdump-lang-module-alias" }
+// { dg-module-cmi {} }
+
+#include "lambda-2.h"
+
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s attached merge key \(decl\) type_decl:'::._anon_0'} module } }
+// { dg-final { scan-lang-dump {Written -[0-9]*\[0\] attached decl '::._anon_0'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/lambda-2_b.C b/gcc/testsuite/g++.dg/modules/lambda-2_b.C
new file mode 100644
index 0000000..56ec9e3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lambda-2_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+// Not an ODR violation!
+#include "lambda-2.h"
+import "lambda-2_a.H";
+
+// { dg-bogus "conflicting" "not an odr violation" }
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s attached merge key \(matched\) type_decl:'#null#'} module } }
+// { dg-final { scan-lang-dump {Read -[0-9]*\[0\] matched attached decl '::._anon_0'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/lambda-2_c.C b/gcc/testsuite/g++.dg/modules/lambda-2_c.C
new file mode 100644
index 0000000..c626b9d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lambda-2_c.C
@@ -0,0 +1,3 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+import "lambda-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/lambda-3.h b/gcc/testsuite/g++.dg/modules/lambda-3.h
new file mode 100644
index 0000000..8f60a82
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lambda-3.h
@@ -0,0 +1,5 @@
+
+template<int I> inline constexpr auto tmpl = [] {return I;};
+
+inline const auto tpl_1 = tmpl<1>;
+inline const auto tpl_2 = tmpl<2>;
diff --git a/gcc/testsuite/g++.dg/modules/lambda-3_a.H b/gcc/testsuite/g++.dg/modules/lambda-3_a.H
new file mode 100644
index 0000000..171a263
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lambda-3_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodule-header -fdump-lang-module-alias" }
+// { dg-module-cmi {} }
+
+#include "lambda-3.h"
diff --git a/gcc/testsuite/g++.dg/modules/lambda-3_b.C b/gcc/testsuite/g++.dg/modules/lambda-3_b.C
new file mode 100644
index 0000000..25a418b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lambda-3_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "lambda-3.h"
+import "lambda-3_a.H";
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
+// { dg-final { scan-lang-dump {Read -1\[0\] matched attached decl '::template ._anon_0<#unnamed#>'} module } }
+// { dg-final { scan-lang-dump {Read -1\[0\] matched attached decl '::._anon_2'} module } }
+// { dg-final { scan-lang-dump {Read -1\[0\] matched attached decl '::._anon_1'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/lambda-3_c.C b/gcc/testsuite/g++.dg/modules/lambda-3_c.C
new file mode 100644
index 0000000..69efa50
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lambda-3_c.C
@@ -0,0 +1,3 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+import "lambda-3_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/lambda-4.h b/gcc/testsuite/g++.dg/modules/lambda-4.h
new file mode 100644
index 0000000..fe9a06b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lambda-4.h
@@ -0,0 +1,2 @@
+
+inline void (*all) (int) = [] (auto) {};
diff --git a/gcc/testsuite/g++.dg/modules/lambda-4_a.H b/gcc/testsuite/g++.dg/modules/lambda-4_a.H
new file mode 100644
index 0000000..738ea8b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lambda-4_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodule-header -fdump-lang-module-alias" }
+// { dg-module-cmi {} }
+
+#include "lambda-4.h"
diff --git a/gcc/testsuite/g++.dg/modules/lambda-4_b.C b/gcc/testsuite/g++.dg/modules/lambda-4_b.C
new file mode 100644
index 0000000..772045d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lambda-4_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "lambda-4.h"
+import "lambda-4_a.H";
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
+// { dg-final { scan-lang-dump {named merge key \(matched\) template_decl:'::._anon_0::template _FUN'} module } }
+// { dg-final { scan-lang-dump {named merge key \(matched\) template_decl:'::._anon_0::template __conv_op '} module } }
diff --git a/gcc/testsuite/g++.dg/modules/lang-1_a.H b/gcc/testsuite/g++.dg/modules/lang-1_a.H
new file mode 100644
index 0000000..8131d3f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lang-1_a.H
@@ -0,0 +1,15 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+extern "C"
+{
+ int cfunc ();
+}
+
+extern "C++"
+{
+ int cxxfunc ();
+}
+
+
+
diff --git a/gcc/testsuite/g++.dg/modules/lang-1_b.C b/gcc/testsuite/g++.dg/modules/lang-1_b.C
new file mode 100644
index 0000000..0db144c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lang-1_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+
+extern "C"
+{
+ import "lang-1_a.H";
+}
+
+extern "C" int cfunc (int); // { dg-error "conflicting declaration" }
+extern "C" int cxxfunc (int);
diff --git a/gcc/testsuite/g++.dg/modules/lang-1_c.C b/gcc/testsuite/g++.dg/modules/lang-1_c.C
new file mode 100644
index 0000000..e3b939d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lang-1_c.C
@@ -0,0 +1,12 @@
+// { dg-additional-options -fmodules-ts }
+
+extern "C++"
+{
+ import "lang-1_a.H";
+}
+
+extern "C"
+import "lang-1_a.H"; // { dg-error "cannot appear directly" }
+
+extern "C" int cfunc (int); // { dg-error "conflicting declaration" }
+extern "C" int cxxfunc (int);
diff --git a/gcc/testsuite/g++.dg/modules/lang-2_a.C b/gcc/testsuite/g++.dg/modules/lang-2_a.C
new file mode 100644
index 0000000..a3bbe72
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lang-2_a.C
@@ -0,0 +1,3 @@
+// { dg-additional-options -fmodules-ts }
+export module foo;
+// { dg-module-cmi foo }
diff --git a/gcc/testsuite/g++.dg/modules/lang-2_b.C b/gcc/testsuite/g++.dg/modules/lang-2_b.C
new file mode 100644
index 0000000..0a7a0d2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lang-2_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options -fmodules-ts }
+
+extern "C"
+{
+ import foo; // { dg-warning "inside language-linkage" }
+}
+extern "C++"
+{
+ import foo; // { dg-warning "inside language-linkage" }
+}
diff --git a/gcc/testsuite/g++.dg/modules/late-ret-1.H b/gcc/testsuite/g++.dg/modules/late-ret-1.H
new file mode 100644
index 0000000..fb73e51
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/late-ret-1.H
@@ -0,0 +1,16 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+template<typename _Iterator>
+struct reverse_iterator
+{
+ _Iterator base() const;
+};
+
+template<typename _Iterator>
+reverse_iterator<_Iterator> __make_reverse_iterator (_Iterator __i);
+
+template<typename _Iterator>
+auto __niter_base(reverse_iterator<_Iterator> __it)
+ -> decltype (__make_reverse_iterator(__niter_base(__it.base())))
+{ return __make_reverse_iterator(__niter_base(__it.base())); }
diff --git a/gcc/testsuite/g++.dg/modules/late-ret-2_a.H b/gcc/testsuite/g++.dg/modules/late-ret-2_a.H
new file mode 100644
index 0000000..0ff435f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/late-ret-2_a.H
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodule-header -fdump-lang-module-blocks" }
+// { dg-module-cmi {} }
+
+template<typename T> struct TPL {operator T () const {return 0;}};
+
+template<typename T>
+auto Foo (T *arg)
+ -> TPL<decltype (+*arg)> {return TPL<int> ();}
+
+template<typename T>
+auto Bar (T *arg)
+ -> TPL<decltype (arg)> ;
+
+// { dg-final { scan-lang-dump { Cluster members:\n \[0\]=decl definition '::template Foo'\n \[1\]=specialization declaration '::TPL<#null#>'\n \[2\]=binding '::Foo'\n} module } }
diff --git a/gcc/testsuite/g++.dg/modules/late-ret-2_b.H b/gcc/testsuite/g++.dg/modules/late-ret-2_b.H
new file mode 100644
index 0000000..80b83f4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/late-ret-2_b.H
@@ -0,0 +1,13 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+template<typename T> struct TPL {operator T () const {return 0;}};
+
+template<typename T>
+auto Foo (T *arg)
+ -> TPL<decltype (+*arg)> {return TPL<int> ();}
+
+// Deliberately different to 2_a's Bar
+template<typename T>
+auto Bar (T *arg)
+ -> TPL<decltype (*arg)> ;
diff --git a/gcc/testsuite/g++.dg/modules/late-ret-2_c.C b/gcc/testsuite/g++.dg/modules/late-ret-2_c.C
new file mode 100644
index 0000000..c5898fb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/late-ret-2_c.C
@@ -0,0 +1,16 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-alias" }
+
+import "late-ret-2_a.H";
+import "late-ret-2_b.H";
+
+int main ()
+{
+ int *p = 0;
+ int j = Foo (p);
+
+ Bar (p); // { dg-error "ambiguous" }
+
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(matched\) template_decl:'::template Foo'\n Deduping '::template Foo@[^\n]*/late-ret-2_a.H:.'\n} module } }
diff --git a/gcc/testsuite/g++.dg/modules/late-ret-3_a.H b/gcc/testsuite/g++.dg/modules/late-ret-3_a.H
new file mode 100644
index 0000000..54f95db
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/late-ret-3_a.H
@@ -0,0 +1,20 @@
+// { dg-additional-options "-fmodule-header -fdump-lang-module-blocks" }
+// { dg-module-cmi {} }
+
+template<typename T> struct TPL_1 { using type = T;};
+
+template<typename U> struct TPL_2 { using type = int;};
+
+template<typename V> using TPL_3 = typename TPL_2<V>::type;
+
+template<typename A>
+auto Foo (const A& arg)
+ -> TPL_3<typename TPL_1<decltype(arg)>::type>
+ {return 3;}
+
+template<typename A>
+auto Bar (const A& arg)
+ -> TPL_3<typename TPL_1<decltype(arg)>::type>
+ {return 3;}
+
+// { dg-final { scan-lang-dump { Cluster members:\n \[0\]=decl definition '::template Foo'\n \[1\]=specialization declaration '::TPL_1<#null#>'\n \[2\]=specialization declaration '::TPL_3<::TPL_1<#null#>::type>'\n \[3\]=specialization declaration '::TPL_2<::TPL_1<#null#>::type>'\n \[4\]=binding '::Foo'\n} module } }
diff --git a/gcc/testsuite/g++.dg/modules/late-ret-3_b.H b/gcc/testsuite/g++.dg/modules/late-ret-3_b.H
new file mode 100644
index 0000000..2ec63ac
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/late-ret-3_b.H
@@ -0,0 +1,20 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+template<typename T> struct TPL_1 { using type = T;};
+
+template<typename U> struct TPL_2 { using type = int;};
+
+template<typename V> using TPL_3 = typename TPL_2<V>::type;
+
+template<typename A>
+auto Foo (const A& arg)
+ -> TPL_3<typename TPL_1<decltype(arg)>::type>
+ {return 3;}
+
+// Deliberately different to 3_a's Bar
+template<typename A>
+auto Bar (const A& arg)
+ -> TPL_3<typename TPL_1<int>::type>
+ {return 3;}
+
diff --git a/gcc/testsuite/g++.dg/modules/late-ret-3_c.C b/gcc/testsuite/g++.dg/modules/late-ret-3_c.C
new file mode 100644
index 0000000..fae9565
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/late-ret-3_c.C
@@ -0,0 +1,22 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-alias" }
+
+import "late-ret-3_a.H";
+import "late-ret-3_b.H";
+
+struct Arg
+{
+ int type;
+};
+
+int main ()
+{
+ Arg arg;
+
+ int j = Foo (arg);
+
+ Bar (arg); // { dg-error "ambiguous" }
+
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Read:-1's named merge key \(matched\) template_decl:'::template Foo'\n Deduping '::template Foo@[^\n]*/late-ret-3_a.H:.'\n} module } }
diff --git a/gcc/testsuite/g++.dg/modules/lazy-1_a.C b/gcc/testsuite/g++.dg/modules/lazy-1_a.C
new file mode 100644
index 0000000..0f7c7c9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lazy-1_a.C
@@ -0,0 +1,19 @@
+// { dg-additional-options "-fmodules-ts" }
+export module foo;
+// { dg-module-cmi "foo" }
+
+export int bar ()
+{
+ return 1;
+}
+
+export int baz ()
+{
+ return 2;
+}
+
+export int quux ()
+{
+ return 3;
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/lazy-1_b.C b/gcc/testsuite/g++.dg/modules/lazy-1_b.C
new file mode 100644
index 0000000..af213d5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/lazy-1_b.C
@@ -0,0 +1,21 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+
+// Check some lazy loading
+
+import foo;
+
+int main ()
+{
+ bar ();
+
+ baz ();
+
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Lazily binding '::bar'@'foo' section} "module" } }
+// { dg-final { scan-lang-dump {Lazily binding '::baz'@'foo' section} "module" } }
+// quux is not referenced, so never loaded
+// { dg-final { scan-lang-dump {Bindings '::quux' section} "module" } }
+// { dg-final { scan-lang-dump-not {Lazily binding '::quux'@'foo' section} "module" } }
+// { dg-final { scan-lang-dump-not {Read -[0-9]* function_decl:'::quux'} "module" } }
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-1_a.H b/gcc/testsuite/g++.dg/modules/leg-merge-1_a.H
new file mode 100644
index 0000000..e7506b5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-1_a.H
@@ -0,0 +1,5 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+int bob (int);
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-1_b.H b/gcc/testsuite/g++.dg/modules/leg-merge-1_b.H
new file mode 100644
index 0000000..07ae824
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-1_b.H
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+int bob (int);
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-1_c.C b/gcc/testsuite/g++.dg/modules/leg-merge-1_c.C
new file mode 100644
index 0000000..b204d54
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-1_c.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+
+import "leg-merge-1_a.H";
+import "leg-merge-1_b.H";
+
+int main ()
+{
+ return bob (0);
+}
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-1_d.C b/gcc/testsuite/g++.dg/modules/leg-merge-1_d.C
new file mode 100644
index 0000000..f785452
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-1_d.C
@@ -0,0 +1,4 @@
+int bob (int i)
+{
+ return i;
+}
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-2_a.H b/gcc/testsuite/g++.dg/modules/leg-merge-2_a.H
new file mode 100644
index 0000000..d891c89
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-2_a.H
@@ -0,0 +1,5 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+class X;
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-2_b.H b/gcc/testsuite/g++.dg/modules/leg-merge-2_b.H
new file mode 100644
index 0000000..b9be14d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-2_b.H
@@ -0,0 +1,5 @@
+// { dg-module-do link }
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+class X;
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-2_c.C b/gcc/testsuite/g++.dg/modules/leg-merge-2_c.C
new file mode 100644
index 0000000..d5a4da9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-2_c.C
@@ -0,0 +1,11 @@
+// { dg-additional-options -fmodules-ts }
+
+import "leg-merge-2_a.H";
+import "leg-merge-2_b.H";
+
+int main ()
+{
+ X *ptr = 0;
+
+ return ptr != 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-3_a.H b/gcc/testsuite/g++.dg/modules/leg-merge-3_a.H
new file mode 100644
index 0000000..9142340
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-3_a.H
@@ -0,0 +1,5 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+extern int bob;
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-3_b.H b/gcc/testsuite/g++.dg/modules/leg-merge-3_b.H
new file mode 100644
index 0000000..2ba847b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-3_b.H
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+extern int bob;
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-3_c.C b/gcc/testsuite/g++.dg/modules/leg-merge-3_c.C
new file mode 100644
index 0000000..c6b71b5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-3_c.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+
+import "leg-merge-3_a.H";
+import "leg-merge-3_b.H";
+
+int main ()
+{
+ return !(bob == 17);
+}
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-3_d.C b/gcc/testsuite/g++.dg/modules/leg-merge-3_d.C
new file mode 100644
index 0000000..36f028c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-3_d.C
@@ -0,0 +1 @@
+int bob = 17;
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-4_a.H b/gcc/testsuite/g++.dg/modules/leg-merge-4_a.H
new file mode 100644
index 0000000..9c61ea2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-4_a.H
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+extern int bob;
+void frob ();
+class X;
+
+extern int ok;
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-4_b.H b/gcc/testsuite/g++.dg/modules/leg-merge-4_b.H
new file mode 100644
index 0000000..09c895f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-4_b.H
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+extern float bob;
+int frob ();
+union X;
+
+int ok ();
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-4_c.C b/gcc/testsuite/g++.dg/modules/leg-merge-4_c.C
new file mode 100644
index 0000000..f1b1aeb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-4_c.C
@@ -0,0 +1,18 @@
+// { dg-additional-options -fmodules-ts }
+
+import "leg-merge-4_a.H";
+import "leg-merge-4_b.H";
+
+void foo ()
+{
+ 2[0]; // { dg-error "" }
+ bob = 5;
+ frob ();
+ X *p;
+}
+
+// { dg-regexp "\nIn module \[^\n]*leg-merge-4_b.H, imported at \[^\n]*leg-merge-4_c.C:\[0-9]*:\n\[^\n]*leg-merge-4_b.H:4:\[0-9]*: error: conflicting global module declaration 'float bob'\nIn module \[^\n]*leg-merge-4_a.H, imported at \[^\n]*leg-merge-4_c.C:\[0-9]*:\n\[^\n]*leg-merge-4_a.H:4:\[0-9]*: note: existing declaration 'int bob'\n\[^\n]*leg-merge-4_c.C:9:\[0-9]*: note: during load of binding '::bob'$" }
+
+// { dg-regexp "\nIn module \[^\n]*leg-merge-4_b.H, imported at \[^\n]*leg-merge-4_c.C:\[0-9]*:\n\[^\n]*leg-merge-4_b.H:5:\[0-9]*: error: conflicting global module declaration 'int frob\\(\\)'\nIn module \[^\n]*leg-merge-4_a.H, imported at \[^\n]*leg-merge-4_c.C:\[0-9]*:\n\[^\n]*leg-merge-4_a.H:5:\[0-9]*: note: existing declaration 'void frob\\(\\)'\n\[^\n]*leg-merge-4_c.C:10:\[0-9]*: note: during load of binding '::frob'$" }
+
+// { dg-regexp "In module \[^\n]*leg-merge-4_b.H, imported at \[^\n]*leg-merge-4_c.C:\[0-9]*:\n\[^\n]*leg-merge-4_b.H:6:\[0-9]*: error: conflicting global module declaration 'union X'\nIn module \[^\n]*leg-merge-4_a.H, imported at \[^\n]*leg-merge-4_c.C:\[0-9]*:\n\[^\n]*leg-merge-4_a.H:6:\[0-9]*: note: existing declaration 'class X'\n\[^\n]*leg-merge-4_c.C:11:\[0-9]*: note: during load of binding '::X'$" }
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-5_a.H b/gcc/testsuite/g++.dg/modules/leg-merge-5_a.H
new file mode 100644
index 0000000..ba92696
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-5_a.H
@@ -0,0 +1,9 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+inline int bob (int x)
+{
+ return x;
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-5_b.H b/gcc/testsuite/g++.dg/modules/leg-merge-5_b.H
new file mode 100644
index 0000000..b77efb3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-5_b.H
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+inline int bob (int x)
+{
+ return x;
+}
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-5_c.C b/gcc/testsuite/g++.dg/modules/leg-merge-5_c.C
new file mode 100644
index 0000000..cd1e757
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-5_c.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+
+import "leg-merge-5_a.H";
+import "leg-merge-5_b.H";
+
+int main ()
+{
+ return bob (0);
+}
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-6_a.H b/gcc/testsuite/g++.dg/modules/leg-merge-6_a.H
new file mode 100644
index 0000000..64e8d28
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-6_a.H
@@ -0,0 +1,10 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+struct X
+{
+ int m;
+ X (int m) :m(m) {}
+ operator int () const { return m; }
+};
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-6_b.H b/gcc/testsuite/g++.dg/modules/leg-merge-6_b.H
new file mode 100644
index 0000000..2179d90
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-6_b.H
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+struct X
+{
+ int m;
+ X (int m) :m(m) {}
+ operator int () const { return m; }
+};
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-6_c.C b/gcc/testsuite/g++.dg/modules/leg-merge-6_c.C
new file mode 100644
index 0000000..dddd88c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-6_c.C
@@ -0,0 +1,11 @@
+// { dg-additional-options -fmodules-ts }
+
+import "leg-merge-6_a.H";
+import "leg-merge-6_b.H";
+
+int main ()
+{
+ X x (75);
+
+ return !(int (x) == 75);
+}
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-7_a.H b/gcc/testsuite/g++.dg/modules/leg-merge-7_a.H
new file mode 100644
index 0000000..d8ea859
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-7_a.H
@@ -0,0 +1,8 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+template<int I> int foo (int i)
+{
+ return I == i;
+}
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-7_b.H b/gcc/testsuite/g++.dg/modules/leg-merge-7_b.H
new file mode 100644
index 0000000..9ec045b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-7_b.H
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+template<int I> int foo (int i)
+{
+ return I == i;
+}
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-7_c.C b/gcc/testsuite/g++.dg/modules/leg-merge-7_c.C
new file mode 100644
index 0000000..0efdc0a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-7_c.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+
+import "leg-merge-7_a.H";
+import "leg-merge-7_b.H";
+
+int main ()
+{
+ return !foo<2> (2);
+}
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-8_a.H b/gcc/testsuite/g++.dg/modules/leg-merge-8_a.H
new file mode 100644
index 0000000..ad9a2f9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-8_a.H
@@ -0,0 +1,13 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+template<int I> struct Tpl
+{
+ int i;
+ Tpl () : i (I){}
+ operator int () const
+ {
+ return i;
+ }
+};
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-8_b.H b/gcc/testsuite/g++.dg/modules/leg-merge-8_b.H
new file mode 100644
index 0000000..845984c4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-8_b.H
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+template<int I> struct Tpl
+{
+ int i;
+ Tpl () : i (I){}
+ operator int () const
+ {
+ return i;
+ }
+};
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-8_c.C b/gcc/testsuite/g++.dg/modules/leg-merge-8_c.C
new file mode 100644
index 0000000..fa67db9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-8_c.C
@@ -0,0 +1,11 @@
+// { dg-additional-options -fmodules-ts }
+
+import "leg-merge-8_a.H";
+import "leg-merge-8_b.H";
+
+int main ()
+{
+ Tpl<1> one;
+
+ return !(one == 1);
+}
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-9_a.H b/gcc/testsuite/g++.dg/modules/leg-merge-9_a.H
new file mode 100644
index 0000000..518ecbd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-9_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+typedef int X;
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-9_b.H b/gcc/testsuite/g++.dg/modules/leg-merge-9_b.H
new file mode 100644
index 0000000..518ecbd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-9_b.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+typedef int X;
diff --git a/gcc/testsuite/g++.dg/modules/leg-merge-9_c.C b/gcc/testsuite/g++.dg/modules/leg-merge-9_c.C
new file mode 100644
index 0000000..3c75dc8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/leg-merge-9_c.C
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodules-ts }
+import "leg-merge-9_a.H";
+import "leg-merge-9_b.H";
+
+X an_int;
+
diff --git a/gcc/testsuite/g++.dg/modules/legacy-1_a.H b/gcc/testsuite/g++.dg/modules/legacy-1_a.H
new file mode 100644
index 0000000..3ab0856
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-1_a.H
@@ -0,0 +1,10 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+#ifndef HEADER_H
+#define HEADER_H
+
+int frob (int);
+
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/legacy-1_b.C b/gcc/testsuite/g++.dg/modules/legacy-1_b.C
new file mode 100644
index 0000000..f758e3a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-1_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodules-ts }
+
+int frob (int a)
+{
+ return a + 2;
+}
diff --git a/gcc/testsuite/g++.dg/modules/legacy-1_c.C b/gcc/testsuite/g++.dg/modules/legacy-1_c.C
new file mode 100644
index 0000000..277231c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-1_c.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+import "legacy-1_a.H";
+
+int main ()
+{
+ return !(frob (-2) == 0);
+}
diff --git a/gcc/testsuite/g++.dg/modules/legacy-2.h b/gcc/testsuite/g++.dg/modules/legacy-2.h
new file mode 100644
index 0000000..2bac5c7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-2.h
@@ -0,0 +1 @@
+#define FROB frob
diff --git a/gcc/testsuite/g++.dg/modules/legacy-2.map b/gcc/testsuite/g++.dg/modules/legacy-2.map
new file mode 100644
index 0000000..9de5392
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-2.map
@@ -0,0 +1 @@
+"legacy-2_a.H"
diff --git a/gcc/testsuite/g++.dg/modules/legacy-2_a.H b/gcc/testsuite/g++.dg/modules/legacy-2_a.H
new file mode 100644
index 0000000..076bdbe
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-2_a.H
@@ -0,0 +1,8 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+// this is a legacy header
+
+int frob (int);
+
diff --git a/gcc/testsuite/g++.dg/modules/legacy-2_b.H b/gcc/testsuite/g++.dg/modules/legacy-2_b.H
new file mode 100644
index 0000000..0d4ae07
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-2_b.H
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodule-header -fmodule-mapper=|@g++-mapper-server\\ -mt\\ $srcdir/g++.dg/modules/legacy-2.map" }
+// { dg-module-cmi {} }
+
+#define frob FROB
+
+// this should be diverted, if it isn't the above #define will break us
+#include "legacy-2_a.H"
+int move (int X = __LINE__); // Capture __LINE__ in a non-definition
+
+// this should not be diverted
+#include "legacy-2.h"
+
+
diff --git a/gcc/testsuite/g++.dg/modules/legacy-2_c.C b/gcc/testsuite/g++.dg/modules/legacy-2_c.C
new file mode 100644
index 0000000..ff31bd4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-2_c.C
@@ -0,0 +1,8 @@
+int frob (int a)
+{
+ return a * 2;
+}
+int move (int a)
+{
+ return a;
+}
diff --git a/gcc/testsuite/g++.dg/modules/legacy-2_d.C b/gcc/testsuite/g++.dg/modules/legacy-2_d.C
new file mode 100644
index 0000000..5384d32
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-2_d.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import "legacy-2_b.H";
+
+int main ()
+{
+ if (frob (2) != 4)
+ return 1;
+ /* Check line number is not disturbed. */
+ if (move () != 8)
+ return 2;
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/legacy-3.h b/gcc/testsuite/g++.dg/modules/legacy-3.h
new file mode 100644
index 0000000..2bac5c7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-3.h
@@ -0,0 +1 @@
+#define FROB frob
diff --git a/gcc/testsuite/g++.dg/modules/legacy-3_a.H b/gcc/testsuite/g++.dg/modules/legacy-3_a.H
new file mode 100644
index 0000000..74d2755
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-3_a.H
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+// this is a legacy header
+
+int frob (int);
+
diff --git a/gcc/testsuite/g++.dg/modules/legacy-3_b.H b/gcc/testsuite/g++.dg/modules/legacy-3_b.H
new file mode 100644
index 0000000..3bf819d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-3_b.H
@@ -0,0 +1,16 @@
+// { dg-do preprocess }
+// { dg-additional-options -fmodule-header }
+
+#define frob FROB
+
+// Enough blank lines to force a line sync before the legacy import
+
+// this should be diverted, if it isn't the above #define will break us
+#include "legacy-3_a.H"
+int move (int X = __LINE__); // Capture __LINE__ in a non-definition
+
+// this should not be diverted
+#include "legacy-3.h"
+
+// { dg-final { scan-file legacy-3_b.i {\n# 9 "[^\n]*legacy-3_b.H"\nimport "[^\n]*legacy-3_a.H" \[\[__translated\]\];\nint move \(int X = 10\);\n} } }
+
diff --git a/gcc/testsuite/g++.dg/modules/legacy-3_c.H b/gcc/testsuite/g++.dg/modules/legacy-3_c.H
new file mode 100644
index 0000000..56b8172
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-3_c.H
@@ -0,0 +1,25 @@
+// { dg-do preprocess }
+// { dg-additional-options -fmodule-header }
+
+#define frob FROB
+
+// this should be translated, if it isn't the above #define will break
+// us
+MARK1 __LINE__
+#include "legacy-3_a.H"
+MARK2 __LINE__
+int move (int X = __LINE__); // Capture __LINE__ in a non-definition
+// this should also be translated, but elided too
+MARK2 __LINE__
+#include "legacy-3_a.H"
+MARK3 __LINE__
+
+// this should not be translated
+#include "legacy-3.h"
+
+// { dg-final { scan-file legacy-3_c.i {MARK1 8\nimport "[^\n]*legacy-3_a.H" \[\[__translated\]\];\nMARK2 10\n} } }
+// We should have stopped.
+// { dg-final { scan-file legacy-3_c.i {move} } }
+// { dg-final { scan-file legacy-3_c.i {MARK2 13\n\nMARK3 15\n} } }
+// { dg-final { scan-file-not legacy-3_c.i {# [^\n]*legacy-3_a.H} } }
+// { dg-final { scan-file legacy-3_c.i {# [^\n]*legacy-3.h} } }
diff --git a/gcc/testsuite/g++.dg/modules/legacy-6.map b/gcc/testsuite/g++.dg/modules/legacy-6.map
new file mode 100644
index 0000000..8199bf9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-6.map
@@ -0,0 +1,2 @@
+./legacy-6_a.H
+./legacy-6_b.H
diff --git a/gcc/testsuite/g++.dg/modules/legacy-6_a.H b/gcc/testsuite/g++.dg/modules/legacy-6_a.H
new file mode 100644
index 0000000..7d7e970
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-6_a.H
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+// this is a legacy user header
+
+int frob (int);
diff --git a/gcc/testsuite/g++.dg/modules/legacy-6_b.H b/gcc/testsuite/g++.dg/modules/legacy-6_b.H
new file mode 100644
index 0000000..1a52d42
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-6_b.H
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+// this is a legacy user header
+
+int frob (float);
diff --git a/gcc/testsuite/g++.dg/modules/legacy-6_c.C b/gcc/testsuite/g++.dg/modules/legacy-6_c.C
new file mode 100644
index 0000000..0b5bd7f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-6_c.C
@@ -0,0 +1,8 @@
+// { dg-do preprocess }
+// { dg-additional-options "-fmodules-ts -fmodule-mapper=|@g++-mapper-server\\ -mt\\ [srcdir]/legacy-6.map" }
+
+#include "legacy-6_a.H"
+#include "legacy-6_b.H"
+int i;
+
+// { dg-final { scan-file legacy-6_c.i {import "[^\n]*legacy-6_a.H" \[\[__translated\]\];\nimport "[^\n]*legacy-6_b.H" \[\[__translated\]\];\nint i;} } }
diff --git a/gcc/testsuite/g++.dg/modules/legacy-6_d.C b/gcc/testsuite/g++.dg/modules/legacy-6_d.C
new file mode 100644
index 0000000..58ca21d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-6_d.C
@@ -0,0 +1,9 @@
+// { dg-do preprocess }
+// { dg-additional-options "-fmodules-ts -fmodule-mapper=|@g++-mapper-server\\ -mt\\ [srcdir]/legacy-6.map" }
+
+#include "legacy-6_a.H"
+int i;
+#include "legacy-6_b.H"
+
+// { dg-final { scan-file legacy-6_d.i {import "[^\n]*legacy-6_a.H" \[\[__translated\]\];\nint i;} } }
+// { dg-final { scan-file legacy-6_d.i {int i;\nimport "[^\n]*legacy-6_b.H" \[\[__translated\]\];\n} } }
diff --git a/gcc/testsuite/g++.dg/modules/legacy-6_e.C b/gcc/testsuite/g++.dg/modules/legacy-6_e.C
new file mode 100644
index 0000000..9d4dd92
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-6_e.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodule-mapper=|@mapper-server\\ -f\\ [srcdir]/legacy-6.map" }
+
+#include "legacy-6_a.H"
+#include "legacy-6_b.H"
+int i;
diff --git a/gcc/testsuite/g++.dg/modules/legacy-6_f.C b/gcc/testsuite/g++.dg/modules/legacy-6_f.C
new file mode 100644
index 0000000..c15eade
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-6_f.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodule-mapper=|@mapper-server\\ -f\\ [srcdir]/legacy-6.map" }
+
+#include "legacy-6_a.H"
+int i;
+#include "legacy-6_b.H"
+
diff --git a/gcc/testsuite/g++.dg/modules/legacy-7_a.H b/gcc/testsuite/g++.dg/modules/legacy-7_a.H
new file mode 100644
index 0000000..49578a9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-7_a.H
@@ -0,0 +1,6 @@
+// { dg-additional-options "-std=c++2a -fmodule-header" }
+// { dg-module-cmi {} }
+
+#define throw(...) /* { dg-warning "-:not exporting" } */ \
+ noexcept(__VA_OPT__(false))
+
diff --git a/gcc/testsuite/g++.dg/modules/legacy-7_b.C b/gcc/testsuite/g++.dg/modules/legacy-7_b.C
new file mode 100644
index 0000000..d78f45c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-7_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts -std=c++2a" }
+
+import "legacy-7_a.H";
+
+#ifdef throw
+#error barf
+#endif
+
diff --git a/gcc/testsuite/g++.dg/modules/legacy-8_a.H b/gcc/testsuite/g++.dg/modules/legacy-8_a.H
new file mode 100644
index 0000000..a30cd88
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-8_a.H
@@ -0,0 +1,5 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+int sqr (int);
diff --git a/gcc/testsuite/g++.dg/modules/legacy-8_b.H b/gcc/testsuite/g++.dg/modules/legacy-8_b.H
new file mode 100644
index 0000000..62366e1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-8_b.H
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+float sqr (float);
diff --git a/gcc/testsuite/g++.dg/modules/legacy-8_c.C b/gcc/testsuite/g++.dg/modules/legacy-8_c.C
new file mode 100644
index 0000000..88300b2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-8_c.C
@@ -0,0 +1,13 @@
+#include "legacy-8_a.H"
+#include "legacy-8_a.H"
+
+int sqr (int a)
+{
+ return a * a;
+}
+
+
+float sqr (float a)
+{
+ return a * a;
+}
diff --git a/gcc/testsuite/g++.dg/modules/legacy-8_d.C b/gcc/testsuite/g++.dg/modules/legacy-8_d.C
new file mode 100644
index 0000000..85377d9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-8_d.C
@@ -0,0 +1,16 @@
+// { dg-additional-options "-fmodules-ts" }
+export module foo;
+// { dg-module-cmi foo }
+
+import "legacy-8_a.H";
+import "legacy-8_b.H";
+
+export inline int Sqr (int a)
+{
+ return sqr (a);
+}
+
+export inline float Sqr (float a)
+{
+ return sqr (a);
+}
diff --git a/gcc/testsuite/g++.dg/modules/legacy-8_e.C b/gcc/testsuite/g++.dg/modules/legacy-8_e.C
new file mode 100644
index 0000000..afeb19a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/legacy-8_e.C
@@ -0,0 +1,18 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import foo;
+
+int main ()
+{
+ int (*ifp) (int) = Sqr;
+ float (*ffp) (float) = Sqr;
+
+ if (ifp (2) != 4)
+ return 1;
+
+ // Comparing these two floats is ok
+ if (ffp (2.0f) != 4.0f)
+ return 2;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/libfn-1_a.C b/gcc/testsuite/g++.dg/modules/libfn-1_a.C
new file mode 100644
index 0000000..a8a8ee8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/libfn-1_a.C
@@ -0,0 +1,16 @@
+// { dg-additional-options -fmodules-ts }
+// Make sure we're not confused by an imported declaration of a
+// library fn
+export module foo;
+// { dg-module-cmi foo }
+
+export inline void thrower ()
+{
+ try
+ {
+ throw 1;
+ }
+ catch (...)
+ {
+ }
+}
diff --git a/gcc/testsuite/g++.dg/modules/libfn-1_b.C b/gcc/testsuite/g++.dg/modules/libfn-1_b.C
new file mode 100644
index 0000000..0e8346b5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/libfn-1_b.C
@@ -0,0 +1,18 @@
+// { dg-additional-options -fmodules-ts }
+import foo;
+
+void bar ()
+{
+ thrower ();
+}
+
+void baz ()
+{
+ try
+ {
+ throw 1;
+ }
+ catch (...)
+ {
+ }
+}
diff --git a/gcc/testsuite/g++.dg/modules/literals-1_a.C b/gcc/testsuite/g++.dg/modules/literals-1_a.C
new file mode 100644
index 0000000..9fb2aea
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/literals-1_a.C
@@ -0,0 +1,51 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts -Wno-pedantic -Wno-psabi" }
+
+// Make sure e can serialize various literals. */
+
+export module real2reel;
+// { dg-module-cmi real2reel }
+
+export inline float assassing ()
+{
+ return 2.0f;
+}
+
+export inline double market (float square, double heroes)
+{
+ return 4.0 * square * heroes;
+}
+
+using cplx_i = __complex__ int;
+using cplx_f = __complex__ float;
+using cplx_d = __complex__ double;
+
+export inline cplx_i cinderella_search ()
+{
+ return (cplx_i) {1, 2};
+}
+export inline cplx_f emerald_lies ()
+{
+ return (cplx_f) {3, 4};
+}
+export inline cplx_d forgotten_sons ()
+{
+ return (cplx_d) {5, 6};
+}
+
+export inline int garden_party (unsigned ix)
+{
+ return "invites call the debs to play"[ix];
+}
+
+using vec = int __attribute__((vector_size (sizeof (int) * 4)));
+
+export inline vec incubus ()
+{
+ return (vec){1,7,3,9}; // Not an arithmetic series
+}
+
+export inline vec charting_the_single ()
+{
+ return (vec){1,2,3,4}; // An arithmetic series
+}
diff --git a/gcc/testsuite/g++.dg/modules/literals-1_b.C b/gcc/testsuite/g++.dg/modules/literals-1_b.C
new file mode 100644
index 0000000..5468944
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/literals-1_b.C
@@ -0,0 +1,39 @@
+// { dg-additional-options {-fmodules-ts -Wno-psabi} }
+
+import real2reel;
+
+int main ()
+{
+ if (assassing () != 2.0f)
+ return 1;
+
+ if (market (/*square=*/2.0f, /*heroes=*/7.0) != 56.0)
+ return 2;
+
+ auto c_i = cinderella_search ();
+ if (__real__ (c_i) != 1 || __imag__ (c_i) != 2)
+ return 3;
+
+ auto c_f = emerald_lies ();
+ if (__real__ (c_f) != 3.0f || __imag__ (c_f) != 4.0f)
+ return 4;
+
+ auto c_d = forgotten_sons ();
+ if (__real__ (c_d) != 5.0 || __imag__ (c_d) != 6.0)
+ return 5;
+
+
+ if (garden_party (7) != ' ')
+ return 6;
+
+ auto v = incubus ();
+ if (v[0] != 1 || v[1] != 7 || v[2] != 3 || v[3] != 9)
+ return 7;
+
+ v = charting_the_single ();
+ if (v[0] != 1 || v[1] != 2 || v[2] != 3 || v[3] != 4)
+ return 8;
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/loc-1_a.C b/gcc/testsuite/g++.dg/modules/loc-1_a.C
new file mode 100644
index 0000000..8155181
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/loc-1_a.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module bob;
+// { dg-module-cmi bob }
+
+export int frob (int *); // line 5
diff --git a/gcc/testsuite/g++.dg/modules/loc-1_b.C b/gcc/testsuite/g++.dg/modules/loc-1_b.C
new file mode 100644
index 0000000..0a0b85e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/loc-1_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module stuart;
+// { dg-module-cmi stuart }
+
+
+export int frob (float *); // line 6
+
diff --git a/gcc/testsuite/g++.dg/modules/loc-1_c.C b/gcc/testsuite/g++.dg/modules/loc-1_c.C
new file mode 100644
index 0000000..f952259
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/loc-1_c.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import bob;
+import stuart;
+
+void kevin ()
+{
+ frob (nullptr); // { dg-error "call of overload" }
+}
+
+// { dg-regexp "In module stuart, imported at \[^\n]*loc-1_c.C:4:\n\[^\n]*loc-1_b.C:7:12: note:.*" }
+// { dg-regexp "In module bob, imported at \[^\n]*loc-1_c.C:3:\n\[^\n]*loc-1_a.C:6:12: note:.*" }
+
+
diff --git a/gcc/testsuite/g++.dg/modules/loc-2_a.C b/gcc/testsuite/g++.dg/modules/loc-2_a.C
new file mode 100644
index 0000000..a4bbce3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/loc-2_a.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module bob;
+// { dg-module-cmi bob }
+
+export int frob (int *);
diff --git a/gcc/testsuite/g++.dg/modules/loc-2_b.C b/gcc/testsuite/g++.dg/modules/loc-2_b.C
new file mode 100644
index 0000000..4264009
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/loc-2_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module stuart;
+// { dg-module-cmi stuart }
+
+export import bob;
diff --git a/gcc/testsuite/g++.dg/modules/loc-2_c.C b/gcc/testsuite/g++.dg/modules/loc-2_c.C
new file mode 100644
index 0000000..e731d50
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/loc-2_c.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module kevin;
+// { dg-module-cmi kevin }
+
+export import stuart;
+export import bob; // Bob should be reseated in the export map
+export import stuart;
diff --git a/gcc/testsuite/g++.dg/modules/loc-2_d.C b/gcc/testsuite/g++.dg/modules/loc-2_d.C
new file mode 100644
index 0000000..4ae8a69
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/loc-2_d.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import stuart;
+
+void foo ()
+{
+ frob (2); /* { dg-error "invalid conversion" } */
+}
+
+// { dg-regexp "In module bob, imported at \[^\n]*loc-2_b.C:6,\nof module stuart, imported at \[^\n]*loc-2_d.C:3:\n\[^\n]*loc-2_a.C:6:18: note:.*" }
diff --git a/gcc/testsuite/g++.dg/modules/loc-2_e.C b/gcc/testsuite/g++.dg/modules/loc-2_e.C
new file mode 100644
index 0000000..c4d0acb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/loc-2_e.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import stuart;
+import bob;
+import stuart;
+
+void foo ()
+{
+ frob (2); // { dg-error "invalid conversion" }
+}
+
+// { dg-regexp "In module bob, imported at \[^\n]*loc-2_e.C:4:\n\[^\n]*loc-2_a.C:6:18: note:.*" }
diff --git a/gcc/testsuite/g++.dg/modules/loc-2_f.C b/gcc/testsuite/g++.dg/modules/loc-2_f.C
new file mode 100644
index 0000000..2888d04
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/loc-2_f.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import kevin;
+
+void foo ()
+{
+ frob (2); // { dg-error "invalid conversion" }
+}
+
+// { dg-regexp "In module bob, imported at \[^\n]*loc-2_c.C:7,\nof module kevin, imported at \[^\n]*loc-2_f.C:3:\n\[^\n]*loc-2_a.C:6:18: note:.*" }
diff --git a/gcc/testsuite/g++.dg/modules/loc-wrapper-1.h b/gcc/testsuite/g++.dg/modules/loc-wrapper-1.h
new file mode 100644
index 0000000..04e62d4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/loc-wrapper-1.h
@@ -0,0 +1,14 @@
+template<typename _Tp>
+struct __is_integer
+{
+ enum { __value = 0 };
+};
+
+template<typename _Tp>
+struct __is_integer_nonstrict
+
+{
+ using __is_integer<_Tp>::__value;
+
+ enum { __width = __value ? sizeof(_Tp) * 8 : 0 };
+};
diff --git a/gcc/testsuite/g++.dg/modules/loc-wrapper-1_a.H b/gcc/testsuite/g++.dg/modules/loc-wrapper-1_a.H
new file mode 100644
index 0000000..cddb46f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/loc-wrapper-1_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+
+// { dg-module-cmi {} }
+#include "loc-wrapper-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/loc-wrapper-1_b.C b/gcc/testsuite/g++.dg/modules/loc-wrapper-1_b.C
new file mode 100644
index 0000000..6d0229a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/loc-wrapper-1_b.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+// ICEd comparing VIEW_CONVERT_EXPR location wrappers with null types
+#include "loc-wrapper-1.h"
+import "loc-wrapper-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/local-1_a.C b/gcc/testsuite/g++.dg/modules/local-1_a.C
new file mode 100644
index 0000000..c1a3343
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/local-1_a.C
@@ -0,0 +1,13 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+
+export module the.shop;
+// { dg-module-cmi the.shop }
+
+export int for_local_people ()
+{
+ struct X {int a;};
+ X m;
+ m.a = 5;
+ return m.a;
+}
diff --git a/gcc/testsuite/g++.dg/modules/local-1_b.C b/gcc/testsuite/g++.dg/modules/local-1_b.C
new file mode 100644
index 0000000..37a9461
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/local-1_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts" }
+import the.shop;
+
+int main ()
+{
+ if (for_local_people () != 5)
+ return 1;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/local-extern-1.C b/gcc/testsuite/g++.dg/modules/local-extern-1.C
new file mode 100644
index 0000000..7b01605
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/local-extern-1.C
@@ -0,0 +1,20 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+
+module;
+# 4 __FILE__ 1
+inline void frob ()
+{
+ extern int bob; // OK
+}
+
+# 11 "" 2
+export module bob;
+// { dg-module-cmi !bob }
+
+inline void dob ()
+{
+ extern int bob; // { dg-error "block-scope extern" }
+}
+
+
+// { dg-prune-output "not writing module" }
diff --git a/gcc/testsuite/g++.dg/modules/local-extern-2.H b/gcc/testsuite/g++.dg/modules/local-extern-2.H
new file mode 100644
index 0000000..dab5ee4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/local-extern-2.H
@@ -0,0 +1,10 @@
+// { dg-additional-options -fmodule-header }
+
+// { dg-module-cmi {} }
+
+inline int *wcstok(int *__wcstok_ws1)
+{
+ extern int *__iso_wcstok(int * bob);
+
+ return __iso_wcstok(__wcstok_ws1);
+}
diff --git a/gcc/testsuite/g++.dg/modules/local-struct-1_a.C b/gcc/testsuite/g++.dg/modules/local-struct-1_a.C
new file mode 100644
index 0000000..b4323b6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/local-struct-1_a.C
@@ -0,0 +1,12 @@
+// { dg-additional-options -fmodules-ts }
+export module foo;
+// { dg-module-cmi foo }
+
+export inline int __inline_signbitf (float __x)
+{
+ union x { float __f; unsigned int __u; } __u;
+
+ __u.__f = __x;
+
+ return int (__u.__u >> 31);
+}
diff --git a/gcc/testsuite/g++.dg/modules/local-struct-1_b.C b/gcc/testsuite/g++.dg/modules/local-struct-1_b.C
new file mode 100644
index 0000000..96968e2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/local-struct-1_b.C
@@ -0,0 +1,3 @@
+// { dg-additional-options {-fmodules-ts -fno-module-lazy} }
+
+import foo;
diff --git a/gcc/testsuite/g++.dg/modules/macloc-1_a.C b/gcc/testsuite/g++.dg/modules/macloc-1_a.C
new file mode 100644
index 0000000..a152b51
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macloc-1_a.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module agnes;
+// { dg-module-cmi agnes }
+
+int a;
+
+#define BOB(X) int X ()
+#define KEVIN(X) int X ()
+
+export BOB(me);
+export KEVIN(you);
+
diff --git a/gcc/testsuite/g++.dg/modules/macloc-1_b.C b/gcc/testsuite/g++.dg/modules/macloc-1_b.C
new file mode 100644
index 0000000..8f8f1f5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macloc-1_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module edith;
+// { dg-module-cmi edith }
+
+#define STUART(X) X
+
+import STUART(agnes);
+
+export void STUART(gru) ();
diff --git a/gcc/testsuite/g++.dg/modules/macloc-1_c.C b/gcc/testsuite/g++.dg/modules/macloc-1_c.C
new file mode 100644
index 0000000..9b8f7fb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macloc-1_c.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts" }
+
+module edith;
+
+void gru ()
+{
+ me (1);
+ you (1);
+}
+
+// { dg-regexp "\[^\n]*macloc-1_c.C:7:8: error: too many arguments to function 'int me@agnes\\(\\)'\nIn module agnes, imported at \[^\n]*macloc-1_b.C:8,\nof module edith, imported at \[^\n]*macloc-1_c.C:3:\n\[^\n]*macloc-1_a.C:11:12: note: declared here\n\[^\n]*macloc-1_a.C:8:20: note: in definition of macro 'BOB'\n" }
+
+// { dg-regexp "\[^\n]*macloc-1_c.C:8:9: error: too many arguments to function 'int you@agnes\\(\\)'\nIn module agnes, imported at \[^\n]*macloc-1_b.C:8,\nof module edith, imported at \[^\n]*macloc-1_c.C:3:\n\[^\n]*macloc-1_a.C:12:14: note: declared here\n\[^\n]*macloc-1_a.C:9:22: note: in definition of macro 'KEVIN'\n" }
diff --git a/gcc/testsuite/g++.dg/modules/macloc-1_d.C b/gcc/testsuite/g++.dg/modules/macloc-1_d.C
new file mode 100644
index 0000000..5b2b7ba
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macloc-1_d.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import edith;
+import agnes;
+
+void margo ()
+{
+ me (1);
+ gru (2);
+}
+
+// { dg-regexp "\[^\n]*macloc-1_d.C:8:8: error: too many arguments to function 'int me@agnes\\(\\)'\nIn module agnes, imported at \[^\n]*macloc-1_d.C:4:\n\[^\n]*macloc-1_a.C:11:12: note: declared here\n\[^\n]*macloc-1_a.C:8:20: note: in definition of macro 'BOB'\n" }
+// { dg-regexp "\[^\n]*macloc-1_d.C:9:9: error: too many arguments to function 'void gru@edith\\(\\)'\nIn module edith, imported at \[^\n]*macloc-1_d.C:3:\n\[^\n]*macloc-1_b.C:10:20: note: declared here\n\[^\n]*macloc-1_b.C:6:19: note: in definition of macro 'STUART'\n" }
diff --git a/gcc/testsuite/g++.dg/modules/macloc-2_a.H b/gcc/testsuite/g++.dg/modules/macloc-2_a.H
new file mode 100644
index 0000000..99f0884
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macloc-2_a.H
@@ -0,0 +1,9 @@
+// { dg-additional-options {-fmodule-header -nostdinc} }
+// { dg-module-cmi {} }
+
+#define MACRO(X) X
+
+inline int frob (int x)
+{
+ return x + 2;
+}
diff --git a/gcc/testsuite/g++.dg/modules/macloc-2_b.C b/gcc/testsuite/g++.dg/modules/macloc-2_b.C
new file mode 100644
index 0000000..601a477
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macloc-2_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options {-fmodules-ts -nostdinc} }
+module;
+
+import "macloc-2_a.H";
+
+export module Foo;
+// { dg-module-cmi Foo }
+
+export inline int MACRO (fn) (int i)
+{
+ return frob (i);
+}
+
+export int (MACRO) (int i);
diff --git a/gcc/testsuite/g++.dg/modules/macro-1_a.H b/gcc/testsuite/g++.dg/modules/macro-1_a.H
new file mode 100644
index 0000000..5b212a6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-1_a.H
@@ -0,0 +1,12 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+#ifndef MACRO_1_H
+#define MACRO_1_H
+#define foo bar baz
+#define kevin(X) stuart (X)
+#define stuart(X) bob ("banana", X) // Yes we have X bananas
+#define bob(...) {__VA_ARGS__}
+
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/macro-1_b.C b/gcc/testsuite/g++.dg/modules/macro-1_b.C
new file mode 100644
index 0000000..afbcab2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-1_b.C
@@ -0,0 +1,25 @@
+// { dg-additional-options "-fmodules-ts" }
+import "macro-1_a.H";
+
+#define baz = + 1
+int foo;
+struct X
+{
+ const char *s;
+ int v;
+}
+;
+X x kevin (5);
+
+int main ()
+{
+ if (foo != 1)
+ return 1;
+ if (x.v != 5)
+ return 2;
+ const char *banana = "banana";
+ for (unsigned ix = 0; banana[ix]; ix++)
+ if (banana[ix] != x.s[ix])
+ return 3;
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/macro-2_a.H b/gcc/testsuite/g++.dg/modules/macro-2_a.H
new file mode 100644
index 0000000..89d66a5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-2_a.H
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+#ifndef MACRO_2a_H
+#define MACRO_2a_H
+
+#define FOO_OK foo
+#define BAR_OK(BAZ) BINKY(2)
+
+#define FOO_BAD foo
+#define BAR_BAD(BAZ) BINKY(2)
+
+
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/macro-2_b.H b/gcc/testsuite/g++.dg/modules/macro-2_b.H
new file mode 100644
index 0000000..5690712
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-2_b.H
@@ -0,0 +1,24 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+
+
+
+// Make line numbers distinct from macro-2_a.H
+
+
+
+
+
+
+#ifndef MACRO_2b_H
+#define MACRO_2b_H
+
+#define FOO_OK foo
+#define BAR_OK(BAZ) BINKY(2)
+
+#define FOO_BAD foot
+#define BAR_BAD(BAZ) BINKY(3)
+
+
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/macro-2_c.H b/gcc/testsuite/g++.dg/modules/macro-2_c.H
new file mode 100644
index 0000000..ed05323
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-2_c.H
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodule-header -fdump-lang-module" }
+// { dg-module-cmi {} }
+
+#ifndef MACRO_2c_H
+#define MACRO_2c_H
+import "macro-2_a.H";
+
+#endif
+
+// { dg-final { scan-lang-dump-not {Read new macro #define MACRO_2a_H at} module } }
diff --git a/gcc/testsuite/g++.dg/modules/macro-2_d.C b/gcc/testsuite/g++.dg/modules/macro-2_d.C
new file mode 100644
index 0000000..04b80fb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-2_d.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts" }
+
+#define BINKY(X) X
+
+import "macro-2_a.H";
+import "macro-2_b.H";
+
+int FOO_OK = BAR_OK(1);
+
+int BAR_BAD;
+// { dg-regexp {[^\n]*macro-2_d.C:10:5: error: inconsistent imported macro definition 'BAR_BAD'\nIn module [^\n]*macro-2_a.H, imported at [^\n]*macro-2_d.C:5:\n[^\n]*macro-2_a.H:11: note: '#define BAR_BAD\(BAZ\) BINKY\(2\)'\nIn module [^\n]*macro-2_b.H, imported at [^\n]*macro-2_d.C:6:\n[^\n]*macro-2_b.H:21: note: '#define BAR_BAD\(BAZ\) BINKY\(3\)'\n} }
+
+int FOO_BAD;
+// { dg-regexp {[^\n]*macro-2_d.C:13:5: error: inconsistent imported macro definition 'FOO_BAD'\nIn module [^\n]*macro-2_a.H, imported at [^\n]*macro-2_d.C:5:\n[^\n]*macro-2_a.H:10: note: '#define FOO_BAD foo'\nIn module [^\n]*macro-2_b.H, imported at [^\n]*macro-2_d.C:6:\n[^\n]*macro-2_b.H:20: note: '#define FOO_BAD foot'\n} }
diff --git a/gcc/testsuite/g++.dg/modules/macro-3_a.H b/gcc/testsuite/g++.dg/modules/macro-3_a.H
new file mode 100644
index 0000000..6582e3c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-3_a.H
@@ -0,0 +1,19 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodule-header -fdump-lang-module-vops" }
+// { dg-module-cmi {} }
+
+#ifndef MACRO_3a_H
+#define MACRO_3a_H
+
+#undef nothing
+#define bob x
+#undef bob
+#define foo 1
+#define bar 2
+
+#endif
+
+// { dg-final { scan-lang-dump {Writing macro #define foo at} module } }
+// { dg-final { scan-lang-dump {Writing macro #define bar at} module } }
+// { dg-final { scan-lang-dump-not {Writing macro #define bob at} module } }
+// { dg-final { scan-lang-dump-not {Writing macro #undef nothing at} module } }
diff --git a/gcc/testsuite/g++.dg/modules/macro-3_b.H b/gcc/testsuite/g++.dg/modules/macro-3_b.H
new file mode 100644
index 0000000..2af92ac
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-3_b.H
@@ -0,0 +1,24 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodule-header -fdump-lang-module-vops" }
+// { dg-module-cmi {} }
+
+import "macro-3_a.H";
+
+// Not the controlling macro, because of above tokens
+#ifndef MACRO_3b_H
+#define MACRO_3b_H
+
+#define bob 1
+#undef foo
+#undef bar
+#define bar 3
+
+#endif
+
+// { dg-final { scan-lang-dump {Read new macro #define foo at} module } }
+// { dg-final { scan-lang-dump {Read new macro #define bar at} module } }
+// { dg-final { scan-lang-dump-not {Read [^ ]* macro #define bob at} module } }
+
+// { dg-final { scan-lang-dump {Writing macro #define bob at} module } }
+// { dg-final { scan-lang-dump {Writing macro #undef & #define bar at} module } }
+// { dg-final { scan-lang-dump {Writing macro #undef foo at} module } }
diff --git a/gcc/testsuite/g++.dg/modules/macro-3_c.C b/gcc/testsuite/g++.dg/modules/macro-3_c.C
new file mode 100644
index 0000000..f079580
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-3_c.C
@@ -0,0 +1,24 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-vops" }
+
+import "macro-3_b.H";
+import "macro-3_a.H";
+
+int main ()
+{
+#ifdef foo
+ return 1;
+#endif
+ if (bar != 3)
+ return 2;
+#define foo 2
+ if (foo != 2)
+ return 3;
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Read new macro #define foo at} module } }
+// { dg-final { scan-lang-dump {Read new macro #define bar at} module } }
+
+// { dg-final { scan-lang-dump {Read add macro #undef foo} module } }
+// { dg-final { scan-lang-dump {Read new macro #define bob} module } }
+// { dg-final { scan-lang-dump {Read add macro #undef & #define bar} module } }
diff --git a/gcc/testsuite/g++.dg/modules/macro-4_a.H b/gcc/testsuite/g++.dg/modules/macro-4_a.H
new file mode 100644
index 0000000..c04854e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-4_a.H
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodule-header -Winvalid-imported-macros" }
+// { dg-module-cmi {} }
+
+#ifndef MACRO_4_a
+#define MACRO_4_a
+
+#define ONE 1
+#define TWO 2
+#define THREE 3
+#define FOUR 4
+#define FIVE 5
+
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/macro-4_b.H b/gcc/testsuite/g++.dg/modules/macro-4_b.H
new file mode 100644
index 0000000..0403938
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-4_b.H
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodule-header -Winvalid-imported-macros" }
+// { dg-module-cmi {} }
+
+#ifndef MACRO_4_b
+#define MACRO_4_b
+
+#define ONE 1
+#define TWO 2a
+#undef THREE // no effect
+#define THREE 3b
+
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/macro-4_c.H b/gcc/testsuite/g++.dg/modules/macro-4_c.H
new file mode 100644
index 0000000..ec2bed9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-4_c.H
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodule-header -Winvalid-imported-macros" }
+// { dg-module-cmi {} }
+
+#ifndef MACRO_4_c
+#define MACRO_4_c
+
+#undef FIVE // no effect
+import "macro-4_a.H";
+int a;
+#undef THREE
+#undef FOUR
+#define FOUR 4c
+
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/macro-4_d.C b/gcc/testsuite/g++.dg/modules/macro-4_d.C
new file mode 100644
index 0000000..bff9494
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-4_d.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts -Winvalid-imported-macros" }
+
+import "macro-4_b.H";
+import "macro-4_a.H";
+
+// { dg-regexp {[^\n]*macro-4_d.C: warning: inconsistent imported macro definition 'TWO' \[-Winvalid-imported-macros\]\nIn module [^\n]*macro-4_b.H, imported at [^\n]*macro-4_d.C:[0-9]*:\n[^\n]*macro-4_b.H:[0-9]*: note: .#define TWO 2a.\nIn module [^\n]*macro-4_a.H, imported at [^\n]*macro-4_d.C:[0-9]*:\n[^\n]*macro-4_a.H:[0-9]*: note: .#define TWO 2.\n} }
+
+// { dg-regexp {[^\n]*macro-4_d.C: warning: inconsistent imported macro definition 'THREE' \[-Winvalid-imported-macros\]\nIn module [^\n]*macro-4_b.H, imported at [^\n]*macro-4_d.C:[0-9]*:\n[^\n]*macro-4_b.H:[0-9]*: note: .#define THREE 3b.\nIn module [^\n]*macro-4_a.H, imported at [^\n]*macro-4_d.C:[0-9]*:\n[^\n]*macro-4_a.H:[0-9]*: note: .#define THREE 3.\n} }
diff --git a/gcc/testsuite/g++.dg/modules/macro-4_e.C b/gcc/testsuite/g++.dg/modules/macro-4_e.C
new file mode 100644
index 0000000..38fa6c7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-4_e.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts -Winvalid-imported-macros" }
+
+import "macro-4_b.H";
+import "macro-4_a.H";
+import "macro-4_c.H";
+
+int stop;
+
+#ifndef FIVE
+#error bah!
+#endif
+
+// { dg-regexp {[^\n]*macro-4_e.C: warning: inconsistent imported macro definition 'TWO' \[-Winvalid-imported-macros\]\nIn module [^\n]*macro-4_b.H, imported at [^\n]*macro-4_e.C:[0-9]*:\n[^\n]*macro-4_b.H:[0-9]*: note: .#define TWO 2a.\nIn module [^\n]*macro-4_a.H, imported at [^\n]*macro-4_e.C:[0-9]*:\n[^\n]*macro-4_a.H:[0-9]*: note: .#define TWO 2.\n} }
diff --git a/gcc/testsuite/g++.dg/modules/macro-4_f.C b/gcc/testsuite/g++.dg/modules/macro-4_f.C
new file mode 100644
index 0000000..1279de2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-4_f.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module bob;
+// { dg-module-cmi bob }
+export import "macro-4_b.H";
diff --git a/gcc/testsuite/g++.dg/modules/macro-4_g.C b/gcc/testsuite/g++.dg/modules/macro-4_g.C
new file mode 100644
index 0000000..f3ff0e4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-4_g.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -Winvalid-imported-macros" }
+
+import bob;
+import "macro-4_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/macro-5_a.H b/gcc/testsuite/g++.dg/modules/macro-5_a.H
new file mode 100644
index 0000000..d0913d1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-5_a.H
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodule-header -Dfoo=bar -Dbaz=1 -fdump-lang-module-vops" }
+// command line macros are not exported
+// { dg-module-cmi {} }
+
+// { dg-final { scan-lang-dump-not {Writing macro #define [_a-zA-Z0-9]* at [0-9]*} module } }
diff --git a/gcc/testsuite/g++.dg/modules/macro-5_b.H b/gcc/testsuite/g++.dg/modules/macro-5_b.H
new file mode 100644
index 0000000..656d511
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-5_b.H
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodule-header -Dfoo=bar -Dbaz=2 -fdump-lang-module-vops" }
+// { dg-module-cmi {} }
+
+#undef baz // not exported
+#define baz 3 // exported
+
+
+// { dg-final { scan-lang-dump {Writing macro #define baz at [0-9]*} module } }
diff --git a/gcc/testsuite/g++.dg/modules/macro-5_c.C b/gcc/testsuite/g++.dg/modules/macro-5_c.C
new file mode 100644
index 0000000..17f6fe2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-5_c.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts -Winvalid-imported-macros" }
+
+import "macro-5_a.H";
+import "macro-5_b.H";
+
+#if baz != 3
+#error
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/macro-6_a.H b/gcc/testsuite/g++.dg/modules/macro-6_a.H
new file mode 100644
index 0000000..4947e2e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-6_a.H
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+#ifndef MACRO_6_H
+#define MACRO_6_H
+#define foo bar baz
+
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/macro-6_b.C b/gcc/testsuite/g++.dg/modules/macro-6_b.C
new file mode 100644
index 0000000..cbc3b2a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-6_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+
+export module macro;
+// { dg-module-cmi {macro} }
+import "macro-6_a.H";
+
+#ifndef foo
+#error bad
+#endif
+
+// { dg-final { scan-lang-dump {Reading macro table [^\n]*macro-6_a.H} module } }
diff --git a/gcc/testsuite/g++.dg/modules/macro-6_c.C b/gcc/testsuite/g++.dg/modules/macro-6_c.C
new file mode 100644
index 0000000..a9a6f4f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-6_c.C
@@ -0,0 +1,11 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+// Macro tables are only loaded when transitively reachable from top
+// level
+
+import macro;
+
+#ifdef foo
+#error bad
+#endif
+
+// { dg-final { scan-lang-dump-not {>Reading macro table "macro-6_a.H"} module } }
diff --git a/gcc/testsuite/g++.dg/modules/macro-7_a.C b/gcc/testsuite/g++.dg/modules/macro-7_a.C
new file mode 100644
index 0000000..f336f00
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-7_a.C
@@ -0,0 +1,13 @@
+// { dg-additional-options -fmodules-ts }
+export module foo;
+// { dg-module-cmi foo }
+
+#define MACRO(X) X
+
+export template<int I> int Factory ()
+{
+ // this macro expansion location ends up in the instantiation
+ // emitted by an importer
+ return MACRO(I);
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/macro-7_b.C b/gcc/testsuite/g++.dg/modules/macro-7_b.C
new file mode 100644
index 0000000..025f5eb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-7_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options -fmodules-ts }
+export module bar;
+// { dg-module-cmi bar }
+
+import foo;
+
+export inline int One ()
+{
+ return Factory<1> ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/macro-7_c.C b/gcc/testsuite/g++.dg/modules/macro-7_c.C
new file mode 100644
index 0000000..902f1a8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/macro-7_c.C
@@ -0,0 +1,7 @@
+// { dg-additional-options -fmodules-ts }
+import bar;
+
+int main ()
+{
+ return !(One () == 1);
+}
diff --git a/gcc/testsuite/g++.dg/modules/map-1.map b/gcc/testsuite/g++.dg/modules/map-1.map
new file mode 100644
index 0000000..58963bd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/map-1.map
@@ -0,0 +1,2 @@
+$root .
+frob map-1_a.nms
diff --git a/gcc/testsuite/g++.dg/modules/map-1_a.C b/gcc/testsuite/g++.dg/modules/map-1_a.C
new file mode 100644
index 0000000..f714672
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/map-1_a.C
@@ -0,0 +1,13 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts -fmodule-mapper=[srcdir]/map-1.map" }
+
+// Ick! no cross-host testing for you!
+// { dg-additional-files map-1.map }
+
+export module frob;
+// { dg-module-cmi "=map-1_a.nms" }
+
+export int frob (int i)
+{
+ return -i;
+}
diff --git a/gcc/testsuite/g++.dg/modules/map-1_b.C b/gcc/testsuite/g++.dg/modules/map-1_b.C
new file mode 100644
index 0000000..0e306d8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/map-1_b.C
@@ -0,0 +1,13 @@
+// Ick!
+// { dg-additional-options "-fmodules-ts -fmodule-mapper=[srcdir]/map-1_b.map?MAP" }
+// { dg-additional-files map-1.map }
+
+import frob;
+
+int main ()
+{
+ if (frob (-2) != 2)
+ return 1;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/map-1_b.map b/gcc/testsuite/g++.dg/modules/map-1_b.map
new file mode 100644
index 0000000..f125dc8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/map-1_b.map
@@ -0,0 +1,3 @@
+MAP $root .
+MAP frob map-1_a.nms
+I can't see you
diff --git a/gcc/testsuite/g++.dg/modules/map-2.C b/gcc/testsuite/g++.dg/modules/map-2.C
new file mode 100644
index 0000000..dceb183
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/map-2.C
@@ -0,0 +1,11 @@
+// { dg-additional-options "-fmodules-ts -fmodule-mapper=[srcdir]/map-2.map" }
+
+
+// Ick! no cross-host testing for you!
+// { dg-additional-files map-2.map }
+
+export module foo;
+// { dg-error "Interface: no such module" "" { target *-*-* } .-1 }
+// { dg-error "failed reading mapper" "" { target *-*-* } 0 }
+
+// { dg-prune-output "not writing module" }
diff --git a/gcc/testsuite/g++.dg/modules/map-2.map b/gcc/testsuite/g++.dg/modules/map-2.map
new file mode 100644
index 0000000..43aecde
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/map-2.map
@@ -0,0 +1 @@
+$bad .
diff --git a/gcc/testsuite/g++.dg/modules/member-def-1_a.C b/gcc/testsuite/g++.dg/modules/member-def-1_a.C
new file mode 100644
index 0000000..f7a508c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/member-def-1_a.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo:part1;
+// { dg-module-cmi {foo:part1} }
+struct frob
+{
+ struct inner;
+};
diff --git a/gcc/testsuite/g++.dg/modules/member-def-1_b.C b/gcc/testsuite/g++.dg/modules/member-def-1_b.C
new file mode 100644
index 0000000..fbe1ac4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/member-def-1_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks" }
+
+export module foo:part2;
+// { dg-module-cmi {foo:part2} }
+
+import :part1;
+
+struct frob::inner
+{
+ int i;
+};
+
+// { dg-final { scan-lang-dump { Cluster members:\n \[0\]=decl definition '::frob@foo:part1:1::inner'\n \[1\]=decl declaration '::frob@foo:part1:1::inner::inner'\n} module } }
+// { dg-final { scan-lang-dump {Member '::frob@foo:part1:1::inner' entity:0 keyed to foo:part1\[0\] '::frob@foo:part1:1'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/member-def-1_c.C b/gcc/testsuite/g++.dg/modules/member-def-1_c.C
new file mode 100644
index 0000000..c7c3f6e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/member-def-1_c.C
@@ -0,0 +1,16 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks-alias" }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export import :part2;
+export import :part1;
+
+export auto foo ()
+{
+ return frob::inner ();
+}
+
+// { dg-final { scan-lang-dump {Reading 1 pending members keyed to foo:part1\[0\] '::frob@foo:part1:1'} module } }
+// { dg-final { scan-lang-dump { Cluster members:\n \[0\]=decl definition '::frob@foo:part1:1'\n \[1\]=decl definition '::frob@foo:part1:1::inner@foo:part1:1'\n \[2\]=decl declaration '::frob@foo:part1:1::inner@foo:part1:1::__dt '\n( \[.\]=decl declaration '::frob@foo:part1:1::inner@foo:part1:1::__ct '\n)* \[6\]=decl declaration '::frob@foo:part1:1::inner@foo:part1:1::inner@foo:part2:2'\n \[7\]=decl declaration '::frob@foo:part1:1::frob@foo:part1:1'\n \[8\]=decl declaration '::frob@foo:part1:1::__as_base @foo:part1:1'\n \[9\]=binding '::frob'\n} module } }
+// { dg-final { scan-lang-dump {Pendings 0} module } }
diff --git a/gcc/testsuite/g++.dg/modules/member-def-1_d.C b/gcc/testsuite/g++.dg/modules/member-def-1_d.C
new file mode 100644
index 0000000..5609d47
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/member-def-1_d.C
@@ -0,0 +1,11 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+
+module foo;
+
+void f ()
+{
+ frob::inner x;
+ x.i = 17;
+}
+
+// { dg-final { scan-lang-dump {Loaded 1 clusters} module } }
diff --git a/gcc/testsuite/g++.dg/modules/member-def-2_a.C b/gcc/testsuite/g++.dg/modules/member-def-2_a.C
new file mode 100644
index 0000000..b4904da
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/member-def-2_a.C
@@ -0,0 +1,10 @@
+// { dg-module-do link }
+// { dg-additional-options -fmodules-ts }
+
+export module foo:part1;
+// { dg-module-cmi {foo:part1} }
+
+export struct frob
+{
+ void member ();
+};
diff --git a/gcc/testsuite/g++.dg/modules/member-def-2_b.C b/gcc/testsuite/g++.dg/modules/member-def-2_b.C
new file mode 100644
index 0000000..dedcbe7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/member-def-2_b.C
@@ -0,0 +1,16 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks" }
+
+export module foo:part2;
+// { dg-module-cmi {foo:part2} }
+
+import :part1;
+
+inline void frob::member ()
+{
+}
+
+// { dg-final { scan-lang-dump { Cluster members:\n \[0\]=decl definition '::frob@foo:part1:1::member'\n} module } }
+// { dg-final { scan-lang-dump {Pendings 1} module } }
+// { dg-final { scan-lang-dump {Bindings 0} module } }
+
+// { dg-final { scan-assembler-not {_ZN4frob6memberEv:} } }
diff --git a/gcc/testsuite/g++.dg/modules/member-def-2_c.C b/gcc/testsuite/g++.dg/modules/member-def-2_c.C
new file mode 100644
index 0000000..f0a193f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/member-def-2_c.C
@@ -0,0 +1,15 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks-alias" }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export import :part2;
+export import :part1;
+
+
+// { dg-final { scan-lang-dump { Cluster members:\n \[0\]=decl definition '::frob@foo:part1:1'\n \[1\]=decl declaration '::frob@foo:part1:1::frob@foo:part1:1'\n \[2\]=decl definition '::frob@foo:part1:1::member@foo:part1:1'\n \[3\]=decl declaration '::frob@foo:part1:1::__as_base @foo:part1:1'\n \[4\]=binding '::frob'\n} module } }
+// { dg-final { scan-lang-dump {Bindings 1} module } }
+// { dg-final { scan-lang-dump {Pendings 0} module } }
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key .matched. function_decl:'::frob@foo:part1:1::member'} module } }
+
+// { dg-final { scan-assembler-not {_ZN4frob6memberEv:} } }
diff --git a/gcc/testsuite/g++.dg/modules/member-def-2_d.C b/gcc/testsuite/g++.dg/modules/member-def-2_d.C
new file mode 100644
index 0000000..c2b9c3e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/member-def-2_d.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+
+import foo;
+
+int main ()
+{
+ frob x;
+ x.member ();
+}
+
+// { dg-final { scan-lang-dump {Reading function definition '::frob@foo:1::member@foo:1'} module } }
+
+// { dg-final { scan-assembler {_ZN4frob6memberEv:} } }
diff --git a/gcc/testsuite/g++.dg/modules/memref-1_a.C b/gcc/testsuite/g++.dg/modules/memref-1_a.C
new file mode 100644
index 0000000..e780999
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/memref-1_a.C
@@ -0,0 +1,24 @@
+// { dg-additional-options -fmodules-ts }
+
+export module Foo;
+// { dg-module-cmi Foo }
+
+export class Bit
+{
+private:
+ unsigned _M_msb:1;
+};
+
+Bit Make () noexcept;
+
+export class Container
+{
+public:
+ void Frob ()
+ {
+ _M_rep = Make ();
+ }
+
+private:
+ Bit _M_rep;
+};
diff --git a/gcc/testsuite/g++.dg/modules/memref-1_b.C b/gcc/testsuite/g++.dg/modules/memref-1_b.C
new file mode 100644
index 0000000..82c52fa
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/memref-1_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+
+import Foo;
+
+void X ()
+{
+ Container c;
+ c.Frob ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/merge-10.h b/gcc/testsuite/g++.dg/modules/merge-10.h
new file mode 100644
index 0000000..9df9d2c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-10.h
@@ -0,0 +1,8 @@
+
+struct timex
+{
+ unsigned modes;
+ int :32;
+ int :32;
+};
+
diff --git a/gcc/testsuite/g++.dg/modules/merge-10_a.H b/gcc/testsuite/g++.dg/modules/merge-10_a.H
new file mode 100644
index 0000000..dc4be18
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-10_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "merge-10.h"
diff --git a/gcc/testsuite/g++.dg/modules/merge-10_b.C b/gcc/testsuite/g++.dg/modules/merge-10_b.C
new file mode 100644
index 0000000..9df07ee
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-10_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "merge-10.h"
+import "merge-10_a.H";
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/merge-11.h b/gcc/testsuite/g++.dg/modules/merge-11.h
new file mode 100644
index 0000000..87342e1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-11.h
@@ -0,0 +1,15 @@
+
+
+
+template<typename _From, bool>
+struct __is_nt_convertible_helper;
+
+template<typename _From>
+class __is_nt_convertible_helper<_From, false>
+{
+ template<typename> static int __test (int);
+ template<typename> static void __test(...);
+
+public:
+ using type = decltype(__test<_From>(0));
+};
diff --git a/gcc/testsuite/g++.dg/modules/merge-11_a.H b/gcc/testsuite/g++.dg/modules/merge-11_a.H
new file mode 100644
index 0000000..6de063d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-11_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "merge-11.h"
diff --git a/gcc/testsuite/g++.dg/modules/merge-11_b.C b/gcc/testsuite/g++.dg/modules/merge-11_b.C
new file mode 100644
index 0000000..2c30e34
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-11_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "merge-11.h"
+import "merge-11_a.H";
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
+// { dg-final { scan-lang-dump-not {merge key \(unique\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/merge-12.h b/gcc/testsuite/g++.dg/modules/merge-12.h
new file mode 100644
index 0000000..96b2ba3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-12.h
@@ -0,0 +1,23 @@
+
+template<typename _Functor, typename _ArgTypes>
+struct invoke_result;
+
+template<typename _Fn, typename _ArgTypes>
+struct is_invocable;
+
+template<typename _Fn, typename... _Args>
+concept invocable = is_invocable<_Fn, _Args...>::value;
+
+template<typename _Fn, typename _Is>
+requires invocable<_Fn, _Is>
+ using indirect_result_t = typename invoke_result<_Fn, _Is>::type;
+
+template<typename _Tp>
+struct remove_cv;
+
+template<typename _Iter, typename _Proj>
+struct projected
+{
+ using value_type = remove_cv<indirect_result_t<_Proj&, _Iter>>;
+};
+
diff --git a/gcc/testsuite/g++.dg/modules/merge-12_a.H b/gcc/testsuite/g++.dg/modules/merge-12_a.H
new file mode 100644
index 0000000..4ee061f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-12_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodule-header -fconcepts" }
+// { dg-module-cmi {} }
+
+#include "merge-12.h"
diff --git a/gcc/testsuite/g++.dg/modules/merge-12_b.C b/gcc/testsuite/g++.dg/modules/merge-12_b.C
new file mode 100644
index 0000000..4bafbdd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-12_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -fconcepts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "merge-12.h"
+import "merge-12_a.H";
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
+// { dg-final { scan-lang-dump-not {merge key \(unique\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/merge-13.h b/gcc/testsuite/g++.dg/modules/merge-13.h
new file mode 100644
index 0000000..ad282a0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-13.h
@@ -0,0 +1,10 @@
+template<typename T> class Base;
+
+template<typename U> class Derived : Base<U>
+{
+ using Base_ = Base<U>;
+ using typename Base_::base_member;
+
+public:
+ base_member Func ();
+};
diff --git a/gcc/testsuite/g++.dg/modules/merge-13_a.H b/gcc/testsuite/g++.dg/modules/merge-13_a.H
new file mode 100644
index 0000000..ecf0c31
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-13_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodule-header -fconcepts" }
+// { dg-module-cmi {} }
+
+#include "merge-13.h"
diff --git a/gcc/testsuite/g++.dg/modules/merge-13_b.C b/gcc/testsuite/g++.dg/modules/merge-13_b.C
new file mode 100644
index 0000000..b62101f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-13_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -fconcepts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "merge-13.h"
+import "merge-13_a.H";
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
+// { dg-final { scan-lang-dump-not {merge key \(unique\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/merge-14.h b/gcc/testsuite/g++.dg/modules/merge-14.h
new file mode 100644
index 0000000..0b867b6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-14.h
@@ -0,0 +1,7 @@
+template<typename T>
+struct TPL
+{
+ T val = 0;
+};
+
+inline TPL<int> x;
diff --git a/gcc/testsuite/g++.dg/modules/merge-14_a.H b/gcc/testsuite/g++.dg/modules/merge-14_a.H
new file mode 100644
index 0000000..c197ec8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-14_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "merge-14.h"
diff --git a/gcc/testsuite/g++.dg/modules/merge-14_b.C b/gcc/testsuite/g++.dg/modules/merge-14_b.C
new file mode 100644
index 0000000..4d92b08
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-14_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "merge-14.h"
+import "merge-14_a.H";
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
+// { dg-final { scan-lang-dump-not {merge key \(unique\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/merge-15.h b/gcc/testsuite/g++.dg/modules/merge-15.h
new file mode 100644
index 0000000..ccf3b84
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-15.h
@@ -0,0 +1,5 @@
+struct optional
+{
+ int &get () &;
+ int &&get () &&;
+};
diff --git a/gcc/testsuite/g++.dg/modules/merge-15_a.H b/gcc/testsuite/g++.dg/modules/merge-15_a.H
new file mode 100644
index 0000000..afef95d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-15_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "merge-15.h"
diff --git a/gcc/testsuite/g++.dg/modules/merge-15_b.C b/gcc/testsuite/g++.dg/modules/merge-15_b.C
new file mode 100644
index 0000000..07378d6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-15_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "merge-15.h"
+import "merge-15_a.H";
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
+// { dg-final { scan-lang-dump-not {merge key \(unique\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/merge-1_a.C b/gcc/testsuite/g++.dg/modules/merge-1_a.C
new file mode 100644
index 0000000..966fd4bc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-1_a.C
@@ -0,0 +1,13 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+template<typename _Tp, _Tp __v>
+struct integral_constant
+{
+};
+
+typedef integral_constant<bool, true> true_type;
+
+void __throw_with_nested_impl (true_type);
diff --git a/gcc/testsuite/g++.dg/modules/merge-1_b.C b/gcc/testsuite/g++.dg/modules/merge-1_b.C
new file mode 100644
index 0000000..c7f533f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-1_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+module foo;
+
+void frob ()
+{
+ __throw_with_nested_impl (integral_constant<bool, true> ());
+}
diff --git a/gcc/testsuite/g++.dg/modules/merge-2_a.H b/gcc/testsuite/g++.dg/modules/merge-2_a.H
new file mode 100644
index 0000000..ac6d06a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-2_a.H
@@ -0,0 +1,29 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+template<typename _CharT> class istreambuf_iterator;
+
+void move(char __t);
+void move(istreambuf_iterator<char> &__u);
+
+template<typename _Tp> struct allocator {};
+
+template<typename _Alloc> struct __alloc_traits
+{
+ static void _S_on_swap(_Alloc& __b)
+ {
+ move (__b);
+ }
+
+ typedef allocator<char> other;
+};
+
+template<typename _CharT> class basic_string
+{
+ typedef __alloc_traits<char>::other _Char_alloc_type;
+};
+
+template<typename _CharT> class istreambuf_iterator
+{
+ void frob (const basic_string<char>& __s);
+};
diff --git a/gcc/testsuite/g++.dg/modules/merge-2_b.C b/gcc/testsuite/g++.dg/modules/merge-2_b.C
new file mode 100644
index 0000000..21bbd04
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-2_b.C
@@ -0,0 +1,2 @@
+// { dg-additional-options {-fmodules-ts -fno-module-lazy} }
+import "merge-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/merge-3_a.H b/gcc/testsuite/g++.dg/modules/merge-3_a.H
new file mode 100644
index 0000000..80dfd9c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-3_a.H
@@ -0,0 +1,7 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module_cmi {} }
+
+struct bob
+{
+ int i;
+};
diff --git a/gcc/testsuite/g++.dg/modules/merge-3_b.C b/gcc/testsuite/g++.dg/modules/merge-3_b.C
new file mode 100644
index 0000000..1e863f8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-3_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options -fmodules-ts }
+
+struct bob;
+import "merge-3_a.H";
+
+bob b = {1};
+
+void frob ()
+{
+ b.i = 7;
+}
diff --git a/gcc/testsuite/g++.dg/modules/merge-4.h b/gcc/testsuite/g++.dg/modules/merge-4.h
new file mode 100644
index 0000000..842fedc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-4.h
@@ -0,0 +1,7 @@
+template<typename T> struct Bob
+{
+ struct M
+ {
+ int m;
+ };
+};
diff --git a/gcc/testsuite/g++.dg/modules/merge-4_a.H b/gcc/testsuite/g++.dg/modules/merge-4_a.H
new file mode 100644
index 0000000..78b0ec7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-4_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "merge-4.h"
diff --git a/gcc/testsuite/g++.dg/modules/merge-4_b.C b/gcc/testsuite/g++.dg/modules/merge-4_b.C
new file mode 100644
index 0000000..89b6961
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-4_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "merge-4.h"
+import "merge-4_a.H";
+
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(matched\) template_decl:'::template Bob'} module } }
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(matched\) template_decl:'::template Bob<T>::template M'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/merge-5.h b/gcc/testsuite/g++.dg/modules/merge-5.h
new file mode 100644
index 0000000..5db1b0a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-5.h
@@ -0,0 +1,8 @@
+
+template<bool> struct __truth_type;
+
+template<typename T> struct __traitor
+{
+ enum X { __value = true };
+ typedef typename __truth_type<__value>::__type __type;
+};
diff --git a/gcc/testsuite/g++.dg/modules/merge-5_a.H b/gcc/testsuite/g++.dg/modules/merge-5_a.H
new file mode 100644
index 0000000..e3d8c69
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-5_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "merge-5.h"
diff --git a/gcc/testsuite/g++.dg/modules/merge-5_b.C b/gcc/testsuite/g++.dg/modules/merge-5_b.C
new file mode 100644
index 0000000..58c2a34
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-5_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "merge-5.h"
+import "merge-5_a.H";
+
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(matched\) const_decl:'::template __traitor<T>::template X<T>::__value'} module } }
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
+// { dg-final { scan-lang-dump-not {merge key \(unique\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/merge-6.h b/gcc/testsuite/g++.dg/modules/merge-6.h
new file mode 100644
index 0000000..6a1d654
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-6.h
@@ -0,0 +1,10 @@
+
+template<bool>
+struct __truth_type;
+
+template<typename T>
+struct __traitor
+{
+ enum { __value = true }; // Oh, an anonymous templatey thing!
+ typedef typename __truth_type<__value>::__type __type;
+};
diff --git a/gcc/testsuite/g++.dg/modules/merge-6_a.H b/gcc/testsuite/g++.dg/modules/merge-6_a.H
new file mode 100644
index 0000000..4e0b81c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-6_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "merge-6.h"
diff --git a/gcc/testsuite/g++.dg/modules/merge-6_b.C b/gcc/testsuite/g++.dg/modules/merge-6_b.C
new file mode 100644
index 0000000..11fe631
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-6_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "merge-6.h"
+import "merge-6_a.H";
+
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s field merge key \(matched\) template_decl:'::template __traitor<T>::template #null#'} module } }
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
+// { dg-final { scan-lang-dump-not {merge key \(unique\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/merge-7.h b/gcc/testsuite/g++.dg/modules/merge-7.h
new file mode 100644
index 0000000..6350e74
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-7.h
@@ -0,0 +1,5 @@
+template<typename _Tp2, typename _Up2>
+struct __promote_2
+{
+ typedef __typeof__(_Tp2() + _Up2()) __type;
+};
diff --git a/gcc/testsuite/g++.dg/modules/merge-7_a.H b/gcc/testsuite/g++.dg/modules/merge-7_a.H
new file mode 100644
index 0000000..3c32b33
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-7_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "merge-7.h"
diff --git a/gcc/testsuite/g++.dg/modules/merge-7_b.C b/gcc/testsuite/g++.dg/modules/merge-7_b.C
new file mode 100644
index 0000000..da9632d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-7_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "merge-7.h"
+import "merge-7_a.H";
+
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(matched\) template_decl:'::template __promote_2<_Tp2,_Up2>::template __type'} module } }
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
+// { dg-final { scan-lang-dump-not {merge key \(unique\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/merge-8.h b/gcc/testsuite/g++.dg/modules/merge-8.h
new file mode 100644
index 0000000..d253902
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-8.h
@@ -0,0 +1,17 @@
+
+struct __do_is_destructible_impl
+{
+ template<typename _Tp, typename = decltype(_Tp().~_Tp())>
+ static bool __test(int);
+
+ template<typename>
+ static float __test(...);
+};
+
+template<typename _Tp>
+struct __is_destructible_impl
+ : public __do_is_destructible_impl
+{
+ // Requires BINFO merging
+ typedef decltype(__test<_Tp>(0)) type;
+};
diff --git a/gcc/testsuite/g++.dg/modules/merge-8_a.H b/gcc/testsuite/g++.dg/modules/merge-8_a.H
new file mode 100644
index 0000000..d2add6b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-8_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "merge-8.h"
diff --git a/gcc/testsuite/g++.dg/modules/merge-8_b.C b/gcc/testsuite/g++.dg/modules/merge-8_b.C
new file mode 100644
index 0000000..c489e30
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-8_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "merge-8.h"
+import "merge-8_a.H";
+
+// { dg-final { scan-lang-dump {Deduping binfo '::__do_is_destructible_impl'\[0\]} module } }
+// { dg-final { scan-lang-dump {Deduping binfo '::template __is_destructible_impl<_Tp>'\[0\]} module } }
+// { dg-final { scan-lang-dump {Deduping binfo '::template __is_destructible_impl<_Tp>'\[1\]} module } }
diff --git a/gcc/testsuite/g++.dg/modules/merge-9.h b/gcc/testsuite/g++.dg/modules/merge-9.h
new file mode 100644
index 0000000..1944779
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-9.h
@@ -0,0 +1,9 @@
+using size_t = __SIZE_TYPE__;
+
+namespace std
+{
+// This is a builtin, but should not be a global tree
+ enum class align_val_t: size_t {};
+ // as is this
+ class type_info;
+}
diff --git a/gcc/testsuite/g++.dg/modules/merge-9_a.H b/gcc/testsuite/g++.dg/modules/merge-9_a.H
new file mode 100644
index 0000000..69f32cb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-9_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "merge-9.h"
diff --git a/gcc/testsuite/g++.dg/modules/merge-9_b.C b/gcc/testsuite/g++.dg/modules/merge-9_b.C
new file mode 100644
index 0000000..0a92cf3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/merge-9_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "merge-9.h"
+import "merge-9_a.H";
+
+// { dg-final { scan-lang-dump {Read:-[10-9]*'s named merge key \(matched\) type_decl:'::std::align_val_t'} module } }
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
+// { dg-final { scan-lang-dump-not {merge key \(unique\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/mod-decl-0-2a.C b/gcc/testsuite/g++.dg/modules/mod-decl-0-2a.C
new file mode 100644
index 0000000..75406f8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-decl-0-2a.C
@@ -0,0 +1,6 @@
+// { dg-options "-fno-modules -std=c++2a" }
+
+export // { dg-message "enabled with" }
+module nope; // { dg-error "not name a type" }
+// { dg-message "only available with .-fmodules." "" { target *-*-* } .-1 }
+// { dg-module-cmi "!nope" }
diff --git a/gcc/testsuite/g++.dg/modules/mod-decl-0.C b/gcc/testsuite/g++.dg/modules/mod-decl-0.C
new file mode 100644
index 0000000..fcafc0b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-decl-0.C
@@ -0,0 +1,6 @@
+// { dg-options "-fno-modules -std=c++17" }
+
+export // { dg-message "ignored" }
+module nope; // { dg-error "not name a type" }
+// { dg-message "only available with .-fmodules." "" { target *-*-* } .-1 }
+// { dg-module-cmi "!nope" }
diff --git a/gcc/testsuite/g++.dg/modules/mod-decl-1.C b/gcc/testsuite/g++.dg/modules/mod-decl-1.C
new file mode 100644
index 0000000..23d3448
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-decl-1.C
@@ -0,0 +1,29 @@
+// { dg-additional-options "-fmodules-ts" }
+module;
+
+export module frist;
+// { dg-module-cmi "!frist" }
+
+import frist; // { dg-error {cannot import module.* in its own purview} }
+
+module foo.second; // { dg-error "only permitted as" }
+
+namespace Foo
+{
+module third; // { dg-error "only permitted as" }
+}
+
+struct Baz
+{
+ module forth; // { dg-error "expected" }
+};
+
+void Bink ()
+{
+ module fifth; // { dg-error "expected" }
+}
+
+module a.; // { dg-error "only permitted as" }
+
+// { dg-prune-output "not writing module" }
+
diff --git a/gcc/testsuite/g++.dg/modules/mod-decl-2_a.C b/gcc/testsuite/g++.dg/modules/mod-decl-2_a.C
new file mode 100644
index 0000000..9b4a920
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-decl-2_a.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts" }
+export module bob;
+// { dg-module-cmi "bob" }
+export void Foo ();
+export
+{
+ void Bar ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/mod-decl-2_b.C b/gcc/testsuite/g++.dg/modules/mod-decl-2_b.C
new file mode 100644
index 0000000..a3ea9b5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-decl-2_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options "-fmodules-ts" }
+module bob;
+
+import bob; // { dg-error "cannot import module.* in its own purview" }
+
+// module linkage
+void Baz ()
+{
+ Foo ();
+ Bar ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/mod-decl-2_c.C b/gcc/testsuite/g++.dg/modules/mod-decl-2_c.C
new file mode 100644
index 0000000..4808ad2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-decl-2_c.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts" }
+import bob;
+
+void Baz ()
+{
+ Foo ();
+ Bar ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/mod-decl-3.C b/gcc/testsuite/g++.dg/modules/mod-decl-3.C
new file mode 100644
index 0000000..16fa5a8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-decl-3.C
@@ -0,0 +1,26 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+module;
+# 4 "mod-decl-3.C" 1
+export void Foo (); // { dg-error "after a module interface" }
+
+# 7 "" 2
+export module bob;
+// { dg-module-cmi "!bob" }
+
+export
+export // { dg-error "occur once" }
+void Baz ();
+
+export
+{
+ export // { dg-error "occur once" }
+ void Bar ();
+}
+
+namespace Bink
+{
+ import // { dg-error "does not name" }
+ ben;
+}
+
+// { dg-prune-output "not writing module" }
diff --git a/gcc/testsuite/g++.dg/modules/mod-decl-5_a.C b/gcc/testsuite/g++.dg/modules/mod-decl-5_a.C
new file mode 100644
index 0000000..c39807d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-decl-5_a.C
@@ -0,0 +1,3 @@
+// { dg-additional-options "-fmodules-ts" }
+export module thing.baz;
+// { dg-module-cmi "thing.baz" }
diff --git a/gcc/testsuite/g++.dg/modules/mod-decl-5_b.C b/gcc/testsuite/g++.dg/modules/mod-decl-5_b.C
new file mode 100644
index 0000000..b3eea76
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-decl-5_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+module;
+# 4 "gmf" 1
+import thing.baz;
+
+export int foo (); // { dg-error "after a module interface" }
+# 8 "" 2
+export module thing.baz; // { dg-error "module already imported" }
+
+import thing.baz;
+
diff --git a/gcc/testsuite/g++.dg/modules/mod-exp-1_a.C b/gcc/testsuite/g++.dg/modules/mod-exp-1_a.C
new file mode 100644
index 0000000..800752d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-exp-1_a.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts" }
+export module Baz;
+// { dg-module-cmi "Baz" }
+
+void Quux (void);
+
+export void Bar (void);
+
+void Foo (void);
diff --git a/gcc/testsuite/g++.dg/modules/mod-exp-1_b.C b/gcc/testsuite/g++.dg/modules/mod-exp-1_b.C
new file mode 100644
index 0000000..efea205
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-exp-1_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+module;
+# 4 "gmf" 1
+void Frob (void);
+# 6 "" 2
+
+module Baz;
diff --git a/gcc/testsuite/g++.dg/modules/mod-imp-1_a.C b/gcc/testsuite/g++.dg/modules/mod-imp-1_a.C
new file mode 100644
index 0000000..cf9e1d7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-imp-1_a.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+
+export module Foo;
+// { dg-module-cmi "Foo" }
+
+// { dg-final { scan-lang-dump "Starting module Foo" "module" } }
diff --git a/gcc/testsuite/g++.dg/modules/mod-imp-1_b.C b/gcc/testsuite/g++.dg/modules/mod-imp-1_b.C
new file mode 100644
index 0000000..0dc4bdb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-imp-1_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+
+module Foo;
+// { dg-final { scan-lang-dump "Starting module Foo" "module" } }
diff --git a/gcc/testsuite/g++.dg/modules/mod-imp-1_c.C b/gcc/testsuite/g++.dg/modules/mod-imp-1_c.C
new file mode 100644
index 0000000..e32aaaf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-imp-1_c.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+
+export module Baz;
+// { dg-module-cmi "Baz" }
+
+import Foo;
+
+// { dg-final { scan-lang-dump "Starting module Foo" "module" } }
+// { dg-final { scan-lang-dump "Starting module Baz" "module" } }
+// { dg-final { scan-lang-dump "Writing import:1->1 Foo" "module" } }
diff --git a/gcc/testsuite/g++.dg/modules/mod-imp-1_d.C b/gcc/testsuite/g++.dg/modules/mod-imp-1_d.C
new file mode 100644
index 0000000..ca6f649
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-imp-1_d.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+
+module Baz;
+
+// { dg-final { scan-lang-dump "Starting module Baz" "module" } }
+// { dg-final { scan-lang-dump "Found import:1 Foo->1" "module" } }
+// { dg-final { scan-lang-dump "Starting module Foo" "module" } }
diff --git a/gcc/testsuite/g++.dg/modules/mod-impl-1_a.C b/gcc/testsuite/g++.dg/modules/mod-impl-1_a.C
new file mode 100644
index 0000000..9f9dfd4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-impl-1_a.C
@@ -0,0 +1,12 @@
+// { dg-module-do "run" }
+// { dg-additional-options "-fmodules-ts" }
+
+export module baz;
+// { dg-module-cmi "baz" }
+
+export int Square (int);
+
+float Square (int, int);
+export int Square (int, int, int);
+
+int Prod (int, int);
diff --git a/gcc/testsuite/g++.dg/modules/mod-impl-1_b.C b/gcc/testsuite/g++.dg/modules/mod-impl-1_b.C
new file mode 100644
index 0000000..c1f9a5c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-impl-1_b.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts" }
+module baz;
+
+int Square (int a)
+{
+ return Prod (a, a);
+}
+
+float Square (int a, int b)
+{
+ return a * b * 1.5f;
+}
diff --git a/gcc/testsuite/g++.dg/modules/mod-impl-1_c.C b/gcc/testsuite/g++.dg/modules/mod-impl-1_c.C
new file mode 100644
index 0000000..c50aade
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-impl-1_c.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts" }
+module baz;
+
+int Prod (int a, int b)
+{
+ return a * b;
+}
+
+int Square (int a, int b, int c)
+{
+ return Prod (Square (a, b), c);
+}
diff --git a/gcc/testsuite/g++.dg/modules/mod-impl-1_d.C b/gcc/testsuite/g++.dg/modules/mod-impl-1_d.C
new file mode 100644
index 0000000..4f05a76
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-impl-1_d.C
@@ -0,0 +1,27 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import baz;
+
+int Prod (int a, int b)
+{
+ return -a * b; // What kind of crazy math is this?
+}
+
+int Square (float a)
+{
+ return Prod (int (a), int (a));
+}
+
+int main ()
+{
+ if (Square (2) != 4)
+ return 1;
+
+ if (Square (2.0f) != -4)
+ return 1;
+
+ if (Square (2, 3, 4) != 9 * 4)
+ return 1;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/mod-indirect-1_a.C b/gcc/testsuite/g++.dg/modules/mod-indirect-1_a.C
new file mode 100644
index 0000000..a27153c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-indirect-1_a.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts" }
+// { dg-module-do run }
+
+export module Foo;
+// { dg-module-cmi "Foo" }
+
+export int bob (int);
+export float bob (float);
diff --git a/gcc/testsuite/g++.dg/modules/mod-indirect-1_b.C b/gcc/testsuite/g++.dg/modules/mod-indirect-1_b.C
new file mode 100644
index 0000000..7e466f1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-indirect-1_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module Bar;
+// { dg-module-cmi "Bar" }
+
+import Foo;
+
+export int frob (int, float);
diff --git a/gcc/testsuite/g++.dg/modules/mod-indirect-1_c.C b/gcc/testsuite/g++.dg/modules/mod-indirect-1_c.C
new file mode 100644
index 0000000..e19f41d4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-indirect-1_c.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts" }
+module Foo;
+
+int bob (int a)
+{
+ return a * 2;
+}
+
+float bob (float b)
+{
+ return b * 1.5f;
+}
diff --git a/gcc/testsuite/g++.dg/modules/mod-indirect-1_d.C b/gcc/testsuite/g++.dg/modules/mod-indirect-1_d.C
new file mode 100644
index 0000000..304be95
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-indirect-1_d.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts" }
+module Bar;
+
+int frob (int a, float b)
+{
+ return bob (a) * bob (b);
+}
diff --git a/gcc/testsuite/g++.dg/modules/mod-indirect-1_e.C b/gcc/testsuite/g++.dg/modules/mod-indirect-1_e.C
new file mode 100644
index 0000000..23241b1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-indirect-1_e.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts" }
+import Bar;
+
+int main ()
+{
+ return frob (2, 4) != 4 * 6;
+}
diff --git a/gcc/testsuite/g++.dg/modules/mod-stamp-1_a.C b/gcc/testsuite/g++.dg/modules/mod-stamp-1_a.C
new file mode 100644
index 0000000..cf8e73f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-stamp-1_a.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module Foo;
+// { dg-module-cmi "Foo" }
+
+export int bob ();
+
diff --git a/gcc/testsuite/g++.dg/modules/mod-stamp-1_b.C b/gcc/testsuite/g++.dg/modules/mod-stamp-1_b.C
new file mode 100644
index 0000000..3a5e8e2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-stamp-1_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module Bar;
+// { dg-module-cmi "Bar" }
+
+import Foo;
+
+export int bill ();
diff --git a/gcc/testsuite/g++.dg/modules/mod-stamp-1_c.C b/gcc/testsuite/g++.dg/modules/mod-stamp-1_c.C
new file mode 100644
index 0000000..554ba3f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-stamp-1_c.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module Foo;
+
+export int bob (int);
diff --git a/gcc/testsuite/g++.dg/modules/mod-stamp-1_d.C b/gcc/testsuite/g++.dg/modules/mod-stamp-1_d.C
new file mode 100644
index 0000000..f16833e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-stamp-1_d.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import Bar;
+// { dg-error "CRC mismatch" "" { target *-*-* } 0 }
+// { dg-regexp "Foo: error: failed to read compiled module: Bad file data\n" }
+// { dg-regexp "Bar: error: failed to read compiled module: Bad import dependency\n" }
+// { dg-prune-output "fatal error:" }
+// { dg-prune-output "compilation terminated" }
+
+int bill ();
diff --git a/gcc/testsuite/g++.dg/modules/mod-sym-1.C b/gcc/testsuite/g++.dg/modules/mod-sym-1.C
new file mode 100644
index 0000000..b207101
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-sym-1.C
@@ -0,0 +1,34 @@
+// { dg-additional-options "-fmodules-ts" }
+export module linkage;
+// { dg-module-cmi "linkage" }
+
+inline void Foo () {}
+
+export inline void Baz () __attribute__((used));
+
+inline void Bink () {}
+
+export inline void Baz () { Foo (); Bink (); }
+
+extern "C" inline void cfunc (void) __attribute__((used));
+extern "C" inline void cfunc (void) {}
+
+namespace Inner
+{
+ inline void Foo2 () {}
+
+ export inline void Baz2 () __attribute__((used));
+
+ inline void Bink2 () {}
+
+ export inline void Baz2 () { Foo2 (); Bink2 (); }
+}
+
+// These fail until namespace hack is removed
+// { dg-final { scan-assembler "_ZW7linkageE3Foov:" } }
+// { dg-final { scan-assembler "_ZW7linkageE4Binkv:" } }
+// { dg-final { scan-assembler "_ZW7linkageEN5Inner4Foo2Ev:" } }
+// { dg-final { scan-assembler "_ZW7linkageEN5Inner5Bink2Ev:" } }
+// { dg-final { scan-assembler "_Z3Bazv:" } }
+// { dg-final { scan-assembler "_ZN5Inner4Baz2Ev:" } }
+// { dg-final { scan-assembler "cfunc:" } }
diff --git a/gcc/testsuite/g++.dg/modules/mod-sym-2.C b/gcc/testsuite/g++.dg/modules/mod-sym-2.C
new file mode 100644
index 0000000..ef0c3f0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-sym-2.C
@@ -0,0 +1,23 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+module;
+# 4 "header" 1
+inline void Foo () {}
+# 6 "" 2
+export module okely.dokely;
+// { dg-module-cmi "okely.dokely" }
+
+namespace One {
+ namespace Two {
+ inline namespace Three
+ {
+ inline void Foo2 () {}
+
+ export inline void Baz2 () __attribute__((used));
+ export inline void Baz2 () { Foo (); Foo2 (); }
+ }
+ }
+}
+
+// { dg-final { scan-assembler "_Z3Foov:" } }
+// { dg-final { scan-assembler "_ZW5okely6dokelyEN3One3Two5Three4Foo2Ev:" } }
+// { dg-final { scan-assembler "_ZN3One3Two5Three4Baz2Ev:" } }
diff --git a/gcc/testsuite/g++.dg/modules/mod-sym-3.C b/gcc/testsuite/g++.dg/modules/mod-sym-3.C
new file mode 100644
index 0000000..9481ad1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-sym-3.C
@@ -0,0 +1,26 @@
+// { dg-additional-options "-fmodules-ts" }
+export module bob;
+// { dg-module-cmi "bob" }
+
+namespace X
+{
+ inline void Foo () __attribute__((used));
+ export inline void Baz () __attribute__((used));
+
+ namespace Y
+ {
+ inline void Quux () __attribute__((used));
+ export inline void Bar () __attribute__((used));
+ }
+
+ inline void Y::Quux () {}
+ inline void Y::Bar () {}
+}
+
+inline void X::Foo () {}
+inline void X::Baz () {}
+
+// { dg-final { scan-assembler "_ZW3bobEN1X3FooEv:" } }
+// { dg-final { scan-assembler "_ZN1X3BazEv:" } }
+// { dg-final { scan-assembler "_ZW3bobEN1X1Y4QuuxEv:" } }
+// { dg-final { scan-assembler "_ZN1X1Y3BarEv:" } }
diff --git a/gcc/testsuite/g++.dg/modules/mod-tpl-1_a.C b/gcc/testsuite/g++.dg/modules/mod-tpl-1_a.C
new file mode 100644
index 0000000..f48e123
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-tpl-1_a.C
@@ -0,0 +1,12 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+
+export module Frob;
+// { dg-module-cmi "Frob" }
+
+export template <typename T>
+T twice (T x)
+{
+ return x * 2;
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/mod-tpl-1_b.C b/gcc/testsuite/g++.dg/modules/mod-tpl-1_b.C
new file mode 100644
index 0000000..669f2c6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-tpl-1_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts" }
+import Frob;
+
+int main ()
+{
+ return twice (2) != 4;
+}
diff --git a/gcc/testsuite/g++.dg/modules/mod-tpl-2_a.C b/gcc/testsuite/g++.dg/modules/mod-tpl-2_a.C
new file mode 100644
index 0000000..86281bb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-tpl-2_a.C
@@ -0,0 +1,16 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+
+export module frob;
+// { dg-module-cmi "frob" }
+
+export template <typename T>
+class X
+{
+ T m;
+
+public:
+ void frob (T v) { m = v; }
+
+ T frobber (T v) { return v + m; }
+};
diff --git a/gcc/testsuite/g++.dg/modules/mod-tpl-2_b.C b/gcc/testsuite/g++.dg/modules/mod-tpl-2_b.C
new file mode 100644
index 0000000..8452c7d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mod-tpl-2_b.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import frob;
+
+int main ()
+{
+ X<int> x;
+
+ x.frob (3);
+
+ return ! (x.frobber (-3) == 0);
+}
diff --git a/gcc/testsuite/g++.dg/modules/modules.exp b/gcc/testsuite/g++.dg/modules/modules.exp
new file mode 100644
index 0000000..28d627d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/modules.exp
@@ -0,0 +1,379 @@
+# Copyright (C) 2017-2021 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+#
+# Contributed by Nathan Sidwell <nathan@acm.org> while at Facebook
+
+
+# Test C++ modules, which requires multiple TUs
+#
+# A test case might consist of multiple source files, each is compiled
+# separately, in a well-defined order. The resulting object files might
+# be optionally linked and optionally executed. Grouping is indicated by
+# naming files '*_[a-z].[CH]'
+
+# { dg-module-cmi "[!]module-name" } # an interface file is (not) expected
+# { dg-module-do [link|run] [xfail] [options] } # link [and run]
+
+load_lib g++-dg.exp
+
+# If a testcase doesn't have special options, use these.
+global DEFAULT_CXXFLAGS
+if ![info exists DEFAULT_CXXFLAGS] then {
+ set DEFAULT_CXXFLAGS " -pedantic-errors -Wno-long-long"
+}
+set DEFAULT_MODFLAGS $DEFAULT_CXXFLAGS
+set MOD_STD_LIST { 17 2a }
+
+dg-init
+
+global module_do
+global module_cmis
+global module_headers
+
+set DEFAULT_REPO "gcm.cache"
+
+# Register the module name this produces.
+# dg-module-cmi !?=?NAME WHEN?
+# dg-module-cmi !?{} - header unit
+proc dg-module-cmi { args } {
+ if { [llength $args] > 3 } {
+ error "[lindex $args 0]: too many arguments"
+ return
+ }
+ set spec [lindex $args 1]
+ if { [llength $args] > 2 } {
+ set when [lindex $args 2]
+ } else {
+ set when {}
+ }
+
+ if { [string index $spec 0] == "!" } {
+ set name [string range $spec 1 end]
+ set not 1
+ } else {
+ set name $spec
+ set not 0
+ }
+
+ if { [string index $name 0] == "=" } {
+ set cmi [string range $name 1 end]
+ } else {
+ if { $name == "" } {
+ # get the source file name. ick!
+ upvar prog srcname
+ set cmi "$srcname.gcm"
+ if { [string index $cmi 0] == "/" } {
+ set cmi [string range $cmi 1 end]
+ } else {
+ set cmi ",/$cmi"
+ }
+ set path [file split $cmi]
+ # subst /../ -> /,,/
+ # sadly tcl 8.5 does not have lmap
+ set rplac {}
+ foreach elt $path {lappend rplac [expr {$elt == ".." ? ",," : $elt}]}
+ set cmi [file join {*}$rplac]
+ } else {
+ set cmi "[regsub : $name -].gcm"
+ }
+ global DEFAULT_REPO
+ set cmi "$DEFAULT_REPO/$cmi"
+ }
+
+ # delete file, so we don't get confused by a stale one.
+ file_on_host delete "$cmi"
+
+ global module_cmis
+ lappend module_cmis [list $spec $when $not $cmi]
+}
+
+# check the expected module files exist (or not)
+# return list to delete
+proc module_cmi_p { src ifs } {
+ set res {}
+ foreach if_arg $ifs {
+ set spec [lindex $if_arg 0]
+ set when [lindex $if_arg 1]
+ if { $when != "" } {
+ switch [dg-process-target $when] {
+ "S" { }
+ "N" { continue }
+ "F" { setup_xfail "*-*-*" }
+ "P" { }
+ }
+ }
+ set not [lindex $if_arg 2]
+ set cmi [lindex $if_arg 3]
+ global srcdir
+ set relcmi [string map [list $srcdir "/\$srcdir"] $cmi]
+ if { $not != [file_on_host exists $cmi] } {
+ pass "$src module-cmi $spec ($relcmi)"
+ } else {
+ fail "$src module-cmi $spec ($relcmi)"
+ set not [expr ! $not ]
+ }
+ if { ! $not } {
+ lappend res $cmi
+ }
+ }
+ return $res
+}
+
+# Append required header unit names to module_headers var
+proc dg-module-headers { args } {
+ if { [llength $args] != 3 } {
+ error "[lindex $args 0]: wrong number of arguments"
+ return
+ }
+}
+
+proc do_module_headers { srcdir subdir std flags} {
+ global module_headers
+ foreach header $module_headers {
+ set kind [lindex $header 0]
+ set hdr [lindex $header 1]
+ verbose "Header $hdr $std" 1
+ switch $kind {
+ test {
+ global module_cmis
+ set module_cmis {}
+ dg-test -keep-output $srcdir/$subdir/$hdr "$std" $flags
+ global mod_files
+ lappend mod_files [module_cmi_p $subdir/$hdr $module_cmis]
+ }
+ system -
+ user {
+ # FIXME
+ }
+ default {
+ error "$kind unknown header"
+ }
+ }
+ }
+}
+
+# link and maybe run a set of object files
+# dg-module-do WHAT WHEN
+proc dg-module-do { args } {
+ if { [llength $args] > 3 } {
+ error "[lindex $args 0]: too many arguments"
+ return
+ }
+
+ set do_what [lindex $args 1]
+ set expected "P"
+ if { [llength $args] > 2 } {
+ set expected [dg-process-target [lindex $args 2]]
+ }
+
+ global module_do
+ set module_do [list $do_what $expected]
+}
+
+proc module_do_it { do_what testcase std asm_list } {
+ global tool
+
+ set run 0
+ switch [lindex $do_what 0] {
+ "compile" { return 1 }
+ "link" { }
+ "run" { set run 1 }
+ default { error "unknown module-do action [lindex $do_what 0]" }
+ }
+
+ set xfail {}
+ switch [lindex $do_what 1] {
+ "S" { }
+ "N" { return 1 }
+ "F" { set xfail {setup_xfail "*-*-*"} }
+ "P" { }
+ }
+
+ set ok 1
+ # make sure all asms are around
+ foreach asm $asm_list {
+ if { ! [file_on_host exists $asm] } {
+ set ok 0
+ }
+ }
+
+ set options { }
+ set ident $testcase
+ if { $std != "" } {
+ lappend options "additional_flags=$std"
+ set ident "$ident $std"
+ }
+ if { [llength $do_what] > 3 } {
+ lappend options "additional_flags=[lindex $do_what 3]"
+ }
+
+ set execname "./[file tail $testcase].exe"
+
+ # link it
+ verbose "Linking $asm_list" 1
+ if { !$ok } {
+ unresolved "$ident link"
+ } else {
+ set out [${tool}_target_compile $asm_list \
+ $execname executable $options]
+ eval $xfail
+ if { $out == "" } {
+ pass "$ident link"
+ } else {
+ fail "$ident link"
+ set ok 0
+ }
+ }
+
+ # run it?
+ if { !$run } {
+ } elseif { !$ok } {
+ unresolved "$ident execute"
+ } else {
+ set out [${tool}_load $execname "" ""]
+ set status [lindex $out 0]
+ eval $xfail
+ $status "$ident execute"
+ if { $status != "pass" } {
+ set $ok 0
+ }
+ }
+
+ if { $ok } {
+ file_on_host delete $execname
+ }
+
+ return $ok
+}
+
+# delete the specified set of module files
+proc cleanup_module_files { files } {
+ foreach file $files {
+ file_on_host delete $file
+ }
+}
+
+global testdir
+set testdir $srcdir/$subdir
+proc srcdir {} {
+ global testdir
+ return $testdir
+}
+
+# Return set of std options to iterate over, taken from g++-dg.exp & compat.exp
+proc module-init { src } {
+ set tmp [dg-get-options $src]
+ set option_list {}
+ global module_headers
+ set module_headers {}
+ set have_std 0
+ set std_prefix "-std=c++"
+
+ foreach op $tmp {
+ switch [lindex $op 0] {
+ "dg-options" {
+ set std_prefix "-std=gnu++"
+ if { [string match "*-std=*" [lindex $op 2]] } {
+ set have_std 1
+ }
+ }
+ "dg-additional-options" {
+ if { [string match "*-std=*" [lindex $op 2]] } {
+ set have_std 1
+ }
+ }
+ "dg-module-headers" {
+ set kind [lindex $op 2]
+ foreach header [lindex $op 3] {
+ lappend module_headers [list $kind $header]
+ }
+ }
+ }
+ }
+
+ if { !$have_std } {
+ global MOD_STD_LIST
+ foreach x $MOD_STD_LIST {
+ lappend option_list "${std_prefix}$x"
+ }
+ } else {
+ lappend option_list ""
+ }
+
+ return $option_list
+}
+
+# not grouped tests, sadly tcl doesn't have negated glob
+foreach test [prune [lsort [find $srcdir/$subdir {*.[CH]}]] \
+ "$srcdir/$subdir/*_?.\[CH\]"] {
+ if [runtest_file_p $runtests $test] {
+ set nshort [file tail [file dirname $test]]/[file tail $test]
+
+ set std_list [module-init $test]
+ foreach std $std_list {
+ do_module_headers $srcdir $subdir $std $DEFAULT_MODFLAGS
+ set module_cmis {}
+ verbose "Testing $nshort $std" 1
+ dg-test $test "$std" $DEFAULT_MODFLAGS
+ set testcase [string range $test [string length "$srcdir/"] end]
+ cleanup_module_files [module_cmi_p $testcase $module_cmis]
+ }
+ }
+}
+
+# grouped tests
+foreach src [lsort [find $srcdir/$subdir {*_a.[CH}]] {
+ # use the FOO_a.C name as the parallelization key
+ if [runtest_file_p $runtests $src] {
+ set tests [lsort [find [file dirname $src] \
+ [regsub {_a.[CH]$} [file tail $src] {_[a-z].[CH]}]]]
+
+ set std_list [module-init $src]
+ foreach std $std_list {
+ set mod_files {}
+ global module_do
+ set module_do {"compile" "P"}
+ set asm_list {}
+ do_module_headers $srcdir $subdir $std $DEFAULT_MODFLAGS
+ foreach test $tests {
+ if { [lindex $module_do 1] != "N" } {
+ set module_cmis {}
+ set nshort [file tail [file dirname $test]]/[file tail $test]
+ verbose "Testing $nshort $std" 1
+ if { [file extension $test] == ".C" } {
+ lappend asm_list [file rootname [file tail $test]].s
+ }
+ dg-test -keep-output $test "$std" $DEFAULT_MODFLAGS
+ set testcase [string range $test [string length "$srcdir/"] end]
+ lappend mod_files [module_cmi_p $testcase $module_cmis]
+ }
+ }
+ set ok 1
+ set testcase [regsub {_a.[CH]} $src {}]
+ set testcase \
+ [string range $testcase [string length "$srcdir/"] end]
+ set ok [module_do_it $module_do $testcase $std $asm_list]
+ if { $ok } {
+ foreach asm $asm_list {
+ file_on_host delete $asm
+ }
+ cleanup_module_files $mod_files
+ }
+ }
+ }
+}
+
+dg-finish
diff --git a/gcc/testsuite/g++.dg/modules/mutual-friend.ii b/gcc/testsuite/g++.dg/modules/mutual-friend.ii
new file mode 100644
index 0000000..b42b979
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/mutual-friend.ii
@@ -0,0 +1,11 @@
+class exception_ptr;
+
+
+void rethrow_exception(exception_ptr);
+
+
+class exception_ptr
+{
+ friend void rethrow_exception(exception_ptr);
+};
+
diff --git a/gcc/testsuite/g++.dg/modules/namespace-1_a.C b/gcc/testsuite/g++.dg/modules/namespace-1_a.C
new file mode 100644
index 0000000..1929acc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/namespace-1_a.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts" }
+export module Frob;
+// { dg-module-cmi Frob }
+
+namespace impl
+{
+ export int doit (int);
+}
+
+namespace ompl
+{
+ export int doneit (int);
+}
diff --git a/gcc/testsuite/g++.dg/modules/namespace-1_b.C b/gcc/testsuite/g++.dg/modules/namespace-1_b.C
new file mode 100644
index 0000000..096e6ce
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/namespace-1_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts" }
+export module Frink;
+// { dg-module-cmi Frink }
+
+import Frob;
+
+export int frab (int x)
+{
+ return impl::doit (x) + ompl::doneit (x);
+}
diff --git a/gcc/testsuite/g++.dg/modules/namespace-1_c.C b/gcc/testsuite/g++.dg/modules/namespace-1_c.C
new file mode 100644
index 0000000..748ef5d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/namespace-1_c.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts" }
+// The indirect import of frob, with namespaces impl and ompl doesn't
+// affect us.
+static int impl;
+import Frink;
+
+static int ompl;
+
+void corge (int x)
+{
+ impl = x;
+ ompl = frab (x);
+}
diff --git a/gcc/testsuite/g++.dg/modules/namespace-2_a.C b/gcc/testsuite/g++.dg/modules/namespace-2_a.C
new file mode 100644
index 0000000..18327e2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/namespace-2_a.C
@@ -0,0 +1,40 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module -Wno-pedantic" }
+
+module;
+# 5 "gmf" 1
+namespace not_exported
+{
+ // not in purview
+}
+# 10 "" 2
+export module foo;
+// { dg-module-cmi foo }
+
+namespace explicit_export
+{
+}
+
+namespace implicit_export
+{
+ export int bob ();
+}
+
+namespace also_not_exported
+{
+ int bob ();
+}
+
+export namespace explicit_export
+{
+ namespace also_exported
+ {
+ }
+}
+
+// { dg-final { scan-lang-dump-not {Writable bindings at '::not_exported'} "module" } }
+// { dg-final { scan-lang-dump {Writing namespace:[0-9] '::implicit_export', export, public} "module" } }
+// { dg-final { scan-lang-dump {Writing namespace:[0-9] '::explicit_export', export, public} "module" } }
+// { dg-final { scan-lang-dump {Writing namespace:[0-9] '::also_not_exported', public} "module" } }
+// { dg-final { scan-lang-dump {Writing namespace:[0-9] '::explicit_export::also_exported', export, public} "module" } }
+// { dg-final { scan-lang-dump-not {Writing namespace:[0-9] '::not_exported'} "module" } }
+// { dg-final { scan-lang-dump-not {Writing namespace:[0-9] '::std'} "module" } }
diff --git a/gcc/testsuite/g++.dg/modules/namespace-2_b.C b/gcc/testsuite/g++.dg/modules/namespace-2_b.C
new file mode 100644
index 0000000..6ab5113
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/namespace-2_b.C
@@ -0,0 +1,17 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import foo;
+
+static int also_not_exported; // ok
+
+void X ()
+{
+ implicit_export::bob ();
+}
+
+static int implicit_export; // { dg-error "different kind" }
+
+void Y ()
+{
+ also_not_exported = 1;
+}
diff --git a/gcc/testsuite/g++.dg/modules/namespace-3_a.C b/gcc/testsuite/g++.dg/modules/namespace-3_a.C
new file mode 100644
index 0000000..8e9508d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/namespace-3_a.C
@@ -0,0 +1,21 @@
+// Check namespace needed only by internal reference is not made visible
+// { dg-additional-options "-fmodules-ts" }
+
+export module frob;
+// { dg-module-cmi frob }
+
+namespace silent
+{
+ namespace inner
+ {
+ static int X ()
+ {
+ return 1;
+ }
+ }
+}
+
+export int f (int y)
+{
+ return y + silent::inner::X ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/namespace-3_b.C b/gcc/testsuite/g++.dg/modules/namespace-3_b.C
new file mode 100644
index 0000000..f779ffe
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/namespace-3_b.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import frob;
+
+int x = silent; // { dg-error "not declared" }
+
+static int silent;
+
+int user ()
+{
+ return f (silent);
+}
diff --git a/gcc/testsuite/g++.dg/modules/namespace-4_a.C b/gcc/testsuite/g++.dg/modules/namespace-4_a.C
new file mode 100644
index 0000000..b49e0ea
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/namespace-4_a.C
@@ -0,0 +1,16 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module frob;
+// { dg-module-cmi frob }
+
+namespace
+{
+ int nope;
+}
+
+export int f (int)
+{
+ return nope;
+}
+
+int g (int *a);
diff --git a/gcc/testsuite/g++.dg/modules/namespace-4_b.C b/gcc/testsuite/g++.dg/modules/namespace-4_b.C
new file mode 100644
index 0000000..3530bcd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/namespace-4_b.C
@@ -0,0 +1,15 @@
+// { dg-additional-options "-fmodules-ts" }
+
+module frob;
+
+namespace
+{
+void *nope; // ok, different nope
+}
+
+void *q (int)
+{
+ f (bool (nope));
+ g (static_cast <int *> (nope));
+ return nope; // Ok sees above nope
+}
diff --git a/gcc/testsuite/g++.dg/modules/namespace-4_c.C b/gcc/testsuite/g++.dg/modules/namespace-4_c.C
new file mode 100644
index 0000000..2526289
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/namespace-4_c.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import frob;
+
+namespace
+{
+ float *nope;
+}
+
+float *q ()
+{
+ f (int (*nope));
+ return nope;
+}
diff --git a/gcc/testsuite/g++.dg/modules/nest-1_a.C b/gcc/testsuite/g++.dg/modules/nest-1_a.C
new file mode 100644
index 0000000..4788d5d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nest-1_a.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts" }
+export module foo;
+// { dg-module-cmi foo }
+
+namespace foo {
+
+ export int frob (int i)
+ {
+ return i;
+ }
+
+}
diff --git a/gcc/testsuite/g++.dg/modules/nest-1_b.C b/gcc/testsuite/g++.dg/modules/nest-1_b.C
new file mode 100644
index 0000000..cc30278
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nest-1_b.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts" }
+export module bar;
+// { dg-module-cmi bar }
+
+import foo;
+
+namespace bar
+{
+ export int frob (int i)
+ {
+ return i;
+ }
+}
diff --git a/gcc/testsuite/g++.dg/modules/nest-1_c.C b/gcc/testsuite/g++.dg/modules/nest-1_c.C
new file mode 100644
index 0000000..05ca02f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nest-1_c.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts --param lazy-modules=1" }
+import bar;
+
+int main ()
+{
+ return bar::frob (0);
+}
diff --git a/gcc/testsuite/g++.dg/modules/nested-1_a.C b/gcc/testsuite/g++.dg/modules/nested-1_a.C
new file mode 100644
index 0000000..3172657
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nested-1_a.C
@@ -0,0 +1,19 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+
+export module blinky;
+// { dg-module-cmi blinky }
+
+export struct X
+{
+ struct Inner
+ {
+ int m;
+ Inner (int);
+ int getter () const
+ {
+ return m;
+ }
+ };
+};
+
diff --git a/gcc/testsuite/g++.dg/modules/nested-1_b.C b/gcc/testsuite/g++.dg/modules/nested-1_b.C
new file mode 100644
index 0000000..9f775b1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nested-1_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts" }
+
+module blinky;
+
+X::Inner::Inner (int m_)
+ :m (m_)
+{
+}
diff --git a/gcc/testsuite/g++.dg/modules/nested-1_c.C b/gcc/testsuite/g++.dg/modules/nested-1_c.C
new file mode 100644
index 0000000..f46e6df
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nested-1_c.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import blinky;
+
+int main ()
+{
+ X::Inner i (7);
+
+ if (i.getter () != 7)
+ return 1;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/nested-2_a.C b/gcc/testsuite/g++.dg/modules/nested-2_a.C
new file mode 100644
index 0000000..e219735
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nested-2_a.C
@@ -0,0 +1,24 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+
+export module bob;
+// { dg-module-cmi bob }
+
+export struct X
+{
+ typedef X *iter;
+
+ int m;
+ X() :m(-1)
+ {
+ }
+
+ void set (int m_)
+ {
+ m = m_;
+ }
+ operator int () const
+ {
+ return m;
+ }
+};
diff --git a/gcc/testsuite/g++.dg/modules/nested-2_b.C b/gcc/testsuite/g++.dg/modules/nested-2_b.C
new file mode 100644
index 0000000..1ca02bd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nested-2_b.C
@@ -0,0 +1,20 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+
+import bob;
+
+int main ()
+{
+ X ary[10];
+ X::iter iter;
+ unsigned ix;
+
+ for (ix = 10, iter = ary; ix--; iter++)
+ iter->set (ix);
+
+ for (ix = 10; ix--;)
+ if (ary[ix] + ix != 9)
+ return 1;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/nested-constr-1.h b/gcc/testsuite/g++.dg/modules/nested-constr-1.h
new file mode 100644
index 0000000..6962cca
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nested-constr-1.h
@@ -0,0 +1,15 @@
+
+template<typename T>
+struct traits
+{
+ template<typename U>
+ struct nested
+ { using type = void; };
+
+ template<typename U> requires requires { typename U::type; }
+ struct nested<U>
+ { using type = typename U::type; };
+};
+
+using V = traits<char>::nested<int>::type;
+
diff --git a/gcc/testsuite/g++.dg/modules/nested-constr-1_a.H b/gcc/testsuite/g++.dg/modules/nested-constr-1_a.H
new file mode 100644
index 0000000..9398986
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nested-constr-1_a.H
@@ -0,0 +1,3 @@
+// { dg-additional-options "-std=c++2a -fmodule-header" }
+// { dg-module-cmi {} }
+#include "nested-constr-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/nested-constr-1_b.C b/gcc/testsuite/g++.dg/modules/nested-constr-1_b.C
new file mode 100644
index 0000000..7043ffa
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nested-constr-1_b.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-std=c++2a -fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "nested-constr-1.h"
+import "nested-constr-1_a.H";
+
+struct X
+{
+ using type = int;
+};
+
+traits<char>::nested<X>::type b;
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/nested-constr-2_a.C b/gcc/testsuite/g++.dg/modules/nested-constr-2_a.C
new file mode 100644
index 0000000..b29d670
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nested-constr-2_a.C
@@ -0,0 +1,18 @@
+// { dg-additional-options "-std=c++2a -fmodules-ts" }
+export module foo;
+// { dg-module-cmi foo }
+
+export template<typename T>
+struct traits
+{
+ template<typename U>
+ struct nested
+ { using type = void; };
+
+ template<typename U> requires requires { typename U::type; }
+ struct nested<U>
+ { using type = typename U::type; };
+};
+
+export using V = traits<char>::nested<int>::type;
+
diff --git a/gcc/testsuite/g++.dg/modules/nested-constr-2_b.C b/gcc/testsuite/g++.dg/modules/nested-constr-2_b.C
new file mode 100644
index 0000000..a34ef52
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nested-constr-2_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options "-std=c++2a -fmodules-ts" }
+export module bar;
+// { dg-module-cmi bar }
+import foo;
+
+struct X
+{
+ using type = int;
+};
+
+export traits<char>::nested<X>::type b;
diff --git a/gcc/testsuite/g++.dg/modules/nested-constr-2_c.C b/gcc/testsuite/g++.dg/modules/nested-constr-2_c.C
new file mode 100644
index 0000000..5c81b3b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nested-constr-2_c.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-std=c++2a -fmodules-ts" }
+
+import bar;
+
+decltype(b) c;
diff --git a/gcc/testsuite/g++.dg/modules/nodes-1_a.C b/gcc/testsuite/g++.dg/modules/nodes-1_a.C
new file mode 100644
index 0000000..446461c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nodes-1_a.C
@@ -0,0 +1,46 @@
+// { dg-additional-options -fmodules-ts }
+// { dg-module-do run }
+
+export module node;
+// { dg-module-cmi node }
+
+export template <typename T> void assert (T t)
+{
+ static_assert (sizeof (T) == sizeof (int), "whoops");
+}
+
+export class other
+{
+public:
+ other () :f (5) {}
+ void o () { }
+ int f;
+};
+
+export template<typename T> class baselink : T, other
+{
+public:
+ int Frob ()
+ {
+ o ();
+ return this->T::frob ();
+ }
+};
+
+export template <typename T> bool trait ()
+{
+ return __has_nothrow_assign(T);
+}
+
+export inline bool ptrmemdata (other const &obj)
+{
+ int other::*ptr = &other::f;
+
+ return (obj.*ptr) == 5;
+}
+
+export template<typename T> int ptrmemfn (T const &obj)
+{
+ int (T::*ptr) () const = &T::frob;
+ return (obj.*ptr) ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/nodes-1_b.C b/gcc/testsuite/g++.dg/modules/nodes-1_b.C
new file mode 100644
index 0000000..1567e90
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nodes-1_b.C
@@ -0,0 +1,27 @@
+// { dg-additional-options -fmodules-ts }
+import node;
+
+struct b
+{
+ int frob () const
+ {
+ return 0;
+ }
+};
+
+int main ()
+{
+ assert (0);
+ baselink<b> thing;
+ thing.Frob ();
+ if (!trait<b> ())
+ return 1;
+
+ if (!ptrmemdata (other ()))
+ return 2;
+
+ if (ptrmemfn (b ()))
+ return 2;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/noexcept-1.h b/gcc/testsuite/g++.dg/modules/noexcept-1.h
new file mode 100644
index 0000000..a4a0de5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/noexcept-1.h
@@ -0,0 +1,78 @@
+template<typename _Tp, _Tp __v>
+struct integral_constant
+{
+ static constexpr _Tp value = __v;
+ typedef _Tp value_type;
+ typedef integral_constant<_Tp, __v> type;
+};
+
+template<typename _Tp, _Tp __v>
+constexpr _Tp integral_constant<_Tp, __v>::value;
+
+typedef integral_constant<bool, false> false_type;
+
+
+template<typename _T1>
+struct Alien
+{
+};
+
+template<typename _T1>
+bool operator==(const Alien<_T1>& __x, const Alien<_T1>& __y);
+
+template<typename _Rep>
+struct duration;
+
+template<bool _DenIsOne>
+struct __duration_cast_impl
+{
+};
+
+template<typename _ToDur, typename _Rep>
+long Frob (const duration<_Rep>& __d)
+{
+ typedef __duration_cast_impl<// finds ::operator==
+ _ToDur::num == 1> __dc;
+
+ return 0;
+}
+
+template<typename _Rep>
+struct duration
+{
+public:
+ constexpr duration() = default;
+
+ duration (const duration& __d)
+ {
+ Frob <duration> (__d);
+ }
+};
+
+template<typename _Tp>
+struct __atomic_semaphore
+{
+ template<typename _Rep>
+ bool _M_try_acquire_for (const duration<_Rep>& __rtime) noexcept;
+
+ void _M_release() noexcept;
+};
+
+template<long __least_max_value>
+class counting_semaphore
+{
+ __atomic_semaphore<unsigned> _M_sem;
+
+public:
+ explicit counting_semaphore() noexcept;
+
+ void release() noexcept (noexcept (_M_sem._M_release ()));
+};
+
+class stop_token
+{
+public:
+ counting_semaphore<1> _M_done;
+};
+
+bool operator==(const stop_token& __a, const stop_token& __b);
diff --git a/gcc/testsuite/g++.dg/modules/noexcept-1_a.H b/gcc/testsuite/g++.dg/modules/noexcept-1_a.H
new file mode 100644
index 0000000..00949cf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/noexcept-1_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options {-std=c++20 -fmodule-header} }
+// { dg-module-cmi {} }
+
+#include "noexcept-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/noexcept-1_b.C b/gcc/testsuite/g++.dg/modules/noexcept-1_b.C
new file mode 100644
index 0000000..62a13fc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/noexcept-1_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options {-std=c++20 -fmodules-ts -fno-module-lazy} }
+
+#include "noexcept-1.h"
+import "noexcept-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/ns-alias-1_a.C b/gcc/testsuite/g++.dg/modules/ns-alias-1_a.C
new file mode 100644
index 0000000..9f501ee
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ns-alias-1_a.C
@@ -0,0 +1,16 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export namespace detail {
+ using bob = int;
+}
+
+namespace elsewhere {
+export namespace det = ::detail;
+namespace ail = ::detail;
+
+void frob (det::bob);
+
+}
diff --git a/gcc/testsuite/g++.dg/modules/ns-alias-1_b.C b/gcc/testsuite/g++.dg/modules/ns-alias-1_b.C
new file mode 100644
index 0000000..55fd926
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ns-alias-1_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+
+module foo;
+
+elsewhere::det::bob j;
+elsewhere::ail::bob k;
diff --git a/gcc/testsuite/g++.dg/modules/ns-alias-1_c.C b/gcc/testsuite/g++.dg/modules/ns-alias-1_c.C
new file mode 100644
index 0000000..9e4a81d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ns-alias-1_c.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import foo;
+
+elsewhere::det::bob j;
+elsewhere::ail::bob k; // { dg-error "does not name a type" }
diff --git a/gcc/testsuite/g++.dg/modules/ns-dir-1_a.C b/gcc/testsuite/g++.dg/modules/ns-dir-1_a.C
new file mode 100644
index 0000000..d63f9fd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ns-dir-1_a.C
@@ -0,0 +1,18 @@
+// { dg-additional-options -fmodules-ts }
+
+export module bob;
+// { dg-module-cmi bob }
+
+namespace detail {
+int i;
+}
+
+namespace elsewhere {
+
+export inline void frob ()
+{
+ using namespace detail;
+ i = 5;
+}
+
+}
diff --git a/gcc/testsuite/g++.dg/modules/ns-dir-1_b.C b/gcc/testsuite/g++.dg/modules/ns-dir-1_b.C
new file mode 100644
index 0000000..b26e787
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ns-dir-1_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+import bob;
+
+void foo ()
+{
+ elsewhere::frob ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/ns-dup-1_a.C b/gcc/testsuite/g++.dg/modules/ns-dup-1_a.C
new file mode 100644
index 0000000..600f518
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ns-dup-1_a.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export namespace std
+{
+}
diff --git a/gcc/testsuite/g++.dg/modules/ns-dup-1_b.C b/gcc/testsuite/g++.dg/modules/ns-dup-1_b.C
new file mode 100644
index 0000000..23190db
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ns-dup-1_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options {-fmodules-ts -Wno-pedantic} }
+
+module;
+# 5 __FILE__ 1
+namespace std {}
+# 7 "" 2
+export module bob;
+// { dg-module-cmi bob }
+
+import foo;
+namespace std {}
diff --git a/gcc/testsuite/g++.dg/modules/ns-imp-1_a.C b/gcc/testsuite/g++.dg/modules/ns-imp-1_a.C
new file mode 100644
index 0000000..9a91a1e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ns-imp-1_a.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+
+export module Foo;
+// { dg-module-cmi {Foo} }
+
+namespace Bob
+{
+export int Random ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/ns-imp-1_b.C b/gcc/testsuite/g++.dg/modules/ns-imp-1_b.C
new file mode 100644
index 0000000..449c705
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ns-imp-1_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options -fmodules-ts }
+
+export module Bar;
+// { dg-module-cmi {Bar} }
+
+export import Foo;
+
+namespace Bob
+{
+export int Quux ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/ns-imp-1_c.C b/gcc/testsuite/g++.dg/modules/ns-imp-1_c.C
new file mode 100644
index 0000000..2a58a91
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ns-imp-1_c.C
@@ -0,0 +1,13 @@
+// { dg-additional-options -fmodules-ts }
+
+export import Foo;
+export import Bar;
+
+namespace Bob
+{
+void Widget ()
+{
+ Random ();
+ Quux ();
+}
+}
diff --git a/gcc/testsuite/g++.dg/modules/ns-part-1_a.C b/gcc/testsuite/g++.dg/modules/ns-part-1_a.C
new file mode 100644
index 0000000..5b761df
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ns-part-1_a.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+
+export module Foo:A;
+// { dg-module-cmi {Foo:A} }
+
+namespace Bob
+{
+export int Random ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/ns-part-1_b.C b/gcc/testsuite/g++.dg/modules/ns-part-1_b.C
new file mode 100644
index 0000000..d5b49b8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ns-part-1_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options -fmodules-ts }
+
+export module Foo:B;
+// { dg-module-cmi {Foo:B} }
+
+export import :A;
+
+namespace Bob
+{
+export int Quux ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/ns-part-1_c.C b/gcc/testsuite/g++.dg/modules/ns-part-1_c.C
new file mode 100644
index 0000000..ee0ec40
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ns-part-1_c.C
@@ -0,0 +1,16 @@
+// { dg-additional-options -fmodules-ts }
+
+export module Foo;
+// { dg-module-cmi {Foo} }
+
+export import :A;
+export import :B;
+
+namespace Bob
+{
+export void Widget ()
+{
+ Random ();
+ Quux ();
+}
+}
diff --git a/gcc/testsuite/g++.dg/modules/nsdmi-1_a.C b/gcc/testsuite/g++.dg/modules/nsdmi-1_a.C
new file mode 100644
index 0000000..8e26d3c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nsdmi-1_a.C
@@ -0,0 +1,9 @@
+// { dg-module-do run }
+// { dg-additional-options -fmodules-ts }
+export module nsdmi;
+// { dg-module-cmi nsdmi }
+
+export struct Bob
+{
+ int m = 42;
+};
diff --git a/gcc/testsuite/g++.dg/modules/nsdmi-1_b.C b/gcc/testsuite/g++.dg/modules/nsdmi-1_b.C
new file mode 100644
index 0000000..032cf5b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nsdmi-1_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+import nsdmi;
+
+int main ()
+{
+ Bob b;
+
+ return b.m != 42;
+}
diff --git a/gcc/testsuite/g++.dg/modules/nsdmi-2.C b/gcc/testsuite/g++.dg/modules/nsdmi-2.C
new file mode 100644
index 0000000..081c1a1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/nsdmi-2.C
@@ -0,0 +1,19 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks" }
+export module foo;
+// { dg-module-cmi foo }
+
+
+export enum class file_type : signed char { none = 0 };
+
+export class directory_entry
+{
+public:
+ directory_entry(int);
+
+ int _M_path;
+
+ // ICE from deferred_parse NSDMI in as_base class
+ file_type _M_type = file_type::none;
+};
+
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl definition '::directory_entry'\n \[1\]=decl definition '::directory_entry::__as_base '\n \[2\]=decl declaration '::directory_entry::__ct '\n} module } }
diff --git a/gcc/testsuite/g++.dg/modules/omp-1_a.C b/gcc/testsuite/g++.dg/modules/omp-1_a.C
new file mode 100644
index 0000000..722720a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/omp-1_a.C
@@ -0,0 +1,17 @@
+// { dg-additional-options "-fmodules-ts -fopenmp" }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export inline void frob (unsigned (&ary)[64])
+{
+ int sum = 0;
+
+#pragma omp for
+ for (unsigned ix = 0; ix < 64; ix++)
+ sum += ary[ix];
+
+#pragma omp simd safelen(16) aligned (ary : 16)
+ for (unsigned ix = 0; ix < 64; ix++)
+ ary[ix] *= 2;
+}
diff --git a/gcc/testsuite/g++.dg/modules/omp-1_b.C b/gcc/testsuite/g++.dg/modules/omp-1_b.C
new file mode 100644
index 0000000..f3f5d92
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/omp-1_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts -fopenmp" }
+
+import foo;
+
+unsigned ary[64];
+
+int main ()
+{
+ frob (ary);
+}
diff --git a/gcc/testsuite/g++.dg/modules/omp-1_c.C b/gcc/testsuite/g++.dg/modules/omp-1_c.C
new file mode 100644
index 0000000..f30f611
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/omp-1_c.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import foo;
+
+// { dg-regexp "In module imported at \[^\n]*omp-1_c.C:3:1:\nfoo: error: module contains OpenMP, use '-fopenmp' to enable\n" }
+// { dg-prune-output "failed to read" }
+// { dg-prune-output "fatal error:" }
+// { dg-prune-output "compilation terminated" }
diff --git a/gcc/testsuite/g++.dg/modules/omp-2_a.C b/gcc/testsuite/g++.dg/modules/omp-2_a.C
new file mode 100644
index 0000000..d2291b6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/omp-2_a.C
@@ -0,0 +1,18 @@
+// { dg-additional-options "-fmodules-ts -fopenmp" }
+
+export module foo;
+// { dg-module-cmi foo }
+
+// The OpenMPness doesn't escape to the interface.
+export void frob (unsigned (&ary)[64])
+{
+ int sum = 0;
+
+#pragma omp for
+ for (unsigned ix = 0; ix < 64; ix++)
+ sum += ary[ix];
+
+#pragma omp simd safelen(16) aligned (ary : 16)
+ for (unsigned ix = 0; ix < 64; ix++)
+ ary[ix] *= 2;
+}
diff --git a/gcc/testsuite/g++.dg/modules/omp-2_b.C b/gcc/testsuite/g++.dg/modules/omp-2_b.C
new file mode 100644
index 0000000..39f34c7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/omp-2_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import foo;
+
+unsigned ary[64];
+
+int main ()
+{
+ frob (ary);
+}
diff --git a/gcc/testsuite/g++.dg/modules/only-1.C b/gcc/testsuite/g++.dg/modules/only-1.C
new file mode 100644
index 0000000..97dcb1d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/only-1.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fmodule-only" }
+
+export module bob;
+// { dg-module-cmi bob }
diff --git a/gcc/testsuite/g++.dg/modules/only-2.C b/gcc/testsuite/g++.dg/modules/only-2.C
new file mode 100644
index 0000000..6be8c76
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/only-2.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodule-only" }
+
+
+int i;
+// { dg-warning "for non-interface" "" { target *-*-* } 0 }
diff --git a/gcc/testsuite/g++.dg/modules/only-3.C b/gcc/testsuite/g++.dg/modules/only-3.C
new file mode 100644
index 0000000..a3c61c4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/only-3.C
@@ -0,0 +1,5 @@
+// { dg-options "-fmodule-only" }
+
+
+int i;
+// { dg-warning "for non-interface" "" { target *-*-* } 0 }
diff --git a/gcc/testsuite/g++.dg/modules/operator-1_a.C b/gcc/testsuite/g++.dg/modules/operator-1_a.C
new file mode 100644
index 0000000..d7a7176
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/operator-1_a.C
@@ -0,0 +1,18 @@
+// { dg-additional-options {-fmodules-ts -Wno-pedantic} }
+
+module;
+# 5 __FILE__ 1
+
+struct Type {};
+bool operator==(Type const &, Type const &);
+
+# 10 "" 2
+export module Foo;
+// { dg-module-cmi Foo }
+
+export template<typename T>
+bool equal (T const &x, T const &y)
+{
+ return x == y;
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/operator-1_b.C b/gcc/testsuite/g++.dg/modules/operator-1_b.C
new file mode 100644
index 0000000..dab8d10
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/operator-1_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options {-fmodules-ts -Wno-pedantic} }
+
+struct Type {};
+
+import Foo;
+
+bool foo (Type const &t)
+{
+ return equal (t, t);
+}
diff --git a/gcc/testsuite/g++.dg/modules/p0713-1.C b/gcc/testsuite/g++.dg/modules/p0713-1.C
new file mode 100644
index 0000000..f7d8006
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/p0713-1.C
@@ -0,0 +1,3 @@
+// { dg-additional-options "-fmodules-ts" }
+module;
+module; // { dg-error "expected" }
diff --git a/gcc/testsuite/g++.dg/modules/p0713-2.C b/gcc/testsuite/g++.dg/modules/p0713-2.C
new file mode 100644
index 0000000..cb4ccb6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/p0713-2.C
@@ -0,0 +1,3 @@
+// { dg-additional-options "-fmodules-ts" }
+int j;
+module; // { dg-error "only permitted as" }
diff --git a/gcc/testsuite/g++.dg/modules/p0713-3.C b/gcc/testsuite/g++.dg/modules/p0713-3.C
new file mode 100644
index 0000000..09d89b7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/p0713-3.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+int k;
+module frob; // { dg-error "only permitted as" }
+// { dg-prune-output "failed to read" }
+// { dg-prune-output "fatal error:" }
+// { dg-prune-output "compilation terminated" }
diff --git a/gcc/testsuite/g++.dg/modules/part-1_a.C b/gcc/testsuite/g++.dg/modules/part-1_a.C
new file mode 100644
index 0000000..de58a20
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-1_a.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+// { dg-module-cmi foo:baz }
+
+export module foo:baz;
+
+export int baz ()
+{
+ return -1;
+}
diff --git a/gcc/testsuite/g++.dg/modules/part-1_b.C b/gcc/testsuite/g++.dg/modules/part-1_b.C
new file mode 100644
index 0000000..c908c22
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-1_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export import :baz;
+
+export int foo (int a)
+{
+ return a;
+}
diff --git a/gcc/testsuite/g++.dg/modules/part-1_c.C b/gcc/testsuite/g++.dg/modules/part-1_c.C
new file mode 100644
index 0000000..88b0330
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-1_c.C
@@ -0,0 +1,14 @@
+// { dg-additional-options -fmodules-ts }
+
+import foo;
+
+int main ()
+{
+ if (baz () != -1)
+ return 1;
+
+ if (foo (42) != 42)
+ return 2;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/part-2_a.C b/gcc/testsuite/g++.dg/modules/part-2_a.C
new file mode 100644
index 0000000..60fbe99
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-2_a.C
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo:inter;
+// { dg-module-cmi foo:inter }
diff --git a/gcc/testsuite/g++.dg/modules/part-2_b.C b/gcc/testsuite/g++.dg/modules/part-2_b.C
new file mode 100644
index 0000000..c9bbac8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-2_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodules-ts }
+
+module foo:imp;
+// { dg-module-cmi foo:imp }
+
+import :inter; // ok
diff --git a/gcc/testsuite/g++.dg/modules/part-2_c.C b/gcc/testsuite/g++.dg/modules/part-2_c.C
new file mode 100644
index 0000000..759f1c9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-2_c.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo:inter2;
+// { dg-module-cmi foo:inter2 }
+
+import :imp; // ok
+
+import :inter; // ok at this point
diff --git a/gcc/testsuite/g++.dg/modules/part-2_d.C b/gcc/testsuite/g++.dg/modules/part-2_d.C
new file mode 100644
index 0000000..b2e7289
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-2_d.C
@@ -0,0 +1,10 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi !foo }
+
+import :imp; // ok
+
+export import :inter2; // ok
+
+// { dg-regexp "In module imported at \[^\n]*part-2_b.C:6:.,\nof module foo:imp, imported at \[^\n]*part-2_d.C:6:\nfoo:inter: error: interface partition is not exported\n" }
diff --git a/gcc/testsuite/g++.dg/modules/part-2_e.C b/gcc/testsuite/g++.dg/modules/part-2_e.C
new file mode 100644
index 0000000..677c066
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-2_e.C
@@ -0,0 +1,11 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+import :imp; // ok
+
+export import :inter2; // ok
+
+export import :inter; // ok now
+
diff --git a/gcc/testsuite/g++.dg/modules/part-3_a.C b/gcc/testsuite/g++.dg/modules/part-3_a.C
new file mode 100644
index 0000000..85100d2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-3_a.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+export module foo:bar;
+// { dg-module-cmi foo:bar }
+
+int foo (int x)
+{
+ return -x;
+}
diff --git a/gcc/testsuite/g++.dg/modules/part-3_b.C b/gcc/testsuite/g++.dg/modules/part-3_b.C
new file mode 100644
index 0000000..a60ad3e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-3_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo:baz;
+// { dg-module-cmi foo:baz }
+
+int foo (int);
diff --git a/gcc/testsuite/g++.dg/modules/part-3_c.C b/gcc/testsuite/g++.dg/modules/part-3_c.C
new file mode 100644
index 0000000..aff7476
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-3_c.C
@@ -0,0 +1,16 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-alias" }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export import :bar;
+export import :baz;
+
+export inline int frob (int x)
+{
+ return foo (x);
+}
+
+// { dg-final { scan-lang-dump {Read:-[0-9]'s named merge key \(new\) function_decl:'::foo'} module } }
+// { dg-final { scan-lang-dump {Read:-[0-9]'s named merge key \(matched\) function_decl:'::foo'} module } }
+// { dg-final { scan-lang-dump {Cluster sections are \[1,3\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/part-3_d.C b/gcc/testsuite/g++.dg/modules/part-3_d.C
new file mode 100644
index 0000000..d07274a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-3_d.C
@@ -0,0 +1,11 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-alias" }
+import foo;
+
+int main ()
+{
+ int r = frob (75);
+ return !(r == -75);
+}
+
+// { dg-final { scan-lang-dump { Read:-[0-9]'s named merge key \(unique\) function_decl:'::frob'} module } }
+// { dg-final { scan-lang-dump {> Read:-[0-9]'s named merge key \(unique\) function_decl:'::foo'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/part-4_a.C b/gcc/testsuite/g++.dg/modules/part-4_a.C
new file mode 100644
index 0000000..edd606b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-4_a.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo:part1;
+// { dg-module-cmi {foo:part1} }
+
+struct frob {
+ struct inner {};
+};
diff --git a/gcc/testsuite/g++.dg/modules/part-4_b.C b/gcc/testsuite/g++.dg/modules/part-4_b.C
new file mode 100644
index 0000000..a200eca
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-4_b.C
@@ -0,0 +1,12 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+// detecting an ICE in dumping machinery
+
+export module foo;
+// { dg-module-cmi foo }
+
+export import :part1;
+
+export frob foo ()
+{
+ return frob ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/part-4_c.C b/gcc/testsuite/g++.dg/modules/part-4_c.C
new file mode 100644
index 0000000..1f319cc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-4_c.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+
+import foo;
+
+void f ()
+{
+ auto f = foo ();
+
+ decltype (f)::inner x;
+}
diff --git a/gcc/testsuite/g++.dg/modules/part-5_a.C b/gcc/testsuite/g++.dg/modules/part-5_a.C
new file mode 100644
index 0000000..7679691
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-5_a.C
@@ -0,0 +1,13 @@
+// { dg-additional-options -fmodules-ts }
+
+// a bug report ICE with namespace introduced in partition.
+export module module1:submodule1;
+// { dg-module-cmi module1:submodule1 }
+
+export namespace nmspc{
+ class Cl1{
+ public:
+ Cl1(){}
+ int x=14;
+ };
+}
diff --git a/gcc/testsuite/g++.dg/modules/part-5_b.C b/gcc/testsuite/g++.dg/modules/part-5_b.C
new file mode 100644
index 0000000..f86bdd6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-5_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodules-ts }
+
+export module module1;
+// { dg-module-cmi module1 }
+
+export import :submodule1;
diff --git a/gcc/testsuite/g++.dg/modules/part-5_c.C b/gcc/testsuite/g++.dg/modules/part-5_c.C
new file mode 100644
index 0000000..0f148c3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-5_c.C
@@ -0,0 +1,10 @@
+// { dg-additional-options -fmodules-ts }
+
+#include <iostream>
+import module1;
+
+int main(int argc, char const *argv[]) {
+ nmspc::Cl1 c1;
+ std::cout << c1.x;
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/part-6_a.C b/gcc/testsuite/g++.dg/modules/part-6_a.C
new file mode 100644
index 0000000..8fece83
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-6_a.C
@@ -0,0 +1,15 @@
+// { dg-module-do link }
+// { dg-additional-options -fmodules-ts }
+
+export module foo:exp;
+// { dg-module-cmi foo:exp }
+
+export class Foo
+{
+ Foo ();
+
+public:
+ void Func ();
+
+ static Foo *Factory ();
+};
diff --git a/gcc/testsuite/g++.dg/modules/part-6_b.C b/gcc/testsuite/g++.dg/modules/part-6_b.C
new file mode 100644
index 0000000..0bad008
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-6_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export import :exp;
diff --git a/gcc/testsuite/g++.dg/modules/part-6_c.C b/gcc/testsuite/g++.dg/modules/part-6_c.C
new file mode 100644
index 0000000..395e709
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-6_c.C
@@ -0,0 +1,11 @@
+// { dg-additional-options -fmodules-ts }
+module foo:bits;
+import :exp;
+
+void Foo::Func ()
+{
+}
+
+inline Foo::Foo ()
+{
+}
diff --git a/gcc/testsuite/g++.dg/modules/part-6_d.C b/gcc/testsuite/g++.dg/modules/part-6_d.C
new file mode 100644
index 0000000..71783a6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-6_d.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+module foo;
+import :bits;
+
+Foo *Foo::Factory ()
+{
+ return new Foo ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/part-6_e.C b/gcc/testsuite/g++.dg/modules/part-6_e.C
new file mode 100644
index 0000000..6c1ba4c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-6_e.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+import foo;
+
+int main ()
+{
+ Foo::Factory ()->Func ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/part-7_a.C b/gcc/testsuite/g++.dg/modules/part-7_a.C
new file mode 100644
index 0000000..32b10f4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-7_a.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo:bill;
+// { dg-module-cmi foo:bill }
+
+export class frob;
+
+export template<int I> class FROB;
diff --git a/gcc/testsuite/g++.dg/modules/part-7_b.C b/gcc/testsuite/g++.dg/modules/part-7_b.C
new file mode 100644
index 0000000..9a7eb13
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-7_b.C
@@ -0,0 +1,20 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-blocks} }
+
+module foo:bob;
+// { dg-module-cmi foo:bob }
+
+class frob
+{
+public:
+ int field;
+};
+
+template<int J>
+class FROB
+{
+public:
+ static constexpr int val = J;
+};
+
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl definition '::frob'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl definition '::template FROB'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/part-7_c.C b/gcc/testsuite/g++.dg/modules/part-7_c.C
new file mode 100644
index 0000000..4e1df2a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-7_c.C
@@ -0,0 +1,19 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-blocks} }
+
+export module foo;
+// { dg-module-cmi foo }
+import :bob;
+export import :bill;
+
+int foo (frob *p)
+{
+ return p->field;
+}
+
+int foo (FROB<2> *p)
+{
+ return p->val;
+}
+
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl definition '::frob@foo:bob:1'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl definition '::template FROB@foo:bob:1'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/part-hdr-1_a.H b/gcc/testsuite/g++.dg/modules/part-hdr-1_a.H
new file mode 100644
index 0000000..62f3b7d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-hdr-1_a.H
@@ -0,0 +1,3 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
diff --git a/gcc/testsuite/g++.dg/modules/part-hdr-1_b.C b/gcc/testsuite/g++.dg/modules/part-hdr-1_b.C
new file mode 100644
index 0000000..9375909
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-hdr-1_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+// { dg-module-cmi {mod:impl} }
+
+module;
+# 6 "inner" 1
+import "part-hdr-1_a.H";
+# 8 "" 2
+module mod:impl;
+
diff --git a/gcc/testsuite/g++.dg/modules/part-hdr-1_c.C b/gcc/testsuite/g++.dg/modules/part-hdr-1_c.C
new file mode 100644
index 0000000..78a53d2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-hdr-1_c.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts" }
+// { dg-module-cmi {mod} }
+
+export module mod;
+import mod:impl;
diff --git a/gcc/testsuite/g++.dg/modules/part-mac-1_a.H b/gcc/testsuite/g++.dg/modules/part-mac-1_a.H
new file mode 100644
index 0000000..191525d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-mac-1_a.H
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+#define FOO(X) int X
+
diff --git a/gcc/testsuite/g++.dg/modules/part-mac-1_b.C b/gcc/testsuite/g++.dg/modules/part-mac-1_b.C
new file mode 100644
index 0000000..2adc3b0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-mac-1_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+// { dg-module-cmi {mod:impl} }
+
+module;
+# 6 "inner" 1
+import "part-mac-1_a.H";
+# 8 "" 2
+module mod:impl;
+
+FOO(k);
diff --git a/gcc/testsuite/g++.dg/modules/part-mac-1_c.C b/gcc/testsuite/g++.dg/modules/part-mac-1_c.C
new file mode 100644
index 0000000..78a53d2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/part-mac-1_c.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts" }
+// { dg-module-cmi {mod} }
+
+export module mod;
+import mod:impl;
diff --git a/gcc/testsuite/g++.dg/modules/partial-1.h b/gcc/testsuite/g++.dg/modules/partial-1.h
new file mode 100644
index 0000000..0f91107
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/partial-1.h
@@ -0,0 +1,30 @@
+
+template<typename _Tp>
+class allocator {};
+
+template<typename _Alloc> struct allocator_traits;
+
+template<typename _Tp>
+struct allocator_traits <allocator<_Tp>>
+{
+ using pointer = _Tp*;
+};
+
+struct mutex {};
+
+template<typename _Tp, typename _Alloc>
+class Inplace
+{
+public:
+ virtual void _M_dispose() noexcept
+ {
+ // bogus error ambiguous partial specializations
+ typename allocator_traits<_Alloc>::pointer v;
+ }
+};
+
+inline void *
+allocate_shared()
+{
+ return new Inplace<mutex, allocator<mutex>> ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/partial-1_a.H b/gcc/testsuite/g++.dg/modules/partial-1_a.H
new file mode 100644
index 0000000..164a54c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/partial-1_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "partial-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/partial-1_b.C b/gcc/testsuite/g++.dg/modules/partial-1_b.C
new file mode 100644
index 0000000..7e981eb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/partial-1_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include "partial-1.h"
+import "partial-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/pmf-1.h b/gcc/testsuite/g++.dg/modules/pmf-1.h
new file mode 100644
index 0000000..e4c99f5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pmf-1.h
@@ -0,0 +1,10 @@
+
+struct X
+{
+ int mfn ();
+};
+
+inline void bob (X &)
+{
+ int (X::*pmf) () = &X::mfn;
+}
diff --git a/gcc/testsuite/g++.dg/modules/pmf-1_a.H b/gcc/testsuite/g++.dg/modules/pmf-1_a.H
new file mode 100644
index 0000000..c597db1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pmf-1_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "pmf-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/pmf-1_b.C b/gcc/testsuite/g++.dg/modules/pmf-1_b.C
new file mode 100644
index 0000000..0b08610
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pmf-1_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "pmf-1.h"
+import "pmf-1_a.H";
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
+// The function-scope var is unique
+// { dg-final { scan-lang-dump-times {merge key \(unique\)} 1 module } }
diff --git a/gcc/testsuite/g++.dg/modules/pmf-2.h b/gcc/testsuite/g++.dg/modules/pmf-2.h
new file mode 100644
index 0000000..890b985
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pmf-2.h
@@ -0,0 +1,26 @@
+template<typename _Tp>
+struct remove_reference
+{ typedef _Tp FOO; };
+
+template<typename _Tp>
+void forward (typename remove_reference<_Tp>::FOO const& __t)
+{
+}
+
+template<typename _Callable>
+void __invoke(_Callable const & __fn)
+{
+ forward<_Callable const>(__fn);
+}
+
+class _State_baseV2
+{
+public:
+ void _M_set_result()
+ {
+ __invoke (&_State_baseV2::_M_do_set);
+ }
+
+ void _M_do_set();
+};
+
diff --git a/gcc/testsuite/g++.dg/modules/pmf-2_a.H b/gcc/testsuite/g++.dg/modules/pmf-2_a.H
new file mode 100644
index 0000000..b6bd763
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pmf-2_a.H
@@ -0,0 +1,6 @@
+// { dg-additional-options {-fmodule-header -fdump-lang-module-uid} }
+// { dg-module-cmi {} }
+
+#include "pmf-2.h"
+
+// { dg-final { scan-lang-dump-times {Written:-[0-9]* ptrmem type} 1 module } }
diff --git a/gcc/testsuite/g++.dg/modules/pmf-2_b.C b/gcc/testsuite/g++.dg/modules/pmf-2_b.C
new file mode 100644
index 0000000..b76f090
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pmf-2_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-uid" }
+
+#include "pmf-2.h"
+import "pmf-2_a.H";
+
+// { dg-final { scan-lang-dump {Cloned:-[0-9]* typedef template_type_parm:'::template remove_reference<_Tp>::template FOO<_Tp>'} module } }
+// { dg-final { scan-lang-dump {Created:-[0-9]* ptrmem type} module } }
diff --git a/gcc/testsuite/g++.dg/modules/pmp-1_a.C b/gcc/testsuite/g++.dg/modules/pmp-1_a.C
new file mode 100644
index 0000000..2832692
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pmp-1_a.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+export module bob;
+// { dg-module-cmi bob }
+int k;
+
+module :private; // { dg-message "sorry, unimplemented: private module fragment" }
+int i;
diff --git a/gcc/testsuite/g++.dg/modules/pmp-1_b.C b/gcc/testsuite/g++.dg/modules/pmp-1_b.C
new file mode 100644
index 0000000..40cb0fa
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pmp-1_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options -fmodules-ts }
+
+module bob;
+int k;
+
+module :private; // { dg-error "private module fragment" }
+int i;
diff --git a/gcc/testsuite/g++.dg/modules/pmp-2.C b/gcc/testsuite/g++.dg/modules/pmp-2.C
new file mode 100644
index 0000000..56ce48f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pmp-2.C
@@ -0,0 +1,7 @@
+// { dg-additional-options -fmodules-ts }
+
+export module bob;
+// { dg-module-cmi bob }
+
+module :private; // { dg-message "sorry, unimplemented: private module fragment" }
+int i;
diff --git a/gcc/testsuite/g++.dg/modules/pmp-3.C b/gcc/testsuite/g++.dg/modules/pmp-3.C
new file mode 100644
index 0000000..8c68bbe
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pmp-3.C
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodules-ts }
+
+int k;
+
+module :private; // { dg-error "private module fragment" }
+int i;
diff --git a/gcc/testsuite/g++.dg/modules/pr98591.H b/gcc/testsuite/g++.dg/modules/pr98591.H
new file mode 100644
index 0000000..ad397de
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pr98591.H
@@ -0,0 +1,3 @@
+// { dg-additional-options {-fmodules-ts -fmodule-header -fsyntax-only} }
+// PR 98591 -fsyntax-only -> output filename specified twice
+// specs are hard
diff --git a/gcc/testsuite/g++.dg/modules/pr98770_a.C b/gcc/testsuite/g++.dg/modules/pr98770_a.C
new file mode 100644
index 0000000..668ff28
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pr98770_a.C
@@ -0,0 +1,10 @@
+// PR 98770 confused about duplicate template type aliases
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+
+module ;
+# 6 __FILE__ 1
+template<typename> using __void_t = void;
+# 8 "" 2
+export module Foo;
+
+export using B = __void_t<int>;
diff --git a/gcc/testsuite/g++.dg/modules/pr98770_b.C b/gcc/testsuite/g++.dg/modules/pr98770_b.C
new file mode 100644
index 0000000..a4ab237
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pr98770_b.C
@@ -0,0 +1,12 @@
+// PR 98770 confused about duplicate template type aliases
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+
+module ;
+# 6 __FILE__ 1
+template<typename> using __void_t = void;
+# 8 "" 2
+export module Bar;
+
+import Foo;
+
+export B *b;
diff --git a/gcc/testsuite/g++.dg/modules/pr98843_a.C b/gcc/testsuite/g++.dg/modules/pr98843_a.C
new file mode 100644
index 0000000..97820cf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pr98843_a.C
@@ -0,0 +1,5 @@
+// { dg-additional-options -fmodules-ts }
+// PR 98843 ICE due to inconsistent entity_ary order
+
+export module foo;
+export void *frob ();
diff --git a/gcc/testsuite/g++.dg/modules/pr98843_b.H b/gcc/testsuite/g++.dg/modules/pr98843_b.H
new file mode 100644
index 0000000..d6734bd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pr98843_b.H
@@ -0,0 +1,12 @@
+// { dg-additional-options -fmodule-header }
+// PR 98843 ICE due to inconsistent entity_ary order
+
+template<int I> int Fn ()
+{
+ return I;
+}
+
+template<> int Fn<1> ()
+{
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/pr98843_c.C b/gcc/testsuite/g++.dg/modules/pr98843_c.C
new file mode 100644
index 0000000..a176e09
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pr98843_c.C
@@ -0,0 +1,10 @@
+// { dg-additional-options -fmodules-ts }
+// PR 98843 ICE due to inconsistent entity_ary order
+
+import foo;
+import "pr98843_b.H";
+
+int main ()
+{
+ return Fn<1> ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/pragma-1_a.H b/gcc/testsuite/g++.dg/modules/pragma-1_a.H
new file mode 100644
index 0000000..6eb0a59
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pragma-1_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+
+// { dg-module-cmi {} }
+int i;
diff --git a/gcc/testsuite/g++.dg/modules/pragma-1_b.C b/gcc/testsuite/g++.dg/modules/pragma-1_b.C
new file mode 100644
index 0000000..55d5de3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pragma-1_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodules-ts }
+
+#pragma GCC visibility push (default)
+#pragma GCC visibility pop
+
+import "pragma-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/predef-1.C b/gcc/testsuite/g++.dg/modules/predef-1.C
new file mode 100644
index 0000000..07a85b0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/predef-1.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts -nostdinc -include [srcdir]/predef-1.h" }
+// { dg-additional-files predef-1.C }
+
+// test macro expansion inside forced header
+
+export module bob;
diff --git a/gcc/testsuite/g++.dg/modules/predef-1.h b/gcc/testsuite/g++.dg/modules/predef-1.h
new file mode 100644
index 0000000..ab366d5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/predef-1.h
@@ -0,0 +1,10 @@
+
+// expands a macro (inside #if conditional) inside forced header.
+// modelled on glibc's stdc_predef.h
+
+#define GCC_IEC_559 1
+
+# if GCC_IEC_559 > 0
+# define STDC_IEC_559__ 1
+# endif
+
diff --git a/gcc/testsuite/g++.dg/modules/predef-2.h b/gcc/testsuite/g++.dg/modules/predef-2.h
new file mode 100644
index 0000000..79486f1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/predef-2.h
@@ -0,0 +1,7 @@
+
+// expands a macro (inside #if conditional) inside forced header.
+// modelled on glibc's stdc_predef.h
+
+// some builtin macro
+# if __GNUC__ > 0
+# endif
diff --git a/gcc/testsuite/g++.dg/modules/predef-2_a.C b/gcc/testsuite/g++.dg/modules/predef-2_a.C
new file mode 100644
index 0000000..bbf8344
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/predef-2_a.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -nostdinc -include [srcdir]/predef-2.h" }
+// { dg-additional-files predef-2.h }
+
+// test macro expansion inside forced header
+
+export module bob:part;
+// { dg-module-cmi bob:part }
diff --git a/gcc/testsuite/g++.dg/modules/predef-2_b.C b/gcc/testsuite/g++.dg/modules/predef-2_b.C
new file mode 100644
index 0000000..d0dfb88
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/predef-2_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts -nostdinc -include [srcdir]/predef-2.h" }
+// { dg-additional-files predef-2.h }
+
+// test macro expansion inside forced header
+
+export module bob;
+// { dg-module-cmi bob }
+
+export import :part;
diff --git a/gcc/testsuite/g++.dg/modules/preproc-1.C b/gcc/testsuite/g++.dg/modules/preproc-1.C
new file mode 100644
index 0000000..e7ba6d6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/preproc-1.C
@@ -0,0 +1,3 @@
+# 0 "preproc-1.C"
+// { dg-additional-options "-fmodule-header -fpreprocessed" }
+// { dg-module-cmi {=gcm.cache/,/preproc-1.C.gcm} }
diff --git a/gcc/testsuite/g++.dg/modules/preproc-2_a.H b/gcc/testsuite/g++.dg/modules/preproc-2_a.H
new file mode 100644
index 0000000..8e81fb5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/preproc-2_a.H
@@ -0,0 +1,11 @@
+# 0 "preproc-2_a.H"
+# 0 "<built-in>"
+#define __STDC__ 1
+# 0 "<command-line>"
+#define NAME bob
+# 1 "preproc-2_a.H"
+# 8 "preproc-2_a.H"
+void NAME ();
+
+// { dg-additional-options "-fmodules-ts -fpreprocessed -fdirectives-only" }
+// { dg-module-cmi {,/preproc-2_a.H} }
diff --git a/gcc/testsuite/g++.dg/modules/preproc-2_b.C b/gcc/testsuite/g++.dg/modules/preproc-2_b.C
new file mode 100644
index 0000000..8ce21fdc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/preproc-2_b.C
@@ -0,0 +1,21 @@
+# 0 "preproc-2_b.C"
+# 0 "<built-in>"
+#define __STDC__ 1
+# 0 "<command-line>"
+# 1 "preproc-2_b.C"
+# 7 "preproc-2_b.C"
+import "./preproc-2_a.H";
+
+#define NAME bill
+
+int NAME = 4;
+
+int bob; // error with header
+
+float NAME; // error with self
+
+// { dg-additional-options "-fmodules-ts -fpreprocessed -fdirectives-only" }
+
+// { dg-regexp {preproc-2_b.C:13:5: error: 'int bob' redeclared as different kind of entity\nIn module ./preproc-2_a.H, imported at preproc-2_b.C:7:\n<command-line>: note: previous declaration 'void bob\(\)'\npreproc-2_a.H:8:6: note: in expansion of macro 'NAME'} }
+
+// { dg-regexp {preproc-2_b.C:9:14: error: conflicting declaration 'float bill'\npreproc-2_b.C:15:7: note: in expansion of macro 'NAME'\npreproc-2_b.C:9:14: note: previous declaration as 'int bill'\npreproc-2_b.C:11:5: note: in expansion of macro 'NAME'} }
diff --git a/gcc/testsuite/g++.dg/modules/printf-1_a.H b/gcc/testsuite/g++.dg/modules/printf-1_a.H
new file mode 100644
index 0000000..900c063
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/printf-1_a.H
@@ -0,0 +1,9 @@
+// { dg-module-do run }
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+extern "C"
+{
+ // this matches an anticipated fn
+ extern int printf (const char *__restrict, ...);
+}
diff --git a/gcc/testsuite/g++.dg/modules/printf-1_b.C b/gcc/testsuite/g++.dg/modules/printf-1_b.C
new file mode 100644
index 0000000..a434e76
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/printf-1_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+import "printf-1_a.H";
+
+int main ()
+{
+ printf ("hello world!\n");
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/reparent-1_a.C b/gcc/testsuite/g++.dg/modules/reparent-1_a.C
new file mode 100644
index 0000000..c545098
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/reparent-1_a.C
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodules-ts }
+// { dg-module-cmi foo }
+
+
+export module foo;
+export void v ();
diff --git a/gcc/testsuite/g++.dg/modules/reparent-1_b.C b/gcc/testsuite/g++.dg/modules/reparent-1_b.C
new file mode 100644
index 0000000..b44ae1c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/reparent-1_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options {-fmodules-ts -Wno-pedantic} }
+// { dg-module-cmi bar }
+
+
+module;
+# 7 "gmf1" 1
+# 8 "gmf2" 1
+# 9 "gmf3" 1
+import foo;
+# 11 "" 2
+# 12 "" 2
+# 13 "" 2
+export module bar;
+export import foo;
diff --git a/gcc/testsuite/g++.dg/modules/reparent-1_c.C b/gcc/testsuite/g++.dg/modules/reparent-1_c.C
new file mode 100644
index 0000000..e4e984c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/reparent-1_c.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+import bar;
+
+int main ()
+{
+ v (0); // { dg-error "too many arguments" }
+}
+
+// { dg -regexp {In module foo, imported at [^\n]*/reparent-1_b.C:14,\nof module bar, imported at [^\n]*/reparent-1_c.C:2:\n[^\n]*/reparent-1_a.C:6:13: note: declared here\n} }
diff --git a/gcc/testsuite/g++.dg/modules/scc-1.C b/gcc/testsuite/g++.dg/modules/scc-1.C
new file mode 100644
index 0000000..a5d71f3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/scc-1.C
@@ -0,0 +1,16 @@
+// Check SCC regions are atomic
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-uid" }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export int bar (int);
+export int baz (int = bar (1));
+export int bar (int = baz (1));
+
+// The ordering depends on hash table iteration, which is address-dependent
+
+// { dg-final { scan-lang-dump { Writing named:-[0-9]* function_decl:'::bar'} "module" } }
+// { dg-final { scan-lang-dump { Writing named:-[0-9]* function_decl:'::baz'} "module" } }
+// { dg-final { scan-lang-dump { \.[0-9]*\. Wrote backref:-[0-9]* function_decl:'::ba[rz]'} "module" } }
+// { dg-final { scan-lang-dump { Wrote backref:-[0-9]* function_decl:'::ba[rz]'} "module" } }
diff --git a/gcc/testsuite/g++.dg/modules/scc-2.C b/gcc/testsuite/g++.dg/modules/scc-2.C
new file mode 100644
index 0000000..385f27c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/scc-2.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts" }
+export module frob;
+// { dg-module-cmi frob }
+
+export enum X
+{
+ One, Two, Three
+};
diff --git a/gcc/testsuite/g++.dg/modules/shadow-1_a.C b/gcc/testsuite/g++.dg/modules/shadow-1_a.C
new file mode 100644
index 0000000..e4641aa
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/shadow-1_a.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+export module shadow;
+// { dg-module-cmi shadow }
+
+export struct stat
+{
+};
+
+export void stat ();
diff --git a/gcc/testsuite/g++.dg/modules/shadow-1_b.C b/gcc/testsuite/g++.dg/modules/shadow-1_b.C
new file mode 100644
index 0000000..6463812
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/shadow-1_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+import shadow;
+
+// unfortunately not the exact same diagnostic in both cases :(
+
+void stat (); // { dg-error "conflicts with import" }
+
+struct stat {}; // { dg-error "in a different module" }
diff --git a/gcc/testsuite/g++.dg/modules/stat-mem-1.h b/gcc/testsuite/g++.dg/modules/stat-mem-1.h
new file mode 100644
index 0000000..b5703ea
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/stat-mem-1.h
@@ -0,0 +1,6 @@
+
+struct fpu {
+ struct NAME {
+ int state;
+ } NAME;
+};
diff --git a/gcc/testsuite/g++.dg/modules/stat-mem-1_a.H b/gcc/testsuite/g++.dg/modules/stat-mem-1_a.H
new file mode 100644
index 0000000..6daa137
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/stat-mem-1_a.H
@@ -0,0 +1,5 @@
+// { dg-additional-options -fmodule-header }
+// PR c++ 98530 stat-hack inside a structure
+// { dg-module-cmi {} }
+
+#include "stat-mem-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/stat-mem-1_b.C b/gcc/testsuite/g++.dg/modules/stat-mem-1_b.C
new file mode 100644
index 0000000..9b83d4e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/stat-mem-1_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include "stat-mem-1.h"
+import "stat-mem-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/stat-tpl-1_a.H b/gcc/testsuite/g++.dg/modules/stat-tpl-1_a.H
new file mode 100644
index 0000000..fa4991f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/stat-tpl-1_a.H
@@ -0,0 +1,13 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+template<typename _CharT>
+static inline __attribute__((__always_inline__)) constexpr void
+__constant_char_array_p ()
+{
+}
+
+inline void foo ()
+{
+ __constant_char_array_p<char> ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/static-1_a.C b/gcc/testsuite/g++.dg/modules/static-1_a.C
new file mode 100644
index 0000000..6bfced5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/static-1_a.C
@@ -0,0 +1,11 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+
+module;
+# 5 "gmf" 1
+static void Bar () {}
+# 7 "" 2
+export module Foo;
+// { dg-module-cmi Foo }
+
+static void Baz () {}
+
diff --git a/gcc/testsuite/g++.dg/modules/static-1_b.C b/gcc/testsuite/g++.dg/modules/static-1_b.C
new file mode 100644
index 0000000..f2f170d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/static-1_b.C
@@ -0,0 +1,18 @@
+// { dg-additional-options "-fmodules-ts" }
+
+module Foo;
+
+void Frob ()
+{
+ Bar (); // { dg-error "not declared" }
+ Baz (); // { dg-error "not declared" }
+}
+
+static void Baz () {}
+static void Bar () {}
+
+void Quux ()
+{
+ Bar ();
+ Baz ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/static-1_c.C b/gcc/testsuite/g++.dg/modules/static-1_c.C
new file mode 100644
index 0000000..a7ab89a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/static-1_c.C
@@ -0,0 +1,10 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import Foo;
+
+void Frob ()
+{
+ Bar (); // { dg-error "not declared" }
+ Baz (); // { dg-error "not declared" }
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/std-1_a.C b/gcc/testsuite/g++.dg/modules/std-1_a.C
new file mode 100644
index 0000000..53bdc7a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/std-1_a.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+
+namespace std
+{
+int bob;
+}
diff --git a/gcc/testsuite/g++.dg/modules/std-1_b.C b/gcc/testsuite/g++.dg/modules/std-1_b.C
new file mode 100644
index 0000000..3fa4f40
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/std-1_b.C
@@ -0,0 +1,5 @@
+// { dg-additional-options -fmodules-ts }
+
+module foo;
+
+int *i = &std::bob;
diff --git a/gcc/testsuite/g++.dg/modules/stdio-1_a.H b/gcc/testsuite/g++.dg/modules/stdio-1_a.H
new file mode 100644
index 0000000..9eda233
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/stdio-1_a.H
@@ -0,0 +1,14 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodule-header -fdump-lang-module" }
+// { dg-module-cmi {} }
+
+#ifndef _PROXY_STDIO_H
+#define _PROXY_STDIO_H
+/* Proxy stdio.h, because command line in flux. */
+#include <stdio.h>
+
+#endif
+// There should be *lots* of depsets (209 for glibc today)
+// { dg-final { scan-lang-dump {Writing section:60 } module } }
+// { dg-final { scan-lang-dump {Depset:0 decl entity:[0-9]* function_decl:'::printf'} module } }
+// { dg-final { scan-lang-dump {Depset:1 binding namespace_decl:'::printf'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/stdio-1_b.C b/gcc/testsuite/g++.dg/modules/stdio-1_b.C
new file mode 100644
index 0000000..f4ad984
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/stdio-1_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+
+import "stdio-1_a.H";
+
+int main ()
+{
+ printf ("hello world!\n");
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Bindings '::printf' section:} module } }
+// { dg-final { scan-lang-dump {Lazily binding '::printf'@'[^\n]*stdio-1_a.H' section:} module } }
+// Make sure we don't load spurious stuff
+// { dg-final { scan-lang-dump-not {binding '::scanf'@'[^\n]*'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/stdns_a.C b/gcc/testsuite/g++.dg/modules/stdns_a.C
new file mode 100644
index 0000000..2d2cdbb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/stdns_a.C
@@ -0,0 +1,13 @@
+// { dg-additional-options -fmodules-ts }
+
+export module std;
+// { dg-module-cmi std }
+
+namespace std
+{
+export int frob ()
+{
+ return 1;
+}
+
+}
diff --git a/gcc/testsuite/g++.dg/modules/stdns_b.C b/gcc/testsuite/g++.dg/modules/stdns_b.C
new file mode 100644
index 0000000..c00e120
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/stdns_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+import std;
+
+int main ()
+{
+ return !std::frob ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/string-1_a.H b/gcc/testsuite/g++.dg/modules/string-1_a.H
new file mode 100644
index 0000000..77c565f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/string-1_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+
+// { dg-module-cmi {} }
+#include <string>
diff --git a/gcc/testsuite/g++.dg/modules/string-1_b.C b/gcc/testsuite/g++.dg/modules/string-1_b.C
new file mode 100644
index 0000000..098289c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/string-1_b.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include <string>
+import "string-1_a.H";
+
diff --git a/gcc/testsuite/g++.dg/modules/string-view1.C b/gcc/testsuite/g++.dg/modules/string-view1.C
new file mode 100644
index 0000000..f5391f3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/string-view1.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+module;
+#include <cstdio>
+#include <string_view>
+export module foo;
+// { dg-module-cmi foo }
diff --git a/gcc/testsuite/g++.dg/modules/string-view2.C b/gcc/testsuite/g++.dg/modules/string-view2.C
new file mode 100644
index 0000000..dad30ea
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/string-view2.C
@@ -0,0 +1,56 @@
+// { dg-additional-options "-fmodules-ts" }
+// reduced from string-view1 through cvise. Broken under c++2a too.
+// we were creating a hash slot, and then doing another lookup without
+// initializing that first slot :(
+
+namespace std {
+typedef int a;
+int b;
+decltype(nullptr) c;
+namespace xyz {}
+__builtin_va_list d;
+int n;
+int e;
+int f;
+int g;
+int h;
+int i;
+int j;
+int k;
+typedef struct l m;
+typedef struct aa w;
+typedef struct x o;
+typedef x p;
+long q;
+long r;
+typedef l s;
+extern p ab;
+void t();
+void v();
+extern p ac;
+void ad();
+int ae;
+int af;
+extern p ag;
+extern p ah;
+void ai();
+void y();
+int aj;
+int ak;
+int al;
+char am;
+int an;
+a ao;
+int ap;
+int aq;
+void z();
+int ar;
+int as;
+void at();
+void au();
+void av();
+void aw();
+int u;
+namespace zz {
+}
+}
diff --git a/gcc/testsuite/g++.dg/modules/sv-1.h b/gcc/testsuite/g++.dg/modules/sv-1.h
new file mode 100644
index 0000000..113ae1b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/sv-1.h
@@ -0,0 +1,75 @@
+template<bool __v>
+struct integral_constant {};
+
+typedef integral_constant<true> true_type;
+typedef integral_constant<false> false_type;
+
+template<typename>
+struct __is_not_void_helper
+ : public true_type { };
+
+template<> struct __is_not_void_helper<void>
+ : public false_type { };
+
+template<typename _Tp, typename _Up>
+struct is_same
+ : public integral_constant<__is_same_as(_Tp, _Up)> {};
+
+template<typename _Iterator>
+struct iterator_traits;
+
+template<typename _Tp> requires __is_not_void_helper<_Tp>::value
+struct iterator_traits<_Tp*>;
+
+template<typename _Tp>
+struct iterator {};
+
+template<typename _Iterator>
+class reverse_iterator
+ : public iterator<typename iterator_traits<_Iterator>::value_type>
+{
+};
+
+template<typename _Tp> struct _Deque_iterator;
+
+template<typename _Tp> void __copy_move_a1(_Deque_iterator<_Tp>);
+
+template<typename _Iterator>
+decltype (NOPE (_Iterator{})) __niter_base (reverse_iterator<_Iterator> __it);
+
+
+template<typename _II>
+inline void __copy_move_a (_II __first)
+{
+ __copy_move_a1 (__niter_base (__first));
+}
+
+template<typename _CharT>
+struct __gnu_char_traits
+{
+ static void move (const char* __s2)
+ {
+ __copy_move_a (__s2);
+ }
+};
+
+class string_view
+{
+ using t = __gnu_char_traits<char>;
+
+public:
+ string_view (const char* __str) noexcept;
+};
+
+template<typename _Ret>
+void __stoa ()
+{
+ struct _Range_chk {
+ static bool _S_chk (false_type) { return false; }
+ static bool _S_chk (true_type) { return true; }
+ };
+
+ _Range_chk::_S_chk (is_same<_Ret, long>{});
+}
+
+inline void stoi () { __stoa<long> (); }
diff --git a/gcc/testsuite/g++.dg/modules/sv-1_a.C b/gcc/testsuite/g++.dg/modules/sv-1_a.C
new file mode 100644
index 0000000..8d866fd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/sv-1_a.C
@@ -0,0 +1,7 @@
+// { dg-additional-options {-fmodules-ts -std=c++2a} }
+module;
+#include "sv-1.h"
+export module Hello;
+// { dg-module-cmi Hello }
+
+export void SayHello (string_view const &name);
diff --git a/gcc/testsuite/g++.dg/modules/sv-1_b.C b/gcc/testsuite/g++.dg/modules/sv-1_b.C
new file mode 100644
index 0000000..72dbe59
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/sv-1_b.C
@@ -0,0 +1,15 @@
+// { dg-additional-options {-std=c++2a -fmodules-ts -fno-module-lazy} }
+#include "sv-1.h"
+import Hello;
+
+#if 0
+int main ()
+{
+ SayHello ("World");
+}
+#endif
+
+void foo ()
+{
+ is_same<long, int> q;
+}
diff --git a/gcc/testsuite/g++.dg/modules/sym-subst-1.C b/gcc/testsuite/g++.dg/modules/sym-subst-1.C
new file mode 100644
index 0000000..96ee25c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/sym-subst-1.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts" }
+export module bob.stuart.kevin;
+// { dg-module-cmi bob.stuart.kevin }
+
+class mytype
+{
+};
+
+void frob (mytype &)
+{
+}
+
+// { dg-final { scan-assembler {_ZW3bob6stuart5kevinE4frobRW_2E6mytype:} } }
diff --git a/gcc/testsuite/g++.dg/modules/sym-subst-2_a.C b/gcc/testsuite/g++.dg/modules/sym-subst-2_a.C
new file mode 100644
index 0000000..cd0a79d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/sym-subst-2_a.C
@@ -0,0 +1,15 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module bob.stuart;
+// { dg-module-cmi bob.stuart }
+
+template <typename T> void inner (T &)
+{
+}
+
+export template <typename T> void foo (T &x)
+{
+ inner (x);
+}
+
+// { dg-final { scan-assembler-not {all must have scan-assembler} } }
diff --git a/gcc/testsuite/g++.dg/modules/sym-subst-2_b.C b/gcc/testsuite/g++.dg/modules/sym-subst-2_b.C
new file mode 100644
index 0000000..fc3db0a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/sym-subst-2_b.C
@@ -0,0 +1,18 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module bob.kevin;
+// { dg-module-cmi bob.kevin }
+
+import bob.stuart;
+
+class mytype
+{
+};
+
+void bar (mytype &m)
+{
+ foo (m);
+}
+
+// { dg-final { scan-assembler {_ZW3bob5kevinE3barRW_1E6mytype:} } }
+// { dg-final { scan-assembler {_ZW3bob6stuartE5innerIW_05kevinE6mytypeEvRT_:} } }
diff --git a/gcc/testsuite/g++.dg/modules/sym-subst-3_a.C b/gcc/testsuite/g++.dg/modules/sym-subst-3_a.C
new file mode 100644
index 0000000..bd958dc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/sym-subst-3_a.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts -std=c++17" }
+export module t.s;
+// { dg-module-cmi t.s }
+
+struct s;
+
+export s *S;
+
+// { dg-final { scan-assembler {.globa?l[ \t]*_?S\n} } }
diff --git a/gcc/testsuite/g++.dg/modules/sym-subst-3_b.C b/gcc/testsuite/g++.dg/modules/sym-subst-3_b.C
new file mode 100644
index 0000000..9ae3f8f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/sym-subst-3_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -std=c++17" }
+export module t;
+// { dg-module-cmi t }
+import t.s;
+struct t;
+export void f (t*, decltype (S)){}
+// { dg-final { scan-assembler {_Z1fPW1tE1tPW_01sE1s:} } }
diff --git a/gcc/testsuite/g++.dg/modules/sym-subst-4.C b/gcc/testsuite/g++.dg/modules/sym-subst-4.C
new file mode 100644
index 0000000..d2266c4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/sym-subst-4.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts" }
+export module zero.eins.zwei.drei.vier.funf.sechs.sieben.acht.neun;
+// We're in cologne!
+// { dg-module-cmi zero.eins.zwei.drei.vier.funf.sechs.sieben.acht.neun }
+
+class mytype
+{
+};
+
+void frob (mytype &)
+{
+}
+
+// { dg-final { scan-assembler {_ZW4zero4eins4zwei4drei4vier4funf5sechs6sieben4acht4neunE4frobRW_9E6mytype:} } }
diff --git a/gcc/testsuite/g++.dg/modules/sym-subst-5.C b/gcc/testsuite/g++.dg/modules/sym-subst-5.C
new file mode 100644
index 0000000..1e26e75
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/sym-subst-5.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts" }
+export module zero.eins.zwei.drei.vier.funf.sechs.sieben.acht.neun.zehn;
+// We're in cologne!
+// { dg-module-cmi zero.eins.zwei.drei.vier.funf.sechs.sieben.acht.neun.zehn }
+
+class mytype
+{
+};
+
+void frob (mytype &)
+{
+}
+
+// { dg-final { scan-assembler {_ZW4zero4eins4zwei4drei4vier4funf5sechs6sieben4acht4neun4zehnE4frobRWW0_E6mytype:} } }
diff --git a/gcc/testsuite/g++.dg/modules/sym-subst-6.C b/gcc/testsuite/g++.dg/modules/sym-subst-6.C
new file mode 100644
index 0000000..0a9ac6d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/sym-subst-6.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts" }
+export module zero.eins.zwei.drei.vier.funf.sechs.sieben.acht.neun.zehn.elf;
+// We're in cologne!
+// { dg-module-cmi zero.eins.zwei.drei.vier.funf.sechs.sieben.acht.neun.zehn.elf }
+
+class mytype
+{
+};
+
+void frob (mytype &)
+{
+}
+
+// { dg-final { scan-assembler {_ZW4zero4eins4zwei4drei4vier4funf5sechs6sieben4acht4neun4zehn3elfE4frobRWW1_E6mytype:} } }
diff --git a/gcc/testsuite/g++.dg/modules/sys/alias-2_a.H b/gcc/testsuite/g++.dg/modules/sys/alias-2_a.H
new file mode 100644
index 0000000..5a05808
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/sys/alias-2_a.H
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodule-header -isystem [srcdir]/sys" }
+// { dg-module-cmi {} }
+
+#ifndef ALIAS_2_A_SYS
+#define ALIAS_2_A_SYS
+
+int frob (int);
+
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/sys/inext-1.H b/gcc/testsuite/g++.dg/modules/sys/inext-1.H
new file mode 100644
index 0000000..1ecfe80
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/sys/inext-1.H
@@ -0,0 +1,2 @@
+#define NEXT bob
+int foo ();
diff --git a/gcc/testsuite/g++.dg/modules/tdef-1_a.C b/gcc/testsuite/g++.dg/modules/tdef-1_a.C
new file mode 100644
index 0000000..6bec202
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-1_a.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module tdef;
+// { dg-module-cmi tdef }
+
+export struct A
+{
+ typedef int I;
+};
diff --git a/gcc/testsuite/g++.dg/modules/tdef-1_b.C b/gcc/testsuite/g++.dg/modules/tdef-1_b.C
new file mode 100644
index 0000000..627d672
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-1_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import tdef;
+
+A::I main ()
+{
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/tdef-2_a.C b/gcc/testsuite/g++.dg/modules/tdef-2_a.C
new file mode 100644
index 0000000..f7abf30
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-2_a.C
@@ -0,0 +1,8 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module tdef;
+// { dg-module-cmi tdef }
+
+export typedef int I;
+typedef int J;
+
diff --git a/gcc/testsuite/g++.dg/modules/tdef-2_b.C b/gcc/testsuite/g++.dg/modules/tdef-2_b.C
new file mode 100644
index 0000000..128e95e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-2_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+
+module tdef;
+
+I yup;
+J yupper;
diff --git a/gcc/testsuite/g++.dg/modules/tdef-2_c.C b/gcc/testsuite/g++.dg/modules/tdef-2_c.C
new file mode 100644
index 0000000..387a41d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-2_c.C
@@ -0,0 +1,14 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import tdef;
+
+I main ()
+{
+ return 0;
+}
+
+J nope; // { dg-error "does not name a type" }
+
+typedef char J;
+
+static J ok;
diff --git a/gcc/testsuite/g++.dg/modules/tdef-3_a.C b/gcc/testsuite/g++.dg/modules/tdef-3_a.C
new file mode 100644
index 0000000..8cc2276
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-3_a.C
@@ -0,0 +1,7 @@
+// { dg-module-do run }
+
+// { dg-additional-options -fmodules-ts }
+export module frob;
+// { dg-module-cmi frob }
+
+export typedef struct { int m; } frob;
diff --git a/gcc/testsuite/g++.dg/modules/tdef-3_b.C b/gcc/testsuite/g++.dg/modules/tdef-3_b.C
new file mode 100644
index 0000000..9980acf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-3_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+export module quux;
+// { dg-module-cmi quux }
+import frob;
+
+export int foo (frob *p)
+{
+ return p->m;
+}
diff --git a/gcc/testsuite/g++.dg/modules/tdef-3_c.C b/gcc/testsuite/g++.dg/modules/tdef-3_c.C
new file mode 100644
index 0000000..378415d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-3_c.C
@@ -0,0 +1,11 @@
+// { dg-additional-options -fmodules-ts }
+
+import frob;
+import quux;
+
+int main ()
+{
+ frob f {2};
+
+ return !(foo (&f) == 2);
+}
diff --git a/gcc/testsuite/g++.dg/modules/tdef-4_a.C b/gcc/testsuite/g++.dg/modules/tdef-4_a.C
new file mode 100644
index 0000000..6136b38
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-4_a.C
@@ -0,0 +1,16 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export struct pthread_attr_t
+// guess where this came from?
+{
+ int m;
+};
+typedef struct pthread_attr_t pthread_attr_t;
+
+struct bob
+{
+};
+export typedef struct bob bob;
diff --git a/gcc/testsuite/g++.dg/modules/tdef-4_b.C b/gcc/testsuite/g++.dg/modules/tdef-4_b.C
new file mode 100644
index 0000000..af488e9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-4_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+module foo;
+
+pthread_attr_t obj1;
+struct pthread_attr_t obj2;
+
+bob obj3;
+struct bob obj4; // OK -- we see the implicit typedef
diff --git a/gcc/testsuite/g++.dg/modules/tdef-4_c.C b/gcc/testsuite/g++.dg/modules/tdef-4_c.C
new file mode 100644
index 0000000..a85a4d0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-4_c.C
@@ -0,0 +1,10 @@
+// { dg-additional-options -fmodules-ts }
+
+import foo;
+struct pthread_attr_t obj2;
+pthread_attr_t obj1; // OK -- we see the implicit typedef
+
+bob obj4;
+// the structure tag is not exported. We find the typedef-name, which
+// is ill-formed
+struct bob obj5; // { dg-error "using typedef-name" }
diff --git a/gcc/testsuite/g++.dg/modules/tdef-5_a.C b/gcc/testsuite/g++.dg/modules/tdef-5_a.C
new file mode 100644
index 0000000..4d23ae1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-5_a.C
@@ -0,0 +1,7 @@
+// { dg-additional-options -fmodules-ts }
+export module foo;
+// { dg-module-cmi foo }
+
+typedef float _IO_lock_t;
+
+_IO_lock_t _lock;
diff --git a/gcc/testsuite/g++.dg/modules/tdef-5_b.C b/gcc/testsuite/g++.dg/modules/tdef-5_b.C
new file mode 100644
index 0000000..d37b7e2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-5_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options -fmodules-ts }
+module foo;
+
+_IO_lock_t bob ()
+{
+ return _lock;
+}
diff --git a/gcc/testsuite/g++.dg/modules/tdef-6_a.H b/gcc/testsuite/g++.dg/modules/tdef-6_a.H
new file mode 100644
index 0000000..aff5994
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-6_a.H
@@ -0,0 +1,12 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+typedef struct x
+{
+ int __count;
+} X;
+
+typedef struct
+{
+ int __count;
+} __mbstate_t;
diff --git a/gcc/testsuite/g++.dg/modules/tdef-6_b.C b/gcc/testsuite/g++.dg/modules/tdef-6_b.C
new file mode 100644
index 0000000..2d12a2c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-6_b.C
@@ -0,0 +1,18 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-alias" }
+
+typedef struct
+{
+ int __count;
+} __mbstate_t;
+
+typedef struct x
+{
+ int __count;
+} X;
+
+import "tdef-6_a.H";
+
+X y;
+__mbstate_t x;
+
+// { dg-final { scan-lang-dump {Read:-[0-9]'s named merge key \(matched\) type_decl:'::__mbstate_t'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/tdef-7.h b/gcc/testsuite/g++.dg/modules/tdef-7.h
new file mode 100644
index 0000000..5bc21e1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-7.h
@@ -0,0 +1,7 @@
+
+constexpr void duration_cast ()
+{
+ // the constexpr's body's clone merely duplicates the TYPE_DECL, it
+ // doesn't create a kosher typedef
+ typedef int __to_rep;
+}
diff --git a/gcc/testsuite/g++.dg/modules/tdef-7_a.H b/gcc/testsuite/g++.dg/modules/tdef-7_a.H
new file mode 100644
index 0000000..9c6db65
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-7_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "tdef-7.h"
diff --git a/gcc/testsuite/g++.dg/modules/tdef-7_b.C b/gcc/testsuite/g++.dg/modules/tdef-7_b.C
new file mode 100644
index 0000000..c526ca8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-7_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias-uid" }
+
+#include "tdef-7.h"
+import "tdef-7_a.H";
+
+// { dg-final { scan-lang-dump-times {merge key \(matched\) function_decl:'::duration_cast} 1 module } }
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
+// { dg-final { scan-lang-dump-times {merge key \(unique\) type_decl:'#null#'} 2 module } }
+// { dg-final { scan-lang-dump-times {Cloned:-[0-9]* typedef integer_type:'::duration_cast::__to_rep'} 1 module } }
diff --git a/gcc/testsuite/g++.dg/modules/tdef-8_a.C b/gcc/testsuite/g++.dg/modules/tdef-8_a.C
new file mode 100644
index 0000000..3ad2094
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-8_a.C
@@ -0,0 +1,12 @@
+// { dg-additional-options -fmodules-ts }
+
+export module bob;
+// { dg-module-cmi bob }
+
+// from tr1/type_traits
+export struct __sfinae_types
+{
+ // anon struct with tdef name
+ typedef struct { int i; } __two;
+};
+
diff --git a/gcc/testsuite/g++.dg/modules/tdef-8_b.C b/gcc/testsuite/g++.dg/modules/tdef-8_b.C
new file mode 100644
index 0000000..2cf59d7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-8_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+import bob;
+
+int frob (__sfinae_types::__two *p)
+{
+ return p->i;
+}
diff --git a/gcc/testsuite/g++.dg/modules/tdef-inst-1.h b/gcc/testsuite/g++.dg/modules/tdef-inst-1.h
new file mode 100644
index 0000000..757113c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-inst-1.h
@@ -0,0 +1,14 @@
+
+template <typename T>
+class basic_string;
+
+typedef basic_string<char> string;
+
+template <typename T>
+class basic_string
+{
+ public:
+ string Frob ();
+
+ basic_string (int);
+};
diff --git a/gcc/testsuite/g++.dg/modules/tdef-inst-1_a.C b/gcc/testsuite/g++.dg/modules/tdef-inst-1_a.C
new file mode 100644
index 0000000..ab302bc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-inst-1_a.C
@@ -0,0 +1,17 @@
+// { dg-additional-options -fmodules-ts }
+
+// The instantiation of the *definition* of basic_string is used in
+// importers, *after* they have instantiated a declaration of it *and*
+// created type variants.
+
+module;
+
+#include "tdef-inst-1.h"
+
+export module foo;
+// { dg-module-cmi foo }
+
+export inline int greeter (string const &bob)
+{
+ return sizeof (bob); // instantiates string
+}
diff --git a/gcc/testsuite/g++.dg/modules/tdef-inst-1_b.C b/gcc/testsuite/g++.dg/modules/tdef-inst-1_b.C
new file mode 100644
index 0000000..ccf7052
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tdef-inst-1_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+
+#include "tdef-inst-1.h"
+import foo;
+
+string Quux ()
+{
+ return 1; // failed to find converting ctor of string
+}
diff --git a/gcc/testsuite/g++.dg/modules/thunk-1_a.C b/gcc/testsuite/g++.dg/modules/thunk-1_a.C
new file mode 100644
index 0000000..7652400
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/thunk-1_a.C
@@ -0,0 +1,23 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export struct Base
+{
+ virtual ~Base () {}
+ int m;
+};
+
+// Force the creation of implicit members, because we get that wrong
+// in the importer and think its imported (as of 2018-11-27 this
+// causes an ICE, previously it happened to work in this particular
+// testcase.
+Base x;
+
+export struct Derived : virtual Base
+{
+ ~Derived () {}
+};
+
+Derived y;
diff --git a/gcc/testsuite/g++.dg/modules/thunk-1_b.C b/gcc/testsuite/g++.dg/modules/thunk-1_b.C
new file mode 100644
index 0000000..99eb029
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/thunk-1_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options -fmodules-ts }
+export module baz;
+// { dg-module-cmi baz }
+
+import foo;
+
+export struct Container : virtual Derived
+{
+ Container () {}
+ ~Container () {}
+};
+
+
+
diff --git a/gcc/testsuite/g++.dg/modules/tinfo-1.C b/gcc/testsuite/g++.dg/modules/tinfo-1.C
new file mode 100644
index 0000000..43dadc8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tinfo-1.C
@@ -0,0 +1,20 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-uid" }
+export module Foo;
+// { dg-module-cmi Foo }
+
+struct B
+{
+};
+
+struct C : B
+{
+};
+
+inline void foo ()
+{
+ throw C ();
+}
+
+// { dg-final { scan-lang-dump {Writing typedef type_decl:'::__si_class_type_info_pseudo_9'} module } }
+// { dg-final { scan-lang-dump {Wrote tinfo_type:-[0-9]* 9 '::__si_class_type_info_pseudo_9'} module } }
+// { dg-final { scan-lang-dump-not {Writing tree:-[0-9]* type_decl:'__si_class_type_info_pseudo_9'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/tinfo-2_a.H b/gcc/testsuite/g++.dg/modules/tinfo-2_a.H
new file mode 100644
index 0000000..027abd2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tinfo-2_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodule-header" }
+// { dg-module-cmi {} }
+
+#include <typeinfo>
diff --git a/gcc/testsuite/g++.dg/modules/tinfo-2_b.C b/gcc/testsuite/g++.dg/modules/tinfo-2_b.C
new file mode 100644
index 0000000..15c5bf2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tinfo-2_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+import "tinfo-2_a.H";
+
diff --git a/gcc/testsuite/g++.dg/modules/tmpl-part-req-1.h b/gcc/testsuite/g++.dg/modules/tmpl-part-req-1.h
new file mode 100644
index 0000000..09de429
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tmpl-part-req-1.h
@@ -0,0 +1,15 @@
+
+template<typename _Iterator, typename>
+struct Trait;
+
+template<typename _Iterator>
+struct Trait<_Iterator, void> {};
+
+template<typename _Iterator>
+requires true
+struct Trait<_Iterator, void>
+{
+ template<typename _Iter> struct __diff {};
+
+ template<typename _Iter> requires true struct __diff<_Iter> {};
+};
diff --git a/gcc/testsuite/g++.dg/modules/tmpl-part-req-1_a.H b/gcc/testsuite/g++.dg/modules/tmpl-part-req-1_a.H
new file mode 100644
index 0000000..20804d7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tmpl-part-req-1_a.H
@@ -0,0 +1,3 @@
+// { dg-additional-options "-fmodule-header -std=c++2a" }
+// { dg-module-cmi {} }
+#include "tmpl-part-req-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/tmpl-part-req-1_b.C b/gcc/testsuite/g++.dg/modules/tmpl-part-req-1_b.C
new file mode 100644
index 0000000..4c00d54
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tmpl-part-req-1_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-std=c++2a -fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "tmpl-part-req-1.h"
+import "tmpl-part-req-1_a.H";
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/tmpl-part-req-2.h b/gcc/testsuite/g++.dg/modules/tmpl-part-req-2.h
new file mode 100644
index 0000000..0ca0593
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tmpl-part-req-2.h
@@ -0,0 +1,24 @@
+
+template<typename _Iterator, typename>
+struct Trait;
+
+template<typename _Iterator>
+struct Trait<_Iterator, void> {};
+
+template<typename _Iterator>
+requires true && true
+struct Trait<_Iterator, void>
+{
+ template<typename _Iter> struct __cat {};
+
+ template<typename _Iter> requires true struct __cat<_Iter> {};
+};
+
+template<typename _Iterator>
+requires true
+struct Trait<_Iterator, void>
+{
+ template<typename _Iter> struct __diff {};
+
+ template<typename _Iter> requires true struct __diff<_Iter> {};
+};
diff --git a/gcc/testsuite/g++.dg/modules/tmpl-part-req-2_a.H b/gcc/testsuite/g++.dg/modules/tmpl-part-req-2_a.H
new file mode 100644
index 0000000..66b97ea
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tmpl-part-req-2_a.H
@@ -0,0 +1,3 @@
+// { dg-additional-options "-fmodule-header -std=c++2a" }
+// { dg-module-cmi {} }
+#include "tmpl-part-req-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/tmpl-part-req-2_b.C b/gcc/testsuite/g++.dg/modules/tmpl-part-req-2_b.C
new file mode 100644
index 0000000..1176f60
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tmpl-part-req-2_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-std=c++2a -fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "tmpl-part-req-2.h"
+import "tmpl-part-req-2_a.H";
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/tname-spec-1_a.H b/gcc/testsuite/g++.dg/modules/tname-spec-1_a.H
new file mode 100644
index 0000000..d517742
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tname-spec-1_a.H
@@ -0,0 +1,15 @@
+// { dg-module-do run }
+// { dg-additional-options -fmodule-header }
+
+template<template<typename> class _Op>
+using __detected_or_t = long;
+
+template<typename _Ptr>
+struct pointer_traits
+{
+ template<typename _Tp>
+ using __difference_type = typename _Tp::difference_type;
+
+ using difference_type = __detected_or_t<__difference_type>;
+};
+
diff --git a/gcc/testsuite/g++.dg/modules/tname-spec-1_b.C b/gcc/testsuite/g++.dg/modules/tname-spec-1_b.C
new file mode 100644
index 0000000..5028b788
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tname-spec-1_b.C
@@ -0,0 +1,16 @@
+// { dg-additional-options -fmodules-ts }
+
+#include <typeinfo>
+import "tname-spec-1_a.H";
+
+struct X
+{
+ using difference_type = char;
+};
+
+pointer_traits<X>::difference_type x;
+
+int main ()
+{
+ return !(typeid (x) == typeid (long));
+}
diff --git a/gcc/testsuite/g++.dg/modules/token-1.C b/gcc/testsuite/g++.dg/modules/token-1.C
new file mode 100644
index 0000000..50eee4c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/token-1.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+# 3 __FILE__ 1
+module ; // { dg-error "cannot be in included file" }
+export module bob; // { dg-error "cannot be in included file" }
+# 6 "" 2
+// { dg-module-cmi !bob }
+// { dg-prune-output "not writing module" }
diff --git a/gcc/testsuite/g++.dg/modules/token-2_a.C b/gcc/testsuite/g++.dg/modules/token-2_a.C
new file mode 100644
index 0000000..a1dfbf7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/token-2_a.C
@@ -0,0 +1,5 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+# 1 "other_name"
+module ;
+export module bob;
+// { dg-module-cmi bob }
diff --git a/gcc/testsuite/g++.dg/modules/token-2_b.C b/gcc/testsuite/g++.dg/modules/token-2_b.C
new file mode 100644
index 0000000..52b7498
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/token-2_b.C
@@ -0,0 +1,5 @@
+// { dg-additional-options -fmodules-ts }
+#define SEMI ; // this is ok since p1857
+import bob SEMI
+#define IMPORT import // { dg-error "does not name a type" }
+IMPORT bob ;
diff --git a/gcc/testsuite/g++.dg/modules/token-3.C b/gcc/testsuite/g++.dg/modules/token-3.C
new file mode 100644
index 0000000..5bab426
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/token-3.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+# 3 __FILE__ 1
+export module bob; // { dg-error "in included file" }
+# 6 "" 2
+// { dg-module-cmi !bob }
+// { dg-prune-output "not writing module" }
diff --git a/gcc/testsuite/g++.dg/modules/token-4.C b/gcc/testsuite/g++.dg/modules/token-4.C
new file mode 100644
index 0000000..5a85237
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/token-4.C
@@ -0,0 +1,5 @@
+// { dg-additional-options -fmodules-ts }
+#define MODULE module // { dg-error "does not name a type" }
+export MODULE bob; // { dg-error "may only occur after" }
+// { dg-module-cmi !bob }
+// { dg-prune-output "not writing module" }
diff --git a/gcc/testsuite/g++.dg/modules/token-5.C b/gcc/testsuite/g++.dg/modules/token-5.C
new file mode 100644
index 0000000..29d3ec8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/token-5.C
@@ -0,0 +1,10 @@
+// { dg-additional-options -fmodules-ts }
+module;
+
+class X; // { dg-error "global module fragment contents" }
+
+class Y;
+
+export module frob;
+// { dg-module-cmi !frob }
+// { dg-prune-output "not writing module" }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-alias-1.h b/gcc/testsuite/g++.dg/modules/tpl-alias-1.h
new file mode 100644
index 0000000..00f2d9b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-alias-1.h
@@ -0,0 +1,70 @@
+template<typename _Ptr> struct pointer_traits;
+
+template<typename _Tp>
+struct pointer_traits<_Tp*>
+{
+ template<typename _Up> using rebind = _Up*;
+};
+
+template<typename _Ptr, typename _Tp>
+using __ptr_rebind = typename pointer_traits<_Ptr>::template rebind<_Tp>;
+
+template<typename _Tp>
+struct allocator
+{
+ typedef _Tp value_type;
+ typedef _Tp* pointer;
+};
+
+template<typename _Alloc> struct allocator_traits;
+
+template<typename _Tp>
+struct allocator_traits<allocator<_Tp>>
+{
+ using pointer = _Tp*;
+ template<typename _Up>
+ using rebind_alloc = allocator<_Up>;
+};
+
+template<typename _Alloc, typename = typename _Alloc::value_type>
+struct __alloc_traits
+ : allocator_traits<_Alloc>
+{
+ typedef _Alloc allocator_type;
+ typedef allocator_traits<_Alloc> _Base_type;
+ template<typename _Tp>
+ struct rebind
+ {
+ typedef typename _Base_type::template rebind_alloc<_Tp> other;
+ };
+};
+
+template<typename _Ref, typename _Ptr>
+struct _Deque_iterator
+{
+ template<typename _CvTp>
+ using __iter = _Deque_iterator<_CvTp&, __ptr_rebind<_Ptr, _CvTp>>;
+
+ typedef __ptr_rebind<_Ptr, long> _Elt_pointer;
+ typedef __ptr_rebind<_Ptr, _Elt_pointer> _Map_pointer;
+};
+
+template<typename _Alloc>
+struct _Deque_base
+{
+ typedef typename __alloc_traits<_Alloc>::template rebind<long>::other _Tp_alloc_type;
+
+ typedef __alloc_traits<_Tp_alloc_type> _Alloc_traits;
+
+ typedef typename _Alloc_traits::pointer _Ptr;
+
+ typedef _Deque_iterator<long&, _Ptr> iterator;
+
+ typedef typename iterator::_Map_pointer _Map_pointer;
+};
+
+
+inline void stack ()
+{
+ _Deque_base<allocator<long>> c;
+}
diff --git a/gcc/testsuite/g++.dg/modules/tpl-alias-1_a.H b/gcc/testsuite/g++.dg/modules/tpl-alias-1_a.H
new file mode 100644
index 0000000..502a649
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-alias-1_a.H
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodule-header -fdump-lang-module-alias-uid" }
+// { dg-module-cmi {} }
+
+#include "tpl-alias-1.h"
+
+// { dg-final { scan-lang-dump {Writing named:-[0-9]* template_decl:'::allocator_traits<::allocator<long int>>::template rebind_alloc<_Up>'} module } }
+// { dg-final { scan-lang-dump {Writing decl spec:-[0-9]* type_decl:'::allocator_traits<::allocator<long int>>::rebind_alloc<_Up>'} module } }
+// { dg-final { scan-lang-dump {Writing:-[0-9]*'s decl spec merge key \(specialization\) type_decl:'::allocator_traits<::allocator<long int>>::rebind_alloc<_Up>'} module } }
+// { dg-final { scan-lang-dump {Wrote\(-[0-9]*\) alias template type_decl:'::allocator_traits<::allocator<long int>>::rebind_alloc<_Up>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-alias-1_b.C b/gcc/testsuite/g++.dg/modules/tpl-alias-1_b.C
new file mode 100644
index 0000000..59fd09c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-alias-1_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-uid-alias" }
+
+#include "tpl-alias-1.h"
+import "tpl-alias-1_a.H";
+
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s named merge key \(matched\) template_decl:'::allocator_traits<::allocator<long int>>::template rebind_alloc'} module } }
+// { dg-final { scan-lang-dump {Read:-[0-9]*'s decl spec merge key \(matched\) type_decl:'::allocator_traits<::allocator<_Tp>>::rebind_alloc'} module } }
+// { dg-final { scan-lang-dump {Read alias template type_decl:'::allocator_traits<::allocator<long int>>::rebind_alloc<_Up>'} module } }
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-ary-1.h b/gcc/testsuite/g++.dg/modules/tpl-ary-1.h
new file mode 100644
index 0000000..2f745af
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-ary-1.h
@@ -0,0 +1,15 @@
+
+int ary[4];
+extern int unb[];
+typedef int z[0];
+
+
+template<typename _Tp>
+struct __aligned_membuf
+{
+ unsigned char _M_storage[sizeof(_Tp)];
+ _Tp bob[5];
+
+ typedef _Tp ary[5];
+ typedef const ary c_ary;
+};
diff --git a/gcc/testsuite/g++.dg/modules/tpl-ary-1_a.H b/gcc/testsuite/g++.dg/modules/tpl-ary-1_a.H
new file mode 100644
index 0000000..0534e93
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-ary-1_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodule-header -Wno-pedantic" }
+// { dg-module-cmi {} }
+
+#include "tpl-ary-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/tpl-ary-1_b.C b/gcc/testsuite/g++.dg/modules/tpl-ary-1_b.C
new file mode 100644
index 0000000..c647580
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-ary-1_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "tpl-ary-1.h"
+import "tpl-ary-1_a.H";
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
+// { dg-final { scan-lang-dump-not {merge key \(unique\)} module } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-extern-fn-1_a.H b/gcc/testsuite/g++.dg/modules/tpl-extern-fn-1_a.H
new file mode 100644
index 0000000..f0aba54
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-extern-fn-1_a.H
@@ -0,0 +1,16 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+template<typename T>
+inline void Foo ()
+{
+ {
+ void Frob ();
+ }
+ {
+ void Frob ();
+ }
+ {
+ void Frob ();
+ }
+}
diff --git a/gcc/testsuite/g++.dg/modules/tpl-extern-fn-1_b.C b/gcc/testsuite/g++.dg/modules/tpl-extern-fn-1_b.C
new file mode 100644
index 0000000..8b093d4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-extern-fn-1_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+import "tpl-extern-fn-1_a.H";
+
+int main ()
+{
+ Foo<int> ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/tpl-extern-var-1_a.H b/gcc/testsuite/g++.dg/modules/tpl-extern-var-1_a.H
new file mode 100644
index 0000000..4a6437a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-extern-var-1_a.H
@@ -0,0 +1,19 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+template<typename T>
+inline void Foo ()
+{
+ {
+ extern int EXTERN_;
+ EXTERN_++;
+ }
+ {
+ extern int EXTERN_;
+ EXTERN_++;
+ }
+ {
+ extern int EXTERN_;
+ EXTERN_++;
+ }
+}
diff --git a/gcc/testsuite/g++.dg/modules/tpl-extern-var-1_b.C b/gcc/testsuite/g++.dg/modules/tpl-extern-var-1_b.C
new file mode 100644
index 0000000..2224181
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-extern-var-1_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+
+import "tpl-extern-var-1_a.H";
+
+int main ()
+{
+ Foo<int> ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-1_a.C b/gcc/testsuite/g++.dg/modules/tpl-friend-1_a.C
new file mode 100644
index 0000000..88bb6e6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-1_a.C
@@ -0,0 +1,40 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-graph-blocks" }
+// declarations followed by friend injection
+
+export module foo;
+// { dg-module-cmi foo }
+
+void foo (int, void *);
+void foo (float, void *);
+
+template <typename T> class TPL
+{
+ friend void foo (T, void *); // { dg-warning "non-template function" }
+
+ T member;
+};
+
+template class TPL<float>; // instantiate
+
+// binding->465500
+// FUNCTION_DECL->465500
+// DECL_TEMPLATE_INFO->NULL
+// DECL_USE_TEMPLATE->0
+
+// specialization 465500
+// tmpl->333580 template_decl
+// the friend decl implicit template
+
+// args->46b640 tree_vec
+// length:1
+// elt:0 real_type
+
+// do not add this (non-)specialization to the depset table
+// the ::foo fns and TPL should be in different depsets
+// the friend decl should be streamed as part of TPL's definition
+
+// { dg-final { scan-lang-dump-not {Connecting declaration decl template_decl:'::foo'} module } }
+
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl declaration '::foo'\n \[1\]=decl declaration '::foo'\n \[2\]=binding '::foo'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl definition '::template TPL'\n( \[.\]=[^\n]*'\n)* \[.\]=binding '::TPL'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::TPL<float>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-1_b.C b/gcc/testsuite/g++.dg/modules/tpl-friend-1_b.C
new file mode 100644
index 0000000..e4c42d1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-1_b.C
@@ -0,0 +1,17 @@
+// { dg-additional-options -fmodules-ts }
+
+module foo;
+
+void foo (int x, void *p)
+{
+ auto *obj = reinterpret_cast<TPL<int> *> (p);
+
+ obj->member = x;
+}
+
+void foo (float x, void *p)
+{
+ auto *obj = reinterpret_cast<TPL<float> *> (p);
+
+ obj->member = x;
+}
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-2_a.C b/gcc/testsuite/g++.dg/modules/tpl-friend-2_a.C
new file mode 100644
index 0000000..3acacf8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-2_a.C
@@ -0,0 +1,20 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-graph-blocks" }
+// injection followed by declaration
+
+export module foo;
+// { dg-module-cmi foo }
+
+template <typename T> class TPL
+{
+ friend void foo (T, void *); // { dg-warning "non-template function" }
+
+ T member;
+};
+
+template class TPL<int>; // instantiate
+
+void foo (int, void *);
+
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl definition '::template TPL'\n( \[.\]=[^\n]*'\n)* \[.\]=decl declaration '::template foo'\n( \[.\]=[^\n]*'\n)* \[.\]=binding '::TPL'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl declaration '::foo<int>'\n \[.\]=binding '::foo'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization definition '::TPL<int>'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-2_b.C b/gcc/testsuite/g++.dg/modules/tpl-friend-2_b.C
new file mode 100644
index 0000000..38d89f0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-2_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+module foo;
+
+void foo (int x, void *p)
+{
+ auto *obj = reinterpret_cast<TPL<int> *> (p);
+
+ obj->member = x;
+}
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-3_a.C b/gcc/testsuite/g++.dg/modules/tpl-friend-3_a.C
new file mode 100644
index 0000000..e71a258
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-3_a.C
@@ -0,0 +1,22 @@
+// { dg-additional-options "-fmodules-ts" }
+// declarations followed by friend definition injection
+
+export module foo;
+// { dg-module-cmi foo }
+
+void foo (int, void *);
+void foo (float, void *);
+
+template <typename T> class TPL
+{
+ friend void foo (T x, void *p)
+ {
+ auto *obj = reinterpret_cast<TPL<T> *> (p);
+
+ obj->member = x;
+ }
+
+ T member;
+};
+
+template class TPL<float>; // instantiate
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-3_b.C b/gcc/testsuite/g++.dg/modules/tpl-friend-3_b.C
new file mode 100644
index 0000000..accf5d5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-3_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options -fmodules-ts }
+
+module foo;
+
+template class TPL<int>;
+// (instantiated in interface) template class TPL<float>;
+
+void m ()
+{
+ // friend definitions instantiated on-demand here
+ foo (1, 0);
+ foo (1.0f, 0);
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-4_a.C b/gcc/testsuite/g++.dg/modules/tpl-friend-4_a.C
new file mode 100644
index 0000000..8acf5b9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-4_a.C
@@ -0,0 +1,25 @@
+// { dg-additional-options "-fmodules-ts" }
+// friend injection then definition injection
+
+export module foo;
+// { dg-module-cmi foo }
+
+template <typename T> class TPL
+{
+ friend void foo (T, void *); // { dg-warning "non-template function" }
+
+ T member;
+};
+
+template <typename U> class DEF
+{
+ friend void foo (U x, void *p)
+ {
+ auto *obj = reinterpret_cast<TPL<U> *> (p);
+
+ obj->member = x;
+ }
+};
+
+template class TPL<float>; // instantiate
+template class DEF<float>; // instantiate
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-4_b.C b/gcc/testsuite/g++.dg/modules/tpl-friend-4_b.C
new file mode 100644
index 0000000..3dd8741
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-4_b.C
@@ -0,0 +1,21 @@
+// { dg-additional-options -fmodules-ts }
+
+module foo;
+
+template class TPL<int>;
+template class DEF<int>;
+
+void m ()
+{
+ // ADL to find hidden functions
+ foo (1, (TPL<int> *)0);
+ foo (1.0f, (TPL<int> *)0);
+
+ // no ADL, no find
+ {
+ foo (1, 0); // { dg-error "not declared" }
+ }
+ {
+ foo (1.0f, 0); // { dg-error "not declared" }
+ }
+}
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-5_a.C b/gcc/testsuite/g++.dg/modules/tpl-friend-5_a.C
new file mode 100644
index 0000000..e894c73
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-5_a.C
@@ -0,0 +1,14 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+template<typename _CharT> class basic_ios;
+
+template<typename _CharT>
+class basic_streambuf
+{
+ friend class basic_ios<_CharT>;
+
+ _CharT member;
+};
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-5_b.C b/gcc/testsuite/g++.dg/modules/tpl-friend-5_b.C
new file mode 100644
index 0000000..adbe85d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-5_b.C
@@ -0,0 +1,23 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+
+module foo;
+
+template class basic_streambuf<char>;
+
+template<typename _CharT> class basic_ios
+{
+public:
+ static void frob (basic_streambuf<_CharT> *p, _CharT val)
+ {
+ p->member = val;
+ }
+};
+
+void bill (basic_streambuf<char> *p)
+{
+ basic_ios<char>::frob (p, 5);
+}
+
+// { dg-final { scan-lang-dump {Lazily binding '::basic_streambuf'@'foo' section:} module } }
+// { dg-final { scan-lang-dump {Loading entity foo\[0\] section:1} module } }
+// { dg-final { scan-lang-dump {Loading entity foo\[1\] section:2} module } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-6_a.C b/gcc/testsuite/g++.dg/modules/tpl-friend-6_a.C
new file mode 100644
index 0000000..cc07c60
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-6_a.C
@@ -0,0 +1,26 @@
+// { dg-additional-options -fmodules-ts }
+// befriending a specialization
+
+export module foo;
+// { dg-module-cmi foo }
+
+namespace not_std {
+
+template<typename T>
+class basic_streambuf;
+
+template<typename T>
+void __copy_streambufs_eof(basic_streambuf<T>*);
+
+template<typename T>
+class basic_streambuf
+{
+ friend void __copy_streambufs_eof<>(basic_streambuf*);
+
+ T member;
+};
+
+template<>
+void
+__copy_streambufs_eof(basic_streambuf<char>* __sbin);
+}
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-6_b.C b/gcc/testsuite/g++.dg/modules/tpl-friend-6_b.C
new file mode 100644
index 0000000..942fe70
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-6_b.C
@@ -0,0 +1,13 @@
+// { dg-additional-options -fmodules-ts }
+module foo;
+
+namespace not_std {
+
+template<>
+void
+__copy_streambufs_eof(basic_streambuf<char>* __sbin)
+{
+ __sbin->member = 0;
+}
+
+}
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-7_a.C b/gcc/testsuite/g++.dg/modules/tpl-friend-7_a.C
new file mode 100644
index 0000000..bf13cf7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-7_a.C
@@ -0,0 +1,16 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+template<typename _Tp>
+class new_allocator
+{
+ template<typename _Up>
+ friend bool
+ operator!=(const new_allocator&, const new_allocator<_Up>&)
+ noexcept
+ { return false; }
+};
+
+new_allocator<char> x;
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-7_b.C b/gcc/testsuite/g++.dg/modules/tpl-friend-7_b.C
new file mode 100644
index 0000000..e6e4461
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-7_b.C
@@ -0,0 +1,5 @@
+// { dg-additional-options -fmodules-ts }
+
+module foo;
+
+new_allocator<char> y;
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1.cc b/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1.cc
new file mode 100644
index 0000000..a4a1d21
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1.cc
@@ -0,0 +1,6 @@
+void __istream_extract (int)
+{
+ (void)basic_streambuf<char>::field;
+ (void)basic_streambuf<int>::field;
+ (void)basic_streambuf<long>::field;
+}
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1.h b/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1.h
new file mode 100644
index 0000000..fd45536
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1.h
@@ -0,0 +1,9 @@
+
+template<typename T>
+class basic_streambuf
+{
+ friend void __istream_extract (int);
+
+ // something private
+ static constexpr int field = 5;
+};
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_a.H b/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_a.H
new file mode 100644
index 0000000..566b860
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_a.H
@@ -0,0 +1,6 @@
+// { dg-additional-options {-fmodule-header -W} }
+
+// { dg-module-cmi {} }
+
+#include "tpl-friend-merge-1.h"
+extern template class basic_streambuf<char>;
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_b.H b/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_b.H
new file mode 100644
index 0000000..b35d8e1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_b.H
@@ -0,0 +1,6 @@
+// { dg-additional-options {-fmodule-header -W} }
+
+// { dg-module-cmi {} }
+
+#include "tpl-friend-merge-1.h"
+extern template class basic_streambuf<int>;
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_c.H b/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_c.H
new file mode 100644
index 0000000..197b831
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_c.H
@@ -0,0 +1,5 @@
+// { dg-additional-options -fmodule-header }
+
+// { dg-module-cmi {} }
+
+void __istream_extract (int);
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_d.C b/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_d.C
new file mode 100644
index 0000000..e6f46ef
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_d.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+import "tpl-friend-merge-1_a.H";
+import "tpl-friend-merge-1_b.H";
+import "tpl-friend-merge-1_c.H";
+
+#include "tpl-friend-merge-1.cc"
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_e.C b/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_e.C
new file mode 100644
index 0000000..185242b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_e.C
@@ -0,0 +1,7 @@
+// { dg-additional-options {-fmodules-ts -fno-module-lazy -fdump-lang-module-alias} }
+
+import "tpl-friend-merge-1_a.H";
+import "tpl-friend-merge-1_c.H";
+import "tpl-friend-merge-1_b.H";
+
+#include "tpl-friend-merge-1.cc"
diff --git a/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_f.C b/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_f.C
new file mode 100644
index 0000000..4ec7cde
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_f.C
@@ -0,0 +1,7 @@
+// { dg-additional-options {-fmodules-ts -fno-module-lazy -fdump-lang-module-alias} }
+
+import "tpl-friend-merge-1_c.H";
+import "tpl-friend-merge-1_a.H";
+import "tpl-friend-merge-1_b.H";
+
+#include "tpl-friend-merge-1.cc"
diff --git a/gcc/testsuite/g++.dg/modules/tpl-spec-1_a.C b/gcc/testsuite/g++.dg/modules/tpl-spec-1_a.C
new file mode 100644
index 0000000..26350f0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-spec-1_a.C
@@ -0,0 +1,22 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-graph-blocks} }
+
+export module TPL;
+// { dg-module-cmi TPL }
+
+export template <typename T> int foo (T x)
+{
+ return int (x);
+}
+
+// Body is emitted in module-unit itself
+template <> int foo<int> (int y)
+{
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Dependencies of specialization function_decl:'::foo<int>'} module } }
+// { dg-final { scan-lang-dump-not {Depending definition function_decl:'::foo<int>'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization declaration '::foo<int>'} module } }
+// { dg-final { scan-lang-dump {Specialization '::foo<int>' entity:[0-9]* keyed to TPL\[0\] '::template foo'} module } }
+
+// { dg-final { scan-assembler {_Z3fooIiEiT_:} } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-spec-1_b.C b/gcc/testsuite/g++.dg/modules/tpl-spec-1_b.C
new file mode 100644
index 0000000..1f64fbb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-spec-1_b.C
@@ -0,0 +1,20 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module} }
+
+import TPL;
+
+int main ()
+{
+ if (foo (1.0f) != 1)
+ return 1;
+
+ if (foo (1) != 0)
+ return 2;
+
+ return 0;
+}
+
+// { dg-final { scan-lang-dump-not {Reading definition function_decl '::foo@TPL:.<int>'} module } }
+// { dg-final { scan-lang-dump {Specialization keyed to TPL\[0\] entity:1} module } }
+// { dg-final { scan-lang-dump {Reading 1 pending specializations keyed to TPL\[0\] '::template foo@TPL:1'} module } }
+
+// { dg-final { scan-assembler-not {_Z3fooIiEiT_:} } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-spec-2_a.C b/gcc/testsuite/g++.dg/modules/tpl-spec-2_a.C
new file mode 100644
index 0000000..bb136d9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-spec-2_a.C
@@ -0,0 +1,11 @@
+// { dg-additional-options {-fmodules-ts} }
+
+export module TPL;
+// { dg-module-cmi TPL }
+
+export template <typename T> int foo (T x)
+{
+ return int (x);
+}
+
+// { dg-final { scan-assembler-not {^[a-zA-Z0-9_]*:} } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-spec-2_b.C b/gcc/testsuite/g++.dg/modules/tpl-spec-2_b.C
new file mode 100644
index 0000000..d137481
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-spec-2_b.C
@@ -0,0 +1,18 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-graph-blocks} }
+
+export module SPEC;
+
+export import TPL;
+
+// Body is emitted in module-unit itself
+template <> int foo<int> (int y)
+{
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Dependencies of specialization function_decl:'::foo<int>'} module } }
+// { dg-final { scan-lang-dump-not {Depending definition function_decl:'::foo<int>'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization declaration '::foo<int>'} module } }
+// { dg-final { scan-lang-dump {Specialization '::foo<int>' entity:[0-9]* keyed to TPL\[.\] '::template foo@TPL:.'} module } }
+
+// { dg-final { scan-assembler {_Z3fooIiEiT_:} } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-spec-2_c.C b/gcc/testsuite/g++.dg/modules/tpl-spec-2_c.C
new file mode 100644
index 0000000..3b0a7c7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-spec-2_c.C
@@ -0,0 +1,19 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module} }
+
+import SPEC;
+
+int main ()
+{
+ if (foo (1.0f) != 1)
+ return 1;
+
+ if (foo (1) != 0)
+ return 2;
+
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Reading 1 pending specializations keyed to TPL\[0\] '::template foo@TPL:.'} module } }
+// { dg-final { scan-lang-dump-not {Reading definition function_decl '::foo@TPL:.<int>'} module } }
+
+// { dg-final { scan-assembler-not {_Z3fooIiEiT_:} } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-spec-2_d.C b/gcc/testsuite/g++.dg/modules/tpl-spec-2_d.C
new file mode 100644
index 0000000..4095dea
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-spec-2_d.C
@@ -0,0 +1,27 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module} }
+
+import TPL;
+
+int one ()
+{
+ if (foo (1.0f) != 1)
+ return 1;
+ return 0;
+}
+
+
+import SPEC;
+
+int two ()
+{
+ if (foo (1) != 0)
+ return 2;
+
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Reading 1 pending specializations keyed to TPL\[0\] '::template foo@TPL:.'} module } }
+// { dg-final { scan-lang-dump-not {Reading definition function_decl '::foo@TPL:.<int>'} module } }
+
+// { dg-final { scan-assembler-not {_Z3fooIiEiT_:} } }
+// { dg-final { scan-assembler {_Z3fooIfEiT_:} } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-spec-3_a.C b/gcc/testsuite/g++.dg/modules/tpl-spec-3_a.C
new file mode 100644
index 0000000..1f3fb40
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-spec-3_a.C
@@ -0,0 +1,27 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-graph-blocks} }
+
+export module TPL;
+// { dg-module-cmi TPL }
+
+export struct frob
+{
+ int i;
+
+ template<typename T> void store (T i_)
+ {
+ i = int (i_);
+ }
+};
+
+// Not inline!
+template <> void frob::store (int i_)
+{
+ i = -i_;
+}
+
+// { dg-final { scan-lang-dump {Dependencies of specialization function_decl:'::frob::store<int>'} module } }
+// { dg-final { scan-lang-dump-not {Depending definition function_decl:'::frob::store<int>'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=specialization declaration '::frob::store<int>'} module } }
+// { dg-final { scan-lang-dump {Specialization '::frob::store<int>' entity:[0-9]* keyed to TPL\[1\] '::frob::template store'} module } }
+
+// { dg-final { scan-assembler {_ZN4frob5storeIiEEvT_:} } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-spec-3_b.C b/gcc/testsuite/g++.dg/modules/tpl-spec-3_b.C
new file mode 100644
index 0000000..a9cd8d7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-spec-3_b.C
@@ -0,0 +1,24 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module} }
+
+import TPL;
+
+int main ()
+{
+ frob f;
+
+ f.store (1);
+ if (f.i != -1)
+ return 1;
+
+ f.store (1.0f);
+ if (f.i != 1)
+ return 2;
+
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Reading 1 pending specializations keyed to TPL\[1\] '::frob@TPL:.::template store@TPL:.'} module } }
+// { dg-final { scan-lang-dump-not {Reading definition function_decl '::frob@TPL:.::store@TPL:.<int>'} module } }
+
+// { dg-final { scan-assembler-not {_ZN4frob5storeIiEEvT_:} } }
+
diff --git a/gcc/testsuite/g++.dg/modules/tpl-spec-4_a.C b/gcc/testsuite/g++.dg/modules/tpl-spec-4_a.C
new file mode 100644
index 0000000..29e09de
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-spec-4_a.C
@@ -0,0 +1,19 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-graph-blocks} }
+
+export module TPL;
+// { dg-module-cmi TPL }
+
+export template <typename T>
+struct X
+{
+ T f;
+};
+
+template<> struct X<int>
+{
+ int m;
+};
+
+// { dg-final { scan-lang-dump {Dependencies of specialization type_decl:'::X<int>'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n( \[.\]=[^\n]*'\n)* \[.\]=specialization definition '::X<int>'} module } }
+// { dg-final { scan-lang-dump {Specialization '::X<int>' entity:[0-9]* keyed to TPL\[0\] '::template X'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-spec-4_b.C b/gcc/testsuite/g++.dg/modules/tpl-spec-4_b.C
new file mode 100644
index 0000000..94ced9b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-spec-4_b.C
@@ -0,0 +1,17 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-graph-blocks} }
+
+import TPL;
+
+int main ()
+{
+ X<int> q;
+
+ q.m = 5;
+
+ X<float> p;
+ p.f = 4.0f;
+
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Reading 1 pending specializations keyed to TPL\[0\] '::template X@TPL:.'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-spec-5_a.C b/gcc/testsuite/g++.dg/modules/tpl-spec-5_a.C
new file mode 100644
index 0000000..08bcac2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-spec-5_a.C
@@ -0,0 +1,19 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-graph-blocks} }
+
+export module TPL;
+// { dg-module-cmi TPL }
+
+export template <typename T, int I>
+struct X
+{
+ T ary[I];
+};
+
+template<typename T> struct X<T,1>
+{
+ T scalar;
+};
+
+// { dg-final { scan-lang-dump {Dependency on partial template_decl:'::template X<T,0x1>' found} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n( \[.\][^\n]*'\n)* \[.\]=partial definition '::template X<T,0x1>'} module } }
+// { dg-final { scan-lang-dump {Specialization '::template X<T,0x1>' entity:[0-9]* keyed to TPL\[0\] '::template X'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-spec-5_b.C b/gcc/testsuite/g++.dg/modules/tpl-spec-5_b.C
new file mode 100644
index 0000000..8a1a557
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-spec-5_b.C
@@ -0,0 +1,17 @@
+// { dg-additional-options {-fmodules-ts -fdump-lang-module-alias} }
+
+import TPL;
+
+int main ()
+{
+ X<int,2> q;
+
+ q.ary[0] = 5;
+
+ X<float,1> p;
+ p.scalar = 4.0f;
+
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Reading 1 pending specializations keyed to TPL\[0\] '::template X@TPL:.'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-spec-6_a.C b/gcc/testsuite/g++.dg/modules/tpl-spec-6_a.C
new file mode 100644
index 0000000..111c718
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-spec-6_a.C
@@ -0,0 +1,22 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module foo;
+// { dg-module-cmi foo }
+
+template<typename _Tp, _Tp __v>
+struct integral_constant;
+
+template<typename _From, typename _To, bool>
+struct __is_nt_convertible_helper;
+
+template<typename _From, typename _To>
+class __is_nt_convertible_helper<_From, _To, false>
+{
+ template<typename _To1>
+ static void __test_aux(_To1) noexcept;
+
+ template<typename _From1, typename _To1>
+ static
+ integral_constant<bool, noexcept(__test_aux<_To1> (_From1 ()))>
+ __test(int);
+};
diff --git a/gcc/testsuite/g++.dg/modules/tpl-spec-6_b.C b/gcc/testsuite/g++.dg/modules/tpl-spec-6_b.C
new file mode 100644
index 0000000..3a11428
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-spec-6_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options "-fmodules-ts" }
+
+module foo;
+
+__is_nt_convertible_helper<int, int, false> ok;
+__is_nt_convertible_helper<int, int, true> not_ok; // { dg-error "incomplete" }
diff --git a/gcc/testsuite/g++.dg/modules/tpl-spec-7.C b/gcc/testsuite/g++.dg/modules/tpl-spec-7.C
new file mode 100644
index 0000000..71f821d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-spec-7.C
@@ -0,0 +1,38 @@
+// { dg-additional-options "-fmodules-ts" }
+
+export module foo;
+// { dg-module-cmi foo }
+
+typedef unsigned long size_t;
+
+template<typename _Tp, bool _IsInt, bool _IsEnum>
+class __make_unsigned_selector;
+
+class __make_unsigned_selector_base
+{
+protected:
+ template<typename...> struct _List { };
+
+ template<typename _Tp, typename... _Up>
+ struct _List<_Tp, _Up...> : _List<_Up...>
+ { static constexpr size_t __size = sizeof(_Tp); };
+
+ template<size_t _Sz, typename _Tp, bool = (_Sz <= _Tp::__size)>
+ struct __select;
+};
+
+template<typename _Tp>
+class __make_unsigned_selector<_Tp, false, true>
+ : __make_unsigned_selector_base
+{
+ using _UInts = _List<unsigned char, unsigned short, unsigned int,
+ unsigned long, unsigned long long>;
+
+ using __unsigned_type = typename __select<sizeof(_Tp), _UInts>::__type;
+};
+
+
+
+
+
+
diff --git a/gcc/testsuite/g++.dg/modules/tpl-tpl-friend-1_a.C b/gcc/testsuite/g++.dg/modules/tpl-tpl-friend-1_a.C
new file mode 100644
index 0000000..23ebfde
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-tpl-friend-1_a.C
@@ -0,0 +1,15 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+template <typename T> class TPL
+{
+ template <typename U> friend void foo (U);
+};
+
+template class TPL<char>;
+
+template <typename V> void foo (V x)
+{
+}
diff --git a/gcc/testsuite/g++.dg/modules/tpl-tpl-friend-1_b.C b/gcc/testsuite/g++.dg/modules/tpl-tpl-friend-1_b.C
new file mode 100644
index 0000000..276a7d2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-tpl-friend-1_b.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+
+module foo;
+
+void m ()
+{
+ foo ('a');
+ foo (0);
+}
diff --git a/gcc/testsuite/g++.dg/modules/tpl-tpl-mem-1_a.C b/gcc/testsuite/g++.dg/modules/tpl-tpl-mem-1_a.C
new file mode 100644
index 0000000..2d58465
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-tpl-mem-1_a.C
@@ -0,0 +1,19 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+template <typename T>
+class outer
+{
+public:
+ template <typename U>
+ struct inner
+ {
+ typedef outer<U> other;
+ };
+
+ using type = T;
+};
+
+template class outer<int>;
diff --git a/gcc/testsuite/g++.dg/modules/tpl-tpl-mem-1_b.C b/gcc/testsuite/g++.dg/modules/tpl-tpl-mem-1_b.C
new file mode 100644
index 0000000..3e90ac8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-tpl-mem-1_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodules-ts }
+
+module foo;
+
+static_assert (sizeof (outer<int>::inner<char>::other::type) == 1);
+static_assert (sizeof (outer<char>::inner<int>::other::type) == sizeof (int));
diff --git a/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-1.h b/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-1.h
new file mode 100644
index 0000000..71ee192
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-1.h
@@ -0,0 +1,22 @@
+typedef long unsigned int size_t;
+
+template<typename _Tp, typename _Up>
+struct Replace;
+
+template<template<typename> class _Template>
+struct Replace<_Template<char>, char>
+{
+ using type = _Template<char>;
+};
+
+template<typename _Tp>
+struct TPL;
+
+template<typename _Alloc>
+struct Traits
+{
+ template<typename _Tp>
+ using Rebind = typename Replace<_Alloc, _Tp>::type;
+};
+
+using tdef = Traits<TPL<char>>::template Rebind<char>;
diff --git a/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-1_a.H b/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-1_a.H
new file mode 100644
index 0000000..ccd4508
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-1_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "tpl-tpl-merge-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-1_b.C b/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-1_b.C
new file mode 100644
index 0000000..d953ec3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-1_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include "tpl-tpl-merge-1.h"
+import "tpl-tpl-merge-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-2.h b/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-2.h
new file mode 100644
index 0000000..005523e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-2.h
@@ -0,0 +1,65 @@
+typedef long unsigned int size_t;
+
+template<typename> class allocator;
+
+template<typename _Tp, typename _Up>
+struct __replace_first_arg
+{ };
+
+template<template<typename, typename...> class _Template, typename _Up,
+ typename _Tp, typename... _Types>
+struct __replace_first_arg<_Template<_Tp, _Types...>, _Up>
+{
+ using type = _Template<_Up, _Types...>;
+};
+
+template<typename _Tp, typename _Up>
+using __replace_first_arg_t = typename __replace_first_arg<_Tp, _Up>::type;
+
+template<typename _Tp>
+class new_allocator
+{
+public:
+ typedef _Tp value_type;
+};
+
+template<typename _Tp>
+using __allocator_base = new_allocator<_Tp>;
+
+template<typename _Tp>
+class allocator : public __allocator_base<_Tp>
+{
+public:
+};
+
+struct __allocator_traits_base
+{
+ template<typename _Tp, typename _Up, typename = void>
+ struct __rebind : __replace_first_arg<_Tp, _Up> { };
+};
+
+template<typename _Alloc, typename _Up>
+using __alloc_rebind
+= typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type;
+
+template<typename _Alloc>
+struct allocator_traits : __allocator_traits_base
+{
+public:
+ template<typename _Tp>
+ using rebind_alloc = __alloc_rebind<_Alloc, _Tp>;
+};
+
+template<typename _Alloc, typename = typename _Alloc::value_type>
+struct __alloc_traits
+
+{
+ template<typename _Tp>
+ struct rebind
+ {
+ typedef typename allocator_traits<_Alloc>::template rebind_alloc<_Tp> other;
+ };
+};
+
+typedef typename __alloc_traits<allocator<char>>::template
+rebind<char>::other _Char_alloc_type;
diff --git a/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-2_a.H b/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-2_a.H
new file mode 100644
index 0000000..051c19b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-2_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "tpl-tpl-merge-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-2_b.C b/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-2_b.C
new file mode 100644
index 0000000..54da419
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-tpl-merge-2_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include "tpl-tpl-merge-2.h"
+import "tpl-tpl-merge-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/tpl-tpl-parm-1_a.H b/gcc/testsuite/g++.dg/modules/tpl-tpl-parm-1_a.H
new file mode 100644
index 0000000..159efc3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-tpl-parm-1_a.H
@@ -0,0 +1,12 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+template<template<typename> class _TQual>
+struct basic_common_reference;
+
+template<typename _Tp>
+struct __xref;
+
+template<typename _Tp1>
+using __basic_common_ref
+= typename basic_common_reference<__xref<_Tp1>::template __type>::type;
diff --git a/gcc/testsuite/g++.dg/modules/tpl-tpl-parm-1_b.C b/gcc/testsuite/g++.dg/modules/tpl-tpl-parm-1_b.C
new file mode 100644
index 0000000..c8918d6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-tpl-parm-1_b.C
@@ -0,0 +1,18 @@
+// { dg-additional-options -fmodules-ts }
+
+import "tpl-tpl-parm-1_a.H";
+
+template<> struct __xref<int>
+{
+ template <typename T> struct __type;
+};
+
+template<> struct basic_common_reference<__xref<int>::__type>
+{
+ typedef int type;
+};
+
+__basic_common_ref<int> main ()
+{
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/tpl-tpl-parm-2.h b/gcc/testsuite/g++.dg/modules/tpl-tpl-parm-2.h
new file mode 100644
index 0000000..16832bf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-tpl-parm-2.h
@@ -0,0 +1,16 @@
+
+
+
+template<typename _Alloc>
+struct allocator_traits
+{
+ template<template<typename> class _Func>
+ struct _Ptr {};
+
+ using rebind_alloc = int;
+};
+
+inline void frob ()
+{
+ allocator_traits<int> _M_unpooled;
+}
diff --git a/gcc/testsuite/g++.dg/modules/tpl-tpl-parm-2_a.H b/gcc/testsuite/g++.dg/modules/tpl-tpl-parm-2_a.H
new file mode 100644
index 0000000..cec1a67
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-tpl-parm-2_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "tpl-tpl-parm-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/tpl-tpl-parm-2_b.C b/gcc/testsuite/g++.dg/modules/tpl-tpl-parm-2_b.C
new file mode 100644
index 0000000..3504e50
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tpl-tpl-parm-2_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include "tpl-tpl-parm-2.h"
+import "tpl-tpl-parm-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/tplmem-1_a.C b/gcc/testsuite/g++.dg/modules/tplmem-1_a.C
new file mode 100644
index 0000000..97e228a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tplmem-1_a.C
@@ -0,0 +1,32 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+
+export module frob;
+// { dg-module-cmi "frob" }
+
+export struct A
+{
+ A ()
+ {
+ }
+
+ template<typename T> operator T () const
+ {
+ return T(99);
+ }
+};
+
+export template<typename T> struct B
+{
+ T m;
+
+ B(T t) : m(t)
+ {
+ }
+
+ template<typename S> operator S () const
+ {
+ return S (m);
+ }
+};
+
diff --git a/gcc/testsuite/g++.dg/modules/tplmem-1_b.C b/gcc/testsuite/g++.dg/modules/tplmem-1_b.C
new file mode 100644
index 0000000..352ad0c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tplmem-1_b.C
@@ -0,0 +1,28 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import frob;
+
+int main ()
+{
+ A a;
+
+ if (int (a) != 99)
+ return 1;
+ if (float (a) != 99)
+ return 2;
+ if (static_cast <void *> (a) != (void *)99)
+ return 3;
+
+ B<int> bi(1);
+ B<float> bf(1.25f);
+ if (int (bi) != 1)
+ return 4;
+ if (int (bf) != 1)
+ return 5;
+
+ // 1.25 is exactly representable
+ if (float (bf) != 1.25f)
+ return 6;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/tplmem-3_a.C b/gcc/testsuite/g++.dg/modules/tplmem-3_a.C
new file mode 100644
index 0000000..9d9cc0a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tplmem-3_a.C
@@ -0,0 +1,17 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+
+export module billy.bob.thornton;
+// { dg-module-cmi "billy.bob.thornton" }
+
+export template<unsigned I> struct Outer
+{
+ template<unsigned J> struct Inner
+ {
+ static unsigned m ()
+ {
+ return I * J;
+ }
+ };
+};
+
diff --git a/gcc/testsuite/g++.dg/modules/tplmem-3_b.C b/gcc/testsuite/g++.dg/modules/tplmem-3_b.C
new file mode 100644
index 0000000..c5225ca
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/tplmem-3_b.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import billy.bob.thornton;
+
+int main ()
+{
+ Outer<4>::Inner<16> v;
+
+ if (v.m () != 64)
+ return 1;
+ return 0;
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/ttp-1_a.C b/gcc/testsuite/g++.dg/modules/ttp-1_a.C
new file mode 100644
index 0000000..eb2d939
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ttp-1_a.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+export module bob;
+
+export template<template<typename> class TPL, typename T>
+struct Wrapper
+{
+ using type = TPL<T>;
+};
diff --git a/gcc/testsuite/g++.dg/modules/ttp-1_b.C b/gcc/testsuite/g++.dg/modules/ttp-1_b.C
new file mode 100644
index 0000000..30a73c0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ttp-1_b.C
@@ -0,0 +1,18 @@
+// { dg-additional-options -fmodules-ts }
+
+import bob;
+
+template<typename T> struct X
+{
+ using type = T;
+};
+
+template<typename X, typename Y> struct same;
+template<typename X> struct same<X, X> {};
+
+void frob ()
+{
+ using type = Wrapper<X, int>::type::type;
+
+ same<type, int> v;
+}
diff --git a/gcc/testsuite/g++.dg/modules/ttp-2_a.C b/gcc/testsuite/g++.dg/modules/ttp-2_a.C
new file mode 100644
index 0000000..c14aeea
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ttp-2_a.C
@@ -0,0 +1,10 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+template<template<typename...> class Arg1>
+struct TPL1;
+
+template<template<typename...> class Arg2>
+struct TPL2;
diff --git a/gcc/testsuite/g++.dg/modules/ttp-2_b.C b/gcc/testsuite/g++.dg/modules/ttp-2_b.C
new file mode 100644
index 0000000..bf0242a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ttp-2_b.C
@@ -0,0 +1,18 @@
+// { dg-additional-options -fmodules-ts }
+
+module foo;
+
+template <template<typename ...> class Arg4>
+struct TPL1
+{
+};
+
+template <template<typename ...> class Arg4>
+struct TPL2
+{
+};
+
+template <typename> class Arg;
+
+
+template struct TPL1<Arg>;
diff --git a/gcc/testsuite/g++.dg/modules/ttp-3_a.C b/gcc/testsuite/g++.dg/modules/ttp-3_a.C
new file mode 100644
index 0000000..d1f5857
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ttp-3_a.C
@@ -0,0 +1,17 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+template<typename Arg1, template<typename> typename Arg2>
+struct TPL
+{
+ using type = char;
+};
+
+/// Implementation of the detection idiom (positive case).
+template<template<typename> typename Op>
+struct TPL <Op<int>, Op>
+{
+ using type = int;
+};
diff --git a/gcc/testsuite/g++.dg/modules/ttp-3_b.C b/gcc/testsuite/g++.dg/modules/ttp-3_b.C
new file mode 100644
index 0000000..7f61b7c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/ttp-3_b.C
@@ -0,0 +1,8 @@
+// { dg-additional-options -fmodules-ts }
+module foo;
+
+
+template <typename> class Y;
+
+static_assert (sizeof (TPL<Y<char>, Y>::type) == 1);
+static_assert (sizeof (TPL<Y<int>, Y>::type) != 1, "where's my specialization?");
diff --git a/gcc/testsuite/g++.dg/modules/typename-1_a.C b/gcc/testsuite/g++.dg/modules/typename-1_a.C
new file mode 100644
index 0000000..e8b5599
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/typename-1_a.C
@@ -0,0 +1,13 @@
+// { dg-additional-options -fmodules-ts }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export template <typename T>
+struct TPL
+{
+ typename T::type m;
+ using type = typename T::type;
+ const type cm;
+};
+
diff --git a/gcc/testsuite/g++.dg/modules/typename-1_b.C b/gcc/testsuite/g++.dg/modules/typename-1_b.C
new file mode 100644
index 0000000..ba7aecf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/typename-1_b.C
@@ -0,0 +1,15 @@
+// { dg-additional-options -fmodules-ts }
+
+import foo;
+
+struct X
+{
+ using type = int;
+};
+
+int main ()
+{
+ TPL<X> x {0,1};
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/unnamed-1_a.C b/gcc/testsuite/g++.dg/modules/unnamed-1_a.C
new file mode 100644
index 0000000..8c5674a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/unnamed-1_a.C
@@ -0,0 +1,20 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+
+export module PiL;
+// { dg-module-cmi PiL }
+
+int counter = 0;
+
+export inline int get ()
+{
+ return counter++;
+}
+
+export inline int hwm ()
+{
+ return counter;
+}
+
+// { dg-final { scan-lang-dump {Bindings '::counter' section:1} module } }
+// { dg-final { scan-lang-dump-not {horcrux} module } }
+// { dg-final { scan-lang-dump-not {Unnamed . '::counter'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/unnamed-1_b.C b/gcc/testsuite/g++.dg/modules/unnamed-1_b.C
new file mode 100644
index 0000000..847ced6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/unnamed-1_b.C
@@ -0,0 +1,19 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+
+import PiL;
+
+// Until the linkage is promoted, this won't link.
+
+int main ()
+{
+ int i = get ();
+ if (i)
+ return 1;
+ int h = hwm ();
+ if (h != 1)
+ return 2;
+ return 0;
+}
+
+// { dg-final { scan-lang-dump {Bindings '::counter'} module } }
+// { dg-final { scan-lang-dump {>Loading entity PiL\[0\] section:1} module } }
diff --git a/gcc/testsuite/g++.dg/modules/unnamed-2.C b/gcc/testsuite/g++.dg/modules/unnamed-2.C
new file mode 100644
index 0000000..2b58930
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/unnamed-2.C
@@ -0,0 +1,19 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module" }
+export module PiL;
+// { dg-module-cmi PiL }
+
+static int counter = 0;
+
+// These are not inlined, so their bodies don't get into the BMI
+export int get ()
+{
+ return counter++;
+}
+
+export int hwm ()
+{
+ return counter;
+}
+
+// { dg-final { scan-lang-dump-not {Bindings '::counter' section:} module } }
+// { dg-final { scan-lang-dump-not {Unnamed . '::counter'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/used-1_a.H b/gcc/testsuite/g++.dg/modules/used-1_a.H
new file mode 100644
index 0000000..39aacf5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/used-1_a.H
@@ -0,0 +1,7 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+inline int frob (int x)
+{
+ return x;
+}
diff --git a/gcc/testsuite/g++.dg/modules/used-1_b.H b/gcc/testsuite/g++.dg/modules/used-1_b.H
new file mode 100644
index 0000000..05f29db
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/used-1_b.H
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+import "used-1_a.H";
+
+inline int wrapper (int x)
+{
+ return frob (x);
+}
diff --git a/gcc/testsuite/g++.dg/modules/used-1_c.C b/gcc/testsuite/g++.dg/modules/used-1_c.C
new file mode 100644
index 0000000..0d1514e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/used-1_c.C
@@ -0,0 +1,10 @@
+// { dg-additional-options -fmodules-ts }
+
+import "used-1_b.H";
+
+int main ()
+{
+ return wrapper (0);
+}
+
+// { dg-final { scan-assembler {_Z4frobi:} } }
diff --git a/gcc/testsuite/g++.dg/modules/using-1_a.C b/gcc/testsuite/g++.dg/modules/using-1_a.C
new file mode 100644
index 0000000..010c7fa
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-1_a.C
@@ -0,0 +1,19 @@
+// { dg-module-do link }
+// { dg-additional-options "-fmodules-ts" }
+export module frob;
+// { dg-module-cmi frob }
+
+namespace details
+{
+void foo ()
+{
+}
+}
+
+using details::foo;
+void footle ();
+export void bink ()
+{
+ foo ();
+ footle ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/using-1_b.C b/gcc/testsuite/g++.dg/modules/using-1_b.C
new file mode 100644
index 0000000..e36caaf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-1_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options -fmodules-ts }
+module frob;
+
+void footle ()
+{
+ foo ();
+}
diff --git a/gcc/testsuite/g++.dg/modules/using-1_c.C b/gcc/testsuite/g++.dg/modules/using-1_c.C
new file mode 100644
index 0000000..d9835bc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-1_c.C
@@ -0,0 +1,9 @@
+// { dg-additional-options -fmodules-ts }
+
+import frob;
+
+int main ()
+{
+ bink ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/using-2_a.C b/gcc/testsuite/g++.dg/modules/using-2_a.C
new file mode 100644
index 0000000..ef6f5e5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-2_a.C
@@ -0,0 +1,19 @@
+// { dg-additional-options -fmodules-ts }
+
+export module bob;
+// { dg-module-cmi bob }
+
+namespace N {
+export int foo (int a)
+{
+ return -a;
+}
+int bar (int a)
+{
+ return -a;
+}
+}
+
+export using N::foo;
+using N::bar;
+
diff --git a/gcc/testsuite/g++.dg/modules/using-2_b.C b/gcc/testsuite/g++.dg/modules/using-2_b.C
new file mode 100644
index 0000000..6181073
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-2_b.C
@@ -0,0 +1,6 @@
+// { dg-additional-options -fmodules-ts }
+
+module bob;
+
+int a = foo (1);
+int b = bar (2);
diff --git a/gcc/testsuite/g++.dg/modules/using-2_c.C b/gcc/testsuite/g++.dg/modules/using-2_c.C
new file mode 100644
index 0000000..c3c0670
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-2_c.C
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodules-ts }
+import bob;
+
+int a = foo (1);
diff --git a/gcc/testsuite/g++.dg/modules/using-3.C b/gcc/testsuite/g++.dg/modules/using-3.C
new file mode 100644
index 0000000..d21512f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-3.C
@@ -0,0 +1,17 @@
+// { dg-additional-options -fmodules-ts }
+export module bad;
+// { dg-module-cmi !bad }
+
+namespace N
+{
+static int foo ();
+int bar ();
+}
+
+using N::foo;
+using N::bar;
+
+export using N::foo; // { dg-error "does not have external linkage" }
+export using N::bar; // { dg-error "does not have external linkage" }
+
+// { dg-prune-output "not writing module" }
diff --git a/gcc/testsuite/g++.dg/modules/using-4_a.C b/gcc/testsuite/g++.dg/modules/using-4_a.C
new file mode 100644
index 0000000..1eba527
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-4_a.C
@@ -0,0 +1,17 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-uid" }
+
+export module bob;
+// { dg-module-cmi bob }
+
+namespace N {
+export int foo ();
+}
+
+// Only one using decl exported!
+using N::foo;
+export using N::foo;
+
+// { dg-final { scan-lang-dump {Writing section:2 2 depsets} module } }
+// { dg-final { scan-lang-dump {Depset:0 using overload:'::N::foo'} module } }
+// { dg-final { scan-lang-dump {Depset:1 binding namespace_decl:'::foo'} module } }
+
diff --git a/gcc/testsuite/g++.dg/modules/using-4_b.C b/gcc/testsuite/g++.dg/modules/using-4_b.C
new file mode 100644
index 0000000..f899f50
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-4_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-uid" }
+
+import bob;
+
+int a = foo ();
+
+// { dg-final { scan-lang-dump {Binding of '::foo'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/using-5_a.C b/gcc/testsuite/g++.dg/modules/using-5_a.C
new file mode 100644
index 0000000..88cbaf9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-5_a.C
@@ -0,0 +1,15 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks" }
+export module foo;
+// { dg-module-cmi foo }
+
+namespace One {
+class X;
+}
+
+namespace Two {
+using One::X;
+}
+
+
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl declaration '::One::X'\n \[1\]=binding '::One::X'} module } }
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=using declaration '::One::X'\n \[1\]=binding '::Two::X'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/using-5_b.C b/gcc/testsuite/g++.dg/modules/using-5_b.C
new file mode 100644
index 0000000..9fbe14e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-5_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks" }
+module foo;
+
+Two::X *p;
diff --git a/gcc/testsuite/g++.dg/modules/using-6_a.C b/gcc/testsuite/g++.dg/modules/using-6_a.C
new file mode 100644
index 0000000..40c32b3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-6_a.C
@@ -0,0 +1,20 @@
+// { dg-additional-options -fmodules-ts }
+
+export module bob;
+// { dg-module-cmi bob }
+
+namespace A
+{
+export void swap (int &, int &);
+void copy (int &);
+}
+
+export template <typename T>
+void Foo (T & a, T &b)
+{
+ using A::swap;
+ swap (a, b);
+
+ using A::copy;
+ copy (b);
+}
diff --git a/gcc/testsuite/g++.dg/modules/using-6_b.C b/gcc/testsuite/g++.dg/modules/using-6_b.C
new file mode 100644
index 0000000..feac0ca
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-6_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options -fmodules-ts }
+import bob;
+
+int main ()
+{
+ int a = 0, b = 1;
+ Foo (a, b);
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/using-7.C b/gcc/testsuite/g++.dg/modules/using-7.C
new file mode 100644
index 0000000..01a5ad3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-7.C
@@ -0,0 +1,17 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-blocks" }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export namespace __gnu_cxx
+{
+enum _Lock_policy { _S_single};
+}
+
+export namespace std
+{
+ using __gnu_cxx::_S_single;
+}
+
+// { dg-final { scan-lang-dump {Writing section:1 4 depsets\n Cluster members:\n \[0\]=decl definition '::__gnu_cxx::_Lock_policy'\n \[1\]=using declaration '::__gnu_cxx::_Lock_policy::_S_single'\n \[2\]=binding '::__gnu_cxx::_[A-Za-z_]*'\n \[3\]=binding '::__gnu_cxx::_[A-Za-z_]*'\n} module } }
+// { dg-final { scan-lang-dump {Writing section:2 2 depsets\n Cluster members:\n \[0\]=using declaration '::__gnu_cxx::_Lock_policy::_S_single'\n \[1\]=binding '::std::_S_single'\n} module } }
diff --git a/gcc/testsuite/g++.dg/modules/using-8_a.C b/gcc/testsuite/g++.dg/modules/using-8_a.C
new file mode 100644
index 0000000..1e71d2d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-8_a.C
@@ -0,0 +1,21 @@
+// { dg-additional-options "-fmodules-ts -Wno-pedantic" }
+module;
+# 4 __FILE__ 1
+namespace A
+{
+void swap (int &, int &);
+void copy (int &);
+}
+# 10 "" 2
+export module bob;
+// { dg-module-cmi bob }
+
+export template <typename T>
+void Foo (T & a, T &b)
+{
+ using A::swap;
+ swap (a, b);
+
+ using A::copy;
+ copy (b);
+}
diff --git a/gcc/testsuite/g++.dg/modules/using-8_b.C b/gcc/testsuite/g++.dg/modules/using-8_b.C
new file mode 100644
index 0000000..feac0ca
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-8_b.C
@@ -0,0 +1,11 @@
+// { dg-additional-options -fmodules-ts }
+import bob;
+
+int main ()
+{
+ int a = 0, b = 1;
+ Foo (a, b);
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/using-enum-1_a.H b/gcc/testsuite/g++.dg/modules/using-enum-1_a.H
new file mode 100644
index 0000000..a4204b4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-enum-1_a.H
@@ -0,0 +1,16 @@
+// { dg-additional-options {-fmodule-header -std=c++2a} }
+// { dg-module-cmi {} }
+
+enum class E {a, b, c};
+struct C
+{
+ using enum E;
+};
+
+struct D: C
+{
+ int foo ()
+ {
+ return int (a);
+ }
+};
diff --git a/gcc/testsuite/g++.dg/modules/using-enum-1_b.C b/gcc/testsuite/g++.dg/modules/using-enum-1_b.C
new file mode 100644
index 0000000..af0610a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/using-enum-1_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options {-fmodules-ts -fno-module-lazy -std=c++2a } }
+
+#include "using-enum-1_a.H"
+import "using-enum-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/var-1_a.C b/gcc/testsuite/g++.dg/modules/var-1_a.C
new file mode 100644
index 0000000..2a5d6bd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/var-1_a.C
@@ -0,0 +1,9 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+
+export module Var;
+// { dg-module-cmi Var }
+
+export int counter = 2;
+export extern const int limit = 5;
+
diff --git a/gcc/testsuite/g++.dg/modules/var-1_b.C b/gcc/testsuite/g++.dg/modules/var-1_b.C
new file mode 100644
index 0000000..9a57f61
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/var-1_b.C
@@ -0,0 +1,13 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import Var;
+
+int main ()
+{
+ if (counter != 2)
+ return 1;
+ if (limit != 5)
+ return 2;
+ static_assert (limit == 5, "huh?");
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/var-tpl-1_a.C b/gcc/testsuite/g++.dg/modules/var-tpl-1_a.C
new file mode 100644
index 0000000..f538304
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/var-tpl-1_a.C
@@ -0,0 +1,21 @@
+// { dg-module-do run }
+// { dg-additional-options -fmodules-ts }
+
+export module frob;
+// { dg-module-cmi frob }
+
+export template<typename T> T sum (T a)
+{
+ return a;
+}
+
+export template<typename T, typename... R>
+inline T sum (T a, R... b)
+{
+ return a + static_cast<T> (sum (b...));
+}
+
+export inline int add (int a, int b, int c)
+{
+ return sum (a, b, c);
+}
diff --git a/gcc/testsuite/g++.dg/modules/var-tpl-1_b.C b/gcc/testsuite/g++.dg/modules/var-tpl-1_b.C
new file mode 100644
index 0000000..a8c8524
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/var-tpl-1_b.C
@@ -0,0 +1,14 @@
+// { dg-additional-options -fmodules-ts }
+
+import frob;
+
+int main ()
+{
+ if (6 != add (1, 2, 3))
+ return 1;
+
+ if (10 != sum (1, unsigned (2), 3.0f, 4.0))
+ return 2;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/var-tpl-concept-1.h b/gcc/testsuite/g++.dg/modules/var-tpl-concept-1.h
new file mode 100644
index 0000000..1dbd07f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/var-tpl-concept-1.h
@@ -0,0 +1,70 @@
+
+template<class _CharT> struct char_traits;
+
+template<typename _CharT, typename _Traits = char_traits<_CharT>>
+class basic_string;
+
+typedef basic_string<char> string;
+
+template<typename> struct iterator_traits;
+
+template<bool _Cond> struct conditional;
+
+template<typename _Iter>
+inline constexpr bool disable_sized_sentinel_for = false;
+
+template<typename _Iter>
+concept sized_sentinel_for = !disable_sized_sentinel_for<_Iter>;
+
+template<typename _Iterator>
+class __normal_iterator
+{
+ typedef iterator_traits<_Iterator> __traits_type;
+};
+
+template<typename _Iterator>
+class reverse_iterator
+{
+public:
+ using iterator_concept
+ = typename conditional<sized_sentinel_for<_Iterator>>::type;
+};
+
+
+template<typename _Iterator>
+requires (!sized_sentinel_for<_Iterator>)
+bool disable_sized_sentinel_for<reverse_iterator<_Iterator>> = true;
+
+
+template<typename _Iterator>
+bool operator==(const reverse_iterator<_Iterator>& __x,
+ const reverse_iterator<_Iterator>& __y);
+template<typename _Iterator>
+bool operator==(const __normal_iterator<_Iterator>& __lhs,
+ const __normal_iterator<_Iterator>& __rhs);
+
+template<typename _It >
+class common_iterator
+{
+public:
+ friend bool operator==(const common_iterator& __x,
+ const common_iterator& __y)
+ {
+ return __x._M_it == __y._M_it;
+ }
+
+private:
+ _It _M_it;
+};
+
+template<typename _It>
+struct iterator_traits<common_iterator<_It>>
+{
+};
+
+template<typename _CharT>
+struct char_traits
+{
+ static bool eq(const _CharT& __c1, const _CharT& __c2)
+ { return __c1 == __c2; }
+};
diff --git a/gcc/testsuite/g++.dg/modules/var-tpl-concept-1_a.C b/gcc/testsuite/g++.dg/modules/var-tpl-concept-1_a.C
new file mode 100644
index 0000000..4655e39
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/var-tpl-concept-1_a.C
@@ -0,0 +1,8 @@
+// { dg-additional-options {-fmodules-ts -fconcepts} }
+module;
+#include "var-tpl-concept-1.h"
+
+export module foo:part1;
+// { dg-module-cmi {foo:part1} }
+
+export void bar (string &);
diff --git a/gcc/testsuite/g++.dg/modules/var-tpl-concept-1_b.C b/gcc/testsuite/g++.dg/modules/var-tpl-concept-1_b.C
new file mode 100644
index 0000000..2c44ede
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/var-tpl-concept-1_b.C
@@ -0,0 +1,10 @@
+// { dg-additional-options {-fmodules-ts -fconcepts} }
+module;
+#include "var-tpl-concept-1.h"
+
+export module foo;
+// { dg-module-cmi {foo} }
+
+export import :part1;
+
+export void baz (string &);
diff --git a/gcc/testsuite/g++.dg/modules/virt-1_a.C b/gcc/testsuite/g++.dg/modules/virt-1_a.C
new file mode 100644
index 0000000..7719a28
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/virt-1_a.C
@@ -0,0 +1,25 @@
+// { dg-module-do run }
+// { dg-additional-options -fmodules-ts }
+export module foo;
+// { dg-module-cmi foo }
+
+export struct Visitor
+{
+ virtual int Visit ();
+};
+
+// Key function explicitly not in line (regardless of p1779's state)
+// We emit vtables & rtti only in this TU
+int Visitor::Visit ()
+{
+ return 0;
+}
+
+export int Visit (Visitor *v)
+{
+ return v->Visit ();
+}
+
+// { dg-final { scan-assembler {_ZTV7Visitor:} } }
+// { dg-final { scan-assembler {_ZTI7Visitor:} } }
+// { dg-final { scan-assembler {_ZTS7Visitor:} } }
diff --git a/gcc/testsuite/g++.dg/modules/virt-1_b.C b/gcc/testsuite/g++.dg/modules/virt-1_b.C
new file mode 100644
index 0000000..b4372e1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/virt-1_b.C
@@ -0,0 +1,23 @@
+// { dg-additional-options -fmodules-ts }
+
+import foo;
+
+struct Mine : Visitor
+{
+ int Visit () override
+ {
+ return 1;
+ }
+};
+
+int main ()
+{
+ Mine me;
+
+ return !(Visit (&me) == 1);
+}
+
+// We do not emit Visitor vtable or rtti here
+// { dg-final { scan-assembler-not {_ZTV7Visitor:} } }
+// { dg-final { scan-assembler-not {_ZTI7Visitor:} } }
+// { dg-final { scan-assembler-not {_ZTS7Visitor:} } }
diff --git a/gcc/testsuite/g++.dg/modules/virt-2_a.C b/gcc/testsuite/g++.dg/modules/virt-2_a.C
new file mode 100644
index 0000000..9115cc1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/virt-2_a.C
@@ -0,0 +1,27 @@
+// { dg-module-do run }
+// { dg-additional-options -fmodules-ts }
+export module foo;
+// { dg-module-cmi foo }
+
+export struct Visitor
+{
+ virtual int Visit ();
+};
+
+// Key function explicitly inline (regardless of p1779's state)
+// We emit vtables & rtti only in this TU
+inline // Yoink!
+ int Visitor::Visit ()
+{
+ return 0;
+}
+
+export int Visit (Visitor *v)
+{
+ return v->Visit ();
+}
+
+// Emit here
+// { dg-final { scan-assembler {_ZTV7Visitor:} } }
+// { dg-final { scan-assembler {_ZTI7Visitor:} } }
+// { dg-final { scan-assembler {_ZTS7Visitor:} } }
diff --git a/gcc/testsuite/g++.dg/modules/virt-2_b.C b/gcc/testsuite/g++.dg/modules/virt-2_b.C
new file mode 100644
index 0000000..5432189
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/virt-2_b.C
@@ -0,0 +1,28 @@
+// { dg-additional-options -fmodules-ts }
+
+import foo;
+
+struct Mine : Visitor
+{
+ int Visit () override
+ {
+ return 1;
+ }
+};
+
+extern int Foo ();
+
+int main ()
+{
+ Mine me;
+
+ if (auto b = Foo ())
+ return b;
+ return !(Visit (&me) == 1);
+}
+
+// We do not emit Visitor vtable
+// but we do emit rtti here
+// { dg-final { scan-assembler-not {_ZTV7Visitor:} } }
+// { dg-final { scan-assembler {_ZTI7Visitor:} } }
+// { dg-final { scan-assembler {_ZTS7Visitor:} } }
diff --git a/gcc/testsuite/g++.dg/modules/virt-2_c.C b/gcc/testsuite/g++.dg/modules/virt-2_c.C
new file mode 100644
index 0000000..1ac7f99
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/virt-2_c.C
@@ -0,0 +1,16 @@
+// { dg-additional-options -fmodules-ts }
+
+import foo;
+
+int Foo ()
+{
+ Visitor v;
+
+ return !(Visit (&v) == 0);
+}
+
+// We do emit Visitor vtable
+// andl also we do emit rtti here
+// { dg-final { scan-assembler {_ZTV7Visitor:} } }
+// { dg-final { scan-assembler {_ZTI7Visitor:} } }
+// { dg-final { scan-assembler {_ZTS7Visitor:} } }
diff --git a/gcc/testsuite/g++.dg/modules/vmort-1_a.C b/gcc/testsuite/g++.dg/modules/vmort-1_a.C
new file mode 100644
index 0000000..aa404dd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/vmort-1_a.C
@@ -0,0 +1,34 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts" }
+
+export module tom.riddle;
+// { dg-module-cmi tom.riddle }
+
+export inline auto One (int a)
+{
+ struct X {
+ int x;
+ // p1779 makes these things not-inline, which is a surprise.
+ // Asking CWG
+ inline X(int a) :x(a){}
+ inline operator int () const {return x;}
+ };
+
+ return X(a);
+}
+
+// Look Ma! this isn't inline!
+export auto Two (int a)
+{
+ struct Y {
+ int x;
+ // In this case we do manage to emit these fns (if not marked as
+ // inline), but we give them internal linkage, so they are not
+ // nameable from elsewhere. Workaround for now.
+ inline Y(int a) :x(a){}
+ inline operator int () const {return x;}
+ };
+
+ return Y(a);
+}
+
diff --git a/gcc/testsuite/g++.dg/modules/vmort-1_b.C b/gcc/testsuite/g++.dg/modules/vmort-1_b.C
new file mode 100644
index 0000000..9ba49f1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/vmort-1_b.C
@@ -0,0 +1,17 @@
+// { dg-additional-options "-fmodules-ts" }
+
+import tom.riddle;
+
+int main ()
+{
+ auto one = One (2);
+
+ if (int (one) != 2)
+ return 1;
+
+ int two = Two (3);
+ if (two != 3)
+ return 2;
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/modules/vmort-2_a.C b/gcc/testsuite/g++.dg/modules/vmort-2_a.C
new file mode 100644
index 0000000..27d114d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/vmort-2_a.C
@@ -0,0 +1,15 @@
+// { dg-module-do run }
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-graph-blocks" }
+
+export module voldy;
+// { dg-module-cmi voldy }
+
+export auto frobber (int i)
+{
+ return [=] (int j) { return i + j; };
+}
+
+// { dg-final { scan-lang-dump {Connecting definition decl type_decl:'::frobber::._anon_0'} module } }
+// { dg-final { scan-lang-dump {Entities 5} module } }
+
+// { dg-final { scan-lang-dump {Cluster members:\n \[0\]=decl declaration '::frobber'\n \[1\]=decl definition '::frobber::._anon_0'\n( \[.\]=decl [^\n]*'\n)* \[.\]=binding '::frobber'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/vmort-2_b.C b/gcc/testsuite/g++.dg/modules/vmort-2_b.C
new file mode 100644
index 0000000..e7376cc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/vmort-2_b.C
@@ -0,0 +1,20 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-graph-blocks" }
+
+export module malfoy;
+// { dg-module-cmi malfoy }
+
+import voldy;
+
+void interpose ()
+{
+ // Force renumber of anon vars
+ auto lambda = [] () {};
+}
+
+export auto conduit (int i)
+{
+ return frobber (i);
+}
+
+// { dg-final { scan-lang-dump-not {Cluster import } module } }
+// { dg-final { scan-lang-dump-not {onnecting definition decl type_decl:'::frobber@voldy:.::._anon_1@voldy:.'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/vmort-2_c.C b/gcc/testsuite/g++.dg/modules/vmort-2_c.C
new file mode 100644
index 0000000..f50c407
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/vmort-2_c.C
@@ -0,0 +1,21 @@
+// { dg-additional-options "-fmodules-ts -fdump-lang-module-uid" }
+
+import malfoy;
+
+void interpose ()
+{
+ // Force renumber of anon vars
+ auto lambda0 = [] () {};
+ auto lambda1 = [] () {};
+ auto lambda2 = [] () {};
+}
+
+int main ()
+{
+ auto widget = conduit (2);
+
+ return !(widget (8) == 10);
+}
+
+// { dg-final { scan-lang-dump {Loading entity voldy\[1\] section:1} module } }
+// { dg-final { scan-lang-dump {Indirect:-[0-9]* decl's type record_type:'::frobber@voldy:.::._anon_3@voldy:.'} module } }
diff --git a/gcc/testsuite/g++.dg/modules/vtt-1_a.C b/gcc/testsuite/g++.dg/modules/vtt-1_a.C
new file mode 100644
index 0000000..11a1f6f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/vtt-1_a.C
@@ -0,0 +1,36 @@
+// { dg-additional-options "-fmodules-ts -O2 -fno-inline" }
+
+export module foo;
+// { dg-module-cmi foo }
+
+export struct base
+{
+ base () {}
+ virtual ~base ();
+ int m;
+};
+
+base::~base ()
+{
+}
+
+export struct derived : virtual base
+{
+ derived () {}
+ virtual ~derived ();
+ int m2;
+};
+
+derived::~derived ()
+{
+}
+
+export void make_foo ()
+{
+ base b;
+ derived d;
+}
+
+// { dg-final {scan-assembler "_ZTV4base:" } }
+// { dg-final {scan-assembler "_ZTV7derived:" } }
+// { dg-final {scan-assembler "_ZTT7derived:" } }
diff --git a/gcc/testsuite/g++.dg/modules/vtt-1_b.C b/gcc/testsuite/g++.dg/modules/vtt-1_b.C
new file mode 100644
index 0000000..2f1b965
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/vtt-1_b.C
@@ -0,0 +1,28 @@
+// { dg-additional-options "-fmodules-ts -O2 -fno-inline" }
+
+export module bar;
+// { dg-module-cmi bar }
+
+export import foo;
+
+export struct mine : derived
+{
+ mine () {}
+ ~mine ();
+ int mm;
+};
+
+mine::~mine ()
+{
+}
+
+export inline void make_bar ()
+{
+ mine m;
+}
+
+// { dg-final {scan-assembler-not "_ZTV4base:" } }
+// { dg-final {scan-assembler-not "_ZTV7derived:" } }
+// { dg-final {scan-assembler-not "_ZTT7derived:" } }
+// { dg-final {scan-assembler "_ZTV4mine:" } }
+// { dg-final {scan-assembler "_ZTT4mine:" } }
diff --git a/gcc/testsuite/g++.dg/modules/vtt-1_c.C b/gcc/testsuite/g++.dg/modules/vtt-1_c.C
new file mode 100644
index 0000000..9acdd32
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/vtt-1_c.C
@@ -0,0 +1,19 @@
+// { dg-additional-options "-fmodules-ts -O2 -fno-inline" }
+
+import bar;
+
+int main ()
+{
+ make_foo ();
+ make_bar ();
+
+ mine m0;
+
+ return 0;
+}
+
+// { dg-final {scan-assembler-not "_ZTV4base:" } }
+// { dg-final {scan-assembler-not "_ZTV7derived:" } }
+// { dg-final {scan-assembler-not "_ZTT7derived:" } }
+// { dg-final {scan-assembler-not "_ZTV4mine:" } }
+// { dg-final {scan-assembler-not "_ZTT4mine:" } }
diff --git a/gcc/testsuite/g++.dg/modules/vtt-2.h b/gcc/testsuite/g++.dg/modules/vtt-2.h
new file mode 100644
index 0000000..5ae0db0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/vtt-2.h
@@ -0,0 +1,14 @@
+
+class basic_ios
+{
+public:
+ virtual ~basic_ios();
+ basic_ios();
+};
+
+class basic_ostream : virtual public basic_ios
+{
+public:
+ basic_ostream();
+ virtual ~basic_ostream();
+};
diff --git a/gcc/testsuite/g++.dg/modules/vtt-2_a.H b/gcc/testsuite/g++.dg/modules/vtt-2_a.H
new file mode 100644
index 0000000..0e01872
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/vtt-2_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+// { dg-module-cmi {} }
+
+#include "vtt-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/vtt-2_b.C b/gcc/testsuite/g++.dg/modules/vtt-2_b.C
new file mode 100644
index 0000000..c1ed3d5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/vtt-2_b.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
+
+#include "vtt-2.h"
+import "vtt-2_a.H";
+
+// { dg-final { scan-lang-dump-not {merge key \(new\)} module } }
+// { dg-final { scan-lang-dump-times {merge key \(unique\)} 2 module } }
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1.h b/gcc/testsuite/g++.dg/modules/xtreme-header-1.h
new file mode 100644
index 0000000..a7c635c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1.h
@@ -0,0 +1,19 @@
+// All the headers tickle a location bug. so subsets of the STL :(
+
+// C compatibility
+#include <cassert>
+#include <cerrno>
+#include <cfenv>
+#include <cfloat>
+#include <cinttypes>
+#include <climits>
+#include <clocale>
+#include <cmath>
+#include <csetjmp>
+#include <cstdarg>
+#include <cstddef>
+#include <cstdint>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <ctime>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
new file mode 100644
index 0000000..f30dacc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+
+// { dg-module-cmi {} }
+#include "xtreme-header-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
new file mode 100644
index 0000000..e273016
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include "xtreme-header-1.h"
+import "xtreme-header-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_c.C b/gcc/testsuite/g++.dg/modules/xtreme-header-1_c.C
new file mode 100644
index 0000000..081a302
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_c.C
@@ -0,0 +1,3 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+import "xtreme-header-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2.h b/gcc/testsuite/g++.dg/modules/xtreme-header-2.h
new file mode 100644
index 0000000..ded093e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2.h
@@ -0,0 +1,14 @@
+// Everything that transitively includes <ranges>
+
+#include <algorithm>
+// FIXME: PR 97549
+// #include <execution>
+#include <functional>
+#include <future>
+#include <memory>
+#include <memory_resource>
+#include <regex>
+#include <scoped_allocator>
+#include <thread>
+#include <valarray>
+#include <ranges>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
new file mode 100644
index 0000000..217ead3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+
+// { dg-module-cmi {} }
+#include "xtreme-header-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
new file mode 100644
index 0000000..1f608ec
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include "xtreme-header-2.h"
+import "xtreme-header-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_c.C b/gcc/testsuite/g++.dg/modules/xtreme-header-2_c.C
new file mode 100644
index 0000000..bd942c3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_c.C
@@ -0,0 +1,3 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+import "xtreme-header-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3.h b/gcc/testsuite/g++.dg/modules/xtreme-header-3.h
new file mode 100644
index 0000000..bbfef0a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3.h
@@ -0,0 +1,21 @@
+// Containers (except ranges-including ones)
+
+#include <array>
+#include <bitset>
+#include <deque>
+#include <forward_list>
+#include <initializer_list>
+#include <iterator>
+#include <list>
+#include <map>
+#include <optional>
+#include <queue>
+#include <set>
+#include <stack>
+#include <string>
+#include <string_view>
+#include <tuple>
+#include <unordered_map>
+#include <unordered_set>
+#include <variant>
+#include <vector>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
new file mode 100644
index 0000000..d3ff6fd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+
+// { dg-module-cmi {} }
+#include "xtreme-header-3.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
new file mode 100644
index 0000000..2eb3145
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include "xtreme-header-3.h"
+import "xtreme-header-3_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_c.C b/gcc/testsuite/g++.dg/modules/xtreme-header-3_c.C
new file mode 100644
index 0000000..0852b71
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_c.C
@@ -0,0 +1,3 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+import "xtreme-header-3_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4.h b/gcc/testsuite/g++.dg/modules/xtreme-header-4.h
new file mode 100644
index 0000000..4c918bc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4.h
@@ -0,0 +1,17 @@
+// io
+
+#include <charconv>
+#include <cctype>
+#include <cuchar>
+#include <cwchar>
+#include <cwctype>
+#include <filesystem>
+#include <fstream>
+#include <iomanip>
+#include <ios>
+#include <iosfwd>
+#include <istream>
+#include <locale>
+#include <ostream>
+#include <sstream>
+#include <streambuf>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
new file mode 100644
index 0000000..391adbe
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+
+// { dg-module-cmi {} }
+#include "xtreme-header-4.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
new file mode 100644
index 0000000..ff7147e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include "xtreme-header-4.h"
+import "xtreme-header-4_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_c.C b/gcc/testsuite/g++.dg/modules/xtreme-header-4_c.C
new file mode 100644
index 0000000..829a0e9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_c.C
@@ -0,0 +1,3 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+import "xtreme-header-4_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5.h b/gcc/testsuite/g++.dg/modules/xtreme-header-5.h
new file mode 100644
index 0000000..ed43541
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5.h
@@ -0,0 +1,22 @@
+// Remaining C++17 headers
+
+// C++ 17 and below
+#include <any>
+#include <atomic>
+#include <chrono>
+#include <complex>
+#include <condition_variable>
+#include <exception>
+#include <limits>
+#include <mutex>
+#include <new>
+#include <numeric>
+#include <random>
+#include <ratio>
+#include <shared_mutex>
+#include <stdexcept>
+#include <system_error>
+#include <type_traits>
+#include <typeindex>
+#include <typeinfo>
+#include <utility>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
new file mode 100644
index 0000000..a03c024
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+
+// { dg-module-cmi {} }
+#include "xtreme-header-5.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
new file mode 100644
index 0000000..8cf7d68
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include "xtreme-header-5.h"
+import "xtreme-header-5_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_c.C b/gcc/testsuite/g++.dg/modules/xtreme-header-5_c.C
new file mode 100644
index 0000000..c1ddb4c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_c.C
@@ -0,0 +1,3 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+import "xtreme-header-5_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6.h b/gcc/testsuite/g++.dg/modules/xtreme-header-6.h
new file mode 100644
index 0000000..85894b2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6.h
@@ -0,0 +1,22 @@
+// C++20 headers
+#if __cplusplus > 201703
+#include <version>
+#include <bit>
+#include <compare>
+#include <concepts>
+#if __cpp_coroutines
+#include <coroutine>
+#endif
+#include <numbers>
+#include <span>
+#include <stop_token>
+#if 0
+// Unimplemented
+#include <barrier>
+#include <format>
+#include <latch>
+#include <semaphore>
+#include <source_location>
+#include <syncstream>
+#endif
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
new file mode 100644
index 0000000..aec5a03
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+
+// { dg-module-cmi {} }
+#include "xtreme-header-6.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
new file mode 100644
index 0000000..0d2cc69
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include "xtreme-header-6.h"
+import "xtreme-header-6_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_c.C b/gcc/testsuite/g++.dg/modules/xtreme-header-6_c.C
new file mode 100644
index 0000000..2962a25
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_c.C
@@ -0,0 +1,3 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+import "xtreme-header-6_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header.h b/gcc/testsuite/g++.dg/modules/xtreme-header.h
new file mode 100644
index 0000000..41302c7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header.h
@@ -0,0 +1,144 @@
+// All the headers!
+
+#if __cplusplus > 201703L
+// FIXME: if we include everything, something goes wrong with location
+// information. We used to not handle lambdas attached to global
+// vars, and this is a convienient flag to stop including everything.
+#define NO_ASSOCIATED_LAMBDA 1
+#endif
+
+// C++ 17 and below
+#if 1
+#if !NO_ASSOCIATED_LAMBDA
+#include <algorithm>
+#endif
+#include <any>
+#include <array>
+#include <atomic>
+#include <bitset>
+#include <charconv>
+#include <chrono>
+#include <complex>
+#include <condition_variable>
+#include <cctype>
+#include <cuchar>
+#include <cwchar>
+#include <cwctype>
+#include <deque>
+#include <exception>
+#if !NO_ASSOCIATED_LAMBDA
+// FIXME: PR 97549
+//#include <execution>
+#endif
+#include <filesystem>
+#include <forward_list>
+#include <fstream>
+#if !NO_ASSOCIATED_LAMBDA
+#include <functional>
+#endif
+#if !NO_ASSOCIATED_LAMBDA
+#include <future>
+#endif
+#include <initializer_list>
+#include <iomanip>
+#include <ios>
+#include <iosfwd>
+#include <istream>
+#include <iterator>
+#include <limits>
+#include <list>
+#include <locale>
+#include <map>
+#if !NO_ASSOCIATED_LAMBDA
+#include <memory>
+#endif
+#if !NO_ASSOCIATED_LAMBDA
+#include <memory_resource>
+#endif
+#include <mutex>
+#include <new>
+#include <numeric>
+#include <optional>
+#include <ostream>
+#include <queue>
+#include <random>
+#include <ratio>
+#if !NO_ASSOCIATED_LAMBDA
+#include <regex>
+#endif
+#if !NO_ASSOCIATED_LAMBDA
+#include <scoped_allocator>
+#endif
+#include <set>
+#include <shared_mutex>
+#include <sstream>
+#include <stack>
+#include <stdexcept>
+#include <streambuf>
+#include <string>
+#include <string_view>
+#include <system_error>
+#if !NO_ASSOCIATED_LAMBDA
+#include <thread>
+#endif
+#include <tuple>
+#include <type_traits>
+#include <typeindex>
+#include <typeinfo>
+#include <unordered_map>
+#include <unordered_set>
+#include <utility>
+#if !NO_ASSOCIATED_LAMBDA
+#include <valarray>
+#endif
+#include <variant>
+#include <vector>
+#endif
+
+// C compatibility
+#if 1
+#include <cassert>
+#include <cerrno>
+#include <cfenv>
+#include <cfloat>
+#include <cinttypes>
+#include <climits>
+#include <clocale>
+#include <cmath>
+#include <csetjmp>
+#include <cstdarg>
+#include <cstddef>
+#include <cstdint>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <ctime>
+#endif
+
+// C++20
+#if __cplusplus > 201703
+#if 1
+#include <version>
+#include <bit>
+#include <compare>
+#include <concepts>
+#if __cpp_coroutines
+#include <coroutine>
+#endif
+#if !NO_ASSOCIATED_LAMBDA
+#include <ranges>
+#endif
+#include <numbers>
+#include <span>
+#include <stop_token>
+#if 0
+// Unimplemented
+#include <barrier>
+#include <format>
+#include <latch>
+#include <semaphore>
+#include <source_location>
+#include <syncstream>
+#endif
+#endif
+#endif
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
new file mode 100644
index 0000000..bf7859f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+
+// { dg-module-cmi {} }
+#include "xtreme-header.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
new file mode 100644
index 0000000..2e736da
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include "xtreme-header.h"
+import "xtreme-header_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1.h b/gcc/testsuite/g++.dg/modules/xtreme-tr1.h
new file mode 100644
index 0000000..8fe1399
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1.h
@@ -0,0 +1,11 @@
+#include <tr1/functional>
+#include <tr1/array>
+#include <tr1/complex>
+#include <tr1/memory>
+#include <tr1/random>
+#include <tr1/regex>
+#include <tr1/tuple>
+#include <tr1/type_traits>
+#include <tr1/unordered_map>
+#include <tr1/unordered_set>
+#include <tr1/utility>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
new file mode 100644
index 0000000..bed70a6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
@@ -0,0 +1,4 @@
+// { dg-additional-options -fmodule-header }
+
+// { dg-module-cmi {} }
+#include "xtreme-tr1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
new file mode 100644
index 0000000..9bb1dc2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
@@ -0,0 +1,4 @@
+// { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+
+#include "xtreme-tr1.h"
+import "xtreme-tr1_a.H";
diff --git a/gcc/testsuite/g++.dg/no-stack-protector-attr-3.C b/gcc/testsuite/g++.dg/no-stack-protector-attr-3.C
index dd9cd49..56a4e74 100644
--- a/gcc/testsuite/g++.dg/no-stack-protector-attr-3.C
+++ b/gcc/testsuite/g++.dg/no-stack-protector-attr-3.C
@@ -4,7 +4,7 @@
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-O2 -fstack-protector-explicit" } */
-/* { dg-do compile } */
+/* { dg-do compile { target { ! hppa*-*-* } } } */
int __attribute__((no_stack_protector)) foo()
{
diff --git a/gcc/testsuite/g++.dg/no-stack-protector-attr.C b/gcc/testsuite/g++.dg/no-stack-protector-attr.C
index e5105bf..3314a94 100644
--- a/gcc/testsuite/g++.dg/no-stack-protector-attr.C
+++ b/gcc/testsuite/g++.dg/no-stack-protector-attr.C
@@ -4,7 +4,7 @@
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-O2 -fstack-protector-all" } */
-/* { dg-do compile } */
+/* { dg-do compile { target { ! hppa*-*-* } } } */
int __attribute__((no_stack_protector)) c()
{
diff --git a/gcc/testsuite/g++.dg/opt/20050511-1.C b/gcc/testsuite/g++.dg/opt/20050511-1.C
index a840fb0..7041a48 100644
--- a/gcc/testsuite/g++.dg/opt/20050511-1.C
+++ b/gcc/testsuite/g++.dg/opt/20050511-1.C
@@ -5,7 +5,7 @@
#include <stdlib.h>
// The VxWorks kernel headers define their own UINT32
-#if defined __vxworks && !defined __RTP__
+#if defined __vxworks
#define UINT32 my_UINT32
#endif
diff --git a/gcc/testsuite/g++.dg/opt/pr87974.C b/gcc/testsuite/g++.dg/opt/pr87974.C
index 4b070d2..7d8357a 100644
--- a/gcc/testsuite/g++.dg/opt/pr87974.C
+++ b/gcc/testsuite/g++.dg/opt/pr87974.C
@@ -8,6 +8,7 @@ class i {
struct j {
using c = int *;
};
+public:
using as = j::c;
};
template <typename> class k {
diff --git a/gcc/testsuite/g++.dg/opt/pr98282.C b/gcc/testsuite/g++.dg/opt/pr98282.C
new file mode 100644
index 0000000..5450841
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr98282.C
@@ -0,0 +1,80 @@
+// PR tree-optimization/98282
+// { dg-do compile { target c++11 } }
+// { dg-options "-O2" }
+
+template <typename> struct g;
+template <typename b> struct g<b &> { typedef b c; };
+template <typename b> typename g<b>::c &&d(b &&e) {
+ return static_cast<typename g<b>::c &&>(e);
+}
+void *operator new(__SIZE_TYPE__, void *f) { return f; }
+struct h;
+struct k {
+ using i = h *;
+};
+struct D {
+ k::i j;
+};
+struct p : D {
+ p(p &&) : D() {}
+};
+struct r {
+ using l = int;
+ r(r &&) : ad() {}
+ l *ad;
+};
+struct s {
+ static s m();
+};
+struct t {
+ template <typename ah> void operator=(ah);
+};
+struct I {
+ template <typename o> void q(o ai) {
+ *ai = aj();
+ s::m();
+ }
+ h aj();
+};
+template <typename...> class as;
+struct J {
+ int a;
+ char av;
+};
+template <typename...> struct aw : J {
+ void ax(...) {}
+};
+template <typename... ay, typename an, typename... n>
+struct aw<as<ay...>, an, n...> : aw<as<ay...>, n...> {
+ using az = as<ay...>;
+ using ba = aw<az, n...>;
+ char bb;
+ an &bc() { return *reinterpret_cast<an *>(this); }
+ void ax(az *bd) {
+ if (bb)
+ new (bd) an(d(bc()));
+ ba::ax(bd);
+ }
+};
+template <typename... n> struct as : aw<as<n...>, n...> {
+ as();
+ as(as &&be) { be.ax(this); }
+ void operator=(as be) { be.ax(this); }
+};
+struct h {
+ as<decltype(nullptr), r, p> bg;
+};
+using bh = t;
+struct u {
+ bh bj;
+};
+I bk();
+template <typename> void bl() {
+ h a;
+ bk().q(&a);
+}
+template <typename> void bn(int) {
+ u b;
+ b.bj = bl<int>;
+}
+void bp() { bn<int>(0); }
diff --git a/gcc/testsuite/g++.dg/opt/pr98353.C b/gcc/testsuite/g++.dg/opt/pr98353.C
new file mode 100644
index 0000000..e3d0a47
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr98353.C
@@ -0,0 +1,17 @@
+// PR c++/98353
+// { dg-do compile { target c++11 } }
+
+template <int N> struct A {};
+template <typename T>
+struct B
+{
+ static const int n = 1;
+ template <class> A <B<T>::n> foo ();
+ _Complex double c[2], d = 1.0;
+};
+
+void
+bar ()
+{
+ B<int>().foo<int> ();
+}
diff --git a/gcc/testsuite/g++.dg/opt/pr98403.C b/gcc/testsuite/g++.dg/opt/pr98403.C
new file mode 100644
index 0000000..2552295
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr98403.C
@@ -0,0 +1,195 @@
+// { dg-options "-Og -fcse-follow-jumps -fipa-ra" }
+// { dg-require-effective-target c++11 }
+// { dg-additional-options "-march=goldmont -fPIC -mforce-indirect-call" { target { { i?86-*-* x86_64-*-* } && fpic } } }
+
+enum WindowClass { WC_NONE, WC_AI_SETTINGS, WC_AI_LIST };
+enum { AWV_DECREASE, AWV_INCREASE };
+enum WidgetType {
+ WWT_PANEL,
+ WWT_TEXT,
+ WWT_MATRIX,
+ WWT_FRAME,
+ WWT_CAPTION,
+ WWT_DEFSIZEBOX,
+ WWT_RESIZEBOX,
+ WWT_CLOSEBOX,
+ NWID_HORIZONTAL,
+ NWID_VERTICAL,
+ NWID_SPACER,
+ NWID_VSCROLLBAR,
+ WWT_PUSHTXTBTN,
+ WWT_PUSHARROWBTN
+};
+enum NWidContainerFlags { NC_NONE };
+struct NWidgetPartPIP {
+ char prepost;
+};
+struct NWidgetPart {
+ NWidgetPartPIP pip;
+} __trans_tmp_1;
+static NWidgetPart SetResize(short, short) {
+ NWidgetPart part;
+ return part;
+}
+NWidgetPart SetMinimalSize(short, short);
+static NWidgetPart SetFill(int, int) {
+ NWidgetPart part;
+ return part;
+}
+static NWidgetPart EndContainer() {
+ NWidgetPart part;
+ return part;
+}
+static NWidgetPart SetDataTip(int, int) {
+ NWidgetPart part;
+ return part;
+}
+static NWidgetPart SetMatrixDataTip(char, char, int) { return __trans_tmp_1; }
+NWidgetPart SetPadding();
+NWidgetPart SetScrollbar(int);
+NWidgetPart NWidget(WidgetType, NWidContainerFlags = NC_NONE);
+struct WindowDesc {
+ WindowDesc(const char *, short, short, WindowClass, WindowClass, int,
+ const NWidgetPart *, short, int * = nullptr);
+ ~WindowDesc();
+};
+class CommandCost {
+public:
+ CommandCost(int);
+} const CMD_ERROR(5);
+enum { WID_AIC_SCROLLBAR };
+const NWidgetPart _nested_ai_list_widgets[]{NWidget(NWID_HORIZONTAL),
+ NWidget(WWT_CLOSEBOX),
+ NWidget(WWT_CAPTION),
+ SetDataTip(8, 4),
+ NWidget(WWT_DEFSIZEBOX),
+ NWidget(NWID_HORIZONTAL),
+ NWidget(WWT_MATRIX),
+ SetMinimalSize(8, 2),
+ SetFill(1, 1),
+ SetResize(1, 1),
+ SetMatrixDataTip(1, 0, 1),
+ EndContainer(),
+ NWidget(WWT_PANEL),
+ EndContainer(),
+ NWidget(NWID_HORIZONTAL),
+ NWidget(NWID_HORIZONTAL),
+ NWidget(WWT_PUSHTXTBTN),
+ SetResize(1, 0),
+ SetFill(1, 0),
+ SetDataTip(5, 0),
+ NWidget(WWT_PUSHTXTBTN),
+ SetResize(1, 0),
+ SetFill(1, 0),
+ SetDataTip(1, 2),
+ EndContainer(),
+ NWidget(WWT_RESIZEBOX),
+ EndContainer()};
+static WindowDesc _ai_list_desc("", 0, 4, WC_AI_LIST, WC_NONE, 0,
+ _nested_ai_list_widgets, 0);
+const NWidgetPart _nested_ai_settings_widgets[]{NWidget(NWID_HORIZONTAL),
+ NWidget(WWT_CLOSEBOX),
+ NWidget(WWT_CAPTION),
+ SetDataTip(0, 4),
+ NWidget(WWT_DEFSIZEBOX),
+ EndContainer(),
+ NWidget(NWID_HORIZONTAL),
+ NWidget(WWT_MATRIX),
+ SetMinimalSize(8, 2),
+ SetResize(1, 1),
+ SetFill(1, 0),
+ SetMatrixDataTip(1, 0, 0),
+ EndContainer(),
+ NWidget(NWID_HORIZONTAL),
+ NWidget(NWID_HORIZONTAL),
+ NWidget(WWT_PUSHTXTBTN),
+ SetResize(1, 0),
+ SetDataTip(3, 0),
+ NWidget(WWT_PUSHTXTBTN),
+ SetResize(1, 0),
+ SetDataTip(4, 0),
+ EndContainer(),
+ NWidget(WWT_RESIZEBOX),
+ EndContainer()};
+static WindowDesc _ai_settings_desc("", 0, 208, WC_AI_SETTINGS, WC_NONE, 0,
+ _nested_ai_settings_widgets, 0);
+NWidgetPart _nested_ai_config_widgets[]{NWidget(NWID_HORIZONTAL),
+ NWidget(WWT_CLOSEBOX),
+ NWidget(WWT_CAPTION),
+ SetDataTip(5, 4),
+ EndContainer(),
+ NWidget(WWT_PANEL),
+ NWidget(NWID_VERTICAL),
+ SetPadding(),
+ NWidget(NWID_HORIZONTAL),
+ SetPadding(),
+ NWidget(WWT_PUSHARROWBTN),
+ SetFill(0, 1),
+ SetDataTip(AWV_DECREASE, 0),
+ NWidget(WWT_PUSHARROWBTN),
+ SetFill(0, 1),
+ SetDataTip(AWV_INCREASE, 0),
+ NWidget(NWID_SPACER),
+ SetMinimalSize(6, 0),
+ NWidget(WWT_TEXT),
+ SetDataTip(3, 0),
+ SetFill(1, 0),
+ SetPadding(),
+ EndContainer(),
+ NWidget(NWID_HORIZONTAL),
+ SetPadding(),
+ NWidget(WWT_PUSHTXTBTN),
+ SetResize(1, 0),
+ SetFill(1, 0),
+ SetDataTip(1, 2),
+ NWidget(WWT_PUSHTXTBTN),
+ SetResize(1, 0),
+ SetFill(1, 0),
+ SetDataTip(3, 4),
+ EndContainer(),
+ EndContainer(),
+ SetPadding(),
+ NWidget(NWID_HORIZONTAL),
+ NWidget(WWT_MATRIX),
+ SetMinimalSize(1, 0),
+ SetMatrixDataTip(1, 8, 7),
+ SetScrollbar(WID_AIC_SCROLLBAR),
+ NWidget(NWID_VSCROLLBAR),
+ EndContainer(),
+ EndContainer(),
+ NWidget(NWID_SPACER),
+ SetMinimalSize(0, 9),
+ NWidget(WWT_FRAME),
+ SetDataTip(5, 0),
+ SetPadding(),
+ NWidget(WWT_MATRIX),
+ SetMinimalSize(1, 0),
+ SetMatrixDataTip(1, 1, 6),
+ EndContainer(),
+ NWidget(NWID_HORIZONTAL),
+ SetPadding(),
+ NWidget(WWT_PUSHTXTBTN),
+ SetFill(1, 0),
+ SetMinimalSize(3, 2),
+ SetDataTip(1, 5),
+ NWidget(WWT_PUSHTXTBTN),
+ SetFill(1, 0),
+ SetMinimalSize(3, 2),
+ SetDataTip(6, 7),
+ NWidget(WWT_PUSHTXTBTN),
+ SetFill(1, 0),
+ SetMinimalSize(3, 2),
+ SetDataTip(3, 0),
+ EndContainer(),
+ NWidget(WWT_PUSHTXTBTN),
+ SetFill(1, 0),
+ SetResize(1, 0),
+ SetDataTip(6, 0),
+ NWidget(WWT_PUSHTXTBTN),
+ SetFill(1, 0),
+ SetResize(1, 0),
+ SetDataTip(7, 0),
+ NWidget(WWT_PUSHTXTBTN),
+ SetFill(1, 0),
+ SetResize(1, 0),
+ SetDataTip(2, 3)};
diff --git a/gcc/testsuite/g++.dg/opt/pr98464.C b/gcc/testsuite/g++.dg/opt/pr98464.C
new file mode 100644
index 0000000..38d0c1b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr98464.C
@@ -0,0 +1,155 @@
+// { dg-do compile }
+// { dg-require-effective-target c++11 }
+// { dg-options "-O3 -fno-tree-dce" }
+
+template < typename, typename, template < typename > class _Op, typename... _Args > struct __detector {
+ using type = _Op< _Args... >;
+ };
+ template < typename _Default, template < typename > class _Op, typename... _Args > using __detected_or = __detector< _Default, void, _Op, _Args... >;
+ template < typename _Default, template < typename > class _Op, typename... _Args > using __detected_or_t = typename __detected_or< _Default, _Op, _Args... >::type;
+ template < typename, typename > struct __replace_first_arg;
+ template < template < typename > class _Template, typename _Up, typename _Tp, typename... _Types > struct __replace_first_arg< _Template< _Tp, _Types... >, _Up > {
+ using type = _Template< _Up >;
+ };
+ template < class > class min_pointer;
+ class MoveOnly;
+ struct pointer_traits {
+ template < typename _Up > using rebind = typename __replace_first_arg< min_pointer< int >, _Up >::type;
+ };
+ template < typename _Iterator > class __normal_iterator {
+ public: __normal_iterator(_Iterator);
+ };
+ struct __allocator_traits_base {
+ template < typename _Tp > using __pointer = typename _Tp::pointer;
+ };
+ template < typename _Alloc > struct allocator_traits : __allocator_traits_base {
+ typedef typename _Alloc::value_type value_type;
+ using pointer = __detected_or_t< value_type, __pointer, _Alloc >;
+ template < typename _Tp > struct _Ptr {
+ using type = pointer_traits::rebind< _Tp >;
+ };
+ using const_pointer = typename _Ptr< value_type >::type;
+ using size_type = int;
+ static pointer allocate(_Alloc __a, size_type __n) {
+ return __a.allocate(__n);
+ }
+ };
+ template < typename _ForwardIterator, typename _Allocator > void _Destroy(_ForwardIterator __first, _ForwardIterator __last, _Allocator) {
+ for (;
+ __first != __last;
+ ++__first) ;
+ }
+ template < typename _InputIterator, typename _ForwardIterator, typename _Allocator > _ForwardIterator __uninitialized_copy_a(_InputIterator, _ForwardIterator, _Allocator);
+ template < typename _InputIterator, typename _ForwardIterator, typename _Allocator > _ForwardIterator __uninitialized_move_if_noexcept_a(_InputIterator __last, _ForwardIterator __result, _Allocator __alloc) {
+ return __uninitialized_copy_a(__last, __result, __alloc);
+ }
+ template < typename _ForwardIterator, typename _Size, typename _Allocator > _ForwardIterator __uninitialized_default_n_a(_ForwardIterator __first, _Size __n, _Allocator) {
+ for (;
+ __n;
+ --__n, ++__first) ;
+ return __first;
+ }
+ template < typename _Alloc > struct _Vector_base {
+ typedef _Alloc _Tp_alloc_type;
+ typedef typename _Tp_alloc_type ::pointer pointer;
+ struct _Vector_impl_data {
+ pointer _M_start;
+ pointer _M_finish;
+ pointer _M_end_of_storage;
+ };
+ struct _Vector_impl : _Tp_alloc_type, _Vector_impl_data {
+ _Vector_impl(_Tp_alloc_type) {
+ }
+ };
+ _Vector_base(long __n, _Alloc __a) : _M_impl(__a) {
+ _M_impl._M_end_of_storage = _M_impl._M_start + __n;
+ }
+ _Vector_impl _M_impl;
+ pointer _M_allocate(long __n) {
+ return __n ? allocator_traits< _Tp_alloc_type >::allocate(_M_impl, __n) : pointer();
+ }
+ };
+ template < typename, typename _Alloc > class vector : _Vector_base< _Alloc > {
+ public: typedef typename _Alloc::pointer pointer;
+ typedef __normal_iterator< typename allocator_traits< _Alloc >::const_pointer > const_iterator;
+ typedef _Alloc allocator_type;
+ vector(long __n, allocator_type __a = allocator_type()) : _Vector_base< _Alloc >(__n, __a) {
+ this->_M_impl._M_finish = __uninitialized_default_n_a(this->_M_impl._M_start, __n, 0);
+ }
+ ~vector() {
+ _Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 0);
+ }
+ const_iterator cbegin() {
+ return this->_M_impl._M_start;
+ }
+ typename _Alloc::value_type operator[](long) {
+ return *this->_M_impl._M_start;
+ }
+ void insert(const_iterator, MoveOnly &&) {
+ if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) ;
+ else _M_realloc_insert();
+ }
+ template < typename... > void _M_realloc_insert();
+ };
+ template < typename _Tp, typename _Alloc > template < typename... > void vector< _Tp, _Alloc >::_M_realloc_insert() {
+ long __trans_tmp_6 = this->_M_impl._M_finish - this->_M_impl._M_start;
+ pointer __old_start = this->_M_impl._M_start;
+ pointer __old_finish = this->_M_impl._M_finish;
+ pointer __new_start(this->_M_allocate(__trans_tmp_6));
+ pointer __new_finish = __uninitialized_move_if_noexcept_a(__old_finish, __new_finish, 0);
+ _Destroy(__old_start, __old_finish, 0);
+ this->_M_impl._M_start = __new_start;
+ this->_M_impl._M_finish = __new_finish;
+ }
+ class MoveOnly {
+ int data_;
+ public: bool operator==(MoveOnly) {
+ return data_;
+ }
+ };
+ void __assert_fail();
+ template < class T > class min_pointer {
+ T *ptr_;
+ min_pointer(T *p) : ptr_(p) {
+ }
+ public: min_pointer() = default;
+ T operator*() {
+ return *ptr_;
+ }
+ void operator++() {
+ ++ptr_;
+ }
+ void operator+=(long n) {
+ ptr_ += n;
+ }
+ min_pointer operator+(long n) {
+ min_pointer tmp(*this);
+ tmp += n;
+ return tmp;
+ }
+ friend long operator-(min_pointer x, min_pointer y) {
+ return x.ptr_ - y.ptr_;
+ }
+ friend bool operator==(min_pointer x, min_pointer y) {
+ return x.ptr_ == y.ptr_;
+ }
+ friend bool operator!=(min_pointer x, min_pointer y) {
+ return !(x == y);
+ }
+ friend class min_allocator;
+ };
+ class min_allocator {
+ public: typedef MoveOnly value_type;
+ typedef min_pointer< MoveOnly > pointer;
+ pointer allocate(long) {
+ return static_cast< MoveOnly * >(operator new(sizeof(MoveOnly)));
+ }
+ };
+ int main() {
+ vector< int, min_allocator > v(100);
+ v.insert(v.cbegin(), MoveOnly());
+ int j = 0;
+ for (;
+ j < 10;
+ ++j) v[j] == MoveOnly() ? void() : __assert_fail();
+ }
diff --git a/gcc/testsuite/g++.dg/opt/pr98550.C b/gcc/testsuite/g++.dg/opt/pr98550.C
new file mode 100644
index 0000000..49102e6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr98550.C
@@ -0,0 +1,96 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target c++11 } */
+/* { dg-additional-options "-O3" } */
+/* { dg-additional-options "-march=z13" { target s390x-*-* } } */
+
+template <int a> struct k { static constexpr int c = a; };
+template <bool, bool, typename...> struct o;
+template <typename f, typename... g> struct o<false, false, f, g...> {
+ typedef decltype(0) h;
+};
+template <typename... g> struct p : o<k<false>::c, k<false>::c, g...> {};
+class q;
+class r {
+public:
+ void ap(q);
+};
+template <typename, typename aw> void ax(aw ay) { ay(); }
+template <typename az> void ba(az bb) {
+ using bc = p<az>;
+ using bd = typename bc::h;
+ ax<bd>(bb);
+}
+template <unsigned> class s;
+class t {
+public:
+ s<8> br();
+ template <typename...> void operator()() { ba(br()); }
+};
+class q {
+public:
+ template <typename az> q(az) { H(); }
+ struct H {
+ t cc;
+ H() { cc(); }
+ };
+};
+template <unsigned long> struct I {};
+template <unsigned long cl, typename j> void cm(j cn, I<cl>) {
+ cm(cn, I<cl - 1>());
+ cn(cl);
+}
+template <typename j> void cm(j, I<0>) {}
+template <unsigned co> struct u {
+ long cp[co];
+ void cq(const u &);
+ void cs(int);
+ void operator<(u);
+};
+template <unsigned co> void u<co>::cq(const u &l) {
+ cm([&](int i) { cp[i] &= l.cp[i]; }, I<co>());
+}
+template <unsigned co> void u<co>::cs(int m) {
+ cm([&](int i) { cp[i] >>= m; }, I<co - 2>());
+}
+template <unsigned> class K;
+template <unsigned co> class v {
+ int cv;
+ friend K<co>;
+
+public:
+ void cx(int, unsigned char *, unsigned long long);
+};
+template <unsigned co> class K {
+public:
+ static void cx(v<co> &);
+};
+template <unsigned co>
+void v<co>::cx(int, unsigned char *, unsigned long long) {
+ K<co>::cx(*this);
+}
+template <unsigned co> void K<co>::cx(v<co> &cz) {
+ u<co> a, b, d;
+ int e, n = cz.cv;
+ for (; e;)
+ if (cz.cv)
+ a.cs(cz.cv);
+ a.cq(d);
+ a < b;
+}
+template <unsigned co> class s {
+ v<co> *dh;
+
+public:
+ void operator()();
+};
+template <unsigned co> void s<co>::operator()() {
+ int f;
+ unsigned char g;
+ long h;
+ dh->cx(f, &g, h);
+}
+void d() {
+ r i;
+ t j;
+ i.ap(j);
+}
diff --git a/gcc/testsuite/g++.dg/opt/pr98743.C b/gcc/testsuite/g++.dg/opt/pr98743.C
new file mode 100644
index 0000000..41f476f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr98743.C
@@ -0,0 +1,27 @@
+// Test for value-initialization via {}
+// { dg-do run { target c++11 } }
+/* { dg-options "-Og -fno-early-inlining -finline-small-functions -fpack-struct" */
+void * operator new (__SIZE_TYPE__, void *p) { return p; }
+void * operator new[] (__SIZE_TYPE__, void *p) { return p; }
+
+// Empty base so A isn't an aggregate
+struct B {};
+struct A: B {
+ int i;
+};
+
+struct C: A {
+ C(): A{} {}
+};
+
+int main()
+{
+ int space = 42;
+ A* ap = new (&space) A{};
+ int space1[1] = { 42 };
+ A* a1p = new (space1) A[1]{};
+ if (ap->i != 0 ||
+ a1p[0].i != 0)
+ return 1;
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/opt/store-merging-2.C b/gcc/testsuite/g++.dg/opt/store-merging-2.C
index 3c17033..b1ad701 100644
--- a/gcc/testsuite/g++.dg/opt/store-merging-2.C
+++ b/gcc/testsuite/g++.dg/opt/store-merging-2.C
@@ -4,7 +4,9 @@
// { dg-options "-O2 -flifetime-dse=2 -fdump-tree-store-merging-details" }
// { dg-final { scan-tree-dump "New sequence of 2 stores to replace old one of 3 stores" "store-merging" } }
-struct T { char a[128]; };
+/* The alignment is necessary for store-merging to take place on
+ strict-alignment targets. */
+struct __attribute__ ((__aligned__ (4))) T { char a[128]; };
struct S { S () : a () { a.a[12] = 0; a.a[13] = 1; a.a[14] = 0; a.a[15] = 6; } T a; };
void foo (S &);
void bar (void) { S s; foo (s); }
diff --git a/gcc/testsuite/g++.dg/other/anon5.C b/gcc/testsuite/g++.dg/other/anon5.C
index dadd92e..09853d4 100644
--- a/gcc/testsuite/g++.dg/other/anon5.C
+++ b/gcc/testsuite/g++.dg/other/anon5.C
@@ -1,6 +1,9 @@
// PR c++/34094
// { dg-do link { target { ! { *-*-darwin* *-*-hpux* *-*-solaris2.* } } } }
// { dg-require-effective-target nonpic }
+// Skip on vxworks kernel: The link being partial, the linker doesn't see
+// the undefined reference
+// { dg-skip-if "partial link" { vxworks_kernel } }
// { dg-options "-gdwarf-2" }
// Ignore additional message on powerpc-ibm-aix
// { dg-prune-output "obtain more information" } */
diff --git a/gcc/testsuite/g++.dg/other/switch4.C b/gcc/testsuite/g++.dg/other/switch4.C
index 5d0047b..070c55e 100644
--- a/gcc/testsuite/g++.dg/other/switch4.C
+++ b/gcc/testsuite/g++.dg/other/switch4.C
@@ -3,5 +3,4 @@
class a b; // { dg-error "aggregate" }
void c() {
switch () // { dg-error "expected" }
- case b // { dg-error "expected" }
- // { dg-error "-:expected" "" { target *-*-* } .+1 }
+ case b // { dg-error "9:expected" }
diff --git a/gcc/testsuite/g++.dg/parse/access12.C b/gcc/testsuite/g++.dg/parse/access12.C
new file mode 100644
index 0000000..6963e0e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/access12.C
@@ -0,0 +1,24 @@
+// Example 2 of [class.access.general]
+// { dg-do compile }
+
+class A {
+ typedef int I; // private member
+ I f();
+ friend I g(I);
+ static I x;
+ template<int> struct Q;
+ template<int> friend struct R;
+protected:
+ struct B { };
+};
+
+A::I A::f() { return 0; }
+A::I g(A::I p = A::x);
+A::I g(A::I p) { return 0; }
+A::I A::x = 0;
+// FIXME: We reject these two declarations because access checking of A::I
+// is not performed in the scope of the class being declared.
+// template<A::I> struct A::Q { };
+// template<A::I> struct R { };
+
+struct D: A::B, A { };
diff --git a/gcc/testsuite/g++.dg/parse/attr4.C b/gcc/testsuite/g++.dg/parse/attr4.C
index 36ebdbd..f16bf47 100644
--- a/gcc/testsuite/g++.dg/parse/attr4.C
+++ b/gcc/testsuite/g++.dg/parse/attr4.C
@@ -1,4 +1,3 @@
// PR c++/93684 - ICE-on-invalid with broken attribute.
[[a:: // { dg-error "expected" }
- // { dg-error "-:expected" "" { target c++11 } .+1 }
diff --git a/gcc/testsuite/g++.dg/parse/cond4.C b/gcc/testsuite/g++.dg/parse/cond4.C
index 893caea..6484f86 100644
--- a/gcc/testsuite/g++.dg/parse/cond4.C
+++ b/gcc/testsuite/g++.dg/parse/cond4.C
@@ -3,5 +3,4 @@
void foo()
{
- if (struct A{}// { dg-error "types may not be defined|expected" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+ if (struct A{}// { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/parse/crash10.C b/gcc/testsuite/g++.dg/parse/crash10.C
index 7e2dec6..f713c3c 100644
--- a/gcc/testsuite/g++.dg/parse/crash10.C
+++ b/gcc/testsuite/g++.dg/parse/crash10.C
@@ -9,4 +9,3 @@ class
{
typename::
; // { dg-error "expected" }
- // { dg-error "-:expected" "" { target *-*-* } .+1 }
diff --git a/gcc/testsuite/g++.dg/parse/crash18.C b/gcc/testsuite/g++.dg/parse/crash18.C
index 596d310..2531133 100644
--- a/gcc/testsuite/g++.dg/parse/crash18.C
+++ b/gcc/testsuite/g++.dg/parse/crash18.C
@@ -4,4 +4,4 @@
// PR 18095: ICE
// Origin: Volker Reichelt <reichelt@gcc.gnu.org>
-struct A // { dg-error "-:expected" "" { target *-*-* } .+1 }
+struct A // { dg-error "9:expected" }
diff --git a/gcc/testsuite/g++.dg/parse/crash27.C b/gcc/testsuite/g++.dg/parse/crash27.C
index 08977b2..4090fc5 100644
--- a/gcc/testsuite/g++.dg/parse/crash27.C
+++ b/gcc/testsuite/g++.dg/parse/crash27.C
@@ -2,4 +2,4 @@
void Dispatcher()
(__builtin_offsetof (ArgsType, largeMsgLen)) // { dg-error "initialize" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "54:expected" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/parse/crash34.C b/gcc/testsuite/g++.dg/parse/crash34.C
index 86f79cc..60f44ae 100644
--- a/gcc/testsuite/g++.dg/parse/crash34.C
+++ b/gcc/testsuite/g++.dg/parse/crash34.C
@@ -4,4 +4,4 @@
void foo()
{
namespace N { /* { dg-error "is not allowed" } */
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "16:expected" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/parse/crash35.C b/gcc/testsuite/g++.dg/parse/crash35.C
index 05f0a63..24b69f1 100644
--- a/gcc/testsuite/g++.dg/parse/crash35.C
+++ b/gcc/testsuite/g++.dg/parse/crash35.C
@@ -4,4 +4,4 @@
struct a {};
class foo : public a, a // { dg-error "duplicate base" }
-{ // { dg-error "-:at end of input" "" { target *-*-* } .+1 }
+{ // { dg-error "2:at end of input" }
diff --git a/gcc/testsuite/g++.dg/parse/crash52.C b/gcc/testsuite/g++.dg/parse/crash52.C
index 5dfb69c..ab30a7a 100644
--- a/gcc/testsuite/g++.dg/parse/crash52.C
+++ b/gcc/testsuite/g++.dg/parse/crash52.C
@@ -1,4 +1,4 @@
// PR c++/39053
void foo() = // { dg-error "initialized" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "13:expected" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/parse/crash59.C b/gcc/testsuite/g++.dg/parse/crash59.C
index 7526b08..52b6b24 100644
--- a/gcc/testsuite/g++.dg/parse/crash59.C
+++ b/gcc/testsuite/g++.dg/parse/crash59.C
@@ -1,4 +1,4 @@
// PR c++/53003
struct A{ void a{} return b // { dg-error "16:function definition" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "28:expected" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/parse/crash61.C b/gcc/testsuite/g++.dg/parse/crash61.C
index 713fe9f..b2004b8 100644
--- a/gcc/testsuite/g++.dg/parse/crash61.C
+++ b/gcc/testsuite/g++.dg/parse/crash61.C
@@ -5,4 +5,3 @@
struct pair { constexpr pair (const) : }; // { dg-error "" }
template <0> make_pair () {} // { dg-error "" }
pair prefix[] = { 0, make_pair } // { dg-error "" }
-// { dg-error "-:expected" "" { target c++11 } .+1 }
diff --git a/gcc/testsuite/g++.dg/parse/crash67.C b/gcc/testsuite/g++.dg/parse/crash67.C
index 2a5bb3f..8f6305d 100644
--- a/gcc/testsuite/g++.dg/parse/crash67.C
+++ b/gcc/testsuite/g++.dg/parse/crash67.C
@@ -4,4 +4,4 @@
class x0;
template <x1> x2() { // { dg-error "declared|type" }
x0 x3 = x3. // { dg-error "incomplete type" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "12:expected" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/parse/error14.C b/gcc/testsuite/g++.dg/parse/error14.C
index fd654180..3d87d46 100644
--- a/gcc/testsuite/g++.dg/parse/error14.C
+++ b/gcc/testsuite/g++.dg/parse/error14.C
@@ -20,4 +20,4 @@ struct X
// }
}; // { dg-error "1:expected primary-expression before '.' token" "primary" }
-// { dg-error "-:expected" "at end of input" { target *-*-* } .+1 }
+// { dg-error "3:expected" "at end of input" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/parse/error56.C b/gcc/testsuite/g++.dg/parse/error56.C
index 11d3197..bd3d27e 100644
--- a/gcc/testsuite/g++.dg/parse/error56.C
+++ b/gcc/testsuite/g++.dg/parse/error56.C
@@ -4,4 +4,3 @@ template <0> int __copy_streambufs_eof; // { dg-error "" }
class {
// { dg-error "forbids" "" { target *-*-* } .+1 }
friend __copy_streambufs_eof <> ( // { dg-error "" }
- // { dg-error "-:expected" "" { target *-*-* } .+1 }
diff --git a/gcc/testsuite/g++.dg/parse/error63.C b/gcc/testsuite/g++.dg/parse/error63.C
new file mode 100644
index 0000000..5472ef0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/error63.C
@@ -0,0 +1,8 @@
+// PR c++/96137
+// { dg-do compile }
+
+void
+fn ()
+{
+ X.operator T(); // { dg-error ".X. was not declared in this scope|expected" }
+}
diff --git a/gcc/testsuite/g++.dg/parse/invalid1.C b/gcc/testsuite/g++.dg/parse/invalid1.C
index cb4ef1a..971898f 100644
--- a/gcc/testsuite/g++.dg/parse/invalid1.C
+++ b/gcc/testsuite/g++.dg/parse/invalid1.C
@@ -3,4 +3,4 @@
// { dg-options "-w" }
int foo ( foo += *[ // { dg-error "expected" }
-// { dg-error "-:invalid|expected" "" { target *-*-* } .+1 }
+// { dg-error "20:invalid|expected" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C b/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C
index c6106d5..bd8f7f9 100644
--- a/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C
+++ b/gcc/testsuite/g++.dg/parse/parameter-declaration-1.C
@@ -3,5 +3,5 @@
// { dg-do compile }
struct {
- a(void = 0; a(0), a(0) // { dg-error "" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+ a(void = 0; a(0), a(0) // { dg-error "invalid|cannot|before|forbid|member" }
+// { dg-error "25:end of input" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/parse/parser-pr28152-2.C b/gcc/testsuite/g++.dg/parse/parser-pr28152-2.C
index 28048bd..8f6cce8 100644
--- a/gcc/testsuite/g++.dg/parse/parser-pr28152-2.C
+++ b/gcc/testsuite/g++.dg/parse/parser-pr28152-2.C
@@ -8,4 +8,4 @@ main (void)
z = __complex__ (1.90000007326203904e+19, 0.0); // { dg-error "expected primary-expression before '__complex__'" "primary-expression" }
z = __complex__ (1.0e+0, 0.0) / z; // { dg-error "expected primary-expression before '__complex__'" "primaty-expression" }
- // { dg-error "-:at end of input" "end" { target *-*-* } .+1 }
+ // { dg-error "37:at end of input" "end" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/parse/parser-pr28152.C b/gcc/testsuite/g++.dg/parse/parser-pr28152.C
index 3461734..748c355 100644
--- a/gcc/testsuite/g++.dg/parse/parser-pr28152.C
+++ b/gcc/testsuite/g++.dg/parse/parser-pr28152.C
@@ -8,4 +8,4 @@ main (void)
z = _Complex (1.90000007326203904e+19, 0.0); // { dg-error "expected primary-expression before '_Complex'" "primary-expression" }
z = _Complex (1.0e+0, 0.0) / z; // { dg-error "expected primary-expression before '_Complex'" "primary-expression" }
- // { dg-error "-:at end of input" "end" { target *-*-* } .+1 }
+ // { dg-error "34:at end of input" "end" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/parse/pr68722.C b/gcc/testsuite/g++.dg/parse/pr68722.C
index 26f6d11..6d2f100 100644
--- a/gcc/testsuite/g++.dg/parse/pr68722.C
+++ b/gcc/testsuite/g++.dg/parse/pr68722.C
@@ -6,4 +6,3 @@ class A {
A _M_ios_locale ios_base(ios_base &) template <_Traits> class basic_ios { // { dg-error "" }
basic_ios basic_ios = operator= // { dg-error "" }
// { dg-prune-output "file ends in default argument" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
diff --git a/gcc/testsuite/g++.dg/parse/pr96258.C b/gcc/testsuite/g++.dg/parse/pr96258.C
index 1b642e1..4d14a80 100644
--- a/gcc/testsuite/g++.dg/parse/pr96258.C
+++ b/gcc/testsuite/g++.dg/parse/pr96258.C
@@ -1,5 +1,3 @@
// { dg-additional-options -fopenmp }
// { dg-require-effective-target fopenmp }
-#pragma omp declare simd // { dg-error "not immediately followed by" }
-
-// { dg-error "-:expected unqualified-id" "" { target *-*-* } .+1 }
+#pragma omp declare simd // { dg-error "" }
diff --git a/gcc/testsuite/g++.dg/pch/pch.exp b/gcc/testsuite/g++.dg/pch/pch.exp
index f5afdc2..4f369b2 100644
--- a/gcc/testsuite/g++.dg/pch/pch.exp
+++ b/gcc/testsuite/g++.dg/pch/pch.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/pch/pr98343.C b/gcc/testsuite/g++.dg/pch/pr98343.C
new file mode 100644
index 0000000..095a4f1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pch/pr98343.C
@@ -0,0 +1,6 @@
+// PR c++/98343
+// { dg-options "-std=c++2a" }
+
+#include "pr98343.H"
+
+const void *ptr2 = __builtin_source_location ();
diff --git a/gcc/testsuite/g++.dg/pch/pr98343.Hs b/gcc/testsuite/g++.dg/pch/pr98343.Hs
new file mode 100644
index 0000000..33c8542
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pch/pr98343.Hs
@@ -0,0 +1,18 @@
+// PR c++/98343
+// { dg-options "-std=c++2a" }
+
+namespace std
+{
+ struct source_location
+ {
+ struct __impl
+ {
+ const char* _M_file_name;
+ const char* _M_function_name;
+ unsigned _M_line;
+ unsigned _M_column;
+ };
+ const __impl* _M_impl;
+ };
+}
+const void *ptr = __builtin_source_location ();
diff --git a/gcc/testsuite/g++.dg/plugin/plugin.exp b/gcc/testsuite/g++.dg/plugin/plugin.exp
index 5d8dde0..80c5355 100644
--- a/gcc/testsuite/g++.dg/plugin/plugin.exp
+++ b/gcc/testsuite/g++.dg/plugin/plugin.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/pr46852.C b/gcc/testsuite/g++.dg/pr46852.C
index 5cfeaf9..e3cb402 100644
--- a/gcc/testsuite/g++.dg/pr46852.C
+++ b/gcc/testsuite/g++.dg/pr46852.C
@@ -5,4 +5,3 @@ template
<
class
{ // { dg-error "" }
-// { dg-error "-:" "" { target *-*-* } .+1 }
diff --git a/gcc/testsuite/g++.dg/pr46868.C b/gcc/testsuite/g++.dg/pr46868.C
index 25b8c96..544c7b2 100644
--- a/gcc/testsuite/g++.dg/pr46868.C
+++ b/gcc/testsuite/g++.dg/pr46868.C
@@ -2,4 +2,3 @@
// { dg-do compile }
template < int > struct S { S < // { dg-error "" }
- // { dg-error "-:expected" "" { target *-*-* } .+1 }
diff --git a/gcc/testsuite/g++.dg/pr95768.C b/gcc/testsuite/g++.dg/pr95768.C
new file mode 100644
index 0000000..5e2c8c4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr95768.C
@@ -0,0 +1,32 @@
+/* PR c++/95768 - pretty-printer ICE on -Wuninitialized with allocated storage
+ { dg-do compile }
+ { dg-options "-O2 -Wall" } */
+
+extern "C" void *malloc (__SIZE_TYPE__);
+
+struct f
+{
+ int i;
+ static int e (int);
+ void operator= (int) { e (i); }
+};
+
+struct m {
+ int i;
+ f length;
+};
+
+struct n {
+ m *o() { return (m *)this; }
+};
+
+struct p {
+ n *header;
+ p () {
+ header = (n *)malloc (0);
+ m b = *header->o(); // { dg-warning "\\\[-Wuninitialized" }
+ b.length = 0;
+ }
+};
+
+void detach2() { p(); }
diff --git a/gcc/testsuite/g++.dg/pr97627.C b/gcc/testsuite/g++.dg/pr97627.C
new file mode 100644
index 0000000..81466dc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr97627.C
@@ -0,0 +1,44 @@
+/* PR tree-optimization/97627. */
+/* { dg-do run } */
+
+struct S { unsigned short x, y; } m = { 1, 0 };
+
+__attribute__((noipa)) void
+baz (int x, int y)
+{
+ if (x != 0 || y != 1)
+ __builtin_abort ();
+}
+
+__attribute__((noipa)) void
+bar ()
+{
+ throw 1;
+}
+
+void
+foo ()
+{
+ while (1)
+ {
+ int a = m.x + 1;
+ int b = m.y + 1;
+ for (int c = 0; c < a; c++)
+ for (int d = 0; d < b; d++)
+ baz (d, b);
+ bar ();
+ }
+}
+
+int
+main ()
+{
+ try
+ {
+ foo ();
+ }
+ catch (int)
+ {
+ }
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/pr98213.C b/gcc/testsuite/g++.dg/pr98213.C
new file mode 100644
index 0000000..1a744eb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr98213.C
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-options "-O3" } */
+
+#include <algorithm>
+
+long var_23;
+int var_24, test_var_8;
+extern bool arr_20[][13];
+char arr_21_0_0_0_0_0;
+int *test_arr_0;
+void test(unsigned long long var_1)
+{
+ int arr_16;
+ for (int i_0 = 0;;)
+ for (int i_5; i_5;) {
+ for (int i_6 = 0; i_6 < 19; i_6 += 4)
+ for (long i_7(test_var_8); i_7; i_7 += 2) {
+ arr_20[0][i_7] = arr_21_0_0_0_0_0 = 0;
+ var_23 = test_arr_0[0];
+ }
+ var_24 = std::max((unsigned long long)arr_16,
+ std::min((unsigned long long)5, var_1));
+ }
+}
diff --git a/gcc/testsuite/g++.dg/pr98330.C b/gcc/testsuite/g++.dg/pr98330.C
new file mode 100644
index 0000000..08bf77b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr98330.C
@@ -0,0 +1,7 @@
+// { dg-do compile }
+// { dg-options -O2 }
+
+float f (float x)
+{
+ return __builtin_pow[1] (x, 2); // { dg-warning "pointer to a function used in arithmetic" }
+}
diff --git a/gcc/testsuite/g++.dg/pr98499.C b/gcc/testsuite/g++.dg/pr98499.C
new file mode 100644
index 0000000..ace088a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr98499.C
@@ -0,0 +1,31 @@
+/* PR tree-optimization/98499. */
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+struct string {
+ // pointer to local store
+ char * _M_buf;
+ // local store
+ char _M_local_buf[16];
+
+ __attribute__((noinline)) string() : _M_buf(_M_local_buf) {}
+
+ ~string() {
+ if (_M_buf != _M_local_buf)
+ __builtin_trap();
+ }
+
+ string(const string &__str); // no copies
+};
+
+__attribute__((noinline)) static string dir_name() { return string(); }
+class Importer {
+ string base_path;
+
+public:
+ __attribute__((noinline)) Importer() : base_path (dir_name()) {}
+};
+
+int main() {
+ Importer imp;
+}
diff --git a/gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp b/gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp
index 3463d31..1f4c2ff 100644
--- a/gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp
+++ b/gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/special/ecos.exp b/gcc/testsuite/g++.dg/special/ecos.exp
index c60431b..1230cde 100644
--- a/gcc/testsuite/g++.dg/special/ecos.exp
+++ b/gcc/testsuite/g++.dg/special/ecos.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/tc1/dr142.C b/gcc/testsuite/g++.dg/tc1/dr142.C
index 2f03702..6e216da 100644
--- a/gcc/testsuite/g++.dg/tc1/dr142.C
+++ b/gcc/testsuite/g++.dg/tc1/dr142.C
@@ -2,13 +2,13 @@
// Origin: Giovanni Bajo <giovannibajo at gcc dot gnu dot org>
// DR142: Injection-related errors in access example
-class B { // { dg-message "declared" }
+class B {
public:
- int mi; // { dg-message "declared" }
- static int si; // { dg-message "declared" }
+ int mi;
+ static int si;
};
-class D: private B {
+class D: private B { // { dg-message "declared" }
};
class DD: public D {
diff --git a/gcc/testsuite/g++.dg/tc1/dr52.C b/gcc/testsuite/g++.dg/tc1/dr52.C
index 7cff847..17b6496 100644
--- a/gcc/testsuite/g++.dg/tc1/dr52.C
+++ b/gcc/testsuite/g++.dg/tc1/dr52.C
@@ -17,11 +17,11 @@ struct B1 : B {};
struct B2 : B {};
struct C
-{ // { dg-message "declared" }
- void foo(void);
+{
+ void foo(void);
};
-struct D : private C {};
+struct D : private C {}; // { dg-message "declared" }
struct X: A, B1, B2, D
{
diff --git a/gcc/testsuite/g++.dg/template/access32.C b/gcc/testsuite/g++.dg/template/access32.C
new file mode 100644
index 0000000..08faa9f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/access32.C
@@ -0,0 +1,8 @@
+// PR c++/98515
+// { dg-do compile }
+
+struct A { protected: int var0; };
+template <class> struct B : public A { };
+template <class T> struct C : public B<T> { void g(); };
+template <class T> void C<T>::g() { A::var0++; }
+template class C<int>;
diff --git a/gcc/testsuite/g++.dg/template/access33.C b/gcc/testsuite/g++.dg/template/access33.C
new file mode 100644
index 0000000..9fb9b9a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/access33.C
@@ -0,0 +1,9 @@
+// PR c++/98515
+// { dg-do compile }
+
+struct A { protected: int var0; };
+template <class> struct B : public A { };
+template <class T> struct C : public B<T> { void g(); };
+template <class T> void C<T>::g() { A::var0++; } // { dg-error "protected|invalid" }
+template <> struct B<char> { };
+template class C<char>;
diff --git a/gcc/testsuite/g++.dg/template/access34.C b/gcc/testsuite/g++.dg/template/access34.C
new file mode 100644
index 0000000..ec79f87
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/access34.C
@@ -0,0 +1,29 @@
+// PR c++/58993
+// { dg-do compile }
+
+class base { void foo(); };
+
+template <class T>
+struct bar : public base {
+ void f1() {
+ &base::foo; // { dg-error "private" }
+ }
+
+ template <class>
+ void f2() {
+ &base::foo; // { dg-error "private" }
+ }
+
+ void f3();
+};
+
+template <class T>
+void bar<T>::f3() {
+ (void) &base::foo; // { dg-error "private" }
+}
+
+int main() {
+ bar<int>().f1();
+ bar<int>().f2<int>();
+ bar<int>().f3();
+}
diff --git a/gcc/testsuite/g++.dg/template/access35.C b/gcc/testsuite/g++.dg/template/access35.C
new file mode 100644
index 0000000..70197eb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/access35.C
@@ -0,0 +1,19 @@
+// PR c++/82613
+// { dg-do compile }
+
+template <typename T> class B;
+
+class A {
+ friend class B<A>;
+ class Type {};
+};
+
+template <typename T>
+class B : T::Type { protected: class Type {}; };
+
+B<A> b;
+
+template <typename T>
+class C : B<T>::Type, B<T> {};
+
+C<A> c;
diff --git a/gcc/testsuite/g++.dg/template/crash115.C b/gcc/testsuite/g++.dg/template/crash115.C
index c1a7235..80f8683 100644
--- a/gcc/testsuite/g++.dg/template/crash115.C
+++ b/gcc/testsuite/g++.dg/template/crash115.C
@@ -1,4 +1,3 @@
// PR c++/56534
template < struct template rebind < > // { dg-error "expected|must follow" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
diff --git a/gcc/testsuite/g++.dg/template/crash43.C b/gcc/testsuite/g++.dg/template/crash43.C
index 3647a17..ae644ed 100644
--- a/gcc/testsuite/g++.dg/template/crash43.C
+++ b/gcc/testsuite/g++.dg/template/crash43.C
@@ -5,4 +5,3 @@ extern "C" {
struct ___is_pod {
enum {
__value = (sizeof(__gnu_internal::__test_type<_Tp>(0)))}; // { dg-error "expected|declared" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
diff --git a/gcc/testsuite/g++.dg/template/crash75.C b/gcc/testsuite/g++.dg/template/crash75.C
index 462be95..2bdc395 100644
--- a/gcc/testsuite/g++.dg/template/crash75.C
+++ b/gcc/testsuite/g++.dg/template/crash75.C
@@ -2,7 +2,9 @@
template<typename T> struct A
{
- T::X<0> x; // { dg-error "non-template|T::template|base type" }
+ T::X<0> x; // { dg-error "non-template" }
+ // { dg-message "T::template" "" { target *-*-* } .-1 }
+ // { dg-prune-output "is not a class" }
};
A<int*> a;
diff --git a/gcc/testsuite/g++.dg/template/crash76.C b/gcc/testsuite/g++.dg/template/crash76.C
index 851cdd8..2711749 100644
--- a/gcc/testsuite/g++.dg/template/crash76.C
+++ b/gcc/testsuite/g++.dg/template/crash76.C
@@ -7,7 +7,7 @@ template<typename> struct A
template<typename T> struct B
{
- using A<T>::X::Y; // { dg-error "not a base type" }
+ using A<T>::X::Y; // { dg-error "not a class" }
};
B<int> b;
diff --git a/gcc/testsuite/g++.dg/template/crash90.C b/gcc/testsuite/g++.dg/template/crash90.C
index e2a58e3..125ab0a 100644
--- a/gcc/testsuite/g++.dg/template/crash90.C
+++ b/gcc/testsuite/g++.dg/template/crash90.C
@@ -5,5 +5,4 @@ struct A ;
template < typename >
struct B ;
template < typename T , A < B < T > {} // { dg-error "parse error|non-type|initializer" }
-
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "39:expected" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/template/deduce8.C b/gcc/testsuite/g++.dg/template/deduce8.C
new file mode 100644
index 0000000..430be42
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/deduce8.C
@@ -0,0 +1,21 @@
+// PR c++/98659
+// { dg-do compile }
+
+template <bool> struct enable_if;
+struct function {
+ template <typename _F> void operator=(_F);
+};
+struct map {
+ function operator[](int);
+};
+enum { E };
+template <typename> void foo ();
+template <typename T>
+typename enable_if<T::value>::type foo ();
+
+void
+bar ()
+{
+ map m;
+ m[E] = foo<int>;
+}
diff --git a/gcc/testsuite/g++.dg/template/error-recovery1.C b/gcc/testsuite/g++.dg/template/error-recovery1.C
index 6f9ce6d..9625714 100644
--- a/gcc/testsuite/g++.dg/template/error-recovery1.C
+++ b/gcc/testsuite/g++.dg/template/error-recovery1.C
@@ -7,4 +7,3 @@ template < typename > struct T
template < bool > struct T < S > // { dg-error "" }
{
void f () { // { dg-error "expected" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
diff --git a/gcc/testsuite/g++.dg/template/error57.C b/gcc/testsuite/g++.dg/template/error57.C
index 121fbb1..f67e0a6 100644
--- a/gcc/testsuite/g++.dg/template/error57.C
+++ b/gcc/testsuite/g++.dg/template/error57.C
@@ -2,4 +2,4 @@
template <int()> struct a;
template <int(b)> a < b // { dg-error "int" }
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+// { dg-error "expected" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/template/friend68.C b/gcc/testsuite/g++.dg/template/friend68.C
new file mode 100644
index 0000000..fa34d2c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/friend68.C
@@ -0,0 +1,13 @@
+// { dg-do compile }
+
+template <class>
+struct S {
+ S();
+ friend int f(S x) { return x.i + x.j; }
+ template <class T>
+ friend int g(S x, T) { return x.i + x.j; }
+private:
+ int i;
+protected:
+ int j;
+};
diff --git a/gcc/testsuite/g++.dg/template/friend69.C b/gcc/testsuite/g++.dg/template/friend69.C
new file mode 100644
index 0000000..f3086a9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/friend69.C
@@ -0,0 +1,18 @@
+// { dg-do compile }
+
+struct A;
+
+struct B {
+ friend struct A;
+private:
+ static void f();
+protected:
+ static void g();
+};
+
+struct A {
+ friend void g(A) {
+ B::f(); // { dg-error "private" }
+ B::g(); // { dg-error "protected" }
+ }
+};
diff --git a/gcc/testsuite/g++.dg/template/partial5.C b/gcc/testsuite/g++.dg/template/partial5.C
index a562297..40d8c45 100644
--- a/gcc/testsuite/g++.dg/template/partial5.C
+++ b/gcc/testsuite/g++.dg/template/partial5.C
@@ -14,7 +14,7 @@ template<typename T, typename T::foo V>
struct Y { };
template<typename T, typename U, U v>
-struct Y<T, v> { }; // { dg-error "" "" { target { ! c++17 } } }
+struct Y<T, v> { }; // { dg-error "" }
template<typename T, T V>
diff --git a/gcc/testsuite/g++.dg/template/pr97399.C b/gcc/testsuite/g++.dg/template/pr97399.C
new file mode 100644
index 0000000..4bb8189
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/pr97399.C
@@ -0,0 +1,23 @@
+// PR c++/97399
+// { dg-do compile { target c++11 } }
+
+template <bool> struct enable_if_t {};
+
+struct tmp {
+ template <class> static constexpr bool is_integral();
+ template <class T> static auto f()
+ -> enable_if_t<tmp::is_integral<T>()>;
+ template <class T> friend auto g(tmp, T)
+ -> enable_if_t<!tmp::is_integral<T>()>;
+};
+
+template <class> constexpr bool tmp::is_integral() { return true; }
+
+template <class T> auto tmp::f()
+ -> enable_if_t<tmp::is_integral<T>()> { return {}; }
+
+int main()
+{
+ tmp::f<int>();
+ g(tmp{}, 0);
+}
diff --git a/gcc/testsuite/g++.dg/template/pr98297.C b/gcc/testsuite/g++.dg/template/pr98297.C
new file mode 100644
index 0000000..0dd63a5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/pr98297.C
@@ -0,0 +1,6 @@
+// PR 98297, ICE
+// { dg-do compile { target c++11 } }
+template <template <class> class a>
+struct [[b]]
+a <int>; // { dg-error "does not declare anything" }
+// { dg-warning "ignored" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/template/pr98372.C b/gcc/testsuite/g++.dg/template/pr98372.C
new file mode 100644
index 0000000..054c94d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/pr98372.C
@@ -0,0 +1,28 @@
+// PR 98372 ICE due to incorrect type compare
+// { dg-do compile { target c++14 } }
+
+template <typename _Tp> using remove_pointer_t = typename _Tp ::type;
+template <bool> struct enable_if;
+template <bool _Cond, typename>
+using enable_if_t = typename enable_if<_Cond>::type;
+template <typename> bool is_convertible_v;
+template <typename, unsigned long = 0> class Span;
+template <typename T, unsigned long> class Span {
+ using element_type = T;
+ template <unsigned long N>
+ Span(element_type (&arr)[N],
+ enable_if_t<is_convertible_v<remove_pointer_t<decltype(data(arr))>>,
+ decltype(nullptr)>);
+};
+template <typename T> class Span<T> {
+ using element_type = T;
+ template <unsigned long N>
+ Span(element_type (&arr)[N],
+ enable_if_t<is_convertible_v<remove_pointer_t<decltype(data(arr))>>,
+ decltype(nullptr)>);
+};
+
+struct aaa
+{
+ Span<char> data0;
+};
diff --git a/gcc/testsuite/g++.dg/template/pr98538.C b/gcc/testsuite/g++.dg/template/pr98538.C
new file mode 100644
index 0000000..b62e8a9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/pr98538.C
@@ -0,0 +1,18 @@
+// PR c++/98538
+// { dg-do compile { target c++11 } }
+// ICE bulding a dependent array type variant
+
+template<typename T> using A = int[1];
+template<typename T, const A<T>> struct X { };
+
+template<typename T>
+void
+f (const A<T>)
+{
+ const A<T> a;
+}
+
+template<typename T>
+struct Y {
+ const A<T> a;
+};
diff --git a/gcc/testsuite/g++.dg/template/ttp33.C b/gcc/testsuite/g++.dg/template/ttp33.C
new file mode 100644
index 0000000..cd0de8c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/ttp33.C
@@ -0,0 +1,10 @@
+// A slight variation of ttp31.C.
+// { dg-do compile { target c++11 } }
+
+template<class TA,
+ template<typename TA::type...> class TTA, TA... VA>
+struct A { };
+
+template<class UC, class TC,
+ template<typename TC::type...> class TTC, TC... VC>
+struct C : A<TC, TTC, VC...> { };
diff --git a/gcc/testsuite/g++.dg/tls/pr79288.C b/gcc/testsuite/g++.dg/tls/pr79288.C
index da6751f..c41629d 100644
--- a/gcc/testsuite/g++.dg/tls/pr79288.C
+++ b/gcc/testsuite/g++.dg/tls/pr79288.C
@@ -2,6 +2,7 @@
// { dg-do compile { target { nonpic || pie_enabled } } }
// { dg-require-effective-target tls }
// { dg-options "-O2" }
+// { dg-skip-if "VxWorks kernel tls model is local-exec" { vxworks_kernel } }
// { dg-final { scan-assembler-not "@tpoff" { target i?86-*-* x86_64-*-* } } }
struct S
diff --git a/gcc/testsuite/g++.dg/tls/tls.exp b/gcc/testsuite/g++.dg/tls/tls.exp
index 8cba2ad..d2be0fa 100644
--- a/gcc/testsuite/g++.dg/tls/tls.exp
+++ b/gcc/testsuite/g++.dg/tls/tls.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/tm/tm.exp b/gcc/testsuite/g++.dg/tm/tm.exp
index cd3b561..7b02f4f 100644
--- a/gcc/testsuite/g++.dg/tm/tm.exp
+++ b/gcc/testsuite/g++.dg/tm/tm.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/torture/pr97474.C b/gcc/testsuite/g++.dg/torture/pr97474.C
new file mode 100644
index 0000000..6ce117e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr97474.C
@@ -0,0 +1,28 @@
+// PR c++/97474
+// { dg-do run }
+
+extern "C" int printf (const char *, ...);
+extern "C" void abort ();
+
+struct A {
+ int a;
+ int& b;
+
+ A(int x) : a(x), b(a) {}
+ A(const A& other) : a(other.a), b(a) {}
+ A() : a(0), b(a) {}
+};
+
+int foo(A a) {
+ a.a *= a.b;
+ return a.b;
+}
+
+
+int main() {
+ A a(3);
+
+ int r = foo (a);
+ if (r != 9)
+ abort ();
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr97960.C b/gcc/testsuite/g++.dg/torture/pr97960.C
new file mode 100644
index 0000000..c6c068e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr97960.C
@@ -0,0 +1,30 @@
+// PR tree-optimization/97960
+// { dg-do run }
+
+#if __CHAR_BIT__ == 8 && __SIZEOF_INT__ == 4
+const int &
+foo (const int &d, const int &f)
+{
+ if (d < f)
+ return f;
+ return d;
+}
+
+short a[575];
+unsigned b[25];
+unsigned char g;
+#endif
+
+int
+main ()
+{
+#if __CHAR_BIT__ == 8 && __SIZEOF_INT__ == 4
+ for (int e = 0; e < 23; ++e)
+ a[e * 23] = 16137;
+ for (signed char h = (unsigned char) (foo (g, 253) + 3); h < 24; h++)
+ b[h] = 1064739102;
+ for (int e = 0; e < 23; ++e)
+ if (a[e * 23] != 16137)
+ __builtin_abort ();
+#endif
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr98568.C b/gcc/testsuite/g++.dg/torture/pr98568.C
new file mode 100644
index 0000000..5c20223
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr98568.C
@@ -0,0 +1,37 @@
+// PR tree-optimization/98568
+// { dg-do compile }
+
+char a[2];
+char b[4];
+
+void
+foo (int x)
+{
+ a[1] = x >> 8;
+ a[0] = x;
+}
+
+void
+bar (long long x)
+{
+ b[3] = x >> 24;
+ b[2] = x >> 16;
+ b[1] = x >> 8;
+ b[0] = x;
+}
+
+void
+baz (int x)
+{
+ a[0] = x >> 8;
+ a[1] = x;
+}
+
+void
+qux (long long x)
+{
+ b[0] = x >> 24;
+ b[1] = x >> 16;
+ b[2] = x >> 8;
+ b[3] = x;
+}
diff --git a/gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp b/gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp
index 4039326..1efb4c2 100644
--- a/gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp
+++ b/gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp b/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp
index 71b23ab..6b716ef 100644
--- a/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp
+++ b/gcc/testsuite/g++.dg/tree-prof/tree-prof.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/tree-ssa/copyprop.C b/gcc/testsuite/g++.dg/tree-ssa/copyprop.C
index 8c05895..bc9167a 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/copyprop.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/copyprop.C
@@ -8,6 +8,11 @@
#include <vector>
#include <iostream>
#include <cstdlib>
+
+#ifdef ERROR
+#undef ERROR
+#endif
+
using namespace std;
template<typename _FIter, typename _Tp> _FIter lower_bound(_FIter, _FIter, _Tp&);
template<class _Key> struct hash { };
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr96930.C b/gcc/testsuite/g++.dg/tree-ssa/pr96930.C
new file mode 100644
index 0000000..3d4d098
--- /dev/null
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr96930.C
@@ -0,0 +1,10 @@
+// PR tree-optimization/96930
+// { dg-do compile }
+// { dg-options "-O2 -fdump-tree-optimized" }
+// { dg-final { scan-tree-dump " = a_\[0-9]\\\(D\\\) >> b_\[0-9]\\\(D\\\);" "optimized" } }
+
+unsigned
+foo (unsigned a, unsigned b)
+{
+ return a / (unsigned long long) (1U << b);
+}
diff --git a/gcc/testsuite/g++.dg/tsan/tsan.exp b/gcc/testsuite/g++.dg/tsan/tsan.exp
index 955a77b..7befe8d 100644
--- a/gcc/testsuite/g++.dg/tsan/tsan.exp
+++ b/gcc/testsuite/g++.dg/tsan/tsan.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/g++.dg/ubsan/align-4.C b/gcc/testsuite/g++.dg/ubsan/align-4.C
new file mode 100644
index 0000000..42c091b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ubsan/align-4.C
@@ -0,0 +1,31 @@
+// PR c++/98206
+// { dg-do run }
+// { dg-options "-fsanitize=alignment -std=c++11 -fno-sanitize-recover=alignment" }
+
+template <typename Derived>
+struct Base1
+{
+ char c1;
+};
+
+template <typename Derived>
+struct Base2
+{
+ char c2;
+ const Derived &get2 () const { return static_cast<const Derived &> (*this); }
+};
+
+struct X : public Base1<X>, public Base2<X>
+{
+ X (const char *d) : data{d} {}
+ const char *data;
+};
+
+int
+main ()
+{
+ X x = X{"cheesecake"};
+ const char *p = x.get2 ().data;
+ if (p[0] != 'c')
+ __builtin_abort ();
+}
diff --git a/gcc/testsuite/g++.dg/ubsan/pr95693.C b/gcc/testsuite/g++.dg/ubsan/pr95693.C
new file mode 100644
index 0000000..13f688e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ubsan/pr95693.C
@@ -0,0 +1,26 @@
+// PR sanitizer/95693
+// { dg-do run }
+// { dg-options "-O2 -fsanitize=undefined -fno-sanitize-recover=undefined" }
+
+int g = 9;
+
+struct A {
+ A () : a(g) {}
+private:
+ int &a;
+};
+
+struct B {
+ A payload;
+};
+
+struct C : public B {
+ C () : B () {}
+ A p;
+};
+
+int
+main ()
+{
+ C t;
+}
diff --git a/gcc/testsuite/g++.dg/ubsan/ubsan.exp b/gcc/testsuite/g++.dg/ubsan/ubsan.exp
index 2bc9883..9f485db 100644
--- a/gcc/testsuite/g++.dg/ubsan/ubsan.exp
+++ b/gcc/testsuite/g++.dg/ubsan/ubsan.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/g++.dg/ubsan/vptr-18.C b/gcc/testsuite/g++.dg/ubsan/vptr-18.C
new file mode 100644
index 0000000..cd2ca0a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ubsan/vptr-18.C
@@ -0,0 +1,25 @@
+// PR c++/98103
+// { dg-do compile { target c++20 } }
+// { dg-additional-options "-fsanitize=vptr -fno-sanitize-recover=vptr" }
+// Modified constexpr-dynamic17.C.
+
+struct V {
+ virtual void f();
+};
+
+struct A : V { };
+
+struct B : V {
+ constexpr B(V*, A*);
+};
+
+struct D : B, A {
+ constexpr D() : B((A*)this, this) { }
+};
+
+constexpr B::B(V* v, A* a)
+{
+ dynamic_cast<B*>(a); // { dg-error "uninitialized" }
+}
+
+constexpr D d;
diff --git a/gcc/testsuite/g++.dg/vect/pr95401.cc b/gcc/testsuite/g++.dg/vect/pr95401.cc
new file mode 100644
index 0000000..6a56dab
--- /dev/null
+++ b/gcc/testsuite/g++.dg/vect/pr95401.cc
@@ -0,0 +1,13 @@
+// { dg-additional-options "-mavx2 -O3" { target avx2_runtime } }
+// { dg-additional-sources pr95401a.cc }
+
+extern int var_9;
+extern unsigned var_14;
+extern int arr_16[];
+#include <algorithm>
+void test() {
+ for (short a = 0; a < (short)var_9; a += 12140)
+ for (short b = 0; b < 8; b++)
+ if (std::max(var_14, 1U))
+ arr_16[a + b] = 0;
+}
diff --git a/gcc/testsuite/g++.dg/vect/pr95401a.cc b/gcc/testsuite/g++.dg/vect/pr95401a.cc
new file mode 100644
index 0000000..71b054c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/vect/pr95401a.cc
@@ -0,0 +1,13 @@
+// { dg-do compile }
+
+#include "../../gcc.dg/vect/tree-vect.h"
+
+int var_9 = 1693986256, var_14;
+int arr_16[11];
+void test();
+int main()
+{
+ check_vect();
+ test();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/vect/vect.exp b/gcc/testsuite/g++.dg/vect/vect.exp
index 861688d..0480955 100644
--- a/gcc/testsuite/g++.dg/vect/vect.exp
+++ b/gcc/testsuite/g++.dg/vect/vect.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.dg/warn/Warray-bounds15.C b/gcc/testsuite/g++.dg/warn/Warray-bounds15.C
new file mode 100644
index 0000000..0a18f63
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Warray-bounds15.C
@@ -0,0 +1,40 @@
+// PR c++/94775
+// { dg-do compile { target c++14 } }
+// { dg-options "-O2 -Warray-bounds" }
+
+template <typename> using a = int;
+template <bool, typename, typename> using b = int;
+typedef char d;
+template <long> using e = int;
+template <int f, int q> struct h { using i = b<q, a<e<f>>, e<f>>; };
+template <long f, bool g> using j = typename h<f, g>::i;
+long ab, k, aj;
+const d l[]{};
+class m {
+public:
+ m(int);
+};
+class n {
+ void ad() const;
+ template <class ae> void o(long) const {
+ using c __attribute__((aligned(1))) = const ae;
+ }
+ long p;
+ template <class, class>
+ auto s(unsigned long, unsigned long, unsigned long, unsigned long) const;
+ template <bool = false> auto q(unsigned long, unsigned long) const;
+};
+template <class, class>
+auto n::s(unsigned long, unsigned long, unsigned long, unsigned long t) const {
+ o<d>(p);
+ return t;
+}
+template <bool g> auto n::q(unsigned long p1, unsigned long p2) const {
+ using r = j<4, false>;
+ using ai = j<4, g>;
+ return s<ai, r>(ab, k, p1, p2);
+}
+void n::ad() const {
+ long f(l[aj]); // { dg-warning "outside array bounds" }
+ m(q(8, f));
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
new file mode 100644
index 0000000..47f97dc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
@@ -0,0 +1,38 @@
+/* PR c++/57111 - Generalize -Wfree-nonheap-object to delete
+ Verify that even without -Wsystem-headers the warning is issued
+ for pairs of library functions defined in system headers.
+ { dg-do compile { target c++11 } }
+ { dg-options "-O2 -Wall" } */
+
+#include <memory>
+#include <string>
+
+void test_string ()
+{
+ std::string str ("abc"); // { dg-message "declared here" }
+
+ const char *s = str.c_str ();
+ __builtin_printf ("%s\n", s);
+
+ /* Because the delete call is made directly in the function this
+ does not exercise the same thing as test_unique_ptr. */
+ delete s; // { dg-warning "'void operator delete\\(void\\*\[^\\)\]*\\)' called on unallocated object 'str'" }
+}
+
+void test_unique_ptr ()
+{
+ int arr[]= { 1, 2 }; // { dg-message "declared here" }
+
+ std::unique_ptr<int[]> up (arr);
+ __builtin_printf ("%i %i\n", up[0], up[1]);
+
+ /* TO DO: verify that the warning is printed, including its inlining
+ context (the directive below doesn't work):
+ { Xdg-message "In member function.*inlined from 'void test_unique_ptr\\(\\)'.*warning: 'void operator delete \\\[]\\(void\\*\\)' called on unallocated object 'arr'" "" { target *-*-* } 0 } */
+
+ /* Here, the delete call is made indirectly from std::unique_ptr
+ dtor. */
+}
+
+/* Prune out the warning from test_unique_ptr().
+ { dg-prune-output "-Wfree-nonheap-object" } */
diff --git a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-4.C b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-4.C
new file mode 100644
index 0000000..943ef0c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-4.C
@@ -0,0 +1,26 @@
+/* PR middle-end/98160: bogus -Wfree-nonheap-object calling member delete
+ on the result of inline member new plus offset
+ { dg-do compile }
+ { dg-options "-O2" } */
+
+struct MemoryManager { void* allocate (); };
+
+struct XMemory
+{
+ void* operator new (__SIZE_TYPE__, MemoryManager *mgr)
+ {
+ void *p = mgr->allocate ();
+ return (char*)p + sizeof(MemoryManager);
+ }
+
+ void operator delete (void*, MemoryManager*);
+};
+
+struct XMLMutex: XMemory {
+ XMLMutex();
+};
+
+void gValidatorMutex (MemoryManager *mgr)
+{
+ new (mgr) XMLMutex; // { dg-bogus "\\\[-Wfree-nonheap-object" }
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-5.C b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-5.C
new file mode 100644
index 0000000..742dba0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-5.C
@@ -0,0 +1,129 @@
+/* PR middle-end/98664 - inconsistent --Wfree-nonheap-object for inlined
+ calls to system headers
+ { dg-do compile }
+ { dg-options "-O2 -Wall" } */
+
+# 7 "Wfree-nonheap-object-5.h" 1 3
+
+struct A0
+{
+ void *p;
+
+ void f0 (void *q) { p = q; }
+ void g0 (void) {
+ __builtin_free (p); // { dg-warning "\\\[-Wfree-nonheap-object" }
+ }
+};
+
+struct A1
+{
+ void *p;
+
+ void f0 (void *q) { p = q; }
+ void f1 (void *q) { f0 (q); }
+
+ void g0 (void) {
+ __builtin_free (p); // { dg-warning "\\\[-Wfree-nonheap-object" }
+ }
+ void g1 (void) { g0 (); }
+};
+
+struct A2
+{
+ void *p;
+
+ void f0 (void *q) { p = q; }
+ void f1 (void *q) { f0 (q); }
+ void f2 (void *q) { f1 (q); }
+
+ void g0 (void) {
+ __builtin_free (p); // { dg-warning "\\\[-Wfree-nonheap-object" }
+ }
+ void g1 (void) { g0 (); }
+ void g2 (void) { g1 (); }
+};
+
+# 47 "Wfree-nonheap-object-5.C"
+
+#define NOIPA __attribute__ ((noipa))
+
+extern int array[];
+
+/* Verify the warning is issued even for calls in a system header inlined
+ into a function outside the header. */
+
+NOIPA void warn_g0 (struct A0 *p)
+{
+ int *q = array + 1;
+
+ p->f0 (q);
+ p->g0 ();
+}
+
+// { dg-message "inlined from 'void warn_g0\\(A0\\*\\)'" "" { target *-*-* } 0 }
+
+
+/* Also verify the warning can be suppressed. */
+
+NOIPA void nowarn_g0 (struct A0 *p)
+{
+ int *q = array + 2;
+
+ p->f0 (q);
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wfree-nonheap-object"
+ p->g0 ();
+#pragma GCC diagnostic pop
+}
+
+
+NOIPA void warn_g1 (struct A1 *p)
+{
+ int *q = array + 3;
+
+ p->f1 (q);
+ p->g1 ();
+}
+
+// { dg-message "inlined from 'void A1::g1\\(\\)'" "" { target *-*-* } 0 }
+// { dg-message "inlined from 'void warn_g1\\(A1\\*\\)'" "" { target *-*-* } 0 }
+
+
+NOIPA void nowarn_g1 (struct A2 *p)
+{
+ int *q = array + 4;
+
+ p->f1 (q);
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wfree-nonheap-object"
+ p->g1 ();
+#pragma GCC diagnostic pop
+}
+
+
+NOIPA void warn_g2 (struct A2 *p)
+{
+ int *q = array + 5;
+
+ p->f2 (q);
+ p->g2 ();
+}
+
+// { dg-message "inlined from 'void A2::g1\\(\\)'" "" { target *-*-* } 0 }
+// { dg-message "inlined from 'void A2::g2\\(\\)'" "" { target *-*-* } 0 }
+// { dg-message "inlined from 'void warn_g2\\(A2\\*\\)'" "" { target *-*-* } 0 }
+
+
+NOIPA void nowarn_g2 (struct A2 *p)
+{
+ int *q = array + 6;
+
+ p->f2 (q);
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wfree-nonheap-object"
+ p->g2 ();
+#pragma GCC diagnostic pop
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wmismatched-dealloc-2.C b/gcc/testsuite/g++.dg/warn/Wmismatched-dealloc-2.C
index 7ecc99a..3aea02f 100644
--- a/gcc/testsuite/g++.dg/warn/Wmismatched-dealloc-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wmismatched-dealloc-2.C
@@ -59,13 +59,13 @@ void test_my_new ()
{
void *p = my_new (1);
- // { dg-message "returned from a call to 'int\\\* my_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'int\\\* my_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
operator delete[] (p);
// { dg-warning "'void operator delete \\\[]\\\(void\\\*\\\)' called on pointer returned from a mismatched allocation function \\\[-Wmismatched-new-delete" "" { target *-*-* } .-1 }
}
{
void *p = my_new (1);
- // { dg-message "returned from a call to 'int\\\* my_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'int\\\* my_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
sink (p);
operator delete[] (p);
// { dg-warning "'void operator delete \\\[]\\\(void\\\*\\\)' called on pointer returned from a mismatched allocation function \\\[-Wmismatched-new-delete" "" { target *-*-* } .-1 }
@@ -89,7 +89,7 @@ void test_my_new ()
{
void *p = my_new (1);
- // { dg-message "returned from a call to 'int\\\* my_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'int\\\* my_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
sink (p);
my_array_delete ("3", p);
// { dg-warning "'void my_array_delete\\\(const char\\\*, void\\\*\\\)' called on pointer returned from a mismatched allocation function" "" { target *-*-* } .-1 }
@@ -97,7 +97,7 @@ void test_my_new ()
{
void *p = my_new (1);
- // { dg-message "returned from a call to 'int\\\* my_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'int\\\* my_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
sink (p);
free (p);
// { dg-warning "'void free\\\(void\\\*\\\)' called on pointer returned from a mismatched allocation function" "" { target *-*-* } .-1 }
@@ -105,7 +105,7 @@ void test_my_new ()
{
void *p = my_new (1);
- // { dg-message "returned from a call to 'int\\\* my_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'int\\\* my_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
sink (p);
p = realloc (p, 123);
// { dg-warning "'void\\\* realloc\\\(void\\\*, size_t\\\)' called on pointer returned from a mismatched allocation function" "" { target *-*-* } .-1 }
@@ -132,13 +132,13 @@ void test_my_array_new ()
{
void *p = my_array_new (1);
- // { dg-message "returned from a call to 'int\\\* my_array_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'int\\\* my_array_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
operator delete (p);
// { dg-warning "'void operator delete\\\(void\\\*\\\)' called on pointer returned from a mismatched allocation function \\\[-Wmismatched-new-delete" "" { target *-*-* } .-1 }
}
{
void *p = my_array_new (1);
- // { dg-message "returned from a call to 'int\\\* my_array_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'int\\\* my_array_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
sink (p);
operator delete (p);
// { dg-warning "'void operator delete\\\(void\\\*\\\)' called on pointer returned from a mismatched allocation function \\\[-Wmismatched-new-delete" "" { target *-*-* } .-1 }
@@ -161,7 +161,7 @@ void test_my_array_new ()
}
{
void *p = my_array_new (1);
- // { dg-message "returned from a call to 'int\\\* my_array_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'int\\\* my_array_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
sink (p);
my_delete ("3", p);
// { dg-warning "'void my_delete\\\(const char\\\*, void\\\*\\\)' called on pointer returned from a mismatched allocation function" "" { target *-*-* } .-1 }
@@ -169,7 +169,7 @@ void test_my_array_new ()
{
void *p = my_array_new (1);
- // { dg-message "returned from a call to 'int\\\* my_array_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'int\\\* my_array_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
sink (p);
free (p);
// { dg-warning "'void free\\\(void\\\*\\\)' called on pointer returned from a mismatched allocation function" "" { target *-*-* } .-1 }
@@ -177,7 +177,7 @@ void test_my_array_new ()
{
void *p = my_array_new (1);
- // { dg-message "returned from a call to 'int\\\* my_array_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'int\\\* my_array_new\\\(size_t\\\)'" "note" { target *-*-* } .-1 }
sink (p);
p = realloc (p, 123);
// { dg-warning "'void\\\* realloc\\\(void\\\*, size_t\\\)' called on pointer returned from a mismatched allocation function" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/warn/Wmismatched-dealloc.C b/gcc/testsuite/g++.dg/warn/Wmismatched-dealloc.C
index 682db6f0..3072e24 100644
--- a/gcc/testsuite/g++.dg/warn/Wmismatched-dealloc.C
+++ b/gcc/testsuite/g++.dg/warn/Wmismatched-dealloc.C
@@ -12,9 +12,9 @@ void* A (mydealloc, 2) myalloc (void*);
void* A (operator delete, 1)
- bad_new (size_t); // { dg-error "attribute argument 1 is ambiguous" }
+ bad_new (size_t); // { dg-error "attribute argument 1 is ambiguous" "" { target c++14 } }
void* A (operator delete[], 1)
- bad_array_new (size_t); // { dg-error "attribute argument 1 is ambiguous" }
+ bad_array_new (size_t); // { dg-error "attribute argument 1 is ambiguous" "" { target c++14 } }
void my_delete (const char*, void*);
void my_array_delete (const char*, void*);
diff --git a/gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-2.C b/gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-2.C
new file mode 100644
index 0000000..d0d53b3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-2.C
@@ -0,0 +1,249 @@
+/* Verify that implicit and explicit calls to member operator new and delete
+ are handled correctly.
+ { dg-do compile }
+ { dg-options "-Wmismatched-new-delete" } */
+
+typedef __SIZE_TYPE__ size_t;
+
+namespace std
+{
+#if __cplusplus >= 201703L
+enum class align_val_t: size_t { };
+#else
+enum align_val_t { };
+#endif
+
+struct nothrow_t { };
+const nothrow_t nothrow = { };
+}
+
+void sink (void*, ...);
+
+struct POD
+{
+ void* operator new (size_t);
+ void operator delete (void*);
+
+ void* operator new[] (size_t);
+ void operator delete[] (void*);
+};
+
+POD* nowarn_pod ()
+{
+ POD *p = new POD;
+ delete p;
+ return new POD;
+}
+
+void warn_pod_array_mismatch ()
+{
+ POD *p = new POD;
+ delete[] p; // { dg-warning "'static void POD::operator delete \\\[]\\(void\\*\\)' called on pointer returned from a mismatched allocation function" }
+ p = new POD[3];
+ delete p; // { dg-warning "'static void POD::operator delete\\(void\\*\\)' called on pointer returned from a mismatched allocation function" }
+}
+
+
+struct X1
+{
+ X1 ();
+
+ void* operator new (size_t);
+ void* operator new (size_t, std::align_val_t);
+ void* operator new (size_t, std::nothrow_t) throw ();
+ void* operator new (size_t, std::align_val_t, std::nothrow_t) throw ();
+
+ void* operator new[] (size_t);
+ void* operator new[] (size_t, std::align_val_t);
+ void* operator new[] (size_t, std::nothrow_t) throw ();
+ void* operator new[] (size_t, std::align_val_t, std::nothrow_t) throw ();
+
+ void operator delete (void*);
+ void operator delete (void*, size_t);
+ void operator delete (void*, std::align_val_t);
+ void operator delete (void*, size_t, std::align_val_t);
+ void operator delete (void*, std::nothrow_t) throw ();
+ void operator delete (void*, std::align_val_t, std::nothrow_t) throw ();
+
+ void operator delete[] (void*);
+ void operator delete[] (void*, size_t);
+ void operator delete[] (void*, std::align_val_t);
+ void operator delete[] (void*, size_t, std::align_val_t);
+ void operator delete[] (void*, std::nothrow_t) throw ();
+ void operator delete[] (void*, std::align_val_t, std::nothrow_t) throw ();
+};
+
+X1* nowarn_x1 ()
+{
+ return new X1;
+}
+
+X1* nowarn_x1_array ()
+{
+ return new X1[2];
+}
+
+X1* nowarn_align_val ()
+{
+ X1 *p = new (std::align_val_t (32)) X1;
+ delete p;
+ return new (std::align_val_t (64)) X1;
+}
+
+X1* nowarn_align_val_array ()
+{
+ X1 *p = new (std::align_val_t (32)) X1[2];
+ delete[] p;
+ return new (std::align_val_t (64)) X1[2];
+}
+
+X1* nowarn_x1_nothrow ()
+{
+ X1 *p = new (std::nothrow) X1;
+ delete p;
+ return new (std::nothrow) X1;
+}
+
+X1* nowarn_x1_nothrow_array ()
+{
+ X1 *p = new (std::nothrow) X1[3];
+ delete[] p;
+ return new (std::nothrow) X1[3];
+}
+
+X1* nowarn_align_val_nothrow ()
+{
+ X1 *p = new (std::align_val_t (32), std::nothrow) X1;
+ delete p;
+ return new (std::align_val_t (64), std::nothrow) X1;
+}
+
+X1* nowarn_align_val_nothrow_array ()
+{
+ X1 *p = new (std::align_val_t (32), std::nothrow) X1[4];
+ delete[] p;
+ return new (std::align_val_t (64), std::nothrow) X1[4];
+}
+
+void warn_x1_array_mismatch ()
+{
+ {
+ X1 *p = new X1;
+ delete[] p; // { dg-warning "'static void X1::operator delete \\\[]\\(void\\*\\)' called on pointer returned from a mismatched allocation function" }
+ }
+ {
+ X1 *p = new X1[2];
+ delete p; // { dg-warning "'static void X1::operator delete\\(void\\*\\)' called on pointer returned from a mismatched allocation function" }
+ }
+ {
+ X1 *p = new (std::align_val_t (32)) X1[2];
+ delete p; // { dg-warning "'static void X1::operator delete\\(void\\*\\)' called on pointer returned from a mismatched allocation function" }
+ }
+ {
+ // The following requires optimization (see warn_x1_array_mismatch()).
+ X1 *p = new (std::nothrow) X1[3];
+ delete p; // { dg-warning "'static void X1::operator delete\\(void\\*\\)' called on pointer returned from a mismatched allocation function" "pr?????" { xfail *-*-* } }
+ }
+}
+
+#pragma GCC push_options
+#pragma GCC optimize "1"
+
+void warn_x1_nothrow_array_mismatch ()
+{
+ X1 *p = new (std::nothrow) X1[3];
+ delete p; // { dg-warning "'static void X1::operator delete\\(void\\*\\)' called on pointer returned from a mismatched allocation function" }
+}
+
+#pragma GCC pop_options
+
+
+struct X2: X1
+{
+ X2 ();
+
+ void* operator new (size_t);
+ void operator delete (void*);
+};
+
+X2* nowarn_x2 ()
+{
+ X2 *p = new X2;
+ sink (p);
+ return new X2;
+}
+
+void warn_x2 ()
+{
+ X1 *p = new X2; // { dg-message "returned from 'static void\\* X2::operator new\\(size_t\\)'" "note" }
+ sink (p);
+ delete p; // { dg-warning "'static void X1::operator delete\\(void\\*\\)' called on pointer returned from a mismatched allocation function" }
+}
+
+namespace N {
+namespace NS {
+namespace NmSpc {
+namespace NameSpace {
+
+namespace dl { // same name as operator delete
+namespace nw { // and as operator new
+
+struct X3: X2
+{
+ X3 ();
+
+ void* operator new (size_t);
+ void operator delete (void*);
+};
+
+X3* nowarn_x3 ()
+{
+ X3 *p = new X3;
+ sink (p);
+ return new X3;
+}
+
+void warn_x3 ()
+{
+ X1 *p = new X3; // { dg-message "returned from 'static void\\* N::NS::NmSpc::NameSpace::dl::nw::X3::operator new\\(size_t\\)'" "note" }
+ sink (p);
+ delete p; // { dg-warning "'static void X1::operator delete\\(void\\*\\)' called on pointer returned from a mismatched allocation function" }
+}
+
+template <int N>
+struct X4: X2
+{
+ X4 ();
+
+ void* operator new (size_t);
+ void operator delete (void*);
+};
+
+void* nowarn_x4 ()
+{
+ X4<0> *p = new X4<0>;
+ sink (p);
+ return new X4<1>;
+}
+
+void warn_x4 ()
+{
+ X1 *p = new X4<1>; // { dg-message "returned from 'static void\\* N::NS::NmSpc::NameSpace::dl::nw::X4<N>::operator new\\(size_t\\) \\\[with int N = 1]'" "note" }
+ sink (p);
+ delete p; // { dg-warning "'static void X1::operator delete\\(void\\*\\)' called on pointer returned from a mismatched allocation function" }
+}
+
+void warn_x4_inst_mismatch ()
+{
+ void *p = new X4<2>; // { dg-message "returned from 'static void\\* N::NS::NmSpc::NameSpace::dl::nw::X4<N>::operator new\\(size_t\\) \\\[with int N = 2]'" "note" }
+ sink (p);
+ X4<3> *q = (X4<3>*)p;
+ delete q; // { dg-warning "'static void N::NS::NmSpc::NameSpace::dl::nw::X4<N>::operator delete\\(void\\*\\) \\\[with int N = 3]' called on pointer returned from a mismatched allocation function" }
+}
+
+} // nw
+} // dl
+} // NameSpace
+} // NmSpc
+} // NS
+} // N
diff --git a/gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-3.C b/gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-3.C
new file mode 100644
index 0000000..25e1346
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-3.C
@@ -0,0 +1,159 @@
+/* PR c++/98305 spurious -Wmismatched-new-delete on template instance
+ { dg-do compile }
+ { dg-options "-Wall" } */
+
+typedef __SIZE_TYPE__ size_t;
+
+void sink (void*, ...);
+
+template <class>
+struct A1
+{
+ A1 ();
+
+ void* operator new (size_t);
+ void operator delete (void*);
+
+ void* operator new[] (size_t);
+ void operator delete[] (void*);
+
+ template <class, class>
+ struct A2
+ {
+ A2 ();
+
+ void* operator new (size_t);
+ void operator delete (void*);
+
+ void* operator new[] (size_t);
+ void operator delete[] (void*);
+ };
+};
+
+void test_a1 ()
+{
+ {
+ A1<int> *p = new A1<int>();
+ sink (p);
+ delete p;
+ }
+
+ {
+ A1<long> *p = new A1<long>();
+ sink (p);
+ delete p;
+ }
+
+ {
+ void *p = new A1<int>();
+ A1<long> *q = (A1<long>*)p;
+ sink (q);
+ delete q; // { dg-warning "-Wmismatched-new-delete" }
+ }
+}
+
+void test_a2 ()
+{
+ {
+ A1<int>::A2<int, int> *p = new A1<int>::A2<int, int>();
+ sink (p);
+ delete p;
+ }
+ {
+ A1<void>::A2<int, long> *p = new A1<void>::A2<int, long>();
+ sink (p);
+ delete p;
+ }
+ {
+ A1<char*>::A2<long, double> *p = new A1<char*>::A2<long, double>();
+ sink (p);
+ delete p;
+ }
+
+ typedef A1<char>::A2<char, char> A;
+ {
+ A *p = (A*)new A1<char>::A2<char, int>();
+ sink (p);
+ delete p; // { dg-warning "-Wmismatched-new-delete" }
+ }
+
+ {
+ A *p = (A*)new A1<char>::A2<int, char>();
+ sink (p);
+ delete p; // { dg-warning "-Wmismatched-new-delete" }
+ }
+
+ {
+ A *p = (A*)new A1<int>::A2<char, char>();
+ sink (p);
+ delete p; // { dg-warning "-Wmismatched-new-delete" }
+ }
+}
+
+
+template <class>
+struct B1
+{
+ B1 ();
+
+ void* operator new (size_t);
+ void operator delete (void*);
+
+ void* operator new[] (size_t);
+ void operator delete[] (void*);
+
+ template <class, class>
+ struct B2
+ {
+ B2 ();
+
+ void* operator new (size_t);
+ void operator delete (void*);
+
+ void* operator new[] (size_t);
+ void operator delete[] (void*);
+ };
+};
+
+
+void test_b_b ()
+{
+ typedef B1<char> B1c;
+ typedef B1c::B2<B1c, B1c> B1cB2B1c;
+
+ {
+ B1cB2B1c *p = new B1cB2B1c;
+ sink (p);
+ delete p;
+ }
+
+ {
+ B1cB2B1c *p = new B1cB2B1c[1];
+ sink (p);
+ delete[] p;
+ }
+}
+
+
+void test_a_b ()
+{
+ typedef B1<char>::B2<char, char> B;
+
+ {
+ B *p = (B*)new A1<char>::A2<char, int>[1];
+ sink (p);
+ delete[] p; // { dg-warning "-Wmismatched-new-delete" }
+ }
+
+ {
+ B *p = (B*)new A1<char>::A2<int, char>[2];
+ sink (p);
+ delete[] p; // { dg-warning "-Wmismatched-new-delete" }
+ }
+
+ {
+ B *p = (B*)new A1<int>::A2<char, char>[3];
+ sink (p);
+ delete[] p; // { dg-warning "-Wmismatched-new-delete" }
+ }
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wmismatched-new-delete.C b/gcc/testsuite/g++.dg/warn/Wmismatched-new-delete.C
index ed1090b..fc07149 100644
--- a/gcc/testsuite/g++.dg/warn/Wmismatched-new-delete.C
+++ b/gcc/testsuite/g++.dg/warn/Wmismatched-new-delete.C
@@ -44,14 +44,14 @@ void warn_new_free (int n)
{
{
void *p = operator new (n);
- // { dg-message "returned from a call to 'void\\\* operator new\\\(" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'void\\\* operator new\\\(" "note" { target *-*-* } .-1 }
sink (p);
free (p);
// { dg-warning "'void free\\\(void\\\*\\\)' called on pointer returned from a mismatched allocation function" "" { target *-*-* } .-1 }
}
{
char *p = new char[n];
- // { dg-message "returned from a call to 'void\\\* operator new \\\[" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'void\\\* operator new \\\[" "note" { target *-*-* } .-1 }
sink (p);
free (p);
// { dg-warning "'void free\\\(void\\\*\\\)' called on pointer returned from a mismatched allocation function" "" { target *-*-* } .-1 }
@@ -66,7 +66,7 @@ void warn_new_realloc (int n)
{
{
void *p = operator new (n);
- // { dg-message "returned from a call to 'void\\\* operator new\\\(" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'void\\\* operator new\\\(" "note" { target *-*-* } .-1 }
sink (p);
p = realloc (p, n * 2);
// { dg-warning "'void\\\* realloc\\\(\[^)\]+\\\)' called on pointer returned from a mismatched allocation function" "" { target *-*-* } .-1 }
@@ -74,7 +74,7 @@ void warn_new_realloc (int n)
}
{
void *p = new char[n];
- // { dg-message "returned from a call to 'void\\\* operator new \\\[" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'void\\\* operator new \\\[" "note" { target *-*-* } .-1 }
sink (p);
p = realloc (p, n * 2);
// { dg-warning "'void\\\* realloc\\\(\[^)\]+\\\)' called on pointer returned from a mismatched allocation function" "" { target *-*-* } .-1 }
@@ -89,7 +89,7 @@ void warn_new_realloc (int n)
void warn_malloc_op_delete (int n)
{
char *p = (char *)malloc (n);
- // { dg-message "returned from a call to 'void\\\* malloc\\\(" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'void\\\* malloc\\\(" "note" { target *-*-* } .-1 }
sink (p);
operator delete (p);
// { dg-warning "'void operator delete\\\(void\\\*\\\)' called on pointer returned from a mismatched allocation function" "" { target *-*-* } .-1 }
@@ -97,13 +97,13 @@ void warn_malloc_op_delete (int n)
/* Verify a warning for an invocation of either form of the delete
- expression with a pointer returned from a call to malloc(). */
+ expression with a pointer returned from malloc(). */
void warn_malloc_delete (int n)
{
{
char *p = (char *)malloc (n);
- // { dg-message "returned from a call to 'void\\\* malloc\\\(" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'void\\\* malloc\\\(" "note" { target *-*-* } .-1 }
sink (p);
/* C++98 calls operator delete (void*) but later versions call
operator delete (void*, size_t). The difference doesn't matter
@@ -114,7 +114,7 @@ void warn_malloc_delete (int n)
{
char *p = (char *)malloc (n);
- // { dg-message "returned from a call to 'void\\\* malloc\\\(" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'void\\\* malloc\\\(" "note" { target *-*-* } .-1 }
sink (p);
delete[] p;
// { dg-warning "'void operator delete \\\[]\\\(void\\\*\\\)' called on pointer returned from a mismatched allocation function" "" { target *-*-* } .-1 }
@@ -123,13 +123,13 @@ void warn_malloc_delete (int n)
/* Verify a warning for an invocation of either form of the delete
- expression with a pointer returned from a call to realloc(). */
+ expression with a pointer returned from realloc(). */
void warn_realloc_delete (void *p1, void *p2, int n)
{
{
char *q = (char *)realloc (p1, n);
- // { dg-message "returned from a call to 'void\\\* realloc\\\(" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'void\\\* realloc\\\(" "note" { target *-*-* } .-1 }
sink (q);
/* C++98 calls operator delete (void*) but later versions call
operator delete (void*, size_t). The difference doesn't matter
@@ -140,7 +140,7 @@ void warn_realloc_delete (void *p1, void *p2, int n)
{
char *q = (char *)realloc (p2, n);
- // { dg-message "returned from a call to 'void\\\* realloc\\\(" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'void\\\* realloc\\\(" "note" { target *-*-* } .-1 }
sink (q);
delete[] q;
// { dg-warning "'void operator delete \\\[]\\\(void\\\*\\\)' called on pointer returned from a mismatched allocation function" "" { target *-*-* } .-1 }
@@ -149,13 +149,13 @@ void warn_realloc_delete (void *p1, void *p2, int n)
/* Verify a warning for an invocation of either form of the delete
- expression with a pointer returned from a call to strdup(). */
+ expression with a pointer returned from strdup(). */
void warn_strdup_delete (const char *s1, const char *s2)
{
{
char *q = strdup (s1);
- // { dg-message "returned from a call to 'char\\\* strdup\\\(" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'char\\\* strdup\\\(" "note" { target *-*-* } .-1 }
sink (q);
/* C++98 calls operator delete (void*) but later versions call
operator delete (void*, size_t). The difference doesn't matter
@@ -166,7 +166,7 @@ void warn_strdup_delete (const char *s1, const char *s2)
{
char *q = strdup (s2);
- // { dg-message "returned from a call to 'char\\\* strdup\\\(" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'char\\\* strdup\\\(" "note" { target *-*-* } .-1 }
sink (q);
delete[] q;
// { dg-warning "'void operator delete \\\[]\\\(void\\\*\\\)' called on pointer returned from a mismatched allocation function" "" { target *-*-* } .-1 }
@@ -176,13 +176,13 @@ void warn_strdup_delete (const char *s1, const char *s2)
/* Verify a warning for an invocation of either form of the delete
- expression with a pointer returned from a call to strndup(). */
+ expression with a pointer returned from strndup(). */
void warn_strdup_delete (const char *s1, const char *s2, size_t n)
{
{
char *q = strndup (s1, n);
- // { dg-message "returned from a call to 'char\\\* strndup\\\(" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'char\\\* strndup\\\(" "note" { target *-*-* } .-1 }
sink (q);
/* C++98 calls operator delete (void*) but later versions call
operator delete (void*, size_t). The difference doesn't matter
@@ -193,7 +193,7 @@ void warn_strdup_delete (const char *s1, const char *s2, size_t n)
{
char *q = strndup (s2, n);
- // { dg-message "returned from a call to 'char\\\* strndup\\\(" "note" { target *-*-* } .-1 }
+ // { dg-message "returned from 'char\\\* strndup\\\(" "note" { target *-*-* } .-1 }
sink (q);
delete[] q;
// { dg-warning "'void operator delete \\\[]\\\(void\\\*\\\)' called on pointer returned from a mismatched allocation function" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/g++.dg/warn/Wmissing-field-initializers-2.C b/gcc/testsuite/g++.dg/warn/Wmissing-field-initializers-2.C
new file mode 100644
index 0000000..31d4d89
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wmissing-field-initializers-2.C
@@ -0,0 +1,44 @@
+// PR c++/98620
+// { dg-do compile { target c++11 } }
+
+namespace std {
+ template<typename T>
+ T&& declval() noexcept;
+
+ template<bool B>
+ struct bool_constant {
+ static constexpr bool value = B;
+ using type = bool_constant;
+ };
+ using true_type = bool_constant<true>;
+ using false_type = bool_constant<false>;
+};
+
+template <typename T>
+struct TmpArray
+{
+ T arr[1];
+};
+
+template <typename Src, typename Dst, typename = void>
+struct is_non_narrowing_conversion : std::false_type
+{};
+
+template <typename Src, typename Dst>
+struct is_non_narrowing_conversion<
+ Src, Dst,
+ decltype(void(TmpArray<Dst>{{ std::declval<Src>() }})) // { dg-bogus "missing initializer" }
+> : std::true_type
+{};
+
+struct mystruct
+{
+ int a;
+ void * b;
+};
+
+void test_nok()
+{
+ is_non_narrowing_conversion<int&, mystruct>::type v;
+ (void) v;
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wnonnull10.C b/gcc/testsuite/g++.dg/warn/Wnonnull10.C
new file mode 100644
index 0000000..a7e795c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wnonnull10.C
@@ -0,0 +1,63 @@
+/* Very that -Wnonnull is issued for calls to inline member functions
+ with a null this pointer.
+ { dg-do compile }
+ { dg-options "-Wall" } */
+
+#if __cplusplus < 201103L
+# define nullptr 0
+#endif
+
+struct S
+{
+ void f () { }
+ static void g () { }
+ virtual void h () { }
+};
+
+void f0 ()
+{
+ static_cast<S*>(0)->f (); // { dg-warning "-Wnonnull" }
+ static_cast<S*>(0)->g ();
+ static_cast<S*>(0)->h (); // { dg-warning "-Wnonnull" }
+}
+
+void f1 ()
+{
+ static_cast<S*>(nullptr)->f (); // { dg-warning "-Wnonnull" }
+ static_cast<S*>(nullptr)->g ();
+ static_cast<S*>(nullptr)->h (); // { dg-warning "-Wnonnull" }
+}
+
+void f2 ()
+{
+ S* const p = 0;
+
+ p->f (); // { dg-warning "-Wnonnull" }
+ p->g ();
+ p->h (); // { dg-warning "-Wnonnull" }
+}
+
+
+#pragma GCC optimize "1"
+
+void f3 ()
+{
+ S *p = 0;
+
+ p->f (); // { dg-warning "-Wnonnull" }
+ p->g ();
+ p->h (); // { dg-warning "-Wnonnull" }
+}
+
+
+#pragma GCC optimize "2"
+
+void f4 (S *p)
+{
+ if (p)
+ return;
+
+ p->f (); // { dg-warning "-Wnonnull" }
+ p->g ();
+ p->h (); // { dg-warning "-Wnonnull" }
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wnonnull5.C b/gcc/testsuite/g++.dg/warn/Wnonnull5.C
index 78862d4..959cf18 100644
--- a/gcc/testsuite/g++.dg/warn/Wnonnull5.C
+++ b/gcc/testsuite/g++.dg/warn/Wnonnull5.C
@@ -35,21 +35,21 @@ struct S
void warn_nullptr_this ()
{
- ((S*)nullptr)->f0 (""); // { dg-warning "3:'this' pointer null" "pr86568" { xfail *-*-* } }
- // { dg-warning "this' pointer null" "pr86568 second variant" { target *-*-* } .-1 }
+ ((S*)nullptr)->f0 (""); // { dg-warning "3:'this' pointer is null" "pr86568" { xfail *-*-* } }
+ // { dg-warning "this' pointer is null" "pr86568 second variant" { target *-*-* } .-1 }
}
void warn_null_this_cst ()
{
S* const null = 0;
- null->f1 (""); // { dg-warning "3:'this' pointer null" }
+ null->f1 (""); // { dg-warning "3:'this' pointer is null" }
}
void warn_null_this_var ()
{
S* null = 0;
- null->f2 (&null); // { dg-warning "3:'this' pointer null" "pr86568" { xfail *-*-* } }
- // { dg-warning "'this' pointer null" "pr86568 second variant" { target *-*-* } .-1 }
+ null->f2 (&null); // { dg-warning "3:'this' pointer is null" "pr86568" { xfail *-*-* } }
+ // { dg-warning "'this' pointer is null" "pr86568 second variant" { target *-*-* } .-1 }
}
void warn_nullptr (S s)
diff --git a/gcc/testsuite/g++.dg/warn/Wnonnull9.C b/gcc/testsuite/g++.dg/warn/Wnonnull9.C
new file mode 100644
index 0000000..b6135c4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wnonnull9.C
@@ -0,0 +1,117 @@
+/* PR c++/98646 - spurious -Wnonnull calling a member on the result
+ of static_cast
+ { dg-do compile }
+ { dg-options "-O2 -Wall" } */
+
+struct A { virtual ~A (); };
+struct B
+{
+ virtual ~B ();
+ B* bptr ();
+ B& bref ();
+};
+
+struct C: A, B { virtual ~C (); void g () const; };
+
+
+void c_cast_C_ptr (B *p)
+{
+ ((C*)p->bptr ())->g ();
+}
+
+void c_cast_const_C_ptr (B *p)
+{
+ ((const C*)p->bptr ())->g ();
+}
+
+void static_cast_C_ptr (B *p)
+{
+ static_cast<C*>(p->bptr ())->g ();
+}
+
+void static_cast_const_C_ptr (B *p)
+{
+ /* The static_cast can't fail so verify that no warning is issued
+ here, even though GCC emits a null check for its argument. */
+ static_cast<const C*>(p->bptr ())->g (); // { dg-bogus "\\\[-Wnonnull" }
+}
+
+void dynamic_cast_C_ptr (B *p)
+{
+ // The dynamic_cast might fail so a warning is justified.
+ dynamic_cast<C*>(p->bptr ())->g (); // { dg-warning "\\\[-Wnonnull" }
+}
+
+void dynamic_cast_const_C_ptr (B *p)
+{
+ dynamic_cast<const C*>(p->bptr ())->g (); // { dg-warning "\\\[-Wnonnull" }
+}
+
+
+void c_cast_C_ref (B *p)
+{
+ ((C&)p->bref ()).g ();
+}
+
+void c_cast_const_C_ref (B *p)
+{
+ ((const C&)p->bref ()).g ();
+}
+
+void static_cast_C_ref (B *p)
+{
+ static_cast<C&>(p->bref ()).g ();
+}
+
+void static_cast_const_C_ref (B *p)
+{
+ static_cast<const C&>(p->bref ()).g ();
+}
+
+void dynamic_cast_C_ref (B *p)
+{
+ /* The dynamic_cast fails by throwing an exception so verify that
+ no warning is issued. */
+ dynamic_cast<C&>(p->bref ()).g ();
+}
+
+void dynamic_cast_const_C_ref (B *p)
+{
+ dynamic_cast<const C&>(p->bref ()).g ();
+}
+
+
+struct D: B, A { virtual ~D (); void g () const; };
+
+void c_cast_D_ptr (B *p)
+{
+ ((D*)p->bptr ())->g ();
+}
+
+void c_cast_const_D_ptr (B *p)
+{
+ ((const D*)p->bptr ())->g ();
+}
+
+void static_cast_D_ptr (B *p)
+{
+ static_cast<D*>(p->bptr ())->g ();
+}
+
+void static_cast_const_D_ptr (B *p)
+{
+ /* The static_cast can't fail so verify that no warning is issued
+ here, even though GCC emits a null check for its argument. */
+ static_cast<const D*>(p->bptr ())->g (); // { dg-bogus "\\\[-Wnonnull" }
+}
+
+void dynamic_cast_D_ptr (B *p)
+{
+ // The dynamic_cast might fail so a warning is justified.
+ dynamic_cast<D*>(p->bptr ())->g (); // { dg-warning "\\\[-Wnonnull" }
+}
+
+void dynamic_cast_const_D_ptr (B *p)
+{
+ dynamic_cast<const D*>(p->bptr ())->g (); // { dg-warning "\\\[-Wnonnull" }
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wuninitialized-12.C b/gcc/testsuite/g++.dg/warn/Wuninitialized-12.C
new file mode 100644
index 0000000..d06aaac
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wuninitialized-12.C
@@ -0,0 +1,40 @@
+/* Verify that -Wuninitialized warnings about accesses to objects via
+ pointers and offsets mention valid expressions.
+ { dg-do compile }
+ { dg-options "-O2 -Wall" } */
+
+typedef __INT16_TYPE__ int16_t;
+typedef __INT32_TYPE__ int32_t;
+
+void sink (int);
+
+/* Verify properly aligned accesses at offsets that are multiples of
+ the access size. */
+
+void test_aligned (void)
+{
+ char *p1 = (char*)__builtin_malloc (32);
+ p1 += sizeof (int32_t);
+
+ int16_t *p2 = (int16_t*)p1;
+ sink (p2[1]); // { dg-warning "'\\(\\(int16_t\\*\\)p1\\)\\\[3]' is used uninitialized" }
+
+ int32_t *p4 = (int32_t*)p1;
+ sink (p4[1]); // { dg-warning "'\\(\\(int32_t\\*\\)p1\\)\\\[2]' is used uninitialized" }
+}
+
+
+/* Verify misaligned accesses at offsets that aren't multiples of
+ the access size. */
+
+void test_misaligned (void)
+{
+ char *p1 = (char*)__builtin_malloc (32);
+ p1 += 1;
+
+ int16_t *p2 = (int16_t*)p1;
+ sink (p2[1]); // { dg-warning "'\\(\\(int16_t\\*\\)\\(p1 \\+ 1\\)\\)\\\[1]' is used uninitialized" }
+
+ int32_t *p4 = (int32_t*)p1;
+ sink (p4[1]); // { dg-warning "'\\(\\(int32_t\\*\\)\\(p1 \\+ 1\\)\\)\\\[1]' is used uninitialized" }
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wuninitialized-13.C b/gcc/testsuite/g++.dg/warn/Wuninitialized-13.C
new file mode 100644
index 0000000..49ee878
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wuninitialized-13.C
@@ -0,0 +1,28 @@
+/* PR c/98597 - ICE in -Wuninitialized printing a MEM_REF
+ { dg-do compile }
+ { dg-options "-O2 -Wall" } */
+
+struct shared_count {
+ shared_count () { }
+ shared_count (shared_count &r)
+ : pi (r.pi) { } // { dg-warning "\\\[-Wuninitialized" }
+ int pi;
+};
+
+// There's another (redundant) -Wuninitialized on the line below.
+struct shared_ptr {
+ int ptr;
+ shared_count refcount;
+};
+
+struct Bar {
+ Bar (int, shared_ptr);
+};
+
+void g () {
+ shared_ptr foo;
+ Bar (0, foo);
+}
+
+// Prune out duplicates.
+// { dg-prune-output "-Wuninitialized" }
diff --git a/gcc/testsuite/g++.dg/warn/effc5.C b/gcc/testsuite/g++.dg/warn/effc5.C
new file mode 100644
index 0000000..43fdd09
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/effc5.C
@@ -0,0 +1,17 @@
+// PR c++/98841
+// { dg-do compile }
+// { dg-options "-Weffc++" }
+
+struct S {
+ template <typename T>
+ S& operator=(const T&) { return *this; } // { dg-bogus "should return a reference to" }
+ S& operator=(const S&) { return *this; }
+};
+
+void
+foo ()
+{
+ S s, t;
+ s = 1;
+ s = t;
+}
diff --git a/gcc/testsuite/g++.dg/warn/miss-format-1.C b/gcc/testsuite/g++.dg/warn/miss-format-1.C
index 65a3428..444afb6 100644
--- a/gcc/testsuite/g++.dg/warn/miss-format-1.C
+++ b/gcc/testsuite/g++.dg/warn/miss-format-1.C
@@ -21,9 +21,7 @@ bar (const char *fmt, ...)
{
va_list ap;
va_start (ap, fmt);
- vscanf (fmt, ap); /* { dg-warning "candidate" "scanf attribute warning" { xfail *-*-vxworks* } } */
- /* VxWorks does not provide vscanf, either in kernel or RTP mode. */
- /* { dg-error "not declared" "" { target *-*-vxworks* } .-2 } */
+ vscanf (fmt, ap); /* { dg-warning "candidate" "scanf attribute warning" } */
va_end (ap);
}
diff --git a/gcc/testsuite/g++.dg/warn/pr98160.C b/gcc/testsuite/g++.dg/warn/pr98160.C
new file mode 100644
index 0000000..b3c5783
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/pr98160.C
@@ -0,0 +1,30 @@
+/* PR middle-end/98160 - ICE in warn_dealloc_offset on member placement
+ new and delete
+ { dg-do compile }
+ { dg-options "-O2 -Wall" } */
+
+typedef __SIZE_TYPE__ size_t;
+
+void* (*pf) (size_t);
+
+struct A;
+struct B
+{
+ B ();
+
+ void* operator new (size_t, A*);
+ void operator delete (void*, A*);
+};
+
+void operator delete (void *, A*);
+
+void B::operator delete (void*, A *p)
+{
+ void *q = pf (1);
+ ::operator delete ((char*)q + 1, p);
+}
+
+void* f (A *p)
+{
+ return new (p) B;
+}
diff --git a/gcc/testsuite/g++.dg/warn/pr98413.C b/gcc/testsuite/g++.dg/warn/pr98413.C
new file mode 100644
index 0000000..877871a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/pr98413.C
@@ -0,0 +1,23 @@
+/* PR c++/98413 - ICE on placement new and member pointer
+ { dg-do compile }
+ { dg-options "-Wall" } */
+
+void* operator new (__SIZE_TYPE__, void *p) { return p; }
+
+struct A { int m; } a;
+
+void fc (int A::*p)
+{
+ new (&(a.*p)) char;
+}
+
+void fi (int A::*p)
+{
+ new (&(a.*p)) int;
+}
+
+void fB (int A::*p)
+{
+ struct B { int a[2]; };
+ new (&(a.*p)) B; // { dg-warning "\\\[-Wplacement-new" }
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/README b/gcc/testsuite/g++.old-deja/g++.brendan/README
index 38c785b..380355f 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/README
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/README
@@ -40,7 +40,7 @@ visibility - access control and visibility checking
warnings - warning messages
-Copyright (C) 1997-2020 Free Software Foundation, Inc.
+Copyright (C) 1997-2021 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/visibility6.C b/gcc/testsuite/g++.old-deja/g++.brendan/visibility6.C
index 3dfaf7f..8d6c6f1 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/visibility6.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/visibility6.C
@@ -3,9 +3,9 @@
class bottom
{
public:
- int b; // { dg-message "" } private
+ int b;
};
-class middle : private bottom
+class middle : private bottom // { dg-message "" } private
{
public:
void foo () { b; }
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/visibility8.C b/gcc/testsuite/g++.old-deja/g++.brendan/visibility8.C
index 3c443af..c165b08 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/visibility8.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/visibility8.C
@@ -5,9 +5,9 @@
class foo
{
public:
- static int y; // { dg-message "" } private
+ static int y;
};
-class foo1 : private foo
+class foo1 : private foo // { dg-message "" } private
{ };
class foo2 : public foo1
{ public:
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/access8.C b/gcc/testsuite/g++.old-deja/g++.jason/access8.C
index 4404d8a..0aa85d0 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/access8.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/access8.C
@@ -3,13 +3,14 @@
// Date: 25 Jan 1994 23:41:33 -0500
// Bug: g++ forgets access decls after the definition.
-class inh { // { dg-message "" } inaccessible
+class inh {
int a;
protected:
void myf(int);
};
-class mel : private inh {
+class mel : private inh // { dg-message "" } inaccessible
+{
protected:
int t;
inh::myf; // { dg-warning "deprecated" }
diff --git a/gcc/testsuite/g++.old-deja/g++.law/access4.C b/gcc/testsuite/g++.old-deja/g++.law/access4.C
index 54072ce..57fa24a 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/access4.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/access4.C
@@ -6,12 +6,13 @@
// Subject: g++ 2.5.5 doesn't warn about inaccessible virtual base ctor
// Message-ID: <9403030024.AA04534@ses.com>
-class ForceLeafSterile { // { dg-message "" }
+class ForceLeafSterile {
friend class Sterile;
ForceLeafSterile() {} // { dg-message "" }
};
-class Sterile : private virtual ForceLeafSterile {
+class Sterile : private virtual ForceLeafSterile // { dg-message "" }
+{
public:
Sterile() {}
Sterile(const char* /*blah*/) {}
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility12.C b/gcc/testsuite/g++.old-deja/g++.law/visibility12.C
index 59467ba..6b7ff75 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility12.C
@@ -6,11 +6,12 @@
// Subject: member access rule bug
// Message-ID: <9306300528.AA17185@coda.mel.dit.CSIRO.AU>
struct a {
- int aa; // { dg-message "" } private
+ int aa;
};
-class b : private a {
- };
+class b : private a // { dg-message "" } private
+{
+};
class c : public b {
int xx(void) { return (aa); } // aa should be invisible// { dg-error "" } .*
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility4.C b/gcc/testsuite/g++.old-deja/g++.law/visibility4.C
index 1cdec1c..644154e 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility4.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility4.C
@@ -8,10 +8,11 @@
class A {
public:
- int b; // { dg-message "" } private
+ int b;
};
-class C : private A { // NOTE WELL. private, not public
+class C : private A // { dg-message "" } private
+{
public:
int d;
};
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility8.C b/gcc/testsuite/g++.old-deja/g++.law/visibility8.C
index 5242dfc..4457ddf 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility8.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility8.C
@@ -7,11 +7,12 @@
// Message-ID: <m0nof3E-0021ifC@jts.com
class t1 {
protected:
- int a; // { dg-message "" } protected
+ int a;
};
-class t2 : private t1 {
+class t2 : private t1 // { dg-message "" } protected
+{
public:
int b;
};
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p658.C b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
index 8fc7cd5..a6268a3 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p658.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
@@ -12,9 +12,9 @@
#define TRUE true
#endif
-// The VxWorks kernel-mode headers define a macro named "OK", which is not
+// The VxWorks headers define a macro named "OK", which is not
// ISO-compliant, but is part of the VxWorks API.
-#if defined __vxworks && !defined __RTP__
+#if defined __vxworks
#undef OK
#endif
diff --git a/gcc/testsuite/g++.old-deja/g++.other/access4.C b/gcc/testsuite/g++.old-deja/g++.other/access4.C
index d3c8d85..6c47700 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/access4.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/access4.C
@@ -1,10 +1,10 @@
// { dg-do assemble }
-struct A { // { dg-message "" } inaccessible
+struct A {
static int i;
};
-struct B : private A { };
+struct B : private A { }; // { dg-message "" } inaccessible
struct C : public B {
int f () { return A::i; } // { dg-error "" } context
diff --git a/gcc/testsuite/g++.old-deja/g++.other/crash31.C b/gcc/testsuite/g++.old-deja/g++.other/crash31.C
index 610dfe1..d777691 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/crash31.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/crash31.C
@@ -6,5 +6,4 @@ namespace bar
struct foo
{
foo();
-};
-// { dg-error "-:expected" "" { target *-*-* } .+1 }
+}; // { dg-error "3:expected" }
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/const2.C b/gcc/testsuite/g++.old-deja/g++.pt/const2.C
index 3ca4a53..7340ff4 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/const2.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/const2.C
@@ -1,4 +1,5 @@
// { dg-do link }
+// { dg-skip-if "VxWorks dkms use partial link" { vxworks_kernel } }
// This test should get a linker error for the reference to A<int>::i.
// { dg-prune-output "ld: symbol" }
// { dg-message "i" "" { target *-*-* } 0 }
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/README b/gcc/testsuite/g++.old-deja/g++.robertl/README
index e918d28..db438fc 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/README
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/README
@@ -18,7 +18,7 @@ We'll do better now.
Robert Lipe
-Copyright (C) 1998-2020 Free Software Foundation, Inc.
+Copyright (C) 1998-2021 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gcc/testsuite/g++.old-deja/old-deja.exp b/gcc/testsuite/g++.old-deja/old-deja.exp
index 9a52c1b..1a6c43d 100644
--- a/gcc/testsuite/g++.old-deja/old-deja.exp
+++ b/gcc/testsuite/g++.old-deja/old-deja.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1988-2020 Free Software Foundation, Inc.
+# Copyright (C) 1988-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.target/aarch64/aarch64.exp b/gcc/testsuite/g++.target/aarch64/aarch64.exp
index c6c8ea4..6ef2662 100644
--- a/gcc/testsuite/g++.target/aarch64/aarch64.exp
+++ b/gcc/testsuite/g++.target/aarch64/aarch64.exp
@@ -1,5 +1,5 @@
# Specific regression driver for AArch64.
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/g++.target/aarch64/sve/aarch64-sve.exp b/gcc/testsuite/g++.target/aarch64/sve/aarch64-sve.exp
index 7669b23..4bbe2f5 100644
--- a/gcc/testsuite/g++.target/aarch64/sve/aarch64-sve.exp
+++ b/gcc/testsuite/g++.target/aarch64/sve/aarch64-sve.exp
@@ -1,5 +1,5 @@
# Specific regression driver for AArch64.
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# Contributed by ARM Ltd.
#
# This file is part of GCC.
diff --git a/gcc/testsuite/g++.target/aarch64/sve/abd_1.C b/gcc/testsuite/g++.target/aarch64/sve/abd_1.C
new file mode 100644
index 0000000..0facf58
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/abd_1.C
@@ -0,0 +1,38 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b) \
+ { \
+ return (a > b ? a : b) - (a < b ? a : b); \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (int8_t, 32)
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (int8_t, 64)
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (int16_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (int8_t, 128)
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (int16_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (int32_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler-times {\tsabd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tsabd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tsabd\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tuabd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tuabd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tuabd\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp b/gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
index 6c696ab..0734268 100644
--- a/gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
+++ b/gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
@@ -1,5 +1,5 @@
# Assembly-based regression-test driver for the SVE ACLE
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle.exp b/gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle.exp
index a9b59cb..cb9de75 100644
--- a/gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle.exp
+++ b/gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle.exp
@@ -1,5 +1,5 @@
# Specific regression driver for AArch64 SVE.
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# Contributed by ARM Ltd.
#
# This file is part of GCC.
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_abd_1.C b/gcc/testsuite/g++.target/aarch64/sve/cond_abd_1.C
new file mode 100644
index 0000000..a93d1d1
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_abd_1.C
@@ -0,0 +1,60 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c) \
+ { \
+ return c == 0 ? (a > b ? a : b) - (a < b ? a : b) : a; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (int8_t, 32)
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (int8_t, 64)
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (int16_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (int8_t, 128)
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (int16_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (int32_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x0\]\n[^L]*\tsabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x0\]\n[^L]*\tsabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tsabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x0\]\n[^L]*\tsabd\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tsabd\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tsabd\t\1\.s, p[0-7]/m, \1\.s, z[0-9]+\.s\n} } } */
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x1\]\n[^L]*\tsabd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, \1\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x1\]\n[^L]*\tsabd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, \1\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x1\]\n[^L]*\tsabd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, \1\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x1\]\n[^L]*\tsabd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, \1\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x1\]\n[^L]*\tsabd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, \1\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x1\]\n[^L]*\tsabd\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, \1\.s\n} } } */
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x0\]\n[^L]*\tuabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x0\]\n[^L]*\tuabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tuabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x0\]\n[^L]*\tuabd\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tuabd\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tuabd\t\1\.s, p[0-7]/m, \1\.s, z[0-9]+\.s\n} } } */
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x1\]\n[^L]*\tuabd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, \1\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x1\]\n[^L]*\tuabd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, \1\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x1\]\n[^L]*\tuabd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, \1\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x1\]\n[^L]*\tuabd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, \1\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x1\]\n[^L]*\tuabd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, \1\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x1\]\n[^L]*\tuabd\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, \1\.s\n} } } */
+
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_abd_2.C b/gcc/testsuite/g++.target/aarch64/sve/cond_abd_2.C
new file mode 100644
index 0000000..ad6304a
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_abd_2.C
@@ -0,0 +1,60 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c) \
+ { \
+ return c == 0 ? (a > b ? a : b) - (a < b ? a : b) : b; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (int8_t, 32)
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (int8_t, 64)
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (int16_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (int8_t, 128)
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (int16_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (int32_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x1\]\n[^L]*\tsabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x1\]\n[^L]*\tsabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x1\]\n[^L]*\tsabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x1\]\n[^L]*\tsabd\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x1\]\n[^L]*\tsabd\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x1\]\n[^L]*\tsabd\t\1\.s, p[0-7]/m, \1\.s, z[0-9]+\.s\n} } } */
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x0\]\n[^L]*\tsabd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, \1\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x0\]\n[^L]*\tsabd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, \1\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tsabd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, \1\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x0\]\n[^L]*\tsabd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, \1\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tsabd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, \1\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tsabd\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, \1\.s\n} } } */
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x1\]\n[^L]*\tuabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x1\]\n[^L]*\tuabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x1\]\n[^L]*\tuabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x1\]\n[^L]*\tuabd\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x1\]\n[^L]*\tuabd\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x1\]\n[^L]*\tuabd\t\1\.s, p[0-7]/m, \1\.s, z[0-9]+\.s\n} } } */
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x0\]\n[^L]*\tuabd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, \1\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x0\]\n[^L]*\tuabd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, \1\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tuabd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, \1\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x0\]\n[^L]*\tuabd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, \1\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tuabd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, \1\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tuabd\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, \1\.s\n} } } */
+
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_abd_3.C b/gcc/testsuite/g++.target/aarch64/sve/cond_abd_3.C
new file mode 100644
index 0000000..29a8d2f
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_abd_3.C
@@ -0,0 +1,49 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c) \
+ { \
+ return c == 0 ? (a > b ? a : b) - (a < b ? a : b) : c; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (int8_t, 32)
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (int8_t, 64)
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (int16_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (int8_t, 128)
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (int16_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (int32_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x2\]\n[^L]*\tsabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x2\]\n[^L]*\tsabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x2\]\n[^L]*\tsabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x2\]\n[^L]*\tsabd\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x2\]\n[^L]*\tsabd\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x2\]\n[^L]*\tsabd\t\1\.s, p[0-7]/m, \1\.s, z[0-9]+\.s\n} } } */
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x2\]\n[^L]*\tuabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x2\]\n[^L]*\tuabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x2\]\n[^L]*\tuabd\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x2\]\n[^L]*\tuabd\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x2\]\n[^L]*\tuabd\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x2\]\n[^L]*\tuabd\t\1\.s, p[0-7]/m, \1\.s, z[0-9]+\.s\n} } } */
+
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s\n} 2 } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_abd_4.C b/gcc/testsuite/g++.target/aarch64/sve/cond_abd_4.C
new file mode 100644
index 0000000..b415731
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_abd_4.C
@@ -0,0 +1,43 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c) \
+ { \
+ return c == 1 ? (a > b ? a : b) - (a < b ? a : b) : 0; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (int8_t, 32)
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (int8_t, 64)
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (int16_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (int8_t, 128)
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (int16_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (int32_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler-times {\tsabd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tsabd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tsabd\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tuabd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tuabd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tuabd\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.b, p[0-7]/z, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.h, p[0-7]/z, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.s, p[0-7]/z, z[0-9]+\.s\n} 2 } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_arith_1.C b/gcc/testsuite/g++.target/aarch64/sve/cond_arith_1.C
new file mode 100644
index 0000000..0c6f640
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_arith_1.C
@@ -0,0 +1,89 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define op_add(A, B) ((A) + (B))
+#define op_sub(A, B) ((A) - (B))
+#define op_and(A, B) ((A) & (B))
+#define op_ior(A, B) ((A) | (B))
+#define op_xor(A, B) ((A) ^ (B))
+#define op_mul(A, B) ((A) * (B))
+#define op_max(A, B) ((A) > (B) ? (A) : (B))
+#define op_min(A, B) ((A) < (B) ? (A) : (B))
+
+#define TEST_SHIFT(TYPE, NAME) \
+ TYPE \
+ NAME##_##TYPE##_reg (TYPE a, TYPE b, TYPE c) \
+ { \
+ return a ? op_##NAME (b, c) : b; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_SHIFT (TYPE##SIZE, add) \
+ TEST_SHIFT (TYPE##SIZE, sub) \
+ TEST_SHIFT (TYPE##SIZE, and) \
+ TEST_SHIFT (TYPE##SIZE, ior) \
+ TEST_SHIFT (TYPE##SIZE, xor) \
+ TEST_SHIFT (TYPE##SIZE, mul) \
+ TEST_SHIFT (TYPE##SIZE, min) \
+ TEST_SHIFT (TYPE##SIZE, max)
+
+TEST_TYPE (int8_t, 32)
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (int8_t, 64)
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (int16_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (int8_t, 128)
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (int16_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (int32_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler-times {\tadd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tadd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tadd\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tsub\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tsub\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tsub\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tand\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tand\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tand\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\torr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\torr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\torr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\teor\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\teor\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\teor\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-not {\tmovprfx\t} } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_arith_2.C b/gcc/testsuite/g++.target/aarch64/sve/cond_arith_2.C
new file mode 100644
index 0000000..8965c94
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_arith_2.C
@@ -0,0 +1,89 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define op_add(A, B) ((A) + (B))
+#define op_sub(A, B) ((A) - (B))
+#define op_and(A, B) ((A) & (B))
+#define op_ior(A, B) ((A) | (B))
+#define op_xor(A, B) ((A) ^ (B))
+#define op_mul(A, B) ((A) * (B))
+#define op_max(A, B) ((A) > (B) ? (A) : (B))
+#define op_min(A, B) ((A) < (B) ? (A) : (B))
+
+#define TEST_SHIFT(TYPE, NAME) \
+ TYPE \
+ NAME##_##TYPE##_reg (TYPE a, TYPE b, TYPE c) \
+ { \
+ return a ? op_##NAME (b, c) : c; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_SHIFT (TYPE##SIZE, add) \
+ TEST_SHIFT (TYPE##SIZE, sub) \
+ TEST_SHIFT (TYPE##SIZE, and) \
+ TEST_SHIFT (TYPE##SIZE, ior) \
+ TEST_SHIFT (TYPE##SIZE, xor) \
+ TEST_SHIFT (TYPE##SIZE, mul) \
+ TEST_SHIFT (TYPE##SIZE, min) \
+ TEST_SHIFT (TYPE##SIZE, max)
+
+TEST_TYPE (int8_t, 32)
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (int8_t, 64)
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (int16_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (int8_t, 128)
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (int16_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (int32_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler-times {\tadd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tadd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tadd\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tsubr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tsubr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tsubr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tand\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tand\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tand\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\torr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\torr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\torr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\teor\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\teor\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\teor\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-not {\tmovprfx\t} } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_arith_3.C b/gcc/testsuite/g++.target/aarch64/sve/cond_arith_3.C
new file mode 100644
index 0000000..3aa8669
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_arith_3.C
@@ -0,0 +1,91 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define op_add(A, B) ((A) + (B))
+#define op_sub(A, B) ((A) - (B))
+#define op_and(A, B) ((A) & (B))
+#define op_ior(A, B) ((A) | (B))
+#define op_xor(A, B) ((A) ^ (B))
+#define op_mul(A, B) ((A) * (B))
+#define op_max(A, B) ((A) > (B) ? (A) : (B))
+#define op_min(A, B) ((A) < (B) ? (A) : (B))
+
+#define TEST_SHIFT(TYPE, NAME) \
+ TYPE \
+ NAME##_##TYPE##_reg (TYPE a, TYPE b, TYPE c, TYPE d) \
+ { \
+ return a ? op_##NAME (b, c) : d; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_SHIFT (TYPE##SIZE, add) \
+ TEST_SHIFT (TYPE##SIZE, sub) \
+ TEST_SHIFT (TYPE##SIZE, and) \
+ TEST_SHIFT (TYPE##SIZE, ior) \
+ TEST_SHIFT (TYPE##SIZE, xor) \
+ TEST_SHIFT (TYPE##SIZE, mul) \
+ TEST_SHIFT (TYPE##SIZE, min) \
+ TEST_SHIFT (TYPE##SIZE, max)
+
+TEST_TYPE (int8_t, 32)
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (int8_t, 64)
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (int16_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (int8_t, 128)
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (int16_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (int32_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler-times {\tadd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tadd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tadd\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tsub\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tsub\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tsub\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tand\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tand\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tand\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\torr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\torr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\torr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\teor\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\teor\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\teor\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b\n} 48 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h\n} 32 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s\n} 16 } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_arith_4.C b/gcc/testsuite/g++.target/aarch64/sve/cond_arith_4.C
new file mode 100644
index 0000000..efa4b89
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_arith_4.C
@@ -0,0 +1,91 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define op_add(A, B) ((A) + (B))
+#define op_sub(A, B) ((A) - (B))
+#define op_and(A, B) ((A) & (B))
+#define op_ior(A, B) ((A) | (B))
+#define op_xor(A, B) ((A) ^ (B))
+#define op_mul(A, B) ((A) * (B))
+#define op_max(A, B) ((A) > (B) ? (A) : (B))
+#define op_min(A, B) ((A) < (B) ? (A) : (B))
+
+#define TEST_SHIFT(TYPE, NAME) \
+ TYPE \
+ NAME##_##TYPE##_reg (TYPE a, TYPE b, TYPE c) \
+ { \
+ return a ? op_##NAME (b, c) : 0; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_SHIFT (TYPE##SIZE, add) \
+ TEST_SHIFT (TYPE##SIZE, sub) \
+ TEST_SHIFT (TYPE##SIZE, and) \
+ TEST_SHIFT (TYPE##SIZE, ior) \
+ TEST_SHIFT (TYPE##SIZE, xor) \
+ TEST_SHIFT (TYPE##SIZE, mul) \
+ TEST_SHIFT (TYPE##SIZE, min) \
+ TEST_SHIFT (TYPE##SIZE, max)
+
+TEST_TYPE (int8_t, 32)
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (int8_t, 64)
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (int16_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (int8_t, 128)
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (int16_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (int32_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler-times {\tadd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tadd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tadd\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tsub\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tsub\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tsub\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tand\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tand\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tand\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\torr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\torr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\torr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\teor\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\teor\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\teor\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.b, p[0-7]/z, z[0-9]+\.b\n} 48 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.h, p[0-7]/z, z[0-9]+\.h\n} 32 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.s, p[0-7]/z, z[0-9]+\.s\n} 16 } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_bic_1.C b/gcc/testsuite/g++.target/aarch64/sve/cond_bic_1.C
new file mode 100644
index 0000000..9f7cd75
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_bic_1.C
@@ -0,0 +1,40 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c) \
+ { \
+ return c == 0 ? a & ~b : a; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x0\]\n[^L]*\tbic\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x0\]\n[^L]*\tbic\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tbic\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x0\]\n[^L]*\tbic\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tbic\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tbic\t\1\.s, p[0-7]/m, \1\.s, z[0-9]+\.s\n} } } */
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x1\]\n[^L]*\tbic\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, \1\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x1\]\n[^L]*\tbic\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, \1\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x1\]\n[^L]*\tbic\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, \1\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x1\]\n[^L]*\tbic\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, \1\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x1\]\n[^L]*\tbic\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, \1\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x1\]\n[^L]*\tbic\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, \1\.s\n} } } */
+
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_bic_2.C b/gcc/testsuite/g++.target/aarch64/sve/cond_bic_2.C
new file mode 100644
index 0000000..9f96b74
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_bic_2.C
@@ -0,0 +1,31 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c) \
+ { \
+ return c == 0 ? a & ~b : b; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler-times {\tbic\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tbic\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tbic\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-not {\tmovprfx\t} } } */
+/* { dg-final { scan-assembler-times {\tsel\t} 6 } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_bic_3.C b/gcc/testsuite/g++.target/aarch64/sve/cond_bic_3.C
new file mode 100644
index 0000000..f69f61a
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_bic_3.C
@@ -0,0 +1,36 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c) \
+ { \
+ return c == 0 ? a & ~b : c; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x2\]\n[^L]*\tbic\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x2\]\n[^L]*\tbic\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x2\]\n[^L]*\tbic\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x2\]\n[^L]*\tbic\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x2\]\n[^L]*\tbic\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x2\]\n[^L]*\tbic\t\1\.s, p[0-7]/m, \1\.s, z[0-9]+\.s\n} } } */
+
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s\n} 1 } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_bic_4.C b/gcc/testsuite/g++.target/aarch64/sve/cond_bic_4.C
new file mode 100644
index 0000000..d6eb22b
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_bic_4.C
@@ -0,0 +1,36 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c) \
+ { \
+ return c == 0 ? a & ~b : 0; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x0\]\n[^L]*\tbic\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x0\]\n[^L]*\tbic\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tbic\t\1\.b, p[0-7]/m, \1\.b, z[0-9]+\.b\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x0\]\n[^L]*\tbic\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tbic\t\1\.h, p[0-7]/m, \1\.h, z[0-9]+\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x0\]\n[^L]*\tbic\t\1\.s, p[0-7]/m, \1\.s, z[0-9]+\.s\n} } } */
+
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.b, p[0-7]/z, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.h, p[0-7]/z, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.s, p[0-7]/z, z[0-9]+\.s\n} 1 } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_mla_1.C b/gcc/testsuite/g++.target/aarch64/sve/cond_mla_1.C
new file mode 100644
index 0000000..d5168b7
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_mla_1.C
@@ -0,0 +1,33 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c, TYPE d) \
+ { \
+ return d == 0 ? a + b * c : a; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x0\][^L]*\tmla\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x0\][^L]*\tmla\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x0\][^L]*\tmla\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x0\][^L]*\tmla\t\1\.h,} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x0\][^L]*\tmla\t\1\.h,} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x0\][^L]*\tmla\t\1\.s,} } } */
+
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_mla_2.C b/gcc/testsuite/g++.target/aarch64/sve/cond_mla_2.C
new file mode 100644
index 0000000..8ff0a69
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_mla_2.C
@@ -0,0 +1,33 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c, TYPE d) \
+ { \
+ return d == 0 ? a + b * c : b; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x1\][^L]*\tmad\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x1\][^L]*\tmad\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x1\][^L]*\tmad\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x1\][^L]*\tmad\t\1\.h,} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x1\][^L]*\tmad\t\1\.h,} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x1\][^L]*\tmad\t\1\.s,} } } */
+
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_mla_3.C b/gcc/testsuite/g++.target/aarch64/sve/cond_mla_3.C
new file mode 100644
index 0000000..b2f2942
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_mla_3.C
@@ -0,0 +1,33 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O2 -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c, TYPE d) \
+ { \
+ return d == 0 ? a + b * c : c; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x2\][^L]*\tmad\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x2\][^L]*\tmad\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x2\][^L]*\tmad\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x2\][^L]*\tmad\t\1\.h,} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x2\][^L]*\tmad\t\1\.h,} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x2\][^L]*\tmad\t\1\.s,} } } */
+
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_mla_4.C b/gcc/testsuite/g++.target/aarch64/sve/cond_mla_4.C
new file mode 100644
index 0000000..6edc96b
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_mla_4.C
@@ -0,0 +1,36 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c, TYPE d) \
+ { \
+ return d == 0 ? a + b * c : d; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x3\][^L]*\tmla\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x3\][^L]*\tmla\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x3\][^L]*\tmla\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x3\][^L]*\tmla\t\1\.h,} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x3\][^L]*\tmla\t\1\.h,} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x3\][^L]*\tmla\t\1\.s,} } } */
+
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s\n} 1 } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_mla_5.C b/gcc/testsuite/g++.target/aarch64/sve/cond_mla_5.C
new file mode 100644
index 0000000..6c169a8
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_mla_5.C
@@ -0,0 +1,33 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c, TYPE d) \
+ { \
+ return d == 0 ? a + b * c : 0; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler-times {\t(?:mla|mad)\tz[0-9]+\.b,} 3 } } */
+/* { dg-final { scan-assembler-times {\t(?:mla|mad)\tz[0-9]+\.h,} 2 } } */
+/* { dg-final { scan-assembler-times {\t(?:mla|mad)\tz[0-9]+\.s,} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.b, p[0-7]/z, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.h, p[0-7]/z, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.s, p[0-7]/z, z[0-9]+\.s\n} 1 } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_mls_1.C b/gcc/testsuite/g++.target/aarch64/sve/cond_mls_1.C
new file mode 100644
index 0000000..f472db4
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_mls_1.C
@@ -0,0 +1,33 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c, TYPE d) \
+ { \
+ return d == 0 ? a - b * c : a; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x0\][^L]*\tmls\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x0\][^L]*\tmls\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x0\][^L]*\tmls\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x0\][^L]*\tmls\t\1\.h,} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x0\][^L]*\tmls\t\1\.h,} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x0\][^L]*\tmls\t\1\.s,} } } */
+
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_mls_2.C b/gcc/testsuite/g++.target/aarch64/sve/cond_mls_2.C
new file mode 100644
index 0000000..f10b461
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_mls_2.C
@@ -0,0 +1,33 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c, TYPE d) \
+ { \
+ return d == 0 ? a - b * c : b; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x1\][^L]*\tmsb\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x1\][^L]*\tmsb\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x1\][^L]*\tmsb\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x1\][^L]*\tmsb\t\1\.h,} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x1\][^L]*\tmsb\t\1\.h,} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x1\][^L]*\tmsb\t\1\.s,} } } */
+
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_mls_3.C b/gcc/testsuite/g++.target/aarch64/sve/cond_mls_3.C
new file mode 100644
index 0000000..770d963
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_mls_3.C
@@ -0,0 +1,33 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O2 -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c, TYPE d) \
+ { \
+ return d == 0 ? a - b * c : c; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x2\][^L]*\tmsb\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x2\][^L]*\tmsb\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x2\][^L]*\tmsb\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x2\][^L]*\tmsb\t\1\.h,} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x2\][^L]*\tmsb\t\1\.h,} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x2\][^L]*\tmsb\t\1\.s,} } } */
+
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_mls_4.C b/gcc/testsuite/g++.target/aarch64/sve/cond_mls_4.C
new file mode 100644
index 0000000..fac8d95
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_mls_4.C
@@ -0,0 +1,36 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c, TYPE d) \
+ { \
+ return d == 0 ? a - b * c : d; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.h, p[0-7]/z, \[x3\][^L]*\tmls\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.s, p[0-7]/z, \[x3\][^L]*\tmls\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1b\t(z[0-9]+)\.d, p[0-7]/z, \[x3\][^L]*\tmls\t\1\.b,} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x3\][^L]*\tmls\t\1\.h,} } } */
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x3\][^L]*\tmls\t\1\.h,} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x3\][^L]*\tmls\t\1\.s,} } } */
+
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s\n} 1 } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_mls_5.C b/gcc/testsuite/g++.target/aarch64/sve/cond_mls_5.C
new file mode 100644
index 0000000..82b89b4
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_mls_5.C
@@ -0,0 +1,33 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_reg (TYPE a, TYPE b, TYPE c, TYPE d) \
+ { \
+ return d == 0 ? a - b * c : 0; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler-times {\t(?:mls|msb)\tz[0-9]+\.b,} 3 } } */
+/* { dg-final { scan-assembler-times {\t(?:mls|msb)\tz[0-9]+\.h,} 2 } } */
+/* { dg-final { scan-assembler-times {\t(?:mls|msb)\tz[0-9]+\.s,} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.b, p[0-7]/z, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.h, p[0-7]/z, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.s, p[0-7]/z, z[0-9]+\.s\n} 1 } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_shift_1.C b/gcc/testsuite/g++.target/aarch64/sve/cond_shift_1.C
new file mode 100644
index 0000000..5e028a0
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_shift_1.C
@@ -0,0 +1,92 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_SHIFT_IMM(TYPE, NAME, OP, AMT) \
+ TYPE \
+ NAME##_##TYPE##_##AMT (TYPE a, TYPE b) \
+ { \
+ return a ? b OP AMT : b; \
+ }
+
+#define TEST_SHIFT(TYPE, NAME, OP, LIMIT) \
+ TYPE \
+ NAME##_##TYPE##_reg (TYPE a, TYPE b, TYPE c) \
+ { \
+ return a ? b OP c : b; \
+ } \
+ TEST_SHIFT_IMM (TYPE, NAME, OP, 1) \
+ TEST_SHIFT_IMM (TYPE, NAME, OP, 5) \
+ TEST_SHIFT_IMM (TYPE, NAME, OP, LIMIT)
+
+#define TEST_TYPE(TYPE, SIZE, LIMIT) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_SHIFT (TYPE##SIZE, shl, <<, LIMIT) \
+ TEST_SHIFT (TYPE##SIZE, shr, >>, LIMIT) \
+
+TEST_TYPE (int8_t, 32, 7)
+TEST_TYPE (uint8_t, 32, 7)
+
+TEST_TYPE (int8_t, 64, 7)
+TEST_TYPE (uint8_t, 64, 7)
+TEST_TYPE (int16_t, 64, 15)
+TEST_TYPE (uint16_t, 64, 15)
+
+TEST_TYPE (int8_t, 128, 7)
+TEST_TYPE (uint8_t, 128, 7)
+TEST_TYPE (int16_t, 128, 15)
+TEST_TYPE (uint16_t, 128, 15)
+TEST_TYPE (int32_t, 128, 31)
+TEST_TYPE (uint32_t, 128, 31)
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #1\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #1\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #1\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #1\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #1\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #1\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #1\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #1\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #1\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #5\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #5\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #5\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #5\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #5\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #5\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #5\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #5\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #5\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #7\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #15\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #31\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #7\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #15\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #31\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #7\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #15\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #31\n} 1 } } */
+
+/* { dg-final { scan-assembler-not {\tmovprfx\t} } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_shift_2.C b/gcc/testsuite/g++.target/aarch64/sve/cond_shift_2.C
new file mode 100644
index 0000000..b8555f7
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_shift_2.C
@@ -0,0 +1,91 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_SHIFT_IMM(TYPE, NAME, OP, AMT) \
+ TYPE \
+ NAME##_##TYPE##_##AMT (TYPE a, TYPE b, TYPE c) \
+ { \
+ return a ? b OP AMT : AMT; \
+ }
+
+#define TEST_SHIFT(TYPE, NAME, OP, LIMIT) \
+ TYPE \
+ NAME##_##TYPE##_reg (TYPE a, TYPE b, TYPE c) \
+ { \
+ return a ? b OP c : c; \
+ } \
+ TEST_SHIFT_IMM (TYPE, NAME, OP, 1) \
+ TEST_SHIFT_IMM (TYPE, NAME, OP, 5) \
+ TEST_SHIFT_IMM (TYPE, NAME, OP, LIMIT)
+
+#define TEST_TYPE(TYPE, SIZE, LIMIT) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_SHIFT (TYPE##SIZE, shl, <<, LIMIT) \
+ TEST_SHIFT (TYPE##SIZE, shr, >>, LIMIT) \
+
+TEST_TYPE (int8_t, 32, 7)
+TEST_TYPE (uint8_t, 32, 7)
+
+TEST_TYPE (int8_t, 64, 7)
+TEST_TYPE (uint8_t, 64, 7)
+TEST_TYPE (int16_t, 64, 15)
+TEST_TYPE (uint16_t, 64, 15)
+
+TEST_TYPE (int8_t, 128, 7)
+TEST_TYPE (uint8_t, 128, 7)
+TEST_TYPE (int16_t, 128, 15)
+TEST_TYPE (uint16_t, 128, 15)
+TEST_TYPE (int32_t, 128, 31)
+TEST_TYPE (uint32_t, 128, 31)
+
+/* { dg-final { scan-assembler-times {\tlslr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlslr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlslr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsrr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsrr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsrr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasrr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasrr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasrr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #1\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #1\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #1\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #1\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #1\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #1\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #1\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #1\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #1\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #5\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #5\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #5\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #5\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #5\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #5\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #5\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #5\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #5\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #7\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #15\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #31\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #7\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #15\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #31\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #7\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #15\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #31\n} 1 } } */
+
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_shift_3.C b/gcc/testsuite/g++.target/aarch64/sve/cond_shift_3.C
new file mode 100644
index 0000000..b3da23c
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_shift_3.C
@@ -0,0 +1,94 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_SHIFT_IMM(TYPE, NAME, OP, AMT) \
+ TYPE \
+ NAME##_##TYPE##_##AMT (TYPE a, TYPE b, TYPE c) \
+ { \
+ return a ? b OP AMT : c; \
+ }
+
+#define TEST_SHIFT(TYPE, NAME, OP, LIMIT) \
+ TYPE \
+ NAME##_##TYPE##_reg (TYPE a, TYPE b, TYPE c, TYPE d) \
+ { \
+ return a ? b OP c : d; \
+ } \
+ TEST_SHIFT_IMM (TYPE, NAME, OP, 1) \
+ TEST_SHIFT_IMM (TYPE, NAME, OP, 5) \
+ TEST_SHIFT_IMM (TYPE, NAME, OP, LIMIT)
+
+#define TEST_TYPE(TYPE, SIZE, LIMIT) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_SHIFT (TYPE##SIZE, shl, <<, LIMIT) \
+ TEST_SHIFT (TYPE##SIZE, shr, >>, LIMIT) \
+
+TEST_TYPE (int8_t, 32, 7)
+TEST_TYPE (uint8_t, 32, 7)
+
+TEST_TYPE (int8_t, 64, 7)
+TEST_TYPE (uint8_t, 64, 7)
+TEST_TYPE (int16_t, 64, 15)
+TEST_TYPE (uint16_t, 64, 15)
+
+TEST_TYPE (int8_t, 128, 7)
+TEST_TYPE (uint8_t, 128, 7)
+TEST_TYPE (int16_t, 128, 15)
+TEST_TYPE (uint16_t, 128, 15)
+TEST_TYPE (int32_t, 128, 31)
+TEST_TYPE (uint32_t, 128, 31)
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #1\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #1\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #1\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #1\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #1\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #1\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #1\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #1\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #1\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #5\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #5\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #5\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #5\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #5\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #5\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #5\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #5\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #5\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #7\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #15\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #31\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #7\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #15\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #31\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #7\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #15\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #31\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b\n} 48 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h\n} 32 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s\n} 16 } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/cond_shift_4.C b/gcc/testsuite/g++.target/aarch64/sve/cond_shift_4.C
new file mode 100644
index 0000000..68e06bc
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/cond_shift_4.C
@@ -0,0 +1,94 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_SHIFT_IMM(TYPE, NAME, OP, AMT) \
+ TYPE \
+ NAME##_##TYPE##_##AMT (TYPE a, TYPE b) \
+ { \
+ return a ? b OP AMT : 0; \
+ }
+
+#define TEST_SHIFT(TYPE, NAME, OP, LIMIT) \
+ TYPE \
+ NAME##_##TYPE##_reg (TYPE a, TYPE b, TYPE c) \
+ { \
+ return a ? b OP c : 0; \
+ } \
+ TEST_SHIFT_IMM (TYPE, NAME, OP, 1) \
+ TEST_SHIFT_IMM (TYPE, NAME, OP, 5) \
+ TEST_SHIFT_IMM (TYPE, NAME, OP, LIMIT)
+
+#define TEST_TYPE(TYPE, SIZE, LIMIT) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_SHIFT (TYPE##SIZE, shl, <<, LIMIT) \
+ TEST_SHIFT (TYPE##SIZE, shr, >>, LIMIT) \
+
+TEST_TYPE (int8_t, 32, 7)
+TEST_TYPE (uint8_t, 32, 7)
+
+TEST_TYPE (int8_t, 64, 7)
+TEST_TYPE (uint8_t, 64, 7)
+TEST_TYPE (int16_t, 64, 15)
+TEST_TYPE (uint16_t, 64, 15)
+
+TEST_TYPE (int8_t, 128, 7)
+TEST_TYPE (uint8_t, 128, 7)
+TEST_TYPE (int16_t, 128, 15)
+TEST_TYPE (uint16_t, 128, 15)
+TEST_TYPE (int32_t, 128, 31)
+TEST_TYPE (uint32_t, 128, 31)
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #1\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #1\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #1\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #1\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #1\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #1\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #1\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #1\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #1\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #5\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #5\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #5\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #5\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #5\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #5\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #5\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #5\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #5\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #7\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #15\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #31\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #7\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #15\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #31\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #7\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #15\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #31\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.b, p[0-7]/z, z[0-9]+\.b\n} 48 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.h, p[0-7]/z, z[0-9]+\.h\n} 32 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.s, p[0-7]/z, z[0-9]+\.s\n} 16 } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/max_1.C b/gcc/testsuite/g++.target/aarch64/sve/max_1.C
new file mode 100644
index 0000000..caf9d7c
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/max_1.C
@@ -0,0 +1,73 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP_IMM(TYPE, OP, NAME, AMT) \
+ TYPE test##_##TYPE##_##NAME (TYPE a) { return a > AMT ? a : AMT; }
+
+#define TEST_OP(TYPE, MINV, MAXV) \
+ TYPE test##_##TYPE##_reg (TYPE a, TYPE b) { return a > b ? a : b; } \
+ TEST_OP_IMM (TYPE, OP, a, MINV) \
+ TEST_OP_IMM (TYPE, OP, b, 50) \
+ TEST_OP_IMM (TYPE, OP, c, MAXV)
+
+#define TEST_TYPE(TYPE, SIZE, MINV, MAXV) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE, MINV, MAXV)
+
+TEST_TYPE (int8_t, 32, -100, 100)
+TEST_TYPE (uint8_t, 32, 2, 250)
+
+TEST_TYPE (int8_t, 64, -110, 110)
+TEST_TYPE (uint8_t, 64, 3, 253)
+TEST_TYPE (int16_t, 64, -128, 127)
+TEST_TYPE (uint16_t, 64, 4, 255)
+
+TEST_TYPE (int8_t, 128, -120, 120)
+TEST_TYPE (uint8_t, 128, 5, 251)
+TEST_TYPE (int16_t, 128, -128, 127)
+TEST_TYPE (uint16_t, 128, 6, 255)
+TEST_TYPE (int32_t, 128, -128, 127)
+TEST_TYPE (uint32_t, 128, 7, 255)
+
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.b, z[0-9]+\.b, #-100\n} 1 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.b, z[0-9]+\.b, #-110\n} 1 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.b, z[0-9]+\.b, #-120\n} 1 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.h, z[0-9]+\.h, #-128\n} 2 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.s, z[0-9]+\.s, #-128\n} 1 { xfail *-*-* } } } */
+
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.b, z[0-9]+\.b, #50\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.h, z[0-9]+\.h, #50\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.s, z[0-9]+\.s, #50\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.b, z[0-9]+\.b, #100\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.b, z[0-9]+\.b, #110\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.b, z[0-9]+\.b, #120\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.h, z[0-9]+\.h, #127\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tsmax\tz[0-9]+\.s, z[0-9]+\.s, #127\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.b, z[0-9]+\.b, #2\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.b, z[0-9]+\.b, #3\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.h, z[0-9]+\.h, #4\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.b, z[0-9]+\.b, #5\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.h, z[0-9]+\.h, #6\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.s, z[0-9]+\.s, #7\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.b, z[0-9]+\.b, #50\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.h, z[0-9]+\.h, #50\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.s, z[0-9]+\.s, #50\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.b, z[0-9]+\.b, #250\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.b, z[0-9]+\.b, #251\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.b, z[0-9]+\.b, #253\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.h, z[0-9]+\.h, #255\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tumax\tz[0-9]+\.s, z[0-9]+\.s, #255\n} 1 } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/min_1.C b/gcc/testsuite/g++.target/aarch64/sve/min_1.C
new file mode 100644
index 0000000..9c84690
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/min_1.C
@@ -0,0 +1,73 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP_IMM(TYPE, OP, NAME, AMT) \
+ TYPE test##_##TYPE##_##NAME (TYPE a) { return a < AMT ? a : AMT; }
+
+#define TEST_OP(TYPE, MINV, MAXV) \
+ TYPE test##_##TYPE##_reg (TYPE a, TYPE b) { return a < b ? a : b; } \
+ TEST_OP_IMM (TYPE, OP, a, MINV) \
+ TEST_OP_IMM (TYPE, OP, b, 50) \
+ TEST_OP_IMM (TYPE, OP, c, MAXV)
+
+#define TEST_TYPE(TYPE, SIZE, MINV, MAXV) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE, MINV, MAXV)
+
+TEST_TYPE (int8_t, 32, -100, 100)
+TEST_TYPE (uint8_t, 32, 2, 250)
+
+TEST_TYPE (int8_t, 64, -110, 110)
+TEST_TYPE (uint8_t, 64, 3, 253)
+TEST_TYPE (int16_t, 64, -128, 127)
+TEST_TYPE (uint16_t, 64, 4, 255)
+
+TEST_TYPE (int8_t, 128, -120, 120)
+TEST_TYPE (uint8_t, 128, 5, 251)
+TEST_TYPE (int16_t, 128, -128, 127)
+TEST_TYPE (uint16_t, 128, 6, 255)
+TEST_TYPE (int32_t, 128, -128, 127)
+TEST_TYPE (uint32_t, 128, 7, 255)
+
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.b, z[0-9]+\.b, #-100\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.b, z[0-9]+\.b, #-110\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.b, z[0-9]+\.b, #-120\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.h, z[0-9]+\.h, #-128\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.s, z[0-9]+\.s, #-128\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.b, z[0-9]+\.b, #50\n} 3 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.h, z[0-9]+\.h, #50\n} 2 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.s, z[0-9]+\.s, #50\n} 1 { xfail *-*-* } } } */
+
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.b, z[0-9]+\.b, #100\n} 1 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.b, z[0-9]+\.b, #110\n} 1 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.b, z[0-9]+\.b, #120\n} 1 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.h, z[0-9]+\.h, #127\n} 2 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tsmin\tz[0-9]+\.s, z[0-9]+\.s, #127\n} 1 { xfail *-*-* } } } */
+
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.b, z[0-9]+\.b, #2\n} 1 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.b, z[0-9]+\.b, #3\n} 1 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.h, z[0-9]+\.h, #4\n} 1 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.b, z[0-9]+\.b, #5\n} 1 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.h, z[0-9]+\.h, #6\n} 1 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.s, z[0-9]+\.s, #7\n} 1 { xfail *-*-* } } } */
+
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.b, z[0-9]+\.b, #50\n} 3 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.h, z[0-9]+\.h, #50\n} 2 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.s, z[0-9]+\.s, #50\n} 1 { xfail *-*-* } } } */
+
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.b, z[0-9]+\.b, #250\n} 1 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.b, z[0-9]+\.b, #251\n} 1 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.b, z[0-9]+\.b, #253\n} 1 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.h, z[0-9]+\.h, #255\n} 2 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tumin\tz[0-9]+\.s, z[0-9]+\.s, #255\n} 1 { xfail *-*-* } } } */
diff --git a/gcc/testsuite/g++.target/aarch64/sve/pr98177-1.C b/gcc/testsuite/g++.target/aarch64/sve/pr98177-1.C
new file mode 100644
index 0000000..9789193
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/pr98177-1.C
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-Ofast -msve-vector-bits=128" } */
+
+int a, b;
+short c;
+void d(long e) {
+ for (int f = 0; f < b; f += 1)
+ for (short g = 0; g < c; g += 5)
+ a = (short)e;
+}
diff --git a/gcc/testsuite/g++.target/aarch64/sve/pr98177-2.C b/gcc/testsuite/g++.target/aarch64/sve/pr98177-2.C
new file mode 100644
index 0000000..c7244ef
--- /dev/null
+++ b/gcc/testsuite/g++.target/aarch64/sve/pr98177-2.C
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-Ofast -msve-vector-bits=128" } */
+
+int a, b, c;
+
+void foo(long e) {
+ for (int f = 0; f < b; f ++)
+ for (int g = 0; g < c; g ++)
+ a = (short)e;
+}
diff --git a/gcc/testsuite/g++.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp b/gcc/testsuite/g++.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp
index 304cdad..c3a3a01 100644
--- a/gcc/testsuite/g++.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp
+++ b/gcc/testsuite/g++.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp
@@ -1,5 +1,5 @@
# Assembly-based regression-test driver for the SVE ACLE
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
@@ -66,7 +66,7 @@ set-torture-options {
# Main loop.
set files [glob -nocomplain $srcdir/$gcc_subdir/asm/*.c]
set save-dg-do-what-default ${dg-do-what-default}
-if { [check_effective_target_aarch64_asm_sve_ok]
+if { [check_effective_target_aarch64_asm_sve2_ok]
&& [check_effective_target_aarch64_variant_pcs] } {
set dg-do-what-default assemble
} else {
diff --git a/gcc/testsuite/g++.target/arm/arm.exp b/gcc/testsuite/g++.target/arm/arm.exp
index fbb39be..182c1e9 100644
--- a/gcc/testsuite/g++.target/arm/arm.exp
+++ b/gcc/testsuite/g++.target/arm/arm.exp
@@ -1,5 +1,5 @@
# Specific regression driver for arm.
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/g++.target/arm/mve.exp b/gcc/testsuite/g++.target/arm/mve.exp
index e5b4b65..82cf928 100644
--- a/gcc/testsuite/g++.target/arm/mve.exp
+++ b/gcc/testsuite/g++.target/arm/mve.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2019-2020 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.target/arm/no_unique_address_1.C b/gcc/testsuite/g++.target/arm/no_unique_address_1.C
index 038aa00..40fc68b 100644
--- a/gcc/testsuite/g++.target/arm/no_unique_address_1.C
+++ b/gcc/testsuite/g++.target/arm/no_unique_address_1.C
@@ -1,5 +1,5 @@
/* { dg-require-effective-target arm_arch_v8a_hard_ok } */
-/* { dg-options "-std=c++11 -O -foptimize-sibling-calls" } */
+/* { dg-options "-std=c++11 -O -foptimize-sibling-calls -mno-long-calls" } */
/* { dg-add-options arm_arch_v8a_hard } */
/* { dg-final { check-function-bodies "**" "" "" } } */
diff --git a/gcc/testsuite/g++.target/arm/no_unique_address_2.C b/gcc/testsuite/g++.target/arm/no_unique_address_2.C
index 8be5de2..b66b4d0 100644
--- a/gcc/testsuite/g++.target/arm/no_unique_address_2.C
+++ b/gcc/testsuite/g++.target/arm/no_unique_address_2.C
@@ -1,5 +1,5 @@
/* { dg-require-effective-target arm_arch_v8a_hard_ok } */
-/* { dg-options "-std=c++17 -O -foptimize-sibling-calls" } */
+/* { dg-options "-std=c++17 -O -foptimize-sibling-calls -mno-long-calls" } */
/* { dg-add-options arm_arch_v8a_hard } */
/* { dg-final { check-function-bodies "**" "" "" } } */
diff --git a/gcc/testsuite/g++.target/i386/avx512f-pr96891-1.C b/gcc/testsuite/g++.target/i386/avx512f-pr96891-1.C
new file mode 100644
index 0000000..969a085
--- /dev/null
+++ b/gcc/testsuite/g++.target/i386/avx512f-pr96891-1.C
@@ -0,0 +1,37 @@
+/* { dg-do compile } */
+/* { dg-options "-mavx512vl -O2" } */
+/* { dg-final { scan-assembler-not "%k\[0-7\]" } } */
+
+typedef float v4sf __attribute__ ((vector_size (16)));
+typedef float v8sf __attribute__ ((vector_size (32)));
+typedef double v2df __attribute__ ((vector_size (16)));
+typedef double v4df __attribute__ ((vector_size (32)));
+
+
+v4sf
+foo_v4sf (v4sf x)
+{
+ const union U { unsigned u; float f; } u = { -1U };
+ return x > 0.0f ? u.f : 0.0f;
+}
+
+v8sf
+foo_v8sf (v8sf x)
+{
+ const union U { unsigned u; float f; } u = { -1U };
+ return x > 0.0f ? u.f : 0.0f;
+}
+
+v2df
+foo_v2df (v2df x)
+{
+ const union U { unsigned long long u; double df; } u = { -1ULL };
+ return x > 0.0 ? u.df : 0.0;
+}
+
+v4df
+foo_v4df (v4df x)
+{
+ const union U { unsigned long long u; double df; } u = { -1ULL };
+ return x > 0.0 ? u.df : 0.0;
+}
diff --git a/gcc/testsuite/g++.target/i386/i386.exp b/gcc/testsuite/g++.target/i386/i386.exp
index 276093d..139a488 100644
--- a/gcc/testsuite/g++.target/i386/i386.exp
+++ b/gcc/testsuite/g++.target/i386/i386.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.target/i386/pr98847.C b/gcc/testsuite/g++.target/i386/pr98847.C
new file mode 100644
index 0000000..0a72ccc
--- /dev/null
+++ b/gcc/testsuite/g++.target/i386/pr98847.C
@@ -0,0 +1,20 @@
+// PR c++/98847
+// { dg-do run }
+// { dg-options "-O2 -masm=att" }
+
+template <int N>
+int
+foo ()
+{
+ register int edx asm ("edx");
+ asm ("movl $1234, %%edx" : "=r" (edx));
+ return edx;
+}
+
+int
+main ()
+{
+ if (foo<0> () != 1234)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.target/msp430/msp430.exp b/gcc/testsuite/g++.target/msp430/msp430.exp
index 3574c0f..2e9fead 100644
--- a/gcc/testsuite/g++.target/msp430/msp430.exp
+++ b/gcc/testsuite/g++.target/msp430/msp430.exp
@@ -1,5 +1,5 @@
# Specific regression driver for MSP430.
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/g++.target/nios2/nios2.exp b/gcc/testsuite/g++.target/nios2/nios2.exp
index a4ff7d0..c23be09 100644
--- a/gcc/testsuite/g++.target/nios2/nios2.exp
+++ b/gcc/testsuite/g++.target/nios2/nios2.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2019 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.target/powerpc/powerpc.exp b/gcc/testsuite/g++.target/powerpc/powerpc.exp
index 0ad71a7..4c9de3b 100644
--- a/gcc/testsuite/g++.target/powerpc/powerpc.exp
+++ b/gcc/testsuite/g++.target/powerpc/powerpc.exp
@@ -1,5 +1,5 @@
# Specific regression driver for PowerPC.
-# Copyright (C) 2019-2020 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/g++.target/riscv/riscv.exp b/gcc/testsuite/g++.target/riscv/riscv.exp
index b86e3db..d9e832e 100644
--- a/gcc/testsuite/g++.target/riscv/riscv.exp
+++ b/gcc/testsuite/g++.target/riscv/riscv.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2019-2020 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/g++.target/s390/pr98722.C b/gcc/testsuite/g++.target/s390/pr98722.C
new file mode 100644
index 0000000..64edaf3
--- /dev/null
+++ b/gcc/testsuite/g++.target/s390/pr98722.C
@@ -0,0 +1,12 @@
+// { dg-do compile }
+// { dg-options "-Og -fno-tree-fre -fno-split-wide-types" }
+struct B {
+ virtual void Method();
+};
+typedef void (B::*fn_type_a)();
+
+int main() {
+ fn_type_a f(&B::Method);
+ B b;
+ (b.*f)();
+}
diff --git a/gcc/testsuite/g++.target/s390/s390.exp b/gcc/testsuite/g++.target/s390/s390.exp
index a0e6b82..4c08578 100644
--- a/gcc/testsuite/g++.target/s390/s390.exp
+++ b/gcc/testsuite/g++.target/s390/s390.exp
@@ -1,5 +1,5 @@
# Specific regression driver for S390.
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/g++.target/xtensa/xtensa.exp b/gcc/testsuite/g++.target/xtensa/xtensa.exp
index f419120..0a83d9b 100644
--- a/gcc/testsuite/g++.target/xtensa/xtensa.exp
+++ b/gcc/testsuite/g++.target/xtensa/xtensa.exp
@@ -1,5 +1,5 @@
# Specific regression driver for Xtensa.
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.c-torture/compile/asmgoto-2.c b/gcc/testsuite/gcc.c-torture/compile/asmgoto-2.c
index f1b30c0..d2d2ac5 100644
--- a/gcc/testsuite/gcc.c-torture/compile/asmgoto-2.c
+++ b/gcc/testsuite/gcc.c-torture/compile/asmgoto-2.c
@@ -1,5 +1,6 @@
/* This test should be switched off for a new target with less than 4 allocatable registers */
/* { dg-do compile } */
+/* { dg-skip-if "Reload target" { hppa*-*-* } } */
int
foo (void)
{
diff --git a/gcc/testsuite/gcc.c-torture/compile/asmgoto-5.c b/gcc/testsuite/gcc.c-torture/compile/asmgoto-5.c
index 94c14dd..ce751ce 100644
--- a/gcc/testsuite/gcc.c-torture/compile/asmgoto-5.c
+++ b/gcc/testsuite/gcc.c-torture/compile/asmgoto-5.c
@@ -1,6 +1,7 @@
/* Test to generate output reload in asm goto on x86_64. */
/* { dg-do compile } */
/* { dg-skip-if "no O0" { { i?86-*-* x86_64-*-* } && { ! ia32 } } { "-O0" } { "" } } */
+/* { dg-skip-if "Reload target" { hppa*-*-* } } */
#if defined __x86_64__
#define ASM(s) asm (s)
diff --git a/gcc/testsuite/gcc.c-torture/compile/compile.exp b/gcc/testsuite/gcc.c-torture/compile/compile.exp
index 9c8c758..7bde408 100644
--- a/gcc/testsuite/gcc.c-torture/compile/compile.exp
+++ b/gcc/testsuite/gcc.c-torture/compile/compile.exp
@@ -1,5 +1,5 @@
# Expect driver script for GCC Regression Tests
-# Copyright (C) 1993-2020 Free Software Foundation, Inc.
+# Copyright (C) 1993-2021 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr97144.c b/gcc/testsuite/gcc.c-torture/compile/pr97144.c
new file mode 100644
index 0000000..380e5d4
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr97144.c
@@ -0,0 +1,24 @@
+int a, b = 5, c = 3;
+char d;
+char e[1];
+int f[] = {0, 0, 1};
+short g;
+char *h = e;
+void i(void) { b = a; }
+static void j(void) {
+ h = e;
+ if (f[2])
+ k:
+ for (;;) {
+ for (c = 0; c <= 4; c++) {
+ for (g = 0; g <= 4; g++)
+ f[g + 4] &= 2;
+ }
+ if (d)
+ goto k;
+ }
+}
+void l(void) {
+ j();
+ c = 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr98199.c b/gcc/testsuite/gcc.c-torture/compile/pr98199.c
new file mode 100644
index 0000000..b5c8d20
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr98199.c
@@ -0,0 +1,7 @@
+/* PR tree-optimization/98199 */
+
+struct A { long a; short d; int c, f, e, g; };
+struct B { int a, i; short j; struct A k; signed : 20; int e, g; } __attribute__((packed));
+struct C { short a; unsigned i, k; struct B d; const int : 30; signed e : 20; signed : 18; };
+const struct C l = { 1, 6, 0, {}, 0 };
+int foo (void) { return l.e || 0; }
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr98229.c b/gcc/testsuite/gcc.c-torture/compile/pr98229.c
new file mode 100644
index 0000000..509719d
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr98229.c
@@ -0,0 +1,7 @@
+/* PR rtl-optimization/98229 */
+
+unsigned long long
+foo (unsigned long long x)
+{
+ return x % ~0U;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr98256.c b/gcc/testsuite/gcc.c-torture/compile/pr98256.c
new file mode 100644
index 0000000..44839c7
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr98256.c
@@ -0,0 +1,9 @@
+/* PR tree-optimization/98256 */
+
+unsigned a, b;
+
+int
+foo (void)
+{
+ return !!(~a / b);
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr98407.c b/gcc/testsuite/gcc.c-torture/compile/pr98407.c
new file mode 100644
index 0000000..29eb080
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr98407.c
@@ -0,0 +1,10 @@
+/* PR tree-optimization/98407 */
+
+struct S { int a; int b[]; };
+const struct S c = { 0, { 0 } }, d = { 0, { 0 } };
+
+int
+foo (void)
+{
+ return __builtin_memcmp (&c, &d, sizeof d);
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr98629.c b/gcc/testsuite/gcc.c-torture/compile/pr98629.c
new file mode 100644
index 0000000..3c7f08c
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr98629.c
@@ -0,0 +1,11 @@
+/* PR tree-optimization/98629 */
+
+unsigned int a;
+int b, c;
+
+void
+foo (void)
+{
+ unsigned int *e = &a;
+ (a /= a |= b) - (0 <= (*e += *e)) * (c *= *e);
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr98849.c b/gcc/testsuite/gcc.c-torture/compile/pr98849.c
new file mode 100644
index 0000000..988b625
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr98849.c
@@ -0,0 +1,60 @@
+/* PR target/98849 */
+
+unsigned int a[1024], b[1024];
+int c[1024], d[1024];
+
+void
+f1 (void)
+{
+ for (int i = 0; i < 1024; i++)
+ a[i] = b[i] << 3;
+}
+
+void
+f2 (int x)
+{
+ for (int i = 0; i < 1024; i++)
+ a[i] = b[i] << x;
+}
+
+void
+f3 (void)
+{
+ for (int i = 0; i < 1024; i++)
+ c[i] = d[i] << 3;
+}
+
+void
+f4 (int x)
+{
+ for (int i = 0; i < 1024; i++)
+ c[i] = d[i] << x;
+}
+
+void
+f5 (void)
+{
+ for (int i = 0; i < 1024; i++)
+ a[i] = b[i] >> 3;
+}
+
+void
+f6 (int x)
+{
+ for (int i = 0; i < 1024; i++)
+ a[i] = b[i] >> x;
+}
+
+void
+f7 (void)
+{
+ for (int i = 0; i < 1024; i++)
+ c[i] = d[i] >> 3;
+}
+
+void
+f8 (int x)
+{
+ for (int i = 0; i < 1024; i++)
+ c[i] = d[i] >> x;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp b/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
index 594c929..baec137 100644
--- a/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
+++ b/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.c-torture/execute/execute.exp b/gcc/testsuite/gcc.c-torture/execute/execute.exp
index cb44ced..f25aeff 100644
--- a/gcc/testsuite/gcc.c-torture/execute/execute.exp
+++ b/gcc/testsuite/gcc.c-torture/execute/execute.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2020 Free Software Foundation, Inc.
+# Copyright (C) 1991-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp b/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
index d79af98..a7ca6e5 100644
--- a/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
+++ b/gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
@@ -1,6 +1,6 @@
#
# Expect driver script for GCC Regression Tests
-# Copyright (C) 1993-2020 Free Software Foundation, Inc.
+# Copyright (C) 1993-2021 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr95731.c b/gcc/testsuite/gcc.c-torture/execute/pr95731.c
new file mode 100644
index 0000000..4d9593c
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr95731.c
@@ -0,0 +1,40 @@
+/* PR tree-optimization/95731 */
+
+__attribute__((noipa)) int
+foo (int x, int y, int z, int w, long long u, long long v)
+{
+ return x >= 0 && y >= 0 && z < 0 && u < 0 && w >= 0 && v < 0;
+}
+
+__attribute__((noipa)) int
+bar (int x, int y, int z, int w, long long u, long long v)
+{
+ return u >= 0 && x >= 0 && y >= 0 && v < 0 && z >= 0 && w >= 0;
+}
+
+__attribute__((noipa)) int
+baz (int x, int y, int z, int w, long long u, long long v)
+{
+ return x >= 0 || u < 0 || y >= 0 || v < 0 || z >= 0 || w >= 0;
+}
+
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 64; i++)
+ {
+ int a = foo ((i & 1) ? -123 : 456, (i & 2) ? -123 : 456,
+ (i & 4) ? -123 : 456, (i & 8) ? -123 : 456,
+ (i & 16) ? -123 : 456, (i & 32) ? -123 : 456);
+ int b = bar ((i & 1) ? -123 : 456, (i & 2) ? -123 : 456,
+ (i & 4) ? -123 : 456, (i & 8) ? -123 : 456,
+ (i & 16) ? -123 : 456, (i & 32) ? -123 : 456);
+ int c = baz ((i & 1) ? -123 : 456, (i & 2) ? -123 : 456,
+ (i & 4) ? -123 : 456, (i & 8) ? -123 : 456,
+ (i & 16) ? -123 : 456, (i & 32) ? -123 : 456);
+ if (a != (i == 52) || b != (i == 32) || c != (i != 15))
+ __builtin_abort ();
+ }
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr98366.c b/gcc/testsuite/gcc.c-torture/execute/pr98366.c
new file mode 100644
index 0000000..14415bf
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr98366.c
@@ -0,0 +1,13 @@
+/* PR middle-end/98366 */
+/* { dg-require-effective-target int32 } */
+
+typedef struct S { int a, b, c : 7, d : 8, e : 17; } S;
+const S f[] = { {0, 3, 4, 2, 0} };
+
+int
+main ()
+{
+ if (__builtin_memcmp (f, (S[]){{.b = 3, .c = 4, .d = 2, .e = 0}}, sizeof (S)))
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr98474.c b/gcc/testsuite/gcc.c-torture/execute/pr98474.c
new file mode 100644
index 0000000..8c28799
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr98474.c
@@ -0,0 +1,30 @@
+/* PR tree-optimization/98474 */
+
+#ifdef __SIZEOF_INT128__
+typedef __uint128_t T;
+#define N (__SIZEOF_INT128__ * __CHAR_BIT__ / 2)
+#else
+typedef unsigned long long T;
+#define N (__SIZEOF_LONG_LONG__ * __CHAR_BIT__ / 2)
+#endif
+
+__attribute__ ((noipa)) void
+foo (T *x)
+{
+ *x += ((T) 1) << (N + 1);
+}
+
+int
+main ()
+{
+ T a = ((T) 1) << (N + 1);
+ T b = a;
+ T n;
+ foo (&b);
+ n = b;
+ while (n >= a)
+ n -= a;
+ if ((int) (n >> N) != 0)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr98681.c b/gcc/testsuite/gcc.c-torture/execute/pr98681.c
new file mode 100644
index 0000000..a256881
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr98681.c
@@ -0,0 +1,18 @@
+/* PR target/98681 */
+
+__attribute__((noipa)) int
+foo (int x)
+{
+ if (x > 32)
+ return (x << -64) & 255;
+ else
+ return x;
+}
+
+int
+main ()
+{
+ if (foo (32) != 32 || foo (-150) != -150)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr98727.c b/gcc/testsuite/gcc.c-torture/execute/pr98727.c
new file mode 100644
index 0000000..7ecdef8
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr98727.c
@@ -0,0 +1,20 @@
+/* PR tree-optimization/98727 */
+
+__attribute__((noipa)) long int
+foo (long int x, long int y)
+{
+ long int z = (unsigned long) x * y;
+ if (x != z / y)
+ return -1;
+ return z;
+}
+
+int
+main ()
+{
+ if (foo (4, 24) != 96
+ || foo (124, 126) != 124L * 126
+ || foo (__LONG_MAX__ / 16, 17) != -1)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr98853-1.c b/gcc/testsuite/gcc.c-torture/execute/pr98853-1.c
new file mode 100644
index 0000000..b5a3786
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr98853-1.c
@@ -0,0 +1,21 @@
+/* PR target/98853 */
+
+#if __SIZEOF_INT__ == 4 && __SIZEOF_LONG_LONG__ == 8 && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+__attribute__((__noipa__)) unsigned long long
+foo (unsigned x, unsigned long long y, unsigned long long z)
+{
+ __builtin_memcpy (2 + (char *) &x, 2 + (char *) &y, 2);
+ return x + z;
+}
+#endif
+
+int
+main ()
+{
+#if __SIZEOF_INT__ == 4 && __SIZEOF_LONG_LONG__ == 8 && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+ if (foo (0x44444444U, 0x1111111111111111ULL, 0x2222222222222222ULL)
+ != 0x2222222233336666ULL)
+ __builtin_abort ();
+#endif
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr98853-2.c b/gcc/testsuite/gcc.c-torture/execute/pr98853-2.c
new file mode 100644
index 0000000..2a3b0f2
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr98853-2.c
@@ -0,0 +1,19 @@
+/* PR target/98853 */
+
+#if __SIZEOF_INT__ == 4 && __SIZEOF_LONG_LONG__ == 8
+__attribute__((noipa)) unsigned long long
+foo (unsigned long long x, unsigned int y)
+{
+ return ((unsigned) x & 0xfffe0000U) | (y & 0x1ffff);
+}
+#endif
+
+int
+main ()
+{
+#if __SIZEOF_INT__ == 4 && __SIZEOF_LONG_LONG__ == 8
+ if (foo (0xdeadbeefcaf2babeULL, 0xdeaffeedU) != 0x00000000caf3feedULL)
+ __builtin_abort ();
+#endif
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp b/gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp
index 6de4951..5c8c162 100644
--- a/gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp
+++ b/gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp
@@ -1,6 +1,6 @@
#
# Expect driver script for GCC Regression Tests
-# Copyright (C) 1993-2020 Free Software Foundation, Inc.
+# Copyright (C) 1993-2021 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg-selftests/dg-final.exp b/gcc/testsuite/gcc.dg-selftests/dg-final.exp
index a0ac9d6..534c241 100644
--- a/gcc/testsuite/gcc.dg-selftests/dg-final.exp
+++ b/gcc/testsuite/gcc.dg-selftests/dg-final.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/20021029-1.c b/gcc/testsuite/gcc.dg/20021029-1.c
index 57c2b48..d13f669 100644
--- a/gcc/testsuite/gcc.dg/20021029-1.c
+++ b/gcc/testsuite/gcc.dg/20021029-1.c
@@ -3,7 +3,7 @@
/* { dg-do compile { target fpic } } */
/* { dg-options "-O2 -fpic" } */
/* { dg-final { scan-assembler-not ".data.rel.ro.local" } } */
-/* { dg-final { scan-assembler-symbol-section {ar} {^\.(const|rodata)|\[RO\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?ar} {^\.(const|rodata)|\[RO\]} } } */
/* { dg-require-effective-target label_values } */
/* { dg-require-effective-target indirect_jumps } */
diff --git a/gcc/testsuite/gcc.dg/README b/gcc/testsuite/gcc.dg/README
index 44e4b33..1c8c1c7 100644
--- a/gcc/testsuite/gcc.dg/README
+++ b/gcc/testsuite/gcc.dg/README
@@ -16,7 +16,7 @@ Notes for testsuite/gcc.dg.
4) Send bugs, comments, etc. to dje@cygnus.com.
-Copyright (C) 1997-2020 Free Software Foundation, Inc.
+Copyright (C) 1997-2021 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gcc/testsuite/gcc.dg/Walloca-2.c b/gcc/testsuite/gcc.dg/Walloca-2.c
index 1cf9165..c81813e 100644
--- a/gcc/testsuite/gcc.dg/Walloca-2.c
+++ b/gcc/testsuite/gcc.dg/Walloca-2.c
@@ -9,11 +9,7 @@ g1 (int n)
{
void *p;
if (n > 0 && n < 2000)
- // FIXME: This is a bogus warning, and is currently happening on
- // 32-bit targets because VRP is not giving us any range info for
- // the argument to __builtin_alloca. This should be fixed by the
- // upcoming range work.
- p = __builtin_alloca (n); // { dg-bogus "unbounded use of 'alloca'" "" { xfail { ! lp64 } } }
+ p = __builtin_alloca (n); // { dg-bogus "unbounded use of 'alloca'" "" }
else
p = __builtin_malloc (n);
f (p);
diff --git a/gcc/testsuite/gcc.dg/Wfree-nonheap-object-4.c b/gcc/testsuite/gcc.dg/Wfree-nonheap-object-4.c
new file mode 100644
index 0000000..a7d9212
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wfree-nonheap-object-4.c
@@ -0,0 +1,107 @@
+/* PR middle-end/98664 - inconsistent --Wfree-nonheap-object for inlined
+ calls to system headers
+ { dg-do compile }
+ { dg-options "-O2 -Wall" } */
+
+# 7 "Wfree-nonheap-object-4.h" 1 3
+
+struct A
+{
+ void *p;
+};
+
+void f0 (struct A *p, void *q) { p->p = q; }
+void f1 (struct A *p, void *q) { f0 (p, q); }
+void f2 (struct A *p, void *q) { f1 (p, q); }
+
+void g0 (struct A *p)
+{
+ __builtin_free (p->p); // { dg-warning "\\\[-Wfree-nonheap-object" }
+}
+
+void g1 (struct A *p) { g0 (p); }
+void g2 (struct A *p) { g1 (p); }
+
+# 26 "Wfree-nonheap-object-4.c"
+
+#define NOIPA __attribute__ ((noipa))
+
+extern int array[];
+
+/* Verify the warning is issued even for calls in a system header inlined
+ into a function outside the header. */
+
+NOIPA void warn_g0 (struct A *p)
+{
+ int *q = array + 1;
+
+ f0 (p, q);
+ g0 (p);
+}
+
+// { dg-message "inlined from 'warn_g0'" "" { target *-*-* } 0 }
+
+
+/* Also verify the warning can be suppressed. */
+
+NOIPA void nowarn_g0 (struct A *p)
+{
+ int *q = array + 2;
+
+ f0 (p, q);
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wfree-nonheap-object"
+ g0 (p);
+#pragma GCC diagnostic pop
+}
+
+
+NOIPA void warn_g1 (struct A *p)
+{
+ int *q = array + 3;
+
+ f1 (p, q);
+ g1 (p);
+}
+
+// { dg-message "inlined from 'g1'" "" { target *-*-* } 0 }
+// { dg-message "inlined from 'warn_g1'" "" { target *-*-* } 0 }
+
+
+NOIPA void nowarn_g1 (struct A *p)
+{
+ int *q = array + 4;
+
+ f1 (p, q);
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wfree-nonheap-object"
+ g1 (p);
+#pragma GCC diagnostic pop
+}
+
+
+NOIPA void warn_g2 (struct A *p)
+{
+ int *q = array + 5;
+
+ f2 (p, q);
+ g2 (p);
+}
+
+// { dg-message "inlined from 'g2'" "" { target *-*-* } 0 }
+// { dg-message "inlined from 'warn_g2'" "" { target *-*-* } 0 }
+
+
+NOIPA void nowarn_g2 (struct A *p)
+{
+ int *q = array + 6;
+
+ f2 (p, q);
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wfree-nonheap-object"
+ g2 (p);
+#pragma GCC diagnostic pop
+}
diff --git a/gcc/testsuite/gcc.dg/Wmismatched-dealloc-2.c b/gcc/testsuite/gcc.dg/Wmismatched-dealloc-2.c
new file mode 100644
index 0000000..21a5ea7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wmismatched-dealloc-2.c
@@ -0,0 +1,141 @@
+/* PR middle-end/94527 - Add an attribute that marks a function as freeing
+ an object
+ Verify that attribute malloc with one or two arguments has the expected
+ effect on diagnostics.
+ { dg-options "-Wall -ftrack-macro-expansion=0" } */
+
+#define A(...) __attribute__ ((malloc (__VA_ARGS__), noipa))
+
+typedef __SIZE_TYPE__ size_t;
+typedef struct A A;
+typedef struct B B;
+
+/* A pointer returned by any of the four functions must be deallocated
+ either by dealloc() or by realloc_{A,B}(). */
+A (__builtin_free) A* alloc_A (int);
+A (__builtin_free) B* alloc_B (int);
+A (__builtin_free) A* realloc_A (A *p, int n) { return p; }
+A (__builtin_free) B* realloc_B (B *p, int n) { return p; }
+
+A (realloc_A) A* alloc_A (int);
+A (realloc_B) B* alloc_B (int);
+A (realloc_A) A* realloc_A (A*, int);
+A (realloc_B) B* realloc_B (B*, int);
+
+void dealloc (void*);
+A (dealloc) void* alloc (int);
+
+void sink (void*);
+
+void test_alloc_A (void)
+{
+ {
+ void *p = alloc_A (1);
+ p = realloc_A (p, 2);
+ __builtin_free (p);
+ }
+
+ {
+ void *p = alloc_A (1);
+ /* Verify that calling realloc doesn't trigger a warning even though
+ alloc_A is not directly associated with it. */
+ p = __builtin_realloc (p, 2);
+ sink (p);
+ }
+
+ {
+ void *p = alloc_A (1); // { dg-message "returned from 'alloc_A'" }
+ dealloc (p); // { dg-warning "'dealloc' called on pointer returned from a mismatched allocation function" }
+ }
+
+ {
+ /* Because alloc_A() and realloc_B() share free() as a deallocator
+ they must also be valid as each other's deallocators. */
+ void *p = alloc_A (1);
+ p = realloc_B ((B*)p, 2);
+ __builtin_free (p);
+ }
+
+ {
+ void *p = alloc_A (1);
+ p = realloc_A (p, 2);
+ p = __builtin_realloc (p, 3);
+ __builtin_free (p);
+ }
+}
+
+
+void test_realloc_A (void *ptr)
+{
+ {
+ void *p = realloc_A (0, 1);
+ p = realloc_A (p, 2);
+ __builtin_free (p);
+ }
+
+ {
+ void *p = realloc_A (ptr, 2);
+ p = realloc_A (p, 2);
+ __builtin_free (p);
+ }
+
+ {
+ void *p = realloc_A (0, 3);
+ p = __builtin_realloc (p, 2);
+ sink (p);
+ }
+
+ {
+ void *p = realloc_A (0, 4); // { dg-message "returned from 'realloc_A'" }
+ dealloc (p); // { dg-warning "'dealloc' called on pointer returned from a mismatched allocation function" }
+ }
+
+ {
+ /* Because realloc_A() and realloc_B() share free() as a deallocator
+ they must also be valid as each other's deallocators. */
+ void *p = realloc_A (0, 5);
+ p = realloc_B ((B*)p, 2);
+ __builtin_free (p);
+ }
+
+ {
+ void *p = realloc_A (0, 6);
+ p = realloc_A ((A*)p, 2);
+ p = __builtin_realloc (p, 3);
+ __builtin_free (p);
+ }
+}
+
+
+void test_realloc (void *ptr)
+{
+ extern void free (void*);
+ extern void* realloc (void*, size_t);
+
+ {
+ void *p = realloc (ptr, 1);
+ p = realloc_A (p, 2);
+ __builtin_free (p);
+ }
+
+ {
+ void *p = realloc (ptr, 2);
+ p = realloc_A (p, 2);
+ free (p);
+ }
+
+ {
+ void *p = realloc (ptr, 3);
+ free (p);
+ }
+
+ {
+ void *p = realloc (ptr, 4);
+ __builtin_free (p);
+ }
+
+ {
+ void *p = realloc (ptr, 5); // { dg-message "returned from 'realloc'" }
+ dealloc (p); // { dg-warning "'dealloc' called on pointer returned from a mismatched allocation function" }
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/Wmismatched-dealloc-3.c b/gcc/testsuite/gcc.dg/Wmismatched-dealloc-3.c
new file mode 100644
index 0000000..5afcea3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wmismatched-dealloc-3.c
@@ -0,0 +1,265 @@
+/* Verify that Glibc <stdlib.h> declarations are handled correctly
+ { dg-do compile }
+ { dg-options "-Wall" } */
+
+#define A(...) __attribute__ ((malloc (__VA_ARGS__), noipa))
+
+typedef __SIZE_TYPE__ size_t;
+
+/* All functions with the same standard deallocator are associated
+ with each other. */
+void free (void*);
+void* calloc (size_t, size_t);
+void* malloc (size_t);
+void* realloc (void*, size_t);
+
+A (__builtin_free) void* aligned_alloc (size_t, size_t);
+
+/* Like realloc(), reallocarray() is both an allocator and a deallocator.
+ It must be associated with both free() and with itself, but nothing
+ else. */
+A (__builtin_free) void* reallocarray (void*, size_t, size_t);
+A (reallocarray) void* reallocarray (void*, size_t, size_t);
+
+A (__builtin_free) extern char *canonicalize_file_name (const char*);
+
+
+void dealloc (void*);
+A (dealloc) void* alloc (size_t);
+
+
+void sink (void*);
+void* source (void);
+
+
+void test_builtin_aligned_alloc (void *p)
+{
+ {
+ void *q = __builtin_aligned_alloc (1, 2);
+ sink (q);
+ __builtin_free (q);
+ }
+
+ {
+ void *q = __builtin_aligned_alloc (1, 2);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = __builtin_aligned_alloc (1, 2);
+ q = __builtin_realloc (q, 3);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = __builtin_aligned_alloc (1, 2);
+ q = realloc (q, 3);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q;
+ q = __builtin_aligned_alloc (1, 2); // { dg-message "returned from '__builtin_aligned_alloc'" }
+ sink (q);
+ dealloc (q); // { dg-warning "'dealloc' called on pointer returned from a mismatched allocation function" }
+ }
+}
+
+
+void test_aligned_alloc (void *p)
+{
+ {
+ void *q = aligned_alloc (1, 2);
+ sink (q);
+ __builtin_free (q);
+ }
+
+ {
+ void *q = aligned_alloc (1, 2);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = aligned_alloc (1, 2);
+ q = __builtin_realloc (q, 3);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = aligned_alloc (1, 2);
+ q = realloc (q, 3);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = aligned_alloc (1, 2); // { dg-message "returned from 'aligned_alloc'" }
+ sink (q);
+ dealloc (q); // { dg-warning "'dealloc' called on pointer returned from a mismatched allocation function" }
+ }
+}
+
+
+void test_reallocarray (void *p)
+{
+ {
+ void *q = __builtin_aligned_alloc (1, 2);
+ q = reallocarray (q, 2, 3);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = aligned_alloc (1, 2);
+ q = reallocarray (q, 2, 3);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = __builtin_calloc (1, 2);
+ q = reallocarray (q, 2, 3);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = calloc (1, 2);
+ q = reallocarray (q, 2, 3);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = __builtin_malloc (1);
+ q = reallocarray (q, 2, 3);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = malloc (1);
+ q = reallocarray (q, 2, 3);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = __builtin_realloc (p, 1);
+ q = reallocarray (q, 2, 3);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = realloc (p, 1);
+ q = reallocarray (q, 2, 3);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = __builtin_strdup ("abc");
+ q = reallocarray (q, 3, 4);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = __builtin_strndup ("abcd", 3);
+ q = reallocarray (q, 4, 5);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = source ();
+ q = reallocarray (q, 5, 6);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = alloc (1); // { dg-message "returned from 'alloc'" }
+ q = reallocarray (q, 6, 7); // { dg-warning "'reallocarray' called on pointer returned from a mismatched allocation function" }
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = reallocarray (p, 7, 8);
+ q = __builtin_realloc (q, 9);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = reallocarray (p, 7, 8);
+ q = realloc (q, 9);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = reallocarray (p, 8, 9);
+ q = reallocarray (q, 3, 4);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = reallocarray (p, 9, 10);
+ q = reallocarray (q, 3, 4);
+ sink (q);
+ dealloc (q); // { dg-warning "'dealloc' called on pointer returned from a mismatched allocation function" }
+ }
+}
+
+
+void test_canonicalize_filename (void *p)
+{
+ {
+ void *q = canonicalize_file_name ("a");
+ sink (q);
+ __builtin_free (q);
+ }
+
+ {
+ void *q = canonicalize_file_name ("b");
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = canonicalize_file_name ("c");
+ q = __builtin_realloc (q, 2);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = canonicalize_file_name ("d");
+ q = realloc (q, 3);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q = canonicalize_file_name ("e");
+ q = reallocarray (q, 4, 5);
+ sink (q);
+ free (q);
+ }
+
+ {
+ void *q;
+ q = canonicalize_file_name ("f"); // { dg-message "returned from 'canonicalize_file_name'" }
+ sink (q);
+ dealloc (q); // { dg-warning "'dealloc' called on pointer returned from a mismatched allocation function" }
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/Wmismatched-dealloc.c b/gcc/testsuite/gcc.dg/Wmismatched-dealloc.c
index 7c5d6ac..6336efa 100644
--- a/gcc/testsuite/gcc.dg/Wmismatched-dealloc.c
+++ b/gcc/testsuite/gcc.dg/Wmismatched-dealloc.c
@@ -13,28 +13,27 @@ void free (void*);
void* malloc (size_t);
void* realloc (void*, size_t);
-int fclose (FILE*);
-FILE* freopen (const char*, const char*, FILE*);
-int pclose (FILE*);
-
-A (fclose) A (freopen, 3)
- FILE* fdopen (int);
-A (fclose) A (freopen, 3)
- FILE* fopen (const char*, const char*);
-A (fclose) A (freopen, 3)
- FILE* fmemopen(void *, size_t, const char *);
-A (fclose) A (freopen, 3)
- FILE* freopen (const char*, const char*, FILE*);
-A (pclose) A (freopen, 3)
- FILE* popen (const char*, const char*);
-A (fclose) A (freopen, 3)
- FILE* tmpfile (void);
+/* Declare functions with the minimum attributes malloc how they're
+ likely going to be declared in <stdio.h>. */
+ int fclose (FILE*);
+A (fclose) FILE* fdopen (int);
+A (fclose) FILE* fopen (const char*, const char*);
+A (fclose) FILE* fmemopen(void *, size_t, const char *);
+A (fclose) FILE* freopen (const char*, const char*, FILE*);
+A (freopen, 3) FILE* freopen (const char*, const char*, FILE*);
+A (fclose) FILE* tmpfile (void);
-void sink (FILE*);
+A (fclose) FILE* open_memstream (char**, size_t*);
+A (fclose) FILE* open_wmemstream (char**, size_t*);
+
+ int pclose (FILE*);
+A (pclose) FILE* popen (const char*, const char*);
+ void release (void*);
+A (release) FILE* acquire (void);
+
+void sink (FILE*);
- void release (void*);
-A (release) FILE* acquire (void);
void nowarn_fdopen (void)
{
@@ -68,18 +67,18 @@ void nowarn_fdopen (void)
void warn_fdopen (void)
{
{
- FILE *q = fdopen (0); // { dg-message "returned from a call to 'fdopen'" "note" }
+ FILE *q = fdopen (0); // { dg-message "returned from 'fdopen'" "note" }
sink (q);
release (q); // { dg-warning "'release' called on pointer returned from a mismatched allocation function" }
}
{
- FILE *q = fdopen (0); // { dg-message "returned from a call to 'fdopen'" "note" }
+ FILE *q = fdopen (0); // { dg-message "returned from 'fdopen'" "note" }
sink (q);
free (q); // { dg-warning "'free' called on pointer returned from a mismatched allocation function" }
}
{
- FILE *q = fdopen (0); // { dg-message "returned from a call to 'fdopen'" "note" }
+ FILE *q = fdopen (0); // { dg-message "returned from 'fdopen'" "note" }
sink (q);
q = realloc (q, 7); // { dg-warning "'realloc' called on pointer returned from a mismatched allocation function" }
sink (q);
@@ -132,43 +131,104 @@ void warn_fopen (void)
}
-void test_popen (void)
+void test_freopen (FILE *p[])
{
{
- FILE *p = popen ("1", "r");
+ FILE *q = freopen ("1", "r", p[0]);
+ sink (q);
+ fclose (q);
+ }
+ {
+ FILE *q = freopen ("2", "r", p[1]);
+ sink (q);
+ q = freopen ("3", "r", q);
+ sink (q);
+ fclose (q);
+ }
+
+ {
+ FILE *q;
+ q = freopen ("3", "r", p[2]); // { dg-message "returned from 'freopen'" }
+ sink (q);
+ q = realloc (q, 7); // { dg-warning "'realloc' called on pointer returned from a mismatched allocation function" }
+ sink (q);
+ }
+}
+
+
+void test_tmpfile (void)
+{
+ {
+ FILE *p = tmpfile ();
sink (p);
- pclose (p);
+ fclose (p);
}
{
- FILE *p;
- p = popen ("2", "r"); // { dg-message "returned from a call to 'popen'" "note" }
+ FILE *p = tmpfile ();
sink (p);
- fclose (p); // { dg-warning "'fclose' called on pointer returned from a mismatched allocation function" }
+ p = freopen ("1", "r", p);
+ sink (p);
+ fclose (p);
}
{
- /* freopen() can close a stream open by popen() but pclose() can't
- close the stream returned from freopen(). */
- FILE *p = popen ("2", "r");
+ FILE *p = tmpfile (); // { dg-message "returned from 'tmpfile'" "note" }
sink (p);
- p = freopen ("3", "r", p); // { dg-message "returned from a call to 'freopen'" "note" }
+ pclose (p); // { dg-warning "'pclose' called on pointer returned from a mismatched allocation function" }
+ }
+}
+
+
+void test_open_memstream (char **bufp, size_t *sizep)
+{
+ {
+ FILE *p = open_memstream (bufp, sizep);
+ sink (p);
+ fclose (p);
+ }
+
+ {
+ FILE *p = open_memstream (bufp, sizep);
+ sink (p);
+ p = freopen ("1", "r", p);
+ sink (p);
+ fclose (p);
+ }
+
+ {
+ FILE *p;
+ p = open_memstream (bufp, sizep); // { dg-message "returned from 'open_memstream'" "note" }
sink (p);
pclose (p); // { dg-warning "'pclose' called on pointer returned from a mismatched allocation function" }
}
+
+ {
+ FILE *p;
+ p = open_memstream (bufp, sizep); // { dg-message "returned from 'open_memstream'" "note" }
+ sink (p);
+ free (p); // { dg-warning "'free' called on pointer returned from a mismatched allocation function" }
+ }
+
+ {
+ FILE *p;
+ p = open_memstream (bufp, sizep); // { dg-message "returned from 'open_memstream'" "note" }
+ sink (p);
+ release (p); // { dg-warning "'release' called on pointer returned from a mismatched allocation function" }
+ }
}
-void test_tmpfile (void)
+void test_open_wmemstream (char **bufp, size_t *sizep)
{
{
- FILE *p = tmpfile ();
+ FILE *p = open_wmemstream (bufp, sizep);
sink (p);
fclose (p);
}
{
- FILE *p = tmpfile ();
+ FILE *p = open_wmemstream (bufp, sizep);
sink (p);
p = freopen ("1", "r", p);
sink (p);
@@ -176,29 +236,44 @@ void test_tmpfile (void)
}
{
- FILE *p = tmpfile (); // { dg-message "returned from a call to 'tmpfile'" "note" }
+ FILE *p;
+ p = open_wmemstream (bufp, sizep); // { dg-message "returned from 'open_wmemstream'" "note" }
sink (p);
pclose (p); // { dg-warning "'pclose' called on pointer returned from a mismatched allocation function" }
}
+
+ {
+ FILE *p;
+ p = open_wmemstream (bufp, sizep); // { dg-message "returned from 'open_wmemstream'" "note" }
+ sink (p);
+ free (p); // { dg-warning "'free' called on pointer returned from a mismatched allocation function" }
+ }
+
+ {
+ FILE *p;
+ p = open_wmemstream (bufp, sizep); // { dg-message "returned from 'open_wmemstream'" "note" }
+ sink (p);
+ release (p); // { dg-warning "'release' called on pointer returned from a mismatched allocation function" }
+ }
}
void warn_malloc (void)
{
{
- FILE *p = malloc (100); // { dg-message "returned from a call to 'malloc'" "note" }
+ FILE *p = malloc (100); // { dg-message "returned from 'malloc'" "note" }
sink (p);
fclose (p); // { dg-warning "'fclose' called on pointer returned from a mismatched allocation function" }
}
{
- FILE *p = malloc (100); // { dg-message "returned from a call to 'malloc'" "note" }
+ FILE *p = malloc (100); // { dg-message "returned from 'malloc'" "note" }
sink (p);
p = freopen ("1", "r", p);// { dg-warning "'freopen' called on pointer returned from a mismatched allocation function" }
}
{
- FILE *p = malloc (100); // { dg-message "returned from a call to 'malloc'" "note" }
+ FILE *p = malloc (100); // { dg-message "returned from 'malloc'" "note" }
sink (p);
pclose (p); // { dg-warning "'pclose' called on pointer returned from a mismatched allocation function" }
}
@@ -219,32 +294,32 @@ void test_acquire (void)
}
{
- FILE *p = acquire (); // { dg-message "returned from a call to 'acquire'" "note" }
+ FILE *p = acquire (); // { dg-message "returned from 'acquire'" "note" }
sink (p);
fclose (p); // { dg-warning "'fclose' called on pointer returned from a mismatched allocation function" }
}
{
- FILE *p = acquire (); // { dg-message "returned from a call to 'acquire'" "note" }
+ FILE *p = acquire (); // { dg-message "returned from 'acquire'" "note" }
sink (p);
pclose (p); // { dg-warning "'pclose' called on pointer returned from a mismatched allocation function" }
}
{
- FILE *p = acquire (); // { dg-message "returned from a call to 'acquire'" "note" }
+ FILE *p = acquire (); // { dg-message "returned from 'acquire'" "note" }
sink (p);
p = freopen ("1", "r", p); // { dg-warning "'freopen' called on pointer returned from a mismatched allocation function" }
sink (p);
}
{
- FILE *p = acquire (); // { dg-message "returned from a call to 'acquire'" "note" }
+ FILE *p = acquire (); // { dg-message "returned from 'acquire'" "note" }
sink (p);
free (p); // { dg-warning "'free' called on pointer returned from a mismatched allocation function" }
}
{
- FILE *p = acquire (); // { dg-message "returned from a call to 'acquire'" "note" }
+ FILE *p = acquire (); // { dg-message "returned from 'acquire'" "note" }
sink (p);
p = realloc (p, 123); // { dg-warning "'realloc' called on pointer returned from a mismatched allocation function" }
sink (p);
diff --git a/gcc/testsuite/gcc.dg/Wstrict-overflow-25.c b/gcc/testsuite/gcc.dg/Wstrict-overflow-25.c
index 774474d..0091644 100644
--- a/gcc/testsuite/gcc.dg/Wstrict-overflow-25.c
+++ b/gcc/testsuite/gcc.dg/Wstrict-overflow-25.c
@@ -7,5 +7,5 @@
int
foo (int x, int y)
{
- return x - y < 0; /* { dg-warning "assuming signed overflow does not occur" "correct warning" { xfail *-*-* } } */
+ return x - y < 0; /* { dg-warning "assuming signed overflow does not occur" "correct warning" } */
}
diff --git a/gcc/testsuite/gcc.dg/Wvla-larger-than-4.c b/gcc/testsuite/gcc.dg/Wvla-larger-than-4.c
index de99afb..7d27829 100644
--- a/gcc/testsuite/gcc.dg/Wvla-larger-than-4.c
+++ b/gcc/testsuite/gcc.dg/Wvla-larger-than-4.c
@@ -17,14 +17,14 @@ static inline void inline_use_vla (unsigned n)
static inline void use_inlined_vla (unsigned n)
{
inline_use_vla (n); // this call is okay
- inline_use_vla (n + 1); // this one is not
+ inline_use_vla (n + 1); // this one is not (line 20)
}
void call_inline (void)
{
- use_inlined_vla (31);
+ use_inlined_vla (31); // line 25
}
/* Verify that the inlining context is included and that it points
to the correct line number in the inlined function:
- { dg-message "function 'inline_use_vla'..*inlined from 'call_inline' .*:20:" "" { target *-*-* } 0 } */
+ { dg-message "function 'inline_use_vla'.*inlined from 'use_inlined_vla'.*:20:.*inlined from 'call_inline' .*:25:" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/gcc.dg/analyzer/alloca-leak.c b/gcc/testsuite/gcc.dg/analyzer/alloca-leak.c
index 9331993..073f97e 100644
--- a/gcc/testsuite/gcc.dg/analyzer/alloca-leak.c
+++ b/gcc/testsuite/gcc.dg/analyzer/alloca-leak.c
@@ -1,10 +1,8 @@
/* { dg-require-effective-target alloca } */
-#include <alloca.h>
-
void *test (void)
{
- void *ptr = alloca (64);
+ void *ptr = __builtin_alloca (64);
return ptr;
}
/* TODO: warn about escaping alloca. */
diff --git a/gcc/testsuite/gcc.dg/analyzer/analyzer.exp b/gcc/testsuite/gcc.dg/analyzer/analyzer.exp
index d72fef3..e4b198b 100644
--- a/gcc/testsuite/gcc.dg/analyzer/analyzer.exp
+++ b/gcc/testsuite/gcc.dg/analyzer/analyzer.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2019 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/analyzer/attr-malloc-1.c b/gcc/testsuite/gcc.dg/analyzer/attr-malloc-1.c
new file mode 100644
index 0000000..3de32b1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/attr-malloc-1.c
@@ -0,0 +1,75 @@
+extern void free (void *);
+
+struct foo
+{
+ int m_int;
+};
+
+extern void foo_release (struct foo *);
+extern struct foo *foo_acquire (void)
+ __attribute__ ((malloc (foo_release)));
+extern void use_foo (const struct foo *)
+ __attribute__((nonnull));
+
+void test_1 (void)
+{
+ struct foo *p = foo_acquire ();
+ foo_release (p);
+}
+
+void test_2 (void)
+{
+ struct foo *p = foo_acquire (); /* { dg-message "this call could return NULL" } */
+ p->m_int = 42; /* { dg-warning "dereference of possibly-NULL 'p'" } */
+ foo_release (p);
+}
+
+void test_2a (void)
+{
+ struct foo *p = foo_acquire (); /* { dg-message "this call could return NULL" } */
+ use_foo (p); /* { dg-warning "use of possibly-NULL 'p' where non-null expected" } */
+ foo_release (p);
+}
+
+void test_3 (void)
+{
+ struct foo *p = foo_acquire (); /* { dg-message "allocated here" } */
+} /* { dg-warning "leak of 'p'" } */
+
+void test_4 (struct foo *p)
+{
+ foo_release (p);
+ foo_release (p); /* { dg-warning "double-'foo_release' of 'p'" } */
+}
+
+void test_4a (void)
+{
+ struct foo *p = foo_acquire ();
+ foo_release (p);
+ foo_release (p); /* { dg-warning "double-'foo_release' of 'p'" } */
+}
+
+void test_5 (void)
+{
+ struct foo *p = foo_acquire (); /* { dg-message "allocated here \\(expects deallocation with 'foo_release'\\)" } */
+ free (p); /* { dg-warning "'p' should have been deallocated with 'foo_release' but was deallocated with 'free'" } */
+}
+
+void test_6 (struct foo *p)
+{
+ foo_release (p);
+ free (p); // TODO: double-release warning!
+}
+
+void test_7 ()
+{
+ struct foo f;
+ foo_release (&f); /* { dg-warning "not on the heap" "analyzer" } */
+ /* { dg-warning "'foo_release' called on unallocated object 'f'" "non-analyzer" { target *-*-* } .-1 } */
+}
+
+int test_8 (struct foo *p)
+{
+ foo_release (p);
+ return p->m_int; /* { dg-warning "use after 'foo_release' of 'p'" } */
+}
diff --git a/gcc/testsuite/gcc.dg/analyzer/attr-malloc-2.c b/gcc/testsuite/gcc.dg/analyzer/attr-malloc-2.c
new file mode 100644
index 0000000..09d941f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/attr-malloc-2.c
@@ -0,0 +1,24 @@
+extern void free (void *);
+char *xstrdup (const char *)
+ __attribute__((malloc (free), returns_nonnull));
+
+void test_1 (const char *s)
+{
+ char *p = xstrdup (s);
+ free (p);
+}
+
+/* Verify that we don't issue -Wanalyzer-possible-null-dereference
+ when the allocator has __attribute__((returns_nonnull)). */
+
+char *test_2 (const char *s)
+{
+ char *p = xstrdup (s);
+ p[0] = 'a'; /* { dg-bogus "possibly-NULL" } */
+ return p;
+}
+
+void test_3 (const char *s)
+{
+ char *p = xstrdup (s); /* { dg-message "allocated here" } */
+} /* { dg-warning "leak of 'p'" } */
diff --git a/gcc/testsuite/gcc.dg/analyzer/attr-malloc-4.c b/gcc/testsuite/gcc.dg/analyzer/attr-malloc-4.c
new file mode 100644
index 0000000..1517667
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/attr-malloc-4.c
@@ -0,0 +1,21 @@
+/* An example where the deallocator requires non-NULL. */
+
+struct foo;
+extern void foo_release (struct foo *)
+ __attribute__((nonnull));
+extern struct foo *foo_acquire (void)
+ __attribute__ ((malloc (foo_release)));
+
+void test_1 (void)
+{
+ struct foo *p = foo_acquire (); /* { dg-message "this call could return NULL" } */
+ foo_release (p); /* { dg-warning "use of possibly-NULL 'p' where non-null" } */
+}
+
+void test_2 (void)
+{
+ struct foo *p = foo_acquire ();
+ if (!p)
+ return;
+ foo_release (p);
+}
diff --git a/gcc/testsuite/gcc.dg/analyzer/attr-malloc-5.c b/gcc/testsuite/gcc.dg/analyzer/attr-malloc-5.c
new file mode 100644
index 0000000..7ff4e57
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/attr-malloc-5.c
@@ -0,0 +1,12 @@
+/* Example of extra argument to "malloc" attribute. */
+
+struct foo;
+extern void foo_release (int, struct foo *);
+extern struct foo *foo_acquire (void)
+ __attribute__ ((malloc (foo_release, 2)));
+
+void test_1 (void)
+{
+ struct foo *p = foo_acquire ();
+ foo_release (0, p);
+}
diff --git a/gcc/testsuite/gcc.dg/analyzer/attr-malloc-6.c b/gcc/testsuite/gcc.dg/analyzer/attr-malloc-6.c
new file mode 100644
index 0000000..bd28107
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/attr-malloc-6.c
@@ -0,0 +1,228 @@
+/* Adapted from gcc.dg/Wmismatched-dealloc.c. */
+
+#define A(...) __attribute__ ((malloc (__VA_ARGS__)))
+
+typedef struct FILE FILE;
+typedef __SIZE_TYPE__ size_t;
+
+void free (void*);
+void* malloc (size_t);
+void* realloc (void*, size_t);
+
+int fclose (FILE*);
+FILE* freopen (const char*, const char*, FILE*);
+int pclose (FILE*);
+
+A (fclose) A (freopen, 3)
+ FILE* fdopen (int);
+A (fclose) A (freopen, 3)
+ FILE* fopen (const char*, const char*);
+A (fclose) A (freopen, 3)
+ FILE* fmemopen(void *, size_t, const char *);
+A (fclose) A (freopen, 3)
+ FILE* freopen (const char*, const char*, FILE*);
+A (pclose) A (freopen, 3)
+ FILE* popen (const char*, const char*);
+A (fclose) A (freopen, 3)
+ FILE* tmpfile (void);
+
+void sink (FILE*);
+
+
+ void release (void*);
+A (release) FILE* acquire (void);
+
+void nowarn_fdopen (void)
+{
+ {
+ FILE *q = fdopen (0);
+ if (!q)
+ return;
+
+ fclose (q);
+ }
+
+ {
+ FILE *q = fdopen (0);
+ if (!q)
+ return;
+
+ q = freopen ("1", "r", q);
+ fclose (q);
+ }
+
+ {
+ FILE *q = fdopen (0);
+ if (!q)
+ return;
+
+ sink (q);
+ }
+}
+
+
+void warn_fdopen (void)
+{
+ {
+ FILE *q = fdopen (0); // { dg-message "allocated here" }
+ release (q); // { dg-warning "'release' called on 'q' returned from a mismatched allocation function" }
+ }
+ {
+ FILE *q = fdopen (0); // { dg-message "allocated here" }
+ free (q); // { dg-warning "'free' called on 'q' returned from a mismatched allocation function" }
+ }
+
+ {
+ FILE *q = fdopen (0); // { dg-message "allocated here" }
+ q = realloc (q, 7); // { dg-warning "'realloc' called on 'q' returned from a mismatched allocation function" }
+ sink (q);
+ }
+}
+
+
+void nowarn_fopen (void)
+{
+ {
+ FILE *q = fopen ("1", "r");
+ sink (q);
+ fclose (q);
+ }
+
+ {
+ FILE *q = fopen ("2", "r");
+ sink (q);
+ q = freopen ("3", "r", q);
+ sink (q);
+ fclose (q);
+ }
+
+ {
+ FILE *q = fopen ("4", "r");
+ sink (q);
+ }
+}
+
+
+void warn_fopen (void)
+{
+ {
+ FILE *q = fopen ("1", "r");
+ release (q); // { dg-warning "'release' called on 'q' returned from a mismatched allocation function" }
+ fclose (q);
+ }
+ {
+ FILE *q = fdopen (0);
+ free (q); // { dg-warning "'free' called on 'q' returned from a mismatched allocation function" }
+ }
+
+ {
+ FILE *q = fdopen (0);
+ q = realloc (q, 7); // { dg-warning "'realloc' called on 'q' returned from a mismatched allocation function" }
+ sink (q);
+ }
+}
+
+
+void test_popen (void)
+{
+ {
+ FILE *p = popen ("1", "r");
+ sink (p);
+ pclose (p);
+ }
+
+ {
+ FILE *p;
+ p = popen ("2", "r"); // { dg-message "allocated here" }
+ fclose (p); // { dg-warning "'fclose' called on 'p' returned from a mismatched allocation function" }
+ }
+
+ {
+ /* freopen() can close a stream open by popen() but pclose() can't
+ close the stream returned from freopen(). */
+ FILE *p = popen ("2", "r");
+ p = freopen ("3", "r", p); // { dg-message "allocated here" }
+ pclose (p); // { dg-warning "'pclose' called on 'p' returned from a mismatched allocation function" }
+ }
+}
+
+
+void test_tmpfile (void)
+{
+ {
+ FILE *p = tmpfile ();
+ fclose (p);
+ }
+
+ {
+ FILE *p = tmpfile ();
+ p = freopen ("1", "r", p);
+ fclose (p);
+ }
+
+ {
+ FILE *p = tmpfile (); // { dg-message "allocated here" }
+ pclose (p); // { dg-warning "'pclose' called on 'p' returned from a mismatched allocation function" }
+ }
+}
+
+
+void warn_malloc (void)
+{
+ {
+ FILE *p = malloc (100); // { dg-message "allocated here" }
+ fclose (p); // { dg-warning "'p' should have been deallocated with 'free' but was deallocated with 'fclose'" }
+ }
+
+ {
+ FILE *p = malloc (100); // { dg-message "allocated here" }
+ p = freopen ("1", "r", p);// { dg-warning "'p' should have been deallocated with 'free' but was deallocated with 'freopen'" }
+ fclose (p);
+ }
+
+ {
+ FILE *p = malloc (100); // { dg-message "allocated here" }
+ pclose (p); // { dg-warning "'p' should have been deallocated with 'free' but was deallocated with 'pclose'" }
+ }
+}
+
+
+void test_acquire (void)
+{
+ {
+ FILE *p = acquire ();
+ release (p);
+ }
+
+ {
+ FILE *p = acquire ();
+ release (p);
+ }
+
+ {
+ FILE *p = acquire (); // { dg-message "allocated here \\(expects deallocation with 'release'\\)" }
+ fclose (p); // { dg-warning "'p' should have been deallocated with 'release' but was deallocated with 'fclose'" }
+ }
+
+ {
+ FILE *p = acquire (); // { dg-message "allocated here \\(expects deallocation with 'release'\\)" }
+ pclose (p); // { dg-warning "'p' should have been deallocated with 'release' but was deallocated with 'pclose'" }
+ }
+
+ {
+ FILE *p = acquire (); // { dg-message "allocated here \\(expects deallocation with 'release'\\)" }
+ p = freopen ("1", "r", p); // { dg-warning "'p' should have been deallocated with 'release' but was deallocated with 'freopen'" }
+ sink (p);
+ }
+
+ {
+ FILE *p = acquire (); // { dg-message "allocated here \\(expects deallocation with 'release'\\)" }
+ free (p); // { dg-warning "'p' should have been deallocated with 'release' but was deallocated with 'free'" }
+ }
+
+ {
+ FILE *p = acquire (); // { dg-message "allocated here \\(expects deallocation with 'release'\\)" }
+ p = realloc (p, 123); // { dg-warning "'p' should have been deallocated with 'release' but was deallocated with 'realloc'" }
+ sink (p);
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/analyzer/attr-malloc-CVE-2019-19078-usb-leak.c b/gcc/testsuite/gcc.dg/analyzer/attr-malloc-CVE-2019-19078-usb-leak.c
new file mode 100644
index 0000000..905d50e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/attr-malloc-CVE-2019-19078-usb-leak.c
@@ -0,0 +1,224 @@
+/* Adapted from linux 5.3.11: drivers/net/wireless/ath/ath10k/usb.c
+ Reduced reproducer for CVE-2019-19078 (leak of struct urb). */
+
+typedef unsigned char u8;
+typedef unsigned short u16;
+typedef _Bool bool;
+
+#define ENOMEM 12
+#define EINVAL 22
+
+/* The original file has this licence header. */
+
+// SPDX-License-Identifier: ISC
+/*
+ * Copyright (c) 2007-2011 Atheros Communications Inc.
+ * Copyright (c) 2011-2012,2017 Qualcomm Atheros, Inc.
+ * Copyright (c) 2016-2017 Erik Stromdahl <erik.stromdahl@gmail.com>
+ */
+
+/* Adapted from include/linux/compiler_attributes.h. */
+#define __aligned(x) __attribute__((__aligned__(x)))
+#define __printf(a, b) __attribute__((__format__(printf, a, b)))
+
+/* Possible macro for the new attribute. */
+#define __malloc(f) __attribute__((malloc(f)));
+
+/* From include/linux/types.h. */
+
+typedef unsigned int gfp_t;
+
+/* Not the real value, which is in include/linux/gfp.h. */
+#define GFP_ATOMIC 32
+
+/* From include/linux/usb.h. */
+
+struct urb;
+extern void usb_free_urb(struct urb *urb);
+extern struct urb *usb_alloc_urb(int iso_packets, gfp_t mem_flags)
+ __malloc(usb_free_urb);
+/* attribute added as part of testcase */
+
+extern int usb_submit_urb(/*struct urb *urb, */gfp_t mem_flags);
+extern void usb_unanchor_urb(struct urb *urb);
+
+/* From drivers/net/wireless/ath/ath10k/core.h. */
+
+struct ath10k;
+
+struct ath10k {
+ /* [...many other fields removed...] */
+
+ /* must be last */
+ u8 drv_priv[0] __aligned(sizeof(void *));
+};
+
+/* From drivers/net/wireless/ath/ath10k/debug.h. */
+
+enum ath10k_debug_mask {
+ /* [...other values removed...] */
+ ATH10K_DBG_USB_BULK = 0x00080000,
+};
+
+extern unsigned int ath10k_debug_mask;
+
+__printf(3, 4) void __ath10k_dbg(struct ath10k *ar,
+ enum ath10k_debug_mask mask,
+ const char *fmt, ...);
+
+/* Simplified for now, to avoid pulling in tracepoint code. */
+static inline
+bool trace_ath10k_log_dbg_enabled(void) { return 0; }
+
+#define ath10k_dbg(ar, dbg_mask, fmt, ...) \
+do { \
+ if ((ath10k_debug_mask & dbg_mask) || \
+ trace_ath10k_log_dbg_enabled()) \
+ __ath10k_dbg(ar, dbg_mask, fmt, ##__VA_ARGS__); \
+} while (0)
+
+/* From drivers/net/wireless/ath/ath10k/hif.h. */
+
+struct ath10k_hif_sg_item {
+ /* [...other fields removed...] */
+ void *transfer_context; /* NULL = tx completion callback not called */
+};
+
+struct ath10k_hif_ops {
+ /* send a scatter-gather list to the target */
+ int (*tx_sg)(struct ath10k *ar, u8 pipe_id,
+ struct ath10k_hif_sg_item *items, int n_items);
+ /* [...other fields removed...] */
+};
+
+/* From drivers/net/wireless/ath/ath10k/usb.h. */
+
+/* tx/rx pipes for usb */
+enum ath10k_usb_pipe_id {
+ /* [...other values removed...] */
+ ATH10K_USB_PIPE_MAX = 8
+};
+
+struct ath10k_usb_pipe {
+ /* [...all fields removed...] */
+};
+
+/* usb device object */
+struct ath10k_usb {
+ /* [...other fields removed...] */
+ struct ath10k_usb_pipe pipes[ATH10K_USB_PIPE_MAX];
+};
+
+/* usb urb object */
+struct ath10k_urb_context {
+ /* [...other fields removed...] */
+ struct ath10k_usb_pipe *pipe;
+ struct sk_buff *skb;
+};
+
+static inline struct ath10k_usb *ath10k_usb_priv(struct ath10k *ar)
+{
+ return (struct ath10k_usb *)ar->drv_priv;
+}
+
+/* The source file. */
+
+static void ath10k_usb_post_recv_transfers(struct ath10k *ar,
+ struct ath10k_usb_pipe *recv_pipe);
+
+struct ath10k_urb_context *
+ath10k_usb_alloc_urb_from_pipe(struct ath10k_usb_pipe *pipe);
+
+void ath10k_usb_free_urb_to_pipe(struct ath10k_usb_pipe *pipe,
+ struct ath10k_urb_context *urb_context);
+
+static int ath10k_usb_hif_tx_sg(struct ath10k *ar, u8 pipe_id,
+ struct ath10k_hif_sg_item *items, int n_items)
+{
+ struct ath10k_usb *ar_usb = ath10k_usb_priv(ar);
+ struct ath10k_usb_pipe *pipe = &ar_usb->pipes[pipe_id];
+ struct ath10k_urb_context *urb_context;
+ struct sk_buff *skb;
+ struct urb *urb;
+ int ret, i;
+
+ for (i = 0; i < n_items; i++) {
+ urb_context = ath10k_usb_alloc_urb_from_pipe(pipe);
+ if (!urb_context) {
+ ret = -ENOMEM;
+ goto err;
+ }
+
+ skb = items[i].transfer_context;
+ urb_context->skb = skb;
+
+ urb = usb_alloc_urb(0, GFP_ATOMIC); /* { dg-message "allocated here" } */
+ if (!urb) {
+ ret = -ENOMEM;
+ goto err_free_urb_to_pipe;
+ }
+
+ /* TODO: these are disabled, otherwise we conservatively
+ assume that they could free urb. */
+#if 0
+ usb_fill_bulk_urb(urb,
+ ar_usb->udev,
+ pipe->usb_pipe_handle,
+ skb->data,
+ skb->len,
+ ath10k_usb_transmit_complete, urb_context);
+ if (!(skb->len % pipe->max_packet_size)) {
+ /* hit a max packet boundary on this pipe */
+ urb->transfer_flags |= URB_ZERO_PACKET;
+ }
+
+ usb_anchor_urb(urb, &pipe->urb_submitted);
+#endif
+ /* TODO: initial argument disabled, otherwise we conservatively
+ assume that it could free urb. */
+ ret = usb_submit_urb(/*urb, */GFP_ATOMIC);
+ if (ret) { /* TODO: why doesn't it show this condition at default verbosity? */
+ ath10k_dbg(ar, ATH10K_DBG_USB_BULK,
+ "usb bulk transmit failed: %d\n", ret);
+
+ /* TODO: this is disabled, otherwise we conservatively
+ assume that it could free urb. */
+#if 0
+ usb_unanchor_urb(urb);
+#endif
+
+ ret = -EINVAL;
+ /* Leak of urb happens here. */
+ goto err_free_urb_to_pipe;
+ }
+
+ /* TODO: the loop confuses the double-free checker (another
+ instance of PR analyzer/93695). */
+ usb_free_urb(urb); /* { dg-bogus "double-'usb_free_urb' of 'urb'" "" { xfail *-*-* } } */
+ }
+
+ return 0;
+
+err_free_urb_to_pipe:
+ ath10k_usb_free_urb_to_pipe(urb_context->pipe, urb_context);
+err:
+ return ret; /* { dg-warning "leak of 'urb'" } */
+}
+
+static const struct ath10k_hif_ops ath10k_usb_hif_ops = {
+ .tx_sg = ath10k_usb_hif_tx_sg,
+};
+
+/* Simulate code to register the callback. */
+extern void callback_registration (const void *);
+int ath10k_usb_probe(void)
+{
+ callback_registration(&ath10k_usb_hif_ops);
+}
+
+
+/* The original source file ends with:
+MODULE_AUTHOR("Atheros Communications, Inc.");
+MODULE_DESCRIPTION("Driver support for Qualcomm Atheros 802.11ac WLAN USB devices");
+MODULE_LICENSE("Dual BSD/GPL");
+*/
diff --git a/gcc/testsuite/gcc.dg/analyzer/attr-malloc-misuses.c b/gcc/testsuite/gcc.dg/analyzer/attr-malloc-misuses.c
new file mode 100644
index 0000000..3c6c17b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/attr-malloc-misuses.c
@@ -0,0 +1,18 @@
+extern void free (void *);
+
+int not_a_fn __attribute__ ((malloc (free))); /* { dg-warning "'malloc' attribute ignored; valid only for functions" } */
+
+void void_return (void) __attribute__ ((malloc(free))); /* { dg-warning "'malloc' attribute ignored on functions returning 'void'" } */
+
+void test_void_return (void)
+{
+ void_return ();
+}
+
+extern void void_args (void); /* { dg-message "declared here" } */
+void *has_malloc_with_void_args (void)
+ __attribute__ ((malloc(void_args))); /* { dg-error "'malloc' attribute argument 1 must take a pointer type as its first argument; have 'void'" } */
+
+extern void no_args (); /* { dg-message "declared here" } */
+void *has_malloc_with_no_args (void)
+ __attribute__ ((malloc(no_args))); /* { dg-error "'malloc' attribute argument 1 must take a pointer type as its first argument" } */
diff --git a/gcc/testsuite/gcc.dg/analyzer/combined-conditionals-1.c b/gcc/testsuite/gcc.dg/analyzer/combined-conditionals-1.c
new file mode 100644
index 0000000..caac267
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/combined-conditionals-1.c
@@ -0,0 +1,55 @@
+/* Verify that we correctly consolidate conditionals in paths. */
+
+#include "analyzer-decls.h"
+
+extern int foo ();
+extern int bar ();
+extern int baz ();
+
+void test_1 (int a, int b, int c)
+{
+ if (a && b && c) /* { dg-message "\\(1\\) following 'true' branch\\.\\.\\." } */
+ __analyzer_dump_path (); /* { dg-message "\\(2\\) \\.\\.\\.to here" } */
+}
+
+void test_2 (int a, int b, int c)
+{
+ if (a && b) /* { dg-message "\\(1\\) following 'true' branch\\.\\.\\." } */
+ if (c) /* { dg-message "\\(2\\) \\.\\.\\.to here" } */
+ __analyzer_dump_path ();
+}
+
+void test_3 (int a, int b, int c)
+{
+ if (a) /* { dg-message "\\(1\\) following 'true' branch" } */
+ if (b && c) /* { dg-message "\\(2\\) \\.\\.\\.to here" } */
+ __analyzer_dump_path ();
+}
+
+void test_4 (void)
+{
+ while (foo () && bar ()) /* { dg-message "\\(1\\) following 'true' branch\\.\\.\\." } */
+ __analyzer_dump_path (); /* { dg-message "\\(2\\) \\.\\.\\.to here" } */
+}
+
+void test_5 (int a, int b, int c)
+{
+ if (a || b || c) /* { dg-message "\\(1\\) following 'false' branch\\.\\.\\." } */
+ {
+ }
+ else
+ __analyzer_dump_path (); /* { dg-message "\\(2\\) \\.\\.\\.to here" } */
+}
+
+void test_6 (void)
+{
+ int i;
+ for (i = 0; i < 10 && foo (); i++) /* { dg-message "\\(1\\) following 'true' branch\\.\\.\\." } */
+ __analyzer_dump_path (); /* { dg-message "\\(2\\) \\.\\.\\.to here" } */
+}
+
+int test_7 (void)
+{
+ if (foo () ? bar () ? baz () : 0 : 0) /* { dg-message "\\(1\\) following 'true' branch\\.\\.\\." } */
+ __analyzer_dump_path (); /* { dg-message "\\(2\\) \\.\\.\\.to here" } */
+}
diff --git a/gcc/testsuite/gcc.dg/analyzer/conditionals-3.c b/gcc/testsuite/gcc.dg/analyzer/conditionals-3.c
index 5f29f21..f1c6c20 100644
--- a/gcc/testsuite/gcc.dg/analyzer/conditionals-3.c
+++ b/gcc/testsuite/gcc.dg/analyzer/conditionals-3.c
@@ -2,12 +2,12 @@
#include "analyzer-decls.h"
-static void only_called_when_flag_a_true (int i)
+static void __analyzer_only_called_when_flag_a_true (int i)
{
__analyzer_eval (i == 42); /* { dg-warning "TRUE" } */
}
-static void only_called_when_flag_b_true (int i)
+static void __analyzer_only_called_when_flag_b_true (int i)
{
__analyzer_eval (i == 17); /* { dg-warning "TRUE" } */
}
@@ -34,7 +34,7 @@ int test_1 (int flag_a, int flag_b)
__analyzer_eval (flag_b); /* { dg-warning "UNKNOWN" } */
__analyzer_eval (i == 42); /* { dg-warning "TRUE" } */
__analyzer_eval (i == 17); /* { dg-warning "FALSE" } */
- only_called_when_flag_a_true (i);
+ __analyzer_only_called_when_flag_a_true (i);
}
else
{
@@ -42,6 +42,6 @@ int test_1 (int flag_a, int flag_b)
__analyzer_eval (flag_b); /* { dg-warning "UNKNOWN" } */
__analyzer_eval (i == 42); /* { dg-warning "FALSE" } */
__analyzer_eval (i == 17); /* { dg-warning "TRUE" } */
- only_called_when_flag_b_true (i);
+ __analyzer_only_called_when_flag_b_true (i);
}
}
diff --git a/gcc/testsuite/gcc.dg/analyzer/data-model-1.c b/gcc/testsuite/gcc.dg/analyzer/data-model-1.c
index 3f16a38..afd1556 100644
--- a/gcc/testsuite/gcc.dg/analyzer/data-model-1.c
+++ b/gcc/testsuite/gcc.dg/analyzer/data-model-1.c
@@ -3,7 +3,6 @@
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
-#include <alloca.h>
#include "analyzer-decls.h"
struct foo
@@ -140,8 +139,8 @@ void test_11 (void)
void test_12 (void)
{
- void *p = alloca (256);
- void *q = alloca (256);
+ void *p = __builtin_alloca (256);
+ void *q = __builtin_alloca (256);
/* alloca results should be unique. */
__analyzer_eval (p == q); /* { dg-warning "FALSE" } */
@@ -783,7 +782,7 @@ void test_33 (void)
}
static int __attribute__((noinline))
-only_called_by_test_34 (int parm)
+__analyzer_only_called_by_test_34 (int parm)
{
__analyzer_eval (parm == 42); /* { dg-warning "TRUE" } */
@@ -792,7 +791,7 @@ only_called_by_test_34 (int parm)
void test_34 (void)
{
- int result = only_called_by_test_34 (42);
+ int result = __analyzer_only_called_by_test_34 (42);
__analyzer_eval (result == 84); /* { dg-warning "TRUE" } */
}
diff --git a/gcc/testsuite/gcc.dg/analyzer/feasibility-1.c b/gcc/testsuite/gcc.dg/analyzer/feasibility-1.c
index f2a8a4c..c968444 100644
--- a/gcc/testsuite/gcc.dg/analyzer/feasibility-1.c
+++ b/gcc/testsuite/gcc.dg/analyzer/feasibility-1.c
@@ -60,3 +60,29 @@ int test_6 (int a, int b)
}
return problem;
}
+
+/* As above, but call a static function.
+ Even if the path to the call of called_by_test_6a is falsely rejected
+ as infeasible, it still makes sense to complain about errors within
+ the called function. */
+
+static void __attribute__((noinline))
+called_by_test_6a (void *ptr)
+{
+ __builtin_free (ptr);
+ __builtin_free (ptr); /* { dg-message "double-'free'" } */
+}
+
+int test_6a (int a, int b, void *ptr)
+{
+ int problem = 0;
+ if (a)
+ problem = 1;
+ if (b)
+ {
+ if (!problem)
+ problem = 2;
+ called_by_test_6a (ptr);
+ }
+ return problem;
+}
diff --git a/gcc/testsuite/gcc.dg/analyzer/malloc-1.c b/gcc/testsuite/gcc.dg/analyzer/malloc-1.c
index 26d8288..448b8558 100644
--- a/gcc/testsuite/gcc.dg/analyzer/malloc-1.c
+++ b/gcc/testsuite/gcc.dg/analyzer/malloc-1.c
@@ -1,6 +1,5 @@
/* { dg-require-effective-target alloca } */
-#include <alloca.h>
#include <stdlib.h>
extern int foo (void);
@@ -273,7 +272,7 @@ int *test_23a (int n)
int test_24 (void)
{
- void *ptr = alloca (sizeof (int)); /* { dg-message "memory is allocated on the stack here" } */
+ void *ptr = __builtin_alloca (sizeof (int)); /* { dg-message "memory is allocated on the stack here" } */
free (ptr); /* { dg-warning "'free' of memory allocated on the stack by 'alloca' \\('ptr'\\) will corrupt the heap \\\[CWE-590\\\]" } */
}
diff --git a/gcc/testsuite/gcc.dg/analyzer/malloc-paths-8.c b/gcc/testsuite/gcc.dg/analyzer/malloc-paths-8.c
index 35c9385..9a7c414 100644
--- a/gcc/testsuite/gcc.dg/analyzer/malloc-paths-8.c
+++ b/gcc/testsuite/gcc.dg/analyzer/malloc-paths-8.c
@@ -2,7 +2,6 @@
/* { dg-require-effective-target alloca } */
#include <stddef.h>
-#include <alloca.h>
#include <stdlib.h>
extern void do_stuff (const void *);
@@ -15,7 +14,7 @@ void test_1 (size_t sz)
if (sz >= LIMIT)
ptr = malloc (sz);
else
- ptr = alloca (sz);
+ ptr = __builtin_alloca (sz);
do_stuff (ptr);
@@ -27,7 +26,7 @@ void test_2 (size_t sz)
{
void *ptr;
if (sz < LIMIT)
- ptr = alloca (sz);
+ ptr = __builtin_alloca (sz);
else
ptr = malloc (sz);
@@ -41,7 +40,7 @@ void test_3 (size_t sz)
{
void *ptr;
if (sz <= LIMIT)
- ptr = alloca (sz); /* { dg-message "memory is allocated on the stack here" } */
+ ptr = __builtin_alloca (sz); /* { dg-message "memory is allocated on the stack here" } */
else
ptr = malloc (sz);
diff --git a/gcc/testsuite/gcc.dg/analyzer/params.c b/gcc/testsuite/gcc.dg/analyzer/params.c
index f8331dd..12bba70 100644
--- a/gcc/testsuite/gcc.dg/analyzer/params.c
+++ b/gcc/testsuite/gcc.dg/analyzer/params.c
@@ -1,6 +1,6 @@
#include "analyzer-decls.h"
-static int called_function(int j)
+static int __analyzer_called_function(int j)
{
int k;
@@ -23,7 +23,7 @@ void test(int i)
__analyzer_eval (i > 4); /* { dg-warning "TRUE" } */
- i = called_function(i);
+ i = __analyzer_called_function(i);
__analyzer_eval (i > 3); /* { dg-warning "TRUE" "desired" { xfail *-*-* } } */
/* { dg-warning "UNKNOWN" "status quo" { target *-*-* } .-1 } */
diff --git a/gcc/testsuite/gcc.dg/analyzer/pr93355-localealias-feasibility-2.c b/gcc/testsuite/gcc.dg/analyzer/pr93355-localealias-feasibility-2.c
new file mode 100644
index 0000000..1afc6df
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/pr93355-localealias-feasibility-2.c
@@ -0,0 +1,31 @@
+/* Simplified version of test to ensure we issue a FILE * leak diagnostic,
+ reproducing a feasibility issue.
+ Adapted from intl/localealias.c, with all #includes removed. */
+
+/* { dg-do "compile" } */
+
+#include "analyzer-decls.h"
+
+#define NULL ((void *) 0)
+#define PATH_SEPARATOR ':'
+#define LOCALE_ALIAS_PATH "value for LOCALE_ALIAS_PATH"
+
+const char *
+_nl_expand_alias (void)
+{
+ static const char *locale_alias_path;
+
+ if (locale_alias_path == NULL)
+ locale_alias_path = LOCALE_ALIAS_PATH;
+
+ const char *start = locale_alias_path;
+
+ while (locale_alias_path[0] != '\0'
+ && locale_alias_path[0] != PATH_SEPARATOR)
+ ++locale_alias_path;
+
+ if (start < locale_alias_path)
+ __analyzer_dump_path (); /* { dg-message "path" "" { xfail *-*-* } } */
+ /* XFAIL: PR analyzer/96374
+ Use -fno-analyzer-feasibility to see the path. */
+}
diff --git a/gcc/testsuite/gcc.dg/analyzer/pr93355-localealias-feasibility-3.c b/gcc/testsuite/gcc.dg/analyzer/pr93355-localealias-feasibility-3.c
new file mode 100644
index 0000000..a864831
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/pr93355-localealias-feasibility-3.c
@@ -0,0 +1,64 @@
+/* Simplified version of test to ensure we issue a FILE * leak diagnostic,
+ reproducing a feasibility issue.
+ Adapted from intl/localealias.c, with all #includes removed. */
+
+/* { dg-do "compile" } */
+
+/* Handle aliases for locale names.
+ Copyright (C) 1995-1999, 2000-2001, 2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Library General Public License as published
+ by the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301,
+ USA. */
+
+/* Minimal version of system headers. */
+
+typedef __SIZE_TYPE__ size_t;
+#define NULL ((void *)0)
+
+typedef struct _IO_FILE FILE;
+extern FILE *fopen (const char *__restrict __filename,
+ const char *__restrict __modes);
+extern int fclose (FILE *__stream);
+
+extern int isspace (int) __attribute__((__nothrow__, __leaf__));
+
+/* Cleaned-up body of localealias.c follows. */
+
+size_t
+read_alias_file (const char *fname, char *cp)
+{
+ FILE *fp;
+
+ fp = fopen (fname, "r"); /* { dg-message "opened here" "" { xfail *-*-* } } */
+ /* XFAIL: PR analyzer/96374
+ Use -fno-analyzer-feasibility to see the path. */
+ if (fp == NULL)
+ return 0;
+
+ if (cp[0] != '\0')
+ *cp++ = '\0';
+
+ while (isspace ((unsigned char)cp[0]))
+ ++cp;
+
+ if (cp[0] != '\0')
+ return 42; /* { dg-warning "leak of FILE 'fp'" "" { xfail *-*-* } } */
+ /* XFAIL: PR analyzer/96374
+ Use -fno-analyzer-feasibility to see the path. */
+
+ fclose(fp);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/analyzer/pr94851-1.c b/gcc/testsuite/gcc.dg/analyzer/pr94851-1.c
index da79652..34960e2 100644
--- a/gcc/testsuite/gcc.dg/analyzer/pr94851-1.c
+++ b/gcc/testsuite/gcc.dg/analyzer/pr94851-1.c
@@ -40,8 +40,7 @@ int pamark(void) {
last->m_next = p;
}
- p->m_name = (char)c; /* { dg-bogus "leak of 'p'" "bogus leak" { xfail *-*-* } } */
- // TODO(xfail): related to PR analyzer/97072 and PR analyzer/97074
+ p->m_name = (char)c; /* { dg-bogus "leak of 'p'" "bogus leak" } */
return 1;
}
diff --git a/gcc/testsuite/gcc.dg/analyzer/pr96651-2.c b/gcc/testsuite/gcc.dg/analyzer/pr96651-2.c
index 249a32b..25cda37 100644
--- a/gcc/testsuite/gcc.dg/analyzer/pr96651-2.c
+++ b/gcc/testsuite/gcc.dg/analyzer/pr96651-2.c
@@ -26,7 +26,7 @@ void test (void)
}
static void __attribute__((noinline))
-called_from_main (void)
+__analyzer_called_from_main (void)
{
/* When accessed from main, the vars still have their initializer values. */
__analyzer_eval (a == 0); /* { dg-warning "TRUE" } */
@@ -53,7 +53,7 @@ int main (void)
before "main"). */
__analyzer_eval (stderr == 0); /* { dg-warning "UNKNOWN" } */
- called_from_main ();
+ __analyzer_called_from_main ();
unknown_fn (&a, &c);
diff --git a/gcc/testsuite/gcc.dg/analyzer/pr97072.c b/gcc/testsuite/gcc.dg/analyzer/pr97072.c
new file mode 100644
index 0000000..4024124
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/pr97072.c
@@ -0,0 +1,9 @@
+void unknown_fn_1 (void *);
+
+void test_1 (int co, int y)
+{
+ void *p = __builtin_malloc (1024);
+ void **q;
+ unknown_fn_1 (&q);
+ *q = p;
+}
diff --git a/gcc/testsuite/gcc.dg/analyzer/pr97074.c b/gcc/testsuite/gcc.dg/analyzer/pr97074.c
new file mode 100644
index 0000000..ccb3b61
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/pr97074.c
@@ -0,0 +1,32 @@
+#include "analyzer-decls.h"
+#define NULL ((void *)0)
+
+void *x, *y;
+
+void test_1 (int flag)
+{
+ void *p = __builtin_malloc (1024);
+ if (flag)
+ x = p;
+ else
+ y = p;
+} /* { dg-bogus "leak" } */
+
+struct s2
+{
+ void *f1;
+ void *f2;
+};
+
+struct s2 test_2 (int flag)
+{
+ struct s2 r;
+ r.f1 = NULL;
+ r.f2 = NULL;
+ void *p = __builtin_malloc (1024);
+ if (flag)
+ r.f1 = p;
+ else
+ r.f2 = p;
+ return r;
+}
diff --git a/gcc/testsuite/gcc.dg/analyzer/pr98073.c b/gcc/testsuite/gcc.dg/analyzer/pr98073.c
new file mode 100644
index 0000000..abbda09
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/pr98073.c
@@ -0,0 +1,13 @@
+struct ist {
+ char ptr;
+ long len;
+} __trans_tmp_1, http_update_host_authority;
+int http_update_host_sl_0_0_0;
+void http_update_host(const struct ist uri) {
+ uri.len || uri.ptr;
+ if (http_update_host_sl_0_0_0) {
+ http_update_host_authority = __trans_tmp_1;
+ !http_update_host_authority.len;
+ } else
+ http_update_host_authority = uri;
+}
diff --git a/gcc/testsuite/gcc.dg/analyzer/pr98293.c b/gcc/testsuite/gcc.dg/analyzer/pr98293.c
new file mode 100644
index 0000000..f750c90
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/pr98293.c
@@ -0,0 +1,2 @@
+/* { dg-additional-options "-fsanitize=undefined" } */
+#include "../pr93399.c"
diff --git a/gcc/testsuite/gcc.dg/analyzer/pr98564.c b/gcc/testsuite/gcc.dg/analyzer/pr98564.c
new file mode 100644
index 0000000..74b1abe
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/pr98564.c
@@ -0,0 +1,6 @@
+void *calloc (__SIZE_TYPE__, __SIZE_TYPE__);
+
+void test_1 (void)
+{
+ int *p = calloc (0, 1); /* { dg-message "allocated here" } */
+} /* { dg-warning "leak of 'p'" } */
diff --git a/gcc/testsuite/gcc.dg/analyzer/pr98580-a.c b/gcc/testsuite/gcc.dg/analyzer/pr98580-a.c
new file mode 100644
index 0000000..d2b10d6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/pr98580-a.c
@@ -0,0 +1,9 @@
+/* { dg-do link } */
+/* { dg-require-effective-target lto } */
+/* { dg-additional-options "-flto" } */
+/* { dg-additional-sources pr98580-b.c } */
+
+int a;
+int *p = &a;
+int foo();
+int main() { return foo(); }
diff --git a/gcc/testsuite/gcc.dg/analyzer/pr98580-b.c b/gcc/testsuite/gcc.dg/analyzer/pr98580-b.c
new file mode 100644
index 0000000..629ebce
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/pr98580-b.c
@@ -0,0 +1,2 @@
+extern int *p;
+int foo() { return *p; }
diff --git a/gcc/testsuite/gcc.dg/analyzer/pr98628.c b/gcc/testsuite/gcc.dg/analyzer/pr98628.c
new file mode 100644
index 0000000..e2fa778
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/pr98628.c
@@ -0,0 +1,19 @@
+/* { dg-additional-options "-O1" } */
+
+void foo(void *);
+struct chanset_t help_subst_chan;
+struct chanset_t *help_subst_chan_0_0;
+struct chanset_t {
+ struct chanset_t *next;
+ char dname[];
+};
+void help_subst() {
+ char *writeidx;
+ for (;; help_subst_chan = *help_subst_chan_0_0) {
+ foo(help_subst_chan.next->dname);
+ if (help_subst_chan_0_0) {
+ writeidx++;
+ *writeidx++ = ' ';
+ }
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/analyzer/pr98918.c b/gcc/testsuite/gcc.dg/analyzer/pr98918.c
new file mode 100644
index 0000000..ac626ba
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/analyzer/pr98918.c
@@ -0,0 +1,22 @@
+#include <stdlib.h>
+
+struct marker {
+ struct marker *next;
+ void *ref;
+};
+struct data {
+ struct marker *marker;
+};
+
+void data_free(struct data d)
+{
+ struct marker *nm, *m;
+
+ m = d.marker;
+ while (m) {
+ nm = m->next;
+ free(m->ref);
+ free(m);
+ m = nm;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/analyzer/sensitive-1.c b/gcc/testsuite/gcc.dg/analyzer/sensitive-1.c
index 81144af..c66af92 100644
--- a/gcc/testsuite/gcc.dg/analyzer/sensitive-1.c
+++ b/gcc/testsuite/gcc.dg/analyzer/sensitive-1.c
@@ -6,6 +6,11 @@
#include <string.h>
+/* Declare getpass, in case unistd doesn't declare it.
+ Parenthesize it, in case it's a macro.
+ Don't use a prototype, to avoid const mismatches. */
+extern char *(getpass) ();
+
char test_1 (FILE *logfile)
{
char *password = getpass (">"); /* { dg-message "\\(1\\) sensitive value acquired here" } */
diff --git a/gcc/testsuite/gcc.dg/analyzer/signal-4b.c b/gcc/testsuite/gcc.dg/analyzer/signal-4b.c
index cb1e7e4..5a2ccb1 100644
--- a/gcc/testsuite/gcc.dg/analyzer/signal-4b.c
+++ b/gcc/testsuite/gcc.dg/analyzer/signal-4b.c
@@ -20,14 +20,14 @@ static void int_handler(int signum)
custom_logger("got signal");
}
-static void register_handler ()
+static void __analyzer_register_handler ()
{
signal(SIGINT, int_handler);
}
void test (void)
{
- register_handler ();
+ __analyzer_register_handler ();
body_of_program();
}
@@ -42,17 +42,17 @@ void test (void)
| | |
| | (1) entry to 'test'
| NN | {
- | NN | register_handler ();
- | | ~~~~~~~~~~~~~~~~~~~
+ | NN | __analyzer_register_handler ();
+ | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
- | | (2) calling 'register_handler' from 'test'
+ | | (2) calling '__analyzer_register_handler' from 'test'
|
- +--> 'register_handler': events 3-4
+ +--> '__analyzer_register_handler': events 3-4
|
- | NN | static void register_handler ()
- | | ^~~~~~~~~~~~~~~~
+ | NN | static void __analyzer_register_handler ()
+ | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
- | | (3) entry to 'register_handler'
+ | | (3) entry to '__analyzer_register_handler'
| NN | {
| NN | signal(SIGINT, int_handler);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/gcc/testsuite/gcc.dg/analyzer/sigsetjmp-5.c b/gcc/testsuite/gcc.dg/analyzer/sigsetjmp-5.c
index d6a9910..494b813 100644
--- a/gcc/testsuite/gcc.dg/analyzer/sigsetjmp-5.c
+++ b/gcc/testsuite/gcc.dg/analyzer/sigsetjmp-5.c
@@ -4,7 +4,7 @@
#include <stddef.h>
#include "analyzer-decls.h"
-static jmp_buf env;
+static sigjmp_buf env;
static void inner (void)
{
diff --git a/gcc/testsuite/gcc.dg/analyzer/sigsetjmp-6.c b/gcc/testsuite/gcc.dg/analyzer/sigsetjmp-6.c
index f89277e..f5507a3 100644
--- a/gcc/testsuite/gcc.dg/analyzer/sigsetjmp-6.c
+++ b/gcc/testsuite/gcc.dg/analyzer/sigsetjmp-6.c
@@ -6,7 +6,7 @@
extern int foo (int) __attribute__ ((__pure__));
-static jmp_buf env;
+static sigjmp_buf env;
static void inner (void)
{
diff --git a/gcc/testsuite/gcc.dg/analyzer/single-field.c b/gcc/testsuite/gcc.dg/analyzer/single-field.c
index d54cfb0..31c6fee 100644
--- a/gcc/testsuite/gcc.dg/analyzer/single-field.c
+++ b/gcc/testsuite/gcc.dg/analyzer/single-field.c
@@ -11,14 +11,14 @@ void test_1 (struct foo f)
__analyzer_describe (0, f.ptr); /* { dg-warning "svalue: 'INIT_VAL\\(f.ptr\\)'" } */
}
-static void called_by_test_2 (struct foo f_inner)
+static void __analyzer_called_by_test_2 (struct foo f_inner)
{
free (f_inner.ptr);
free (f_inner.ptr); /* { dg-warning "double-'free' of 'f_outer.ptr'" } */
}
void test_2 (struct foo f_outer)
{
- called_by_test_2 (f_outer);
+ __analyzer_called_by_test_2 (f_outer);
}
struct nested
@@ -26,12 +26,12 @@ struct nested
struct foo f;
};
-static void called_by_test_3 (struct nested n_inner)
+static void __analyzer_called_by_test_3 (struct nested n_inner)
{
free (n_inner.f.ptr);
free (n_inner.f.ptr); /* { dg-warning "double-'free' of 'n_outer.f.ptr'" } */
}
void test_3 (struct nested n_outer)
{
- called_by_test_3 (n_outer);
+ __analyzer_called_by_test_3 (n_outer);
}
diff --git a/gcc/testsuite/gcc.dg/analyzer/torture/analyzer-torture.exp b/gcc/testsuite/gcc.dg/analyzer/torture/analyzer-torture.exp
index a4d98bb..e16f447 100644
--- a/gcc/testsuite/gcc.dg/analyzer/torture/analyzer-torture.exp
+++ b/gcc/testsuite/gcc.dg/analyzer/torture/analyzer-torture.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/analyzer/torture/conditionals-2.c b/gcc/testsuite/gcc.dg/analyzer/torture/conditionals-2.c
index 35b0a05f..278a2a5 100644
--- a/gcc/testsuite/gcc.dg/analyzer/torture/conditionals-2.c
+++ b/gcc/testsuite/gcc.dg/analyzer/torture/conditionals-2.c
@@ -5,7 +5,7 @@
#define Z_NULL 0
static void __attribute__((noinline))
-test_1_callee (void *p, void *q)
+__analyzer_test_1_callee (void *p, void *q)
{
__analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
@@ -21,11 +21,11 @@ void test_1 (void *p, void *q)
if (p == Z_NULL || q == Z_NULL)
return;
- test_1_callee (p, q);
+ __analyzer_test_1_callee (p, q);
}
static void __attribute__((noinline))
-test_2_callee (void *p, void *q)
+__analyzer_test_2_callee (void *p, void *q)
{
__analyzer_dump_exploded_nodes (0); /* { dg-warning "1 processed enode" } */
@@ -39,5 +39,5 @@ test_2_callee (void *p, void *q)
void test_2 (void *p, void *q)
{
if (p != Z_NULL && q != Z_NULL)
- test_2_callee (p, q);
+ __analyzer_test_2_callee (p, q);
}
diff --git a/gcc/testsuite/gcc.dg/array-quals-1.c b/gcc/testsuite/gcc.dg/array-quals-1.c
index 31aa1d3..c8d3629 100644
--- a/gcc/testsuite/gcc.dg/array-quals-1.c
+++ b/gcc/testsuite/gcc.dg/array-quals-1.c
@@ -6,46 +6,46 @@
/* { dg-options "-Wno-discarded-array-qualifiers" } */
/* The MMIX port always switches to the .data section at the end of a file. */
/* { dg-final { scan-assembler-not "\\.data(?!\\.rel\\.ro)" { xfail powerpc*-*-aix* mmix-*-* x86_64-*-mingw* } } } */
-/* { dg-final { scan-assembler-symbol-section {^_?a$} {^\.(const|rodata)|\[RO\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?a$} {^\.(const|rodata|srodata)|\[RO\]} } } */
static const int a[2] = { 1, 2 };
-/* { dg-final { scan-assembler-symbol-section {^_?a1$} {^\.(const|rodata)|\[RO\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?a1$} {^\.(const|rodata|srodata)|\[RO\]} } } */
const int a1[2] = { 1, 2 };
typedef const int ci;
-/* { dg-final { scan-assembler-symbol-section {^_?b$} {^\.(const|rodata)|\[RO\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?b$} {^\.(const|rodata|srodata)|\[RO\]} } } */
static ci b[2] = { 3, 4 };
-/* { dg-final { scan-assembler-symbol-section {^_?b1$} {^\.(const|rodata)|\[RO\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?b1$} {^\.(const|rodata|srodata)|\[RO\]} } } */
ci b1[2] = { 3, 4 };
typedef int ia[2];
-/* { dg-final { scan-assembler-symbol-section {^_?c$} {^\.(const|rodata)|\[RO\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?c$} {^\.(const|rodata|srodata)|\[RO\]} } } */
static const ia c = { 5, 6 };
-/* { dg-final { scan-assembler-symbol-section {^_?c1$} {^\.(const|rodata)|\[RO\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?c1$} {^\.(const|rodata|srodata)|\[RO\]} } } */
const ia c1 = { 5, 6 };
typedef const int cia[2];
-/* { dg-final { scan-assembler-symbol-section {^_?d$} {^\.(const|rodata)|\[RO\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?d$} {^\.(const|rodata|srodata)|\[RO\]} } } */
static cia d = { 7, 8 };
-/* { dg-final { scan-assembler-symbol-section {^_?d1$} {^\.(const|rodata)|\[RO\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?d1$} {^\.(const|rodata|srodata)|\[RO\]} } } */
cia d1 = { 7, 8 };
-/* { dg-final { scan-assembler-symbol-section {^_?e$} {^\.(const|rodata)|\[RO\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?e$} {^\.(const|rodata|srodata)|\[RO\]} } } */
static cia e[2] = { { 1, 2 }, { 3, 4 } };
-/* { dg-final { scan-assembler-symbol-section {^_?e1$} {^\.(const|rodata)|\[RO\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?e1$} {^\.(const|rodata|srodata)|\[RO\]} } } */
cia e1[2] = { { 1, 2 }, { 3, 4 } };
-/* { dg-final { scan-assembler-symbol-section {^_?p$} {^\.(const|rodata)|\[RW\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?p$} {^\.(const|rodata|srodata)|\[RW\]} } } */
void *const p = &a;
-/* { dg-final { scan-assembler-symbol-section {^_?q$} {^\.(const|rodata)|\[RW\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?q$} {^\.(const|rodata|srodata)|\[RW\]} } } */
void *const q = &b;
-/* { dg-final { scan-assembler-symbol-section {^_?r$} {^\.(const|rodata)|\[RW\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?r$} {^\.(const|rodata|srodata)|\[RW\]} } } */
void *const r = &c;
-/* { dg-final { scan-assembler-symbol-section {^_?s$} {^\.(const|rodata)|\[RW\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?s$} {^\.(const|rodata|srodata)|\[RW\]} } } */
void *const s = &d;
-/* { dg-final { scan-assembler-symbol-section {^_?t$} {^\.(const|rodata)|\[RW\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?t$} {^\.(const|rodata|srodata)|\[RW\]} } } */
void *const t = &e;
-/* { dg-final { scan-assembler-symbol-section {^_?p1$} {^\.(const|rodata)|\[RW\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?p1$} {^\.(const|rodata|srodata)|\[RW\]} } } */
void *const p1 = &a1;
-/* { dg-final { scan-assembler-symbol-section {^_?q1$} {^\.(const|rodata)|\[RW\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?q1$} {^\.(const|rodata|srodata)|\[RW\]} } } */
void *const q1 = &b1;
-/* { dg-final { scan-assembler-symbol-section {^_?r1$} {^\.(const|rodata)|\[RW\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?r1$} {^\.(const|rodata|srodata)|\[RW\]} } } */
void *const r1 = &c1;
-/* { dg-final { scan-assembler-symbol-section {^_?s1$} {^\.(const|rodata)|\[RW\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?s1$} {^\.(const|rodata|srodata)|\[RW\]} } } */
void *const s1 = &d1;
-/* { dg-final { scan-assembler-symbol-section {^_?t1$} {^\.(const|rodata)|\[RW\]} } } */
+/* { dg-final { scan-assembler-symbol-section {^_?t1$} {^\.(const|rodata|srodata)|\[RW\]} } } */
void *const t1 = &e1;
diff --git a/gcc/testsuite/gcc.dg/asan/asan.exp b/gcc/testsuite/gcc.dg/asan/asan.exp
index 19e7af9..a55003d 100644
--- a/gcc/testsuite/gcc.dg/asan/asan.exp
+++ b/gcc/testsuite/gcc.dg/asan/asan.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.dg/asan/nested-1.c b/gcc/testsuite/gcc.dg/asan/nested-1.c
new file mode 100644
index 0000000..87e8420
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/asan/nested-1.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-options "-fsanitize=address" } */
+
+int f(int i) {
+ auto int h() {
+ int r;
+ int *p;
+
+ {
+ int x[3];
+
+ auto int g() {
+ return x[i];
+ }
+
+ p = &r;
+ *p = g();
+ }
+
+ return *p;
+ }
+
+ return h();
+}
diff --git a/gcc/testsuite/gcc.dg/atomic/atomic.exp b/gcc/testsuite/gcc.dg/atomic/atomic.exp
index e6ded93..9cbcb53 100644
--- a/gcc/testsuite/gcc.dg/atomic/atomic.exp
+++ b/gcc/testsuite/gcc.dg/atomic/atomic.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.dg/autopar/autopar.exp b/gcc/testsuite/gcc.dg/autopar/autopar.exp
index dffdebe..856808e 100644
--- a/gcc/testsuite/gcc.dg/autopar/autopar.exp
+++ b/gcc/testsuite/gcc.dg/autopar/autopar.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/charset/charset.exp b/gcc/testsuite/gcc.dg/charset/charset.exp
index d96ba47..a97e79d 100644
--- a/gcc/testsuite/gcc.dg/charset/charset.exp
+++ b/gcc/testsuite/gcc.dg/charset/charset.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/compat/compat.exp b/gcc/testsuite/gcc.dg/compat/compat.exp
index 61f2863..d1c4902 100644
--- a/gcc/testsuite/gcc.dg/compat/compat.exp
+++ b/gcc/testsuite/gcc.dg/compat/compat.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/compat/struct-layout-1.exp b/gcc/testsuite/gcc.dg/compat/struct-layout-1.exp
index 66ee483..b685f04 100644
--- a/gcc/testsuite/gcc.dg/compat/struct-layout-1.exp
+++ b/gcc/testsuite/gcc.dg/compat/struct-layout-1.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/cpp/assembl2.S b/gcc/testsuite/gcc.dg/cpp/assembl2.S
index 7eb379b..00855d3 100644
--- a/gcc/testsuite/gcc.dg/cpp/assembl2.S
+++ b/gcc/testsuite/gcc.dg/cpp/assembl2.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000-2020 Free Software Foundation, Inc. */
+/* Copyright (C) 2000-2021 Free Software Foundation, Inc. */
/* { dg-do preprocess } */
diff --git a/gcc/testsuite/gcc.dg/cpp/cpp.exp b/gcc/testsuite/gcc.dg/cpp/cpp.exp
index 4a85fba..fd1101c 100644
--- a/gcc/testsuite/gcc.dg/cpp/cpp.exp
+++ b/gcc/testsuite/gcc.dg/cpp/cpp.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/cpp/trad/trad.exp b/gcc/testsuite/gcc.dg/cpp/trad/trad.exp
index 1fa07f1..4a6b882 100644
--- a/gcc/testsuite/gcc.dg/cpp/trad/trad.exp
+++ b/gcc/testsuite/gcc.dg/cpp/trad/trad.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/cpp/ucs.c b/gcc/testsuite/gcc.dg/cpp/ucs.c
index f52cd57..0fdd23b 100644
--- a/gcc/testsuite/gcc.dg/cpp/ucs.c
+++ b/gcc/testsuite/gcc.dg/cpp/ucs.c
@@ -43,7 +43,7 @@
#endif
#if WCHAR_MAX >= 0x7ffffff
-# if L'\U1234abcd' != 0x1234abcd /* { dg-warning "outside" "" } */
+# if L'\U1234abcd' != 0x1234abcd /* { dg-warning "outside" "" { xfail powerpc-ibm-aix* } } */
# error bad long ucs /* { dg-bogus "bad" "bad U1234abcd evaluation" } */
# endif
#endif
@@ -69,5 +69,5 @@ void foo ()
c = L"\uD800"[0]; /* { dg-error "not a valid" "D800 invalid UCN" } */
c = L'\U0000DFFF'; /* { dg-error "not a valid" "DFFF invalid UCN" } */
- c = L'\U00110000'; /* { dg-warning "outside" "110000 outside UCS" } */
+ c = L'\U00110000'; /* { dg-warning "outside|Invalid" "110000 outside UCS" } */
}
diff --git a/gcc/testsuite/gcc.dg/darwin-sections.c b/gcc/testsuite/gcc.dg/darwin-sections.c
index 5fc2860..dbe3702 100644
--- a/gcc/testsuite/gcc.dg/darwin-sections.c
+++ b/gcc/testsuite/gcc.dg/darwin-sections.c
@@ -10,9 +10,7 @@ typedef struct _empty {} e_s;
/* These should go in .comm */
char ub;
e_s ea;
-/* { dg-final { scan-assembler-symbol-section {^_a$} {\.data} } } */
/* { dg-final { scan-assembler ".comm\[\t \]_ub,1" } } */
-/* { dg-final { scan-assembler-symbol-section {^_b$} {\.data} } } */
/* { dg-final { scan-assembler ".comm\[\t \]_ea,1" } } */
/* These should go into __DATA,__common */
diff --git a/gcc/testsuite/gcc.dg/debug/debug.exp b/gcc/testsuite/gcc.dg/debug/debug.exp
index 44d6b7f..bc5505e 100644
--- a/gcc/testsuite/gcc.dg/debug/debug.exp
+++ b/gcc/testsuite/gcc.dg/debug/debug.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-float.c b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-float.c
index f488384..51f5977 100644
--- a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-float.c
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf-float.c
@@ -1,11 +1,11 @@
/* Verify the DWARF encoding of C99 floating point types. */
/* { dg-do compile } */
-/* { dg-options "-O0 -gdwarf -dA" } */
-/* { dg-final { scan-assembler "0x4.*DW_AT_encoding" } } */
-/* { dg-final { scan-assembler "0x4.*DW_AT_byte_size" } } */
-/* { dg-final { scan-assembler "0x8.*DW_AT_byte_size" } } */
-/* { dg-final { scan-assembler "0x10.*DW_AT_byte_size" } } */
+/* { dg-options "-O0 -gdwarf-4 -dA" } */
+/* { dg-final { scan-assembler "0x4\[^\\r\\n]*DW_AT_encoding" } } */
+/* { dg-final { scan-assembler "0x4\[^\\r\\n]*DW_AT_byte_size" } } */
+/* { dg-final { scan-assembler "0x8\[^\\r\\n]*DW_AT_byte_size" { target double64 } } } */
+/* { dg-final { scan-assembler "0x10\[^\\r\\n]*DW_AT_byte_size" { target longdouble128 }} } */
void foo ()
{
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp
index 1fd81d1..bb77397 100644
--- a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/inline6.c b/gcc/testsuite/gcc.dg/debug/dwarf2/inline6.c
index 03013f1..fde8c27 100644
--- a/gcc/testsuite/gcc.dg/debug/dwarf2/inline6.c
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/inline6.c
@@ -15,8 +15,8 @@
*/
/* Explicitly use dwarf-5 which uses DW_FORM_implicit_const. */
-/* { dg-options "-O -g3 -gdwarf-5 -dA -fgnu89-inline" } */
/* { dg-do compile } */
+/* { dg-options "-O -g3 -gdwarf-5 -dA -fgnu89-inline" } */
/* There are 6 inlined subroutines:
- One for each subroutine inlined into main, that's 3.
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-7.c b/gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-7.c
index 0e0de82..1aa6005 100644
--- a/gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-7.c
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-7.c
@@ -1,6 +1,7 @@
/* PR preprocessor/41445 DWARF5 variant */
/* Test that token after multi-line function-like macro use
- gets correct locus even when preprocessing separately. */
+ gets correct locus even when preprocessing separately.
+ If lines are inserted, the expected line number must be updated. */
/* { dg-do compile } */
/* { dg-options "-save-temps -gdwarf-5 -O0 -dA -fno-merge-debug-strings" } */
@@ -12,5 +13,5 @@ int A(B) ;
/* We want to check that both vari and varj have the same line
number. */
-/* { dg-final { scan-assembler "DW_TAG_variable\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\"vari\[^\\r\\n\]*DW_AT_name(\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*DW_AT_)*\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\[^\\r\\n\]*DW_AT_decl_line \\((0xa|10)\\)" } } */
-/* { dg-final { scan-assembler "DW_TAG_variable\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\"varj\[^\\r\\n\]*DW_AT_name(\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*DW_AT_)*\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\[^\\r\\n\]*DW_AT_decl_line \\((0xa|10)\\)" } } */
+/* { dg-final { scan-assembler "DW_TAG_variable\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\"vari\[^\\r\\n\]*DW_AT_name(\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*DW_AT_)*\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\[^\\r\\n\]*DW_AT_decl_line \\((0xb|11)\\)" } } */
+/* { dg-final { scan-assembler "DW_TAG_variable\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\"varj\[^\\r\\n\]*DW_AT_name(\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*DW_AT_)*\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\[^\\r\\n\]*DW_AT_decl_line \\((0xb|11)\\)" } } */
diff --git a/gcc/testsuite/gcc.dg/debug/pr97714.c b/gcc/testsuite/gcc.dg/debug/pr97714.c
new file mode 100644
index 0000000..dba1783
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/pr97714.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O -g" } */
+
+void
+function ()
+{
+ if (0)
+ {
+#line 0 "whatever"
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/dfp/dfp.exp b/gcc/testsuite/gcc.dg/dfp/dfp.exp
index ef3dea5..a21bef0 100644
--- a/gcc/testsuite/gcc.dg/dfp/dfp.exp
+++ b/gcc/testsuite/gcc.dg/dfp/dfp.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2020 Free Software Foundation, Inc.
+# Copyright (C) 2005-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/dg.exp b/gcc/testsuite/gcc.dg/dg.exp
index 8cda6a3..9da2507 100644
--- a/gcc/testsuite/gcc.dg/dg.exp
+++ b/gcc/testsuite/gcc.dg/dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp b/gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp
index 4e9f58a..7ac2347 100644
--- a/gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp
+++ b/gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/format/format.exp b/gcc/testsuite/gcc.dg/format/format.exp
index e16eb36..a451aa3 100644
--- a/gcc/testsuite/gcc.dg/format/format.exp
+++ b/gcc/testsuite/gcc.dg/format/format.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/gimplefe-error-8.c b/gcc/testsuite/gcc.dg/gimplefe-error-8.c
new file mode 100644
index 0000000..59e81eb
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/gimplefe-error-8.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-fgimple" } */
+
+int __GIMPLE() f(int x, int y)
+{
+ int a;
+ a = (x < y) ? 1 : 2; /* { dg-error "expected" } */
+ return a;
+}
diff --git a/gcc/testsuite/gcc.dg/goacc-gomp/goacc-gomp.exp b/gcc/testsuite/gcc.dg/goacc-gomp/goacc-gomp.exp
index 88aeba9..79e1c2b 100644
--- a/gcc/testsuite/gcc.dg/goacc-gomp/goacc-gomp.exp
+++ b/gcc/testsuite/gcc.dg/goacc-gomp/goacc-gomp.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.dg/goacc/goacc.exp b/gcc/testsuite/gcc.dg/goacc/goacc.exp
index c3e385b..3c5ecf8 100644
--- a/gcc/testsuite/gcc.dg/goacc/goacc.exp
+++ b/gcc/testsuite/gcc.dg/goacc/goacc.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.dg/goacc/pr98183.c b/gcc/testsuite/gcc.dg/goacc/pr98183.c
new file mode 100644
index 0000000..b041011
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/goacc/pr98183.c
@@ -0,0 +1,15 @@
+/* PR middle-end/98183 */
+/* { dg-additional-options "-fexceptions -O0" } */
+
+void bar (void);
+int x, y;
+
+void
+foo (void)
+{
+#pragma acc data copyout(x)
+ {
+#pragma acc data copyout(y)
+ bar ();
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/gomp/gomp.exp b/gcc/testsuite/gcc.dg/gomp/gomp.exp
index 8a7f18e..a79f877 100644
--- a/gcc/testsuite/gcc.dg/gomp/gomp.exp
+++ b/gcc/testsuite/gcc.dg/gomp/gomp.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.dg/gomp/pr98183.c b/gcc/testsuite/gcc.dg/gomp/pr98183.c
new file mode 100644
index 0000000..dd11499
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/gomp/pr98183.c
@@ -0,0 +1,15 @@
+/* PR middle-end/98183 */
+/* { dg-additional-options "-fexceptions -O0" } */
+
+void bar (void);
+int x, y;
+
+void
+foo (void)
+{
+#pragma omp target data map(tofrom: x)
+ {
+#pragma omp target data map(tofrom: y)
+ bar ();
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/gomp/simd-2.c b/gcc/testsuite/gcc.dg/gomp/simd-2.c
index 7ac3eb4..85acb98 100644
--- a/gcc/testsuite/gcc.dg/gomp/simd-2.c
+++ b/gcc/testsuite/gcc.dg/gomp/simd-2.c
@@ -1,7 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fopenmp -fdump-tree-vect-details" } */
+/* { dg-additional-options "-msse2" { target { i?86-*-* x86_64-*-* } } } */
/* { dg-additional-options "-mavx" { target avx } } */
-/* { dg-final { scan-tree-dump-times "vectorized \[1-9]\[0-9]* loops in function" 5 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorized \[1-9]\[0-9]* loops in function" 5 "vect" { target i?86-*-* x86_64-*-* aarch64-*-* } } } */
int a[10000][128];
diff --git a/gcc/testsuite/gcc.dg/gomp/simd-3.c b/gcc/testsuite/gcc.dg/gomp/simd-3.c
index 13e1346..86fee85 100644
--- a/gcc/testsuite/gcc.dg/gomp/simd-3.c
+++ b/gcc/testsuite/gcc.dg/gomp/simd-3.c
@@ -1,7 +1,8 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fopenmp -fdump-tree-vect-details" } */
+/* { dg-additional-options "-msse2" { target { i?86-*-* x86_64-*-* } } } */
/* { dg-additional-options "-mavx" { target avx } } */
-/* { dg-final { scan-tree-dump-times "vectorized \[1-9]\[0-9]* loops in function" 5 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorized \[1-9]\[0-9]* loops in function" 5 "vect" { target i?86-*-* x86_64-*-* aarch64-*-* } } } */
int a[1024][1024];
diff --git a/gcc/testsuite/gcc.dg/gomp/task-detach-1.c b/gcc/testsuite/gcc.dg/gomp/task-detach-1.c
new file mode 100644
index 0000000..611044d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/gomp/task-detach-1.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-fopenmp" } */
+
+typedef enum omp_event_handle_t
+{
+ __omp_event_handle_t_max__ = __UINTPTR_MAX__
+} omp_event_handle_t;
+
+extern void omp_fulfill_event (omp_event_handle_t);
+
+void f (omp_event_handle_t x)
+{
+ void g (void)
+ {
+ #pragma omp task detach (x)
+ omp_fulfill_event (x);
+ }
+
+ g ();
+}
diff --git a/gcc/testsuite/gcc.dg/graphite/graphite.exp b/gcc/testsuite/gcc.dg/graphite/graphite.exp
index fbd69a7..fa8fa6b 100644
--- a/gcc/testsuite/gcc.dg/graphite/graphite.exp
+++ b/gcc/testsuite/gcc.dg/graphite/graphite.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/guality/pr98219-1.c b/gcc/testsuite/gcc.dg/guality/pr98219-1.c
new file mode 100644
index 0000000..c9cb8a5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/guality/pr98219-1.c
@@ -0,0 +1,49 @@
+/* { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! ia32 } } } } */
+/* { dg-options "-g -muintr -mgeneral-regs-only" } */
+
+#include <x86gprintrin.h>
+
+extern void exit (int);
+typedef unsigned int uword_t __attribute__ ((mode (__word__)));
+
+#define UIRRV 0x12345670
+#define RIP 0x12345671
+#define RFLAGS 0x12345672
+#define RSP 0x12345673
+
+#define STRING(x) XSTRING(x)
+#define XSTRING(x) #x
+#define ASMNAME(cname) ASMNAME2 (__USER_LABEL_PREFIX__, cname)
+#define ASMNAME2(prefix, cname) XSTRING (prefix) cname
+
+void
+__attribute__((interrupt, used))
+fn (struct __uintr_frame *frame, uword_t uirrv)
+{
+ if (UIRRV != uirrv) /* BREAK */
+ __builtin_abort ();
+ if (RIP != frame->rip)
+ __builtin_abort ();
+ if (RFLAGS != frame->rflags)
+ __builtin_abort ();
+ if (RSP != frame->rsp)
+ __builtin_abort ();
+
+ exit (0);
+}
+
+int
+main ()
+{
+ asm ("push $" STRING (RSP) "; \
+ push $" STRING (RFLAGS) "; \
+ push $" STRING (RIP) "; \
+ push $" STRING (UIRRV) "; \
+ jmp " ASMNAME ("fn"));
+ return 0;
+}
+
+/* { dg-final { gdb-test 22 "uirrv" "0x12345670" } } */
+/* { dg-final { gdb-test 22 "frame->rip" "0x12345671" } } */
+/* { dg-final { gdb-test 22 "frame->rflags" "0x12345672" } } */
+/* { dg-final { gdb-test 22 "frame->rsp" "0x12345673" } } */
diff --git a/gcc/testsuite/gcc.dg/guality/pr98219-2.c b/gcc/testsuite/gcc.dg/guality/pr98219-2.c
new file mode 100644
index 0000000..1f74eb3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/guality/pr98219-2.c
@@ -0,0 +1,63 @@
+/* { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! ia32 } } } } */
+/* { dg-options "-g -muintr -mgeneral-regs-only" } */
+
+#include <x86gprintrin.h>
+
+extern void exit (int);
+typedef unsigned int uword_t __attribute__ ((mode (__word__)));
+typedef int aligned __attribute__((aligned(64)));
+
+#define UIRRV 0x12345670
+#define RIP 0x12345671
+#define RFLAGS 0x12345672
+#define RSP 0x12345673
+
+#define STRING(x) XSTRING(x)
+#define XSTRING(x) #x
+#define ASMNAME(cname) ASMNAME2 (__USER_LABEL_PREFIX__, cname)
+#define ASMNAME2(prefix, cname) XSTRING (prefix) cname
+
+int
+check_int (int *i, int align)
+{
+ *i = 20;
+ if ((((ptrdiff_t) i) & (align - 1)) != 0)
+ __builtin_abort ();
+ return *i;
+}
+
+void
+__attribute__((interrupt, used))
+fn (struct __uintr_frame *frame, uword_t uirrv)
+{
+ aligned i;
+ if (check_int (&i, __alignof__(i)) != i)
+ __builtin_abort ();
+
+ if (UIRRV != uirrv) /* BREAK */
+ __builtin_abort ();
+ if (RIP != frame->rip)
+ __builtin_abort ();
+ if (RFLAGS != frame->rflags)
+ __builtin_abort ();
+ if (RSP != frame->rsp)
+ __builtin_abort ();
+
+ exit (0);
+}
+
+int
+main ()
+{
+ asm ("push $" STRING (RSP) "; \
+ push $" STRING (RFLAGS) "; \
+ push $" STRING (RIP) "; \
+ push $" STRING (UIRRV) "; \
+ jmp " ASMNAME ("fn"));
+ return 0;
+}
+
+/* { dg-final { gdb-test 34 "uirrv" "0x12345670" } } */
+/* { dg-final { gdb-test 34 "frame->rip" "0x12345671" } } */
+/* { dg-final { gdb-test 34 "frame->rflags" "0x12345672" } } */
+/* { dg-final { gdb-test 34 "frame->rsp" "0x12345673" } } */
diff --git a/gcc/testsuite/gcc.dg/hwasan/hwasan.exp b/gcc/testsuite/gcc.dg/hwasan/hwasan.exp
index 5c040ae..d930b8e 100644
--- a/gcc/testsuite/gcc.dg/hwasan/hwasan.exp
+++ b/gcc/testsuite/gcc.dg/hwasan/hwasan.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2019 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.dg/intmax_t-1.c b/gcc/testsuite/gcc.dg/intmax_t-1.c
index 00b503c..03d4266 100644
--- a/gcc/testsuite/gcc.dg/intmax_t-1.c
+++ b/gcc/testsuite/gcc.dg/intmax_t-1.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-Wall" } */
-/* { dg-error "" "" { target { { *arm*-*-*elf* xtensa*-*-elf* } || vxworks_kernel } } 0 } */
+/* { dg-error "" "" { target { { *arm*-*-*elf* xtensa*-*-elf* } || { vxworks_kernel && { ! *-*-vxworks7r* } } } } 0 } */
/* Compile with -Wall to get a warning if built-in and system intmax_t don't
match. */
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa.exp b/gcc/testsuite/gcc.dg/ipa/ipa.exp
index c947b13..df81fde 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa.exp
+++ b/gcc/testsuite/gcc.dg/ipa/ipa.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/ipa/pr98222.c b/gcc/testsuite/gcc.dg/ipa/pr98222.c
new file mode 100644
index 0000000..92e857c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/pr98222.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O3" } */
+
+int a, b, *c;
+
+int f (int j, int k) {
+ b = k / j;
+ if (a)
+ f(0, 0);
+ *c = f(b & a, 0);
+ return 0;
+}
+
+int main() {
+ if (a)
+ while (1)
+ f(0, 0);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/lto/lto.exp b/gcc/testsuite/gcc.dg/lto/lto.exp
index 6889091..0ecd24d 100644
--- a/gcc/testsuite/gcc.dg/lto/lto.exp
+++ b/gcc/testsuite/gcc.dg/lto/lto.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/noncompile/noncompile.exp b/gcc/testsuite/gcc.dg/noncompile/noncompile.exp
index 77c4ada..2ce8c53 100644
--- a/gcc/testsuite/gcc.dg/noncompile/noncompile.exp
+++ b/gcc/testsuite/gcc.dg/noncompile/noncompile.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/params/params.exp b/gcc/testsuite/gcc.dg/params/params.exp
index 323cc1e..9bd0a0a 100644
--- a/gcc/testsuite/gcc.dg/params/params.exp
+++ b/gcc/testsuite/gcc.dg/params/params.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.dg/pch/pch.exp b/gcc/testsuite/gcc.dg/pch/pch.exp
index c3882b9..b32767b 100644
--- a/gcc/testsuite/gcc.dg/pch/pch.exp
+++ b/gcc/testsuite/gcc.dg/pch/pch.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-3.c b/gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-3.c
index e1a4fca..56c9546 100644
--- a/gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-3.c
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-3.c
@@ -35,7 +35,8 @@ int main()
This test case captures this behavior. */
/* { dg-regexp "In function 'foo'," "" } */
-/* { dg-regexp " inlined from 'main' at .+/diagnostic-test-inlining-3.c:15:3:" "" } */
+/* { dg-regexp " inlined from 'bar' at .+/diagnostic-test-inlining-3.c:15:3," "" } */
+/* { dg-regexp " inlined from 'main' at .+/diagnostic-test-inlining-3.c:20:3:" "" } */
/* { dg-warning "3: message" "" { target *-*-* } 9 } */
/* { dg-begin-multiline-output "" }
__emit_warning ("message");
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v1.c b/gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v1.c
new file mode 100644
index 0000000..8f6f716
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v1.c
@@ -0,0 +1,71 @@
+/* { dg-do compile } */
+/* { dg-options "-O" } */
+/* { dg-set-compiler-env-var GCC_EXTRA_DIAGNOSTIC_OUTPUT "fixits-v1" }
+/* This is a collection of unittests for diagnostic_show_locus;
+ see the overview in diagnostic_plugin_test_show_locus.c.
+
+ In particular, note the discussion of why we need a very long line here:
+01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
+ and that we can't use macros in this file. */
+
+/* Unit test for rendering of insertion fixit hints
+ (example taken from PR 62316). */
+
+void test_fixit_insert (void)
+{
+#if 0
+ int a[2][2] = { 0, 1 , 2, 3 }; /* { dg-warning "insertion hints" } */
+/* { dg-regexp "fix-it:.*\\{17:20-17:20\\}:.*" } */
+/* { dg-regexp "fix-it:.*\\{17:24-17:24\\}:.*" } */
+#endif
+}
+
+/* Unit test for rendering of "remove" fixit hints. */
+
+void test_fixit_remove (void)
+{
+#if 0
+ int a;; /* { dg-warning "example of a removal hint" } */
+/* { dg-regexp "fix-it:.*\\{28:9-28:10\\}:.*" } */
+#endif
+}
+
+/* Unit test for rendering of "replace" fixit hints. */
+
+void test_fixit_replace (void)
+{
+#if 0
+ gtk_widget_showall (dlg); /* { dg-warning "example of a replacement hint" } */
+/* { dg-regexp "fix-it:.*\\{38:3-38:21\\}:.*" } */
+#endif
+}
+
+/* Unit test for rendering of fix-it hints that add new lines. */
+
+void test_fixit_insert_newline (void)
+{
+#if 0
+ switch (op)
+ {
+ case 'a':
+ x = a;
+ case 'b': /* { dg-warning "newline insertion" } */
+ x = b;
+ }
+/* { dg-regexp "fix-it:.*\\{52:1-52:1\\}:.*\\n" } */
+#endif
+}
+
+/* Unit test for mutually-exclusive suggestions. */
+
+void test_mutually_exclusive_suggestions (void)
+{
+#if 0
+ original; /* { dg-warning "warning 1" } */
+/* { dg-warning "warning 2" "" { target *-*-* } .-1 } */
+/* We should print the mutually-incompatible fix-it hints within
+ -fdiagnostics-parseable-fixits; verify that they are printed. */
+/* { dg-regexp "fix-it:.*\\{64:3-64:11}:.*\\n" } */
+/* { dg-regexp "fix-it:.*\\{64:3-64:11}:.*\\n" } */
+#endif
+}
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v2.c b/gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v2.c
new file mode 100644
index 0000000..d5ebd93
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v2.c
@@ -0,0 +1,71 @@
+/* { dg-do compile } */
+/* { dg-options "-O" } */
+/* { dg-set-compiler-env-var GCC_EXTRA_DIAGNOSTIC_OUTPUT "fixits-v2" }
+/* This is a collection of unittests for diagnostic_show_locus;
+ see the overview in diagnostic_plugin_test_show_locus.c.
+
+ In particular, note the discussion of why we need a very long line here:
+01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
+ and that we can't use macros in this file. */
+
+/* Unit test for rendering of insertion fixit hints
+ (example taken from PR 62316). */
+
+void test_fixit_insert (void)
+{
+#if 0
+ int a[2][2] = { 0, 1 , 2, 3 }; /* { dg-warning "insertion hints" } */
+/* { dg-regexp "fix-it:.*\\{17:20-17:20\\}:.*" } */
+/* { dg-regexp "fix-it:.*\\{17:24-17:24\\}:.*" } */
+#endif
+}
+
+/* Unit test for rendering of "remove" fixit hints. */
+
+void test_fixit_remove (void)
+{
+#if 0
+ int a;; /* { dg-warning "example of a removal hint" } */
+/* { dg-regexp "fix-it:.*\\{28:9-28:10\\}:.*" } */
+#endif
+}
+
+/* Unit test for rendering of "replace" fixit hints. */
+
+void test_fixit_replace (void)
+{
+#if 0
+ gtk_widget_showall (dlg); /* { dg-warning "example of a replacement hint" } */
+/* { dg-regexp "fix-it:.*\\{38:3-38:21\\}:.*" } */
+#endif
+}
+
+/* Unit test for rendering of fix-it hints that add new lines. */
+
+void test_fixit_insert_newline (void)
+{
+#if 0
+ switch (op)
+ {
+ case 'a':
+ x = a;
+ case 'b': /* { dg-warning "newline insertion" } */
+ x = b;
+ }
+/* { dg-regexp "fix-it:.*\\{52:1-52:1\\}:.*\\n" } */
+#endif
+}
+
+/* Unit test for mutually-exclusive suggestions. */
+
+void test_mutually_exclusive_suggestions (void)
+{
+#if 0
+ original; /* { dg-warning "warning 1" } */
+/* { dg-warning "warning 2" "" { target *-*-* } .-1 } */
+/* We should print the mutually-incompatible fix-it hints within
+ -fdiagnostics-parseable-fixits; verify that they are printed. */
+/* { dg-regexp "fix-it:.*\\{64:3-64:11}:.*\\n" } */
+/* { dg-regexp "fix-it:.*\\{64:3-64:11}:.*\\n" } */
+#endif
+}
diff --git a/gcc/testsuite/gcc.dg/plugin/gil-1.c b/gcc/testsuite/gcc.dg/plugin/gil-1.c
index 4e8f535..66872f0 100644
--- a/gcc/testsuite/gcc.dg/plugin/gil-1.c
+++ b/gcc/testsuite/gcc.dg/plugin/gil-1.c
@@ -13,7 +13,7 @@ void test_2 (PyObject *obj)
{
Py_BEGIN_ALLOW_THREADS /* { dg-message "releasing the GIL here" } */
- Py_INCREF (obj); /* { dg-warning "use of PyObject '\\*\\(obj\\)' without the GIL" } */
+ Py_INCREF (obj); /* { dg-warning "use of PyObject '\\*obj' without the GIL" } */
Py_DECREF (obj);
Py_END_ALLOW_THREADS
@@ -60,7 +60,7 @@ void test_5 (PyObject *obj)
static void __attribute__((noinline))
called_by_test_6 (PyObject *obj)
{
- Py_INCREF (obj); /* { dg-warning "use of PyObject '\\*\\(obj\\)' without the GIL" } */
+ Py_INCREF (obj); /* { dg-warning "use of PyObject '\\*obj' without the GIL" } */
Py_DECREF (obj);
}
diff --git a/gcc/testsuite/gcc.dg/plugin/plugin.exp b/gcc/testsuite/gcc.dg/plugin/plugin.exp
index 7f0ffd6..66a437d 100644
--- a/gcc/testsuite/gcc.dg/plugin/plugin.exp
+++ b/gcc/testsuite/gcc.dg/plugin/plugin.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -79,6 +79,8 @@ set plugin_test_list [list \
diagnostic-test-show-locus-bw-line-numbers-2.c \
diagnostic-test-show-locus-color-line-numbers.c \
diagnostic-test-show-locus-parseable-fixits.c \
+ diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v1.c \
+ diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v2.c \
diagnostic-test-show-locus-generate-patch.c }\
{ diagnostic_plugin_test_tree_expression_range.c \
diagnostic-test-expressions-1.c } \
diff --git a/gcc/testsuite/gcc.dg/pr60195.c b/gcc/testsuite/gcc.dg/pr60195.c
index 8eccf7f..0a50a30 100644
--- a/gcc/testsuite/gcc.dg/pr60195.c
+++ b/gcc/testsuite/gcc.dg/pr60195.c
@@ -15,7 +15,7 @@ atomic_int
fn2 (void)
{
atomic_int y = 0;
- y; /* { dg-warning "statement with no effect" } */
+ y;
return y;
}
diff --git a/gcc/testsuite/gcc.dg/pr69047.c b/gcc/testsuite/gcc.dg/pr69047.c
index 63d9fd9..d562663 100644
--- a/gcc/testsuite/gcc.dg/pr69047.c
+++ b/gcc/testsuite/gcc.dg/pr69047.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O -fdump-tree-cddce1" } */
+/* { dg-options "-O -fdump-tree-forwprop4" } */
__UINT8_TYPE__
f(__UINT16_TYPE__ b)
@@ -15,4 +15,4 @@ f(__UINT16_TYPE__ b)
return a;
}
-/* { dg-final { scan-tree-dump "_\[0-9\]+ = \\(\[^)\]+\\) b" "cddce1" } } */
+/* { dg-final { scan-tree-dump "_\[0-9\]+ = \\(\[^)\]+\\) b" "forwprop4" } } */
diff --git a/gcc/testsuite/gcc.dg/pr78973.c b/gcc/testsuite/gcc.dg/pr78973.c
index 6f4f643..7dd67ce 100644
--- a/gcc/testsuite/gcc.dg/pr78973.c
+++ b/gcc/testsuite/gcc.dg/pr78973.c
@@ -9,7 +9,7 @@
static void f (void *p, int n)
{
if (n <= 4)
- __builtin_memset (p, 0, n); /* { dg-warning "exceeds maximum object size" "pr79073" { xfail { ilp32 || { int16 && { ! msp430_large } } } } } */
+ __builtin_memset (p, 0, n); /* { dg-warning "exceeds maximum object size" "pr79073" { xfail { int16 && { ! msp430_large } } } } */
}
void g (void *d, unsigned n)
diff --git a/gcc/testsuite/gcc.dg/pr90248.c b/gcc/testsuite/gcc.dg/pr90248.c
new file mode 100644
index 0000000..2c89e1e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr90248.c
@@ -0,0 +1,73 @@
+/* PR tree-optimization/90248 */
+/* { dg-do run } */
+/* { dg-options "-Ofast" } */
+
+volatile float b1 = -1.f;
+volatile float b2 = 0.f;
+
+__attribute__((noipa)) float
+f1 (float x)
+{
+ return x > 0 ? 1.f : -1.f;
+}
+
+__attribute__((noipa)) float
+f2 (float x)
+{
+ return x >= 0 ? 1.f : -1.f;
+}
+
+__attribute__((noipa)) float
+f3 (float x)
+{
+ return x < 0 ? 1.f : -1.f;
+}
+
+__attribute__((noipa)) float
+f4 (float x)
+{
+ return x <= 0 ? 1.f : -1.f;
+}
+
+__attribute__((noipa)) float
+f5 (float x)
+{
+ return x > 0 ? -1.f : 1.f;
+}
+
+__attribute__((noipa)) float
+f6 (float x)
+{
+ return x >= 0 ? -1.f : 1.f;
+}
+
+__attribute__((noipa)) float
+f7 (float x)
+{
+ return x < 0 ? -1.f : 1.f;
+}
+
+__attribute__((noipa)) float
+f8 (float x)
+{
+ return x <= 0 ? -1.f : 1.f;
+}
+
+int
+main ()
+{
+ float a = 0.f;
+ float b = b1 * b2;
+ float c = 2.f;
+ float d = -2.f;
+ if (f1 (a) != -1.f || f1 (b) != -1.f || f1 (c) != 1.f || f1 (d) != -1.f
+ || f2 (a) != 1.f || f2 (b) != 1.f || f2 (c) != 1.f || f2 (d) != -1.f
+ || f3 (a) != -1.f || f3 (b) != -1.f || f3 (c) != -1.f || f3 (d) != 1.f
+ || f4 (a) != 1.f || f4 (b) != 1.f || f4 (c) != -1.f || f4 (d) != 1.f
+ || f5 (a) != 1.f || f5 (b) != 1.f || f5 (c) != -1.f || f5 (d) != 1.f
+ || f6 (a) != -1.f || f6 (b) != -1.f || f6 (c) != -1.f || f6 (d) != 1.f
+ || f7 (a) != 1.f || f7 (b) != 1.f || f7 (c) != 1.f || f7 (d) != -1.f
+ || f8 (a) != -1.f || f8 (b) != -1.f || f8 (c) != 1.f || f8 (d) != -1.f)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr95582.c b/gcc/testsuite/gcc.dg/pr95582.c
new file mode 100644
index 0000000..cc2ab46
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr95582.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-fgimple -O3" } */
+
+typedef _Bool bool8 __attribute__((signed_bool_precision(8)));
+
+bool8 data[16];
+
+void __GIMPLE(ssa) foo(int f)
+{
+ _Bool t;
+ bool8 tp;
+
+__BB(2):
+ t_2 = f_1(D) != 0;
+ tp_3 = (bool8) t_2;
+ data[0] = tp_3;
+ data[1] = tp_3;
+ return;
+}
diff --git a/gcc/testsuite/gcc.dg/pr96239.c b/gcc/testsuite/gcc.dg/pr96239.c
new file mode 100644
index 0000000..8af56e1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96239.c
@@ -0,0 +1,54 @@
+/* PR tree-optimization/96239 */
+/* { dg-do run { target { ilp32 || lp64 } } } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times " r>> 8;" 1 "optimized" { target bswap } } } */
+/* { dg-final { scan-tree-dump-times " = __builtin_bswap64 " 1 "optimized" { target bswap } } } */
+/* { dg-final { scan-tree-dump-not " >> \(8\|16\|24\|32\|40\|48\|56\);" "optimized" { target bswap } } } */
+
+typedef unsigned char V __attribute__((vector_size (2)));
+typedef unsigned char W __attribute__((vector_size (8)));
+
+__attribute__((noipa)) void
+foo (unsigned short x, V *p)
+{
+ *p = (V) { x >> 8, x };
+}
+
+__attribute__((noipa)) void
+bar (unsigned long long x, W *p)
+{
+ *p = (W) { x >> 56, x >> 48, x >> 40, x >> 32, x >> 24, x >> 16, x >> 8, x };
+}
+
+__attribute__((noipa)) void
+baz (unsigned short x, V *p)
+{
+ *p = (V) { x, x >> 8 };
+}
+
+__attribute__((noipa)) void
+qux (unsigned long long x, W *p)
+{
+ *p = (W) { x, x >> 8, x >> 16, x >> 24, x >> 32, x >> 40, x >> 48, x >> 56 };
+}
+
+int
+main ()
+{
+ V a, c, e, g;
+ W b, d, f, h;
+ foo (0xcafe, &a);
+ bar (0xdeadbeefcafebabeULL, &b);
+ baz (0xdead, &c);
+ qux (0xfeedbac1beefdeadULL, &d);
+ e = (V) { 0xca, 0xfe };
+ f = (W) { 0xde, 0xad, 0xbe, 0xef, 0xca, 0xfe, 0xba, 0xbe };
+ g = (V) { 0xad, 0xde };
+ h = (W) { 0xad, 0xde, 0xef, 0xbe, 0xc1, 0xba, 0xed, 0xfe };
+ if (__builtin_memcmp (&a, &e, sizeof (V))
+ || __builtin_memcmp (&b, &f, sizeof (W))
+ || __builtin_memcmp (&c, &g, sizeof (V))
+ || __builtin_memcmp (&d, &h, sizeof (W)))
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr96674.c b/gcc/testsuite/gcc.dg/pr96674.c
new file mode 100644
index 0000000..194ce2e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr96674.c
@@ -0,0 +1,40 @@
+/* { dg-do run } */
+/* { dg-options "-O -fdump-tree-optimized -fwrapv" } */
+
+#include <limits.h>
+#include <stdbool.h>
+
+bool __attribute__ ((noipa)) test1 (unsigned a, unsigned b)
+{
+ return (b == 0) | (a < b);
+}
+
+bool __attribute__ ((noipa)) test2 (int a, int b)
+{
+ return (b == INT_MIN) | (a < b);
+}
+
+bool __attribute__ ((noipa)) test3 (unsigned a, unsigned b)
+{
+ return (b != 0) & (a >= b);
+}
+
+bool __attribute__ ((noipa)) test4 (int a, int b)
+{
+ return (b != INT_MIN) & (a >= b);
+}
+
+int main()
+{
+ if (!test1 (1, 0) || !test1 (1, 2) || test1 (2, 1) ||
+ !test2 (1, INT_MIN) || !test2 (1, 2) || test2 (2, 1) ||
+ test3 (1, 0) || test3 (1, 2) || !test3 (2, 1) ||
+ test4 (1, INT_MIN) || test4 (1, 2) || !test4 (2, 1)) {
+ __builtin_abort();
+ }
+
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "\\+ 4294967295;" 2 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "\\+ -1;" 2 "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/pr97172.c b/gcc/testsuite/gcc.dg/pr97172.c
new file mode 100644
index 0000000..ab5b2e9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr97172.c
@@ -0,0 +1,50 @@
+/* PR middle-end/97172 - ICE: tree code ‘ssa_name’ is not supported in LTO
+ streams
+ { dg-do compile }
+ { dg-options "-Wall -flto" }
+ { dg-require-effective-target lto } */
+
+int n;
+
+void fn (int a[n]);
+void fnp1 (int a[n + 1]);
+
+void fx_n (int a[][n]);
+void fx_np1 (int a[][n + 1]);
+
+void f2_n (int a[2][n]);
+void f2_np1 (int a[2][n + 1]);
+
+void fn_3 (int a[n][3]);
+void fnp1_3 (int a[n + 1][3]);
+
+void fn_n (int a[n][n]);
+void fn_np1 (int a[n][n + 1]);
+void fnp1_np1 (int a[n + 1][n + 1]);
+
+void fn_n_n (int a[n][n][n]);
+void fn_n_np1 (int a[n][n][n + 1]);
+void fn_np1_np1 (int a[n][n + 1][n + 1]);
+void fnp1_np1_np1 (int a[n + 1][n + 1][n + 1]);
+
+
+void gn (int a[n]) { fn (a); }
+void gnp1 (int a[n + 1]) { fnp1 (a); }
+
+void gx_n (int a[][n]) { fx_n (a); }
+void gx_np1 (int a[][n + 1]) { fx_np1 (a); }
+
+void g2_n (int a[2][n]) { f2_n (a); }
+void g2_np1 (int a[2][n + 1]) { f2_np1 (a); }
+
+void gn_3 (int a[n][3]) { fn_3 (a); }
+void gnp1_3 (int a[n + 1][3]) { fnp1_3 (a); }
+
+void gn_n (int a[n][n]) { fn_n (a); }
+void gn_np1 (int a[n][n + 1]) { fn_np1 (a); }
+void gnp1_np1 (int a[n + 1][n + 1]) { fnp1_np1 (a); }
+
+void gn_n_n (int a[n][n][n]) { fn_n_n (a); }
+void gn_n_np1 (int a[n][n][n + 1]) { fn_n_np1 (a); }
+void gn_np1_np1 (int a[n][n + 1][n + 1]) { fn_np1_np1 (a); }
+void gnp1_np1_np1 (int a[n + 1][n + 1][n + 1]) { fnp1_np1_np1 (a); }
diff --git a/gcc/testsuite/gcc.dg/pr97750.c b/gcc/testsuite/gcc.dg/pr97750.c
new file mode 100644
index 0000000..90c3dc2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr97750.c
@@ -0,0 +1,21 @@
+/* PR tree-optimization/97750 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -Wall -Wextra" } */
+
+char CopyPlane_src;
+long CopyPlane_copy_pitch;
+char *CopyFromUswc_src;
+int CopyFromUswc_height;
+void CopyPlane(char *dst) {
+ __builtin_memcpy(dst, &CopyPlane_src, CopyPlane_copy_pitch);
+}
+void CopyFromUswc(long src_pitch) {
+ char *dst;
+ for (; CopyFromUswc_height;) {
+ unsigned unaligned = (long)CopyFromUswc_src;
+ if (unaligned)
+ CopyPlane(&dst[unaligned]);
+ CopyFromUswc_src += src_pitch;
+ }
+}
+/* { dg-prune-output "-Wmaybe-uninitialized" } */
diff --git a/gcc/testsuite/gcc.dg/pr97981.c b/gcc/testsuite/gcc.dg/pr97981.c
new file mode 100644
index 0000000..846b875
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr97981.c
@@ -0,0 +1,15 @@
+/* PR c/97981 */
+/* { dg-do compile } */
+/* { dg-options "-fdump-tree-original" } */
+/* { dg-final { scan-tree-dump-times "atomic_load" 2 "original" } } */
+
+
+void f(void)
+{
+ volatile _Atomic int x;
+ x;
+ volatile _Atomic double a;
+ double b;
+ b = a;
+}
+
diff --git a/gcc/testsuite/gcc.dg/pr98029.c b/gcc/testsuite/gcc.dg/pr98029.c
new file mode 100644
index 0000000..148f23c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr98029.c
@@ -0,0 +1,21 @@
+/* pr98029 */
+/* { dg-do compile } */
+/* { dg-options "-Wunused" } */
+
+double f2 (void)
+{
+ volatile double d;
+ int i;
+
+ for (d = 2.0, i = 0; i < 5; i++, d *= d) /* { dg-bogus "right-hand operand of comma expression has no effect" } */
+ ;
+
+ return d;
+}
+
+int g(void)
+{
+ volatile int x;
+ (x = 1, (void)1); /* { dg-bogus "right-hand operand of comma expression has no effect" } */
+ return x;
+}
diff --git a/gcc/testsuite/gcc.dg/pr98190.c b/gcc/testsuite/gcc.dg/pr98190.c
new file mode 100644
index 0000000..bfdd17d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr98190.c
@@ -0,0 +1,33 @@
+/* PR middle-end/98190 */
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+static int __attribute__((noipa))
+foo (const char *p, const char *q, const int len)
+{
+ for (int i = 0; i < len; p++, q++, i++)
+ {
+ int equal;
+ _Bool x, y;
+ __builtin_memcpy ((char *) &x, p, sizeof x);
+ __builtin_memcpy ((char *) &y, q, sizeof y);
+ equal = (x == y);
+ if (equal <= 0)
+ return equal;
+ }
+ return 1;
+}
+
+int
+main ()
+{
+ const _Bool buf[4] = { 1, 0, 0, 0 };
+#ifdef __aarch64__
+ register long x4 asm ("x4") = 0xdeadbeefULL;
+ register long x5 asm ("x5") = 0xcafebabeULL;
+ asm volatile (""::"r" (x4), "r" (x5));
+#endif
+ if (foo ((char *) &buf[0], (char *) &buf[0], 1) != 1)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr98211.c b/gcc/testsuite/gcc.dg/pr98211.c
new file mode 100644
index 0000000..cea371d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr98211.c
@@ -0,0 +1,51 @@
+/* { dg-do run } */
+/* { dg-options "-std=gnu90 -O3 -fgimple" } */
+
+int test_var_3;
+short arr_20[16];
+void __GIMPLE (ssa,startwith("slp"))
+test (int var_1, short int a, short int b, short int c, short int d)
+{
+ _Bool tem2;
+ _Bool tem;
+ unsigned int i_5;
+ int _24;
+ _Bool _28;
+ short int _30;
+ short int _32;
+
+ __BB(2):
+ _24 = test_var_3;
+ tem_25 = _24 != 0;
+ tem2_26 = var_1_11(D) != 0;
+ _28 = tem_25 | tem2_26;
+ _30 = _28 != _Literal (_Bool) 0 ? a_16(D) : b_15(D);
+ arr_20[0u] = _30;
+ _32 = _28 != _Literal (_Bool) 0 ? c_19(D) : d_18(D);
+ arr_20[8u] = _32;
+ arr_20[1u] = _30;
+ arr_20[9u] = _32;
+ arr_20[2u] = _30;
+ arr_20[10u] = _32;
+ arr_20[3u] = _30;
+ arr_20[11u] = _32;
+ arr_20[4u] = _30;
+ arr_20[12u] = _32;
+ arr_20[5u] = _30;
+ arr_20[13u] = _32;
+ arr_20[6u] = _30;
+ arr_20[14u] = _32;
+ arr_20[7u] = _30;
+ arr_20[15u] = _32;
+ return;
+}
+
+
+int
+main()
+{
+ test (1, 0x88, 0x77, 0x77, 0x88);
+ if (arr_20[0] != 0x88)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr98255.c b/gcc/testsuite/gcc.dg/pr98255.c
new file mode 100644
index 0000000..5cbed68
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr98255.c
@@ -0,0 +1,49 @@
+/* PR tree-optimization/98255 */
+/* { dg-do run } */
+/* { dg-options "-Os" } */
+/* { dg-additional-options "-fPIC" { target fpic } } */
+
+struct A { volatile unsigned b; unsigned c; };
+int d, *e, h, k, l;
+static struct A f;
+long g;
+static unsigned i = -2U;
+volatile int j;
+
+long
+foo (void)
+{
+ char n[4][4][3]
+ = { { {9, 2, 8}, {9, 2, 8}, {9, 2, 8}, {9} }, { {8} }, { {8} }, { {2} } };
+ while (d)
+ {
+ for (; f.c < 4; f.c++)
+ {
+ *e = 0;
+ h = n[f.c + 4][0][d];
+ }
+ while (g)
+ return n[0][3][i];
+ while (1)
+ {
+ if (k)
+ {
+ j = 0;
+ if (j)
+ continue;
+ }
+ if (l)
+ break;
+ }
+ }
+ return 0;
+}
+
+int
+main ()
+{
+ asm volatile ("" : "+g" (d), "+g" (g), "+g" (f.c));
+ asm volatile ("" : "+g" (e), "+g" (k), "+g" (l));
+ foo ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr98271.c b/gcc/testsuite/gcc.dg/pr98271.c
new file mode 100644
index 0000000..b453434
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr98271.c
@@ -0,0 +1,13 @@
+/* PR rtl-optimization/98271 */
+/* PR rtl-optimization/98276 */
+/* PR tree-optimization/98279 */
+/* { dg-do compile } */
+/* { dg-options "-O --param=align-loop-iterations=1197120096074465280 --param=gcse-cost-distance-ratio=2147483648 --param=hot-bb-frequency-fraction=2147483648" } */
+/* { dg-error "argument to .--param=align-loop-iterations=. is bigger than 2147483647" "" { target *-*-* } 0 } */
+/* { dg-error "argument to .--param=gcse-cost-distance-ratio=. is bigger than 2147483647" "" { target *-*-* } 0 } */
+/* { dg-error "argument to .--param=hot-bb-frequency-fraction=. is bigger than 2147483647" "" { target *-*-* } 0 } */
+
+void
+foo (void)
+{
+}
diff --git a/gcc/testsuite/gcc.dg/pr98272.c b/gcc/testsuite/gcc.dg/pr98272.c
new file mode 100644
index 0000000..126a616
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr98272.c
@@ -0,0 +1,22 @@
+/* PR tree-optimization/98272 */
+/* Reported by Zdenek Sojka <zsojka@seznam.cz> */
+
+/* { dg-do compile } */
+/* { dg-options "-O -fno-tree-forwprop" } */
+
+void bar (void);
+
+void
+foo (unsigned char uc)
+{
+ if (uc >= 5)
+ return;
+
+ switch (uc)
+ {
+ case 0:
+ case 2:
+ case 4:
+ bar ();
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/pr98330.c b/gcc/testsuite/gcc.dg/pr98330.c
new file mode 100644
index 0000000..bc68a6f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr98330.c
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+float f (__typeof (__builtin_pow) fn, float x)
+{
+ return fn (x, 2);
+}
diff --git a/gcc/testsuite/gcc.dg/pr98331.c b/gcc/testsuite/gcc.dg/pr98331.c
new file mode 100644
index 0000000..951b758
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr98331.c
@@ -0,0 +1,18 @@
+/* PR debug/98331 */
+/* { dg-do compile } */
+/* { dg-options "-g -O2 -fcompare-debug" } */
+/* { dg-additional-options "-march=x86-64" { target { i?86-*-* x86_64-*-* } } } */
+
+void bar (const char *);
+unsigned long long x;
+
+void
+foo (void)
+{
+ int a = 1;
+ bar ("foo");
+ int b = 2;
+ __atomic_fetch_add (&x, 1, 0);
+ int c = 3;
+ __builtin_unreachable ();
+}
diff --git a/gcc/testsuite/gcc.dg/pr98721-1.c b/gcc/testsuite/gcc.dg/pr98721-1.c
new file mode 100644
index 0000000..868b071
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr98721-1.c
@@ -0,0 +1,14 @@
+/* PR tree-optimization/98721 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+int
+foo (int n)
+{
+ if (n <= 0)
+ {
+ char vla[n]; /* { dg-message "source object 'vla' of size 0" } */
+ return __builtin_strlen (vla); /* { dg-warning "'__builtin_strlen' reading 1 or more bytes from a region of size 0" } */
+ }
+ return -1;
+}
diff --git a/gcc/testsuite/gcc.dg/pr98721-2.c b/gcc/testsuite/gcc.dg/pr98721-2.c
new file mode 100644
index 0000000..c8ca542
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr98721-2.c
@@ -0,0 +1,8 @@
+/* PR tree-optimization/98721 */
+/* { dg-do compile } */
+
+int
+foo (void)
+{
+ return __builtin_strlen (__builtin_alloca_with_align (0, 16)); /* { dg-warning "'__builtin_strlen' reading 1 or more bytes from a region of size 0" } */
+} /* { dg-message "source object '<unknown>' of size 0" "" { target *-*-* } .-1 } */
diff --git a/gcc/testsuite/gcc.dg/pr98766.c b/gcc/testsuite/gcc.dg/pr98766.c
new file mode 100644
index 0000000..d388fd2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr98766.c
@@ -0,0 +1,12 @@
+/* PR tree-optimization/98766. */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 --param=avoid-fma-max-bits=8 " } */
+/* { dg-additional-options "-march=armv8.2-a+sve" { target aarch64*-*-* } } */
+
+extern int a[];
+void c(short *d) {
+ for (int e = 0; e < 9; e++)
+ a[e] = d[e] * 2;
+}
+
diff --git a/gcc/testsuite/gcc.dg/pr98793.c b/gcc/testsuite/gcc.dg/pr98793.c
new file mode 100644
index 0000000..bb1ae9c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr98793.c
@@ -0,0 +1,38 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -Wno-psabi" } */
+
+typedef unsigned char u8;
+typedef unsigned char __attribute__((__vector_size__ (8))) v64u8;
+typedef unsigned char __attribute__((__vector_size__ (64))) v512u8;
+typedef unsigned long long u64;
+
+u64 gx;
+v512u8 gu;
+v512u8 gv;
+
+v64u8 __attribute__((__noipa__)) foo0 (u8 ax, v512u8 au, u64 ay)
+{
+ u8 lx = ax && (u8) ay;
+ v512u8 lc = 7 <= au;
+ v512u8 ld = (u8) (ay && gx) == gu;
+ v512u8 le = (v512u8) ld + (v512u8) gv;
+ v512u8 lf = le + lc;
+ return (((union
+ {
+ v512u8 a;
+ v64u8 b[8];
+ }) lf).b[3]) + lx;
+}
+
+int
+main (void)
+{
+ v64u8 x = foo0 (2, (v512u8) { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15
+ },
+ 2);
+ for (unsigned i = 0; i < sizeof (x); i++)
+ if (x[i] != (i ? 0 : 0xff))
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr98807.c b/gcc/testsuite/gcc.dg/pr98807.c
new file mode 100644
index 0000000..d4eac5a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr98807.c
@@ -0,0 +1,35 @@
+/* { dg-do run } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-options "-O2 -Wno-psabi -w" } */
+/* { dg-additional-options "-mno-sse2" { target x86_64-*-* i?86-*-* } } */
+
+#include <stdint.h>
+
+typedef uint8_t u8;
+typedef uint16_t u16;
+typedef uint32_t u32;
+typedef uint64_t u64;
+typedef u64 __attribute__((__vector_size__ (16))) v128u64;
+u16 foo0_u16_0;
+v128u64 foo0_v64u32_0;
+u64 foo0_u64_0;
+v128u64 foo0_v128u64_2;
+
+v128u64
+foo0 (u8 u8_0, v128u64 v128u64_0)
+{
+ u32 u32_1 = u8_0 || (0, 0);
+ foo0_v128u64_2 - u8_0;
+ foo0_u16_0 |= foo0_u64_0 && u8_0 > foo0_u64_0 <= u32_1;
+ v128u64 v128u64_4 = v128u64_0 >= u8_0;
+ return v128u64_4 + foo0_v64u32_0;
+}
+
+int
+main ()
+{
+ v128u64 x = foo0 (3, (v128u64) { 0, 12 });
+ if (x[0] != 0) __builtin_abort();
+ if (x[1] != 0xffffffffffffffff) __builtin_abort();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/predict-8.c b/gcc/testsuite/gcc.dg/predict-8.c
index 5578175..ec755e2 100644
--- a/gcc/testsuite/gcc.dg/predict-8.c
+++ b/gcc/testsuite/gcc.dg/predict-8.c
@@ -8,4 +8,4 @@ int foo(float a, float b) {
return 2;
}
-/* { dg-final { scan-rtl-dump-times "65.\[34]. .guessed" 2 "expand"} } */
+/* { dg-final { scan-rtl-dump-times "99.\[678]. .guessed" 2 "expand"} } */
diff --git a/gcc/testsuite/gcc.dg/pthread-init-1.c b/gcc/testsuite/gcc.dg/pthread-init-1.c
index 8b600c3..3346c92 100644
--- a/gcc/testsuite/gcc.dg/pthread-init-1.c
+++ b/gcc/testsuite/gcc.dg/pthread-init-1.c
@@ -7,9 +7,9 @@
/* { dg-do compile } */
/* { dg-require-effective-target pthread_h } */
/* { dg-options "-Wextra -Wall" } */
-/* The RTP definition of PTHREAD_MUTEX_INITIALIZER is missing an
- * initializer for mutexAttr.mutexAttrType. */
-/* { dg-xfail-if "missing initializer" { vxworks_rtp } } */
+/* The definition of PTHREAD_MUTEX_INITIALIZER is missing an initializer for
+ mutexAttr.mutexAttrType in kernel mode for various VxWorks versions. */
+/* { dg-xfail-if "missing initializer" { vxworks_kernel } } */
#include "pthread-init-common.h"
diff --git a/gcc/testsuite/gcc.dg/pthread-init-2.c b/gcc/testsuite/gcc.dg/pthread-init-2.c
index 8ec0515..d7cd66b 100644
--- a/gcc/testsuite/gcc.dg/pthread-init-2.c
+++ b/gcc/testsuite/gcc.dg/pthread-init-2.c
@@ -9,6 +9,9 @@
/* { dg-options "-Wextra -Wall -ansi" } */
/* { dg-options "-Wextra -Wall -ansi -D_POSIX_C_SOURCE=199506L" { target { *-*-hpux* } } } */
/* { dg-options "-Wextra -Wall -ansi -D_XOPEN_SOURCE=500" { target { powerpc-ibm-aix* } } } */
+/* The definition of PTHREAD_MUTEX_INITIALIZER is missing an initializer for
+ mutexAttr.mutexAttrType in kernel mode for various VxWorks versions. */
+/* { dg-xfail-if "missing initializer" { vxworks_kernel } } */
#include "pthread-init-common.h"
diff --git a/gcc/testsuite/gcc.dg/qual-assign-7.c b/gcc/testsuite/gcc.dg/qual-assign-7.c
new file mode 100644
index 0000000..3e064e8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/qual-assign-7.c
@@ -0,0 +1,18 @@
+/* test that assignment drops qualifiers, Bug 98047 */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+
+volatile int jv;
+extern int j;
+extern typeof(jv = 1) j;
+
+_Atomic int ja;
+extern typeof(ja = 1) j;
+
+int * __restrict pa;
+extern int *p;
+extern typeof(pa = 0) p;
+
+
+
diff --git a/gcc/testsuite/gcc.dg/rtl/rtl.exp b/gcc/testsuite/gcc.dg/rtl/rtl.exp
index fb9981c..5253314 100644
--- a/gcc/testsuite/gcc.dg/rtl/rtl.exp
+++ b/gcc/testsuite/gcc.dg/rtl/rtl.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.before-fwprop.c b/gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.before-fwprop.c
index 075f744..1dadf55 100644
--- a/gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.before-fwprop.c
+++ b/gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.before-fwprop.c
@@ -31,7 +31,7 @@ int __RTL (startwith ("fwprop1")) test_returning_constant (void)
}
/* Verify that insn 5 is eliminated. */
-/* { dg-final { scan-rtl-dump "deferring deletion of insn with uid = 5" "fwprop1" } } */
+/* { dg-final { scan-rtl-dump "deleting insn with uid = 5" "fwprop1" } } */
/* { dg-final { scan-rtl-dump "Deleted 1 trivially dead insns" "fwprop1" } } */
int main (void)
diff --git a/gcc/testsuite/gcc.dg/sancov/sancov.exp b/gcc/testsuite/gcc.dg/sancov/sancov.exp
index 0b16da0..ab69d12 100644
--- a/gcc/testsuite/gcc.dg/sancov/sancov.exp
+++ b/gcc/testsuite/gcc.dg/sancov/sancov.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp b/gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp
index 26cd7ac..852e554 100644
--- a/gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp
+++ b/gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/special/mips-abi.exp b/gcc/testsuite/gcc.dg/special/mips-abi.exp
index 1affab1..23aacf5 100644
--- a/gcc/testsuite/gcc.dg/special/mips-abi.exp
+++ b/gcc/testsuite/gcc.dg/special/mips-abi.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/special/special.exp b/gcc/testsuite/gcc.dg/special/special.exp
index d92624c..29175f3 100644
--- a/gcc/testsuite/gcc.dg/special/special.exp
+++ b/gcc/testsuite/gcc.dg/special/special.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/sso/sso.exp b/gcc/testsuite/gcc.dg/sso/sso.exp
index 80f534b..1755823 100644
--- a/gcc/testsuite/gcc.dg/sso/sso.exp
+++ b/gcc/testsuite/gcc.dg/sso/sso.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/tls/tls.exp b/gcc/testsuite/gcc.dg/tls/tls.exp
index 0ab3105..ef7d21c 100644
--- a/gcc/testsuite/gcc.dg/tls/tls.exp
+++ b/gcc/testsuite/gcc.dg/tls/tls.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/tm/tm.exp b/gcc/testsuite/gcc.dg/tm/tm.exp
index a0a2ad5..804b087 100644
--- a/gcc/testsuite/gcc.dg/tm/tm.exp
+++ b/gcc/testsuite/gcc.dg/tm/tm.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/torture/ftrapv-2.c b/gcc/testsuite/gcc.dg/torture/ftrapv-2.c
index 75e464f..4d746c9 100644
--- a/gcc/testsuite/gcc.dg/torture/ftrapv-2.c
+++ b/gcc/testsuite/gcc.dg/torture/ftrapv-2.c
@@ -12,7 +12,7 @@
/* Verify SImode operations properly trap. PR middle-end/68046 */
-int i = 0x7fffffff;
+volatile int i = 0x7fffffff;
int main(void)
{
@@ -20,7 +20,7 @@ int main(void)
int status = 0;
if (child == 0)
{
- volatile int x = i + 1 < i;
+ i = i + 1;
exit (0);
}
else if (child == -1)
diff --git a/gcc/testsuite/gcc.dg/torture/pr97559-1.c b/gcc/testsuite/gcc.dg/torture/pr97559-1.c
new file mode 100644
index 0000000..d5de3bd
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr97559-1.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+
+int printf (char *, ...);
+
+int a, b, c, d;
+
+void e () {
+ int f = a;
+ if (b) {
+ L1:
+ b = 0;
+ L2:
+ if (c) {
+ if (f)
+ printf("0");
+ goto L1;
+ }
+ }
+ if (d)
+ goto L2;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr97559-2.c b/gcc/testsuite/gcc.dg/torture/pr97559-2.c
new file mode 100644
index 0000000..b512e6d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr97559-2.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+
+int a, b, c, d;
+
+void e() {
+ int f = b;
+ if (a) {
+ L1:
+ a = 0;
+ L2:
+ if (a) {
+ c = b;
+ goto L1;
+ }
+ }
+ if (d)
+ goto L2;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr98191.c b/gcc/testsuite/gcc.dg/torture/pr98191.c
new file mode 100644
index 0000000..7c4a6d1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr98191.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-w -Wno-psabi" } */
+
+typedef double v2df __attribute__((vector_size(2*sizeof(double))));
+
+v2df foo (double *y)
+{
+ v2df x = (v2df){ 1.0, 2.0 };
+ x[0] = *y;
+ return x;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr98219-1.c b/gcc/testsuite/gcc.dg/torture/pr98219-1.c
new file mode 100644
index 0000000..89b5aa3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr98219-1.c
@@ -0,0 +1,45 @@
+/* { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! ia32 } } } } */
+/* { dg-skip-if "PR81210 sp not aligned to 16 bytes" { *-*-darwin* } } */
+/* { dg-options "-muintr -mgeneral-regs-only" } */
+
+#include <x86gprintrin.h>
+
+extern void exit (int);
+typedef unsigned int uword_t __attribute__ ((mode (__word__)));
+
+#define UIRRV 0x12345670
+#define RIP 0x12345671
+#define RFLAGS 0x12345672
+#define RSP 0x12345673
+
+#define STRING(x) XSTRING(x)
+#define XSTRING(x) #x
+#define ASMNAME(cname) ASMNAME2 (__USER_LABEL_PREFIX__, cname)
+#define ASMNAME2(prefix, cname) XSTRING (prefix) cname
+
+void
+__attribute__((interrupt, used))
+fn (struct __uintr_frame *frame, uword_t uirrv)
+{
+ if (UIRRV != uirrv)
+ __builtin_abort ();
+ if (RIP != frame->rip)
+ __builtin_abort ();
+ if (RFLAGS != frame->rflags)
+ __builtin_abort ();
+ if (RSP != frame->rsp)
+ __builtin_abort ();
+
+ exit (0);
+}
+
+int
+main ()
+{
+ asm ("push $" STRING (RSP) "; \
+ push $" STRING (RFLAGS) "; \
+ push $" STRING (RIP) "; \
+ push $" STRING (UIRRV) "; \
+ jmp " ASMNAME ("fn"));
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr98219-2.c b/gcc/testsuite/gcc.dg/torture/pr98219-2.c
new file mode 100644
index 0000000..c2f33f8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr98219-2.c
@@ -0,0 +1,59 @@
+/* { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! ia32 } } } } */
+/* { dg-skip-if "PR81210 sp not aligned to 16 bytes" { *-*-darwin* } } */
+/* { dg-options "-muintr -mgeneral-regs-only" } */
+
+#include <x86gprintrin.h>
+
+extern void exit (int);
+typedef unsigned int uword_t __attribute__ ((mode (__word__)));
+typedef int aligned __attribute__((aligned(64)));
+
+#define UIRRV 0x12345670
+#define RIP 0x12345671
+#define RFLAGS 0x12345672
+#define RSP 0x12345673
+
+#define STRING(x) XSTRING(x)
+#define XSTRING(x) #x
+#define ASMNAME(cname) ASMNAME2 (__USER_LABEL_PREFIX__, cname)
+#define ASMNAME2(prefix, cname) XSTRING (prefix) cname
+
+int
+check_int (int *i, int align)
+{
+ *i = 20;
+ if ((((ptrdiff_t) i) & (align - 1)) != 0)
+ __builtin_abort ();
+ return *i;
+}
+
+void
+__attribute__((interrupt, used))
+fn (struct __uintr_frame *frame, uword_t uirrv)
+{
+ aligned i;
+ if (check_int (&i, __alignof__(i)) != i)
+ __builtin_abort ();
+
+ if (UIRRV != uirrv)
+ __builtin_abort ();
+ if (RIP != frame->rip)
+ __builtin_abort ();
+ if (RFLAGS != frame->rflags)
+ __builtin_abort ();
+ if (RSP != frame->rsp)
+ __builtin_abort ();
+
+ exit (0);
+}
+
+int
+main ()
+{
+ asm ("push $" STRING (RSP) "; \
+ push $" STRING (RFLAGS) "; \
+ push $" STRING (RIP) "; \
+ push $" STRING (UIRRV) "; \
+ jmp " ASMNAME ("fn"));
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr98235.c b/gcc/testsuite/gcc.dg/torture/pr98235.c
new file mode 100644
index 0000000..5f59013
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr98235.c
@@ -0,0 +1,34 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-fallow-store-data-races" } */
+
+char tcube[3][9];
+int cur_move;
+void perm_cube(void) {
+ int i, j, k, tmp;
+ for (; i < cur_move; i++)
+ while (k-- >= 0)
+ switch (j) {
+ case 0:
+ tmp = tcube[0][6];
+ tcube[2][8] = tcube[0][8];
+ tcube[0][8] = tmp;
+ tmp = tcube[0][5];
+ tcube[0][5] = tcube[1][8];
+ tcube[1][8] = tcube[2][5];
+ tcube[2][5] = tcube[1][2];
+ tcube[1][2] = tcube[2][1];
+ tcube[2][1] = tcube[1][0];
+ tcube[0][6] = tmp;
+ tmp = tcube[0][3];
+ tcube[0][3] = tcube[1][0];
+ tcube[1][0] = tcube[2][3];
+ tcube[2][3] = tcube[1][6];
+ tcube[1][6] = tmp;
+ break;
+ case 5:
+ tmp = tcube[2][0];
+ tcube[2][0] = tcube[2][2];
+ tcube[2][2] = tcube[2][8];
+ tcube[2][3] = tmp;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr98289.c b/gcc/testsuite/gcc.dg/torture/pr98289.c
new file mode 100644
index 0000000..07094a1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr98289.c
@@ -0,0 +1,52 @@
+/* PR rtl-optimization/98289 */
+/* { dg-do compile { target freorder } } */
+/* { dg-options "-O2 -freorder-blocks-and-partition" } */
+
+int bar (void) __attribute__((cold));
+
+void
+foo (int x)
+{
+ if (x)
+ __builtin_abort ();
+}
+
+void
+baz (int x)
+{
+ if (__builtin_expect (x, 0))
+ {
+ bar ();
+ bar ();
+ bar ();
+ }
+}
+
+void
+qux (int x, int y, int z, int w)
+{
+ if (x || y || z || w)
+ __builtin_abort ();
+}
+
+int
+corge (int x, int y, int z, int w, int u)
+{
+ if (__builtin_expect (x, 0))
+ goto lab;
+ u++;
+ if (__builtin_expect (y, 0))
+ goto lab;
+ u *= 2;
+ if (__builtin_expect (z, 0))
+ goto lab;
+ u |= 42;
+ if (__builtin_expect (w, 0))
+ {
+ lab:;
+ bar ();
+ bar ();
+ if (bar () > 32) goto lab;
+ }
+ return u;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr98640.c b/gcc/testsuite/gcc.dg/torture/pr98640.c
new file mode 100644
index 0000000..b187781
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr98640.c
@@ -0,0 +1,22 @@
+/* { dg-do run } */
+/* { dg-require-effective-target stdint_types } */
+
+#include <stdint.h>
+
+uint64_t var_0 = 18128133247277979402ULL;
+int64_t var_14 = 6557021550272328915LL;
+uint64_t var_83 = 10966786425750692026ULL;
+
+void test()
+{
+ var_14 = var_0 + (_Bool)7;
+ var_83 = 1 + (int)var_0; // 1 + 888395530
+}
+
+int main()
+{
+ test();
+ if (var_83 != 888395531)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr98758.c b/gcc/testsuite/gcc.dg/torture/pr98758.c
new file mode 100644
index 0000000..7b9fdb2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr98758.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+
+long *a, *b;
+long c;
+void d(void)
+{
+ b = a;
+ while (c) {
+ *a = (__INTPTR_TYPE__)(a += (long)1 << (sizeof(long) * 8 - 10));
+ c = b[0];
+ b = a;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr98773.c b/gcc/testsuite/gcc.dg/torture/pr98773.c
new file mode 100644
index 0000000..026e8ef
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr98773.c
@@ -0,0 +1,19 @@
+/* { dg-do run } */
+
+char a[128];
+
+void __attribute__((noipa))
+foo ()
+{
+ for (unsigned i = 27; i >= 5; --i)
+ a[i] = a[i-5];
+}
+
+int main()
+{
+ __builtin_memcpy (a, "Hello World", sizeof ("Hello World"));
+ foo ();
+ if (__builtin_memcmp (a + 5, "Hello World", sizeof ("Hello World")) != 0)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr98786.c b/gcc/testsuite/gcc.dg/torture/pr98786.c
new file mode 100644
index 0000000..ea36471
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr98786.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-fno-tree-dce" } */
+
+void
+func_30 (void);
+
+int __attribute__ ((pure, returns_twice))
+func_38 (int g_15, int p_39)
+{
+ return !!g_15 ? p_39 : 0;
+}
+
+void
+func_26 (int func_26___trans_tmp_1)
+{
+ long int l_37 = 0;
+ int __trans_tmp_1;
+
+ func_26___trans_tmp_1 = func_38 (func_26___trans_tmp_1, 1);
+ __trans_tmp_1 = func_38 (func_26___trans_tmp_1, l_37);
+ l_37 = 1;
+ func_30 ();
+}
diff --git a/gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp b/gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp
index c2baddd..d77eae4 100644
--- a/gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp
+++ b/gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/torture/tls/tls.exp b/gcc/testsuite/gcc.dg/torture/tls/tls.exp
index d2ea1cc..ff085c2 100644
--- a/gcc/testsuite/gcc.dg/torture/tls/tls.exp
+++ b/gcc/testsuite/gcc.dg/torture/tls/tls.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp b/gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp
index ec61795..90f2c4d 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp
+++ b/gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/asm-2.c b/gcc/testsuite/gcc.dg/tree-ssa/asm-2.c
index 00c3079..8f747b7 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/asm-2.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/asm-2.c
@@ -7,9 +7,13 @@
#ifdef __moxie__
#define REGISTER "2"
#else
+#ifdef __iq2000__
+#define REGISTER "3"
+#else
#define REGISTER "0"
#endif
#endif
+#endif
void baz(void)
{
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c b/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c
index 9e49303..7808634 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c
@@ -8,9 +8,13 @@
#ifdef __moxie__
#define REGISTER "8"
#else
+#ifdef __iq2000__
+#define REGISTER "3"
+#else
#define REGISTER "0"
#endif
#endif
+#endif
void foo (int);
void bar (int);
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-20.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-20.c
index 5966eab..ec14057 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-20.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-20.c
@@ -1,7 +1,8 @@
/* PR tree-optimization/87034 - missing -Wformat-overflow on a sprintf
- %s with a wide string
- { dg-do compile }
- { dg-options "-O2 -Wall -Wformat-overflow -ftrack-macro-expansion=0" } */
+ %s with a wide string. */
+/* { dg-do compile } */
+/* { dg-require-effective-target 4byte_wchar_t } */
+/* { dg-options "-O2 -Wall -Wformat-overflow -ftrack-macro-expansion=0" } */
typedef __WCHAR_TYPE__ wchar_t;
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/copy-sign-1.c b/gcc/testsuite/gcc.dg/tree-ssa/copy-sign-1.c
index c36112a..617a841 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/copy-sign-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/copy-sign-1.c
@@ -33,4 +33,4 @@ float i1(float x)
{
return (x <= 0.f ? 1.f : -1.f);
}
-/* { dg-final { scan-tree-dump-times "copysign" 8 "gimple"} } */
+/* { dg-final { scan-tree-dump-not "copysign" "gimple"} } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-1.c b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-1.c
index e66fa73..e5da00b 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-iftoswitch-optimized" } */
+/* { dg-options "-O2 -fdump-tree-iftoswitch-optimized --param case-values-threshold=5" } */
int global;
int foo ();
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-10.c b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-10.c
new file mode 100644
index 0000000..7b21c99
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-10.c
@@ -0,0 +1,44 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-iftoswitch-optimized --param case-values-threshold=5" } */
+
+int global;
+int foo ();
+
+int main(int argc, char **argv)
+{
+ if (argc != 1)
+ {
+ if (argc != 2)
+ {
+ if (argc == 3)
+ {
+ foo ();
+ foo ();
+ }
+ else if (argc == 4)
+ {
+ foo ();
+ }
+ else if (argc == 5)
+ {
+ global = 2;
+ }
+ else
+ global -= 123;
+ }
+ else
+ {
+ global += 1;
+ }
+ }
+ else
+ foo ();
+
+
+ global -= 12;
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump "Canonical GIMPLE case clusters: 1 2 3 4 5" "iftoswitch" } } */
+/* { dg-final { scan-tree-dump "Condition chain with \[^\n\r]\* BBs transformed into a switch statement." "iftoswitch" } } */
+
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr47059.c b/gcc/testsuite/gcc.dg/tree-ssa/pr47059.c
new file mode 100644
index 0000000..9f9c61a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr47059.c
@@ -0,0 +1,45 @@
+/* { dg-do compile } */
+/* { dg-options "-Os -fdump-tree-optimized" } */
+
+
+struct struct1
+{
+ void *data;
+ unsigned short f1;
+ unsigned short f2;
+};
+typedef struct struct1 S1;
+
+struct struct2
+{
+ int f3;
+ S1 f4;
+};
+typedef struct struct2 S2;
+
+
+extern void foo (S1 *ptr);
+extern S2 gstruct2_var;
+extern S1 gstruct1_var;
+
+static inline S1 bar (const S1 *ptr) __attribute__ ((always_inline));
+
+static inline S1
+bar (const S1 *ptr)
+{
+ S1 ls_var = *ptr;
+ foo (&ls_var);
+ return ls_var;
+}
+
+int
+main ()
+{
+ S2 *ps_var;
+
+ ps_var = &gstruct2_var;
+ ps_var->f4 = bar (&gstruct1_var);
+
+ return 0;
+}
+/* { dg-final { scan-tree-dump-times "short unsigned int\[^*\]*;" 0 "optimized"} } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr56719.c b/gcc/testsuite/gcc.dg/tree-ssa/pr56719.c
new file mode 100644
index 0000000..cc999f9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr56719.c
@@ -0,0 +1,33 @@
+/* PR tree-optimization/56719 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times " > 1023" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " > 2047" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " > 8191" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " <= 1023" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " <= 4095" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " <= 8191" 1 "optimized" } } */
+
+int
+f1 (int x, int y)
+{
+ return x > 0x3ffU || y > 0x3ffU;
+}
+
+int
+f2 (int x, int y, int z, unsigned w)
+{
+ return x > 0x1fffU || z > 0x7ffU || w > 0x7ffU || y > 0x1fffU;
+}
+
+int
+f3 (int x, int y)
+{
+ return x <= 0x3ffU && y <= 0x3ffU;
+}
+
+int
+f4 (int x, int y, unsigned z, unsigned w)
+{
+ return x <= 0x1fffU && z <= 0xfff && w <= 0xfff && y <= 0x1fffU;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr94785.c b/gcc/testsuite/gcc.dg/tree-ssa/pr94785.c
new file mode 100644
index 0000000..9239284
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr94785.c
@@ -0,0 +1,36 @@
+/* PR tree-optimization/94785 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times " = ABS_EXPR <v_\[0-9]*\\\(D\\\)>;" 2 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " = ABSU_EXPR <v_\[0-9]*\\\(D\\\)>;" 2 "optimized" } } */
+
+int
+f1 (int v)
+{
+ return (1 | -(v < 0)) * v;
+}
+
+unsigned
+f2 (int v)
+{
+ return (1U | -(v < 0)) * v;
+}
+
+int
+f3 (int v)
+{
+ int a = v < 0;
+ int b = -a;
+ int c = 1 | b;
+ return c * v;
+}
+
+unsigned
+f4 (int v)
+{
+ int a = v < 0;
+ int b = -a;
+ unsigned c = b;
+ unsigned d = c | 1;
+ return d * v;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr94802-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr94802-1.c
new file mode 100644
index 0000000..8175704
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr94802-1.c
@@ -0,0 +1,68 @@
+/* PR tree-optimization/94802 */
+/* { dg-do run } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-not " = __builtin_clz " "optimized" } } */
+
+__attribute__((noipa)) int
+f1 (int a, int b)
+{
+ return __builtin_clz (a - b) != 0;
+}
+
+__attribute__((noipa)) int
+f2 (int x)
+{
+ return __builtin_clz (x) == 0;
+}
+
+__attribute__((noipa)) int
+f3 (int x)
+{
+ return __builtin_clz (x) != 0;
+}
+
+__attribute__((noipa)) int
+f4 (int a, int b)
+{
+ return __builtin_clz (a - b) == sizeof (int) * __CHAR_BIT__ - 1;
+}
+
+__attribute__((noipa)) int
+f5 (int x)
+{
+ return __builtin_clz (x) == sizeof (int) * __CHAR_BIT__ - 1;
+}
+
+__attribute__((noipa)) int
+f6 (int x)
+{
+ return __builtin_clz (x) != sizeof (int) * __CHAR_BIT__ - 1;
+}
+
+int
+main ()
+{
+ if (f1 (5, 7) != 0
+ || f1 (7, 5) != 1
+ || f2 (1) != 0
+ || f2 (137) != 0
+ || f2 (-1) != 1
+ || f2 (-137) != 1
+ || f3 (1) != 1
+ || f3 (137) != 1
+ || f3 (-1) != 0
+ || f3 (-137) != 0
+ || f4 (5, 4) != 1
+ || f4 (6, 4) != 0
+ || f4 (4, 5) != 0
+ || f5 (1) != 1
+ || f5 (17) != 0
+ || f5 (-1) != 0
+ || f5 (-17) != 0
+ || f6 (1) != 0
+ || f6 (17) != 1
+ || f6 (-1) != 1
+ || f6 (-17) != 1)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr95731.c b/gcc/testsuite/gcc.dg/tree-ssa/pr95731.c
new file mode 100644
index 0000000..39889be
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr95731.c
@@ -0,0 +1,22 @@
+/* PR tree-optimization/95731 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times " >= 0\| < 0" 6 "optimized" } } */
+
+int
+foo (int x, int y, int z, int w, long long u, long long v)
+{
+ return x >= 0 && y >= 0 && z < 0 && u < 0 && w >= 0 && v < 0;
+}
+
+int
+bar (int x, int y, int z, int w, long long u, long long v)
+{
+ return u >= 0 && x >= 0 && y >= 0 && v < 0 && z >= 0 && w >= 0;
+}
+
+int
+baz (int x, int y, int z, int w, long long u, long long v)
+{
+ return x >= 0 || u < 0 || y >= 0 || v < 0 || z >= 0 || w >= 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr95867.c b/gcc/testsuite/gcc.dg/tree-ssa/pr95867.c
new file mode 100644
index 0000000..8ab3690
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr95867.c
@@ -0,0 +1,14 @@
+/* PR tree-optimization/95867 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times " \\* " 13 "optimized" } } */
+
+#define A n * n * n * n * n * n * n * n
+#define B A * A * A * A * A * A * A * A
+#define C B * B * B * B * B * B * B * B
+
+unsigned
+foo (unsigned n)
+{
+ return C * B * B * A * n * n * n * n * n;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96094.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96094.c
new file mode 100644
index 0000000..fe9163d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96094.c
@@ -0,0 +1,34 @@
+/* PR tree-optimization/96094 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times "return 34;" 2 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "return y_\[0-9]*\\\(D\\\);" 2 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "return \[^\n\r;]*;" 4 "optimized" } } */
+
+int
+foo (int x)
+{
+ if (x >= 2U)
+ return 34;
+ return 34 / x;
+}
+
+int
+bar (int x, int y)
+{
+ if (x >= 2U)
+ return y;
+ return y / x;
+}
+
+int
+baz (_Bool x)
+{
+ return 34 / x;
+}
+
+int
+qux (_Bool x, int y)
+{
+ return y / x;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96239.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96239.c
new file mode 100644
index 0000000..a099fd9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96239.c
@@ -0,0 +1,18 @@
+/* PR tree-optimization/96239 */
+/* { dg-do compile { target { ilp32 || lp64 } } } */
+/* { dg-options "-O3 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump " r>> 8;" "optimized" { target bswap } } } */
+
+union U { unsigned char c[2]; unsigned short s; };
+
+unsigned short
+foo (unsigned short x)
+{
+ union U u;
+ u.s = x;
+ unsigned char v = u.c[0];
+ unsigned char w = u.c[1];
+ u.c[0] = w;
+ u.c[1] = v;
+ return u.s;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96272.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96272.c
new file mode 100644
index 0000000..4c9fa63
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96272.c
@@ -0,0 +1,37 @@
+/* PR tree-optimization/96272 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-widening_mul" } */
+
+unsigned
+foo (unsigned a, unsigned b)
+{
+ if (a > ~0U - b)
+ return ~0U;
+ return a + b;
+}
+
+unsigned
+bar (unsigned a, unsigned b)
+{
+ if (a <= ~0U - b)
+ return ~0U;
+ return a + b;
+}
+
+unsigned
+baz (unsigned a, unsigned b)
+{
+ if (~0U - b < a)
+ return ~0U;
+ return a + b;
+}
+
+unsigned
+qux (unsigned a, unsigned b)
+{
+ if (~0U - b >= a)
+ return ~0U;
+ return a + b;
+}
+
+/* { dg-final { scan-tree-dump-times "ADD_OVERFLOW" 4 "widening_mul" { target { i?86-*-* x86_64-*-* } } } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96669-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96669-1.c
new file mode 100644
index 0000000..6a95a6b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96669-1.c
@@ -0,0 +1,59 @@
+/* PR tree-optimization/96669 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-original" } */
+/* { dg-final { scan-tree-dump "a == 0" "original" } } */
+/* { dg-final { scan-tree-dump "return 1;" "original" } } */
+/* { dg-final { scan-tree-dump "return c == 3;" "original" } } */
+/* { dg-final { scan-tree-dump "return d != 1;" "original" } } */
+/* { dg-final { scan-tree-dump "return e != 0;" "original" } } */
+/* { dg-final { scan-tree-dump "return f == 1;" "original" } } */
+/* { dg-final { scan-tree-dump "return 0;" "original" } } */
+/* { dg-final { scan-tree-dump "return h != 1;" "original" } } */
+
+int
+f1 (int a)
+{
+ return ((1 << a) & 1) != 0;
+}
+
+int
+f2 (int b)
+{
+ return ((2 << b) & 1) == 0;
+}
+
+int
+f3 (int c)
+{
+ return ((2 << c) & 16) != 0;
+}
+
+int
+f4 (int d)
+{
+ return ((16 << d) & 32) == 0;
+}
+
+int
+f5 (int e)
+{
+ return ((1 >> e) & 1) == 0;
+}
+
+int
+f6 (int f)
+{
+ return ((2 >> f) & 1) != 0;
+}
+
+int
+f7 (int g)
+{
+ return ((1 >> g) & 2) != 0;
+}
+
+int
+f8 (int h)
+{
+ return ((32 >> h) & 16) == 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96669-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96669-2.c
new file mode 100644
index 0000000..47b885f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96669-2.c
@@ -0,0 +1,30 @@
+/* PR tree-optimization/96669 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-original" } */
+/* { dg-final { scan-tree-dump "a == 0" "original" } } */
+/* { dg-final { scan-tree-dump-times "return 0;" 2 "original" } } */
+/* { dg-final { scan-tree-dump "c == 0" "original" } } */
+
+int
+f1 (int a)
+{
+ return ((1 << a) & 1);
+}
+
+int
+f2 (int b)
+{
+ return ((2 << b) & 1);
+}
+
+int
+f3 (int c)
+{
+ return ((35 << c) & 1);
+}
+
+int
+f4 (int d)
+{
+ return ((42 << d) & 1);
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96671-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96671-1.c
new file mode 100644
index 0000000..42c5b27
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96671-1.c
@@ -0,0 +1,51 @@
+/* PR tree-optimization/96671 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times " \\^ " 6 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " ~" 6 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " & " 6 "optimized" } } */
+
+int
+foo (int a, int b, int c)
+{
+ return (a ^ b) & ((b ^ c) ^ a);
+}
+
+int
+bar (int a, int b, int c)
+{
+ return (a ^ b) & ((b ^ a) ^ c);
+}
+
+int
+baz (int a, int b, int c)
+{
+ return (a ^ b) & ((a ^ c) ^ b);
+}
+
+int
+qux (int a, int b, int c)
+{
+ int d = a ^ b;
+ int e = b ^ c;
+ int f = e ^ a;
+ return d & f;
+}
+
+int
+corge (int a, int b, int c)
+{
+ int d = a ^ b;
+ int e = b ^ a;
+ int f = c ^ e;
+ return d & f;
+}
+
+int
+garply (int a, int b, int c)
+{
+ int d = a ^ b;
+ int e = a ^ c;
+ int f = b ^ e;
+ return d & f;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96671-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96671-2.c
new file mode 100644
index 0000000..185fd11
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96671-2.c
@@ -0,0 +1,51 @@
+/* PR tree-optimization/96671 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times " \\^ " 6 "optimized" } } */
+/* { dg-final { scan-tree-dump-not " ~" "optimized" } } */
+/* { dg-final { scan-tree-dump-times " \\| " 6 "optimized" } } */
+
+int
+foo (int a, int b, int c)
+{
+ return (a ^ b) | ((b ^ c) ^ a);
+}
+
+int
+bar (int a, int b, int c)
+{
+ return (a ^ b) | ((b ^ a) ^ c);
+}
+
+int
+baz (int a, int b, int c)
+{
+ return (a ^ b) | ((a ^ c) ^ b);
+}
+
+int
+qux (int a, int b, int c)
+{
+ int d = a ^ b;
+ int e = b ^ c;
+ int f = e ^ a;
+ return d | f;
+}
+
+int
+corge (int a, int b, int c)
+{
+ int d = a ^ b;
+ int e = b ^ a;
+ int f = c ^ e;
+ return d | f;
+}
+
+int
+garply (int a, int b, int c)
+{
+ int d = a ^ b;
+ int e = a ^ c;
+ int f = b ^ e;
+ return d | f;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96681.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96681.c
new file mode 100644
index 0000000..6d72a1a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96681.c
@@ -0,0 +1,35 @@
+/* PR tree-optimization/96681 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times " \\^ " 5 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " (?:<|>=) 0" 5 "optimized" } } */
+
+int
+foo (int x, int y)
+{
+ return (x < 0) ^ (y < 0);
+}
+
+int
+bar (int x, int y)
+{
+ return (x > -1) ^ (y > -1);
+}
+
+int
+baz (int x, int y)
+{
+ return (x ^ y) < 0;
+}
+
+int
+qux (int x, int y)
+{
+ return (x ^ y) >= 0;
+}
+
+int
+corge (int x, int y)
+{
+ return (x >= 0) ^ (y < 0);
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96685-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96685-1.c
new file mode 100644
index 0000000..eb3b1ea
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96685-1.c
@@ -0,0 +1,52 @@
+/* PR tree-optimization/96685 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times "return 1;" 6 "optimized" } } */
+
+unsigned
+f1 (unsigned x, unsigned y)
+{
+ unsigned a = ~(x - y);
+ unsigned b = ~x + y;
+ return a == b;
+}
+
+unsigned
+f2 (unsigned x)
+{
+ unsigned a = ~(x + -124U);
+ unsigned b = ~x + 124U;
+ return a == b;
+}
+
+unsigned
+f3 (unsigned x)
+{
+ unsigned a = ~(x + 124U);
+ unsigned b = ~x + -124U;
+ return a == b;
+}
+
+int
+f4 (int x, int y)
+{
+ int a = ~(x - y);
+ int b = ~x + y;
+ return a == b;
+}
+
+int
+f5 (int x)
+{
+ int a = ~(x + -124);
+ int b = ~x + 124;
+ return a == b;
+}
+
+int
+f6 (int x)
+{
+ int a = ~(x + 124);
+ int b = ~x + -124;
+ return a == b;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96685-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96685-2.c
new file mode 100644
index 0000000..e3c1ac7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96685-2.c
@@ -0,0 +1,40 @@
+/* PR tree-optimization/96685 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times "return 1;" 4 "optimized" } } */
+
+int
+f1 (unsigned x, unsigned y)
+{
+ unsigned int r1 = (x - y);
+ r1 = ~r1;
+ unsigned int r2 = ~(x - y);
+ return r1 == r2;
+}
+
+int
+f2 (unsigned x, unsigned y)
+{
+ unsigned int r1 = (x - 23);
+ r1 = ~r1;
+ unsigned int r2 = ~(x - 23);
+ return r1 == r2;
+}
+
+int
+f3 (int x, int y)
+{
+ int r1 = (x - y);
+ r1 = ~r1;
+ int r2 = ~(x - y);
+ return r1 == r2;
+}
+
+int
+f4 (int x, int y)
+{
+ int r1 = (x - 23);
+ r1 = ~r1;
+ int r2 = ~(x - 23);
+ return r1 == r2;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96685-3.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96685-3.c
new file mode 100644
index 0000000..b3c1855
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96685-3.c
@@ -0,0 +1,43 @@
+/* PR tree-optimization/96685 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times "return 1;" 4 "optimized" } } */
+
+int
+f1 (unsigned x, unsigned y)
+{
+ unsigned int r1 = (x - y);
+ r1 = ~r1;
+ unsigned int r2 = (y - x);
+ r2 = r2 - 1;
+ return r1 == r2;
+}
+
+int
+f2 (unsigned x, unsigned y)
+{
+ unsigned int r1 = (x - 23);
+ r1 = ~r1;
+ unsigned int r2 = (23 - x);
+ r2 = r2 - 1;
+ return r1 == r2;
+}
+
+int
+f3 (int x, int y)
+{
+ int r1 = (x - 23);
+ r1 = ~r1;
+ int r2 = (23 - x);
+ --r2;
+ return r1 == r2;
+}
+
+int
+f4 (int x, int y)
+{
+ int r1 = (x - 23);
+ r1 = ~r1;
+ int r2 = (22 - x);
+ return r1 == r2;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96688.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96688.c
new file mode 100644
index 0000000..acaa0f6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96688.c
@@ -0,0 +1,24 @@
+/* PR tree-optimization/96688 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times " = -124 >> " 2 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " >> " 3 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " = ~" 1 "optimized" } } */
+
+int
+foo (int x)
+{
+ return ~(123 >> x);
+}
+
+unsigned
+bar (int x)
+{
+ return ~(123U >> x);
+}
+
+unsigned
+baz (int x)
+{
+ return ~(~123U >> x);
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96691.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96691.c
new file mode 100644
index 0000000..a254cc7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96691.c
@@ -0,0 +1,21 @@
+/* PR tree-optimization/96691 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times " \\\| 123;" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " \\\& 123;" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " \\\^ -315;" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times " \\\^ 314;" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-not " \\\^ 321;" "optimized" } } */
+/* { dg-final { scan-tree-dump-not " = ~" "optimized" } } */
+
+int
+foo (int x)
+{
+ return (~x | 123) ^ 321;
+}
+
+int
+bar (int x)
+{
+ return (~x & 123) ^ 321;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96782.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96782.c
new file mode 100644
index 0000000..0444eef
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96782.c
@@ -0,0 +1,17 @@
+/* PR tree-optimization/96782 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times "return 0;" 1 "optimized" } } */
+/* { dg-final { scan-tree-dump-times "return 1;" 1 "optimized" } } */
+
+int
+foo (int a)
+{
+ return a == ~a;
+}
+
+int
+bar (int b)
+{
+ return ~b != b;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96928.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96928.c
new file mode 100644
index 0000000..2091357
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96928.c
@@ -0,0 +1,38 @@
+/* PR tree-optimization/96928 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-phiopt2" } */
+/* { dg-final { scan-tree-dump-times " = a_\[0-9]*\\\(D\\\) >> " 5 "phiopt2" } } */
+/* { dg-final { scan-tree-dump-times " = ~c_\[0-9]*\\\(D\\\);" 1 "phiopt2" } } */
+/* { dg-final { scan-tree-dump-times " = ~" 1 "phiopt2" } } */
+/* { dg-final { scan-tree-dump-times " = \[abc_0-9\\\(\\\)D]* \\\^ " 5 "phiopt2" } } */
+/* { dg-final { scan-tree-dump-not "a < 0" "phiopt2" } } */
+
+int
+foo (int a)
+{
+ return a < 0 ? ~a : a;
+}
+
+int
+bar (int a, int b)
+{
+ return a < 0 ? ~b : b;
+}
+
+unsigned
+baz (int a, unsigned int b)
+{
+ return a < 0 ? ~b : b;
+}
+
+unsigned
+qux (int a, unsigned int c)
+{
+ return a >= 0 ? ~c : c;
+}
+
+int
+corge (int a, int b)
+{
+ return a >= 0 ? b : ~b;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr97260.c b/gcc/testsuite/gcc.dg/tree-ssa/pr97260.c
new file mode 100644
index 0000000..9b3723b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr97260.c
@@ -0,0 +1,11 @@
+/* PR tree-optimization/97260 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump "return 0;" "optimized" } } */
+
+int
+foo (void)
+{
+ const char a[] = "1234";
+ return __builtin_memcmp (a, "1234", 4);
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr98182.c b/gcc/testsuite/gcc.dg/tree-ssa/pr98182.c
new file mode 100644
index 0000000..29a547e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr98182.c
@@ -0,0 +1,18 @@
+/* PR tree-optimization/98182 */
+/* { dg-do compile } */
+/* { dg-options "-O1 --param case-values-threshold=1 -fdump-tree-iftoswitch-optimized" } */
+
+int global;
+int foo ();
+
+int main(int argc, char **argv)
+{
+ if (argc != 1)
+ __builtin_abort ();
+ else if (argc != 2)
+ __builtin_abort ();
+ else
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-not "Condition chain" "iftoswitch" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr98455.c b/gcc/testsuite/gcc.dg/tree-ssa/pr98455.c
new file mode 100644
index 0000000..24e249f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr98455.c
@@ -0,0 +1,19 @@
+/* PR tree-optimization/98455 */
+/* { dg-do compile } */
+/* { dg-options "-O1 -fno-tree-dce --param case-values-threshold=1" } */
+
+void
+n4 (int io, int vb)
+{
+ double uc[2] = { 1.0, 2.0, };
+
+ if (io == 0)
+ uc[0] = 0.0;
+
+ for (;;)
+ if (io == 0)
+ if (vb == 0)
+ uc[0] = uc[1];
+ else if (vb == 1)
+ uc[1] = 0.0;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr98513.c b/gcc/testsuite/gcc.dg/tree-ssa/pr98513.c
new file mode 100644
index 0000000..c15d6bd
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr98513.c
@@ -0,0 +1,47 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fgimple" } */
+
+__attribute__((noipa))
+void __GIMPLE (ssa,startwith("evrp"))
+foo (int x, int minus_1)
+{
+ int tem;
+ unsigned int _1;
+ unsigned int _2;
+
+ __BB(2):
+ tem_4 = minus_1_3(D);
+ tem_5 = tem_4 + 2;
+ _1 = (unsigned int) x_6(D);
+ _2 = _1 + 2147483647u;
+ if (_2 > 1u)
+ goto __BB3;
+ else
+ goto __BB6;
+
+ __BB(3):
+ if (x_6(D) <= tem_5)
+ goto __BB4;
+ else
+ goto __BB6;
+
+ __BB(4):
+ if (x_6(D) > 5)
+ goto __BB5;
+ else
+ goto __BB6;
+
+ __BB(5):
+ __builtin_exit (0);
+
+ __BB(6):
+ return;
+
+}
+
+int
+main()
+{
+ foo (10, 100);
+ __builtin_abort ();
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/reassoc-37.c b/gcc/testsuite/gcc.dg/tree-ssa/reassoc-37.c
index 624b2a8..948fa3b 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/reassoc-37.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/reassoc-37.c
@@ -12,5 +12,5 @@ foo (int x)
}
/* Check if the tests have been folded into a bit test. */
-/* { dg-final { scan-tree-dump "(8784908|0x0*860c0c)" "optimized" { target i?86-*-* x86_64-*-* } } } */
+/* { dg-final { scan-tree-dump "(8784908|-8784909|0x0*860c0c)" "optimized" { target i?86-*-* x86_64-*-* } } } */
/* { dg-final { scan-tree-dump "(<<|>>)" "optimized" { target i?86-*-* x86_64-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-54.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-54.c
index be7537e..02ebf06 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-54.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-54.c
@@ -1,6 +1,6 @@
/* { dg-do run } */
/* { dg-require-effective-target int32plus } */
-/* { dg-options "-O -fdump-tree-fre1 -fdump-tree-dse1" } */
+/* { dg-options "-O -fdump-tree-forwprop4 -fdump-tree-dse1" } */
extern void abort (void);
@@ -51,6 +51,6 @@ int main()
return 0;
}
-/* { dg-final { scan-tree-dump "\\(char\\) i_" "fre1" } } */
-/* { dg-final { scan-tree-dump "\\(short int\\) i_" "fre1" } } */
+/* { dg-final { scan-tree-dump "\\(char\\) i_" "forwprop4" } } */
+/* { dg-final { scan-tree-dump "\\(short int\\) i_" "forwprop4" } } */
/* { dg-final { scan-tree-dump-not "u.i =" "dse1" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp b/gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp
index 7d262ff..2a22ea9 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp
+++ b/gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/tsan/atomic-fence.c b/gcc/testsuite/gcc.dg/tsan/atomic-fence.c
new file mode 100644
index 0000000..013720c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tsan/atomic-fence.c
@@ -0,0 +1,11 @@
+/* PR sanitizer/97868 */
+/* { dg-do compile } */
+/* { dg-options "-fsanitize=thread" } */
+
+int
+main ()
+{
+ __atomic_thread_fence (__ATOMIC_RELAXED); /* { dg-warning ".atomic_thread_fence. is not supported with .-fsanitize=thread." } */
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.dg/tsan/tsan.exp b/gcc/testsuite/gcc.dg/tsan/tsan.exp
index 36a67c1..c760ae0 100644
--- a/gcc/testsuite/gcc.dg/tsan/tsan.exp
+++ b/gcc/testsuite/gcc.dg/tsan/tsan.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.dg/ubsan/ubsan.exp b/gcc/testsuite/gcc.dg/ubsan/ubsan.exp
index 62968e4..16a0a53 100644
--- a/gcc/testsuite/gcc.dg/ubsan/ubsan.exp
+++ b/gcc/testsuite/gcc.dg/ubsan/ubsan.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.dg/uninit-38.c b/gcc/testsuite/gcc.dg/uninit-38.c
new file mode 100644
index 0000000..8dacc8c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/uninit-38.c
@@ -0,0 +1,87 @@
+/* Verify that dereferencing uninitialized allocated objects and VLAs
+ correctly reflects offsets into the objects.
+ The test's main purpose is to exercise the formatting of MEM_REFs.
+ If -Wuninitialized gets smarter and detects uninitialized accesses
+ before they're turned into MEM_REFs the test will likely need to
+ be adjusted. Ditto if -Wuninitialized output changes for some
+ other reason.
+ { dg-do compile { target { { lp64 || ilp32 } || llp64 } } }
+ { dg-options "-O2 -Wall -ftrack-macro-expansion=0" } */
+
+#define CONCAT(x, y) x ## y
+#define CAT(x, y) CONCAT(x, y)
+#define UNIQ(name) CAT (name, __LINE__)
+
+typedef __SIZE_TYPE__ size_t;
+
+extern void* malloc (size_t);
+
+void sink (void*, ...);
+
+#undef T
+#define T(Type, idx, off) \
+ __attribute__ ((noipa)) \
+ void UNIQ (test_)(int n) \
+ { \
+ void *p = malloc (n); \
+ Type *q = (Type*)((char*)p + off); \
+ sink (p, q[idx]); \
+ } \
+ typedef void dummy_type
+
+T (int, 0, 0); // { dg-warning "'\\*\\(int \\*\\)p' is used uninitialized" }
+T (int, 0, 1); // { dg-warning "'\\*\\(int \\*\\)\\(\\(char \\*\\)p \\+ 1\\)'" }
+T (int, 0, 2); // { dg-warning "'\\*\\(int \\*\\)\\(\\(char \\*\\)p \\+ 2\\)'" }
+T (int, 0, 3); // { dg-warning "'\\*\\(int \\*\\)\\(\\(char \\*\\)p \\+ 3\\)'" }
+T (int, 0, 4); // { dg-warning "'\\(\\(int \\*\\)p\\)\\\[1]'" }
+T (int, 0, 5); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)p \\+ 1\\)\\)\\\[1]'" }
+T (int, 0, 6); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)p \\+ 2\\)\\)\\\[1]'" }
+T (int, 0, 7); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)p \\+ 3\\)\\)\\\[1]'" }
+T (int, 0, 8); // { dg-warning "'\\(\\(int \\*\\)p\\)\\\[2]'" }
+T (int, 0, 9); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)p \\+ 1\\)\\)\\\[2]'" }
+
+
+T (int, 1, 0); // { dg-warning "'\\(\\(int \\*\\)p\\)\\\[1]' is used uninitialized" }
+T (int, 1, 1); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)p \\+ 1\\)\\)\\\[1]'" }
+T (int, 1, 2); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)p \\+ 2\\)\\)\\\[1]'" }
+T (int, 1, 3); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)p \\+ 3\\)\\)\\\[1]'" }
+T (int, 1, 4); // { dg-warning "'\\(\\(int \\*\\)p\\)\\\[2]'" }
+T (int, 1, 5); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)p \\+ 1\\)\\)\\\[2]'" }
+T (int, 1, 6); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)p \\+ 2\\)\\)\\\[2]'" }
+T (int, 1, 7); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)p \\+ 3\\)\\)\\\[2]'" }
+T (int, 1, 8); // { dg-warning "'\\(\\(int \\*\\)p\\)\\\[3]'" }
+T (int, 1, 9); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)p \\+ 1\\)\\)\\\[3]'" }
+
+#undef T
+#define T(Type, idx, off) \
+ __attribute__ ((noipa)) \
+ void UNIQ (test_)(int n) \
+ { \
+ char a[n], *p = a; \
+ Type *q = (Type*)((char*)p + off); \
+ sink (p, q[idx]); \
+ } \
+ typedef void dummy_type
+
+T (int, 0, 0); // { dg-warning "'\\*\\(int \\*\\)a' is used uninitialized" }
+T (int, 0, 1); // { dg-warning "'\\*\\(int \\*\\)\\(\\(char \\*\\)a \\+ 1\\)'" }
+T (int, 0, 2); // { dg-warning "'\\*\\(int \\*\\)\\(\\(char \\*\\)a \\+ 2\\)'" }
+T (int, 0, 3); // { dg-warning "'\\*\\(int \\*\\)\\(\\(char \\*\\)a \\+ 3\\)'" }
+T (int, 0, 4); // { dg-warning "'\\(\\(int \\*\\)a\\)\\\[1]'" }
+T (int, 0, 5); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)a \\+ 1\\)\\)\\\[1]'" }
+T (int, 0, 6); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)a \\+ 2\\)\\)\\\[1]'" }
+T (int, 0, 7); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)a \\+ 3\\)\\)\\\[1]'" }
+T (int, 0, 8); // { dg-warning "'\\(\\(int \\*\\)a\\)\\\[2]'" }
+T (int, 0, 9); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)a \\+ 1\\)\\)\\\[2]'" }
+
+
+T (int, 1, 0); // { dg-warning "'\\(\\(int \\*\\)a\\)\\\[1]' is used uninitialized" }
+T (int, 1, 1); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)a \\+ 1\\)\\)\\\[1]'" }
+T (int, 1, 2); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)a \\+ 2\\)\\)\\\[1]'" }
+T (int, 1, 3); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)a \\+ 3\\)\\)\\\[1]'" }
+T (int, 1, 4); // { dg-warning "'\\(\\(int \\*\\)a\\)\\\[2]'" }
+T (int, 1, 5); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)a \\+ 1\\)\\)\\\[2]'" }
+T (int, 1, 6); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)a \\+ 2\\)\\)\\\[2]'" }
+T (int, 1, 7); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)a \\+ 3\\)\\)\\\[2]'" }
+T (int, 1, 8); // { dg-warning "'\\(\\(int \\*\\)a\\)\\\[3]'" }
+T (int, 1, 9); // { dg-warning "'\\(\\(int \\*\\)\\(\\(char \\*\\)a \\+ 1\\)\\)\\\[3]'" }
diff --git a/gcc/testsuite/gcc.dg/uninit-39.c b/gcc/testsuite/gcc.dg/uninit-39.c
new file mode 100644
index 0000000..0f91854
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/uninit-39.c
@@ -0,0 +1,47 @@
+/* PR c/98592 - ICE in gimple_canonical_types_compatible_p while formatting
+ a MEM_REF
+ { dg-do compile }
+ { dg-options "-O2 -Wall" } */
+
+void f (int);
+
+void vlaNx3_to_pia1 (int n)
+{
+ int a[n][3];
+
+ /* The VLA isn't formatted correctly due to PR 98587. Just verify
+ there is no ICE and a warning is issued. */
+ f (((*(int(*)[4])&a[1][2]))[3]); // { dg-warning "\\\[-Wuninitialized" }
+}
+
+void vlaNxN_to_pia1 (int n)
+{
+ int a[n][n];
+
+ /* Same as above. */
+ f (((*(int(*)[4])&a[1][2]))[3]); // { dg-warning "\\\[-Wuninitialized" }
+}
+
+void vlaNxN_to_pvla4xN (int n)
+{
+ int a[n][n];
+
+ /* Same as above. */
+ f (((*(int(*)[4][n])&a[1][2]))[3][4]); // { dg-warning "\\\[-Wuninitialized" }
+}
+
+void vlaN_to_pia2 (int n)
+{
+ int a[n];
+
+ /* Same as above. */
+ f (((*(int(*)[3][4])&a[1]))[2][3]); // { dg-warning "\\\[-Wuninitialized" }
+}
+
+void vlaN_to_pvlaNx4 (int n)
+{
+ int a[n];
+
+ /* Same as above. */
+ f (((*(int(*)[n][4])&a[1]))[1][3]); // { dg-warning "\\\[-Wuninitialized" }
+}
diff --git a/gcc/testsuite/gcc.dg/uninit-40.c b/gcc/testsuite/gcc.dg/uninit-40.c
new file mode 100644
index 0000000..c015191
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/uninit-40.c
@@ -0,0 +1,50 @@
+/* PR tree-optimization/98597 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -Wuninitialized" } */
+
+union U { double d; int i; float f; };
+struct S { char a; int b; char c; unsigned d; union U e; int f[3]; unsigned g[3]; };
+struct T { char t; struct S u; int v; };
+typedef short V[2][2];
+void baz (V *);
+
+static inline int
+bar (char *p)
+{
+ return *(int *) p;
+}
+
+void
+foo (int *q)
+{
+ struct T t;
+ t.t = 1;
+ t.u.c = 2;
+ char *pt = (char *) &t;
+ q[0] = bar (pt + __builtin_offsetof (struct T, u.b)); /* { dg-warning "'t\\.u\\.b' is used uninitialized" } */
+ q[1] = bar (pt + __builtin_offsetof (struct T, u.e)); /* { dg-warning "'\\*\\(int \\*\\)\\(\\(char \\*\\)&t \\+ offsetof\\(struct T, u\\.e\\)\\)' is used uninitialized" } */
+ q[2] = bar (pt + __builtin_offsetof (struct T, v)); /* { dg-warning "'t\\.v' is used uninitialized" } */
+ q[3] = bar (pt + __builtin_offsetof (struct T, u.d)); /* { dg-warning "'\\*\\(int \\*\\)\\(\\(char \\*\\)&t \\+ offsetof\\(struct T, u\\.d\\)\\)' is used uninitialized" } */
+ q[4] = bar (pt + __builtin_offsetof (struct T, u.f[2])); /* { dg-warning "'t\\.u\\.f\\\[2\\\]' is used uninitialized" } */
+ q[5] = bar (pt + __builtin_offsetof (struct T, u.g[2])); /* { dg-warning "'\\*\\(int \\*\\)\\(\\(char \\*\\)&t \\+ offsetof\\(struct T, u\\.g\\\[2\\\]\\)\\)' is used uninitialized" } */
+ int s[3];
+ s[0] = 1;
+ char *ps = (char *) s;
+ q[6] = bar (ps + sizeof (int)); /* { dg-warning "'s\\\[1\\\]' is used uninitialized" } */
+ unsigned w[2][2];
+ w[0][0] = 1;
+ char *pw = (char *) w;
+ q[7] = bar (pw + 3 * sizeof (unsigned)); /* { dg-warning "'\\*\\(int \\*\\)\\(&w\\\[1\\\]\\\[1\\\]\\)' is used uninitialized" } */
+ struct T x[3][3];
+ x[0][0].t = 1;
+ char *px = (char *) x;
+ q[8] = bar (px + 5 * sizeof (struct T) + __builtin_offsetof (struct T, u.b)); /* { dg-warning "'x\\\[1\\\]\\\[2\\\]\\.u\\.b' is used uninitialized" } */
+ q[9] = bar (px + 6 * sizeof (struct T) + __builtin_offsetof (struct T, u.d)); /* { dg-warning "'\\*\\(int \\*\\)\\(\\(char \\*\\)&x\\\[2\\\]\\\[0\\\] \\+ offsetof\\(struct T, u\\.d\\)\\)' is used uninitialized" } */
+#if defined(__i386__) || defined(__x86_64__)
+ /* memcpy folding is too target dependent to test it everywhere. */
+ V u[2], v[2];
+ u[0][0][0] = 1;
+ __builtin_memcpy (&v[1], &u[1], sizeof (V)); /* { dg-warning "'\\*\\(\(long \)?long unsigned int \\*\\)\\(&u\\\[1\\\]\\\[0\\\]\\\[0\\\]\\)' is used uninitialized" "" { target i?86-*-* x86_64-*-* } } */
+ baz (&v[1]);
+#endif
+}
diff --git a/gcc/testsuite/gcc.dg/uninit-pr98578.c b/gcc/testsuite/gcc.dg/uninit-pr98578.c
new file mode 100644
index 0000000..98d6117
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/uninit-pr98578.c
@@ -0,0 +1,110 @@
+/* PR middle-end/98578 - ICE warning on uninitialized VLA access
+ { dg-do compile }
+ { dg-options "-O2 -Wall" } */
+
+void* malloc (__SIZE_TYPE__);
+
+void T (int, ...);
+
+void vla_n (int n, int i)
+{
+ int a1[n];
+
+ /* a1[I] should be formatted as as a1[I] (or, for I == 0, perhaps
+ as *a1), but definitely not as *a1[I]. This is a bug in VLA
+ formatting. */
+ T (a1[0]); // { dg-warning "'a1\\\[0]' is used uninitialized" "pr98587" { xfail *-*-* } }
+ // { dg-warning "'\\*a1\\\[0]' is used uninitialized" "spurious star" { target *-*-* } .-1 }
+ T (a1[1]); // { dg-warning "a1\\\[1]' is used uninitialized" }
+ T (a1[i]); // { dg-warning "a1\\\[i]' is used uninitialized" }
+}
+
+void vla_n_2 (int n, int i)
+{
+ int a2[n][2];
+
+ T (a2[0][0]); // { dg-warning "a2\\\[0]\\\[0]' is used uninitialized" }
+ T (a2[2][1]); // { dg-warning "a2\\\[2]\\\[1]' is used uninitialized" }
+ T (a2[3][i]); // { dg-warning "a2\\\[3]\\\[i]' is used uninitialized" }
+ T (a2[i][0]); // { dg-warning "a2\\\[i]\\\[0]' is used uninitialized" }
+ T (a2[i][i]); // { dg-warning "a2\\\[i]\\\[i]' is used uninitialized" }
+}
+
+
+void vla_3_n (int n, int i)
+{
+ int a2[3][n];
+
+ T (a2[0][0]); // { dg-warning "a2\\\[0]\\\[0]' is used uninitialized" }
+ T (a2[1][2]); // { dg-warning "a2\\\[1]\\\[2]' is used uninitialized" }
+ T (a2[2][i]); // { dg-warning "a2\\\[2]\\\[i]' is used uninitialized" }
+ T (a2[i][3]); // { dg-warning "a2\\\[i]\\\[3]' is used uninitialized" }
+ T (a2[i][i]); // { dg-warning "a2\\\[i]\\\[i]' is used uninitialized" }
+}
+
+
+void vla_n_n (int n, int i)
+{
+ int a2[n][n];
+
+ T (a2[0][0]); // { dg-warning "a2\\\[0]\\\[0]' is used uninitialized" }
+ T (a2[4][5]); // { dg-warning "a2\\\[4]\\\[5]' is used uninitialized" }
+ T (a2[6][i]); // { dg-warning "a2\\\[6]\\\[i]' is used uninitialized" }
+ T (a2[i][7]); // { dg-warning "a2\\\[i]\\\[7]' is used uninitialized" }
+ T (a2[i][i]); // { dg-warning "a2\\\[i]\\\[i]' is used uninitialized" }
+}
+
+
+void char_ptr_n (int n, int i)
+{
+ char *p = malloc (n);
+
+ T (p[0]); // { dg-warning "'\\\*p' is used uninitialized" }
+ T (p[1]); // { dg-warning "'p\\\[1]' is used uninitialized" }
+ T (p[i]); // { dg-warning "'p\\\[i]' is used uninitialized" "pr98587" { xfail *-*-* } }
+ // { dg-warning "is used uninitialized" "POINTER_PLUS_EXPR" { target *-*-* } .-1 }
+}
+
+
+void int_ptr_n (int n, int i)
+{
+ int *p = malloc (n);
+
+ T (p[0]); // { dg-warning "'\\\*p' is used uninitialized" }
+ T (p[1]); // { dg-warning "'p\\\[1]' is used uninitialized" }
+ T (p[i]); // { dg-warning "'p\\\[i]' is used uninitialized" "pr98587" { xfail *-*-* } }
+ // { dg-warning "is used uninitialized" "POINTER_PLUS_EXPR" { target *-*-* } .-1 }
+}
+
+
+void int_arr_ptr_n (int n, int i)
+{
+ int (*p)[n] = malloc (n);
+
+ T ((*p)[0]); // { dg-warning "\\(\\*p\\)\\\[0]' is used uninitialized" "pr98587" { xfail *-*-* } }
+ // { dg-warning "\\*p\\\[0]' is used uninitialized" "missing parens" { target *-*-* } .-1 }
+ T ((*p)[1]); // { dg-warning "\\(\\*p\\)\\\[1]' is used uninitialized" "pr98587" { xfail *-*-* } }
+ // { dg-warning "\\*p\\\[1]' is used uninitialized" "missing parens" { target *-*-* } .-1 }
+ T ((*p)[i]); // { dg-warning "\\(\\*p\\)\\\[i]' is used uninitialized" "pr98587" { xfail *-*-* } }
+ // { dg-warning "\\*p\\\[i]' is used uninitialized" "missing parens" { target *-*-* } .-1 }
+}
+
+
+void int_arr_ptr_n_n (int n, int i)
+{
+ int (*p)[n][n] = malloc (n);
+
+ T ((*p)[0][0]); // { dg-warning "\\(\\*p\\)\\\[0]\\\[0]' is used uninitialized" "pr98587" { xfail *-*-* } }
+ // { dg-warning "\\*p\\\[0]\\\[0]' is used uninitialized" "missing parens" { target *-*-* } .-1 }
+ T ((*p)[1][2]); // { dg-warning "\\(\\*p\\)\\\[1]\\\[2]' is used uninitialized" "pr98587" { xfail *-*-* } }
+ // { dg-warning "\\*p\\\[1]\\\[2]' is used uninitialized" "missing parens" { target *-*-* } .-1 }
+ T ((*p)[0][i]); // { dg-warning "\\(\\*p\\)\\\[0]\\\[i]' is used uninitialized" "pr98587" { xfail *-*-* } }
+ // { dg-warning "\\*p\\\[0]\\\[i]' is used uninitialized" "missing parens" { target *-*-* } .-1 }
+ T ((*p)[3][i]); // { dg-warning "\\(\\*p\\)\\\[3]\\\[i]' is used uninitialized" "pr98587" { xfail *-*-* } }
+ // { dg-warning "\\*p\\\[3]\\\[i]' is used uninitialized" "missing parens" { target *-*-* } .-1 }
+ T ((*p)[i][i]); // { dg-warning "\\(\\*p\\)\\\[i]\\\[i]' is used uninitialized" "pr98587" { xfail *-*-* } }
+ // { dg-warning "\\*p\\\[i]\\\[i]' is used uninitialized" "missing parens" { target *-*-* } .-1 }
+
+ T ((*p)[i][i + 1]); // { dg-warning "\\(\\*p\\)\\\[i]\\\[i \\+ 1]' is used uninitialized" "pr98588" { xfail *-*-* } }
+ // { dg-warning "\\*p\\\[i]\\\[<unknown>]' is used uninitialized" "missing parens" { target *-*-* } .-1 }
+}
diff --git a/gcc/testsuite/gcc.dg/unused-9.c b/gcc/testsuite/gcc.dg/unused-9.c
new file mode 100644
index 0000000..bdf36e1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/unused-9.c
@@ -0,0 +1,13 @@
+/* PR c/98260 */
+/* { dg-do compile } */
+/* { dg-options "-Wunused" } */
+
+
+void g(void)
+{
+ int i = 0;
+ volatile int x;
+ (x, i++); /* { dg-bogus "set but not used" } */
+}
+
+
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-32.c b/gcc/testsuite/gcc.dg/vect/bb-slp-32.c
index 020b636..84cc437 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-32.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-32.c
@@ -8,6 +8,7 @@ int foo (int *p, int a, int b)
int x[4];
int tem0, tem1, tem2, tem3;
int sum = 0;
+ p = __builtin_assume_aligned (p, __BIGGEST_ALIGNMENT__);
tem0 = p[0] + 1 + a;
sum += tem0;
x[0] = tem0;
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-69.c b/gcc/testsuite/gcc.dg/vect/bb-slp-69.c
index ca72a68..16c0d74 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-69.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-69.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-require-effective-target vect_int } */
+/* { dg-require-effective-target vect_condition } */
_Bool arr[16];
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-9.c b/gcc/testsuite/gcc.dg/vect/bb-slp-9.c
index b4cc101..2a42411 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-9.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-9.c
@@ -46,5 +46,5 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+/* { dg-final { scan-tree-dump-times "transform load" 1 "slp2" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-div-1.c b/gcc/testsuite/gcc.dg/vect/bb-slp-div-1.c
index 87ffc9b..1eea923 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-div-1.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-div-1.c
@@ -16,4 +16,7 @@ f (void)
x[7] /= 9;
}
-/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" { xfail *-*-* } } } */
+/* We can vectorize the store from a CTOR built from scalar division
+ results but ideally we'd like to see vectorizing the load and the
+ division as well. */
+/* { dg-final { scan-tree-dump "transform load" "slp2" { xfail *-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-pr68892.c b/gcc/testsuite/gcc.dg/vect/bb-slp-pr68892.c
deleted file mode 100644
index e9909cf..0000000
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-pr68892.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/* { dg-do compile } */
-/* { dg-additional-options "-fvect-cost-model=dynamic" } */
-/* { dg-require-effective-target vect_double } */
-
-double a[128][128];
-double b[128];
-
-void foo(void)
-{
- b[0] = a[0][0];
- b[1] = a[1][0];
- b[2] = a[2][0];
- b[3] = a[3][0];
-}
-
-/* ??? Due to the gaps we fall back to scalar loads which makes the
- vectorization profitable. */
-/* { dg-final { scan-tree-dump "not profitable" "slp2" { xfail { ! aarch64*-*-* } } } } */
-/* { dg-final { scan-tree-dump "BB vectorization with gaps at the end of a load is not supported" "slp2" } } */
-/* { dg-final { scan-tree-dump-times "Basic block will be vectorized" 1 "slp2" { xfail aarch64*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-pr95866.c b/gcc/testsuite/gcc.dg/vect/bb-slp-pr95866.c
index edcaf17..14826b5 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-pr95866.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-pr95866.c
@@ -13,5 +13,5 @@ void foo()
}
/* The scalar shift argument should be extracted from the available vector. */
-/* { dg-final { scan-tree-dump "BIT_FIELD_REF" "slp2" } } */
+/* { dg-final { scan-tree-dump "BIT_FIELD_REF" "slp2" { target sse2 } } } */
/* { dg-final { scan-tree-dump "optimized: basic block" "slp2" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-pr98516-1.c b/gcc/testsuite/gcc.dg/vect/bb-slp-pr98516-1.c
new file mode 100644
index 0000000..c4c244c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-pr98516-1.c
@@ -0,0 +1,26 @@
+/* { dg-do run } */
+
+double a[4], b[2];
+
+void __attribute__((noipa))
+foo ()
+{
+ double a0 = a[0];
+ double a1 = a[1];
+ double a2 = a[2];
+ double a3 = a[3];
+ b[0] = a1 - a3;
+ b[1] = a0 + a2;
+}
+
+int main()
+{
+ a[0] = 1.;
+ a[1] = 2.;
+ a[2] = 3.;
+ a[3] = 4.;
+ foo ();
+ if (b[0] != -2 || b[1] != 4)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-pr98516-2.c b/gcc/testsuite/gcc.dg/vect/bb-slp-pr98516-2.c
new file mode 100644
index 0000000..f1a9341
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-pr98516-2.c
@@ -0,0 +1,36 @@
+/* { dg-do run } */
+
+float a[8], b[4];
+
+void __attribute__((noipa))
+foo ()
+{
+ float a0 = a[0];
+ float a1 = a[1];
+ float a2 = a[2];
+ float a3 = a[3];
+ float a4 = a[4];
+ float a5 = a[5];
+ float a6 = a[6];
+ float a7 = a[7];
+ b[0] = a1 - a5;
+ b[1] = a0 + a4;
+ b[2] = a3 - a7;
+ b[3] = a2 + a6;
+}
+
+int main()
+{
+ a[0] = 1.;
+ a[1] = 2.;
+ a[2] = 3.;
+ a[3] = 4.;
+ a[4] = 5.;
+ a[5] = 6.;
+ a[6] = 7.;
+ a[7] = 8.;
+ foo ();
+ if (b[0] != -4 || b[1] != 6 || b[2] != -4 || b[3] != 10)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-pr98544.c b/gcc/testsuite/gcc.dg/vect/bb-slp-pr98544.c
new file mode 100644
index 0000000..756dc02
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-pr98544.c
@@ -0,0 +1,32 @@
+/* { dg-do run } */
+
+double a[2], b[2], c[2], d[2];
+
+void __attribute__((noipa))
+foo()
+{
+ double a0 = a[0];
+ double a1 = a[1];
+ double b0 = b[0];
+ double b1 = b[1];
+ double c0 = c[0];
+ double c1 = c[1];
+ double tem1 = a1 - b1;
+ double tem2 = a0 + b0;
+ d[0] = tem1 * c1;
+ d[1] = tem2 * c0;
+}
+
+int main()
+{
+ a[0] = 1.;
+ a[1] = 2.;
+ b[0] = 3.;
+ b[1] = 4.;
+ c[0] = 2.;
+ c[1] = 3.;
+ foo ();
+ if (d[0] != -6. || d[1] != 8.)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-pr98685.c b/gcc/testsuite/gcc.dg/vect/bb-slp-pr98685.c
new file mode 100644
index 0000000..b213335
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-pr98685.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-O3" } */
+
+char onelock_lock[16];
+void write(void);
+
+void lockit(int count) {
+ for (; count;) {
+ int pid, i;
+ char *p;
+ for (i = 0, p = (char *)&pid; i < sizeof 0; i++)
+ onelock_lock[i] = *p++;
+ write();
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-pr98854.c b/gcc/testsuite/gcc.dg/vect/bb-slp-pr98854.c
new file mode 100644
index 0000000..0c8141e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-pr98854.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+
+double a[1024];
+
+int bar();
+void foo (int n)
+{
+ double x = 0, y = 0;
+ int i = 1023;
+ do
+ {
+ x += a[i] + a[i+1];
+ y += a[i] / a[i+1];
+ if (bar ())
+ break;
+ }
+ while (--i);
+ /* We want to avoid vectorizing the LC PHI and insert vector CTORs
+ inside of the loop where it is only needed here. */
+ a[0] = x;
+ a[1] = y;
+}
+
+/* { dg-final { scan-tree-dump-not "vectorizing SLP node starting from: ._\[0-9\]+ = PHI" "slp1" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c b/gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c
index e27f956..03c062a 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c
@@ -1,4 +1,5 @@
/* { dg-require-effective-target vect_int } */
+/* { dg-require-effective-target vect_int_mult } */
/* PR tree-optimization/67682. */
#include "tree-vect.h"
diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-byte.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-byte.c
new file mode 100644
index 0000000..aadee7f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-byte.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_byte } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE int8_t
+#define N 16
+#include <stdint.h>
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { xfail aarch64_sve2 } } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c
new file mode 100644
index 0000000..8eba24d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_int } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE int32_t
+#define N 16
+#include <stdint.h>
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c
new file mode 100644
index 0000000..9275ff1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_long } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE int64_t
+#define N 16
+#include <stdint.h>
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c
new file mode 100644
index 0000000..8cbbdb8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_short } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE int16_t
+#define N 16
+#include <stdint.h>
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-byte.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-byte.c
new file mode 100644
index 0000000..b753914
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-byte.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_byte } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE uint8_t
+#define N 16
+#include <stdint.h>
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { xfail aarch64_sve2 } } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c
new file mode 100644
index 0000000..270c49e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-int.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_int } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE uint32_t
+#define N 16
+#include <stdint.h>
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c
new file mode 100644
index 0000000..88144e5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-long.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_long } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE uint64_t
+#define N 16
+#include <stdint.h>
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c
new file mode 100644
index 0000000..445af39
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-unsigned-short.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_short } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE uint16_t
+#define N 16
+#include <stdint.h>
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail aarch64_sve2 } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c b/gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c
new file mode 100644
index 0000000..a99a929
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/complex-add-pattern-template.c
@@ -0,0 +1,60 @@
+void add90 (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N])
+{
+ for (int i=0; i < N; i+=2)
+ {
+ c[i] = a[i] - b[i+1];
+ c[i+1] = a[i+1] + b[i];
+ }
+}
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+
+void add270 (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N])
+{
+ for (int i=0; i < N; i+=2)
+ {
+ c[i] = a[i] + b[i+1];
+ c[i+1] = a[i+1] - b[i];
+ }
+}
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
+
+void addMixed (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N])
+{
+ for (int i=0; i < N; i+=4)
+ {
+ c[i] = a[i] - b[i+1];
+ c[i+1] = a[i+1] + b[i];
+ c[i+2] = a[i+2] + b[i+3];
+ c[i+3] = a[i+3] - b[i+2];
+ }
+}
+
+void add90HandUnrolled (TYPE a[restrict N], TYPE b[restrict N],
+ TYPE c[restrict N])
+{
+ for (int i=0; i < (N /2); i+=4)
+ {
+ c[i] = a[i] - b[i+1];
+ c[i+2] = a[i+2] - b[i+3];
+ c[i+1] = a[i+1] + b[i];
+ c[i+3] = a[i+3] + b[i+2];
+ }
+}
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+
+void add90Hybrid (TYPE a[restrict N], TYPE b[restrict N], TYPE c[restrict N],
+ TYPE d[restrict N])
+{
+ for (int i=0; i < N; i+=2)
+ {
+ c[i] = a[i] - b[i+1];
+ c[i+1] = a[i+1] + b[i];
+ d[i] = a[i] - b[i];
+ d[i+1] = a[i+1] - b[i+1];
+ }
+}
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ \ No newline at end of file
diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c b/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c
new file mode 100644
index 0000000..32c81e6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/complex-add-template.c
@@ -0,0 +1,79 @@
+#include <complex.h>
+
+void add0 (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] + b[i];
+}
+
+void add90snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] + (b[i] * I);
+}
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+
+void add180snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] + (b[i] * I * I);
+}
+
+void add270snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] + (b[i] * I * I * I);
+}
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
+
+void add90fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = (a[i] * I) + b[i];
+}
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+
+void add180fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = (a[i] * I * I) + b[i];
+}
+
+void add270fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = (a[i] * I * I * I) + b[i];
+}
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
+
+void addconjfst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = ~a[i] + b[i];
+}
+
+void addconjsnd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] + ~b[i];
+}
+
+void addconjboth (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = ~a[i] + ~b[i];
+}
diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex-mla-template.c b/gcc/testsuite/gcc.dg/vect/complex/complex-mla-template.c
new file mode 100644
index 0000000..4b5c42b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/complex-mla-template.c
@@ -0,0 +1,101 @@
+#include <complex.h>
+
+void fma0 (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += a[i] * b[i];
+}
+
+void fma90snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += a[i] * (b[i] * I);
+}
+
+void fma180snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += a[i] * (b[i] * I * I);
+}
+
+void fma270snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += a[i] * (b[i] * I * I * I);
+}
+
+void fma90fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += (a[i] * I) * b[i];
+}
+
+void fma180fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += (a[i] * I * I) * b[i];
+}
+
+void fma270fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += (a[i] * I * I * I) * b[i];
+}
+
+void fmaconjfst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += ~a[i] * b[i];
+}
+
+void fmaconjsnd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += a[i] * ~b[i];
+}
+
+void fmaconjboth (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += ~a[i] * ~b[i];
+}
+
+void fma_elem (_Complex TYPE a[restrict N], _Complex TYPE b,
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += a[i] * b;
+}
+
+
+void fma_elemconjfst (_Complex TYPE a[restrict N], _Complex TYPE b,
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += ~a[i] * b;
+}
+
+void fma_elemconjsnd (_Complex TYPE a[restrict N], _Complex TYPE b,
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += a[i] * ~b;
+}
+
+void fma_elemconjboth (_Complex TYPE a[restrict N], _Complex TYPE b,
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += ~a[i] * ~b;
+}
+
diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex-mls-template.c b/gcc/testsuite/gcc.dg/vect/complex/complex-mls-template.c
new file mode 100644
index 0000000..1954be8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/complex-mls-template.c
@@ -0,0 +1,101 @@
+#include <complex.h>
+
+void fms0 (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= a[i] * b[i];
+}
+
+void fms90snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= a[i] * (b[i] * I);
+}
+
+void fms180snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= a[i] * (b[i] * I * I);
+}
+
+void fms270snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= a[i] * (b[i] * I * I * I);
+}
+
+void fms90fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= (a[i] * I) * b[i];
+}
+
+void fms180fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= (a[i] * I * I) * b[i];
+}
+
+void fms270fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= (a[i] * I * I * I) * b[i];
+}
+
+void fmsconjfst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= ~a[i] * b[i];
+}
+
+void fmsconjsnd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= a[i] * ~b[i];
+}
+
+void fmsconjboth (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= ~a[i] * ~b[i];
+}
+
+void fms_elem (_Complex TYPE a[restrict N], _Complex TYPE b,
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= a[i] * b;
+}
+
+
+void fms_elemconjfst (_Complex TYPE a[restrict N], _Complex TYPE b,
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= ~a[i] * b;
+}
+
+void fms_elemconjsnd (_Complex TYPE a[restrict N], _Complex TYPE b,
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= a[i] * ~b;
+}
+
+void fms_elemconjboth (_Complex TYPE a[restrict N], _Complex TYPE b,
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= ~a[i] * ~b;
+}
+
diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex-mul-template.c b/gcc/testsuite/gcc.dg/vect/complex/complex-mul-template.c
new file mode 100644
index 0000000..770565c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/complex-mul-template.c
@@ -0,0 +1,71 @@
+#include <complex.h>
+
+void mul0 (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] * b[i];
+}
+
+void mul90snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] * (b[i] * I);
+}
+
+void mul180snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] * (b[i] * I * I);
+}
+
+void mul270snd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] * (b[i] * I * I * I);
+}
+
+void mul90fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = (a[i] * I) * b[i];
+}
+
+void mul180fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = (a[i] * I * I) * b[i];
+}
+
+void mul270fst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = (a[i] * I * I * I) * b[i];
+}
+
+void mulconjfst (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = ~a[i] * b[i];
+}
+
+void mulconjsnd (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] * ~b[i];
+}
+
+void mulconjboth (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N],
+ _Complex TYPE c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = ~a[i] * ~b[i];
+}
diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c b/gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c
new file mode 100644
index 0000000..a0348a7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c
@@ -0,0 +1,103 @@
+/* { dg-do run } */
+/* { dg-require-effective-target vect_complex_add_double } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#include <stdio.h>
+#include <complex.h>
+#include <string.h>
+#include <float.h>
+#include <math.h>
+
+#define PREF old
+#pragma GCC push_options
+#pragma GCC optimize ("no-tree-vectorize")
+# include "complex-operations.c"
+#pragma GCC pop_options
+#undef PREF
+
+#define PREF new
+# include "complex-operations.c"
+#undef PREF
+
+#define TYPE double
+#define TYPE2 double
+#define EP pow(2, -45)
+
+#define xstr(s) str(s)
+#define str(s) #s
+
+#define FCMP(A, B) \
+ ((fabs (creal (A) - creal (B)) <= EP) && (fabs (cimag (A) - cimag (B)) <= EP))
+
+#define CMP(A, B) \
+ (FCMP(A,B) ? "PASS" : "FAIL")
+
+#define COMPARE(A,B) \
+ memset (&c1, 0, sizeof (c1)); \
+ memset (&c2, 0, sizeof (c2)); \
+ A; B; \
+ if (!FCMP(c1[0],c2[0]) || !FCMP(c1[1], c2[1])) \
+ { \
+ printf ("=> %s vs %s\n", xstr (A), xstr (B)); \
+ printf ("%a\n", creal (c1[0]) - creal (c2[0])); \
+ printf ("%a\n", cimag (c1[1]) - cimag (c2[1])); \
+ printf ("%.2f+%.2fI == %.2f+%.2fI (%s)\n", creal (c1[0]), cimag (c1[0]), creal (c2[0]), cimag (c2[0]), CMP (c1[0], c2[0])); \
+ printf ("%.2f+%.2fI == %.2f+%.2fI (%s)\n", creal (c1[1]), cimag (c1[1]), creal (c2[1]), cimag (c2[1]), CMP (c1[1], c2[1])); \
+ printf ("\n"); \
+ __builtin_abort (); \
+ }
+
+int main ()
+{
+ TYPE2 complex a[] = { 1.0 + 3.0 * I, 2.0 + 3.5 * I, 1.0 + 3.0 * I, 2.0 + 3.5 * I, 1.0 + 3.0 * I, 2.0 + 3.5 * I, 1.0 + 3.0 * I, 2.0 + 3.5 * I, 1.0 + 3.0 * I, 2.0 + 3.5 * I, 1.0 + 3.0 * I, 2.0 + 3.5 * I, 1.0 + 3.0 * I, 2.0 + 3.5 * I, 1.0 + 3.0 * I, 2.0 + 3.5 * I, 1.0 + 3.0 * I, 2.0 + 3.5 * I, 1.0 + 3.0 * I, 2.0 + 3.5 * I, 1.0 + 3.0 * I, 2.0 + 3.5 * I, 1.0 + 3.0 * I, 2.0 + 3.5 * I, 1.0 + 3.0 * I, 2.0 + 3.5 * I, 1.0 + 3.0 * I, 2.0 + 3.5 * I, 1.0 + 3.0 * I, 2.0 + 3.5 * I, 1.0 + 3.0 * I, 2.0 + 3.5 * I };
+ TYPE complex b[] = { 1.1 + 3.1 * I, 2.1 + 3.6 * I, 1.1 + 3.1 * I, 2.1 + 3.6 * I, 1.1 + 3.1 * I, 2.1 + 3.6 * I, 1.1 + 3.1 * I, 2.1 + 3.6 * I, 1.1 + 3.1 * I, 2.1 + 3.6 * I, 1.1 + 3.1 * I, 2.1 + 3.6 * I, 1.1 + 3.1 * I, 2.1 + 3.6 * I, 1.1 + 3.1 * I, 2.1 + 3.6 * I, 1.1 + 3.1 * I, 2.1 + 3.6 * I, 1.1 + 3.1 * I, 2.1 + 3.6 * I, 1.1 + 3.1 * I, 2.1 + 3.6 * I, 1.1 + 3.1 * I, 2.1 + 3.6 * I, 1.1 + 3.1 * I, 2.1 + 3.6 * I, 1.1 + 3.1 * I, 2.1 + 3.6 * I, 1.1 + 3.1 * I, 2.1 + 3.6 * I, 1.1 + 3.1 * I, 2.1 + 3.6 * I };
+ TYPE complex c2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+ TYPE complex c1[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+ TYPE diff1, diff2;
+
+ COMPARE(fma0_old(a, b, c1), fma0_new(a, b, c2));
+ COMPARE(fma90_old(a, b, c1), fma90_new(a, b, c2));
+ COMPARE(fma180_old(a, b, c1), fma180_new(a, b, c2));
+ COMPARE(fma270_old(a, b, c1), fma270_new(a, b, c2));
+ COMPARE(fma0_snd_old(a, b, c1), fma0_snd_new(a, b, c2));
+ COMPARE(fma90_snd_old(a, b, c1), fma90_snd_new(a, b, c2));
+ COMPARE(fma180_snd_old(a, b, c1), fma180_snd_new(a, b, c2));
+ COMPARE(fma270_snd_old(a, b, c1), fma270_snd_new(a, b, c2));
+ COMPARE(fma_conj_first_old(a, b, c1), fma_conj_first_new(a, b, c2));
+ COMPARE(fma_conj_second_old(a, b, c1), fma_conj_second_new(a, b, c2));
+ COMPARE(fma_conj_both_old(a, b, c1), fma_conj_both_new(a, b, c2));
+ COMPARE(fms0_old(a, b, c1), fms0_new(a, b, c2));
+ COMPARE(fms90_old(a, b, c1), fms90_new(a, b, c2));
+ COMPARE(fms180_old(a, b, c1), fms180_new(a, b, c2));
+ COMPARE(fms270_old(a, b, c1), fms270_new(a, b, c2));
+ COMPARE(fms0_snd_old(a, b, c1), fms0_snd_new(a, b, c2));
+ COMPARE(fms90_snd_old(a, b, c1), fms90_snd_new(a, b, c2));
+ COMPARE(fms180_snd_old(a, b, c1), fms180_snd_new(a, b, c2));
+ COMPARE(fms270_snd_old(a, b, c1), fms270_snd_new(a, b, c2));
+ COMPARE(fms_conj_first_old(a, b, c1), fms_conj_first_new(a, b, c2));
+ COMPARE(fms_conj_second_old(a, b, c1), fms_conj_second_new(a, b, c2));
+ COMPARE(fms_conj_both_old(a, b, c1), fms_conj_both_new(a, b, c2));
+ COMPARE(mul0_old(a, b, c1), mul0_new(a, b, c2));
+ COMPARE(mul90_old(a, b, c1), mul90_new(a, b, c2));
+ COMPARE(mul180_old(a, b, c1), mul180_new(a, b, c2));
+ COMPARE(mul270_old(a, b, c1), mul270_new(a, b, c2));
+ COMPARE(mul0_snd_old(a, b, c1), mul0_snd_new(a, b, c2));
+ COMPARE(mul90_snd_old(a, b, c1), mul90_snd_new(a, b, c2));
+ COMPARE(mul180_snd_old(a, b, c1), mul180_snd_new(a, b, c2));
+ COMPARE(mul270_snd_old(a, b, c1), mul270_snd_new(a, b, c2));
+ COMPARE(mul_conj_first_old(a, b, c1), mul_conj_first_new(a, b, c2));
+ COMPARE(mul_conj_second_old(a, b, c1), mul_conj_second_new(a, b, c2));
+ COMPARE(mul_conj_both_old(a, b, c1), mul_conj_both_new(a, b, c2));
+ COMPARE(add0_old(a, b, c1), add0_new(a, b, c2));
+ COMPARE(add90_old(a, b, c1), add90_new(a, b, c2));
+ COMPARE(add180_old(a, b, c1), add180_new(a, b, c2));
+ COMPARE(add270_old(a, b, c1), add270_new(a, b, c2));
+ COMPARE(add0_snd_old(a, b, c1), add0_snd_new(a, b, c2));
+ COMPARE(add90_snd_old(a, b, c1), add90_snd_new(a, b, c2));
+ COMPARE(add180_snd_old(a, b, c1), add180_snd_new(a, b, c2));
+ COMPARE(add270_snd_old(a, b, c1), add270_snd_new(a, b, c2));
+ COMPARE(add_conj_first_old(a, b, c1), add_conj_first_new(a, b, c2));
+ COMPARE(add_conj_second_old(a, b, c1), add_conj_second_new(a, b, c2));
+ COMPARE(add_conj_both_old(a, b, c1), add_conj_both_new(a, b, c2));
+}
diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex-operations.c b/gcc/testsuite/gcc.dg/vect/complex/complex-operations.c
new file mode 100644
index 0000000..fdce995
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/complex-operations.c
@@ -0,0 +1,358 @@
+#include <stdio.h>
+#include <complex.h>
+
+#ifndef PREF
+#define PREF c
+#endif
+
+#define FX(N,P) P ## _ ## N
+#define MK(N,P) FX(P,N)
+
+#define N 32
+#define TYPE double
+
+// ------ FMA
+
+// Complex FMA instructions rotating the result
+
+__attribute__((noinline,noipa))
+void MK(fma0, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += a[i] * b[i];
+}
+
+__attribute__((noinline,noipa))
+void MK(fma90, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += a[i] * b[i] * I;
+}
+
+__attribute__((noinline,noipa))
+void MK(fma180, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += a[i] * b[i] * I * I;
+}
+
+__attribute__((noinline,noipa))
+void MK(fma270, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += a[i] * b[i] * I * I * I;
+}
+
+// Complex FMA instructions rotating the second parameter.
+
+
+__attribute__((noinline,noipa))
+void MK(fma0_snd, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += a[i] * b[i];
+}
+
+__attribute__((noinline,noipa))
+void MK(fma90_snd, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += a[i] * (b[i] * I);
+}
+
+__attribute__((noinline,noipa))
+void MK(fma180_snd, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += a[i] * (b[i] * I * I);
+}
+
+__attribute__((noinline,noipa))
+void MK(fma270_snd, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += a[i] * (b[i] * I * I * I);
+}
+
+// Complex FMA instructions with conjucated values.
+
+
+__attribute__((noinline,noipa))
+void MK(fma_conj_first, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += conj (a[i]) * b[i];
+}
+
+__attribute__((noinline,noipa))
+void MK(fma_conj_second, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += a[i] * conj (b[i]);
+}
+
+__attribute__((noinline,noipa))
+void MK(fma_conj_both, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] += conj (a[i]) * conj (b[i]);
+}
+
+// ----- FMS
+
+// Complex FMS instructions rotating the result
+
+__attribute__((noinline,noipa))
+void MK(fms0, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= a[i] * b[i];
+}
+
+__attribute__((noinline,noipa))
+void MK(fms90, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= a[i] * b[i] * I;
+}
+
+__attribute__((noinline,noipa))
+void MK(fms180, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= a[i] * b[i] * I * I;
+}
+
+__attribute__((noinline,noipa))
+void MK(fms270, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= a[i] * b[i] * I * I * I;
+}
+
+// Complex FMS instructions rotating the second parameter.
+
+__attribute__((noinline,noipa))
+void MK(fms0_snd, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= a[i] * b[i];
+}
+
+__attribute__((noinline,noipa))
+void MK(fms90_snd, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= a[i] * (b[i] * I);
+}
+
+__attribute__((noinline,noipa))
+void MK(fms180_snd, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= a[i] * (b[i] * I * I);
+}
+
+__attribute__((noinline,noipa))
+void MK(fms270_snd, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= a[i] * (b[i] * I * I * I);
+}
+
+// Complex FMS instructions with conjucated values.
+
+__attribute__((noinline,noipa))
+void MK(fms_conj_first, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= conj (a[i]) * b[i];
+}
+
+__attribute__((noinline,noipa))
+void MK(fms_conj_second, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= a[i] * conj (b[i]);
+}
+
+__attribute__((noinline,noipa))
+void MK(fms_conj_both, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] -= conj (a[i]) * conj (b[i]);
+}
+
+
+// ----- MUL
+
+// Complex MUL instructions rotating the result
+
+__attribute__((noinline,noipa))
+void MK(mul0, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] * b[i];
+}
+
+__attribute__((noinline,noipa))
+void MK(mul90, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] * b[i] * I;
+}
+
+__attribute__((noinline,noipa))
+void MK(mul180, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] * b[i] * I * I;
+}
+
+__attribute__((noinline,noipa))
+void MK(mul270, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] * b[i] * I * I * I;
+}
+
+// Complex MUL instructions rotating the second parameter.
+
+__attribute__((noinline,noipa))
+void MK(mul0_snd, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] * b[i];
+}
+
+__attribute__((noinline,noipa))
+void MK(mul90_snd, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] * (b[i] * I);
+}
+
+__attribute__((noinline,noipa))
+void MK(mul180_snd, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] * (b[i] * I * I);
+}
+
+__attribute__((noinline,noipa))
+void MK(mul270_snd, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] * (b[i] * I * I * I);
+}
+
+// Complex FMS instructions with conjucated values.
+
+__attribute__((noinline,noipa))
+void MK(mul_conj_first, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = conj (a[i]) * b[i];
+}
+
+__attribute__((noinline,noipa))
+void MK(mul_conj_second, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] * conj (b[i]);
+}
+
+__attribute__((noinline,noipa))
+void MK(mul_conj_both, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = conj (a[i]) * conj (b[i]);
+}
+
+
+// ----- ADD
+
+// Complex ADD instructions rotating the result
+
+__attribute__((noinline,noipa))
+void MK(add0, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] + b[i];
+}
+
+__attribute__((noinline,noipa))
+void MK(add90, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = (a[i] + b[i]) * I;
+}
+
+__attribute__((noinline,noipa))
+void MK(add180, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = (a[i] + b[i]) * I * I;
+}
+
+__attribute__((noinline,noipa))
+void MK(add270, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = (a[i] + b[i]) * I * I * I;
+}
+
+// Complex ADD instructions rotating the second parameter.
+
+__attribute__((noinline,noipa))
+void MK(add0_snd, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] + b[i];
+}
+
+__attribute__((noinline,noipa))
+void MK(add90_snd, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] + (b[i] * I);
+}
+
+__attribute__((noinline,noipa))
+void MK(add180_snd, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] + (b[i] * I * I);
+}
+
+__attribute__((noinline,noipa))
+void MK(add270_snd, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] + (b[i] * I * I * I);
+}
+
+// Complex ADD instructions with conjucated values.
+
+__attribute__((noinline,noipa))
+void MK(add_conj_first, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = conj (a[i]) + b[i];
+}
+
+__attribute__((noinline,noipa))
+void MK(add_conj_second, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = a[i] + conj (b[i]);
+}
+
+__attribute__((noinline,noipa))
+void MK(add_conj_both, PREF) (TYPE complex a[restrict N], TYPE complex b[restrict N], TYPE complex c[restrict N])
+{
+ for (int i=0; i < N; i++)
+ c[i] = conj (a[i]) + conj (b[i]);
+}
+
+
diff --git a/gcc/testsuite/gcc.dg/vect/complex/complex.exp b/gcc/testsuite/gcc.dg/vect/complex/complex.exp
new file mode 100644
index 0000000..f94c7a8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/complex.exp
@@ -0,0 +1,20 @@
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# GCC testsuite that uses the `dg.exp' driver.
+
+# Load support procs.
+load_file $srcdir/$subdir/../vect.exp
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c
new file mode 100644
index 0000000..7bbb61a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_double } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE double
+#define N 16
+#include "complex-add-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" } } */
+
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c
new file mode 100644
index 0000000..cf99f1d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_float } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE float
+#define N 16
+#include "complex-add-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c
new file mode 100644
index 0000000..9f535dd
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_half } */
+/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE _Float16
+#define N 16
+#include "complex-add-template.c"
+
+/* Vectorization is failing for these cases. They should work but for now ignore. */
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" { xfail *-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c
new file mode 100644
index 0000000..e121113
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_double } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE double
+#define N 16
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c
new file mode 100644
index 0000000..8565833
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_float } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE float
+#define N 16
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c
new file mode 100644
index 0000000..857ee9d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_half } */
+/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE _Float16
+#define N 16
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "slp1" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "slp1" { xfail arm*-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c
new file mode 100644
index 0000000..d9d13c2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_double } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE double
+#define N 16
+#include "complex-mla-template.c"
+
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c
new file mode 100644
index 0000000..ac680cb
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_float } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE float
+#define N 16
+#include "complex-mla-template.c"
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c
new file mode 100644
index 0000000..d0a48d0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_half } */
+/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE _Float16
+#define N 16
+#include "complex-mla-template.c"
+
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c
new file mode 100644
index 0000000..d9d13c2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-double.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_double } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE double
+#define N 16
+#include "complex-mla-template.c"
+
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c
new file mode 100644
index 0000000..ac680cb
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-float.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_float } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE float
+#define N 16
+#include "complex-mla-template.c"
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c
new file mode 100644
index 0000000..d0a48d0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_half } */
+/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE _Float16
+#define N 16
+#include "complex-mla-template.c"
+
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c
new file mode 100644
index 0000000..ab8313f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-double.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_double } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE double
+#define N 16
+#include "complex-mul-template.c"
+
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c
new file mode 100644
index 0000000..49bf961
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-float.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_float } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE float
+#define N 16
+#include "complex-mul-template.c"
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c
new file mode 100644
index 0000000..f5c23fb
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_half } */
+/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE _Float16
+#define N 16
+#include "complex-mul-template.c"
+
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c
new file mode 100644
index 0000000..0d4d3ce
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_double } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE double
+#define N 200
+#include "complex-add-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ \ No newline at end of file
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c
new file mode 100644
index 0000000..b986696
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_float } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE float
+#define N 200
+#include "complex-add-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ \ No newline at end of file
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c
new file mode 100644
index 0000000..c3dca57
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_half } */
+/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE _Float16
+#define N 200
+#include "complex-add-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 2 "vect" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 2 "vect" } } */ \ No newline at end of file
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c
new file mode 100644
index 0000000..df4d3f6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_double } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE double
+#define N 200
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c
new file mode 100644
index 0000000..6df5c6d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_float } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE float
+#define N 200
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c
new file mode 100644
index 0000000..a725112
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_half } */
+/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE _Float16
+#define N 200
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 4 "vect" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
+
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c
new file mode 100644
index 0000000..c85ff07
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-double.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_double } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE double
+#define N 200
+#include "complex-mla-template.c"
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c
new file mode 100644
index 0000000..a17b91b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-float.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_float } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE float
+#define N 200
+#include "complex-mla-template.c"
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c
new file mode 100644
index 0000000..fa81985
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mla-half-float.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_half } */
+/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE _Float16
+#define N 200
+#include "complex-mla-template.c"
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c
new file mode 100644
index 0000000..c85ff07
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-double.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_double } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE double
+#define N 200
+#include "complex-mla-template.c"
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c
new file mode 100644
index 0000000..a17b91b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-float.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_float } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE float
+#define N 200
+#include "complex-mla-template.c"
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c
new file mode 100644
index 0000000..fa81985
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mls-half-float.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_half } */
+/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE _Float16
+#define N 200
+#include "complex-mla-template.c"
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c
new file mode 100644
index 0000000..77c01a8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-double.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_double } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE double
+#define N 200
+#include "complex-mul-template.c"
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c
new file mode 100644
index 0000000..a8b44f2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-float.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_float } */
+/* { dg-add-options arm_v8_3a_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE float
+#define N 200
+#include "complex-mul-template.c"
diff --git a/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c
new file mode 100644
index 0000000..d57df82
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-mul-half-float.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_half } */
+/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE _Float16
+#define N 200
+#include "complex-mul-template.c"
diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c
new file mode 100644
index 0000000..438d219
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-byte.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_byte } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE int8_t
+#define N 200
+#include <stdint.h>
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c
new file mode 100644
index 0000000..04c27dc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-int.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_int } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE int32_t
+#define N 200
+#include <stdint.h>
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c
new file mode 100644
index 0000000..27988ad
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-long.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_long } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE int64_t
+#define N 200
+#include <stdint.h>
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c
new file mode 100644
index 0000000..88d225d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-short.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_short } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE int16_t
+#define N 200
+#include <stdint.h>
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c
new file mode 100644
index 0000000..59109c0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-byte.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_byte } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE uint8_t
+#define N 200
+#include <stdint.h>
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c
new file mode 100644
index 0000000..44d9635
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-int.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_int } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE uint32_t
+#define N 200
+#include <stdint.h>
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c
new file mode 100644
index 0000000..6671457
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-long.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_long } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE uint64_t
+#define N 200
+#include <stdint.h>
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c
new file mode 100644
index 0000000..841adf8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/complex/vect-complex-add-pattern-unsigned-short.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_complex_add_short } */
+/* { dg-require-effective-target stdint_types } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+
+#define TYPE uint16_t
+#define N 200
+#include <stdint.h>
+#include "complex-add-pattern-template.c"
+
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT90" 1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "stmt.*COMPLEX_ADD_ROT270" 1 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp b/gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp
index 08b1abc..a4d67b1 100644
--- a/gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp
+++ b/gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp
index 7e49af1..040b0de 100644
--- a/gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp
+++ b/gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp b/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp
index 7d89241..167c5dc 100644
--- a/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp
+++ b/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/vect/pr91403.c b/gcc/testsuite/gcc.dg/vect/pr91403.c
new file mode 100644
index 0000000..5b9b760
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr91403.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-O3" } */
+
+extern int a[][1000000];
+int b;
+void c()
+{
+ for (int d = 2; d <= 9; d++)
+ for (int e = 32; e <= 41; e++)
+ b += a[d][5];
+}
diff --git a/gcc/testsuite/gcc.dg/vect/pr92205.c b/gcc/testsuite/gcc.dg/vect/pr92205.c
index a031c1f..ea06660 100644
--- a/gcc/testsuite/gcc.dg/vect/pr92205.c
+++ b/gcc/testsuite/gcc.dg/vect/pr92205.c
@@ -10,4 +10,4 @@ int b(int n, unsigned char *a)
return d;
}
-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail *-*-* } } } */
+/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target { vect_unpack && { ! vect_no_bitwise } } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr94994.c b/gcc/testsuite/gcc.dg/vect/pr94994.c
new file mode 100644
index 0000000..e98aeb0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr94994.c
@@ -0,0 +1,61 @@
+#include <stdint.h>
+#include "tree-vect.h"
+
+#define BLOCK_SIZE (sizeof (uint32_t))
+
+struct unaligned {
+ uint32_t x;
+} __attribute__((packed, may_alias));
+
+static inline uint32_t
+load_unaligned (const char *p)
+{
+ return ((struct unaligned *) p)->x;
+}
+
+static inline void
+store_unaligned (uint32_t x, char *p)
+{
+ ((struct unaligned *) p)->x = x;
+}
+
+void __attribute__((noipa))
+copy (char *dst, const char *src, size_t n)
+{
+ for (size_t i = 0; i < n; i += BLOCK_SIZE)
+ store_unaligned (load_unaligned (src + i), dst + i);
+}
+
+#define INPUT_SIZE 64
+#define MAX_STEP 32
+
+char x[INPUT_SIZE + MAX_STEP];
+
+int
+main (void)
+{
+ check_vect ();
+
+ for (unsigned int i = 1; i < MAX_STEP; ++i)
+ {
+ for (unsigned int j = 0; j < INPUT_SIZE + MAX_STEP; ++j)
+ x[j] = j + 10;
+ copy (x + i, x, INPUT_SIZE);
+ for (int j = 0; j < INPUT_SIZE + i; ++j)
+ {
+ int expected;
+ if (j < i)
+ expected = j + 10;
+ else if (i >= BLOCK_SIZE)
+ expected = j % i + 10;
+ else if ((j - i) % BLOCK_SIZE < i)
+ expected = x[j - i];
+ else
+ expected = j - i + 10;
+ if (x[j] != expected)
+ __builtin_abort ();
+ }
+ }
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/vect/pr97678.c b/gcc/testsuite/gcc.dg/vect/pr97678.c
index d9ffb7a..7fb6c93 100644
--- a/gcc/testsuite/gcc.dg/vect/pr97678.c
+++ b/gcc/testsuite/gcc.dg/vect/pr97678.c
@@ -1,4 +1,6 @@
/* { dg-require-effective-target vect_int } */
+/* { dg-require-effective-target vect_int_mult } */
+/* { dg-require-effective-target vect_pack_trunc } */
/* { dg-additional-options "-mavx2" { target avx2_runtime } } */
#include "tree-vect.h"
diff --git a/gcc/testsuite/gcc.dg/vect/pr97929.c b/gcc/testsuite/gcc.dg/vect/pr97929.c
new file mode 100644
index 0000000..a027b31
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr97929.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+#include <stdint.h>
+#define ARR_SIZE 1024
+extern void foo (int32_t *bar, int16_t a)
+{
+ for( int i = 0; i < ARR_SIZE;i++)
+ {
+ bar[i] = a + 1;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/vect/pr98069.c b/gcc/testsuite/gcc.dg/vect/pr98069.c
new file mode 100644
index 0000000..e60549f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr98069.c
@@ -0,0 +1,22 @@
+long long int var_3 = -166416893043554447LL;
+short var_8 = (short)27092;
+unsigned int var_17 = 75036300U;
+short arr_165[23];
+
+static long c(long e, long f) { return f ? e : f; }
+void __attribute((noipa)) test()
+{
+ for (int b = 0; b < 19; b = var_17)
+ for (int d = (int)(~c(-2147483647 - 1, var_3)) - 2147483647; d < 22; d++)
+ arr_165[d] = var_8;
+}
+
+int main()
+{
+ for (unsigned i_3 = 0; i_3 < 23; ++i_3)
+ arr_165[i_3] = (short)-8885;
+ test();
+ if (arr_165[0] != 27092)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/vect/pr98302.c b/gcc/testsuite/gcc.dg/vect/pr98302.c
new file mode 100644
index 0000000..dec6016
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr98302.c
@@ -0,0 +1,22 @@
+#include "tree-vect.h"
+
+int c = 1705;
+char a;
+long f = 50887638;
+unsigned long long *h(unsigned long long *k, unsigned long long *l) {
+ return *k ? k : l;
+}
+void aa() {}
+int main() {
+ check_vect ();
+
+ long d = f;
+ for (char g = 0; g < (char)c - 10; g += 2) {
+ unsigned long long i = d, j = 4;
+ a = *h(&i, &j) << ((d ? 169392992 : 0) - 169392955LL);
+ }
+ if (a)
+ __builtin_abort();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/vect/pr98308.c b/gcc/testsuite/gcc.dg/vect/pr98308.c
new file mode 100644
index 0000000..7d717b1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr98308.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-O3" } */
+/* { dg-additional-options "-march=skylake-avx512" { target avx512f } } */
+
+extern unsigned long long int arr_86[];
+extern unsigned long long int arr_87[][15];
+
+void test(_Bool a, unsigned short c[][15], unsigned char d[])
+{
+ for (short h = 0; h < 10; h++)
+ for (char i = 0; i < 15; i += 2)
+ {
+ arr_86[0] = d[0];
+ arr_87[h][0] = a ? c[h][i] : 0;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/vect/pr98560-1.c b/gcc/testsuite/gcc.dg/vect/pr98560-1.c
new file mode 100644
index 0000000..2583fc4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr98560-1.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-O3 -fno-tree-vrp -fno-tree-fre -fno-tree-pre -fno-code-hoisting -fvect-cost-model=dynamic" } */
+/* { dg-additional-options "-msve-vector-bits=128" { target aarch64_sve } } */
+
+#include <stdint.h>
+
+void
+f (uint16_t *restrict dst, uint32_t *restrict src1, float *restrict src2)
+{
+ int i = 0;
+ for (int j = 0; j < 4; ++j)
+ {
+ uint16_t tmp = src1[i] >> 1;
+ dst[i] = (uint16_t) (src2[i] < 0 && i < 4 ? tmp : 1);
+ i += 1;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/vect/pr98560-2.c b/gcc/testsuite/gcc.dg/vect/pr98560-2.c
new file mode 100644
index 0000000..7759a5e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr98560-2.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-O3 -fno-tree-vrp -fno-tree-fre -fno-tree-pre -fno-code-hoisting -fvect-cost-model=dynamic" } */
+/* { dg-additional-options "-msve-vector-bits=128" { target aarch64_sve } } */
+
+#include <stdint.h>
+
+void
+f (uint16_t *restrict dst, uint32_t *restrict src1, float *restrict src2)
+{
+ int i = 0;
+ for (int j = 0; j < 4; ++j)
+ {
+ uint16_t tmp = src1[i] >> 1;
+ dst[i] = (uint16_t) (src2[i] == 0 && i < 4 ? tmp : 1);
+ i += 1;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/vect/pr98674.c b/gcc/testsuite/gcc.dg/vect/pr98674.c
new file mode 100644
index 0000000..0f1b6cb
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr98674.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-msse2" { target sse2 } } */
+
+void swap(short *p, int cnt)
+{
+ while (cnt-- > 0)
+ {
+ *p = ((*p << 8) & 0xFF00) | ((*p >> 8) & 0x00FF);
+ ++p;
+ }
+}
+
+/* Dependence analysis should not fail. */
+/* { dg-final { scan-tree-dump "dependence distance == 0" "vect" } } */
+/* On x86 with SSE2 we can vectorize this with psllw/psrlw. */
+/* { dg-final { scan-tree-dump "loop vectorized" "vect" { target sse2 } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr98848.c b/gcc/testsuite/gcc.dg/vect/pr98848.c
new file mode 100644
index 0000000..5cf7c9f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr98848.c
@@ -0,0 +1,18 @@
+/* PR tree-optimization/98848 */
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_int } */
+
+short a[9000];
+
+int
+foo (void)
+{
+ int b = a[0];
+ int i;
+ for (i = 1; i < 9000; i ++)
+ if (a[i] < b)
+ b = a[i];
+ return b;
+}
+
+/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { xfail { vect_no_int_add || vect_no_int_min_max } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-11b.c b/gcc/testsuite/gcc.dg/vect/slp-11b.c
index 0aece80..c4d9ab0 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-11b.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-11b.c
@@ -12,13 +12,13 @@ main1 ()
unsigned int out[N*8], a0, a1, a2, a3, a4, a5, a6, a7, b1, b0, b2, b3, b4, b5, b6, b7;
unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
- /* Requires permutation - not SLPable. */
+ /* Requires permutation for SLP. */
for (i = 0; i < N*2; i++)
{
out[i*4] = (in[i*4] + 2) * 3;
out[i*4 + 1] = (in[i*4 + 2] + 2) * 7;
out[i*4 + 2] = (in[i*4 + 1] + 7) * 3;
- out[i*4 + 3] = (in[i*4 + 3] + 3) * 4;
+ out[i*4 + 3] = (in[i*4 + 3] + 3) * 7;
}
/* check results: */
@@ -27,7 +27,7 @@ main1 ()
if (out[i*4] != (in[i*4] + 2) * 3
|| out[i*4 + 1] != (in[i*4 + 2] + 2) * 7
|| out[i*4 + 2] != (in[i*4 + 1] + 7) * 3
- || out[i*4 + 3] != (in[i*4 + 3] + 3) * 4)
+ || out[i*4 + 3] != (in[i*4 + 3] + 3) * 7)
abort ();
}
@@ -43,7 +43,5 @@ int main (void)
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided4 && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided4 && vect_int_mult } } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_load_lanes } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { vect_load_lanes } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { { vect_strided4 || vect_perm } && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { vect_perm && vect_int_mult } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-43.c b/gcc/testsuite/gcc.dg/vect/slp-43.c
index 0344cc9..3cee613 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-43.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-43.c
@@ -78,4 +78,6 @@ int main()
}
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 13 "vect" { target vect_hw_misalign } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { ! vect_hw_misalign } } } } */
+/* For ! vect_hw_misalign it depends on vector size and actual alignment
+ requirements of the target which functions can be vectorized. Avoid
+ that bean-counting and per-target listing here. */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-45.c b/gcc/testsuite/gcc.dg/vect/slp-45.c
index 1e35d35..fadc4e5 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-45.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-45.c
@@ -77,4 +77,4 @@ int main()
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 13 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 13 "vect" { target vect_hw_misalign } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-11.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-11.c
new file mode 100644
index 0000000..a2f86fb
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-11.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_double } */
+
+double dotprod(const double *a, const double *b, unsigned long long n)
+{
+ double d1 = 0.0;
+ double d2 = 0.0;
+
+ for (unsigned long long i = 0; i < n; i += 2) {
+ d1 += a[i] * b[i];
+ d2 += a[i + 1] * b[i + 1];
+ }
+
+ return (d1 + d2);
+}
+
+/* We should use a SLP reduction even without -ffast-math by using a
+ VF of one. */
+/* { dg-final { scan-tree-dump "vectorizing stmts using SLP" "vect" } } */
+/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-reduc-3.c b/gcc/testsuite/gcc.dg/vect/slp-reduc-3.c
index 4969fe8..9e29757 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-reduc-3.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-reduc-3.c
@@ -46,6 +46,7 @@ int main (void)
for (i=0; i<N; i++) {
X[i] = i;
Y[i] = 64-i;
+ asm volatile ("" ::: "memory");
}
foo1 (N/2, &dot1, &dot2);
@@ -58,6 +59,7 @@ int main (void)
/* The initialization loop in main also gets vectorized. */
/* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected" 1 "vect" { xfail *-*-* } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { vect_short_mult && { vect_widen_sum_hi_to_si && vect_unpack } } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { xfail { vect_widen_sum_hi_to_si_pattern || { ! vect_unpack } } } } } */
-/* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR" 0 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_short_mult && { vect_widen_sum_hi_to_si && vect_unpack } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { xfail { vect_widen_sum_hi_to_si_pattern || { ! { vect_short_mult && { vect_widen_sum_hi_to_si && vect_unpack } } } } } } } */
+/* Check we can elide permutes if SLP vectorizing the reduction. */
+/* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR" 0 "vect" { xfail { { { vect_widen_sum_hi_to_si_pattern || { ! vect_unpack } } && { ! vect_load_lanes } } && { vect_short_mult && { vect_widen_sum_hi_to_si && vect_unpack } } } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-live-6.c b/gcc/testsuite/gcc.dg/vect/vect-live-6.c
index c986c97..0e7aa22 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-live-6.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-live-6.c
@@ -28,4 +28,4 @@ int main()
return 0;
}
-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target vect_int } } } */
+/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target { vect_int && vect_condition } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-4.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-4.c
index 7706a2d..eff3994 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-4.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-in-order-4.c
@@ -41,6 +41,4 @@ main ()
return 0;
}
-/* { dg-final { scan-tree-dump {in-order unchained SLP reductions not supported} "vect" } } */
-/* { dg-final { scan-tree-dump-not {vectorizing stmts using SLP} "vect" } } */
/* { dg-final { scan-tree-dump-times "VECT_PERM_EXPR" 0 "vect" } } */
diff --git a/gcc/testsuite/gcc.dg/vect/vect.exp b/gcc/testsuite/gcc.dg/vect/vect.exp
index efe17ac..dca9a4d 100644
--- a/gcc/testsuite/gcc.dg/vect/vect.exp
+++ b/gcc/testsuite/gcc.dg/vect/vect.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/vmx/vmx.exp b/gcc/testsuite/gcc.dg/vmx/vmx.exp
index dc2b2a6..9d1da87 100644
--- a/gcc/testsuite/gcc.dg/vmx/vmx.exp
+++ b/gcc/testsuite/gcc.dg/vmx/vmx.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/vxworks/initpri1.c b/gcc/testsuite/gcc.dg/vxworks/initpri1.c
index 555bffe..1d26b0e 100644
--- a/gcc/testsuite/gcc.dg/vxworks/initpri1.c
+++ b/gcc/testsuite/gcc.dg/vxworks/initpri1.c
@@ -6,6 +6,7 @@
/* The selector below excludes VxWorks AE because AE does not support
RTP mode. */
/* { dg-do compile { target { *-*-vxworks* && { ! *-*-vxworksae* } } } } */
+/* { dg-skip-if "vxworks7 SR06x0 now uses .init_array" { *-*-vxworks7r* } } */
/* { dg-options "-mrtp" } */
/* { dg-final { scan-assembler "ctors\.00000" } } */
/* { dg-final { scan-assembler "dtors\.00000" } } */
diff --git a/gcc/testsuite/gcc.dg/vxworks/initpri2.c b/gcc/testsuite/gcc.dg/vxworks/initpri2.c
index 7f483ef..31b4e9b 100644
--- a/gcc/testsuite/gcc.dg/vxworks/initpri2.c
+++ b/gcc/testsuite/gcc.dg/vxworks/initpri2.c
@@ -2,6 +2,7 @@
Instead, initialization is handled by munch. */
/* { dg-do compile { target vxworks_kernel } } */
+/* { dg-skip-if "vxworks7 SR06x0 now uses .init_array" { *-*-vxworks7r* } } */
/* { dg-final { scan-assembler-not "\.ctors" } } */
/* { dg-final { scan-assembler-not "\.dtors" } } */
diff --git a/gcc/testsuite/gcc.dg/vxworks/vxworks.exp b/gcc/testsuite/gcc.dg/vxworks/vxworks.exp
index d8d91c0..8f8d822 100644
--- a/gcc/testsuite/gcc.dg/vxworks/vxworks.exp
+++ b/gcc/testsuite/gcc.dg/vxworks/vxworks.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.dg/weak/weak.exp b/gcc/testsuite/gcc.dg/weak/weak.exp
index be87d5d..c4359e9 100644
--- a/gcc/testsuite/gcc.dg/weak/weak.exp
+++ b/gcc/testsuite/gcc.dg/weak/weak.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/acker1.exp b/gcc/testsuite/gcc.misc-tests/acker1.exp
index d704b4f..8784663 100644
--- a/gcc/testsuite/gcc.misc-tests/acker1.exp
+++ b/gcc/testsuite/gcc.misc-tests/acker1.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/arm-isr.exp b/gcc/testsuite/gcc.misc-tests/arm-isr.exp
index ef52c3b..24eb5e1 100644
--- a/gcc/testsuite/gcc.misc-tests/arm-isr.exp
+++ b/gcc/testsuite/gcc.misc-tests/arm-isr.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/bprob.exp b/gcc/testsuite/gcc.misc-tests/bprob.exp
index 619393b..708dc6c 100644
--- a/gcc/testsuite/gcc.misc-tests/bprob.exp
+++ b/gcc/testsuite/gcc.misc-tests/bprob.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/dectest.exp b/gcc/testsuite/gcc.misc-tests/dectest.exp
index e33aa86..383688e 100644
--- a/gcc/testsuite/gcc.misc-tests/dectest.exp
+++ b/gcc/testsuite/gcc.misc-tests/dectest.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2020 Free Software Foundation, Inc.
+# Copyright (C) 2005-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/dhry.exp b/gcc/testsuite/gcc.misc-tests/dhry.exp
index 96034f1..c965f36 100644
--- a/gcc/testsuite/gcc.misc-tests/dhry.exp
+++ b/gcc/testsuite/gcc.misc-tests/dhry.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/gcov.exp b/gcc/testsuite/gcc.misc-tests/gcov.exp
index bddb005..c2e2c58 100644
--- a/gcc/testsuite/gcc.misc-tests/gcov.exp
+++ b/gcc/testsuite/gcc.misc-tests/gcov.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/godump-1.c b/gcc/testsuite/gcc.misc-tests/godump-1.c
index f97bbec..d37ab0b 100644
--- a/gcc/testsuite/gcc.misc-tests/godump-1.c
+++ b/gcc/testsuite/gcc.misc-tests/godump-1.c
@@ -396,6 +396,15 @@ typedef enum { ET1, ET2 } et_t;
/* { dg-final { scan-file godump-1.out "(?n)^const _ET1 = 0$" } } */
/* { dg-final { scan-file godump-1.out "(?n)^const _ET2 = 1$" } } */
+typedef enum e_t_idem_v1 { ETIV1 } e_t_idem_v1;
+/* { dg-final { scan-file godump-1.out "(?n)^type _e_t_idem_v1 u?int\[0-9\]*$" } } */
+/* { dg-final { scan-file godump-1.out "(?n)^const _ETIV1 = 0$" } } */
+
+typedef enum e_t_idem_v2 e_t_idem_v2;
+enum e_t_idem_v2 { ETIV2 };
+/* { dg-final { scan-file godump-1.out "(?n)^type _e_t_idem_v2 u?int\[0-9\]*$" } } */
+/* { dg-final { scan-file godump-1.out "(?n)^const _ETIV2 = 0$" } } */
+
enum { ETV1, ETV2 } et_v1;
/* { dg-final { scan-file godump-1.out "(?n)^var _et_v1 u?int\[0-9\]*$" } } */
/* { dg-final { scan-file godump-1.out "(?n)^const _ETV1 = 0$" } } */
@@ -471,9 +480,19 @@ typedef struct s_undef_t s_undef_t2;
typedef struct s_fwd *s_fwd_p;
/* { dg-final { scan-file godump-1.out "(?n)^type _s_fwd_p \\*_s_fwd$" } } */
+struct s_fwd v_fwd;
+/* { dg-final { scan-file godump-1.out "(?n)^var _v_fwd _s_fwd" } } */
+
struct s_fwd { };
/* { dg-final { scan-file godump-1.out "(?n)^type _s_fwd struct \{ \}$" } } */
+typedef struct s_t_idem_v1 {} s_t_idem_v1;
+/* { dg-final { scan-file godump-1.out "(?n)^type _s_t_idem_v1 struct \{ \}$" } } */
+
+typedef struct s_t_idem_v2 s_t_idem_v2;
+struct s_t_idem_v2 { };
+/* { dg-final { scan-file godump-1.out "(?n)^type _s_t_idem_v2 struct \{ \}$" } } */
+
/*** nested structs ***/
typedef struct { struct { uint8_t ca[3]; } s; uint32_t i; } tsn;
/* { dg-final { scan-file godump-1.out "(?n)^type _tsn struct \{ s struct \{ ca \\\[2\\+1\\\]uint8; \}; i uint32; \}$" } } */
@@ -753,6 +772,13 @@ typedef union { } tue;
union { } ue;
/* { dg-final { scan-file godump-1.out "(?n)^var _ue struct \{ \}$" } } */
+typedef union u_t_idem_v1 { } u_t_idem_v1;
+/* { dg-final { scan-file godump-1.out "(?n)^type _u_t_idem_v1 struct \{ \}$" } } */
+
+typedef union u_t_idem_v2 u_t_idem_v2;
+union u_t_idem_v2 { };
+/* { dg-final { scan-file godump-1.out "(?n)^type _u_t_idem_v2 struct \{ \}$" } } */
+
typedef union { uint8_t c; uint64_t l; } tu1;
/* { dg-final { scan-file godump-1.out "(?n)^type _tu1 struct \{ c uint8; Godump_0_pad \\\[.\\\]byte; Godump_1_align \\\[0\\\]u?int64; \}$" } } */
diff --git a/gcc/testsuite/gcc.misc-tests/godump.exp b/gcc/testsuite/gcc.misc-tests/godump.exp
index 09b0a1f..ee61dc6 100644
--- a/gcc/testsuite/gcc.misc-tests/godump.exp
+++ b/gcc/testsuite/gcc.misc-tests/godump.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/help.exp b/gcc/testsuite/gcc.misc-tests/help.exp
index bcb62e0..5e034d2 100644
--- a/gcc/testsuite/gcc.misc-tests/help.exp
+++ b/gcc/testsuite/gcc.misc-tests/help.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2020 Free Software Foundation, Inc.
+# Copyright (C) 2005-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp b/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp
index c23e25c..dfd8d6c 100644
--- a/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp
+++ b/gcc/testsuite/gcc.misc-tests/i386-prefetch.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/linkage.exp b/gcc/testsuite/gcc.misc-tests/linkage.exp
index 112cf17..afed2b8 100644
--- a/gcc/testsuite/gcc.misc-tests/linkage.exp
+++ b/gcc/testsuite/gcc.misc-tests/linkage.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1988-2020 Free Software Foundation, Inc.
+# Copyright (C) 1988-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/matrix1.exp b/gcc/testsuite/gcc.misc-tests/matrix1.exp
index 533a4ae..6afeae3 100644
--- a/gcc/testsuite/gcc.misc-tests/matrix1.exp
+++ b/gcc/testsuite/gcc.misc-tests/matrix1.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/mg-2.exp b/gcc/testsuite/gcc.misc-tests/mg-2.exp
index 737b046..646a8b4 100644
--- a/gcc/testsuite/gcc.misc-tests/mg-2.exp
+++ b/gcc/testsuite/gcc.misc-tests/mg-2.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2020 Free Software Foundation, Inc.
+# Copyright (C) 2005-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/mg.exp b/gcc/testsuite/gcc.misc-tests/mg.exp
index 6d4543c..480e3a5 100644
--- a/gcc/testsuite/gcc.misc-tests/mg.exp
+++ b/gcc/testsuite/gcc.misc-tests/mg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/options.exp b/gcc/testsuite/gcc.misc-tests/options.exp
index 4b05ce2..718bd5d 100644
--- a/gcc/testsuite/gcc.misc-tests/options.exp
+++ b/gcc/testsuite/gcc.misc-tests/options.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2020 Free Software Foundation, Inc.
+# Copyright (C) 2005-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/output.exp b/gcc/testsuite/gcc.misc-tests/output.exp
index c7d2a3a..a74f804 100644
--- a/gcc/testsuite/gcc.misc-tests/output.exp
+++ b/gcc/testsuite/gcc.misc-tests/output.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2020 Free Software Foundation, Inc.
+# Copyright (C) 2005-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/outputs.exp b/gcc/testsuite/gcc.misc-tests/outputs.exp
index 1fdd61a..d5a9709 100644
--- a/gcc/testsuite/gcc.misc-tests/outputs.exp
+++ b/gcc/testsuite/gcc.misc-tests/outputs.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2020 Free Software Foundation, Inc.
+# Copyright (C) 2005-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -50,6 +50,9 @@ if !$skip_lto {
set ltop [check_linker_plugin_available]
}
+# Check for GNU LD. Some files like .ld1_args depend on this.
+set gld [check_effective_target_gld]
+
# Prepare additional options to be used for linking.
# We do not compile to an executable, because that requires naming an output.
set link_options ""
@@ -67,6 +70,12 @@ if {[board_info $dest exists output_format]} {
append link_options " additional_flags=-Wl,-oformat,[board_info $dest output_format]"
}
+# Avoid possible influence from the make jobserver,
+# otherwise ltrans0.ltrans_args files may be missing.
+if [info exists env(MAKEFLAGS)] {
+ unsetenv MAKEFLAGS
+}
+
# For the test named TEST, run the compiler with SOURCES and OPTS, and
# look in DIRS for OUTPUTS. SOURCES is a list of suffixes for source
# files starting with $b in $srcdir/$subdir, OPTS is a string with
@@ -130,6 +139,7 @@ proc outest { test sources opts dirs outputs } {
foreach og $olist {
if { [string index $og 0] == "!" } {
global gspd ltop
+ global gld
set cond [expr $og]
continue
}
@@ -181,7 +191,10 @@ proc outest { test sources opts dirs outputs } {
file delete $f
# collect2 may create <execname>.cdtor* files in -save-temps link tests,
# ??? without regard to aux output naming conventions.
- if ![string match "*.cdtor.*" $f] then {
+ # Limit this exception to targets that define EH_FRAME_THROUGH_COLLECT2.
+ if { !(([istarget powerpc*-*-aix*] || [is_target hppa*-*-hpux*])
+ && ([string match "*.cdtor.*" $f]
+ || [string match "*.gcc_args" $f])) } {
lappend outb $f
}
}
@@ -284,6 +297,12 @@ outest "$b exe savetmp named0" $sing "-o $b-0.exe -save-temps" {} {{-0.i -0.s -0
outest "$b exe savetmp namedb" $sing "-o $b.exe -save-temps" {} {{--0.i --0.s --0.o .exe}}
outest "$b exe savetmp named2" $mult "-o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o .exe}}
+# Additional files are created when an @file is used
+outest "$b exe savetmp namedb" $sing "@/dev/null -o $b.exe -save-temps" {} {{--0.i --0.s --0.o .args.0 !!$gld .ld1_args !0 .exe}}
+outest "$b exe savetmp named2" $mult "@/dev/null -o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o .args.0 !!$gld .ld1_args !0 .exe}}
+outest "$b exe savetmp named2" $mult "@/dev/null -I dummy -o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o -args.0 -args.1 .args.2 !!$gld .ld1_args !0 .exe}}
+outest "$b exe savetmp named2" $mult "@/dev/null -I dummy -L dummy -o $b.exe -save-temps" {} {{--1.i --1.s --1.o --2.i --2.s --2.o -args.0 -args.1 .args.2 .args.3 !!$gld .ld1_args !0 .exe}}
+
# Setting the main output to a dir selects it as the default aux&dump
# location.
outest "$b cpp savetmp namedir0" $sing "-E -o o/$b-0.i -save-temps" {o/} {{-0.i} {}}
@@ -638,6 +657,7 @@ outest "$b lto sing named" $sing "-o $b.exe -O2 -flto -fno-use-linker-plugin -fl
outest "$b lto mult named" $mult "-o $b.exe -O2 -flto -fno-use-linker-plugin -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {} {{--1.c.???i.icf --1.c.???r.final --2.c.???i.icf --2.c.???r.final .wpa.???i.icf .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .exe}}
outest "$b lto sing nameddir" $sing "-o dir/$b.exe -O2 -flto -fno-use-linker-plugin -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--0.c.???i.icf --0.c.???r.final .wpa.???i.icf .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .exe} {}}
outest "$b lto mult nameddir" $mult "-o dir/$b.exe -O2 -flto -fno-use-linker-plugin -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--1.c.???i.icf --1.c.???r.final --2.c.???i.icf --2.c.???r.final .wpa.???i.icf .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .exe} {}}
+outest "$b lto sing unnamed" $sing "@/dev/null -O2 -flto -fno-use-linker-plugin -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage -save-temps $oaout" {} {{a--0.c.???i.icf a--0.c.???r.final a.wpa.???i.icf a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a--0.o a--0.s a--0.i a.ltrans0.o a.ltrans.out a.ltrans0.ltrans.o a.ltrans0.ltrans_args a.args.0 a.ltrans0.ltrans.s a.wpa.args.0 a.lto_args a.ld1_args a.ltrans_args a.ltrans0.ltrans.args.0 a.ld_args $aout}}
}
# -dumpbase without -dumpdir. The trailing dumppfx dash after it is
@@ -703,20 +723,20 @@ outest "$b lto sing empty dumpdir empty dumpbase namedb" $sing "-dumpdir \"\" -d
outest "$b lto mult empty dumpdir empty dumpbase namedb" $mult "-dumpdir \"\" -dumpbase \"\" -o dir/$b.exe -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{.exe} {-1.c.???i.icf !$ltop -1.c.???r.final !0 -2.c.???i.icf !$ltop -2.c.???r.final !0 .wpa.???i.icf .ltrans0.ltrans.???r.final .ltrans0.ltrans.su}}
# Now -flto with -save-temps, not exhaustive.
-outest "$b lto st sing empty dumpbase unnamed" $sing "-dumpbase \"\" -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage $oaout" {} {{-0.i -0.s -0.o -0.c.???i.icf !$ltop -0.c.???r.final !!$ltop a.lto_wrapper_args !0 a.wpa.???i.icf a.ltrans.out a.ltrans_args !!$ltop a.res !0 a.ltrans0.o a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a.ltrans0.ltrans.s a.ltrans0.ltrans.o a.ltrans0.ltrans_args $aout}}
-outest "$b lto st mult empty dumpbase unnamed" $mult "-dumpbase \"\" -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage $oaout" {} {{-1.i -1.s -1.o -1.c.???i.icf !$ltop -1.c.???r.final !0 -2.i -2.s -2.o -2.c.???i.icf !$ltop -2.c.???r.final !!$ltop a.lto_wrapper_args !0 a.wpa.???i.icf a.ltrans.out a.ltrans_args !!$ltop a.res !0 a.ltrans0.o a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a.ltrans0.ltrans.s a.ltrans0.ltrans.o a.ltrans0.ltrans_args $aout}}
-outest "$b lto st sing dumpdir empty dumpbase named" $sing "-dumpdir dir/ -dumpbase \"\" -o $b-0.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{-0.i -0.s -0.o -0.c.???i.icf !$ltop -0.c.???r.final !!$ltop -0.lto_wrapper_args !0 -0.wpa.???i.icf -0.ltrans.out -0.ltrans_args !!$ltop -0.res !0 -0.ltrans0.o -0.ltrans0.ltrans.???r.final -0.ltrans0.ltrans.su -0.ltrans0.ltrans.s -0.ltrans0.ltrans.o -0.ltrans0.ltrans_args} {-0.exe}}
-outest "$b lto st mult dumpdir empty dumpbase named" $mult "-dumpdir dir/ -dumpbase \"\" -o $b-1.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{-1.i -1.s -1.o -1.c.???i.icf !$ltop -1.c.???r.final !0 -2.i -2.s -2.o -2.c.???i.icf !$ltop -2.c.???r.final !!$ltop -1.lto_wrapper_args !0 -1.wpa.???i.icf -1.ltrans.out -1.ltrans_args !!$ltop -1.res !0 -1.ltrans0.o -1.ltrans0.ltrans.???r.final -1.ltrans0.ltrans.su -1.ltrans0.ltrans.s -1.ltrans0.ltrans.o -1.ltrans0.ltrans_args} {-1.exe}}
-outest "$b lto st sing empty dumpbase namedb" $sing "-dumpbase \"\" -o dir/$b.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{-0.i -0.s -0.o -0.c.???i.icf !$ltop -0.c.???r.final !!$ltop .lto_wrapper_args !0 .wpa.???i.icf .ltrans.out .ltrans_args !!$ltop .res !0 .ltrans0.o .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .ltrans0.ltrans.s .ltrans0.ltrans.o .ltrans0.ltrans_args .exe} {}}
-outest "$b lto st mult empty dumpbase namedb" $mult "-dumpbase \"\" -o dir/$b.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{-1.i -1.s -1.o -1.c.???i.icf !$ltop -1.c.???r.final !0 -2.i -2.s -2.o -2.c.???i.icf !$ltop -2.c.???r.final !!$ltop .lto_wrapper_args !0 .wpa.???i.icf .ltrans.out .ltrans_args !!$ltop .res !0 .ltrans0.o .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .ltrans0.ltrans.s .ltrans0.ltrans.o .ltrans0.ltrans_args .exe} {}}
+outest "$b lto st sing empty dumpbase unnamed" $sing "-dumpbase \"\" -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage $oaout" {} {{-0.i -0.s -0.o -0.c.???i.icf !$ltop -0.c.???r.final !!$ltop a.lto_wrapper_args !0 a.wpa.???i.icf a.ltrans.out a.ltrans_args !!$ltop a.res !0 a.ltrans0.o a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a.ltrans0.ltrans.s a.ltrans0.ltrans.o a.ltrans0.ltrans_args a.ltrans0.ltrans.args.0 a.wpa.args.0 $aout}}
+outest "$b lto st mult empty dumpbase unnamed" $mult "-dumpbase \"\" -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage $oaout" {} {{-1.i -1.s -1.o -1.c.???i.icf !$ltop -1.c.???r.final !0 -2.i -2.s -2.o -2.c.???i.icf !$ltop -2.c.???r.final !!$ltop a.lto_wrapper_args !0 a.wpa.???i.icf a.ltrans.out a.ltrans_args !!$ltop a.res !0 a.ltrans0.o a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a.ltrans0.ltrans.s a.ltrans0.ltrans.o a.ltrans0.ltrans_args a.ltrans0.ltrans.args.0 a.wpa.args.0 $aout}}
+outest "$b lto st sing dumpdir empty dumpbase named" $sing "-dumpdir dir/ -dumpbase \"\" -o $b-0.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{-0.i -0.s -0.o -0.c.???i.icf !$ltop -0.c.???r.final !!$ltop -0.lto_wrapper_args !0 -0.wpa.???i.icf -0.ltrans.out -0.ltrans_args !!$ltop -0.res !0 -0.ltrans0.o -0.ltrans0.ltrans.???r.final -0.ltrans0.ltrans.su -0.ltrans0.ltrans.s -0.ltrans0.ltrans.o -0.ltrans0.ltrans_args -0.ltrans0.ltrans.args.0 -0.wpa.args.0} {-0.exe}}
+outest "$b lto st mult dumpdir empty dumpbase named" $mult "-dumpdir dir/ -dumpbase \"\" -o $b-1.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{-1.i -1.s -1.o -1.c.???i.icf !$ltop -1.c.???r.final !0 -2.i -2.s -2.o -2.c.???i.icf !$ltop -2.c.???r.final !!$ltop -1.lto_wrapper_args !0 -1.wpa.???i.icf -1.ltrans.out -1.ltrans_args !!$ltop -1.res !0 -1.ltrans0.o -1.ltrans0.ltrans.???r.final -1.ltrans0.ltrans.su -1.ltrans0.ltrans.s -1.ltrans0.ltrans.o -1.ltrans0.ltrans_args -1.ltrans0.ltrans.args.0 -1.wpa.args.0} {-1.exe}}
+outest "$b lto st sing empty dumpbase namedb" $sing "-dumpbase \"\" -o dir/$b.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{-0.i -0.s -0.o -0.c.???i.icf !$ltop -0.c.???r.final !!$ltop .lto_wrapper_args !0 .wpa.???i.icf .ltrans.out .ltrans_args !!$ltop .res !0 .ltrans0.o .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .ltrans0.ltrans.s .ltrans0.ltrans.o .ltrans0.ltrans_args .ltrans0.ltrans.args.0 .wpa.args.0 .exe} {}}
+outest "$b lto st mult empty dumpbase namedb" $mult "-dumpbase \"\" -o dir/$b.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{-1.i -1.s -1.o -1.c.???i.icf !$ltop -1.c.???r.final !0 -2.i -2.s -2.o -2.c.???i.icf !$ltop -2.c.???r.final !!$ltop .lto_wrapper_args !0 .wpa.???i.icf .ltrans.out .ltrans_args !!$ltop .res !0 .ltrans0.o .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .ltrans0.ltrans.s .ltrans0.ltrans.o .ltrans0.ltrans_args .ltrans0.ltrans.args.0 .wpa.args.0 .exe} {}}
# lto save-temps without -dumpbase.
-outest "$b lto st sing unnamed" $sing "-save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage $oaout" {} {{a--0.i a--0.s a--0.o a--0.c.???i.icf !$ltop a--0.c.???r.final !!$ltop a.lto_wrapper_args !0 a.wpa.???i.icf a.ltrans.out a.ltrans_args !!$ltop a.res !0 a.ltrans0.o a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a.ltrans0.ltrans.s a.ltrans0.ltrans.o a.ltrans0.ltrans_args $aout}}
-outest "$b lto st mult unnamed" $mult "-save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage $oaout" {} {{a--1.i a--1.s a--1.o a--1.c.???i.icf !$ltop a--1.c.???r.final !0 a--2.i a--2.s a--2.o a--2.c.???i.icf !$ltop a--2.c.???r.final !!$ltop a.lto_wrapper_args !0 a.wpa.???i.icf a.ltrans.out a.ltrans_args !!$ltop a.res !0 a.ltrans0.o a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a.ltrans0.ltrans.s a.ltrans0.ltrans.o a.ltrans0.ltrans_args $aout}}
-outest "$b lto st sing dumpdir named" $sing "-dumpdir dir/$b- -o $b-0.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--0.i --0.s --0.o --0.c.???i.icf !$ltop --0.c.???r.final !!$ltop -lto_wrapper_args !0 -wpa.???i.icf -ltrans.out -ltrans_args !!$ltop -res !0 -ltrans0.o -ltrans0.ltrans.???r.final -ltrans0.ltrans.su -ltrans0.ltrans.s -ltrans0.ltrans.o -ltrans0.ltrans_args} {-0.exe}}
-outest "$b lto st mult dumpdir named" $mult "-dumpdir dir/$b- -o $b-1.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--1.i --1.s --1.o --1.c.???i.icf !$ltop --1.c.???r.final !0 --2.i --2.s --2.o --2.c.???i.icf !$ltop --2.c.???r.final !!$ltop -lto_wrapper_args !0 -wpa.???i.icf -ltrans.out -ltrans_args !!$ltop -res !0 -ltrans0.o -ltrans0.ltrans.???r.final -ltrans0.ltrans.su -ltrans0.ltrans.s -ltrans0.ltrans.o -ltrans0.ltrans_args} {-1.exe}}
-outest "$b lto st sing namedb" $sing "-o dir/$b.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--0.i --0.s --0.o --0.c.???i.icf !$ltop --0.c.???r.final !!$ltop .lto_wrapper_args !0 .wpa.???i.icf .ltrans.out .ltrans_args !!$ltop .res !0 .ltrans0.o .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .ltrans0.ltrans.s .ltrans0.ltrans.o .ltrans0.ltrans_args .exe} {}}
-outest "$b lto st mult namedb" $mult "-o dir/$b.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--1.i --1.s --1.o --1.c.???i.icf !$ltop --1.c.???r.final !0 --2.i --2.s --2.o --2.c.???i.icf !$ltop --2.c.???r.final !!$ltop .lto_wrapper_args !0 .wpa.???i.icf .ltrans.out .ltrans_args !!$ltop .res !0 .ltrans0.o .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .ltrans0.ltrans.s .ltrans0.ltrans.o .ltrans0.ltrans_args .exe} {}}
+outest "$b lto st sing unnamed" $sing "-save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage $oaout" {} {{a--0.i a--0.s a--0.o a--0.c.???i.icf !$ltop a--0.c.???r.final !!$ltop a.lto_wrapper_args !0 a.wpa.???i.icf a.ltrans.out a.ltrans_args !!$ltop a.res !0 a.ltrans0.o a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a.ltrans0.ltrans.s a.ltrans0.ltrans.o a.ltrans0.ltrans_args a.ltrans0.ltrans.args.0 a.wpa.args.0 $aout}}
+outest "$b lto st mult unnamed" $mult "-save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage $oaout" {} {{a--1.i a--1.s a--1.o a--1.c.???i.icf !$ltop a--1.c.???r.final !0 a--2.i a--2.s a--2.o a--2.c.???i.icf !$ltop a--2.c.???r.final !!$ltop a.lto_wrapper_args !0 a.wpa.???i.icf a.ltrans.out a.ltrans_args !!$ltop a.res !0 a.ltrans0.o a.ltrans0.ltrans.???r.final a.ltrans0.ltrans.su a.ltrans0.ltrans.s a.ltrans0.ltrans.o a.ltrans0.ltrans_args a.ltrans0.ltrans.args.0 a.wpa.args.0 $aout}}
+outest "$b lto st sing dumpdir named" $sing "-dumpdir dir/$b- -o $b-0.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--0.i --0.s --0.o --0.c.???i.icf !$ltop --0.c.???r.final !!$ltop -lto_wrapper_args !0 -wpa.???i.icf -ltrans.out -ltrans_args !!$ltop -res !0 -ltrans0.o -ltrans0.ltrans.???r.final -ltrans0.ltrans.su -ltrans0.ltrans.s -ltrans0.ltrans.o -ltrans0.ltrans_args -ltrans0.ltrans.args.0 -wpa.args.0} {-0.exe}}
+outest "$b lto st mult dumpdir named" $mult "-dumpdir dir/$b- -o $b-1.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--1.i --1.s --1.o --1.c.???i.icf !$ltop --1.c.???r.final !0 --2.i --2.s --2.o --2.c.???i.icf !$ltop --2.c.???r.final !!$ltop -lto_wrapper_args !0 -wpa.???i.icf -ltrans.out -ltrans_args !!$ltop -res !0 -ltrans0.o -ltrans0.ltrans.???r.final -ltrans0.ltrans.su -ltrans0.ltrans.s -ltrans0.ltrans.o -ltrans0.ltrans_args -ltrans0.ltrans.args.0 -wpa.args.0} {-1.exe}}
+outest "$b lto st sing namedb" $sing "-o dir/$b.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--0.i --0.s --0.o --0.c.???i.icf !$ltop --0.c.???r.final !!$ltop .lto_wrapper_args !0 .wpa.???i.icf .ltrans.out .ltrans_args !!$ltop .res !0 .ltrans0.o .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .ltrans0.ltrans.s .ltrans0.ltrans.o .ltrans0.ltrans_args .ltrans0.ltrans.args.0 .wpa.args.0 .exe} {}}
+outest "$b lto st mult namedb" $mult "-o dir/$b.exe -save-temps -O2 -flto -flto-partition=one -fdump-ipa-icf-optimized -fdump-rtl-final -fstack-usage" {dir/} {{--1.i --1.s --1.o --1.c.???i.icf !$ltop --1.c.???r.final !0 --2.i --2.s --2.o --2.c.???i.icf !$ltop --2.c.???r.final !!$ltop .lto_wrapper_args !0 .wpa.???i.icf .ltrans.out .ltrans_args !!$ltop .res !0 .ltrans0.o .ltrans0.ltrans.???r.final .ltrans0.ltrans.su .ltrans0.ltrans.s .ltrans0.ltrans.o .ltrans0.ltrans_args .ltrans0.ltrans.args.0 .wpa.args.0 .exe} {}}
# !$skip_lto
}
diff --git a/gcc/testsuite/gcc.misc-tests/sieve.exp b/gcc/testsuite/gcc.misc-tests/sieve.exp
index 90e5afa..c04499d 100644
--- a/gcc/testsuite/gcc.misc-tests/sieve.exp
+++ b/gcc/testsuite/gcc.misc-tests/sieve.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.misc-tests/sort2.exp b/gcc/testsuite/gcc.misc-tests/sort2.exp
index cf22513..6226849 100644
--- a/gcc/testsuite/gcc.misc-tests/sort2.exp
+++ b/gcc/testsuite/gcc.misc-tests/sort2.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.src/maintainers.exp b/gcc/testsuite/gcc.src/maintainers.exp
index e41e7be..62aa738 100644
--- a/gcc/testsuite/gcc.src/maintainers.exp
+++ b/gcc/testsuite/gcc.src/maintainers.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp b/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp
index fc8de93..0a74c35 100644
--- a/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp
+++ b/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# Contributed by ARM Ltd.
#
# This file is part of GCC.
diff --git a/gcc/testsuite/gcc.target/aarch64/aarch64.exp b/gcc/testsuite/gcc.target/aarch64/aarch64.exp
index 5119a6d..e5a530d 100644
--- a/gcc/testsuite/gcc.target/aarch64/aarch64.exp
+++ b/gcc/testsuite/gcc.target/aarch64/aarch64.exp
@@ -1,5 +1,5 @@
# Specific regression driver for AArch64.
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# Contributed by ARM Ltd.
#
# This file is part of GCC.
diff --git a/gcc/testsuite/gcc.target/aarch64/acle/acle.exp b/gcc/testsuite/gcc.target/aarch64/acle/acle.exp
index ce80ca0..1a17990 100644
--- a/gcc/testsuite/gcc.target/aarch64/acle/acle.exp
+++ b/gcc/testsuite/gcc.target/aarch64/acle/acle.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp
index 2641769..ed3fbe8 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
index 61fe7e7..6f4d62b 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
@@ -356,73 +356,6 @@ static volatile int __read_neon_cumulative_sat (void) {
}
#endif
-/* Declare expected cumulative saturation results, one for each
- size. They are defined and initialized in relevant test files. */
-extern int VECT_VAR(expected_cumulative_sat, int, 8, 8);
-extern int VECT_VAR(expected_cumulative_sat, int, 16, 4);
-extern int VECT_VAR(expected_cumulative_sat, int, 32, 2);
-extern int VECT_VAR(expected_cumulative_sat, int, 64, 1);
-extern int VECT_VAR(expected_cumulative_sat, uint, 8, 8);
-extern int VECT_VAR(expected_cumulative_sat, uint, 16, 4);
-extern int VECT_VAR(expected_cumulative_sat, uint, 32, 2);
-extern int VECT_VAR(expected_cumulative_sat, uint, 64, 1);
-extern int VECT_VAR(expected_cumulative_sat, int, 8, 16);
-extern int VECT_VAR(expected_cumulative_sat, int, 16, 8);
-extern int VECT_VAR(expected_cumulative_sat, int, 32, 4);
-extern int VECT_VAR(expected_cumulative_sat, int, 64, 2);
-extern int VECT_VAR(expected_cumulative_sat, uint, 8, 16);
-extern int VECT_VAR(expected_cumulative_sat, uint, 16, 8);
-extern int VECT_VAR(expected_cumulative_sat, uint, 32, 4);
-extern int VECT_VAR(expected_cumulative_sat, uint, 64, 2);
-
-/* Check cumulative saturation flag vs expected value. */
-#define CHECK_CUMULATIVE_SAT(MSG,T,W,N,EXPECTED,COMMENT) \
- { \
- if (Neon_Cumulative_Sat != \
- VECT_VAR(EXPECTED, T, W, N)) { \
- fprintf(stderr, \
- "ERROR in %s (%s line %d in cumulative_sat '%s') at type %s: " \
- "got %d expected %d%s\n", \
- MSG, __FILE__, __LINE__, \
- STR(EXPECTED), \
- STR(VECT_NAME(T, W, N)), \
- Neon_Cumulative_Sat, \
- VECT_VAR(EXPECTED, T, W, N), \
- strlen(COMMENT) > 0 ? " " COMMENT : ""); \
- abort(); \
- } \
- fprintf(stderr, "CHECKED CUMULATIVE SAT %s %s\n", \
- STR(VECT_TYPE(T, W, N)), MSG); \
- }
-
-#define CHECK_CUMULATIVE_SAT_NAMED(test_name,EXPECTED,comment) \
- { \
- CHECK_CUMULATIVE_SAT(test_name, int, 8, 8, PRIx8, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, int, 16, 4, PRIx16, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, int, 32, 2, PRIx32, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, int, 64, 1, PRIx64, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, uint, 8, 8, PRIx8, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, uint, 16, 4, PRIx16, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, uint, 32, 2, PRIx32, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, uint, 64, 1, PRIx64, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, poly, 8, 8, PRIx8, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, poly, 16, 4, PRIx16, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT_FP(test_name, float, 32, 2, PRIx32, EXPECTED, comment); \
- \
- CHECK_CUMULATIVE_SAT(test_name, int, 8, 16, PRIx8, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, int, 16, 8, PRIx16, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, int, 32, 4, PRIx32, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, int, 64, 2, PRIx64, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, uint, 8, 16, PRIx8, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, uint, 16, 8, PRIx16, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, uint, 32, 4, PRIx32, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, uint, 64, 2, PRIx64, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, poly, 8, 16, PRIx8, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT(test_name, poly, 16, 8, PRIx16, EXPECTED, comment); \
- CHECK_CUMULATIVE_SAT_FP(test_name, float, 32, 4, PRIx32, EXPECTED, comment); \
- } \
-
-
/* Clean output buffers before execution. */
static void clean_results (void)
{
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_sat_op.inc b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_sat_op.inc
index c91709f..58bd9df 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_sat_op.inc
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_sat_op.inc
@@ -17,17 +17,16 @@ void FNNAME (INSN_NAME) (void)
{
/* vector_res = OP(vector1,vector2), then store the result. */
-#define TEST_BINARY_SAT_OP1(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_BINARY_SAT_OP1(INSN, Q, T1, T2, W, N, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \
VECT_VAR(vector_res, T1, W, N) = \
INSN##Q##_##T2##W(VECT_VAR(vector1, T1, W, N), \
VECT_VAR(vector2, T1, W, N)); \
vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \
- VECT_VAR(vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W, N))
-#define TEST_BINARY_SAT_OP(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_BINARY_SAT_OP1(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_BINARY_SAT_OP(INSN, Q, T1, T2, W, N, CMT) \
+ TEST_BINARY_SAT_OP1(INSN, Q, T1, T2, W, N, CMT)
DECL_VARIABLE_ALL_VARIANTS(vector1);
DECL_VARIABLE_ALL_VARIANTS(vector2);
@@ -58,23 +57,23 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector2, q, uint, u, 64, 2, 0x88);
/* Apply a saturating binary operator named INSN_NAME. */
- TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 8, 8, expected_cumulative_sat, "");
- TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 16, 4, expected_cumulative_sat, "");
- TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 32, 2, expected_cumulative_sat, "");
- TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, expected_cumulative_sat, "");
- TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 8, 8, expected_cumulative_sat, "");
- TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 16, 4, expected_cumulative_sat, "");
- TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 32, 2, expected_cumulative_sat, "");
- TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, expected_cumulative_sat, "");
-
- TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, expected_cumulative_sat, "");
- TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, expected_cumulative_sat, "");
- TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, expected_cumulative_sat, "");
- TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, expected_cumulative_sat, "");
- TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 8, 16, expected_cumulative_sat, "");
- TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 16, 8, expected_cumulative_sat, "");
- TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 32, 4, expected_cumulative_sat, "");
- TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, expected_cumulative_sat, "");
+ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 8, 8, "");
+ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 16, 4, "");
+ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 32, 2, "");
+ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, "");
+ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 8, 8, "");
+ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 16, 4, "");
+ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 32, 2, "");
+ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, "");
+
+ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, "");
+ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, "");
+ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, "");
+ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, "");
+ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 8, 16, "");
+ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 16, 8, "");
+ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 32, 4, "");
+ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, "");
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, "");
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, "");
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/p64_p128.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/p64_p128.c
index a3210a9..6aed096 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/p64_p128.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/p64_p128.c
@@ -16,6 +16,11 @@ VECT_VAR_DECL(vbsl_expected,poly,64,2) [] = { 0xfffffff1,
/* Expected results: vceq. */
VECT_VAR_DECL(vceq_expected,uint,64,1) [] = { 0x0 };
+VECT_VAR_DECL(vceq_expected,uint,64,2) [] = { 0x0, 0xffffffffffffffff };
+
+/* Expected results: vceqz. */
+VECT_VAR_DECL(vceqz_expected,uint,64,1) [] = { 0x0 };
+VECT_VAR_DECL(vceqz_expected,uint,64,2) [] = { 0x0, 0xffffffffffffffff };
/* Expected results: vcombine. */
VECT_VAR_DECL(vcombine_expected,poly,64,2) [] = { 0xfffffffffffffff0, 0x88 };
@@ -213,7 +218,7 @@ int main (void)
/* vceq_p64 tests. */
#undef TEST_MSG
-#define TEST_MSG "VCEQ"
+#define TEST_MSG "VCEQ/VCEQQ"
#define TEST_VCOMP1(INSN, Q, T1, T2, T3, W, N) \
VECT_VAR(vceq_vector_res, T3, W, N) = \
@@ -227,16 +232,55 @@ int main (void)
DECL_VARIABLE(vceq_vector, poly, 64, 1);
DECL_VARIABLE(vceq_vector2, poly, 64, 1);
DECL_VARIABLE(vceq_vector_res, uint, 64, 1);
+ DECL_VARIABLE(vceq_vector, poly, 64, 2);
+ DECL_VARIABLE(vceq_vector2, poly, 64, 2);
+ DECL_VARIABLE(vceq_vector_res, uint, 64, 2);
CLEAN(result, uint, 64, 1);
+ CLEAN(result, uint, 64, 2);
VLOAD(vceq_vector, buffer, , poly, p, 64, 1);
+ VLOAD(vceq_vector, buffer, q, poly, p, 64, 2);
VDUP(vceq_vector2, , poly, p, 64, 1, 0x88);
+ VSET_LANE(vceq_vector2, q, poly, p, 64, 2, 0, 0x88);
+ VSET_LANE(vceq_vector2, q, poly, p, 64, 2, 1, 0xFFFFFFFFFFFFFFF1);
TEST_VCOMP(vceq, , poly, p, uint, 64, 1);
+ TEST_VCOMP(vceq, q, poly, p, uint, 64, 2);
CHECK(TEST_MSG, uint, 64, 1, PRIx64, vceq_expected, "");
+ CHECK(TEST_MSG, uint, 64, 2, PRIx64, vceq_expected, "");
+
+ /* vceqz_p64 tests. */
+#undef TEST_MSG
+#define TEST_MSG "VCEQZ/VCEQZQ"
+
+#define TEST_VCOMPZ1(INSN, Q, T1, T2, T3, W, N) \
+ VECT_VAR(vceqz_vector_res, T3, W, N) = \
+ INSN##Q##_##T2##W(VECT_VAR(vceqz_vector, T1, W, N)); \
+ vst1##Q##_u##W(VECT_VAR(result, T3, W, N), VECT_VAR(vceqz_vector_res, T3, W, N))
+
+#define TEST_VCOMPZ(INSN, Q, T1, T2, T3, W, N) \
+ TEST_VCOMPZ1(INSN, Q, T1, T2, T3, W, N)
+
+ DECL_VARIABLE(vceqz_vector, poly, 64, 1);
+ DECL_VARIABLE(vceqz_vector_res, uint, 64, 1);
+ DECL_VARIABLE(vceqz_vector, poly, 64, 2);
+ DECL_VARIABLE(vceqz_vector_res, uint, 64, 2);
+
+ CLEAN(result, uint, 64, 1);
+ CLEAN(result, uint, 64, 2);
+
+ VLOAD(vceqz_vector, buffer, , poly, p, 64, 1);
+ VLOAD(vceqz_vector, buffer, q, poly, p, 64, 2);
+ VSET_LANE(vceqz_vector, q, poly, p, 64, 2, 1, 0);
+
+ TEST_VCOMPZ(vceqz, , poly, p, uint, 64, 1);
+ TEST_VCOMPZ(vceqz, q, poly, p, uint, 64, 2);
+
+ CHECK(TEST_MSG, uint, 64, 1, PRIx64, vceqz_expected, "");
+ CHECK(TEST_MSG, uint, 64, 2, PRIx64, vceqz_expected, "");
/* vcombine_p64 tests. */
#undef TEST_MSG
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/smlal-smlsl-mull-optimized.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/smlal-smlsl-mull-optimized.c
new file mode 100644
index 0000000..1e963e5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/smlal-smlsl-mull-optimized.c
@@ -0,0 +1,45 @@
+/* { dg-do compile { target aarch64-*-* } } */
+
+#include <arm_neon.h>
+
+/*
+**add:
+** smlal v0.4s, v1.4h, v2.h[3]
+** ret
+*/
+
+int32x4_t add(int32x4_t acc, int16x4_t b, int16x4_t c) {
+ return vmlal_n_s16(acc, b, c[3]);
+}
+
+/*
+**sub:
+** smlsl v0.4s, v1.4h, v2.h[3]
+** ret
+*/
+
+int32x4_t sub(int32x4_t acc, int16x4_t b, int16x4_t c) {
+ return vmlsl_n_s16(acc, b, c[3]);
+}
+
+/*
+**smull:
+** smull v0.4s, v1.4h, v2.h[3]
+** ret
+*/
+
+int32x4_t smull(int16x4_t b, int16x4_t c) {
+ return vmull_n_s16(b, c[3]);
+}
+
+/*
+**umull:
+** umull v0.4s, v1.4h, v2.h[3]
+** ret
+*/
+
+uint32x4_t umull(uint16x4_t b, uint16x4_t c) {
+ return vmull_n_u16(b, c[3]);
+}
+
+/* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" {-O[^0]} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_sat_op.inc b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_sat_op.inc
index 30df2dd..e9f6809 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_sat_op.inc
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_sat_op.inc
@@ -16,16 +16,15 @@
void FNNAME (INSN_NAME) (void)
{
/* y=OP(x), then store the result. */
-#define TEST_UNARY_SAT_OP1(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_UNARY_SAT_OP1(INSN, Q, T1, T2, W, N, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \
VECT_VAR(vector_res, T1, W, N) = \
INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N)); \
vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \
- VECT_VAR(vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W, N))
-#define TEST_UNARY_SAT_OP(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_UNARY_SAT_OP1(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_UNARY_SAT_OP(INSN, Q, T1, T2, W, N, CMT) \
+ TEST_UNARY_SAT_OP1(INSN, Q, T1, T2, W, N, CMT)
/* No need for 64 bits variants. */
DECL_VARIABLE(vector, int, 8, 8);
@@ -53,12 +52,12 @@ void FNNAME (INSN_NAME) (void)
VLOAD(vector, buffer, q, int, s, 32, 4);
/* Apply a saturating unary operator named INSN_NAME. */
- TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 8, 8, expected_cumulative_sat, "");
- TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 16, 4, expected_cumulative_sat, "");
- TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 32, 2, expected_cumulative_sat, "");
- TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, expected_cumulative_sat, "");
- TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, expected_cumulative_sat, "");
- TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, expected_cumulative_sat, "");
+ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 8, 8, "");
+ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 16, 4, "");
+ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 32, 2, "");
+ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, "");
+ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, "");
+ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, "");
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, "");
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, "");
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high.inc b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high.inc
new file mode 100644
index 0000000..7c9ee26
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high.inc
@@ -0,0 +1,89 @@
+#define FNNAME1(NAME) exec_ ## NAME
+#define FNNAME(NAME) FNNAME1(NAME)
+
+void FNNAME (INSN_NAME) (void)
+{
+ /* vector_res = OP(vector, vector3, vector4),
+ then store the result. */
+#define TEST_VMLXL_HIGH1(INSN, T1, T2, W1, W2, N1, N2) \
+ VECT_VAR(vector_res, T1, W1, N1) = \
+ INSN##_##T2##W2(VECT_VAR(vector, T1, W1, N1), \
+ VECT_VAR(vector3, T1, W2, N2), \
+ VECT_VAR(vector4, T1, W2, N2)); \
+ vst1q_##T2##W1(VECT_VAR(result, T1, W1, N1), VECT_VAR(vector_res, T1, W1, N1))
+
+#define TEST_VMLXL_HIGH(INSN, T1, T2, W1, W2, N1, N2) \
+ TEST_VMLXL_HIGH1(INSN, T1, T2, W1, W2, N1, N2)
+
+ DECL_VARIABLE(vector, int, 16, 8);
+ DECL_VARIABLE(vector3, int, 8, 16);
+ DECL_VARIABLE(vector4, int, 8, 16);
+ DECL_VARIABLE(vector_res, int, 16, 8);
+
+ DECL_VARIABLE(vector, int, 32, 4);
+ DECL_VARIABLE(vector3, int, 16, 8);
+ DECL_VARIABLE(vector4, int, 16, 8);
+ DECL_VARIABLE(vector_res, int, 32, 4);
+
+ DECL_VARIABLE(vector, int, 64, 2);
+ DECL_VARIABLE(vector3, int, 32, 4);
+ DECL_VARIABLE(vector4, int, 32, 4);
+ DECL_VARIABLE(vector_res, int, 64, 2);
+
+ DECL_VARIABLE(vector, uint, 16, 8);
+ DECL_VARIABLE(vector3, uint, 8, 16);
+ DECL_VARIABLE(vector4, uint, 8, 16);
+ DECL_VARIABLE(vector_res, uint, 16, 8);
+
+ DECL_VARIABLE(vector, uint, 32, 4);
+ DECL_VARIABLE(vector3, uint, 16, 8);
+ DECL_VARIABLE(vector4, uint, 16, 8);
+ DECL_VARIABLE(vector_res, uint, 32, 4);
+
+ DECL_VARIABLE(vector, uint, 64, 2);
+ DECL_VARIABLE(vector3, uint, 32, 4);
+ DECL_VARIABLE(vector4, uint, 32, 4);
+ DECL_VARIABLE(vector_res, uint, 64, 2);
+
+ clean_results ();
+
+ VLOAD(vector, buffer, q, int, s, 16, 8);
+ VLOAD(vector, buffer, q, int, s, 32, 4);
+ VLOAD(vector, buffer, q, int, s, 64, 2);
+ VLOAD(vector, buffer, q, uint, u, 16, 8);
+ VLOAD(vector, buffer, q, uint, u, 32, 4);
+ VLOAD(vector, buffer, q, uint, u, 64, 2);
+
+ VDUP(vector3, q, int, s, 8, 16, 0x55);
+ VDUP(vector4, q, int, s, 8, 16, 0xBB);
+ VDUP(vector3, q, int, s, 16, 8, 0x55);
+ VDUP(vector4, q, int, s, 16, 8, 0xBB);
+ VDUP(vector3, q, int, s, 32, 4, 0x55);
+ VDUP(vector4, q, int, s, 32, 4, 0xBB);
+ VDUP(vector3, q, uint, u, 8, 16, 0x55);
+ VDUP(vector4, q, uint, u, 8, 16, 0xBB);
+ VDUP(vector3, q, uint, u, 16, 8, 0x55);
+ VDUP(vector4, q, uint, u, 16, 8, 0xBB);
+ VDUP(vector3, q, uint, u, 32, 4, 0x55);
+ VDUP(vector4, q, uint, u, 32, 4, 0xBB);
+
+ TEST_VMLXL_HIGH(INSN_NAME, int, s, 16, 8, 8, 16);
+ TEST_VMLXL_HIGH(INSN_NAME, int, s, 32, 16, 4, 8);
+ TEST_VMLXL_HIGH(INSN_NAME, int, s, 64, 32, 2, 4);
+ TEST_VMLXL_HIGH(INSN_NAME, uint, u, 16, 8, 8, 16);
+ TEST_VMLXL_HIGH(INSN_NAME, uint, u, 32, 16, 4, 8);
+ TEST_VMLXL_HIGH(INSN_NAME, uint, u, 64, 32, 2, 4);
+
+ CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
+ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
+ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
+ CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
+ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
+ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
+}
+
+int main (void)
+{
+ FNNAME (INSN_NAME) ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_lane.inc b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_lane.inc
new file mode 100644
index 0000000..b572855
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_lane.inc
@@ -0,0 +1,71 @@
+#define FNNAME1(NAME) exec_ ## NAME
+#define FNNAME(NAME) FNNAME1(NAME)
+
+void FNNAME (INSN_NAME) (void)
+{
+ /* vector_res = vmlxl_high_lane(vector, vector3, vector4, lane),
+ then store the result. */
+#define TEST_VMLXL_HIGH_LANE1(INSN, T1, T2, W1, W2, N1, N2, V) \
+ VECT_VAR(vector_res, T1, W2, N2) = \
+ INSN##_##T2##W1(VECT_VAR(vector, T1, W2, N2), \
+ VECT_VAR(vector3, T1, W1, N1), \
+ VECT_VAR(vector4, T1, W1, N2), \
+ V); \
+ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N2), \
+ VECT_VAR(vector_res, T1, W2, N2))
+
+#define TEST_VMLXL_HIGH_LANE(INSN, T1, T2, W1, W2, N1, N2, V) \
+ TEST_VMLXL_HIGH_LANE1(INSN, T1, T2, W1, W2, N1, N2, V)
+
+ DECL_VARIABLE(vector, int, 32, 4);
+ DECL_VARIABLE(vector3, int, 16, 8);
+ DECL_VARIABLE(vector4, int, 16, 4);
+ DECL_VARIABLE(vector_res, int, 32, 4);
+
+ DECL_VARIABLE(vector, int, 64, 2);
+ DECL_VARIABLE(vector3, int, 32, 4);
+ DECL_VARIABLE(vector4, int, 32, 2);
+ DECL_VARIABLE(vector_res, int, 64, 2);
+
+ DECL_VARIABLE(vector, uint, 32, 4);
+ DECL_VARIABLE(vector3, uint, 16, 8);
+ DECL_VARIABLE(vector4, uint, 16, 4);
+ DECL_VARIABLE(vector_res, uint, 32, 4);
+
+ DECL_VARIABLE(vector, uint, 64, 2);
+ DECL_VARIABLE(vector3, uint, 32, 4);
+ DECL_VARIABLE(vector4, uint, 32, 2);
+ DECL_VARIABLE(vector_res, uint, 64, 2);
+
+ clean_results ();
+
+ VLOAD(vector, buffer, q, int, s, 32, 4);
+ VLOAD(vector, buffer, q, int, s, 64, 2);
+ VLOAD(vector, buffer, q, uint, u, 32, 4);
+ VLOAD(vector, buffer, q, uint, u, 64, 2);
+
+ VDUP(vector3, q, int, s, 16, 8, 0x55);
+ VDUP(vector4, , int, s, 16, 4, 0xBB);
+ VDUP(vector3, q, int, s, 32, 4, 0x55);
+ VDUP(vector4, , int, s, 32, 2, 0xBB);
+ VDUP(vector3, q, uint, u, 16, 8, 0x55);
+ VDUP(vector4, , uint, u, 16, 4, 0xBB);
+ VDUP(vector3, q, uint, u, 32, 4, 0x55);
+ VDUP(vector4, , uint, u, 32, 2, 0xBB);
+
+ TEST_VMLXL_HIGH_LANE(INSN_NAME, int, s, 16, 32, 8, 4, 2);
+ TEST_VMLXL_HIGH_LANE(INSN_NAME, int, s, 32, 64, 4, 2, 1);
+ TEST_VMLXL_HIGH_LANE(INSN_NAME, uint, u, 16, 32, 8, 4, 2);
+ TEST_VMLXL_HIGH_LANE(INSN_NAME, uint, u, 32, 64, 4, 2, 1);
+
+ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
+ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
+ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
+ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
+}
+
+int main (void)
+{
+ FNNAME (INSN_NAME) ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_laneq.inc b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_laneq.inc
new file mode 100644
index 0000000..d970e19
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_laneq.inc
@@ -0,0 +1,71 @@
+#define FNNAME1(NAME) exec_ ## NAME
+#define FNNAME(NAME) FNNAME1(NAME)
+
+void FNNAME (INSN_NAME) (void)
+{
+ /* vector_res = vmlxl_high_laneq(vector, vector3, vector4, lane),
+ then store the result. */
+#define TEST_VMLXL_HIGH_LANEQ1(INSN, T1, T2, W1, W2, N1, N2, V) \
+ VECT_VAR(vector_res, T1, W2, N2) = \
+ INSN##_##T2##W1(VECT_VAR(vector, T1, W2, N2), \
+ VECT_VAR(vector3, T1, W1, N1), \
+ VECT_VAR(vector4, T1, W1, N1), \
+ V); \
+ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N2), \
+ VECT_VAR(vector_res, T1, W2, N2))
+
+#define TEST_VMLXL_HIGH_LANEQ(INSN, T1, T2, W1, W2, N1, N2, V) \
+ TEST_VMLXL_HIGH_LANEQ1(INSN, T1, T2, W1, W2, N1, N2, V)
+
+ DECL_VARIABLE(vector, int, 32, 4);
+ DECL_VARIABLE(vector3, int, 16, 8);
+ DECL_VARIABLE(vector4, int, 16, 8);
+ DECL_VARIABLE(vector_res, int, 32, 4);
+
+ DECL_VARIABLE(vector, int, 64, 2);
+ DECL_VARIABLE(vector3, int, 32, 4);
+ DECL_VARIABLE(vector4, int, 32, 4);
+ DECL_VARIABLE(vector_res, int, 64, 2);
+
+ DECL_VARIABLE(vector, uint, 32, 4);
+ DECL_VARIABLE(vector3, uint, 16, 8);
+ DECL_VARIABLE(vector4, uint, 16, 8);
+ DECL_VARIABLE(vector_res, uint, 32, 4);
+
+ DECL_VARIABLE(vector, uint, 64, 2);
+ DECL_VARIABLE(vector3, uint, 32, 4);
+ DECL_VARIABLE(vector4, uint, 32, 4);
+ DECL_VARIABLE(vector_res, uint, 64, 2);
+
+ clean_results ();
+
+ VLOAD(vector, buffer, q, int, s, 32, 4);
+ VLOAD(vector, buffer, q, int, s, 64, 2);
+ VLOAD(vector, buffer, q, uint, u, 32, 4);
+ VLOAD(vector, buffer, q, uint, u, 64, 2);
+
+ VDUP(vector3, q, int, s, 16, 8, 0x55);
+ VDUP(vector4, q, int, s, 16, 8, 0xBB);
+ VDUP(vector3, q, int, s, 32, 4, 0x55);
+ VDUP(vector4, q, int, s, 32, 4, 0xBB);
+ VDUP(vector3, q, uint, u, 16, 8, 0x55);
+ VDUP(vector4, q, uint, u, 16, 8, 0xBB);
+ VDUP(vector3, q, uint, u, 32, 4, 0x55);
+ VDUP(vector4, q, uint, u, 32, 4, 0xBB);
+
+ TEST_VMLXL_HIGH_LANEQ(INSN_NAME, int, s, 16, 32, 8, 4, 5);
+ TEST_VMLXL_HIGH_LANEQ(INSN_NAME, int, s, 32, 64, 4, 2, 3);
+ TEST_VMLXL_HIGH_LANEQ(INSN_NAME, uint, u, 16, 32, 8, 4, 7);
+ TEST_VMLXL_HIGH_LANEQ(INSN_NAME, uint, u, 32, 64, 4, 2, 1);
+
+ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
+ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
+ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
+ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
+}
+
+int main (void)
+{
+ FNNAME (INSN_NAME) ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_n.inc b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_n.inc
new file mode 100644
index 0000000..65b278f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlXl_high_n.inc
@@ -0,0 +1,62 @@
+#define FNNAME1(NAME) exec_ ## NAME
+#define FNNAME(NAME) FNNAME1(NAME)
+
+void FNNAME (INSN_NAME) (void)
+{
+ /* vector_res = vmlxl_high_n(vector, vector2, val), then store the result. */
+#define TEST_VMLXL_HIGH_N1(INSN, T1, T2, W1, W2, N1, N2, V) \
+ VECT_VAR(vector_res, T1, W2, N2) = \
+ INSN##_##T2##W1(VECT_VAR(vector, T1, W2, N2), \
+ VECT_VAR(vector2, T1, W1, N1), \
+ V); \
+ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N2), \
+ VECT_VAR(vector_res, T1, W2, N2))
+
+#define TEST_VMLXL_HIGH_N(INSN, T1, T2, W1, W2, N1, N2, V) \
+ TEST_VMLXL_HIGH_N1(INSN, T1, T2, W1, W2, N1, N2, V)
+
+ DECL_VARIABLE(vector, int, 32, 4);
+ DECL_VARIABLE(vector2, int, 16, 8);
+ DECL_VARIABLE(vector_res, int, 32, 4);
+
+ DECL_VARIABLE(vector, int, 64, 2);
+ DECL_VARIABLE(vector2, int, 32, 4);
+ DECL_VARIABLE(vector_res, int, 64, 2);
+
+ DECL_VARIABLE(vector, uint, 32, 4);
+ DECL_VARIABLE(vector2, uint, 16, 8);
+ DECL_VARIABLE(vector_res, uint, 32, 4);
+
+ DECL_VARIABLE(vector, uint, 64, 2);
+ DECL_VARIABLE(vector2, uint, 32, 4);
+ DECL_VARIABLE(vector_res, uint, 64, 2);
+
+ clean_results ();
+
+ VLOAD(vector, buffer, q, int, s, 32, 4);
+ VLOAD(vector, buffer, q, int, s, 64, 2);
+ VLOAD(vector, buffer, q, uint, u, 32, 4);
+ VLOAD(vector, buffer, q, uint, u, 64, 2);
+
+ VDUP(vector2, q, int, s, 16, 8, 0x55);
+ VDUP(vector2, q, int, s, 32, 4, 0x55);
+ VDUP(vector2, q, uint, u, 16, 8, 0x55);
+ VDUP(vector2, q, uint, u, 32, 4, 0x55);
+
+ /* Choose multiplier arbitrarily. */
+ TEST_VMLXL_HIGH_N(INSN_NAME, int, s, 16, 32, 8, 4, 0x11);
+ TEST_VMLXL_HIGH_N(INSN_NAME, int, s, 32, 64, 4, 2, 0x22);
+ TEST_VMLXL_HIGH_N(INSN_NAME, uint, u, 16, 32, 8, 4, 0x33);
+ TEST_VMLXL_HIGH_N(INSN_NAME, uint, u, 32, 64, 4, 2, 0x33);
+
+ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
+ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
+ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
+ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
+}
+
+int main (void)
+{
+ FNNAME (INSN_NAME) ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high.c
new file mode 100644
index 0000000..7fce05b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high.c
@@ -0,0 +1,20 @@
+/* { dg-skip-if "" { arm*-*-* } } */
+
+#include <arm_neon.h>
+#include "arm-neon-ref.h"
+#include "compute-ref-data.h"
+
+#define INSN_NAME vmlal_high
+#define TEST_MSG "VMLAL_HIGH"
+
+/* Expected results. */
+VECT_VAR_DECL(expected, int, 16, 8) [] = { 0xe907, 0xe908, 0xe909, 0xe90a,
+ 0xe90b, 0xe90c, 0xe90d, 0xe90e };
+VECT_VAR_DECL(expected, int, 32, 4) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a };
+VECT_VAR_DECL(expected, int, 64, 2) [] = { 0x3e07, 0x3e08 };
+VECT_VAR_DECL(expected, uint, 16, 8) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a,
+ 0x3e0b, 0x3e0c, 0x3e0d, 0x3e0e };
+VECT_VAR_DECL(expected, uint, 32, 4) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a };
+VECT_VAR_DECL(expected, uint, 64, 2) [] = { 0x3e07, 0x3e08 };
+
+#include "vmlXl_high.inc"
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high_lane.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high_lane.c
new file mode 100644
index 0000000..1c904e2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high_lane.c
@@ -0,0 +1,16 @@
+/* { dg-skip-if "" { arm*-*-* } } */
+
+#include <arm_neon.h>
+#include "arm-neon-ref.h"
+#include "compute-ref-data.h"
+
+#define INSN_NAME vmlal_high_lane
+#define TEST_MSG "VMLAL_HIGH_LANE"
+
+/* Expected results. */
+VECT_VAR_DECL(expected, int, 32, 4) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a };
+VECT_VAR_DECL(expected, int, 64, 2) [] = { 0x3e07, 0x3e08 };
+VECT_VAR_DECL(expected, uint, 32, 4) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a };
+VECT_VAR_DECL(expected, uint, 64, 2) [] = { 0x3e07, 0x3e08 };
+
+#include "vmlXl_high_lane.inc"
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high_laneq.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high_laneq.c
new file mode 100644
index 0000000..b885e75
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high_laneq.c
@@ -0,0 +1,16 @@
+/* { dg-skip-if "" { arm*-*-* } } */
+
+#include <arm_neon.h>
+#include "arm-neon-ref.h"
+#include "compute-ref-data.h"
+
+#define INSN_NAME vmlal_high_laneq
+#define TEST_MSG "VMLAL_HIGH_LANEQ"
+
+/* Expected results. */
+VECT_VAR_DECL(expected, int, 32, 4) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a };
+VECT_VAR_DECL(expected, int, 64, 2) [] = { 0x3e07, 0x3e08 };
+VECT_VAR_DECL(expected, uint, 32, 4) [] = { 0x3e07, 0x3e08, 0x3e09, 0x3e0a };
+VECT_VAR_DECL(expected, uint, 64, 2) [] = { 0x3e07, 0x3e08 };
+
+#include "vmlXl_high_laneq.inc"
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high_n.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high_n.c
new file mode 100644
index 0000000..68dda03
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlal_high_n.c
@@ -0,0 +1,16 @@
+/* { dg-skip-if "" { arm*-*-* } } */
+
+#include <arm_neon.h>
+#include "arm-neon-ref.h"
+#include "compute-ref-data.h"
+
+#define INSN_NAME vmlal_high_n
+#define TEST_MSG "VMLAL_HIGH_N"
+
+/* Expected results. */
+VECT_VAR_DECL(expected, int, 32, 4) [] = { 0x595, 0x596, 0x597, 0x598 };
+VECT_VAR_DECL(expected, int, 64, 2) [] = { 0xb3a, 0xb3b };
+VECT_VAR_DECL(expected, uint, 32, 4) [] = { 0x10df, 0x10e0, 0x10e1, 0x10e2 };
+VECT_VAR_DECL(expected, uint, 64, 2) [] = { 0x10df, 0x10e0 };
+
+#include "vmlXl_high_n.inc"
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high.c
new file mode 100644
index 0000000..169b842
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high.c
@@ -0,0 +1,24 @@
+/* { dg-skip-if "" { arm*-*-* } } */
+
+#include <arm_neon.h>
+#include "arm-neon-ref.h"
+#include "compute-ref-data.h"
+
+#define INSN_NAME vmlsl_high
+#define TEST_MSG "VMLSL_HIGH"
+
+/* Expected results. */
+VECT_VAR_DECL(expected, int, 16, 8) [] = { 0x16d9, 0x16da, 0x16db, 0x16dc,
+ 0x16dd, 0x16de, 0x16df, 0x16e0 };
+VECT_VAR_DECL(expected, int, 32, 4) [] = { 0xffffc1d9, 0xffffc1da,
+ 0xffffc1db, 0xffffc1dc };
+VECT_VAR_DECL(expected, int, 64, 2) [] = { 0xffffffffffffc1d9,
+ 0xffffffffffffc1da };
+VECT_VAR_DECL(expected, uint, 16, 8) [] = { 0xc1d9, 0xc1da, 0xc1db, 0xc1dc,
+ 0xc1dd, 0xc1de, 0xc1df, 0xc1e0 };
+VECT_VAR_DECL(expected, uint, 32, 4) [] = { 0xffffc1d9, 0xffffc1da,
+ 0xffffc1db, 0xffffc1dc };
+VECT_VAR_DECL(expected, uint, 64, 2) [] = { 0xffffffffffffc1d9,
+ 0xffffffffffffc1da };
+
+#include "vmlXl_high.inc"
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_lane.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_lane.c
new file mode 100644
index 0000000..babe10a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_lane.c
@@ -0,0 +1,20 @@
+/* { dg-skip-if "" { arm*-*-* } } */
+
+#include <arm_neon.h>
+#include "arm-neon-ref.h"
+#include "compute-ref-data.h"
+
+#define INSN_NAME vmlsl_high_lane
+#define TEST_MSG "VMLSL_HIGH_LANE"
+
+/* Expected results. */
+VECT_VAR_DECL(expected, int, 32, 4) [] = { 0xffffc1d9, 0xffffc1da,
+ 0xffffc1db, 0xffffc1dc };
+VECT_VAR_DECL(expected, int, 64, 2) [] = { 0xffffffffffffc1d9,
+ 0xffffffffffffc1da };
+VECT_VAR_DECL(expected, uint, 32, 4) [] = { 0xffffc1d9, 0xffffc1da,
+ 0xffffc1db, 0xffffc1dc };
+VECT_VAR_DECL(expected, uint, 64, 2) [] = { 0xffffffffffffc1d9,
+ 0xffffffffffffc1da };
+
+#include "vmlXl_high_lane.inc"
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_laneq.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_laneq.c
new file mode 100644
index 0000000..a4f35a3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_laneq.c
@@ -0,0 +1,20 @@
+/* { dg-skip-if "" { arm*-*-* } } */
+
+#include <arm_neon.h>
+#include "arm-neon-ref.h"
+#include "compute-ref-data.h"
+
+#define INSN_NAME vmlsl_high_laneq
+#define TEST_MSG "VMLSL_HIGH_LANEQ"
+
+/* Expected results. */
+VECT_VAR_DECL(expected, int, 32, 4) [] = { 0xffffc1d9, 0xffffc1da,
+ 0xffffc1db, 0xffffc1dc };
+VECT_VAR_DECL(expected, int, 64, 2) [] = { 0xffffffffffffc1d9,
+ 0xffffffffffffc1da };
+VECT_VAR_DECL(expected, uint, 32, 4) [] = { 0xffffc1d9, 0xffffc1da,
+ 0xffffc1db, 0xffffc1dc };
+VECT_VAR_DECL(expected, uint, 64, 2) [] = { 0xffffffffffffc1d9,
+ 0xffffffffffffc1da };
+
+#include "vmlXl_high_laneq.inc"
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_n.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_n.c
new file mode 100644
index 0000000..2b2bd8d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmlsl_high_n.c
@@ -0,0 +1,20 @@
+/* { dg-skip-if "" { arm*-*-* } } */
+
+#include <arm_neon.h>
+#include "arm-neon-ref.h"
+#include "compute-ref-data.h"
+
+#define INSN_NAME vmlsl_high_n
+#define TEST_MSG "VMLSL_HIGH_N"
+
+/* Expected results. */
+VECT_VAR_DECL(expected, int, 32, 4) [] = { 0xfffffa4b, 0xfffffa4c,
+ 0xfffffa4d, 0xfffffa4e };
+VECT_VAR_DECL(expected, int, 64, 2) [] = { 0xfffffffffffff4a6,
+ 0xfffffffffffff4a7 };
+VECT_VAR_DECL(expected, uint, 32, 4) [] = { 0xffffef01, 0xffffef02,
+ 0xffffef03, 0xffffef04 };
+VECT_VAR_DECL(expected, uint, 64, 2) [] = { 0xffffffffffffef01,
+ 0xffffffffffffef02 };
+
+#include "vmlXl_high_n.inc"
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high.c
new file mode 100644
index 0000000..36094fc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high.c
@@ -0,0 +1,78 @@
+/* { dg-skip-if "" { arm*-*-* } } */
+
+#include <arm_neon.h>
+#include "arm-neon-ref.h"
+#include "compute-ref-data.h"
+
+/* Expected results. */
+VECT_VAR_DECL(expected, int, 16, 8) [] = { 0x40, 0x31,0x24, 0x19,
+ 0x10, 0x9, 0x4, 0x1 };
+VECT_VAR_DECL(expected, int, 32, 4) [] = { 0x90, 0x79, 0x64, 0x51 };
+VECT_VAR_DECL(expected, int, 64, 2) [] = { 0xc4, 0xa9 };
+VECT_VAR_DECL(expected, uint, 16, 8) [] = { 0xf040, 0xf231, 0xf424, 0xf619,
+ 0xf810, 0xfa09, 0xfc04, 0xfe01 };
+VECT_VAR_DECL(expected, uint, 32, 4) [] = { 0xffe80090, 0xffea0079,
+ 0xffec0064, 0xffee0051 };
+VECT_VAR_DECL(expected, uint, 64, 2) [] = { 0xffffffe4000000c4,
+ 0xffffffe6000000a9 };
+VECT_VAR_DECL(expected, poly, 16, 8) [] = { 0x5540, 0x5541, 0x5544, 0x5545,
+ 0x5550, 0x5551, 0x5554, 0x5555 };
+
+#define TEST_MSG "VMULL_HIGH"
+void exec_vmull_high (void)
+{
+ /* Basic test: y = vmull_high(x, x), then store the result. */
+#define TEST_VMULL_HIGH(T1, T2, W1, W2, N1, N2) \
+ VECT_VAR(vector_res, T1, W2, N1) = \
+ vmull_high_##T2##W1(VECT_VAR(vector, T1, W1, N2), \
+ VECT_VAR(vector, T1, W1, N2)); \
+ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N1), \
+ VECT_VAR(vector_res, T1, W2, N1))
+
+ DECL_VARIABLE(vector, int, 8, 16);
+ DECL_VARIABLE(vector, int, 16, 8);
+ DECL_VARIABLE(vector, int, 32, 4);
+ DECL_VARIABLE(vector, uint, 8, 16);
+ DECL_VARIABLE(vector, uint, 16, 8);
+ DECL_VARIABLE(vector, uint, 32, 4);
+ DECL_VARIABLE(vector, poly, 8, 16);
+ DECL_VARIABLE(vector_res, int, 16, 8);
+ DECL_VARIABLE(vector_res, int, 32, 4);
+ DECL_VARIABLE(vector_res, int, 64, 2);
+ DECL_VARIABLE(vector_res, uint, 16, 8);
+ DECL_VARIABLE(vector_res, uint, 32, 4);
+ DECL_VARIABLE(vector_res, uint, 64, 2);
+ DECL_VARIABLE(vector_res, poly, 16, 8);
+
+ clean_results ();
+
+ VLOAD(vector, buffer, q, int, s, 8, 16);
+ VLOAD(vector, buffer, q, int, s, 16, 8);
+ VLOAD(vector, buffer, q, int, s, 32, 4);
+ VLOAD(vector, buffer, q, uint, u, 8, 16);
+ VLOAD(vector, buffer, q, uint, u, 16, 8);
+ VLOAD(vector, buffer, q, uint, u, 32, 4);
+ VLOAD(vector, buffer, q, poly, p, 8, 16);
+
+ TEST_VMULL_HIGH(int, s, 8, 16, 8, 16);
+ TEST_VMULL_HIGH(int, s, 16, 32, 4, 8);
+ TEST_VMULL_HIGH(int, s, 32, 64, 2, 4);
+ TEST_VMULL_HIGH(uint, u, 8, 16, 8, 16);
+ TEST_VMULL_HIGH(uint, u, 16, 32, 4, 8);
+ TEST_VMULL_HIGH(uint, u, 32, 64, 2, 4);
+ TEST_VMULL_HIGH(poly, p, 8, 16, 8, 16);
+
+ CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
+ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
+ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
+ CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
+ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
+ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
+ CHECK_POLY(TEST_MSG, poly, 16, 8, PRIx16, expected, "");
+}
+
+int main (void)
+{
+ exec_vmull_high ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high_lane.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high_lane.c
new file mode 100644
index 0000000..30bc954
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high_lane.c
@@ -0,0 +1,69 @@
+/* { dg-skip-if "" { arm*-*-* } } */
+
+#include <arm_neon.h>
+#include "arm-neon-ref.h"
+#include "compute-ref-data.h"
+
+/* Expected results. */
+VECT_VAR_DECL(expected, int, 32, 4) [] = { 0x4000, 0x4000, 0x4000, 0x4000 };
+VECT_VAR_DECL(expected, int, 64, 2) [] = { 0x2000, 0x2000 };
+VECT_VAR_DECL(expected, uint, 32, 4) [] = { 0x4000, 0x4000, 0x4000, 0x4000 };
+VECT_VAR_DECL(expected, uint, 64, 2) [] = { 0x2000, 0x2000 };
+
+#define TEST_MSG "VMULL_HIGH_LANE"
+void exec_vmull_high_lane (void)
+{
+ /* vector_res = vmull_high_lane(vector, vector2, lane), store the result. */
+#define TEST_VMULL_HIGH_LANE(T1, T2, W1, W2, N1, N2, L) \
+ VECT_VAR(vector_res, T1, W2, N2) = \
+ vmull_high_lane_##T2##W1(VECT_VAR(vector, T1, W1, N1), \
+ VECT_VAR(vector2, T1, W1, N2), \
+ L); \
+ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N2), \
+ VECT_VAR(vector_res, T1, W2, N2))
+
+ DECL_VARIABLE(vector, int, 16, 8);
+ DECL_VARIABLE(vector, int, 32, 4);
+ DECL_VARIABLE(vector, uint, 16, 8);
+ DECL_VARIABLE(vector, uint, 32, 4);
+ DECL_VARIABLE(vector2, int, 16, 4);
+ DECL_VARIABLE(vector2, int, 32, 2);
+ DECL_VARIABLE(vector2, uint, 16, 4);
+ DECL_VARIABLE(vector2, uint, 32, 2);
+
+ DECL_VARIABLE(vector_res, int, 32, 4);
+ DECL_VARIABLE(vector_res, int, 64, 2);
+ DECL_VARIABLE(vector_res, uint, 32, 4);
+ DECL_VARIABLE(vector_res, uint, 64, 2);
+
+ clean_results ();
+
+ /* Initialize vector. */
+ VDUP(vector, q, int, s, 16, 8, 0x1000);
+ VDUP(vector, q, int, s, 32, 4, 0x1000);
+ VDUP(vector, q, uint, u, 16, 8, 0x1000);
+ VDUP(vector, q, uint, u, 32, 4, 0x1000);
+
+ /* Initialize vector2. */
+ VDUP(vector2, , int, s, 16, 4, 0x4);
+ VDUP(vector2, , int, s, 32, 2, 0x2);
+ VDUP(vector2, , uint, u, 16, 4, 0x4);
+ VDUP(vector2, , uint, u, 32, 2, 0x2);
+
+ /* Choose lane arbitrarily. */
+ TEST_VMULL_HIGH_LANE(int, s, 16, 32, 8, 4, 2);
+ TEST_VMULL_HIGH_LANE(int, s, 32, 64, 4, 2, 1);
+ TEST_VMULL_HIGH_LANE(uint, u, 16, 32, 8, 4, 2);
+ TEST_VMULL_HIGH_LANE(uint, u, 32, 64, 4, 2, 1);
+
+ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
+ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
+ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
+ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
+}
+
+int main (void)
+{
+ exec_vmull_high_lane ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high_laneq.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high_laneq.c
new file mode 100644
index 0000000..191ade5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high_laneq.c
@@ -0,0 +1,69 @@
+/* { dg-skip-if "" { arm*-*-* } } */
+
+#include <arm_neon.h>
+#include "arm-neon-ref.h"
+#include "compute-ref-data.h"
+
+/* Expected results. */
+VECT_VAR_DECL(expected, int, 32, 4) [] = { 0x4000, 0x4000, 0x4000, 0x4000 };
+VECT_VAR_DECL(expected, int, 64, 2) [] = { 0x2000, 0x2000 };
+VECT_VAR_DECL(expected, uint, 32, 4) [] = { 0x4000, 0x4000, 0x4000, 0x4000 };
+VECT_VAR_DECL(expected, uint, 64, 2) [] = { 0x2000, 0x2000 };
+
+#define TEST_MSG "VMULL_HIGH_LANEQ"
+void exec_vmull_high_laneq (void)
+{
+ /* vector_res = vmull_high_laneq(vector, vector2, lane), store the result. */
+#define TEST_VMULL_HIGH_LANEQ(T1, T2, W1, W2, N1, N2, L) \
+ VECT_VAR(vector_res, T1, W2, N2) = \
+ vmull_high_laneq_##T2##W1(VECT_VAR(vector, T1, W1, N1), \
+ VECT_VAR(vector2, T1, W1, N1), \
+ L); \
+ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N2), \
+ VECT_VAR(vector_res, T1, W2, N2))
+
+ DECL_VARIABLE(vector, int, 16, 8);
+ DECL_VARIABLE(vector, int, 32, 4);
+ DECL_VARIABLE(vector, uint, 16, 8);
+ DECL_VARIABLE(vector, uint, 32, 4);
+ DECL_VARIABLE(vector2, int, 16, 8);
+ DECL_VARIABLE(vector2, int, 32, 4);
+ DECL_VARIABLE(vector2, uint, 16, 8);
+ DECL_VARIABLE(vector2, uint, 32, 4);
+
+ DECL_VARIABLE(vector_res, int, 32, 4);
+ DECL_VARIABLE(vector_res, int, 64, 2);
+ DECL_VARIABLE(vector_res, uint, 32, 4);
+ DECL_VARIABLE(vector_res, uint, 64, 2);
+
+ clean_results ();
+
+ /* Initialize vector. */
+ VDUP(vector, q, int, s, 16, 8, 0x1000);
+ VDUP(vector, q, int, s, 32, 4, 0x1000);
+ VDUP(vector, q, uint, u, 16, 8, 0x1000);
+ VDUP(vector, q, uint, u, 32, 4, 0x1000);
+
+ /* Initialize vector2. */
+ VDUP(vector2, q, int, s, 16, 8, 0x4);
+ VDUP(vector2, q, int, s, 32, 4, 0x2);
+ VDUP(vector2, q, uint, u, 16, 8, 0x4);
+ VDUP(vector2, q, uint, u, 32, 4, 0x2);
+
+ /* Choose lane arbitrarily. */
+ TEST_VMULL_HIGH_LANEQ(int, s, 16, 32, 8, 4, 5);
+ TEST_VMULL_HIGH_LANEQ(int, s, 32, 64, 4, 2, 1);
+ TEST_VMULL_HIGH_LANEQ(uint, u, 16, 32, 8, 4, 7);
+ TEST_VMULL_HIGH_LANEQ(uint, u, 32, 64, 4, 2, 3);
+
+ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
+ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
+ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
+ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
+}
+
+int main (void)
+{
+ exec_vmull_high_laneq ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high_n.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high_n.c
new file mode 100644
index 0000000..892cca1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmull_high_n.c
@@ -0,0 +1,61 @@
+/* { dg-skip-if "" { arm*-*-* } } */
+
+#include <arm_neon.h>
+#include "arm-neon-ref.h"
+#include "compute-ref-data.h"
+
+/* Expected results. */
+VECT_VAR_DECL(expected, int, 32, 4) [] = { 0x11000, 0x11000,
+ 0x11000, 0x11000 };
+VECT_VAR_DECL(expected, int, 64, 2) [] = { 0x22000, 0x22000 };
+VECT_VAR_DECL(expected, uint, 32, 4) [] = { 0x33000, 0x33000,
+ 0x33000, 0x33000 };
+VECT_VAR_DECL(expected, uint, 64, 2) [] = { 0x44000, 0x44000 };
+
+#define TEST_MSG "VMULL_HIGH_N"
+void exec_vmull_high_n (void)
+{
+ int i;
+
+ /* vector_res = vmull_high_n(vector, val), then store the result. */
+#define TEST_VMULL_HIGH_N(T1, T2, W1, W2, N1, N2, L) \
+ VECT_VAR(vector_res, T1, W2, N2) = \
+ vmull_high_n_##T2##W1(VECT_VAR(vector, T1, W1, N1), L); \
+ vst1q_##T2##W2(VECT_VAR(result, T1, W2, N2), \
+ VECT_VAR(vector_res, T1, W2, N2))
+
+ DECL_VARIABLE(vector, int, 16, 8);
+ DECL_VARIABLE(vector, int, 32, 4);
+ DECL_VARIABLE(vector, uint, 16, 8);
+ DECL_VARIABLE(vector, uint, 32, 4);
+
+ DECL_VARIABLE(vector_res, int, 32, 4);
+ DECL_VARIABLE(vector_res, int, 64, 2);
+ DECL_VARIABLE(vector_res, uint, 32, 4);
+ DECL_VARIABLE(vector_res, uint, 64, 2);
+
+ clean_results ();
+
+ /* Initialize vector. */
+ VDUP(vector, q, int, s, 16, 8, 0x1000);
+ VDUP(vector, q, int, s, 32, 4, 0x1000);
+ VDUP(vector, q, uint, u, 16, 8, 0x1000);
+ VDUP(vector, q, uint, u, 32, 4, 0x1000);
+
+ /* Choose multiplier arbitrarily. */
+ TEST_VMULL_HIGH_N(int, s, 16, 32, 8, 4, 0x11);
+ TEST_VMULL_HIGH_N(int, s, 32, 64, 4, 2, 0x22);
+ TEST_VMULL_HIGH_N(uint, u, 16, 32, 8, 4, 0x33);
+ TEST_VMULL_HIGH_N(uint, u, 32, 64, 4, 2, 0x44);
+
+ CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
+ CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
+ CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
+ CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
+}
+
+int main (void)
+{
+ exec_vmull_high_n ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqabs.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqabs.c
index 03d25c4..5b86cf1 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqabs.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqabs.c
@@ -19,14 +19,6 @@ VECT_VAR_DECL(expected,int,16,8) [] = { 0x10, 0xf, 0xe, 0xd,
0xc, 0xb, 0xa, 0x9 };
VECT_VAR_DECL(expected,int,32,4) [] = { 0x10, 0xf, 0xe, 0xd };
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-
/* Expected results when input is the min negative value of the type. */
VECT_VAR_DECL(expected_min_neg,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
0x7f, 0x7f, 0x7f, 0x7f };
@@ -44,15 +36,6 @@ VECT_VAR_DECL(expected_min_neg,int,16,8) [] = { 0x7fff, 0x7fff,
VECT_VAR_DECL(expected_min_neg,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
0x7fffffff, 0x7fffffff };
-/* Expected values of cumulative_saturation flag when input is the min
- negative value of the type. */
-int VECT_VAR(expected_cumulative_sat_min_neg,int,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat_min_neg,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_min_neg,int,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_min_neg,int,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat_min_neg,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_min_neg,int,32,4) = 1;
-
void vqabs_extra()
{
/* No need for 64 bits variants. */
@@ -82,12 +65,12 @@ void vqabs_extra()
VDUP(vector, q, int, s, 32, 4, 0x80000000);
#define MSG "min negative input"
- TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 8, 8, expected_cumulative_sat_min_neg, MSG);
- TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 16, 4, expected_cumulative_sat_min_neg, MSG);
- TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 32, 2, expected_cumulative_sat_min_neg, MSG);
- TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, expected_cumulative_sat_min_neg, MSG);
- TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, expected_cumulative_sat_min_neg, MSG);
- TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, expected_cumulative_sat_min_neg, MSG);
+ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 8, 8, MSG);
+ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 16, 4, MSG);
+ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 32, 2, MSG);
+ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, MSG);
+ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, MSG);
+ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, MSG);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_min_neg, MSG);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_min_neg, MSG);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqadd.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqadd.c
index eaa6e82..31f98d6 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqadd.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqadd.c
@@ -11,23 +11,6 @@ void vqadd_extras(void);
#include "binary_sat_op.inc"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,64,2) = 1;
/* Expected results. */
VECT_VAR_DECL(expected,int,8,8) [] = { 0x1, 0x2, 0x3, 0x4,
0x5, 0x6, 0x7, 0x8 };
@@ -60,10 +43,6 @@ VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffffff,
/* 64-bits types, with 0 as second input. */
-int VECT_VAR(expected_cumulative_sat_64,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_64,uint,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_64,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat_64,uint,64,2) = 0;
VECT_VAR_DECL(expected_64,int,64,1) [] = { 0xfffffffffffffff0 };
VECT_VAR_DECL(expected_64,uint,64,1) [] = { 0xfffffffffffffff0 };
VECT_VAR_DECL(expected_64,int,64,2) [] = { 0xfffffffffffffff0,
@@ -72,10 +51,6 @@ VECT_VAR_DECL(expected_64,uint,64,2) [] = { 0xfffffffffffffff0,
0xfffffffffffffff1 };
/* 64-bits types, some cases causing cumulative saturation. */
-int VECT_VAR(expected_cumulative_sat_64_2,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_64_2,uint,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_64_2,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat_64_2,uint,64,2) = 1;
VECT_VAR_DECL(expected_64_2,int,64,1) [] = { 0x34 };
VECT_VAR_DECL(expected_64_2,uint,64,1) [] = { 0xffffffffffffffff };
VECT_VAR_DECL(expected_64_2,int,64,2) [] = { 0x34, 0x35 };
@@ -83,10 +58,6 @@ VECT_VAR_DECL(expected_64_2,uint,64,2) [] = { 0xffffffffffffffff,
0xffffffffffffffff };
/* 64-bits types, all causing cumulative saturation. */
-int VECT_VAR(expected_cumulative_sat_64_3,int,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_64_3,uint,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_64_3,int,64,2) = 1;
-int VECT_VAR(expected_cumulative_sat_64_3,uint,64,2) = 1;
VECT_VAR_DECL(expected_64_3,int,64,1) [] = { 0x8000000000000000 };
VECT_VAR_DECL(expected_64_3,uint,64,1) [] = { 0xffffffffffffffff };
VECT_VAR_DECL(expected_64_3,int,64,2) [] = { 0x7fffffffffffffff,
@@ -94,13 +65,6 @@ VECT_VAR_DECL(expected_64_3,int,64,2) [] = { 0x7fffffffffffffff,
VECT_VAR_DECL(expected_64_3,uint,64,2) [] = { 0xffffffffffffffff,
0xffffffffffffffff };
-/* smaller types, corner cases causing cumulative saturation. (1) */
-int VECT_VAR(expected_csat_lt_64_1,int,8,8) = 1;
-int VECT_VAR(expected_csat_lt_64_1,int,16,4) = 1;
-int VECT_VAR(expected_csat_lt_64_1,int,32,2) = 1;
-int VECT_VAR(expected_csat_lt_64_1,int,8,16) = 1;
-int VECT_VAR(expected_csat_lt_64_1,int,16,8) = 1;
-int VECT_VAR(expected_csat_lt_64_1,int,32,4) = 1;
VECT_VAR_DECL(expected_lt_64_1,int,8,8) [] = { 0x80, 0x80, 0x80, 0x80,
0x80, 0x80, 0x80, 0x80 };
VECT_VAR_DECL(expected_lt_64_1,int,16,4) [] = { 0x8000, 0x8000,
@@ -117,13 +81,6 @@ VECT_VAR_DECL(expected_lt_64_1,int,16,8) [] = { 0x8000, 0x8000,
VECT_VAR_DECL(expected_lt_64_1,int,32,4) [] = { 0x80000000, 0x80000000,
0x80000000, 0x80000000 };
-/* smaller types, corner cases causing cumulative saturation. (2) */
-int VECT_VAR(expected_csat_lt_64_2,uint,8,8) = 1;
-int VECT_VAR(expected_csat_lt_64_2,uint,16,4) = 1;
-int VECT_VAR(expected_csat_lt_64_2,uint,32,2) = 1;
-int VECT_VAR(expected_csat_lt_64_2,uint,8,16) = 1;
-int VECT_VAR(expected_csat_lt_64_2,uint,16,8) = 1;
-int VECT_VAR(expected_csat_lt_64_2,uint,32,4) = 1;
VECT_VAR_DECL(expected_lt_64_2,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff };
VECT_VAR_DECL(expected_lt_64_2,uint,16,4) [] = { 0xffff, 0xffff,
@@ -157,10 +114,10 @@ void vqadd_extras(void)
VDUP(vector2, q, uint, u, 64, 2, 0);
#define MSG "64 bits saturation adding zero"
- TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, expected_cumulative_sat_64, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, expected_cumulative_sat_64, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, expected_cumulative_sat_64, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, expected_cumulative_sat_64, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1,MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, MSG);
CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_64, MSG);
CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_64, MSG);
@@ -176,10 +133,10 @@ void vqadd_extras(void)
#undef MSG
#define MSG "64 bits saturation cumulative_sat (2)"
- TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, expected_cumulative_sat_64_2, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, expected_cumulative_sat_64_2, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, expected_cumulative_sat_64_2, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, expected_cumulative_sat_64_2, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, MSG);
CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_64_2, MSG);
CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_64_2, MSG);
@@ -198,10 +155,10 @@ void vqadd_extras(void)
#undef MSG
#define MSG "64 bits saturation cumulative_sat (3)"
- TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, expected_cumulative_sat_64_3, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, expected_cumulative_sat_64_3, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, expected_cumulative_sat_64_3, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, expected_cumulative_sat_64_3, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, MSG);
CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_64_3, MSG);
CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_64_3, MSG);
@@ -219,12 +176,12 @@ void vqadd_extras(void)
#undef MSG
#define MSG "less than 64 bits saturation cumulative_sat (1)"
- TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 8, 8, expected_csat_lt_64_1, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 16, 4, expected_csat_lt_64_1, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 32, 2, expected_csat_lt_64_1, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, expected_csat_lt_64_1, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, expected_csat_lt_64_1, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, expected_csat_lt_64_1, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 8, 8, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 16, 4, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 32, 2, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, MSG);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_lt_64_1, MSG);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_lt_64_1, MSG);
@@ -250,12 +207,12 @@ void vqadd_extras(void)
#undef MSG
#define MSG "less than 64 bits saturation cumulative_sat (2)"
- TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 8, 8, expected_csat_lt_64_2, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 16, 4, expected_csat_lt_64_2, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 32, 2, expected_csat_lt_64_2, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 8, 16, expected_csat_lt_64_2, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 16, 8, expected_csat_lt_64_2, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 32, 4, expected_csat_lt_64_2, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 8, 8, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 16, 4, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 32, 2, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 8, 16, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 16, 8, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 32, 4, MSG);
CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_lt_64_2, MSG);
CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_lt_64_2, MSG);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl.inc b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl.inc
index cd61fd4..9724101 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl.inc
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl.inc
@@ -5,18 +5,17 @@ void FNNAME (INSN_NAME) (void)
{
/* vector_res = OP(vector, vector3, vector4),
then store the result. */
-#define TEST_VQDMLXL1(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQDMLXL1(INSN, T1, T2, W, W2, N, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \
VECT_VAR(vector_res, T1, W, N) = \
INSN##_##T2##W2(VECT_VAR(vector, T1, W, N), \
VECT_VAR(vector3, T1, W2, N), \
VECT_VAR(vector4, T1, W2, N)); \
vst1q_##T2##W(VECT_VAR(result, T1, W, N), \
- VECT_VAR(vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W, N))
-#define TEST_VQDMLXL(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQDMLXL1(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQDMLXL(INSN, T1, T2, W, W2, N, CMT) \
+ TEST_VQDMLXL1(INSN, T1, T2, W, W2, N, CMT)
DECL_VARIABLE(vector, int, 32, 4);
DECL_VARIABLE(vector3, int, 16, 4);
@@ -37,8 +36,8 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector3, , int, s, 32, 2, 0x55);
VDUP(vector4, , int, s, 32, 2, 0xBB);
- TEST_VQDMLXL(INSN_NAME, int, s, 32, 16, 4, expected_cumulative_sat, "");
- TEST_VQDMLXL(INSN_NAME, int, s, 64, 32, 2, expected_cumulative_sat, "");
+ TEST_VQDMLXL(INSN_NAME, int, s, 32, 16, 4, "");
+ TEST_VQDMLXL(INSN_NAME, int, s, 64, 32, 2, "");
CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
@@ -49,8 +48,8 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector4, , int, s, 32, 2, 0x80000000);
#define TEST_MSG2 "with saturation"
- TEST_VQDMLXL(INSN_NAME, int, s, 32, 16, 4, expected_cumulative_sat2, TEST_MSG2);
- TEST_VQDMLXL(INSN_NAME, int, s, 64, 32, 2, expected_cumulative_sat2, TEST_MSG2);
+ TEST_VQDMLXL(INSN_NAME, int, s, 32, 16, 4, TEST_MSG2);
+ TEST_VQDMLXL(INSN_NAME, int, s, 64, 32, 2, TEST_MSG2);
CHECK(TEST_MSG, int, 32, 4, PRIx32, expected2, TEST_MSG2);
CHECK(TEST_MSG, int, 64, 2, PRIx64, expected2, TEST_MSG2);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_lane.inc b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_lane.inc
index 705f90a..8596acf 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_lane.inc
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_lane.inc
@@ -5,7 +5,7 @@ void FNNAME (INSN_NAME) (void)
{
/* vector_res = vqdmlXl_lane(vector, vector3, vector4, lane),
then store the result. */
-#define TEST_VQDMLXL_LANE1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQDMLXL_LANE1(INSN, T1, T2, W, W2, N, V, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \
VECT_VAR(vector_res, T1, W, N) = \
INSN##_##T2##W2(VECT_VAR(vector, T1, W, N), \
@@ -13,11 +13,10 @@ void FNNAME (INSN_NAME) (void)
VECT_VAR(vector4, T1, W2, N), \
V); \
vst1q_##T2##W(VECT_VAR(result, T1, W, N), \
- VECT_VAR(vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W, N))
-#define TEST_VQDMLXL_LANE(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQDMLXL_LANE1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQDMLXL_LANE(INSN, T1, T2, W, W2, N, V, CMT) \
+ TEST_VQDMLXL_LANE1(INSN, T1, T2, W, W2, N, V, CMT)
DECL_VARIABLE(vector, int, 32, 4);
DECL_VARIABLE(vector3, int, 16, 4);
@@ -39,8 +38,8 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector3, , int, s, 32, 2, 0x55);
VDUP(vector4, , int, s, 32, 2, 0xBB);
- TEST_VQDMLXL_LANE(INSN_NAME, int, s, 32, 16, 4, 0, expected_cumulative_sat, "");
- TEST_VQDMLXL_LANE(INSN_NAME, int, s, 64, 32, 2, 0, expected_cumulative_sat, "");
+ TEST_VQDMLXL_LANE(INSN_NAME, int, s, 32, 16, 4, 0, "");
+ TEST_VQDMLXL_LANE(INSN_NAME, int, s, 64, 32, 2, 0, "");
CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
@@ -48,8 +47,8 @@ void FNNAME (INSN_NAME) (void)
#define TEST_MSG2 "(mul with input=0)"
VDUP(vector3, , int, s, 16, 4, 0);
VDUP(vector3, , int, s, 32, 2, 0);
- TEST_VQDMLXL_LANE(INSN_NAME, int, s, 32, 16, 4, 0, expected_cumulative_sat2, TEST_MSG2);
- TEST_VQDMLXL_LANE(INSN_NAME, int, s, 64, 32, 2, 0, expected_cumulative_sat2, TEST_MSG2);
+ TEST_VQDMLXL_LANE(INSN_NAME, int, s, 32, 16, 4, 0, TEST_MSG2);
+ TEST_VQDMLXL_LANE(INSN_NAME, int, s, 64, 32, 2, 0, TEST_MSG2);
CHECK(TEST_MSG, int, 32, 4, PRIx32, expected2, TEST_MSG2);
CHECK(TEST_MSG, int, 64, 2, PRIx64, expected2, TEST_MSG2);
@@ -59,8 +58,8 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector3, , int, s, 32, 2, 0x80000000);
VDUP(vector4, , int, s, 16, 4, 0x8000);
VDUP(vector4, , int, s, 32, 2, 0x80000000);
- TEST_VQDMLXL_LANE(INSN_NAME, int, s, 32, 16, 4, 0, expected_cumulative_sat3, TEST_MSG3);
- TEST_VQDMLXL_LANE(INSN_NAME, int, s, 64, 32, 2, 0, expected_cumulative_sat3, TEST_MSG3);
+ TEST_VQDMLXL_LANE(INSN_NAME, int, s, 32, 16, 4, 0, TEST_MSG3);
+ TEST_VQDMLXL_LANE(INSN_NAME, int, s, 64, 32, 2, 0, TEST_MSG3);
CHECK(TEST_MSG, int, 32, 4, PRIx32, expected3, TEST_MSG3);
CHECK(TEST_MSG, int, 64, 2, PRIx64, expected3, TEST_MSG3);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_n.inc b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_n.inc
index fd885dd..5f89aa8 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_n.inc
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlXl_n.inc
@@ -5,18 +5,17 @@ void FNNAME (INSN_NAME) (void)
{
/* vector_res = vqdmlxl_n(vector, vector3, val),
then store the result. */
-#define TEST_VQDMLXL_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQDMLXL_N1(INSN, T1, T2, W, W2, N, V, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \
VECT_VAR(vector_res, T1, W, N) = \
INSN##_##T2##W2(VECT_VAR(vector, T1, W, N), \
VECT_VAR(vector3, T1, W2, N), \
V); \
vst1q_##T2##W(VECT_VAR(result, T1, W, N), \
- VECT_VAR(vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W, N))
-#define TEST_VQDMLXL_N(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQDMLXL_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQDMLXL_N(INSN, T1, T2, W, W2, N, V, CMT) \
+ TEST_VQDMLXL_N1(INSN, T1, T2, W, W2, N, V, CMT)
DECL_VARIABLE(vector, int, 32, 4);
DECL_VARIABLE(vector3, int, 16, 4);
@@ -35,8 +34,8 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector3, , int, s, 32, 2, 0x55);
/* Choose val arbitrarily. */
- TEST_VQDMLXL_N(INSN_NAME, int, s, 32, 16, 4, 0x22, expected_cumulative_sat, "");
- TEST_VQDMLXL_N(INSN_NAME, int, s, 64, 32, 2, 0x33, expected_cumulative_sat, "");
+ TEST_VQDMLXL_N(INSN_NAME, int, s, 32, 16, 4, 0x22, "");
+ TEST_VQDMLXL_N(INSN_NAME, int, s, 64, 32, 2, 0x33, "");
CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
@@ -45,8 +44,8 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector3, , int, s, 16, 4, 0x8000);
VDUP(vector3, , int, s, 32, 2, 0x80000000);
- TEST_VQDMLXL_N(INSN_NAME, int, s, 32, 16, 4, 0x8000, expected_cumulative_sat2, TEST_MSG2);
- TEST_VQDMLXL_N(INSN_NAME, int, s, 64, 32, 2, 0x80000000, expected_cumulative_sat2, TEST_MSG2);
+ TEST_VQDMLXL_N(INSN_NAME, int, s, 32, 16, 4, 0x8000, TEST_MSG2);
+ TEST_VQDMLXL_N(INSN_NAME, int, s, 64, 32, 2, 0x80000000, TEST_MSG2);
CHECK(TEST_MSG, int, 32, 4, PRIx32, expected2, TEST_MSG2);
CHECK(TEST_MSG, int, 64, 2, PRIx64, expected2, TEST_MSG2);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal.c
index c53a90a..784047e 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal.c
@@ -5,19 +5,10 @@
#define INSN_NAME vqdmlal
#define TEST_MSG "VQDMLAL"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,32,4) [] = { 0x7c1e, 0x7c1f, 0x7c20, 0x7c21 };
VECT_VAR_DECL(expected,int,64,2) [] = { 0x7c1e, 0x7c1f };
-/* Expected values of cumulative_saturation flag when saturation
- occurs. */
-int VECT_VAR(expected_cumulative_sat2,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat2,int,64,2) = 1;
-
/* Expected results when saturation occurs. */
VECT_VAR_DECL(expected2,int,32,4) [] = { 0x7fffffef, 0x7ffffff0,
0x7ffffff1, 0x7ffffff2 };
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_lane.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_lane.c
index 832a705..2e641fd 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_lane.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_lane.c
@@ -5,30 +5,16 @@
#define INSN_NAME vqdmlal_lane
#define TEST_MSG "VQDMLAL_LANE"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,32,4) [] = { 0x7c1e, 0x7c1f, 0x7c20, 0x7c21 };
VECT_VAR_DECL(expected,int,64,2) [] = { 0x7c1e, 0x7c1f };
-/* Expected values of cumulative_saturation flag when multiplying with
- 0. */
-int VECT_VAR(expected_cumulative_sat2,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat2,int,64,2) = 0;
-
/* Expected values when multiplying with 0. */
VECT_VAR_DECL(expected2,int,32,4) [] = { 0xfffffff0, 0xfffffff1,
0xfffffff2, 0xfffffff3 };
VECT_VAR_DECL(expected2,int,64,2) [] = { 0xfffffffffffffff0,
0xfffffffffffffff1 };
-/* Expected values of cumulative_saturation flag when multiplication
- saturates. */
-int VECT_VAR(expected_cumulative_sat3,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat3,int,64,2) = 1;
-
/* Expected values when multiplication saturates. */
VECT_VAR_DECL(expected3,int,32,4) [] = { 0x7fffffef, 0x7ffffff0,
0x7ffffff1, 0x7ffffff2 };
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_n.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_n.c
index b84bca3..3356112 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_n.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlal_n.c
@@ -5,19 +5,10 @@
#define INSN_NAME vqdmlal_n
#define TEST_MSG "VQDMLAL_N"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,32,4) [] = { 0x1684, 0x1685, 0x1686, 0x1687 };
VECT_VAR_DECL(expected,int,64,2) [] = { 0x21ce, 0x21cf };
-/* Expected values of cumulative_saturation flag when saturation
- occurs. */
-int VECT_VAR(expected_cumulative_sat2,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat2,int,64,2) = 1;
-
/* Expected results when saturation occurs. */
VECT_VAR_DECL(expected2,int,32,4) [] = { 0x7fffffef, 0x7ffffff0,
0x7ffffff1, 0x7ffffff2 };
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl.c
index 56e0b61..d65713c 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl.c
@@ -5,21 +5,12 @@
#define INSN_NAME vqdmlsl
#define TEST_MSG "VQDMLSL"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,32,4) [] = { 0xffff83c2, 0xffff83c3,
0xffff83c4, 0xffff83c5 };
VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffff83c2,
0xffffffffffff83c3 };
-/* Expected values of cumulative_saturation flag when saturation
- occurs. */
-int VECT_VAR(expected_cumulative_sat2,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat2,int,64,2) = 1;
-
/* Expected results when saturation occurs. */
VECT_VAR_DECL(expected2,int,32,4) [] = { 0x80000000, 0x80000000,
0x80000000, 0x80000000 };
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_lane.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_lane.c
index b95e61c..2180314 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_lane.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_lane.c
@@ -5,32 +5,18 @@
#define INSN_NAME vqdmlsl_lane
#define TEST_MSG "VQDMLSL_LANE"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,32,4) [] = { 0xffff83c2, 0xffff83c3,
0xffff83c4, 0xffff83c5 };
VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffff83c2,
0xffffffffffff83c3 };
-/* Expected values of cumulative_saturation flag when multiplying with
- 0. */
-int VECT_VAR(expected_cumulative_sat2,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat2,int,64,2) = 0;
-
/* Expected values when multiplying with 0. */
VECT_VAR_DECL(expected2,int,32,4) [] = { 0xfffffff0, 0xfffffff1,
0xfffffff2, 0xfffffff3 };
VECT_VAR_DECL(expected2,int,64,2) [] = { 0xfffffffffffffff0,
0xfffffffffffffff1 };
-/* Expected values of cumulative_saturation flag when multiplication
- saturates. */
-int VECT_VAR(expected_cumulative_sat3,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat3,int,64,2) = 1;
-
/* Expected values when multiplication saturates. */
VECT_VAR_DECL(expected3,int,32,4) [] = { 0x80000000, 0x80000000,
0x80000000, 0x80000000 };
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_n.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_n.c
index ff8d9d3..40a1929 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_n.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmlsl_n.c
@@ -5,21 +5,12 @@
#define INSN_NAME vqdmlsl_n
#define TEST_MSG "VQDMLSL_N"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffe95c, 0xffffe95d,
0xffffe95e, 0xffffe95f };
VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffde12,
0xffffffffffffde13 };
-/* Expected values of cumulative_saturation flag when saturation
- occurs. */
-int VECT_VAR(expected_cumulative_sat2,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat2,int,64,2) = 1;
-
/* Expected results when saturation occurs. */
VECT_VAR_DECL(expected2,int,32,4) [] = { 0x80000000, 0x80000000,
0x80000000, 0x80000000 };
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh.c
index 8d2a365..e78590f 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh.c
@@ -2,12 +2,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
VECT_VAR_DECL(expected,int,32,2) [] = { 0xffffffff, 0xffffffff };
@@ -16,13 +10,6 @@ VECT_VAR_DECL(expected,int,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff,
VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffff, 0xffffffff,
0xffffffff, 0xffffffff };
-/* Expected values of cumulative_saturation flag when saturation
- occurs. */
-int VECT_VAR(expected_cumulative_sat2,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat2,int,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat2,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat2,int,32,4) = 1;
-
/* Expected results when saturation occurs. */
VECT_VAR_DECL(expected2,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
VECT_VAR_DECL(expected2,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
@@ -40,21 +27,20 @@ VECT_VAR_DECL(expected2,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
void FNNAME (INSN_NAME) (void)
{
/* vector_res = vqdmulh(vector,vector2,lane), then store the result. */
-#define TEST_VQDMULH2(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQDMULH2(INSN, Q, T1, T2, W, N, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \
VECT_VAR(vector_res, T1, W, N) = \
INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N), \
VECT_VAR(vector2, T1, W, N)); \
vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \
- VECT_VAR(vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W, N))
/* Two auxliary macros are necessary to expand INSN. */
-#define TEST_VQDMULH1(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQDMULH2(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQDMULH1(INSN, Q, T1, T2, W, N, CMT) \
+ TEST_VQDMULH2(INSN, Q, T1, T2, W, N, CMT)
-#define TEST_VQDMULH(Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQDMULH1(INSN_NAME, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQDMULH(Q, T1, T2, W, N, CMT) \
+ TEST_VQDMULH1(INSN_NAME, Q, T1, T2, W, N, CMT)
DECL_VARIABLE(vector, int, 16, 4);
DECL_VARIABLE(vector, int, 32, 2);
@@ -84,10 +70,10 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector2, q, int, s, 16, 8, 0x33);
VDUP(vector2, q, int, s, 32, 4, 0x22);
- TEST_VQDMULH(, int, s, 16, 4, expected_cumulative_sat, "");
- TEST_VQDMULH(, int, s, 32, 2, expected_cumulative_sat, "");
- TEST_VQDMULH(q, int, s, 16, 8, expected_cumulative_sat, "");
- TEST_VQDMULH(q, int, s, 32, 4, expected_cumulative_sat, "");
+ TEST_VQDMULH(, int, s, 16, 4, "");
+ TEST_VQDMULH(, int, s, 32, 2, "");
+ TEST_VQDMULH(q, int, s, 16, 8, "");
+ TEST_VQDMULH(q, int, s, 32, 4, "");
CHECK (TEST_MSG, int, 16, 4, PRIx16, expected, "");
CHECK (TEST_MSG, int, 32, 2, PRIx32, expected, "");
@@ -104,10 +90,10 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector2, q, int, s, 32, 4, 0x80000000);
#define TEST_MSG2 "with saturation"
- TEST_VQDMULH(, int, s, 16, 4, expected_cumulative_sat2, TEST_MSG2);
- TEST_VQDMULH(, int, s, 32, 2, expected_cumulative_sat2, TEST_MSG2);
- TEST_VQDMULH(q, int, s, 16, 8, expected_cumulative_sat2, TEST_MSG2);
- TEST_VQDMULH(q, int, s, 32, 4, expected_cumulative_sat2, TEST_MSG2);
+ TEST_VQDMULH(, int, s, 16, 4, TEST_MSG2);
+ TEST_VQDMULH(, int, s, 32, 2, TEST_MSG2);
+ TEST_VQDMULH(q, int, s, 16, 8, TEST_MSG2);
+ TEST_VQDMULH(q, int, s, 32, 4, TEST_MSG2);
CHECK (TEST_MSG, int, 16, 4, PRIx16, expected2, TEST_MSG2);
CHECK (TEST_MSG, int, 32, 2, PRIx32, expected2, TEST_MSG2);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_lane.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_lane.c
index 5260676..d11c764 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_lane.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_lane.c
@@ -2,12 +2,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
VECT_VAR_DECL(expected,int,32,2) [] = { 0xffffffff, 0xffffffff };
@@ -16,13 +10,6 @@ VECT_VAR_DECL(expected,int,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff,
VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffff, 0xffffffff,
0xffffffff, 0xffffffff };
-/* Expected values of cumulative_saturation flag when saturation
- occurs. */
-int VECT_VAR(expected_cumulative_sat2,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat2,int,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat2,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat2,int,32,4) = 1;
-
/* Expected results when saturation occurs. */
VECT_VAR_DECL(expected2,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
VECT_VAR_DECL(expected2,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
@@ -39,22 +26,21 @@ VECT_VAR_DECL(expected2,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
void FNNAME (INSN_NAME) (void)
{
/* vector_res = vqdmulh_lane(vector,vector2,lane), then store the result. */
-#define TEST_VQDMULH_LANE2(INSN, Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQDMULH_LANE2(INSN, Q, T1, T2, W, N, N2, L, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \
VECT_VAR(vector_res, T1, W, N) = \
INSN##Q##_lane_##T2##W(VECT_VAR(vector, T1, W, N), \
VECT_VAR(vector2, T1, W, N2), \
L); \
vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \
- VECT_VAR(vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W, N))
/* Two auxliary macros are necessary to expand INSN. */
-#define TEST_VQDMULH_LANE1(INSN, Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQDMULH_LANE2(INSN, Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQDMULH_LANE1(INSN, Q, T1, T2, W, N, N2, L, CMT) \
+ TEST_VQDMULH_LANE2(INSN, Q, T1, T2, W, N, N2, L, CMT)
-#define TEST_VQDMULH_LANE(Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQDMULH_LANE1(INSN_NAME, Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQDMULH_LANE(Q, T1, T2, W, N, N2, L, CMT) \
+ TEST_VQDMULH_LANE1(INSN_NAME, Q, T1, T2, W, N, N2, L, CMT)
DECL_VARIABLE(vector, int, 16, 4);
DECL_VARIABLE(vector, int, 32, 2);
@@ -84,10 +70,10 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector2, , int, s, 32, 2, 0xBB);
/* Choose lane arbitrarily. */
- TEST_VQDMULH_LANE(, int, s, 16, 4, 4, 2, expected_cumulative_sat, "");
- TEST_VQDMULH_LANE(, int, s, 32, 2, 2, 1, expected_cumulative_sat, "");
- TEST_VQDMULH_LANE(q, int, s, 16, 8, 4, 3, expected_cumulative_sat, "");
- TEST_VQDMULH_LANE(q, int, s, 32, 4, 2, 0, expected_cumulative_sat, "");
+ TEST_VQDMULH_LANE(, int, s, 16, 4, 4, 2, "");
+ TEST_VQDMULH_LANE(, int, s, 32, 2, 2, 1, "");
+ TEST_VQDMULH_LANE(q, int, s, 16, 8, 4, 3, "");
+ TEST_VQDMULH_LANE(q, int, s, 32, 4, 2, 0, "");
CHECK (TEST_MSG, int, 16, 4, PRIx16, expected, "");
CHECK (TEST_MSG, int, 32, 2, PRIx32, expected, "");
@@ -103,10 +89,10 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector2, , int, s, 32, 2, 0x80000000);
#define TEST_MSG2 " (check mul cumulative saturation)"
- TEST_VQDMULH_LANE(, int, s, 16, 4, 4, 3, expected_cumulative_sat2, TEST_MSG2);
- TEST_VQDMULH_LANE(, int, s, 32, 2, 2, 1, expected_cumulative_sat2, TEST_MSG2);
- TEST_VQDMULH_LANE(q, int, s, 16, 8, 4, 2, expected_cumulative_sat2, TEST_MSG2);
- TEST_VQDMULH_LANE(q, int, s, 32, 4, 2, 1, expected_cumulative_sat2, TEST_MSG2);
+ TEST_VQDMULH_LANE(, int, s, 16, 4, 4, 3, TEST_MSG2);
+ TEST_VQDMULH_LANE(, int, s, 32, 2, 2, 1, TEST_MSG2);
+ TEST_VQDMULH_LANE(q, int, s, 16, 8, 4, 2, TEST_MSG2);
+ TEST_VQDMULH_LANE(q, int, s, 32, 4, 2, 1, TEST_MSG2);
CHECK (TEST_MSG, int, 16, 4, PRIx16, expected2, TEST_MSG2);
CHECK (TEST_MSG, int, 32, 2, PRIx32, expected2, TEST_MSG2);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_n.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_n.c
index ab66e2d..7819a85 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_n.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmulh_n.c
@@ -2,12 +2,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,16,4) [] = { 0x19, 0x19, 0x19, 0x19 };
VECT_VAR_DECL(expected,int,32,2) [] = { 0x4, 0x4 };
@@ -15,13 +9,6 @@ VECT_VAR_DECL(expected,int,16,8) [] = { 0x10, 0x10, 0x10, 0x10,
0x10, 0x10, 0x10, 0x10 };
VECT_VAR_DECL(expected,int,32,4) [] = { 0xa, 0xa, 0xa, 0xa };
-/* Expected values of cumulative_saturation flag when saturation
- occurs. */
-int VECT_VAR(expected_cumulative_sat2,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat2,int,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat2,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat2,int,32,4) = 1;
-
/* Expected results when saturation occurs. */
VECT_VAR_DECL(expected2,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
VECT_VAR_DECL(expected2,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
@@ -40,21 +27,20 @@ void FNNAME (INSN_NAME) (void)
int i;
/* vector_res = vqdmulh_n(vector,val), then store the result. */
-#define TEST_VQDMULH_N2(INSN, Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQDMULH_N2(INSN, Q, T1, T2, W, N, L, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \
VECT_VAR(vector_res, T1, W, N) = \
INSN##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N), \
L); \
vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \
- VECT_VAR(vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W, N))
/* Two auxliary macros are necessary to expand INSN. */
-#define TEST_VQDMULH_N1(INSN, Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQDMULH_N2(INSN, Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQDMULH_N1(INSN, Q, T1, T2, W, N, L, CMT) \
+ TEST_VQDMULH_N2(INSN, Q, T1, T2, W, N, L, CMT)
-#define TEST_VQDMULH_N(Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQDMULH_N1(INSN_NAME, Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQDMULH_N(Q, T1, T2, W, N, L, CMT) \
+ TEST_VQDMULH_N1(INSN_NAME, Q, T1, T2, W, N, L, CMT)
DECL_VARIABLE(vector, int, 16, 4);
DECL_VARIABLE(vector, int, 32, 2);
@@ -75,10 +61,10 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector, q, int, s, 32, 4, 0x100045);
/* Choose multiplier arbitrarily. */
- TEST_VQDMULH_N(, int, s, 16, 4, 0xCF, expected_cumulative_sat, "");
- TEST_VQDMULH_N(, int, s, 32, 2, 0x2344, expected_cumulative_sat, "");
- TEST_VQDMULH_N(q, int, s, 16, 8, 0x80, expected_cumulative_sat, "");
- TEST_VQDMULH_N(q, int, s, 32, 4, 0x5422, expected_cumulative_sat, "");
+ TEST_VQDMULH_N(, int, s, 16, 4, 0xCF, "");
+ TEST_VQDMULH_N(, int, s, 32, 2, 0x2344, "");
+ TEST_VQDMULH_N(q, int, s, 16, 8, 0x80, "");
+ TEST_VQDMULH_N(q, int, s, 32, 4, 0x5422, "");
CHECK (TEST_MSG, int, 16, 4, PRIx16, expected, "");
CHECK (TEST_MSG, int, 32, 2, PRIx32, expected, "");
@@ -92,10 +78,10 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector, q, int, s, 32, 4, 0x80000000);
#define TEST_MSG2 " (check mul cumulative saturation)"
- TEST_VQDMULH_N(, int, s, 16, 4, 0x8000, expected_cumulative_sat2, TEST_MSG2);
- TEST_VQDMULH_N(, int, s, 32, 2, 0x80000000, expected_cumulative_sat2, TEST_MSG2);
- TEST_VQDMULH_N(q, int, s, 16, 8, 0x8000, expected_cumulative_sat2, TEST_MSG2);
- TEST_VQDMULH_N(q, int, s, 32, 4, 0x80000000, expected_cumulative_sat2, TEST_MSG2);
+ TEST_VQDMULH_N(, int, s, 16, 4, 0x8000, TEST_MSG2);
+ TEST_VQDMULH_N(, int, s, 32, 2, 0x80000000, TEST_MSG2);
+ TEST_VQDMULH_N(q, int, s, 16, 8, 0x8000, TEST_MSG2);
+ TEST_VQDMULH_N(q, int, s, 32, 4, 0x80000000, TEST_MSG2);
CHECK (TEST_MSG, int, 16, 4, PRIx16, expected2, TEST_MSG2);
CHECK (TEST_MSG, int, 32, 2, PRIx32, expected2, TEST_MSG2);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull.c
index 5caebce..0845c1d 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull.c
@@ -2,19 +2,10 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,32,4) [] = { 0x200, 0x1c2, 0x188, 0x152 };
VECT_VAR_DECL(expected,int,64,2) [] = { 0x200, 0x1c2 };
-/* Expected values of cumulative_saturation flag when saturation
- occurs. */
-int VECT_VAR(expected_cumulative_sat2,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat2,int,32,2) = 1;
-
/* Expected results when saturation occurs. */
VECT_VAR_DECL(expected2,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
0x7fffffff, 0x7fffffff };
@@ -30,21 +21,20 @@ VECT_VAR_DECL(expected2,int,64,2) [] = { 0x7fffffffffffffff,
void FNNAME (INSN_NAME) (void)
{
/* Basic test: y=vqdmull(x,x), then store the result. */
-#define TEST_VQDMULL2(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQDMULL2(INSN, T1, T2, W, W2, N, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W2, N)); \
VECT_VAR(vector_res, T1, W2, N) = \
INSN##_##T2##W(VECT_VAR(vector, T1, W, N), \
VECT_VAR(vector2, T1, W, N)); \
vst1q_##T2##W2(VECT_VAR(result, T1, W2, N), \
- VECT_VAR(vector_res, T1, W2, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W2, N))
/* Two auxliary macros are necessary to expand INSN. */
-#define TEST_VQDMULL1(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQDMULL2(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQDMULL1(INSN, T1, T2, W, W2, N, CMT) \
+ TEST_VQDMULL2(INSN, T1, T2, W, W2, N, CMT)
-#define TEST_VQDMULL(T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQDMULL1(INSN_NAME, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQDMULL(T1, T2, W, W2, N, CMT) \
+ TEST_VQDMULL1(INSN_NAME, T1, T2, W, W2, N, CMT)
DECL_VARIABLE(vector, int, 16, 4);
DECL_VARIABLE(vector, int, 32, 2);
@@ -60,8 +50,8 @@ void FNNAME (INSN_NAME) (void)
VLOAD(vector2, buffer, , int, s, 16, 4);
VLOAD(vector2, buffer, , int, s, 32, 2);
- TEST_VQDMULL(int, s, 16, 32, 4, expected_cumulative_sat, "");
- TEST_VQDMULL(int, s, 32, 64, 2, expected_cumulative_sat, "");
+ TEST_VQDMULL(int, s, 16, 32, 4, "");
+ TEST_VQDMULL(int, s, 32, 64, 2, "");
CHECK (TEST_MSG, int, 32, 4, PRIx32, expected, "");
CHECK (TEST_MSG, int, 64, 2, PRIx64, expected, "");
@@ -72,8 +62,8 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector2, , int, s, 32, 2, 0x80000000);
#define TEST_MSG2 "with saturation"
- TEST_VQDMULL(int, s, 16, 32, 4, expected_cumulative_sat2, TEST_MSG2);
- TEST_VQDMULL(int, s, 32, 64, 2, expected_cumulative_sat2, TEST_MSG2);
+ TEST_VQDMULL(int, s, 16, 32, 4, TEST_MSG2);
+ TEST_VQDMULL(int, s, 32, 64, 2, TEST_MSG2);
CHECK (TEST_MSG, int, 32, 4, PRIx32, expected2, TEST_MSG2);
CHECK (TEST_MSG, int, 64, 2, PRIx64, expected2, TEST_MSG2);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_lane.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_lane.c
index 12f2a6b..1f86011 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_lane.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_lane.c
@@ -2,19 +2,10 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,32,4) [] = { 0x8000, 0x8000, 0x8000, 0x8000 };
VECT_VAR_DECL(expected,int,64,2) [] = { 0x4000, 0x4000 };
-/* Expected values of cumulative_saturation flag when saturation
- occurs. */
-int VECT_VAR(expected_cumulative_sat2,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat2,int,32,2) = 1;
-
/* Expected results when saturation occurs. */
VECT_VAR_DECL(expected2,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
0x7fffffff, 0x7fffffff };
@@ -32,22 +23,21 @@ void FNNAME (INSN_NAME) (void)
int i;
/* vector_res = vqdmull_lane(vector,vector2,lane), then store the result. */
-#define TEST_VQDMULL_LANE2(INSN, T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQDMULL_LANE2(INSN, T1, T2, W, W2, N, L, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W2, N)); \
VECT_VAR(vector_res, T1, W2, N) = \
INSN##_lane_##T2##W(VECT_VAR(vector, T1, W, N), \
VECT_VAR(vector2, T1, W, N), \
L); \
vst1q_##T2##W2(VECT_VAR(result, T1, W2, N), \
- VECT_VAR(vector_res, T1, W2, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W2, N))
/* Two auxliary macros are necessary to expand INSN. */
-#define TEST_VQDMULL_LANE1(INSN, T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQDMULL_LANE2(INSN, T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQDMULL_LANE1(INSN, T1, T2, W, W2, N, L, CMT) \
+ TEST_VQDMULL_LANE2(INSN, T1, T2, W, W2, N, L, CMT)
-#define TEST_VQDMULL_LANE(T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQDMULL_LANE1(INSN_NAME, T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQDMULL_LANE(T1, T2, W, W2, N, L, CMT) \
+ TEST_VQDMULL_LANE1(INSN_NAME, T1, T2, W, W2, N, L, CMT)
DECL_VARIABLE(vector, int, 16, 4);
DECL_VARIABLE(vector, int, 32, 2);
@@ -68,8 +58,8 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector2, , int, s, 32, 2, 0x2);
/* Choose lane arbitrarily. */
- TEST_VQDMULL_LANE(int, s, 16, 32, 4, 2, expected_cumulative_sat, "");
- TEST_VQDMULL_LANE(int, s, 32, 64, 2, 1, expected_cumulative_sat, "");
+ TEST_VQDMULL_LANE(int, s, 16, 32, 4, 2, "");
+ TEST_VQDMULL_LANE(int, s, 32, 64, 2, 1, "");
CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
@@ -80,8 +70,8 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector2, , int, s, 32, 2, 0x80000000);
#define TEST_MSG2 "with saturation"
- TEST_VQDMULL_LANE(int, s, 16, 32, 4, 2, expected_cumulative_sat2, TEST_MSG2);
- TEST_VQDMULL_LANE(int, s, 32, 64, 2, 1, expected_cumulative_sat2, TEST_MSG2);
+ TEST_VQDMULL_LANE(int, s, 16, 32, 4, 2, TEST_MSG2);
+ TEST_VQDMULL_LANE(int, s, 32, 64, 2, 1, TEST_MSG2);
CHECK(TEST_MSG, int, 32, 4, PRIx32, expected2, TEST_MSG2);
CHECK(TEST_MSG, int, 64, 2, PRIx64, expected2, TEST_MSG2);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_n.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_n.c
index 9e73009..e618a36 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_n.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqdmull_n.c
@@ -2,20 +2,12 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
/* Expected results. */
VECT_VAR_DECL(expected,int,32,4) [] = { 0x44000, 0x44000,
0x44000, 0x44000 };
VECT_VAR_DECL(expected,int,64,2) [] = { 0xaa000, 0xaa000 };
-/* Expected values of cumulative_saturation flag when saturation
- occurs. */
-int VECT_VAR(expected_cumulative_sat2,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat2,int,32,2) = 1;
-
/* Expected results when saturation occurs. */
VECT_VAR_DECL(expected2,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
0x7fffffff, 0x7fffffff };
@@ -33,21 +25,20 @@ void FNNAME (INSN_NAME) (void)
int i;
/* vector_res = vqdmull_n(vector,val), then store the result. */
-#define TEST_VQDMULL_N2(INSN, T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQDMULL_N2(INSN, T1, T2, W, W2, N, L, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W2, N)); \
VECT_VAR(vector_res, T1, W2, N) = \
INSN##_n_##T2##W(VECT_VAR(vector, T1, W, N), \
L); \
vst1q_##T2##W2(VECT_VAR(result, T1, W2, N), \
- VECT_VAR(vector_res, T1, W2, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W2, N))
/* Two auxliary macros are necessary to expand INSN. */
-#define TEST_VQDMULL_N1(INSN, T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQDMULL_N2(INSN, T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQDMULL_N1(INSN, T1, T2, W, W2, N, L, CMT) \
+ TEST_VQDMULL_N2(INSN, T1, T2, W, W2, N, L, CMT)
-#define TEST_VQDMULL_N(T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQDMULL_N1(INSN_NAME, T1, T2, W, W2, N, L, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQDMULL_N(T1, T2, W, W2, N, L, CMT) \
+ TEST_VQDMULL_N1(INSN_NAME, T1, T2, W, W2, N, L, CMT)
DECL_VARIABLE(vector, int, 16, 4);
DECL_VARIABLE(vector, int, 32, 2);
@@ -68,8 +59,8 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector2, , int, s, 32, 2, 0x2);
/* Choose multiplier arbitrarily. */
- TEST_VQDMULL_N(int, s, 16, 32, 4, 0x22, expected_cumulative_sat, "");
- TEST_VQDMULL_N(int, s, 32, 64, 2, 0x55, expected_cumulative_sat, "");
+ TEST_VQDMULL_N(int, s, 16, 32, 4, 0x22, "");
+ TEST_VQDMULL_N(int, s, 32, 64, 2, 0x55, "");
CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
@@ -78,8 +69,8 @@ void FNNAME (INSN_NAME) (void)
VDUP(vector, , int, s, 32, 2, 0x80000000);
#define TEST_MSG2 "with saturation"
- TEST_VQDMULL_N(int, s, 16, 32, 4, 0x8000, expected_cumulative_sat2, TEST_MSG2);
- TEST_VQDMULL_N(int, s, 32, 64, 2, 0x80000000, expected_cumulative_sat2, TEST_MSG2);
+ TEST_VQDMULL_N(int, s, 16, 32, 4, 0x8000, TEST_MSG2);
+ TEST_VQDMULL_N(int, s, 32, 64, 2, 0x80000000, TEST_MSG2);
CHECK(TEST_MSG, int, 32, 4, PRIx32, expected2, TEST_MSG2);
CHECK(TEST_MSG, int, 64, 2, PRIx64, expected2, TEST_MSG2);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovn.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovn.c
index 45c2db9..3cb874c 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovn.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovn.c
@@ -2,14 +2,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,32,2) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,8,8) [] = { 0x12, 0x12, 0x12, 0x12,
0x12, 0x12, 0x12, 0x12 };
@@ -20,14 +12,6 @@ VECT_VAR_DECL(expected,uint,8,8) [] = { 0x82, 0x82, 0x82, 0x82,
VECT_VAR_DECL(expected,uint,16,4) [] = { 0x8765, 0x8765, 0x8765, 0x8765 };
VECT_VAR_DECL(expected,uint,32,2) [] = { 0x87654321, 0x87654321 };
-/* Expected values of cumulative_saturation flag when saturation occurs. */
-int VECT_VAR(expected_cumulative_sat1,int,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat1,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat1,int,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat1,uint,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat1,uint,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat1,uint,32,2) = 1;
-
/* Expected results when saturation occurs. */
VECT_VAR_DECL(expected1,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
0x7f, 0x7f, 0x7f, 0x7f };
@@ -47,16 +31,15 @@ VECT_VAR_DECL(expected1,uint,32,2) [] = { 0xffffffff, 0xffffffff };
FNNAME (INSN_NAME)
{
/* Basic test: y=OP(x), then store the result. */
-#define TEST_UNARY_OP1(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_UNARY_OP1(INSN, T1, T2, W, W2, N, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \
VECT_VAR(vector_res, T1, W, N) = \
INSN##_##T2##W2(VECT_VAR(vector, T1, W2, N)); \
vst1##_##T2##W(VECT_VAR(result, T1, W, N), \
- VECT_VAR(vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W, N))
-#define TEST_UNARY_OP(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_UNARY_OP1(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_UNARY_OP(INSN, T1, T2, W, W2, N, CMT) \
+ TEST_UNARY_OP1(INSN, T1, T2, W, W2, N, CMT)
/* No need for 64 bits variants. */
DECL_VARIABLE(vector, int, 16, 8);
@@ -85,12 +68,12 @@ FNNAME (INSN_NAME)
/* Apply a unary operator named INSN_NAME. */
#define CMT ""
- TEST_UNARY_OP(INSN_NAME, int, s, 8, 16, 8, expected_cumulative_sat, CMT);
- TEST_UNARY_OP(INSN_NAME, int, s, 16, 32, 4, expected_cumulative_sat, CMT);
- TEST_UNARY_OP(INSN_NAME, int, s, 32, 64, 2, expected_cumulative_sat, CMT);
- TEST_UNARY_OP(INSN_NAME, uint, u, 8, 16, 8, expected_cumulative_sat, CMT);
- TEST_UNARY_OP(INSN_NAME, uint, u, 16, 32, 4, expected_cumulative_sat, CMT);
- TEST_UNARY_OP(INSN_NAME, uint, u, 32, 64, 2, expected_cumulative_sat, CMT);
+ TEST_UNARY_OP(INSN_NAME, int, s, 8, 16, 8, CMT);
+ TEST_UNARY_OP(INSN_NAME, int, s, 16, 32, 4, CMT);
+ TEST_UNARY_OP(INSN_NAME, int, s, 32, 64, 2, CMT);
+ TEST_UNARY_OP(INSN_NAME, uint, u, 8, 16, 8, CMT);
+ TEST_UNARY_OP(INSN_NAME, uint, u, 16, 32, 4, CMT);
+ TEST_UNARY_OP(INSN_NAME, uint, u, 32, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
@@ -112,12 +95,12 @@ FNNAME (INSN_NAME)
/* Apply a unary operator named INSN_NAME. */
#undef CMT
#define CMT " (with saturation)"
- TEST_UNARY_OP(INSN_NAME, int, s, 8, 16, 8, expected_cumulative_sat1, CMT);
- TEST_UNARY_OP(INSN_NAME, int, s, 16, 32, 4, expected_cumulative_sat1, CMT);
- TEST_UNARY_OP(INSN_NAME, int, s, 32, 64, 2, expected_cumulative_sat1, CMT);
- TEST_UNARY_OP(INSN_NAME, uint, u, 8, 16, 8, expected_cumulative_sat1, CMT);
- TEST_UNARY_OP(INSN_NAME, uint, u, 16, 32, 4, expected_cumulative_sat1, CMT);
- TEST_UNARY_OP(INSN_NAME, uint, u, 32, 64, 2, expected_cumulative_sat1, CMT);
+ TEST_UNARY_OP(INSN_NAME, int, s, 8, 16, 8, CMT);
+ TEST_UNARY_OP(INSN_NAME, int, s, 16, 32, 4, CMT);
+ TEST_UNARY_OP(INSN_NAME, int, s, 32, 64, 2, CMT);
+ TEST_UNARY_OP(INSN_NAME, uint, u, 8, 16, 8, CMT);
+ TEST_UNARY_OP(INSN_NAME, uint, u, 16, 32, 4, CMT);
+ TEST_UNARY_OP(INSN_NAME, uint, u, 32, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected1, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected1, CMT);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovun.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovun.c
index 1eeb4c8..f4c4e31 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovun.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovun.c
@@ -2,22 +2,12 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,uint,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,32,2) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,uint,8,8) [] = { 0x34, 0x34, 0x34, 0x34,
0x34, 0x34, 0x34, 0x34 };
VECT_VAR_DECL(expected,uint,16,4) [] = { 0x5678, 0x5678, 0x5678, 0x5678 };
VECT_VAR_DECL(expected,uint,32,2) [] = { 0x12345678, 0x12345678 };
-/* Expected values of cumulative_saturation flag with negative input. */
-int VECT_VAR(expected_cumulative_sat_neg,uint,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat_neg,uint,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_neg,uint,32,2) = 1;
-
/* Expected results with negative input. */
VECT_VAR_DECL(expected_neg,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0 };
@@ -33,16 +23,15 @@ VECT_VAR_DECL(expected_neg,uint,32,2) [] = { 0x0, 0x0 };
FNNAME (INSN_NAME)
{
/* Basic test: y=OP(x), then store the result. */
-#define TEST_UNARY_OP1(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_UNARY_OP1(INSN, T1, T2, W, W2, N, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \
VECT_VAR(vector_res, T1, W, N) = \
INSN##_s##W2(VECT_VAR(vector, int, W2, N)); \
vst1##_##T2##W(VECT_VAR(result, T1, W, N), \
- VECT_VAR(vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W, N))
-#define TEST_UNARY_OP(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_UNARY_OP1(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_UNARY_OP(INSN, T1, T2, W, W2, N, CMT) \
+ TEST_UNARY_OP1(INSN, T1, T2, W, W2, N, CMT)
DECL_VARIABLE(vector, int, 16, 8);
DECL_VARIABLE(vector, int, 32, 4);
@@ -61,9 +50,9 @@ FNNAME (INSN_NAME)
/* Apply a unary operator named INSN_NAME. */
#define CMT ""
- TEST_UNARY_OP(INSN_NAME, uint, u, 8, 16, 8, expected_cumulative_sat, CMT);
- TEST_UNARY_OP(INSN_NAME, uint, u, 16, 32, 4, expected_cumulative_sat, CMT);
- TEST_UNARY_OP(INSN_NAME, uint, u, 32, 64, 2, expected_cumulative_sat, CMT);
+ TEST_UNARY_OP(INSN_NAME, uint, u, 8, 16, 8, CMT);
+ TEST_UNARY_OP(INSN_NAME, uint, u, 16, 32, 4, CMT);
+ TEST_UNARY_OP(INSN_NAME, uint, u, 32, 64, 2, CMT);
CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
@@ -77,9 +66,9 @@ FNNAME (INSN_NAME)
/* Apply a unary operator named INSN_NAME. */
#undef CMT
#define CMT " (negative input)"
- TEST_UNARY_OP(INSN_NAME, uint, u, 8, 16, 8, expected_cumulative_sat_neg, CMT);
- TEST_UNARY_OP(INSN_NAME, uint, u, 16, 32, 4, expected_cumulative_sat_neg, CMT);
- TEST_UNARY_OP(INSN_NAME, uint, u, 32, 64, 2, expected_cumulative_sat_neg, CMT);
+ TEST_UNARY_OP(INSN_NAME, uint, u, 8, 16, 8, CMT);
+ TEST_UNARY_OP(INSN_NAME, uint, u, 16, 32, 4, CMT);
+ TEST_UNARY_OP(INSN_NAME, uint, u, 32, 64, 2, CMT);
CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_neg, CMT);
CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_neg, CMT);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqneg.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqneg.c
index 5126ac9..f700f28 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqneg.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqneg.c
@@ -19,14 +19,6 @@ VECT_VAR_DECL(expected,int,16,8) [] = { 0x10, 0xf, 0xe, 0xd,
0xc, 0xb, 0xa, 0x9 };
VECT_VAR_DECL(expected,int,32,4) [] = { 0x10, 0xf, 0xe, 0xd };
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-
/* Expected results when input is the min negative value of the type. */
VECT_VAR_DECL(expected_min_neg,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
0x7f, 0x7f, 0x7f, 0x7f };
@@ -44,15 +36,6 @@ VECT_VAR_DECL(expected_min_neg,int,16,8) [] = { 0x7fff, 0x7fff,
VECT_VAR_DECL(expected_min_neg,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
0x7fffffff, 0x7fffffff };
-/* Expected values of cumulative_saturation flag when input is the min
- negative value of the type. */
-int VECT_VAR(expected_cumulative_sat_min_neg,int,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat_min_neg,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_min_neg,int,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_min_neg,int,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat_min_neg,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_min_neg,int,32,4) = 1;
-
void vqneg_extra()
{
/* No need for 64 bits variants. */
@@ -82,12 +65,12 @@ void vqneg_extra()
VDUP(vector, q, int, s, 32, 4, 0x80000000);
#define MSG "min negative input"
- TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 8, 8, expected_cumulative_sat_min_neg, MSG);
- TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 16, 4, expected_cumulative_sat_min_neg, MSG);
- TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 32, 2, expected_cumulative_sat_min_neg, MSG);
- TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, expected_cumulative_sat_min_neg, MSG);
- TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, expected_cumulative_sat_min_neg, MSG);
- TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, expected_cumulative_sat_min_neg, MSG);
+ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 8, 8, MSG);
+ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 16, 4, MSG);
+ TEST_UNARY_SAT_OP(INSN_NAME, , int, s, 32, 2, MSG);
+ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, MSG);
+ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, MSG);
+ TEST_UNARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, MSG);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_min_neg, MSG);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_min_neg, MSG);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh.inc b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh.inc
index a504ca6..4b2b712 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh.inc
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh.inc
@@ -5,23 +5,21 @@ void FNNAME (INSN) (void)
{
/* vector_res = vqrdmlah (vector, vector2, vector3, vector4),
then store the result. */
-#define TEST_VQRDMLAH2(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQRDMLAH2(INSN, Q, T1, T2, W, N, CMT) \
Set_Neon_Cumulative_Sat (0, VECT_VAR (vector_res, T1, W, N)); \
VECT_VAR (vector_res, T1, W, N) = \
INSN##Q##_##T2##W (VECT_VAR (vector, T1, W, N), \
VECT_VAR (vector2, T1, W, N), \
VECT_VAR (vector3, T1, W, N)); \
vst1##Q##_##T2##W (VECT_VAR (result, T1, W, N), \
- VECT_VAR (vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT (TEST_MSG, T1, W, N, \
- EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR (vector_res, T1, W, N))
/* Two auxliary macros are necessary to expand INSN. */
-#define TEST_VQRDMLAH1(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQRDMLAH2 (INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQRDMLAH1(INSN, Q, T1, T2, W, N, CMT) \
+ TEST_VQRDMLAH2 (INSN, Q, T1, T2, W, N, CMT)
-#define TEST_VQRDMLAH(Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQRDMLAH1 (INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQRDMLAH(Q, T1, T2, W, N, CMT) \
+ TEST_VQRDMLAH1 (INSN, Q, T1, T2, W, N, CMT)
DECL_VARIABLE (vector, int, 16, 4);
DECL_VARIABLE (vector, int, 32, 2);
@@ -63,10 +61,10 @@ void FNNAME (INSN) (void)
VDUP (vector3, q, int, s, 32, 4, 0x22);
#define CMT ""
- TEST_VQRDMLAH ( , int, s, 16, 4, expected_cumulative_sat, CMT);
- TEST_VQRDMLAH ( , int, s, 32, 2, expected_cumulative_sat, CMT);
- TEST_VQRDMLAH (q, int, s, 16, 8, expected_cumulative_sat, CMT);
- TEST_VQRDMLAH (q, int, s, 32, 4, expected_cumulative_sat, CMT);
+ TEST_VQRDMLAH ( , int, s, 16, 4, CMT);
+ TEST_VQRDMLAH ( , int, s, 32, 2, CMT);
+ TEST_VQRDMLAH (q, int, s, 16, 8, CMT);
+ TEST_VQRDMLAH (q, int, s, 32, 4, CMT);
CHECK (TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
CHECK (TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
@@ -89,10 +87,10 @@ void FNNAME (INSN) (void)
VDUP (vector3, q, int, s, 16, 8, 0x8000);
VDUP (vector3, q, int, s, 32, 4, 0x80000000);
- TEST_VQRDMLAH ( , int, s, 16, 4, expected_cumulative_sat_mul, TEST_MSG_MUL);
- TEST_VQRDMLAH ( , int, s, 32, 2, expected_cumulative_sat_mul, TEST_MSG_MUL);
- TEST_VQRDMLAH (q, int, s, 16, 8, expected_cumulative_sat_mul, TEST_MSG_MUL);
- TEST_VQRDMLAH (q, int, s, 32, 4, expected_cumulative_sat_mul, TEST_MSG_MUL);
+ TEST_VQRDMLAH ( , int, s, 16, 4, TEST_MSG_MUL);
+ TEST_VQRDMLAH ( , int, s, 32, 2, TEST_MSG_MUL);
+ TEST_VQRDMLAH (q, int, s, 16, 8, TEST_MSG_MUL);
+ TEST_VQRDMLAH (q, int, s, 32, 4, TEST_MSG_MUL);
CHECK (TEST_MSG, int, 16, 4, PRIx16, expected_mul, TEST_MSG_MUL);
CHECK (TEST_MSG, int, 32, 2, PRIx32, expected_mul, TEST_MSG_MUL);
@@ -115,14 +113,10 @@ void FNNAME (INSN) (void)
VDUP (vector3, q, int, s, 16, 8, 0x8001);
VDUP (vector3, q, int, s, 32, 4, 0x80000001);
- TEST_VQRDMLAH ( , int, s, 16, 4, expected_cumulative_sat_round, \
- TEST_MSG_ROUND);
- TEST_VQRDMLAH ( , int, s, 32, 2, expected_cumulative_sat_round, \
- TEST_MSG_ROUND);
- TEST_VQRDMLAH (q, int, s, 16, 8, expected_cumulative_sat_round, \
- TEST_MSG_ROUND);
- TEST_VQRDMLAH (q, int, s, 32, 4, expected_cumulative_sat_round, \
- TEST_MSG_ROUND);
+ TEST_VQRDMLAH ( , int, s, 16, 4, TEST_MSG_ROUND);
+ TEST_VQRDMLAH ( , int, s, 32, 2, TEST_MSG_ROUND);
+ TEST_VQRDMLAH (q, int, s, 16, 8, TEST_MSG_ROUND);
+ TEST_VQRDMLAH (q, int, s, 32, 4, TEST_MSG_ROUND);
CHECK (TEST_MSG, int, 16, 4, PRIx16, expected_round, TEST_MSG_ROUND);
CHECK (TEST_MSG, int, 32, 2, PRIx32, expected_round, TEST_MSG_ROUND);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh_lane.inc b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh_lane.inc
index a855502..204a2e6 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh_lane.inc
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlXh_lane.inc
@@ -6,7 +6,7 @@ void FNNAME (INSN) (void)
/* vector_res = vqrdmlXh_lane (vector, vector2, vector3, lane),
then store the result. */
#define TEST_VQRDMLXH_LANE2(INSN, Q, T1, T2, W, N, N2, L, \
- EXPECTED_CUMULATIVE_SAT, CMT) \
+ CMT) \
Set_Neon_Cumulative_Sat (0, VECT_VAR (vector_res, T1, W, N)); \
VECT_VAR (vector_res, T1, W, N) = \
INSN##Q##_lane_##T2##W (VECT_VAR (vector, T1, W, N), \
@@ -14,19 +14,18 @@ void FNNAME (INSN) (void)
VECT_VAR (vector3, T1, W, N2), \
L); \
vst1##Q##_##T2##W (VECT_VAR (result, T1, W, N), \
- VECT_VAR (vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT (TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR (vector_res, T1, W, N))
/* Two auxliary macros are necessary to expand INSN. */
#define TEST_VQRDMLXH_LANE1(INSN, Q, T1, T2, W, N, N2, L, \
- EXPECTED_CUMULATIVE_SAT, CMT) \
+ CMT) \
TEST_VQRDMLXH_LANE2 (INSN, Q, T1, T2, W, N, N2, L, \
- EXPECTED_CUMULATIVE_SAT, CMT)
+ CMT)
#define TEST_VQRDMLXH_LANE(Q, T1, T2, W, N, N2, L, \
- EXPECTED_CUMULATIVE_SAT, CMT) \
+ CMT) \
TEST_VQRDMLXH_LANE1 (INSN, Q, T1, T2, W, N, N2, L, \
- EXPECTED_CUMULATIVE_SAT, CMT)
+ CMT)
DECL_VARIABLE (vector, int, 16, 4);
@@ -71,10 +70,10 @@ void FNNAME (INSN) (void)
/* Choose lane arbitrarily. */
#define CMT ""
- TEST_VQRDMLXH_LANE (, int, s, 16, 4, 4, 2, expected_cumulative_sat, CMT);
- TEST_VQRDMLXH_LANE (, int, s, 32, 2, 2, 1, expected_cumulative_sat, CMT);
- TEST_VQRDMLXH_LANE (q, int, s, 16, 8, 4, 3, expected_cumulative_sat, CMT);
- TEST_VQRDMLXH_LANE (q, int, s, 32, 4, 2, 0, expected_cumulative_sat, CMT);
+ TEST_VQRDMLXH_LANE (, int, s, 16, 4, 4, 2, CMT);
+ TEST_VQRDMLXH_LANE (, int, s, 32, 2, 2, 1, CMT);
+ TEST_VQRDMLXH_LANE (q, int, s, 16, 8, 4, 3, CMT);
+ TEST_VQRDMLXH_LANE (q, int, s, 32, 4, 2, 0, CMT);
CHECK (TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
CHECK (TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
@@ -99,14 +98,10 @@ void FNNAME (INSN) (void)
VDUP (vector3, q, int, s, 16, 8, 0x8000);
VDUP (vector3, q, int, s, 32, 4, 0x80000000);
- TEST_VQRDMLXH_LANE (, int, s, 16, 4, 4, 2, expected_cumulative_sat_mul,
- TEST_MSG_MUL);
- TEST_VQRDMLXH_LANE (, int, s, 32, 2, 2, 1, expected_cumulative_sat_mul,
- TEST_MSG_MUL);
- TEST_VQRDMLXH_LANE (q, int, s, 16, 8, 4, 3, expected_cumulative_sat_mul,
- TEST_MSG_MUL);
- TEST_VQRDMLXH_LANE (q, int, s, 32, 4, 2, 0, expected_cumulative_sat_mul,
- TEST_MSG_MUL);
+ TEST_VQRDMLXH_LANE (, int, s, 16, 4, 4, 2, TEST_MSG_MUL);
+ TEST_VQRDMLXH_LANE (, int, s, 32, 2, 2, 1, TEST_MSG_MUL);
+ TEST_VQRDMLXH_LANE (q, int, s, 16, 8, 4, 3, TEST_MSG_MUL);
+ TEST_VQRDMLXH_LANE (q, int, s, 32, 4, 2, 0, TEST_MSG_MUL);
CHECK (TEST_MSG, int, 16, 4, PRIx16, expected_mul, TEST_MSG_MUL);
CHECK (TEST_MSG, int, 32, 2, PRIx32, expected_mul, TEST_MSG_MUL);
@@ -131,14 +126,10 @@ void FNNAME (INSN) (void)
/* Use input values where rounding produces a result equal to the
saturation value, but does not set the saturation flag. */
#define TEST_MSG_ROUND " (check rounding)"
- TEST_VQRDMLXH_LANE (, int, s, 16, 4, 4, 2, expected_cumulative_sat_round,
- TEST_MSG_ROUND);
- TEST_VQRDMLXH_LANE (, int, s, 32, 2, 2, 1, expected_cumulative_sat_round,
- TEST_MSG_ROUND);
- TEST_VQRDMLXH_LANE (q, int, s, 16, 8, 4, 3, expected_cumulative_sat_round,
- TEST_MSG_ROUND);
- TEST_VQRDMLXH_LANE (q, int, s, 32, 4, 2, 0, expected_cumulative_sat_round,
- TEST_MSG_ROUND);
+ TEST_VQRDMLXH_LANE (, int, s, 16, 4, 4, 2, TEST_MSG_ROUND);
+ TEST_VQRDMLXH_LANE (, int, s, 32, 2, 2, 1, TEST_MSG_ROUND);
+ TEST_VQRDMLXH_LANE (q, int, s, 16, 8, 4, 3, TEST_MSG_ROUND);
+ TEST_VQRDMLXH_LANE (q, int, s, 32, 4, 2, 0, TEST_MSG_ROUND);
CHECK (TEST_MSG, int, 16, 4, PRIx16, expected_round, TEST_MSG_ROUND);
CHECK (TEST_MSG, int, 32, 2, PRIx32, expected_round, TEST_MSG_ROUND);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlah.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlah.c
index 148d94c..71f20b7 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlah.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlah.c
@@ -5,12 +5,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR (expected_cumulative_sat, int, 16, 4) = 0;
-int VECT_VAR (expected_cumulative_sat, int, 32, 2) = 0;
-int VECT_VAR (expected_cumulative_sat, int, 16, 8) = 0;
-int VECT_VAR (expected_cumulative_sat, int, 32, 4) = 0;
-
/* Expected results. */
VECT_VAR_DECL (expected, int, 16, 4) [] = { 0x38d3, 0x38d4, 0x38d5, 0x38d6 };
VECT_VAR_DECL (expected, int, 32, 2) [] = { 0xfffffff0, 0xfffffff1 };
@@ -19,13 +13,6 @@ VECT_VAR_DECL (expected, int, 16, 8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
VECT_VAR_DECL (expected, int, 32, 4) [] = { 0xfffffff0, 0xfffffff1,
0xfffffff2, 0xfffffff3 };
-/* Expected values of cumulative_saturation flag when multiplication
- saturates. */
-int VECT_VAR (expected_cumulative_sat_mul, int, 16, 4) = 0;
-int VECT_VAR (expected_cumulative_sat_mul, int, 32, 2) = 0;
-int VECT_VAR (expected_cumulative_sat_mul, int, 16, 8) = 0;
-int VECT_VAR (expected_cumulative_sat_mul, int, 32, 4) = 0;
-
/* Expected results when multiplication saturates. */
VECT_VAR_DECL (expected_mul, int, 16, 4) [] = { 0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL (expected_mul, int, 32, 2) [] = { 0x0, 0x0 };
@@ -33,13 +20,6 @@ VECT_VAR_DECL (expected_mul, int, 16, 8) [] = { 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL (expected_mul, int, 32, 4) [] = { 0x0, 0x0, 0x0, 0x0 };
-/* Expected values of cumulative_saturation flag when rounding
- should not cause saturation. */
-int VECT_VAR (expected_cumulative_sat_round, int, 16, 4) = 0;
-int VECT_VAR (expected_cumulative_sat_round, int, 32, 2) = 0;
-int VECT_VAR (expected_cumulative_sat_round, int, 16, 8) = 0;
-int VECT_VAR (expected_cumulative_sat_round, int, 32, 4) = 0;
-
/* Expected results when rounding should not cause saturation. */
VECT_VAR_DECL (expected_round, int, 16, 4) [] = { 0xfffe, 0xfffe,
0xfffe, 0xfffe };
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlah_lane.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlah_lane.c
index ed43e01..158fb33 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlah_lane.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlah_lane.c
@@ -5,12 +5,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR (expected_cumulative_sat, int, 16, 4) = 0;
-int VECT_VAR (expected_cumulative_sat, int, 32, 2) = 0;
-int VECT_VAR (expected_cumulative_sat, int, 16, 8) = 0;
-int VECT_VAR (expected_cumulative_sat, int, 32, 4) = 0;
-
/* Expected results. */
VECT_VAR_DECL (expected, int, 16, 4) [] = { 0x38d3, 0x38d4, 0x38d5, 0x38d6 };
VECT_VAR_DECL (expected, int, 32, 2) [] = { 0xfffffff0, 0xfffffff1 };
@@ -19,13 +13,6 @@ VECT_VAR_DECL (expected, int, 16, 8) [] = { 0x006d, 0x006e, 0x006f, 0x0070,
VECT_VAR_DECL (expected, int, 32, 4) [] = { 0xfffffff0, 0xfffffff1,
0xfffffff2, 0xfffffff3 };
-/* Expected values of cumulative_saturation flag when multiplication
- saturates. */
-int VECT_VAR (expected_cumulative_sat_mul, int, 16, 4) = 0;
-int VECT_VAR (expected_cumulative_sat_mul, int, 32, 2) = 0;
-int VECT_VAR (expected_cumulative_sat_mul, int, 16, 8) = 0;
-int VECT_VAR (expected_cumulative_sat_mul, int, 32, 4) = 0;
-
/* Expected results when multiplication saturates. */
VECT_VAR_DECL (expected_mul, int, 16, 4) [] = { 0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL (expected_mul, int, 32, 2) [] = { 0x0, 0x0 };
@@ -33,13 +20,6 @@ VECT_VAR_DECL (expected_mul, int, 16, 8) [] = { 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL (expected_mul, int, 32, 4) [] = { 0x0, 0x0, 0x0, 0x0 };
-/* Expected values of cumulative_saturation flag when rounding
- should not cause saturation. */
-int VECT_VAR (expected_cumulative_sat_round, int, 16, 4) = 0;
-int VECT_VAR (expected_cumulative_sat_round, int, 32, 2) = 0;
-int VECT_VAR (expected_cumulative_sat_round, int, 16, 8) = 0;
-int VECT_VAR (expected_cumulative_sat_round, int, 32, 4) = 0;
-
/* Expected results when rounding should not cause saturation. */
VECT_VAR_DECL (expected_round, int, 16, 4) [] = { 0xfffe, 0xfffe,
0xfffe, 0xfffe };
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh.c
index 91c3b34..280ae83 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh.c
@@ -5,12 +5,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR (expected_cumulative_sat, int, 16, 4) = 0;
-int VECT_VAR (expected_cumulative_sat, int, 32, 2) = 0;
-int VECT_VAR (expected_cumulative_sat, int, 16, 8) = 0;
-int VECT_VAR (expected_cumulative_sat, int, 32, 4) = 0;
-
/* Expected results. */
VECT_VAR_DECL (expected, int, 16, 4) [] = { 0xc70d, 0xc70e, 0xc70f, 0xc710 };
VECT_VAR_DECL (expected, int, 32, 2) [] = { 0xfffffff0, 0xfffffff1 };
@@ -19,13 +13,6 @@ VECT_VAR_DECL (expected, int, 16, 8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
VECT_VAR_DECL (expected, int, 32, 4) [] = { 0xfffffff0, 0xfffffff1,
0xfffffff2, 0xfffffff3 };
-/* Expected values of cumulative_saturation flag when multiplication
- saturates. */
-int VECT_VAR (expected_cumulative_sat_mul, int, 16, 4) = 1;
-int VECT_VAR (expected_cumulative_sat_mul, int, 32, 2) = 1;
-int VECT_VAR (expected_cumulative_sat_mul, int, 16, 8) = 1;
-int VECT_VAR (expected_cumulative_sat_mul, int, 32, 4) = 1;
-
/* Expected results when multiplication saturates. */
VECT_VAR_DECL (expected_mul, int, 16, 4) [] = { 0x8000, 0x8000,
0x8000, 0x8000 };
@@ -37,13 +24,6 @@ VECT_VAR_DECL (expected_mul, int, 16, 8) [] = { 0x8000, 0x8000,
VECT_VAR_DECL (expected_mul, int, 32, 4) [] = { 0x80000000, 0x80000000,
0x80000000, 0x80000000 };
-/* Expected values of cumulative_saturation flag when rounding
- should not cause saturation. */
-int VECT_VAR (expected_cumulative_sat_round, int, 16, 4) = 1;
-int VECT_VAR (expected_cumulative_sat_round, int, 32, 2) = 1;
-int VECT_VAR (expected_cumulative_sat_round, int, 16, 8) = 1;
-int VECT_VAR (expected_cumulative_sat_round, int, 32, 4) = 1;
-
/* Expected results when rounding should not cause saturation. */
VECT_VAR_DECL (expected_round, int, 16, 4) [] = { 0x8000, 0x8000,
0x8000, 0x8000 };
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh_lane.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh_lane.c
index 6010b42..0207e4d 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh_lane.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmlsh_lane.c
@@ -5,12 +5,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR (expected_cumulative_sat, int, 16, 4) = 0;
-int VECT_VAR (expected_cumulative_sat, int, 32, 2) = 0;
-int VECT_VAR (expected_cumulative_sat, int, 16, 8) = 0;
-int VECT_VAR (expected_cumulative_sat, int, 32, 4) = 0;
-
/* Expected results. */
VECT_VAR_DECL (expected, int, 16, 4) [] = { 0xc70d, 0xc70e, 0xc70f, 0xc710 };
VECT_VAR_DECL (expected, int, 32, 2) [] = { 0xfffffff0, 0xfffffff1 };
@@ -19,13 +13,6 @@ VECT_VAR_DECL (expected, int, 16, 8) [] = { 0xff73, 0xff74, 0xff75, 0xff76,
VECT_VAR_DECL (expected, int, 32, 4) [] = { 0xfffffff0, 0xfffffff1,
0xfffffff2, 0xfffffff3 };
-/* Expected values of cumulative_saturation flag when multiplication
- saturates. */
-int VECT_VAR (expected_cumulative_sat_mul, int, 16, 4) = 1;
-int VECT_VAR (expected_cumulative_sat_mul, int, 32, 2) = 1;
-int VECT_VAR (expected_cumulative_sat_mul, int, 16, 8) = 1;
-int VECT_VAR (expected_cumulative_sat_mul, int, 32, 4) = 1;
-
/* Expected results when multiplication saturates. */
VECT_VAR_DECL (expected_mul, int, 16, 4) [] = { 0x8000, 0x8000,
0x8000, 0x8000 };
@@ -37,13 +24,6 @@ VECT_VAR_DECL (expected_mul, int, 16, 8) [] = { 0x8000, 0x8000,
VECT_VAR_DECL (expected_mul, int, 32, 4) [] = { 0x80000000, 0x80000000,
0x80000000, 0x80000000 };
-/* Expected values of cumulative_saturation flag when rounding
- should not cause saturation. */
-int VECT_VAR (expected_cumulative_sat_round, int, 16, 4) = 1;
-int VECT_VAR (expected_cumulative_sat_round, int, 32, 2) = 1;
-int VECT_VAR (expected_cumulative_sat_round, int, 16, 8) = 1;
-int VECT_VAR (expected_cumulative_sat_round, int, 32, 4) = 1;
-
/* Expected results when rounding should not cause saturation. */
VECT_VAR_DECL (expected_round, int, 16, 4) [] = { 0x8000, 0x8000,
0x8000, 0x8000 };
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh.c
index 915594a..5f4403b 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh.c
@@ -2,25 +2,12 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff5, 0xfff6, 0xfff7, 0xfff7 };
VECT_VAR_DECL(expected,int,32,2) [] = { 0x0, 0x0 };
VECT_VAR_DECL(expected,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL(expected,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
-/* Expected values of cumulative_saturation flag when multiplication
- saturates. */
-int VECT_VAR(expected_cumulative_sat_mul,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_mul,int,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_mul,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_mul,int,32,4) = 1;
-
/* Expected results when multiplication saturates. */
VECT_VAR_DECL(expected_mul,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
VECT_VAR_DECL(expected_mul,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
@@ -29,13 +16,6 @@ VECT_VAR_DECL(expected_mul,int,16,8) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff,
VECT_VAR_DECL(expected_mul,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
0x7fffffff, 0x7fffffff };
-/* Expected values of cumulative_saturation flag when rounding
- should not cause saturation. */
-int VECT_VAR(expected_cumulative_sat_round,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_round,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_round,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_round,int,32,4) = 0;
-
/* Expected results when rounding should not cause saturation. */
VECT_VAR_DECL(expected_round,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
VECT_VAR_DECL(expected_round,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
@@ -53,21 +33,20 @@ VECT_VAR_DECL(expected_round,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
FNNAME (INSN)
{
/* vector_res = vqrdmulh(vector,vector2), then store the result. */
-#define TEST_VQRDMULH2(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQRDMULH2(INSN, Q, T1, T2, W, N, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \
VECT_VAR(vector_res, T1, W, N) = \
INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N), \
VECT_VAR(vector2, T1, W, N)); \
vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \
- VECT_VAR(vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W, N))
/* Two auxliary macros are necessary to expand INSN */
-#define TEST_VQRDMULH1(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQRDMULH2(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQRDMULH1(INSN, Q, T1, T2, W, N, CMT) \
+ TEST_VQRDMULH2(INSN, Q, T1, T2, W, N, CMT)
-#define TEST_VQRDMULH(Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQRDMULH1(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQRDMULH(Q, T1, T2, W, N, CMT) \
+ TEST_VQRDMULH1(INSN, Q, T1, T2, W, N, CMT)
DECL_VARIABLE(vector, int, 16, 4);
@@ -99,10 +78,10 @@ FNNAME (INSN)
VDUP(vector2, q, int, s, 32, 4, 0x22);
#define CMT ""
- TEST_VQRDMULH(, int, s, 16, 4, expected_cumulative_sat, CMT);
- TEST_VQRDMULH(, int, s, 32, 2, expected_cumulative_sat, CMT);
- TEST_VQRDMULH(q, int, s, 16, 8, expected_cumulative_sat, CMT);
- TEST_VQRDMULH(q, int, s, 32, 4, expected_cumulative_sat, CMT);
+ TEST_VQRDMULH(, int, s, 16, 4, CMT);
+ TEST_VQRDMULH(, int, s, 32, 2, CMT);
+ TEST_VQRDMULH(q, int, s, 16, 8, CMT);
+ TEST_VQRDMULH(q, int, s, 32, 4, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
@@ -121,10 +100,10 @@ FNNAME (INSN)
VDUP(vector2, q, int, s, 16, 8, 0x8000);
VDUP(vector2, q, int, s, 32, 4, 0x80000000);
- TEST_VQRDMULH(, int, s, 16, 4, expected_cumulative_sat_mul, TEST_MSG_MUL);
- TEST_VQRDMULH(, int, s, 32, 2, expected_cumulative_sat_mul, TEST_MSG_MUL);
- TEST_VQRDMULH(q, int, s, 16, 8, expected_cumulative_sat_mul, TEST_MSG_MUL);
- TEST_VQRDMULH(q, int, s, 32, 4, expected_cumulative_sat_mul, TEST_MSG_MUL);
+ TEST_VQRDMULH(, int, s, 16, 4, TEST_MSG_MUL);
+ TEST_VQRDMULH(, int, s, 32, 2, TEST_MSG_MUL);
+ TEST_VQRDMULH(q, int, s, 16, 8, TEST_MSG_MUL);
+ TEST_VQRDMULH(q, int, s, 32, 4, TEST_MSG_MUL);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_mul, TEST_MSG_MUL);
CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_mul, TEST_MSG_MUL);
@@ -143,10 +122,10 @@ FNNAME (INSN)
VDUP(vector2, q, int, s, 16, 8, 0x8001);
VDUP(vector2, q, int, s, 32, 4, 0x80000001);
- TEST_VQRDMULH(, int, s, 16, 4, expected_cumulative_sat_round, TEST_MSG_ROUND);
- TEST_VQRDMULH(, int, s, 32, 2, expected_cumulative_sat_round, TEST_MSG_ROUND);
- TEST_VQRDMULH(q, int, s, 16, 8, expected_cumulative_sat_round, TEST_MSG_ROUND);
- TEST_VQRDMULH(q, int, s, 32, 4, expected_cumulative_sat_round, TEST_MSG_ROUND);
+ TEST_VQRDMULH(, int, s, 16, 4, TEST_MSG_ROUND);
+ TEST_VQRDMULH(, int, s, 32, 2, TEST_MSG_ROUND);
+ TEST_VQRDMULH(q, int, s, 16, 8, TEST_MSG_ROUND);
+ TEST_VQRDMULH(q, int, s, 32, 4, TEST_MSG_ROUND);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_round, TEST_MSG_ROUND);
CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_round, TEST_MSG_ROUND);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_lane.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_lane.c
index 2235e74..02028cf 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_lane.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_lane.c
@@ -2,12 +2,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL(expected,int,32,2) [] = { 0x0, 0x0 };
@@ -15,13 +9,6 @@ VECT_VAR_DECL(expected,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL(expected,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
-/* Expected values of cumulative_saturation flag when multiplication
- saturates. */
-int VECT_VAR(expected_cumulative_sat_mul,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_mul,int,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_mul,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_mul,int,32,4) = 1;
-
/* Expected results when multiplication saturates. */
VECT_VAR_DECL(expected_mul,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
VECT_VAR_DECL(expected_mul,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
@@ -30,13 +17,6 @@ VECT_VAR_DECL(expected_mul,int,16,8) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff,
VECT_VAR_DECL(expected_mul,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
0x7fffffff, 0x7fffffff };
-/* Expected values of cumulative_saturation flag when rounding
- should not cause saturation. */
-int VECT_VAR(expected_cumulative_sat_round,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_round,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_round,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_round,int,32,4) = 0;
-
/* Expected results when rounding should not cause saturation. */
VECT_VAR_DECL(expected_round,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
VECT_VAR_DECL(expected_round,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
@@ -54,22 +34,21 @@ VECT_VAR_DECL(expected_round,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
FNNAME (INSN)
{
/* vector_res = vqrdmulh_lane(vector,vector2,lane), then store the result. */
-#define TEST_VQRDMULH_LANE2(INSN, Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQRDMULH_LANE2(INSN, Q, T1, T2, W, N, N2, L, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \
VECT_VAR(vector_res, T1, W, N) = \
INSN##Q##_lane_##T2##W(VECT_VAR(vector, T1, W, N), \
VECT_VAR(vector2, T1, W, N2), \
L); \
vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \
- VECT_VAR(vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W, N))
/* Two auxliary macros are necessary to expand INSN */
-#define TEST_VQRDMULH_LANE1(INSN, Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQRDMULH_LANE2(INSN, Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQRDMULH_LANE1(INSN, Q, T1, T2, W, N, N2, L, CMT) \
+ TEST_VQRDMULH_LANE2(INSN, Q, T1, T2, W, N, N2, L, CMT)
-#define TEST_VQRDMULH_LANE(Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQRDMULH_LANE1(INSN, Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQRDMULH_LANE(Q, T1, T2, W, N, N2, L, CMT) \
+ TEST_VQRDMULH_LANE1(INSN, Q, T1, T2, W, N, N2, L, CMT)
DECL_VARIABLE(vector, int, 16, 4);
@@ -102,10 +81,10 @@ FNNAME (INSN)
/* Choose lane arbitrarily. */
#define CMT ""
- TEST_VQRDMULH_LANE(, int, s, 16, 4, 4, 2, expected_cumulative_sat, CMT);
- TEST_VQRDMULH_LANE(, int, s, 32, 2, 2, 1, expected_cumulative_sat, CMT);
- TEST_VQRDMULH_LANE(q, int, s, 16, 8, 4, 3, expected_cumulative_sat, CMT);
- TEST_VQRDMULH_LANE(q, int, s, 32, 4, 2, 0, expected_cumulative_sat, CMT);
+ TEST_VQRDMULH_LANE(, int, s, 16, 4, 4, 2, CMT);
+ TEST_VQRDMULH_LANE(, int, s, 32, 2, 2, 1, CMT);
+ TEST_VQRDMULH_LANE(q, int, s, 16, 8, 4, 3, CMT);
+ TEST_VQRDMULH_LANE(q, int, s, 32, 4, 2, 0, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
@@ -122,14 +101,10 @@ FNNAME (INSN)
VDUP(vector2, , int, s, 16, 4, 0x8000);
VDUP(vector2, , int, s, 32, 2, 0x80000000);
- TEST_VQRDMULH_LANE(, int, s, 16, 4, 4, 2, expected_cumulative_sat_mul,
- TEST_MSG_MUL);
- TEST_VQRDMULH_LANE(, int, s, 32, 2, 2, 1, expected_cumulative_sat_mul,
- TEST_MSG_MUL);
- TEST_VQRDMULH_LANE(q, int, s, 16, 8, 4, 3, expected_cumulative_sat_mul,
- TEST_MSG_MUL);
- TEST_VQRDMULH_LANE(q, int, s, 32, 4, 2, 0, expected_cumulative_sat_mul,
- TEST_MSG_MUL);
+ TEST_VQRDMULH_LANE(, int, s, 16, 4, 4, 2, TEST_MSG_MUL);
+ TEST_VQRDMULH_LANE(, int, s, 32, 2, 2, 1, TEST_MSG_MUL);
+ TEST_VQRDMULH_LANE(q, int, s, 16, 8, 4, 3, TEST_MSG_MUL);
+ TEST_VQRDMULH_LANE(q, int, s, 32, 4, 2, 0, TEST_MSG_MUL);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_mul, TEST_MSG_MUL);
CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_mul, TEST_MSG_MUL);
@@ -146,14 +121,10 @@ FNNAME (INSN)
/* Use input values where rounding produces a result equal to the
saturation value, but does not set the saturation flag. */
#define TEST_MSG_ROUND " (check rounding)"
- TEST_VQRDMULH_LANE(, int, s, 16, 4, 4, 2, expected_cumulative_sat_round,
- TEST_MSG_ROUND);
- TEST_VQRDMULH_LANE(, int, s, 32, 2, 2, 1, expected_cumulative_sat_round,
- TEST_MSG_ROUND);
- TEST_VQRDMULH_LANE(q, int, s, 16, 8, 4, 3, expected_cumulative_sat_round,
- TEST_MSG_ROUND);
- TEST_VQRDMULH_LANE(q, int, s, 32, 4, 2, 0, expected_cumulative_sat_round,
- TEST_MSG_ROUND);
+ TEST_VQRDMULH_LANE(, int, s, 16, 4, 4, 2, TEST_MSG_ROUND);
+ TEST_VQRDMULH_LANE(, int, s, 32, 2, 2, 1, TEST_MSG_ROUND);
+ TEST_VQRDMULH_LANE(q, int, s, 16, 8, 4, 3, TEST_MSG_ROUND);
+ TEST_VQRDMULH_LANE(q, int, s, 32, 4, 2, 0, TEST_MSG_ROUND);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_round, TEST_MSG_ROUND);
CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_round, TEST_MSG_ROUND);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_n.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_n.c
index 7b43f71..fdcf7e4 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_n.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_n.c
@@ -2,12 +2,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,16,4) [] = { 0xfffc, 0xfffc, 0xfffc, 0xfffd };
VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffffe, 0xfffffffe };
@@ -16,13 +10,6 @@ VECT_VAR_DECL(expected,int,16,8) [] = { 0x6, 0x6, 0x6, 0x5,
VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffffe, 0xfffffffe,
0xfffffffe, 0xfffffffe };
-/* Expected values of cumulative_saturation flag when multiplication
- saturates. */
-int VECT_VAR(expected_cumulative_sat_mul,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_mul,int,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_mul,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_mul,int,32,4) = 1;
-
/* Expected results when multiplication saturates. */
VECT_VAR_DECL(expected_mul,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
VECT_VAR_DECL(expected_mul,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
@@ -31,13 +18,6 @@ VECT_VAR_DECL(expected_mul,int,16,8) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff,
VECT_VAR_DECL(expected_mul,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
0x7fffffff, 0x7fffffff };
-/* Expected values of cumulative_saturation flag when rounding
- should not cause saturation. */
-int VECT_VAR(expected_cumulative_sat_round,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_round,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_round,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_round,int,32,4) = 0;
-
/* Expected results when rounding should not cause saturation. */
VECT_VAR_DECL(expected_round,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
VECT_VAR_DECL(expected_round,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
@@ -57,21 +37,20 @@ FNNAME (INSN)
int i;
/* vector_res = vqrdmulh_n(vector,val), then store the result. */
-#define TEST_VQRDMULH_N2(INSN, Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQRDMULH_N2(INSN, Q, T1, T2, W, N, L, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \
VECT_VAR(vector_res, T1, W, N) = \
INSN##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N), \
L); \
vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \
- VECT_VAR(vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W, N))
/* Two auxliary macros are necessary to expand INSN */
-#define TEST_VQRDMULH_N1(INSN, Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQRDMULH_N2(INSN, Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQRDMULH_N1(INSN, Q, T1, T2, W, N, L, CMT) \
+ TEST_VQRDMULH_N2(INSN, Q, T1, T2, W, N, L, CMT)
-#define TEST_VQRDMULH_N(Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQRDMULH_N1(INSN, Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQRDMULH_N(Q, T1, T2, W, N, L, CMT) \
+ TEST_VQRDMULH_N1(INSN, Q, T1, T2, W, N, L, CMT)
DECL_VARIABLE(vector, int, 16, 4);
@@ -93,10 +72,10 @@ FNNAME (INSN)
/* Choose multiplier arbitrarily. */
#define CMT ""
- TEST_VQRDMULH_N(, int, s, 16, 4, 0x2233, expected_cumulative_sat, CMT);
- TEST_VQRDMULH_N(, int, s, 32, 2, 0x12345678, expected_cumulative_sat, CMT);
- TEST_VQRDMULH_N(q, int, s, 16, 8, 0xCD12, expected_cumulative_sat, CMT);
- TEST_VQRDMULH_N(q, int, s, 32, 4, 0xFA23456, expected_cumulative_sat, CMT);
+ TEST_VQRDMULH_N(, int, s, 16, 4, 0x2233, CMT);
+ TEST_VQRDMULH_N(, int, s, 32, 2, 0x12345678, CMT);
+ TEST_VQRDMULH_N(q, int, s, 16, 8, 0xCD12, CMT);
+ TEST_VQRDMULH_N(q, int, s, 32, 4, 0xFA23456, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
@@ -111,14 +90,10 @@ FNNAME (INSN)
VDUP(vector, q, int, s, 16, 8, 0x8000);
VDUP(vector, q, int, s, 32, 4, 0x80000000);
- TEST_VQRDMULH_N(, int, s, 16, 4, 0x8000, expected_cumulative_sat_mul,
- TEST_MSG_MUL);
- TEST_VQRDMULH_N(, int, s, 32, 2, 0x80000000, expected_cumulative_sat_mul,
- TEST_MSG_MUL);
- TEST_VQRDMULH_N(q, int, s, 16, 8, 0x8000, expected_cumulative_sat_mul,
- TEST_MSG_MUL);
- TEST_VQRDMULH_N(q, int, s, 32, 4, 0x80000000, expected_cumulative_sat_mul,
- TEST_MSG_MUL);
+ TEST_VQRDMULH_N(, int, s, 16, 4, 0x8000, TEST_MSG_MUL);
+ TEST_VQRDMULH_N(, int, s, 32, 2, 0x80000000, TEST_MSG_MUL);
+ TEST_VQRDMULH_N(q, int, s, 16, 8, 0x8000, TEST_MSG_MUL);
+ TEST_VQRDMULH_N(q, int, s, 32, 4, 0x80000000, TEST_MSG_MUL);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_mul, TEST_MSG_MUL);
CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_mul, TEST_MSG_MUL);
@@ -133,14 +108,10 @@ FNNAME (INSN)
VDUP(vector, q, int, s, 16, 8, 0x8000);
VDUP(vector, q, int, s, 32, 4, 0x80000000);
- TEST_VQRDMULH_N(, int, s, 16, 4, 0x8001, expected_cumulative_sat_round,
- TEST_MSG_ROUND);
- TEST_VQRDMULH_N(, int, s, 32, 2, 0x80000001, expected_cumulative_sat_round,
- TEST_MSG_ROUND);
- TEST_VQRDMULH_N(q, int, s, 16, 8, 0x8001, expected_cumulative_sat_round,
- TEST_MSG_ROUND);
- TEST_VQRDMULH_N(q, int, s, 32, 4, 0x80000001, expected_cumulative_sat_round,
- TEST_MSG_ROUND);
+ TEST_VQRDMULH_N(, int, s, 16, 4, 0x8001, TEST_MSG_ROUND);
+ TEST_VQRDMULH_N(, int, s, 32, 2, 0x80000001, TEST_MSG_ROUND);
+ TEST_VQRDMULH_N(q, int, s, 16, 8, 0x8001, TEST_MSG_ROUND);
+ TEST_VQRDMULH_N(q, int, s, 32, 4, 0x80000001, TEST_MSG_ROUND);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_round, TEST_MSG_ROUND);
CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_round, TEST_MSG_ROUND);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshl.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshl.c
index 0e194fa..f88b2fa 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshl.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshl.c
@@ -2,24 +2,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag with input=0. */
-int VECT_VAR(expected_cumulative_sat_0,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_0,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_0,uint,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0,uint,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0,uint,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_0,uint,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_0,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_0,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat_0,uint,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_0,uint,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0,uint,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0,uint,64,2) = 0;
-
/* Expected results with input=0. */
VECT_VAR_DECL(expected_0,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0 };
@@ -48,25 +30,6 @@ VECT_VAR_DECL(expected_0,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
VECT_VAR_DECL(expected_0,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL(expected_0,uint,64,2) [] = { 0x0, 0x0 };
-/* Expected values of cumulative_saturation flag with input=0 and
- negative shift amount. */
-int VECT_VAR(expected_cumulative_sat_0_neg,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,uint,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,uint,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,uint,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,uint,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,uint,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,uint,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,uint,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,uint,64,2) = 0;
-
/* Expected results with input=0 and negative shift amount. */
VECT_VAR_DECL(expected_0_neg,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0 };
@@ -95,24 +58,6 @@ VECT_VAR_DECL(expected_0_neg,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
VECT_VAR_DECL(expected_0_neg,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL(expected_0_neg,uint,64,2) [] = { 0x0, 0x0 };
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat,int,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat,int,64,2) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,64,2) = 1;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,8,8) [] = { 0xe0, 0xe2, 0xe4, 0xe6,
0xe8, 0xea, 0xec, 0xee };
@@ -144,25 +89,6 @@ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0xffffffff,
VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffffff,
0xffffffffffffffff };
-/* Expected values of cumulative_saturation flag with negative shift
- amount. */
-int VECT_VAR(expected_cumulative_sat_neg,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,uint,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,uint,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,uint,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,uint,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,uint,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,uint,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,uint,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,uint,64,2) = 0;
-
/* Expected results with negative shift amount. */
VECT_VAR_DECL(expected_neg,int,8,8) [] = { 0xfc, 0xfc, 0xfd, 0xfd,
0xfd, 0xfd, 0xfe, 0xfe };
@@ -192,25 +118,6 @@ VECT_VAR_DECL(expected_neg,uint,32,4) [] = { 0x80000, 0x80000,
0x80000, 0x80000 };
VECT_VAR_DECL(expected_neg,uint,64,2) [] = { 0x100000000000, 0x100000000000 };
-/* Expected values of cumulative_saturation flag with input=max and
- shift by -1. */
-int VECT_VAR(expected_cumulative_sat_minus1,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_minus1,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_minus1,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_minus1,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_minus1,uint,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_minus1,uint,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_minus1,uint,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_minus1,uint,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_minus1,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_minus1,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_minus1,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_minus1,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat_minus1,uint,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_minus1,uint,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_minus1,uint,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_minus1,uint,64,2) = 0;
-
/* Expected results with input=max and shift by -1. */
VECT_VAR_DECL(expected_minus1,int,8,8) [] = { 0x40, 0x40, 0x40, 0x40,
0x40, 0x40, 0x40, 0x40 };
@@ -243,25 +150,6 @@ VECT_VAR_DECL(expected_minus1,uint,32,4) [] = { 0x80000000, 0x80000000,
VECT_VAR_DECL(expected_minus1,uint,64,2) [] = { 0x8000000000000000,
0x8000000000000000 };
-/* Expected values of cumulative_saturation flag with input=max and
- shift by -3. */
-int VECT_VAR(expected_cumulative_sat_minus3,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_minus3,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_minus3,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_minus3,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_minus3,uint,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_minus3,uint,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_minus3,uint,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_minus3,uint,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_minus3,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_minus3,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_minus3,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_minus3,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat_minus3,uint,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_minus3,uint,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_minus3,uint,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_minus3,uint,64,2) = 0;
-
/* Expected results with input=max and shift by -3. */
VECT_VAR_DECL(expected_minus3,int,8,8) [] = { 0x10, 0x10, 0x10, 0x10,
0x10, 0x10, 0x10, 0x10 };
@@ -294,25 +182,6 @@ VECT_VAR_DECL(expected_minus3,uint,32,4) [] = { 0x20000000, 0x20000000,
VECT_VAR_DECL(expected_minus3,uint,64,2) [] = { 0x2000000000000000,
0x2000000000000000 };
-/* Expected values of cumulative_saturation flag with input=max and
- large shift amount. */
-int VECT_VAR(expected_cumulative_sat_large_sh,int,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat_large_sh,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_large_sh,int,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_large_sh,int,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_large_sh,uint,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat_large_sh,uint,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_large_sh,uint,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_large_sh,uint,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_large_sh,int,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat_large_sh,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_large_sh,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_large_sh,int,64,2) = 1;
-int VECT_VAR(expected_cumulative_sat_large_sh,uint,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat_large_sh,uint,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_large_sh,uint,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_large_sh,uint,64,2) = 1;
-
/* Expected results with input=max and large shift amount. */
VECT_VAR_DECL(expected_large_sh,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
0x7f, 0x7f, 0x7f, 0x7f };
@@ -351,25 +220,6 @@ VECT_VAR_DECL(expected_large_sh,uint,32,4) [] = { 0xffffffff, 0xffffffff,
VECT_VAR_DECL(expected_large_sh,uint,64,2) [] = { 0xffffffffffffffff,
0xffffffffffffffff };
-/* Expected values of cumulative_saturation flag with negative input and
- large shift amount. */
-int VECT_VAR(expected_cumulative_sat_neg_large_sh,int,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large_sh,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large_sh,int,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large_sh,int,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large_sh,uint,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large_sh,uint,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large_sh,uint,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large_sh,uint,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large_sh,int,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large_sh,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large_sh,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large_sh,int,64,2) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large_sh,uint,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large_sh,uint,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large_sh,uint,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large_sh,uint,64,2) = 1;
-
/* Expected results with negative input and large shift amount. */
VECT_VAR_DECL(expected_neg_large_sh,int,8,8) [] = { 0x80, 0x80, 0x80, 0x80,
0x80, 0x80, 0x80, 0x80 };
@@ -411,25 +261,6 @@ VECT_VAR_DECL(expected_neg_large_sh,uint,32,4) [] = { 0xffffffff,
VECT_VAR_DECL(expected_neg_large_sh,uint,64,2) [] = { 0xffffffffffffffff,
0xffffffffffffffff };
-/* Expected values of cumulative_saturation flag with max/min input and
- large negative shift amount. */
-int VECT_VAR(expected_cumulative_sat_large_neg_sh,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_large_neg_sh,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_large_neg_sh,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_large_neg_sh,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_large_neg_sh,uint,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_large_neg_sh,uint,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_large_neg_sh,uint,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_large_neg_sh,uint,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_large_neg_sh,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_large_neg_sh,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_large_neg_sh,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_large_neg_sh,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat_large_neg_sh,uint,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_large_neg_sh,uint,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_large_neg_sh,uint,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_large_neg_sh,uint,64,2) = 0;
-
/* Expected results with max/min input and large negative shift amount. */
VECT_VAR_DECL(expected_large_neg_sh,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0 };
@@ -458,25 +289,6 @@ VECT_VAR_DECL(expected_large_neg_sh,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
VECT_VAR_DECL(expected_large_neg_sh,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL(expected_large_neg_sh,uint,64,2) [] = { 0x0, 0x0 };
-/* Expected values of cumulative_saturation flag with input=0 and
- large negative shift amount. */
-int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,uint,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,uint,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,uint,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,uint,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,uint,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,uint,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,uint,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,uint,64,2) = 0;
-
/* Expected results with input=0 and large negative shift amount. */
VECT_VAR_DECL(expected_0_large_neg_sh,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0 };
@@ -514,21 +326,20 @@ VECT_VAR_DECL(expected_0_large_neg_sh,uint,64,2) [] = { 0x0, 0x0 };
FNNAME (INSN)
{
/* Basic test: v3=vqrshl(v1,v2), then store the result. */
-#define TEST_VQRSHL2(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQRSHL2(INSN, T3, Q, T1, T2, W, N, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \
VECT_VAR(vector_res, T1, W, N) = \
INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N), \
VECT_VAR(vector_shift, T3, W, N)); \
vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \
- VECT_VAR(vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W, N))
/* Two auxliary macros are necessary to expand INSN */
-#define TEST_VQRSHL1(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQRSHL2(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQRSHL1(INSN, T3, Q, T1, T2, W, N, CMT) \
+ TEST_VQRSHL2(INSN, T3, Q, T1, T2, W, N, CMT)
-#define TEST_VQRSHL(T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQRSHL1(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQRSHL(T3, Q, T1, T2, W, N, CMT) \
+ TEST_VQRSHL1(INSN, T3, Q, T1, T2, W, N, CMT)
DECL_VARIABLE_ALL_VARIANTS(vector);
DECL_VARIABLE_ALL_VARIANTS(vector_res);
@@ -568,22 +379,22 @@ FNNAME (INSN)
VDUP(vector_shift, q, int, s, 64, 2, 64);
#define CMT " (with input = 0)"
- TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_0, CMT);
- TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_0, CMT);
- TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_0, CMT);
- TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_0, CMT);
- TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_0, CMT);
- TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_0, CMT);
- TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_0, CMT);
- TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_0, CMT);
- TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_0, CMT);
- TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_0, CMT);
- TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_0, CMT);
- TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_0, CMT);
- TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_0, CMT);
- TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_0, CMT);
- TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_0, CMT);
- TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_0, CMT);
+ TEST_VQRSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQRSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQRSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQRSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQRSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQRSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQRSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQRSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQRSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQRSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQRSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQRSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQRSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQRSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQRSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQRSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_0, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_0, CMT);
@@ -615,22 +426,22 @@ FNNAME (INSN)
#undef CMT
#define CMT " (input 0 and negative shift amount)"
- TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_0_neg, CMT);
- TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_0_neg, CMT);
- TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_0_neg, CMT);
- TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_0_neg, CMT);
- TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_0_neg, CMT);
- TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_0_neg, CMT);
- TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_0_neg, CMT);
- TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_0_neg, CMT);
- TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_0_neg, CMT);
- TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_0_neg, CMT);
- TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_0_neg, CMT);
- TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_0_neg, CMT);
- TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_0_neg, CMT);
- TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_0_neg, CMT);
- TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_0_neg, CMT);
- TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_0_neg, CMT);
+ TEST_VQRSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQRSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQRSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQRSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQRSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQRSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQRSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQRSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQRSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQRSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQRSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQRSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQRSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQRSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQRSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQRSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_0_neg, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_0_neg, CMT);
@@ -665,22 +476,22 @@ FNNAME (INSN)
#undef CMT
#define CMT ""
- TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat, CMT);
- TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat, CMT);
- TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat, CMT);
- TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat, CMT);
- TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat, CMT);
- TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat, CMT);
- TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat, CMT);
- TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat, CMT);
- TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat, CMT);
- TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat, CMT);
- TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat, CMT);
- TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat, CMT);
- TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat, CMT);
- TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat, CMT);
- TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat, CMT);
- TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat, CMT);
+ TEST_VQRSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQRSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQRSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQRSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQRSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQRSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQRSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQRSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQRSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQRSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQRSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQRSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQRSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQRSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQRSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQRSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
@@ -712,22 +523,22 @@ FNNAME (INSN)
#undef CMT
#define CMT " (negative shift amount)"
- TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_neg, CMT);
+ TEST_VQRSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQRSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQRSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQRSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQRSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQRSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQRSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQRSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQRSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQRSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQRSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQRSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQRSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQRSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQRSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQRSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_neg, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_neg, CMT);
@@ -779,22 +590,22 @@ FNNAME (INSN)
#undef CMT
#define CMT " (checking cumulative saturation: shift by -1)"
- TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_minus1, CMT);
- TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_minus1, CMT);
- TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_minus1, CMT);
- TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_minus1, CMT);
- TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_minus1, CMT);
- TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_minus1, CMT);
- TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_minus1, CMT);
- TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_minus1, CMT);
- TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_minus1, CMT);
- TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_minus1, CMT);
- TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_minus1, CMT);
- TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_minus1, CMT);
- TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_minus1, CMT);
- TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_minus1, CMT);
- TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_minus1, CMT);
- TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_minus1, CMT);
+ TEST_VQRSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQRSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQRSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQRSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQRSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQRSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQRSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQRSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQRSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQRSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQRSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQRSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQRSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQRSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQRSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQRSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_minus1, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_minus1, CMT);
@@ -827,22 +638,22 @@ FNNAME (INSN)
#undef CMT
#define CMT " (checking cumulative saturation: shift by -3)"
- TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_minus3, CMT);
- TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_minus3, CMT);
- TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_minus3, CMT);
- TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_minus3, CMT);
- TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_minus3, CMT);
- TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_minus3, CMT);
- TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_minus3, CMT);
- TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_minus3, CMT);
- TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_minus3, CMT);
- TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_minus3, CMT);
- TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_minus3, CMT);
- TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_minus3, CMT);
- TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_minus3, CMT);
- TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_minus3, CMT);
- TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_minus3, CMT);
- TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_minus3, CMT);
+ TEST_VQRSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQRSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQRSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQRSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQRSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQRSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQRSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQRSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQRSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQRSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQRSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQRSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQRSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQRSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQRSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQRSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_minus3, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_minus3, CMT);
@@ -874,22 +685,22 @@ FNNAME (INSN)
#undef CMT
#define CMT " (checking cumulative saturation: large shift amount)"
- TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_large_sh, CMT);
- TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_large_sh, CMT);
- TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_large_sh, CMT);
- TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_large_sh, CMT);
- TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_large_sh, CMT);
- TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_large_sh, CMT);
- TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_large_sh, CMT);
- TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_large_sh, CMT);
- TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_large_sh, CMT);
- TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_large_sh, CMT);
- TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_large_sh, CMT);
- TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_large_sh, CMT);
- TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_large_sh, CMT);
- TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_large_sh, CMT);
- TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_large_sh, CMT);
- TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_large_sh, CMT);
+ TEST_VQRSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQRSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQRSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQRSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQRSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQRSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQRSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQRSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQRSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQRSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQRSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQRSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQRSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQRSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQRSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQRSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_large_sh, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_large_sh, CMT);
@@ -932,22 +743,22 @@ FNNAME (INSN)
#undef CMT
#define CMT " (checking cumulative saturation: large shift amount with negative input)"
- TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_neg_large_sh, CMT);
- TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_neg_large_sh, CMT);
- TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_neg_large_sh, CMT);
- TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_neg_large_sh, CMT);
- TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_neg_large_sh, CMT);
- TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_neg_large_sh, CMT);
- TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_neg_large_sh, CMT);
- TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_neg_large_sh, CMT);
- TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_neg_large_sh, CMT);
- TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_neg_large_sh, CMT);
- TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_neg_large_sh, CMT);
- TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_neg_large_sh, CMT);
- TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_neg_large_sh, CMT);
- TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_neg_large_sh, CMT);
- TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_neg_large_sh, CMT);
- TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_neg_large_sh, CMT);
+ TEST_VQRSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQRSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQRSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQRSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQRSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQRSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQRSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQRSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQRSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQRSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQRSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQRSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQRSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQRSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQRSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQRSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_neg_large_sh, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_neg_large_sh, CMT);
@@ -990,22 +801,22 @@ FNNAME (INSN)
#undef CMT
#define CMT " (checking cumulative saturation: large negative shift amount)"
- TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_large_neg_sh, CMT);
+ TEST_VQRSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQRSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQRSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQRSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQRSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQRSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQRSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQRSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQRSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQRSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQRSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQRSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQRSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQRSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQRSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQRSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_large_neg_sh, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_large_neg_sh, CMT);
@@ -1048,22 +859,22 @@ FNNAME (INSN)
#undef CMT
#define CMT " (checking cumulative saturation: large negative shift amount with 0 input)"
- TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_large_neg_sh, CMT);
- TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_large_neg_sh, CMT);
+ TEST_VQRSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQRSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQRSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQRSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQRSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQRSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQRSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQRSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQRSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQRSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQRSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQRSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQRSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQRSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQRSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQRSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_large_neg_sh, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_large_neg_sh, CMT);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrn_n.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrn_n.c
index 7bbcb85..6cf23d4 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrn_n.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrn_n.c
@@ -2,14 +2,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,64,2) = 1;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,8,8) [] = { 0xf8, 0xf9, 0xf9, 0xfa,
0xfa, 0xfb, 0xfb, 0xfc };
@@ -20,14 +12,6 @@ VECT_VAR_DECL(expected,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0xffffffff };
-/* Expected values of cumulative_saturation flag with shift by 3. */
-int VECT_VAR(expected_cumulative_sat_sh3,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_sh3,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_sh3,int,64,2) = 1;
-int VECT_VAR(expected_cumulative_sat_sh3,uint,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_sh3,uint,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_sh3,uint,64,2) = 1;
-
/* Expected results with shift by 3. */
VECT_VAR_DECL(expected_sh3,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
0x7f, 0x7f, 0x7f, 0x7f };
@@ -38,15 +22,6 @@ VECT_VAR_DECL(expected_sh3,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
VECT_VAR_DECL(expected_sh3,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
VECT_VAR_DECL(expected_sh3,uint,32,2) [] = { 0xffffffff, 0xffffffff };
-/* Expected values of cumulative_saturation flag with shift by max
- amount. */
-int VECT_VAR(expected_cumulative_sat_shmax,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_shmax,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_shmax,int,64,2) = 1;
-int VECT_VAR(expected_cumulative_sat_shmax,uint,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_shmax,uint,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_shmax,uint,64,2) = 1;
-
/* Expected results with shift by max amount. */
VECT_VAR_DECL(expected_shmax,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
0x7f, 0x7f, 0x7f, 0x7f };
@@ -66,21 +41,20 @@ VECT_VAR_DECL(expected_shmax,uint,32,2) [] = { 0xffffffff, 0xffffffff };
FNNAME (INSN)
{
/* Basic test: y=vqrshrn_n(x,v), then store the result. */
-#define TEST_VQRSHRN_N2(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQRSHRN_N2(INSN, T1, T2, W, W2, N, V, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W2, N)); \
VECT_VAR(vector_res, T1, W2, N) = \
INSN##_##T2##W(VECT_VAR(vector, T1, W, N), \
V); \
vst1_##T2##W2(VECT_VAR(result, T1, W2, N), \
- VECT_VAR(vector_res, T1, W2, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W2, N))
/* Two auxliary macros are necessary to expand INSN */
-#define TEST_VQRSHRN_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQRSHRN_N2(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQRSHRN_N1(INSN, T1, T2, W, W2, N, V, CMT) \
+ TEST_VQRSHRN_N2(INSN, T1, T2, W, W2, N, V, CMT)
-#define TEST_VQRSHRN_N(T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQRSHRN_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQRSHRN_N(T1, T2, W, W2, N, V, CMT) \
+ TEST_VQRSHRN_N1(INSN, T1, T2, W, W2, N, V, CMT)
/* vector is twice as large as vector_res. */
@@ -109,12 +83,12 @@ FNNAME (INSN)
/* Choose shift amount arbitrarily. */
#define CMT ""
- TEST_VQRSHRN_N(int, s, 16, 8, 8, 1, expected_cumulative_sat, CMT);
- TEST_VQRSHRN_N(int, s, 32, 16, 4, 1, expected_cumulative_sat, CMT);
- TEST_VQRSHRN_N(int, s, 64, 32, 2, 2, expected_cumulative_sat, CMT);
- TEST_VQRSHRN_N(uint, u, 16, 8, 8, 2, expected_cumulative_sat, CMT);
- TEST_VQRSHRN_N(uint, u, 32, 16, 4, 3, expected_cumulative_sat, CMT);
- TEST_VQRSHRN_N(uint, u, 64, 32, 2, 3, expected_cumulative_sat, CMT);
+ TEST_VQRSHRN_N(int, s, 16, 8, 8, 1, CMT);
+ TEST_VQRSHRN_N(int, s, 32, 16, 4, 1, CMT);
+ TEST_VQRSHRN_N(int, s, 64, 32, 2, 2, CMT);
+ TEST_VQRSHRN_N(uint, u, 16, 8, 8, 2, CMT);
+ TEST_VQRSHRN_N(uint, u, 32, 16, 4, 3, CMT);
+ TEST_VQRSHRN_N(uint, u, 64, 32, 2, 3, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
@@ -134,12 +108,12 @@ FNNAME (INSN)
#undef CMT
#define CMT " (check saturation: shift by 3)"
- TEST_VQRSHRN_N(int, s, 16, 8, 8, 3, expected_cumulative_sat_sh3, CMT);
- TEST_VQRSHRN_N(int, s, 32, 16, 4, 3, expected_cumulative_sat_sh3, CMT);
- TEST_VQRSHRN_N(int, s, 64, 32, 2, 3, expected_cumulative_sat_sh3, CMT);
- TEST_VQRSHRN_N(uint, u, 16, 8, 8, 3, expected_cumulative_sat_sh3, CMT);
- TEST_VQRSHRN_N(uint, u, 32, 16, 4, 3, expected_cumulative_sat_sh3, CMT);
- TEST_VQRSHRN_N(uint, u, 64, 32, 2, 3, expected_cumulative_sat_sh3, CMT);
+ TEST_VQRSHRN_N(int, s, 16, 8, 8, 3, CMT);
+ TEST_VQRSHRN_N(int, s, 32, 16, 4, 3, CMT);
+ TEST_VQRSHRN_N(int, s, 64, 32, 2, 3, CMT);
+ TEST_VQRSHRN_N(uint, u, 16, 8, 8, 3, CMT);
+ TEST_VQRSHRN_N(uint, u, 32, 16, 4, 3, CMT);
+ TEST_VQRSHRN_N(uint, u, 64, 32, 2, 3, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_sh3, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_sh3, CMT);
@@ -152,12 +126,12 @@ FNNAME (INSN)
/* Shift by max amount. */
#undef CMT
#define CMT " (check saturation: shift by max)"
- TEST_VQRSHRN_N(int, s, 16, 8, 8, 8, expected_cumulative_sat_shmax, CMT);
- TEST_VQRSHRN_N(int, s, 32, 16, 4, 16, expected_cumulative_sat_shmax, CMT);
- TEST_VQRSHRN_N(int, s, 64, 32, 2, 32, expected_cumulative_sat_shmax, CMT);
- TEST_VQRSHRN_N(uint, u, 16, 8, 8, 8, expected_cumulative_sat_shmax, CMT);
- TEST_VQRSHRN_N(uint, u, 32, 16, 4, 16, expected_cumulative_sat_shmax, CMT);
- TEST_VQRSHRN_N(uint, u, 64, 32, 2, 32, expected_cumulative_sat_shmax, CMT);
+ TEST_VQRSHRN_N(int, s, 16, 8, 8, 8, CMT);
+ TEST_VQRSHRN_N(int, s, 32, 16, 4, 16, CMT);
+ TEST_VQRSHRN_N(int, s, 64, 32, 2, 32, CMT);
+ TEST_VQRSHRN_N(uint, u, 16, 8, 8, 8, CMT);
+ TEST_VQRSHRN_N(uint, u, 32, 16, 4, 16, CMT);
+ TEST_VQRSHRN_N(uint, u, 64, 32, 2, 32, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_shmax, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_shmax, CMT);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrun_n.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrun_n.c
index f5e431e..5d4c493 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrun_n.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrun_n.c
@@ -2,23 +2,12 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag with negative unput. */
-int VECT_VAR(expected_cumulative_sat_neg,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,int,64,2) = 1;
-
/* Expected results with negative input. */
VECT_VAR_DECL(expected_neg,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL(expected_neg,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL(expected_neg,uint,32,2) [] = { 0x0, 0x0 };
-/* Expected values of cumulative_saturation flag with max input value
- shifted by 1. */
-int VECT_VAR(expected_cumulative_sat_max_sh1,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_max_sh1,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_max_sh1,int,64,2) = 1;
-
/* Expected results with max input value shifted by 1. */
VECT_VAR_DECL(expected_max_sh1,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff };
@@ -27,12 +16,6 @@ VECT_VAR_DECL(expected_max_sh1,uint,16,4) [] = { 0xffff, 0xffff,
VECT_VAR_DECL(expected_max_sh1,uint,32,2) [] = { 0xffffffff, 0xffffffff };
VECT_VAR_DECL(expected_max_sh1,uint,64,1) [] = { 0x3333333333333333 };
-/* Expected values of cumulative_saturation flag with max input value
- shifted by max amount. */
-int VECT_VAR(expected_cumulative_sat_max_shmax,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_max_shmax,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_max_shmax,int,64,2) = 0;
-
/* Expected results with max input value shifted by max amount. */
VECT_VAR_DECL(expected_max_shmax,uint,8,8) [] = { 0x80, 0x80, 0x80, 0x80,
0x80, 0x80, 0x80, 0x80 };
@@ -40,24 +23,12 @@ VECT_VAR_DECL(expected_max_shmax,uint,16,4) [] = { 0x8000, 0x8000,
0x8000, 0x8000 };
VECT_VAR_DECL(expected_max_shmax,uint,32,2) [] = { 0x80000000, 0x80000000 };
-/* Expected values of cumulative_saturation flag with min input value
- shifted by max amount. */
-int VECT_VAR(expected_cumulative_sat_min_shmax,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_min_shmax,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_min_shmax,int,64,2) = 1;
-
/* Expected results with min input value shifted by max amount. */
VECT_VAR_DECL(expected_min_shmax,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL(expected_min_shmax,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL(expected_min_shmax,uint,32,2) [] = { 0x0, 0x0 };
-/* Expected values of cumulative_saturation flag with inputs in usual
- range. */
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
-
/* Expected results with inputs in usual range. */
VECT_VAR_DECL(expected,uint,8,8) [] = { 0x49, 0x49, 0x49, 0x49,
0x49, 0x49, 0x49, 0x49 };
@@ -73,21 +44,20 @@ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xdeadbf, 0xdeadbf };
FNNAME (INSN)
{
/* Basic test: y=vqrshrun_n(x,v), then store the result. */
-#define TEST_VQRSHRUN_N2(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQRSHRUN_N2(INSN, T1, T2, W, W2, N, V, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, uint, W2, N)); \
VECT_VAR(vector_res, uint, W2, N) = \
INSN##_##T2##W(VECT_VAR(vector, T1, W, N), \
V); \
vst1_u##W2(VECT_VAR(result, uint, W2, N), \
- VECT_VAR(vector_res, uint, W2, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, uint, W2, N))
/* Two auxliary macros are necessary to expand INSN */
-#define TEST_VQRSHRUN_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQRSHRUN_N2(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQRSHRUN_N1(INSN, T1, T2, W, W2, N, V, CMT) \
+ TEST_VQRSHRUN_N2(INSN, T1, T2, W, W2, N, V, CMT)
-#define TEST_VQRSHRUN_N(T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQRSHRUN_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQRSHRUN_N(T1, T2, W, W2, N, V, CMT) \
+ TEST_VQRSHRUN_N1(INSN, T1, T2, W, W2, N, V, CMT)
/* vector is twice as large as vector_res. */
@@ -109,9 +79,9 @@ FNNAME (INSN)
/* Choose shift amount arbitrarily. */
#define CMT " (negative input)"
- TEST_VQRSHRUN_N(int, s, 16, 8, 8, 3, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHRUN_N(int, s, 32, 16, 4, 4, expected_cumulative_sat_neg, CMT);
- TEST_VQRSHRUN_N(int, s, 64, 32, 2, 2, expected_cumulative_sat_neg, CMT);
+ TEST_VQRSHRUN_N(int, s, 16, 8, 8, 3, CMT);
+ TEST_VQRSHRUN_N(int, s, 32, 16, 4, 4, CMT);
+ TEST_VQRSHRUN_N(int, s, 64, 32, 2, 2, CMT);
CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_neg, CMT);
CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_neg, CMT);
@@ -127,9 +97,9 @@ FNNAME (INSN)
/* shift by 1. */
#undef CMT
#define CMT " (check cumulative saturation: shift by 1)"
- TEST_VQRSHRUN_N(int, s, 16, 8, 8, 1, expected_cumulative_sat_max_sh1, CMT);
- TEST_VQRSHRUN_N(int, s, 32, 16, 4, 1, expected_cumulative_sat_max_sh1, CMT);
- TEST_VQRSHRUN_N(int, s, 64, 32, 2, 1, expected_cumulative_sat_max_sh1, CMT);
+ TEST_VQRSHRUN_N(int, s, 16, 8, 8, 1, CMT);
+ TEST_VQRSHRUN_N(int, s, 32, 16, 4, 1, CMT);
+ TEST_VQRSHRUN_N(int, s, 64, 32, 2, 1, CMT);
CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_sh1, CMT);
CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_sh1, CMT);
@@ -139,9 +109,9 @@ FNNAME (INSN)
/* shift by max. */
#undef CMT
#define CMT " (check cumulative saturation: shift by max, positive input)"
- TEST_VQRSHRUN_N(int, s, 16, 8, 8, 8, expected_cumulative_sat_max_shmax, CMT);
- TEST_VQRSHRUN_N(int, s, 32, 16, 4, 16, expected_cumulative_sat_max_shmax, CMT);
- TEST_VQRSHRUN_N(int, s, 64, 32, 2, 32, expected_cumulative_sat_max_shmax, CMT);
+ TEST_VQRSHRUN_N(int, s, 16, 8, 8, 8, CMT);
+ TEST_VQRSHRUN_N(int, s, 32, 16, 4, 16, CMT);
+ TEST_VQRSHRUN_N(int, s, 64, 32, 2, 32, CMT);
CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_shmax, CMT);
CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_shmax, CMT);
@@ -156,9 +126,9 @@ FNNAME (INSN)
/* shift by max */
#undef CMT
#define CMT " (check cumulative saturation: shift by max, negative input)"
- TEST_VQRSHRUN_N(int, s, 16, 8, 8, 8, expected_cumulative_sat_min_shmax, CMT);
- TEST_VQRSHRUN_N(int, s, 32, 16, 4, 16, expected_cumulative_sat_min_shmax, CMT);
- TEST_VQRSHRUN_N(int, s, 64, 32, 2, 32, expected_cumulative_sat_min_shmax, CMT);
+ TEST_VQRSHRUN_N(int, s, 16, 8, 8, 8, CMT);
+ TEST_VQRSHRUN_N(int, s, 32, 16, 4, 16, CMT);
+ TEST_VQRSHRUN_N(int, s, 64, 32, 2, 32, CMT);
CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_min_shmax, CMT);
CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_min_shmax, CMT);
@@ -173,9 +143,9 @@ FNNAME (INSN)
/* shift arbitrary amount. */
#undef CMT
#define CMT ""
- TEST_VQRSHRUN_N(int, s, 16, 8, 8, 6, expected_cumulative_sat, CMT);
- TEST_VQRSHRUN_N(int, s, 32, 16, 4, 7, expected_cumulative_sat, CMT);
- TEST_VQRSHRUN_N(int, s, 64, 32, 2, 8, expected_cumulative_sat, CMT);
+ TEST_VQRSHRUN_N(int, s, 16, 8, 8, 6, CMT);
+ TEST_VQRSHRUN_N(int, s, 32, 16, 4, 7, CMT);
+ TEST_VQRSHRUN_N(int, s, 64, 32, 2, 8, CMT);
CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshl.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshl.c
index 5999b12..7bf20d4 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshl.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshl.c
@@ -2,23 +2,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag with input=0. */
-int VECT_VAR(expected_cumulative_sat_0,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_0,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_0,uint,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0,uint,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0,uint,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_0,uint,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_0,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_0,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat_0,uint,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_0,uint,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0,uint,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0,uint,64,2) = 0;
/* Expected results with input=0. */
VECT_VAR_DECL(expected_0,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
@@ -48,25 +31,6 @@ VECT_VAR_DECL(expected_0,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
VECT_VAR_DECL(expected_0,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL(expected_0,uint,64,2) [] = { 0x0, 0x0 };
-/* Expected values of cumulative_saturation flag with input=0 and
- negative shift amount. */
-int VECT_VAR(expected_cumulative_sat_0_neg,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,uint,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,uint,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,uint,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,uint,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,uint,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,uint,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,uint,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_0_neg,uint,64,2) = 0;
-
/* Expected results with input=0 and negative shift amount. */
VECT_VAR_DECL(expected_0_neg,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0 };
@@ -95,24 +59,6 @@ VECT_VAR_DECL(expected_0_neg,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
VECT_VAR_DECL(expected_0_neg,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL(expected_0_neg,uint,64,2) [] = { 0x0, 0x0 };
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat,int,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat,int,64,2) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,64,2) = 1;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,8,8) [] = { 0xe0, 0xe2, 0xe4, 0xe6,
0xe8, 0xea, 0xec, 0xee };
@@ -145,25 +91,6 @@ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0xffffffff,
VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffffff,
0xffffffffffffffff };
-/* Expected values of cumulative_sat_saturation flag with negative shift
- amount. */
-int VECT_VAR(expected_cumulative_sat_neg,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,uint,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,uint,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,uint,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,uint,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,uint,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,uint,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,uint,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_neg,uint,64,2) = 0;
-
/* Expected results with negative shift amount. */
VECT_VAR_DECL(expected_neg,int,8,8) [] = { 0xf8, 0xf8, 0xf9, 0xf9,
0xfa, 0xfa, 0xfb, 0xfb };
@@ -195,25 +122,6 @@ VECT_VAR_DECL(expected_neg,uint,32,4) [] = { 0x7ffff, 0x7ffff,
0x7ffff, 0x7ffff };
VECT_VAR_DECL(expected_neg,uint,64,2) [] = { 0xfffffffffff, 0xfffffffffff };
-/* Expected values of cumulative_sat_saturation flag with negative
- input and large shift amount. */
-int VECT_VAR(expected_cumulative_sat_neg_large,int,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large,int,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large,int,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large,uint,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large,uint,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large,uint,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large,uint,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large,int,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large,int,64,2) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large,uint,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large,uint,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large,uint,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_neg_large,uint,64,2) = 1;
-
/* Expected results with negative input and large shift amount. */
VECT_VAR_DECL(expected_neg_large,int,8,8) [] = { 0x80, 0x80, 0x80, 0x80,
0x80, 0x80, 0x80, 0x80 };
@@ -252,25 +160,6 @@ VECT_VAR_DECL(expected_neg_large,uint,32,4) [] = { 0xffffffff, 0xffffffff,
VECT_VAR_DECL(expected_neg_large,uint,64,2) [] = { 0xffffffffffffffff,
0xffffffffffffffff };
-/* Expected values of cumulative_sat_saturation flag with max input
- and shift by -1. */
-int VECT_VAR(expected_cumulative_sat_max_minus1,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_max_minus1,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_max_minus1,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_max_minus1,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_max_minus1,uint,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_max_minus1,uint,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_max_minus1,uint,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_max_minus1,uint,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_max_minus1,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_max_minus1,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_max_minus1,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_max_minus1,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat_max_minus1,uint,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_max_minus1,uint,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_max_minus1,uint,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_max_minus1,uint,64,2) = 0;
-
/* Expected results with max input and shift by -1. */
VECT_VAR_DECL(expected_max_minus1,int,8,8) [] = { 0x3f, 0x3f, 0x3f, 0x3f,
0x3f, 0x3f, 0x3f, 0x3f };
@@ -309,25 +198,6 @@ VECT_VAR_DECL(expected_max_minus1,uint,32,4) [] = { 0x7fffffff, 0x7fffffff,
VECT_VAR_DECL(expected_max_minus1,uint,64,2) [] = { 0x7fffffffffffffff,
0x7fffffffffffffff };
-/* Expected values of cumulative_sat_saturation flag with max input
- and large shift amount. */
-int VECT_VAR(expected_cumulative_sat_max_large,int,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat_max_large,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_max_large,int,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_max_large,int,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_max_large,uint,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat_max_large,uint,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_max_large,uint,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_max_large,uint,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_max_large,int,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat_max_large,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_max_large,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_max_large,int,64,2) = 1;
-int VECT_VAR(expected_cumulative_sat_max_large,uint,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat_max_large,uint,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_max_large,uint,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_max_large,uint,64,2) = 1;
-
/* Expected results with max input and large shift amount. */
VECT_VAR_DECL(expected_max_large,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
0x7f, 0x7f, 0x7f, 0x7f };
@@ -366,11 +236,6 @@ VECT_VAR_DECL(expected_max_large,uint,32,4) [] = { 0xffffffff, 0xffffffff,
VECT_VAR_DECL(expected_max_large,uint,64,2) [] = { 0xffffffffffffffff,
0xffffffffffffffff };
-/* Expected values of cumulative_sat_saturation flag with saturation
- on 64-bits values. */
-int VECT_VAR(expected_cumulative_sat_64,int,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_64,int,64,2) = 1;
-
/* Expected results with saturation on 64-bits values.. */
VECT_VAR_DECL(expected_64,int,64,1) [] = { 0x8000000000000000 };
VECT_VAR_DECL(expected_64,int,64,2) [] = { 0x7fffffffffffffff,
@@ -385,21 +250,20 @@ VECT_VAR_DECL(expected_64,int,64,2) [] = { 0x7fffffffffffffff,
FNNAME (INSN)
{
/* Basic test: v3=vqshl(v1,v2), then store the result. */
-#define TEST_VQSHL2(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQSHL2(INSN, T3, Q, T1, T2, W, N, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \
VECT_VAR(vector_res, T1, W, N) = \
INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N), \
VECT_VAR(vector_shift, T3, W, N)); \
vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \
- VECT_VAR(vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W, N));
/* Two auxliary macros are necessary to expand INSN */
-#define TEST_VQSHL1(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQSHL2(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQSHL1(INSN, T3, Q, T1, T2, W, N, CMT) \
+ TEST_VQSHL2(INSN, T3, Q, T1, T2, W, N, CMT)
-#define TEST_VQSHL(T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQSHL1(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQSHL(T3, Q, T1, T2, W, N, CMT) \
+ TEST_VQSHL1(INSN, T3, Q, T1, T2, W, N, CMT)
DECL_VARIABLE_ALL_VARIANTS(vector);
@@ -470,22 +334,22 @@ FNNAME (INSN)
VSET_LANE(vector_shift, q, int, s, 64, 2, 1, 62);
#define CMT " (with input = 0)"
- TEST_VQSHL(int, , int, s, 8, 8, expected_cumulative_sat_0, CMT);
- TEST_VQSHL(int, , int, s, 16, 4, expected_cumulative_sat_0, CMT);
- TEST_VQSHL(int, , int, s, 32, 2, expected_cumulative_sat_0, CMT);
- TEST_VQSHL(int, , int, s, 64, 1, expected_cumulative_sat_0, CMT);
- TEST_VQSHL(int, , uint, u, 8, 8, expected_cumulative_sat_0, CMT);
- TEST_VQSHL(int, , uint, u, 16, 4, expected_cumulative_sat_0, CMT);
- TEST_VQSHL(int, , uint, u, 32, 2, expected_cumulative_sat_0, CMT);
- TEST_VQSHL(int, , uint, u, 64, 1, expected_cumulative_sat_0, CMT);
- TEST_VQSHL(int, q, int, s, 8, 16, expected_cumulative_sat_0, CMT);
- TEST_VQSHL(int, q, int, s, 16, 8, expected_cumulative_sat_0, CMT);
- TEST_VQSHL(int, q, int, s, 32, 4, expected_cumulative_sat_0, CMT);
- TEST_VQSHL(int, q, int, s, 64, 2, expected_cumulative_sat_0, CMT);
- TEST_VQSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_0, CMT);
- TEST_VQSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_0, CMT);
- TEST_VQSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_0, CMT);
- TEST_VQSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_0, CMT);
+ TEST_VQSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_0, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_0, CMT);
@@ -517,22 +381,22 @@ FNNAME (INSN)
#undef CMT
#define CMT " (input 0 and negative shift amount)"
- TEST_VQSHL(int, , int, s, 8, 8, expected_cumulative_sat_0_neg, CMT);
- TEST_VQSHL(int, , int, s, 16, 4, expected_cumulative_sat_0_neg, CMT);
- TEST_VQSHL(int, , int, s, 32, 2, expected_cumulative_sat_0_neg, CMT);
- TEST_VQSHL(int, , int, s, 64, 1, expected_cumulative_sat_0_neg, CMT);
- TEST_VQSHL(int, , uint, u, 8, 8, expected_cumulative_sat_0_neg, CMT);
- TEST_VQSHL(int, , uint, u, 16, 4, expected_cumulative_sat_0_neg, CMT);
- TEST_VQSHL(int, , uint, u, 32, 2, expected_cumulative_sat_0_neg, CMT);
- TEST_VQSHL(int, , uint, u, 64, 1, expected_cumulative_sat_0_neg, CMT);
- TEST_VQSHL(int, q, int, s, 8, 16, expected_cumulative_sat_0_neg, CMT);
- TEST_VQSHL(int, q, int, s, 16, 8, expected_cumulative_sat_0_neg, CMT);
- TEST_VQSHL(int, q, int, s, 32, 4, expected_cumulative_sat_0_neg, CMT);
- TEST_VQSHL(int, q, int, s, 64, 2, expected_cumulative_sat_0_neg, CMT);
- TEST_VQSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_0_neg, CMT);
- TEST_VQSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_0_neg, CMT);
- TEST_VQSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_0_neg, CMT);
- TEST_VQSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_0_neg, CMT);
+ TEST_VQSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_0_neg, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_0_neg, CMT);
@@ -566,22 +430,22 @@ FNNAME (INSN)
#undef CMT
#define CMT ""
- TEST_VQSHL(int, , int, s, 8, 8, expected_cumulative_sat, CMT);
- TEST_VQSHL(int, , int, s, 16, 4, expected_cumulative_sat, CMT);
- TEST_VQSHL(int, , int, s, 32, 2, expected_cumulative_sat, CMT);
- TEST_VQSHL(int, , int, s, 64, 1, expected_cumulative_sat, CMT);
- TEST_VQSHL(int, , uint, u, 8, 8, expected_cumulative_sat, CMT);
- TEST_VQSHL(int, , uint, u, 16, 4, expected_cumulative_sat, CMT);
- TEST_VQSHL(int, , uint, u, 32, 2, expected_cumulative_sat, CMT);
- TEST_VQSHL(int, , uint, u, 64, 1, expected_cumulative_sat, CMT);
- TEST_VQSHL(int, q, int, s, 8, 16, expected_cumulative_sat, CMT);
- TEST_VQSHL(int, q, int, s, 16, 8, expected_cumulative_sat, CMT);
- TEST_VQSHL(int, q, int, s, 32, 4, expected_cumulative_sat, CMT);
- TEST_VQSHL(int, q, int, s, 64, 2, expected_cumulative_sat, CMT);
- TEST_VQSHL(int, q, uint, u, 8, 16, expected_cumulative_sat, CMT);
- TEST_VQSHL(int, q, uint, u, 16, 8, expected_cumulative_sat, CMT);
- TEST_VQSHL(int, q, uint, u, 32, 4, expected_cumulative_sat, CMT);
- TEST_VQSHL(int, q, uint, u, 64, 2, expected_cumulative_sat, CMT);
+ TEST_VQSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
@@ -613,22 +477,22 @@ FNNAME (INSN)
#undef CMT
#define CMT " (negative shift amount)"
- TEST_VQSHL(int, , int, s, 8, 8, expected_cumulative_sat_neg, CMT);
- TEST_VQSHL(int, , int, s, 16, 4, expected_cumulative_sat_neg, CMT);
- TEST_VQSHL(int, , int, s, 32, 2, expected_cumulative_sat_neg, CMT);
- TEST_VQSHL(int, , int, s, 64, 1, expected_cumulative_sat_neg, CMT);
- TEST_VQSHL(int, , uint, u, 8, 8, expected_cumulative_sat_neg, CMT);
- TEST_VQSHL(int, , uint, u, 16, 4, expected_cumulative_sat_neg, CMT);
- TEST_VQSHL(int, , uint, u, 32, 2, expected_cumulative_sat_neg, CMT);
- TEST_VQSHL(int, , uint, u, 64, 1, expected_cumulative_sat_neg, CMT);
- TEST_VQSHL(int, q, int, s, 8, 16, expected_cumulative_sat_neg, CMT);
- TEST_VQSHL(int, q, int, s, 16, 8, expected_cumulative_sat_neg, CMT);
- TEST_VQSHL(int, q, int, s, 32, 4, expected_cumulative_sat_neg, CMT);
- TEST_VQSHL(int, q, int, s, 64, 2, expected_cumulative_sat_neg, CMT);
- TEST_VQSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_neg, CMT);
- TEST_VQSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_neg, CMT);
- TEST_VQSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_neg, CMT);
- TEST_VQSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_neg, CMT);
+ TEST_VQSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_neg, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_neg, CMT);
@@ -660,22 +524,22 @@ FNNAME (INSN)
#undef CMT
#define CMT " (large shift amount, negative input)"
- TEST_VQSHL(int, , int, s, 8, 8, expected_cumulative_sat_neg_large, CMT);
- TEST_VQSHL(int, , int, s, 16, 4, expected_cumulative_sat_neg_large, CMT);
- TEST_VQSHL(int, , int, s, 32, 2, expected_cumulative_sat_neg_large, CMT);
- TEST_VQSHL(int, , int, s, 64, 1, expected_cumulative_sat_neg_large, CMT);
- TEST_VQSHL(int, , uint, u, 8, 8, expected_cumulative_sat_neg_large, CMT);
- TEST_VQSHL(int, , uint, u, 16, 4, expected_cumulative_sat_neg_large, CMT);
- TEST_VQSHL(int, , uint, u, 32, 2, expected_cumulative_sat_neg_large, CMT);
- TEST_VQSHL(int, , uint, u, 64, 1, expected_cumulative_sat_neg_large, CMT);
- TEST_VQSHL(int, q, int, s, 8, 16, expected_cumulative_sat_neg_large, CMT);
- TEST_VQSHL(int, q, int, s, 16, 8, expected_cumulative_sat_neg_large, CMT);
- TEST_VQSHL(int, q, int, s, 32, 4, expected_cumulative_sat_neg_large, CMT);
- TEST_VQSHL(int, q, int, s, 64, 2, expected_cumulative_sat_neg_large, CMT);
- TEST_VQSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_neg_large, CMT);
- TEST_VQSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_neg_large, CMT);
- TEST_VQSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_neg_large, CMT);
- TEST_VQSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_neg_large, CMT);
+ TEST_VQSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_neg_large, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_neg_large, CMT);
@@ -725,22 +589,22 @@ FNNAME (INSN)
#undef CMT
#define CMT " (max input, shift by -1)"
- TEST_VQSHL(int, , int, s, 8, 8, expected_cumulative_sat_max_minus1, CMT);
- TEST_VQSHL(int, , int, s, 16, 4, expected_cumulative_sat_max_minus1, CMT);
- TEST_VQSHL(int, , int, s, 32, 2, expected_cumulative_sat_max_minus1, CMT);
- TEST_VQSHL(int, , int, s, 64, 1, expected_cumulative_sat_max_minus1, CMT);
- TEST_VQSHL(int, , uint, u, 8, 8, expected_cumulative_sat_max_minus1, CMT);
- TEST_VQSHL(int, , uint, u, 16, 4, expected_cumulative_sat_max_minus1, CMT);
- TEST_VQSHL(int, , uint, u, 32, 2, expected_cumulative_sat_max_minus1, CMT);
- TEST_VQSHL(int, , uint, u, 64, 1, expected_cumulative_sat_max_minus1, CMT);
- TEST_VQSHL(int, q, int, s, 8, 16, expected_cumulative_sat_max_minus1, CMT);
- TEST_VQSHL(int, q, int, s, 16, 8, expected_cumulative_sat_max_minus1, CMT);
- TEST_VQSHL(int, q, int, s, 32, 4, expected_cumulative_sat_max_minus1, CMT);
- TEST_VQSHL(int, q, int, s, 64, 2, expected_cumulative_sat_max_minus1, CMT);
- TEST_VQSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_max_minus1, CMT);
- TEST_VQSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_max_minus1, CMT);
- TEST_VQSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_max_minus1, CMT);
- TEST_VQSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_max_minus1, CMT);
+ TEST_VQSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_minus1, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_minus1, CMT);
@@ -772,22 +636,22 @@ FNNAME (INSN)
#undef CMT
#define CMT " (max input, large shift amount)"
- TEST_VQSHL(int, , int, s, 8, 8, expected_cumulative_sat_max_large, CMT);
- TEST_VQSHL(int, , int, s, 16, 4, expected_cumulative_sat_max_large, CMT);
- TEST_VQSHL(int, , int, s, 32, 2, expected_cumulative_sat_max_large, CMT);
- TEST_VQSHL(int, , int, s, 64, 1, expected_cumulative_sat_max_large, CMT);
- TEST_VQSHL(int, , uint, u, 8, 8, expected_cumulative_sat_max_large, CMT);
- TEST_VQSHL(int, , uint, u, 16, 4, expected_cumulative_sat_max_large, CMT);
- TEST_VQSHL(int, , uint, u, 32, 2, expected_cumulative_sat_max_large, CMT);
- TEST_VQSHL(int, , uint, u, 64, 1, expected_cumulative_sat_max_large, CMT);
- TEST_VQSHL(int, q, int, s, 8, 16, expected_cumulative_sat_max_large, CMT);
- TEST_VQSHL(int, q, int, s, 16, 8, expected_cumulative_sat_max_large, CMT);
- TEST_VQSHL(int, q, int, s, 32, 4, expected_cumulative_sat_max_large, CMT);
- TEST_VQSHL(int, q, int, s, 64, 2, expected_cumulative_sat_max_large, CMT);
- TEST_VQSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_max_large, CMT);
- TEST_VQSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_max_large, CMT);
- TEST_VQSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_max_large, CMT);
- TEST_VQSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_max_large, CMT);
+ TEST_VQSHL(int, , int, s, 8, 8, CMT);
+ TEST_VQSHL(int, , int, s, 16, 4, CMT);
+ TEST_VQSHL(int, , int, s, 32, 2, CMT);
+ TEST_VQSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQSHL(int, , uint, u, 8, 8, CMT);
+ TEST_VQSHL(int, , uint, u, 16, 4, CMT);
+ TEST_VQSHL(int, , uint, u, 32, 2, CMT);
+ TEST_VQSHL(int, , uint, u, 64, 1, CMT);
+ TEST_VQSHL(int, q, int, s, 8, 16, CMT);
+ TEST_VQSHL(int, q, int, s, 16, 8, CMT);
+ TEST_VQSHL(int, q, int, s, 32, 4, CMT);
+ TEST_VQSHL(int, q, int, s, 64, 2, CMT);
+ TEST_VQSHL(int, q, uint, u, 8, 16, CMT);
+ TEST_VQSHL(int, q, uint, u, 16, 8, CMT);
+ TEST_VQSHL(int, q, uint, u, 32, 4, CMT);
+ TEST_VQSHL(int, q, uint, u, 64, 2, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_large, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_large, CMT);
@@ -815,8 +679,8 @@ FNNAME (INSN)
#undef CMT
#define CMT " (check saturation on 64 bits)"
- TEST_VQSHL(int, , int, s, 64, 1, expected_cumulative_sat_64, CMT);
- TEST_VQSHL(int, q, int, s, 64, 2, expected_cumulative_sat_64, CMT);
+ TEST_VQSHL(int, , int, s, 64, 1, CMT);
+ TEST_VQSHL(int, q, int, s, 64, 2, CMT);
CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_64, CMT);
CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_64, CMT);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshl_n.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshl_n.c
index cb9c458..602bc36 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshl_n.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshl_n.c
@@ -2,24 +2,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,64,2) = 1;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,8,8) [] = { 0xc0, 0xc4, 0xc8, 0xcc,
0xd0, 0xd4, 0xd8, 0xdc };
@@ -51,24 +33,6 @@ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0xffffffff,
VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffffff,
0xffffffffffffffff };
-/* Expected values of cumulative_saturation flag with max positive input. */
-int VECT_VAR(expected_cumulative_sat_max,int,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat_max,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_max,int,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_max,int,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_max,uint,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat_max,uint,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_max,uint,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_max,uint,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_max,int,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat_max,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_max,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_max,int,64,2) = 1;
-int VECT_VAR(expected_cumulative_sat_max,uint,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat_max,uint,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_max,uint,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_max,uint,64,2) = 1;
-
/* Expected results with max positive input. */
VECT_VAR_DECL(expected_max,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
0x7f, 0x7f, 0x7f, 0x7f };
@@ -110,21 +74,20 @@ VECT_VAR_DECL(expected_max,uint,64,2) [] = { 0xffffffffffffffff,
FNNAME (INSN)
{
/* Basic test: v2=vqshl_n(v1,v), then store the result. */
-#define TEST_VQSHL_N2(INSN, Q, T1, T2, W, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQSHL_N2(INSN, Q, T1, T2, W, N, V, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N)); \
VECT_VAR(vector_res, T1, W, N) = \
INSN##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N), \
V); \
vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \
- VECT_VAR(vector_res, T1, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W, N))
/* Two auxliary macros are necessary to expand INSN */
-#define TEST_VQSHL_N1(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQSHL_N2(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQSHL_N1(INSN, T3, Q, T1, T2, W, N, CMT) \
+ TEST_VQSHL_N2(INSN, T3, Q, T1, T2, W, N, CMT)
-#define TEST_VQSHL_N(T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQSHL_N1(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQSHL_N(T3, Q, T1, T2, W, N, CMT) \
+ TEST_VQSHL_N1(INSN, T3, Q, T1, T2, W, N, CMT)
DECL_VARIABLE_ALL_VARIANTS(vector);
DECL_VARIABLE_ALL_VARIANTS(vector_res);
@@ -135,23 +98,23 @@ FNNAME (INSN)
/* Choose shift amount arbitrarily. */
#define CMT ""
- TEST_VQSHL_N(, int, s, 8, 8, 2, expected_cumulative_sat, CMT);
- TEST_VQSHL_N(, int, s, 16, 4, 1, expected_cumulative_sat, CMT);
- TEST_VQSHL_N(, int, s, 32, 2, 1, expected_cumulative_sat, CMT);
- TEST_VQSHL_N(, int, s, 64, 1, 2, expected_cumulative_sat, CMT);
- TEST_VQSHL_N(, uint, u, 8, 8, 3, expected_cumulative_sat, CMT);
- TEST_VQSHL_N(, uint, u, 16, 4, 2, expected_cumulative_sat, CMT);
- TEST_VQSHL_N(, uint, u, 32, 2, 3, expected_cumulative_sat, CMT);
- TEST_VQSHL_N(, uint, u, 64, 1, 3, expected_cumulative_sat, CMT);
-
- TEST_VQSHL_N(q, int, s, 8, 16, 2, expected_cumulative_sat, CMT);
- TEST_VQSHL_N(q, int, s, 16, 8, 1, expected_cumulative_sat, CMT);
- TEST_VQSHL_N(q, int, s, 32, 4, 1, expected_cumulative_sat, CMT);
- TEST_VQSHL_N(q, int, s, 64, 2, 2, expected_cumulative_sat, CMT);
- TEST_VQSHL_N(q, uint, u, 8, 16, 3, expected_cumulative_sat, CMT);
- TEST_VQSHL_N(q, uint, u, 16, 8, 2, expected_cumulative_sat, CMT);
- TEST_VQSHL_N(q, uint, u, 32, 4, 3, expected_cumulative_sat, CMT);
- TEST_VQSHL_N(q, uint, u, 64, 2, 3, expected_cumulative_sat, CMT);
+ TEST_VQSHL_N(, int, s, 8, 8, 2, CMT);
+ TEST_VQSHL_N(, int, s, 16, 4, 1, CMT);
+ TEST_VQSHL_N(, int, s, 32, 2, 1, CMT);
+ TEST_VQSHL_N(, int, s, 64, 1, 2, CMT);
+ TEST_VQSHL_N(, uint, u, 8, 8, 3, CMT);
+ TEST_VQSHL_N(, uint, u, 16, 4, 2, CMT);
+ TEST_VQSHL_N(, uint, u, 32, 2, 3, CMT);
+ TEST_VQSHL_N(, uint, u, 64, 1, 3, CMT);
+
+ TEST_VQSHL_N(q, int, s, 8, 16, 2, CMT);
+ TEST_VQSHL_N(q, int, s, 16, 8, 1, CMT);
+ TEST_VQSHL_N(q, int, s, 32, 4, 1, CMT);
+ TEST_VQSHL_N(q, int, s, 64, 2, 2, CMT);
+ TEST_VQSHL_N(q, uint, u, 8, 16, 3, CMT);
+ TEST_VQSHL_N(q, uint, u, 16, 8, 2, CMT);
+ TEST_VQSHL_N(q, uint, u, 32, 4, 3, CMT);
+ TEST_VQSHL_N(q, uint, u, 64, 2, 3, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
@@ -191,23 +154,23 @@ FNNAME (INSN)
#undef CMT
#define CMT " (with max input)"
- TEST_VQSHL_N(, int, s, 8, 8, 2, expected_cumulative_sat_max, CMT);
- TEST_VQSHL_N(, int, s, 16, 4, 1, expected_cumulative_sat_max, CMT);
- TEST_VQSHL_N(, int, s, 32, 2, 1, expected_cumulative_sat_max, CMT);
- TEST_VQSHL_N(, int, s, 64, 1, 2, expected_cumulative_sat_max, CMT);
- TEST_VQSHL_N(, uint, u, 8, 8, 3, expected_cumulative_sat_max, CMT);
- TEST_VQSHL_N(, uint, u, 16, 4, 2, expected_cumulative_sat_max, CMT);
- TEST_VQSHL_N(, uint, u, 32, 2, 3, expected_cumulative_sat_max, CMT);
- TEST_VQSHL_N(, uint, u, 64, 1, 3, expected_cumulative_sat_max, CMT);
-
- TEST_VQSHL_N(q, int, s, 8, 16, 2, expected_cumulative_sat_max, CMT);
- TEST_VQSHL_N(q, int, s, 16, 8, 1, expected_cumulative_sat_max, CMT);
- TEST_VQSHL_N(q, int, s, 32, 4, 1, expected_cumulative_sat_max, CMT);
- TEST_VQSHL_N(q, int, s, 64, 2, 2, expected_cumulative_sat_max, CMT);
- TEST_VQSHL_N(q, uint, u, 8, 16, 3, expected_cumulative_sat_max, CMT);
- TEST_VQSHL_N(q, uint, u, 16, 8, 2, expected_cumulative_sat_max, CMT);
- TEST_VQSHL_N(q, uint, u, 32, 4, 3, expected_cumulative_sat_max, CMT);
- TEST_VQSHL_N(q, uint, u, 64, 2, 3, expected_cumulative_sat_max, CMT);
+ TEST_VQSHL_N(, int, s, 8, 8, 2, CMT);
+ TEST_VQSHL_N(, int, s, 16, 4, 1, CMT);
+ TEST_VQSHL_N(, int, s, 32, 2, 1, CMT);
+ TEST_VQSHL_N(, int, s, 64, 1, 2, CMT);
+ TEST_VQSHL_N(, uint, u, 8, 8, 3, CMT);
+ TEST_VQSHL_N(, uint, u, 16, 4, 2, CMT);
+ TEST_VQSHL_N(, uint, u, 32, 2, 3, CMT);
+ TEST_VQSHL_N(, uint, u, 64, 1, 3, CMT);
+
+ TEST_VQSHL_N(q, int, s, 8, 16, 2, CMT);
+ TEST_VQSHL_N(q, int, s, 16, 8, 1, CMT);
+ TEST_VQSHL_N(q, int, s, 32, 4, 1, CMT);
+ TEST_VQSHL_N(q, int, s, 64, 2, 2, CMT);
+ TEST_VQSHL_N(q, uint, u, 8, 16, 3, CMT);
+ TEST_VQSHL_N(q, uint, u, 16, 8, 2, CMT);
+ TEST_VQSHL_N(q, uint, u, 32, 4, 3, CMT);
+ TEST_VQSHL_N(q, uint, u, 64, 2, 3, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max, CMT);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshlu_n.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshlu_n.c
index a357fbe..6ebb702 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshlu_n.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshlu_n.c
@@ -2,17 +2,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag with negative
- input. */
-int VECT_VAR(expected_cumulative_sat_neg,int,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat_neg,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_neg,int,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_neg,int,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_neg,int,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat_neg,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_neg,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_neg,int,64,2) = 1;
-
/* Expected results with negative input. */
VECT_VAR_DECL(expected_neg,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0 };
@@ -28,16 +17,6 @@ VECT_VAR_DECL(expected_neg,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
VECT_VAR_DECL(expected_neg,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL(expected_neg,uint,64,2) [] = { 0x0, 0x0 };
-/* Expected values of cumulative_saturation flag with shift by 1. */
-int VECT_VAR(expected_cumulative_sat_sh1,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat_sh1,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat_sh1,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat_sh1,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_sh1,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat_sh1,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_sh1,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_sh1,int,64,2) = 0;
-
/* Expected results with shift by 1. */
VECT_VAR_DECL(expected_sh1,uint,8,8) [] = { 0xfe, 0xfe, 0xfe, 0xfe,
0xfe, 0xfe, 0xfe, 0xfe };
@@ -55,16 +34,6 @@ VECT_VAR_DECL(expected_sh1,uint,32,4) [] = { 0xfffffffe, 0xfffffffe,
VECT_VAR_DECL(expected_sh1,uint,64,2) [] = { 0xfffffffffffffffe,
0xfffffffffffffffe };
-/* Expected values of cumulative_saturation flag with shift by 2. */
-int VECT_VAR(expected_cumulative_sat_sh2,int,8,8) = 1;
-int VECT_VAR(expected_cumulative_sat_sh2,int,16,4) = 1;
-int VECT_VAR(expected_cumulative_sat_sh2,int,32,2) = 1;
-int VECT_VAR(expected_cumulative_sat_sh2,int,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_sh2,int,8,16) = 1;
-int VECT_VAR(expected_cumulative_sat_sh2,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_sh2,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_sh2,int,64,2) = 1;
-
/* Expected results with shift by 2. */
VECT_VAR_DECL(expected_sh2,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff };
@@ -82,16 +51,6 @@ VECT_VAR_DECL(expected_sh2,uint,32,4) [] = { 0xffffffff, 0xffffffff,
VECT_VAR_DECL(expected_sh2,uint,64,2) [] = { 0xffffffffffffffff,
0xffffffffffffffff };
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,uint,8,8) [] = { 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2 };
VECT_VAR_DECL(expected,uint,16,4) [] = { 0x8, 0x8, 0x8, 0x8 };
@@ -116,21 +75,20 @@ VECT_VAR_DECL(expected,uint,64,2) [] = { 0x800, 0x800 };
FNNAME (INSN)
{
/* Basic test: v2=vqshlu_n(v1,v), then store the result. */
-#define TEST_VQSHLU_N2(INSN, Q, T1, T2, T3, T4, W, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQSHLU_N2(INSN, Q, T1, T2, T3, T4, W, N, V, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T3, W, N)); \
VECT_VAR(vector_res, T3, W, N) = \
INSN##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N), \
V); \
vst1##Q##_##T4##W(VECT_VAR(result, T3, W, N), \
- VECT_VAR(vector_res, T3, W, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T3, W, N))
/* Two auxliary macros are necessary to expand INSN */
-#define TEST_VQSHLU_N1(INSN, Q, T1, T2, T3, T4, W, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQSHLU_N2(INSN, Q, T1, T2, T3, T4, W, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQSHLU_N1(INSN, Q, T1, T2, T3, T4, W, N, V, CMT) \
+ TEST_VQSHLU_N2(INSN, Q, T1, T2, T3, T4, W, N, V, CMT)
-#define TEST_VQSHLU_N(Q, T1, T2, T3, T4, W, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQSHLU_N1(INSN, Q, T1, T2, T3, T4, W, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQSHLU_N(Q, T1, T2, T3, T4, W, N, V, CMT) \
+ TEST_VQSHLU_N1(INSN, Q, T1, T2, T3, T4, W, N, V, CMT)
DECL_VARIABLE_ALL_VARIANTS(vector);
@@ -151,14 +109,14 @@ FNNAME (INSN)
/* Choose shift amount arbitrarily. */
#define CMT " (negative input)"
- TEST_VQSHLU_N(, int, s, uint, u, 8, 8, 2, expected_cumulative_sat_neg, CMT);
- TEST_VQSHLU_N(, int, s, uint, u, 16, 4, 1, expected_cumulative_sat_neg, CMT);
- TEST_VQSHLU_N(, int, s, uint, u, 32, 2, 1, expected_cumulative_sat_neg, CMT);
- TEST_VQSHLU_N(, int, s, uint, u, 64, 1, 2, expected_cumulative_sat_neg, CMT);
- TEST_VQSHLU_N(q, int, s, uint, u, 8, 16, 2, expected_cumulative_sat_neg, CMT);
- TEST_VQSHLU_N(q, int, s, uint, u, 16, 8, 1, expected_cumulative_sat_neg, CMT);
- TEST_VQSHLU_N(q, int, s, uint, u, 32, 4, 1, expected_cumulative_sat_neg, CMT);
- TEST_VQSHLU_N(q, int, s, uint, u, 64, 2, 2, expected_cumulative_sat_neg, CMT);
+ TEST_VQSHLU_N(, int, s, uint, u, 8, 8, 2, CMT);
+ TEST_VQSHLU_N(, int, s, uint, u, 16, 4, 1, CMT);
+ TEST_VQSHLU_N(, int, s, uint, u, 32, 2, 1, CMT);
+ TEST_VQSHLU_N(, int, s, uint, u, 64, 1, 2, CMT);
+ TEST_VQSHLU_N(q, int, s, uint, u, 8, 16, 2, CMT);
+ TEST_VQSHLU_N(q, int, s, uint, u, 16, 8, 1, CMT);
+ TEST_VQSHLU_N(q, int, s, uint, u, 32, 4, 1, CMT);
+ TEST_VQSHLU_N(q, int, s, uint, u, 64, 2, 2, CMT);
CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_neg, CMT);
CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_neg, CMT);
@@ -184,14 +142,14 @@ FNNAME (INSN)
/* shift by 1. */
#undef CMT
#define CMT " (shift by 1)"
- TEST_VQSHLU_N(, int, s, uint, u, 8, 8, 1, expected_cumulative_sat_sh1, CMT);
- TEST_VQSHLU_N(, int, s, uint, u, 16, 4, 1, expected_cumulative_sat_sh1, CMT);
- TEST_VQSHLU_N(, int, s, uint, u, 32, 2, 1, expected_cumulative_sat_sh1, CMT);
- TEST_VQSHLU_N(, int, s, uint, u, 64, 1, 1, expected_cumulative_sat_sh1, CMT);
- TEST_VQSHLU_N(q, int, s, uint, u, 8, 16, 1, expected_cumulative_sat_sh1, CMT);
- TEST_VQSHLU_N(q, int, s, uint, u, 16, 8, 1, expected_cumulative_sat_sh1, CMT);
- TEST_VQSHLU_N(q, int, s, uint, u, 32, 4, 1, expected_cumulative_sat_sh1, CMT);
- TEST_VQSHLU_N(q, int, s, uint, u, 64, 2, 1, expected_cumulative_sat_sh1, CMT);
+ TEST_VQSHLU_N(, int, s, uint, u, 8, 8, 1, CMT);
+ TEST_VQSHLU_N(, int, s, uint, u, 16, 4, 1, CMT);
+ TEST_VQSHLU_N(, int, s, uint, u, 32, 2, 1, CMT);
+ TEST_VQSHLU_N(, int, s, uint, u, 64, 1, 1, CMT);
+ TEST_VQSHLU_N(q, int, s, uint, u, 8, 16, 1, CMT);
+ TEST_VQSHLU_N(q, int, s, uint, u, 16, 8, 1, CMT);
+ TEST_VQSHLU_N(q, int, s, uint, u, 32, 4, 1, CMT);
+ TEST_VQSHLU_N(q, int, s, uint, u, 64, 2, 1, CMT);
CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_sh1, CMT);
CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_sh1, CMT);
@@ -205,14 +163,14 @@ FNNAME (INSN)
/* shift by 2 to force saturation. */
#undef CMT
#define CMT " (shift by 2)"
- TEST_VQSHLU_N(, int, s, uint, u, 8, 8, 2, expected_cumulative_sat_sh2, CMT);
- TEST_VQSHLU_N(, int, s, uint, u, 16, 4, 2, expected_cumulative_sat_sh2, CMT);
- TEST_VQSHLU_N(, int, s, uint, u, 32, 2, 2, expected_cumulative_sat_sh2, CMT);
- TEST_VQSHLU_N(, int, s, uint, u, 64, 1, 2, expected_cumulative_sat_sh2, CMT);
- TEST_VQSHLU_N(q, int, s, uint, u, 8, 16, 2, expected_cumulative_sat_sh2, CMT);
- TEST_VQSHLU_N(q, int, s, uint, u, 16, 8, 2, expected_cumulative_sat_sh2, CMT);
- TEST_VQSHLU_N(q, int, s, uint, u, 32, 4, 2, expected_cumulative_sat_sh2, CMT);
- TEST_VQSHLU_N(q, int, s, uint, u, 64, 2, 2, expected_cumulative_sat_sh2, CMT);
+ TEST_VQSHLU_N(, int, s, uint, u, 8, 8, 2, CMT);
+ TEST_VQSHLU_N(, int, s, uint, u, 16, 4, 2, CMT);
+ TEST_VQSHLU_N(, int, s, uint, u, 32, 2, 2, CMT);
+ TEST_VQSHLU_N(, int, s, uint, u, 64, 1, 2, CMT);
+ TEST_VQSHLU_N(q, int, s, uint, u, 8, 16, 2, CMT);
+ TEST_VQSHLU_N(q, int, s, uint, u, 16, 8, 2, CMT);
+ TEST_VQSHLU_N(q, int, s, uint, u, 32, 4, 2, CMT);
+ TEST_VQSHLU_N(q, int, s, uint, u, 64, 2, 2, CMT);
CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_sh2, CMT);
CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_sh2, CMT);
@@ -237,14 +195,14 @@ FNNAME (INSN)
/* Arbitrary shift amount. */
#undef CMT
#define CMT ""
- TEST_VQSHLU_N(, int, s, uint, u, 8, 8, 1, expected_cumulative_sat, CMT);
- TEST_VQSHLU_N(, int, s, uint, u, 16, 4, 2, expected_cumulative_sat, CMT);
- TEST_VQSHLU_N(, int, s, uint, u, 32, 2, 3, expected_cumulative_sat, CMT);
- TEST_VQSHLU_N(, int, s, uint, u, 64, 1, 4, expected_cumulative_sat, CMT);
- TEST_VQSHLU_N(q, int, s, uint, u, 8, 16, 5, expected_cumulative_sat, CMT);
- TEST_VQSHLU_N(q, int, s, uint, u, 16, 8, 6, expected_cumulative_sat, CMT);
- TEST_VQSHLU_N(q, int, s, uint, u, 32, 4, 7, expected_cumulative_sat, CMT);
- TEST_VQSHLU_N(q, int, s, uint, u, 64, 2, 8, expected_cumulative_sat, CMT);
+ TEST_VQSHLU_N(, int, s, uint, u, 8, 8, 1, CMT);
+ TEST_VQSHLU_N(, int, s, uint, u, 16, 4, 2, CMT);
+ TEST_VQSHLU_N(, int, s, uint, u, 32, 2, 3, CMT);
+ TEST_VQSHLU_N(, int, s, uint, u, 64, 1, 4, CMT);
+ TEST_VQSHLU_N(q, int, s, uint, u, 8, 16, 5, CMT);
+ TEST_VQSHLU_N(q, int, s, uint, u, 16, 8, 6, CMT);
+ TEST_VQSHLU_N(q, int, s, uint, u, 32, 4, 7, CMT);
+ TEST_VQSHLU_N(q, int, s, uint, u, 64, 2, 8, CMT);
CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrn_n.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrn_n.c
index b3556f4..026a501 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrn_n.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrn_n.c
@@ -2,14 +2,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat,uint,64,2) = 1;
-
/* Expected results. */
VECT_VAR_DECL(expected,int,8,8) [] = { 0xf8, 0xf8, 0xf9, 0xf9,
0xfa, 0xfa, 0xfb, 0xfb };
@@ -20,15 +12,6 @@ VECT_VAR_DECL(expected,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0xffffffff };
-/* Expected values of cumulative_saturation flag with max input value
- shifted by 3. */
-int VECT_VAR(expected_cumulative_sat_max_sh3,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_max_sh3,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_max_sh3,int,64,2) = 1;
-int VECT_VAR(expected_cumulative_sat_max_sh3,uint,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_max_sh3,uint,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_max_sh3,uint,64,2) = 1;
-
/* Expected results with max input value shifted by 3. */
VECT_VAR_DECL(expected_max_sh3,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
0x7f, 0x7f, 0x7f, 0x7f };
@@ -40,15 +23,6 @@ VECT_VAR_DECL(expected_max_sh3,uint,16,4) [] = { 0xffff, 0xffff,
0xffff, 0xffff };
VECT_VAR_DECL(expected_max_sh3,uint,32,2) [] = { 0xffffffff, 0xffffffff };
-/* Expected values of cumulative_saturation flag with max input value
- shifted by type size. */
-int VECT_VAR(expected_cumulative_sat_max_shmax,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_max_shmax,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_max_shmax,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat_max_shmax,uint,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat_max_shmax,uint,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat_max_shmax,uint,64,2) = 0;
-
/* Expected results with max input value shifted by type size. */
VECT_VAR_DECL(expected_max_shmax,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
0x7f, 0x7f, 0x7f, 0x7f };
@@ -70,21 +44,20 @@ VECT_VAR_DECL(expected_max_shmax,uint,32,2) [] = { 0xffffffff, 0xffffffff };
FNNAME (INSN)
{
/* Basic test: y=vqshrn_n(x,v), then store the result. */
-#define TEST_VQSHRN_N2(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQSHRN_N2(INSN, T1, T2, W, W2, N, V, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W2, N)); \
VECT_VAR(vector_res, T1, W2, N) = \
INSN##_##T2##W(VECT_VAR(vector, T1, W, N), \
V); \
vst1_##T2##W2(VECT_VAR(result, T1, W2, N), \
- VECT_VAR(vector_res, T1, W2, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, T1, W2, N))
/* Two auxliary macros are necessary to expand INSN */
-#define TEST_VQSHRN_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQSHRN_N2(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQSHRN_N1(INSN, T1, T2, W, W2, N, V, CMT) \
+ TEST_VQSHRN_N2(INSN, T1, T2, W, W2, N, V, CMT)
-#define TEST_VQSHRN_N(T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQSHRN_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQSHRN_N(T1, T2, W, W2, N, V, CMT) \
+ TEST_VQSHRN_N1(INSN, T1, T2, W, W2, N, V, CMT)
/* vector is twice as large as vector_res. */
@@ -113,12 +86,12 @@ FNNAME (INSN)
/* Choose shift amount arbitrarily. */
#define CMT ""
- TEST_VQSHRN_N(int, s, 16, 8, 8, 1, expected_cumulative_sat, CMT);
- TEST_VQSHRN_N(int, s, 32, 16, 4, 1, expected_cumulative_sat, CMT);
- TEST_VQSHRN_N(int, s, 64, 32, 2, 2, expected_cumulative_sat, CMT);
- TEST_VQSHRN_N(uint, u, 16, 8, 8, 2, expected_cumulative_sat, CMT);
- TEST_VQSHRN_N(uint, u, 32, 16, 4, 3, expected_cumulative_sat, CMT);
- TEST_VQSHRN_N(uint, u, 64, 32, 2, 3, expected_cumulative_sat, CMT);
+ TEST_VQSHRN_N(int, s, 16, 8, 8, 1, CMT);
+ TEST_VQSHRN_N(int, s, 32, 16, 4, 1, CMT);
+ TEST_VQSHRN_N(int, s, 64, 32, 2, 2, CMT);
+ TEST_VQSHRN_N(uint, u, 16, 8, 8, 2, CMT);
+ TEST_VQSHRN_N(uint, u, 32, 16, 4, 3, CMT);
+ TEST_VQSHRN_N(uint, u, 64, 32, 2, 3, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
@@ -138,12 +111,12 @@ FNNAME (INSN)
#undef CMT
#define CMT " (check saturation: shift by 3)"
- TEST_VQSHRN_N(int, s, 16, 8, 8, 3, expected_cumulative_sat_max_sh3, CMT);
- TEST_VQSHRN_N(int, s, 32, 16, 4, 3, expected_cumulative_sat_max_sh3, CMT);
- TEST_VQSHRN_N(int, s, 64, 32, 2, 3, expected_cumulative_sat_max_sh3, CMT);
- TEST_VQSHRN_N(uint, u, 16, 8, 8, 3, expected_cumulative_sat_max_sh3, CMT);
- TEST_VQSHRN_N(uint, u, 32, 16, 4, 3, expected_cumulative_sat_max_sh3, CMT);
- TEST_VQSHRN_N(uint, u, 64, 32, 2, 3, expected_cumulative_sat_max_sh3, CMT);
+ TEST_VQSHRN_N(int, s, 16, 8, 8, 3, CMT);
+ TEST_VQSHRN_N(int, s, 32, 16, 4, 3, CMT);
+ TEST_VQSHRN_N(int, s, 64, 32, 2, 3, CMT);
+ TEST_VQSHRN_N(uint, u, 16, 8, 8, 3, CMT);
+ TEST_VQSHRN_N(uint, u, 32, 16, 4, 3, CMT);
+ TEST_VQSHRN_N(uint, u, 64, 32, 2, 3, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_sh3, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_sh3, CMT);
@@ -155,12 +128,12 @@ FNNAME (INSN)
#undef CMT
#define CMT " (check saturation: shift by max)"
- TEST_VQSHRN_N(int, s, 16, 8, 8, 8, expected_cumulative_sat_max_shmax, CMT);
- TEST_VQSHRN_N(int, s, 32, 16, 4, 16, expected_cumulative_sat_max_shmax, CMT);
- TEST_VQSHRN_N(int, s, 64, 32, 2, 32, expected_cumulative_sat_max_shmax, CMT);
- TEST_VQSHRN_N(uint, u, 16, 8, 8, 8, expected_cumulative_sat_max_shmax, CMT);
- TEST_VQSHRN_N(uint, u, 32, 16, 4, 16, expected_cumulative_sat_max_shmax, CMT);
- TEST_VQSHRN_N(uint, u, 64, 32, 2, 32, expected_cumulative_sat_max_shmax, CMT);
+ TEST_VQSHRN_N(int, s, 16, 8, 8, 8, CMT);
+ TEST_VQSHRN_N(int, s, 32, 16, 4, 16, CMT);
+ TEST_VQSHRN_N(int, s, 64, 32, 2, 32, CMT);
+ TEST_VQSHRN_N(uint, u, 16, 8, 8, 8, CMT);
+ TEST_VQSHRN_N(uint, u, 32, 16, 4, 16, CMT);
+ TEST_VQSHRN_N(uint, u, 64, 32, 2, 32, CMT);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_shmax, CMT);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_shmax, CMT);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrun_n.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrun_n.c
index ce1a3ff..c0d95e9 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrun_n.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrun_n.c
@@ -2,10 +2,6 @@
#include "arm-neon-ref.h"
#include "compute-ref-data.h"
-/* Expected values of cumulative_saturation flag with negative input. */
-int VECT_VAR(expected_cumulative_sat_neg,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_neg,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_neg,int,64,2) = 1;
/* Expected results with negative input. */
VECT_VAR_DECL(expected_neg,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
@@ -13,12 +9,6 @@ VECT_VAR_DECL(expected_neg,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
VECT_VAR_DECL(expected_neg,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL(expected_neg,uint,32,2) [] = { 0x0, 0x0 };
-/* Expected values of cumulative_saturation flag with max input value
- shifted by 1. */
-int VECT_VAR(expected_cumulative_sat_max_sh1,int,16,8) = 1;
-int VECT_VAR(expected_cumulative_sat_max_sh1,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat_max_sh1,int,64,2) = 1;
-
/* Expected results with max input value shifted by 1. */
VECT_VAR_DECL(expected_max_sh1,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff };
@@ -27,11 +17,6 @@ VECT_VAR_DECL(expected_max_sh1,uint,16,4) [] = { 0xffff, 0xffff,
VECT_VAR_DECL(expected_max_sh1,uint,32,2) [] = { 0xffffffff, 0xffffffff };
VECT_VAR_DECL(expected_max_sh1,uint,64,1) [] = { 0x3333333333333333 };
-/* Expected values of cumulative_saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 1;
-int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
-
/* Expected results. */
VECT_VAR_DECL(expected,uint,8,8) [] = { 0x48, 0x48, 0x48, 0x48,
0x48, 0x48, 0x48, 0x48 };
@@ -48,21 +33,20 @@ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xdeadbe, 0xdeadbe };
FNNAME (INSN)
{
/* Basic test: y=vqshrun_n(x,v), then store the result. */
-#define TEST_VQSHRUN_N2(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
+#define TEST_VQSHRUN_N2(INSN, T1, T2, W, W2, N, V, CMT) \
Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, uint, W2, N)); \
VECT_VAR(vector_res, uint, W2, N) = \
INSN##_##T2##W(VECT_VAR(vector, T1, W, N), \
V); \
vst1_u##W2(VECT_VAR(result, uint, W2, N), \
- VECT_VAR(vector_res, uint, W2, N)); \
- CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
+ VECT_VAR(vector_res, uint, W2, N));
/* Two auxliary macros are necessary to expand INSN */
-#define TEST_VQSHRUN_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQSHRUN_N2(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQSHRUN_N1(INSN, T1, T2, W, W2, N, V, CMT) \
+ TEST_VQSHRUN_N2(INSN, T1, T2, W, W2, N, V, CMT)
-#define TEST_VQSHRUN_N(T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
- TEST_VQSHRUN_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
+#define TEST_VQSHRUN_N(T1, T2, W, W2, N, V, CMT) \
+ TEST_VQSHRUN_N1(INSN, T1, T2, W, W2, N, V, CMT)
/* vector is twice as large as vector_res. */
@@ -84,9 +68,9 @@ FNNAME (INSN)
/* Choose shift amount arbitrarily. */
#define CMT " (negative input)"
- TEST_VQSHRUN_N(int, s, 16, 8, 8, 3, expected_cumulative_sat_neg, CMT);
- TEST_VQSHRUN_N(int, s, 32, 16, 4, 4, expected_cumulative_sat_neg, CMT);
- TEST_VQSHRUN_N(int, s, 64, 32, 2, 2, expected_cumulative_sat_neg, CMT);
+ TEST_VQSHRUN_N(int, s, 16, 8, 8, 3, CMT);
+ TEST_VQSHRUN_N(int, s, 32, 16, 4, 4, CMT);
+ TEST_VQSHRUN_N(int, s, 64, 32, 2, 2, CMT);
CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_neg, CMT);
CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_neg, CMT);
@@ -101,9 +85,9 @@ FNNAME (INSN)
#undef CMT
#define CMT " (check cumulative saturation)"
- TEST_VQSHRUN_N(int, s, 16, 8, 8, 1, expected_cumulative_sat_max_sh1, CMT);
- TEST_VQSHRUN_N(int, s, 32, 16, 4, 1, expected_cumulative_sat_max_sh1, CMT);
- TEST_VQSHRUN_N(int, s, 64, 32, 2, 1, expected_cumulative_sat_max_sh1, CMT);
+ TEST_VQSHRUN_N(int, s, 16, 8, 8, 1, CMT);
+ TEST_VQSHRUN_N(int, s, 32, 16, 4, 1, CMT);
+ TEST_VQSHRUN_N(int, s, 64, 32, 2, 1, CMT);
CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_sh1, CMT);
CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_sh1, CMT);
@@ -117,9 +101,9 @@ FNNAME (INSN)
#undef CMT
#define CMT ""
- TEST_VQSHRUN_N(int, s, 16, 8, 8, 6, expected_cumulative_sat, CMT);
- TEST_VQSHRUN_N(int, s, 32, 16, 4, 7, expected_cumulative_sat, CMT);
- TEST_VQSHRUN_N(int, s, 64, 32, 2, 8, expected_cumulative_sat, CMT);
+ TEST_VQSHRUN_N(int, s, 16, 8, 8, 6, CMT);
+ TEST_VQSHRUN_N(int, s, 32, 16, 4, 7, CMT);
+ TEST_VQSHRUN_N(int, s, 64, 32, 2, 8, CMT);
CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqsub.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqsub.c
index 3068d4b..0efe8bc 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqsub.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqsub.c
@@ -46,24 +46,6 @@ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffff79, 0xffffff7a,
VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffff68,
0xffffffffffffff69 };
-/* Expected values of cumulative saturation flag. */
-int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,8,8) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,16,4) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,32,2) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat,int,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,8,16) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,16,8) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,32,4) = 0;
-int VECT_VAR(expected_cumulative_sat,uint,64,2) = 0;
-
/* 64-bits types, with 0 as second input. */
VECT_VAR_DECL(expected_64,int,64,1) [] = { 0xfffffffffffffff0 };
VECT_VAR_DECL(expected_64,uint,64,1) [] = { 0xfffffffffffffff0 };
@@ -71,11 +53,6 @@ VECT_VAR_DECL(expected_64,int,64,2) [] = { 0xfffffffffffffff0,
0xfffffffffffffff1 };
VECT_VAR_DECL(expected_64,uint,64,2) [] = { 0xfffffffffffffff0,
0xfffffffffffffff1 };
-int VECT_VAR(expected_cumulative_sat_64,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_64,uint,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_64,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat_64,uint,64,2) = 0;
-
/* 64-bits types, other cases. */
VECT_VAR_DECL(expected_64_2,int,64,1) [] = { 0xffffffffffffffac };
VECT_VAR_DECL(expected_64_2,uint,64,1) [] = { 0xffffffffffffff68 };
@@ -83,10 +60,6 @@ VECT_VAR_DECL(expected_64_2,int,64,2) [] = { 0xffffffffffffffac,
0xffffffffffffffad };
VECT_VAR_DECL(expected_64_2,uint,64,2) [] = { 0xffffffffffffff68,
0xffffffffffffff69 };
-int VECT_VAR(expected_cumulative_sat_64_2,int,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_64_2,uint,64,1) = 0;
-int VECT_VAR(expected_cumulative_sat_64_2,int,64,2) = 0;
-int VECT_VAR(expected_cumulative_sat_64_2,uint,64,2) = 0;
/* 64-bits types, all causing cumulative saturation. */
VECT_VAR_DECL(expected_64_3,int,64,1) [] = { 0x8000000000000000 };
@@ -94,10 +67,6 @@ VECT_VAR_DECL(expected_64_3,uint,64,1) [] = { 0x0 };
VECT_VAR_DECL(expected_64_3,int,64,2) [] = { 0x7fffffffffffffff,
0x7fffffffffffffff };
VECT_VAR_DECL(expected_64_3,uint,64,2) [] = { 0x0, 0x0 };
-int VECT_VAR(expected_cumulative_sat_64_3,int,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_64_3,uint,64,1) = 1;
-int VECT_VAR(expected_cumulative_sat_64_3,int,64,2) = 1;
-int VECT_VAR(expected_cumulative_sat_64_3,uint,64,2) = 1;
/* smaller types, corner cases causing cumulative saturation. (1) */
VECT_VAR_DECL(expected_lt_64_1,int,8,8) [] = { 0x80, 0x80, 0x80, 0x80,
@@ -115,13 +84,6 @@ VECT_VAR_DECL(expected_lt_64_1,int,16,8) [] = { 0x8000, 0x8000,
0x8000, 0x8000 };
VECT_VAR_DECL(expected_lt_64_1,int,32,4) [] = { 0x80000000, 0x80000000,
0x80000000, 0x80000000 };
-int VECT_VAR(expected_csat_lt_64_1,int,8,8) = 1;
-int VECT_VAR(expected_csat_lt_64_1,int,16,4) = 1;
-int VECT_VAR(expected_csat_lt_64_1,int,32,2) = 1;
-int VECT_VAR(expected_csat_lt_64_1,int,8,16) = 1;
-int VECT_VAR(expected_csat_lt_64_1,int,16,8) = 1;
-int VECT_VAR(expected_csat_lt_64_1,int,32,4) = 1;
-
/* smaller types, corner cases causing cumulative saturation. (2) */
VECT_VAR_DECL(expected_lt_64_2,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0 };
@@ -134,12 +96,6 @@ VECT_VAR_DECL(expected_lt_64_2,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
VECT_VAR_DECL(expected_lt_64_2,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0 };
VECT_VAR_DECL(expected_lt_64_2,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
-int VECT_VAR(expected_csat_lt_64_2,uint,8,8) = 1;
-int VECT_VAR(expected_csat_lt_64_2,uint,16,4) = 1;
-int VECT_VAR(expected_csat_lt_64_2,uint,32,2) = 1;
-int VECT_VAR(expected_csat_lt_64_2,uint,8,16) = 1;
-int VECT_VAR(expected_csat_lt_64_2,uint,16,8) = 1;
-int VECT_VAR(expected_csat_lt_64_2,uint,32,4) = 1;
void vqsub_extras(void)
{
@@ -157,10 +113,10 @@ void vqsub_extras(void)
VDUP(vector2, q, uint, u, 64, 2, 0x0);
#define MSG "64 bits saturation when adding zero"
- TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, expected_cumulative_sat_64, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, expected_cumulative_sat_64, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, expected_cumulative_sat_64, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, expected_cumulative_sat_64, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, MSG);
CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_64, MSG);
CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_64, MSG);
@@ -175,10 +131,10 @@ void vqsub_extras(void)
#undef MSG
#define MSG "64 bits saturation cumulative_sat (2)"
- TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, expected_cumulative_sat_64_2, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, expected_cumulative_sat_64_2, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, expected_cumulative_sat_64_2, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, expected_cumulative_sat_64_2, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, MSG);
CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_64_2, MSG);
CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_64_2, MSG);
@@ -197,10 +153,10 @@ void vqsub_extras(void)
#undef MSG
#define MSG "64 bits saturation cumulative_sat (3)"
- TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, expected_cumulative_sat_64_3, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, expected_cumulative_sat_64_3, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, expected_cumulative_sat_64_3, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, expected_cumulative_sat_64_3, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 64, 1, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 64, 1, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 64, 2, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, MSG);
CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_64_3, MSG);
CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_64_3, MSG);
@@ -218,12 +174,12 @@ void vqsub_extras(void)
#undef MSG
#define MSG "less than 64 bits saturation cumulative_sat (1)"
- TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 8, 8, expected_csat_lt_64_1, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 16, 4, expected_csat_lt_64_1, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 32, 2, expected_csat_lt_64_1, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, expected_csat_lt_64_1, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, expected_csat_lt_64_1, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, expected_csat_lt_64_1, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 8, 8, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 16, 4, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , int, s, 32, 2, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 8, 16, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 16, 8, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, int, s, 32, 4, MSG);
CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_lt_64_1, MSG);
CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_lt_64_1, MSG);
@@ -250,12 +206,12 @@ void vqsub_extras(void)
#undef MSG
#define MSG "less than 64 bits saturation cumulative_sat (2)"
- TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 8, 8, expected_csat_lt_64_2, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 16, 4, expected_csat_lt_64_2, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 32, 2, expected_csat_lt_64_2, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 8, 16, expected_csat_lt_64_2, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 16, 8, expected_csat_lt_64_2, MSG);
- TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 32, 4, expected_csat_lt_64_2, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 8, 8, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 16, 4, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, , uint, u, 32, 2, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 8, 16, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 16, 8, MSG);
+ TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 32, 4, MSG);
CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_lt_64_2, MSG);
CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_lt_64_2, MSG);
diff --git a/gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c b/gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c
index a7b7cd3..ad869a3 100644
--- a/gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c
+++ b/gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c
@@ -3,7 +3,8 @@
#include "arm_neon.h"
-void foo (int a)
+int32x2_t
+foo (int a)
{
int32x2_t arg1;
int32x2_t arg2;
@@ -15,4 +16,5 @@ void foo (int a)
we have to tell dg-error to ignore the line number. */
result = vrsra_n_s32 (arg1, arg2, a);
/* { dg-error "must be a constant immediate" "" { target *-*-* } 0 } */
+ return result;
}
diff --git a/gcc/testsuite/gcc.target/aarch64/cpunative/aarch64-cpunative.exp b/gcc/testsuite/gcc.target/aarch64/cpunative/aarch64-cpunative.exp
index ce80ca0..1a17990 100644
--- a/gcc/testsuite/gcc.target/aarch64/cpunative/aarch64-cpunative.exp
+++ b/gcc/testsuite/gcc.target/aarch64/cpunative/aarch64-cpunative.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/aarch64/fp16/fp16.exp b/gcc/testsuite/gcc.target/aarch64/fp16/fp16.exp
index bf11888..e2b24ea 100644
--- a/gcc/testsuite/gcc.target/aarch64/fp16/fp16.exp
+++ b/gcc/testsuite/gcc.target/aarch64/fp16/fp16.exp
@@ -1,5 +1,5 @@
# Tests of 16-bit floating point (__fp16), for both ARM and AArch64.
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/aarch64/narrow_high-intrinsics.c b/gcc/testsuite/gcc.target/aarch64/narrow_high-intrinsics.c
index 07d7803..6d9e831 100644
--- a/gcc/testsuite/gcc.target/aarch64/narrow_high-intrinsics.c
+++ b/gcc/testsuite/gcc.target/aarch64/narrow_high-intrinsics.c
@@ -111,15 +111,15 @@ ONE (vmovn_high, uint32x4_t, uint32x2_t, uint64x2_t, u64)
/* { dg-final { scan-assembler-times "\\taddhn2\\tv" 6} } */
/* { dg-final { scan-assembler-times "rsubhn2\\tv" 6} } */
/* { dg-final { scan-assembler-times "raddhn2\\tv" 6} } */
-/* { dg-final { scan-assembler-times "\\trshrn2 v" 6} } */
-/* { dg-final { scan-assembler-times "\\tshrn2 v" 6} } */
+/* { dg-final { scan-assembler-times "\\trshrn2\\tv" 6} } */
+/* { dg-final { scan-assembler-times "\\tshrn2\\tv" 6} } */
/* { dg-final { scan-assembler-times "sqshrun2\\tv" 3} } */
/* { dg-final { scan-assembler-times "sqrshrun2\\tv" 3} } */
/* { dg-final { scan-assembler-times "sqshrn2\\tv" 3} } */
/* { dg-final { scan-assembler-times "uqshrn2\\tv" 3} } */
/* { dg-final { scan-assembler-times "sqrshrn2\\tv" 3} } */
/* { dg-final { scan-assembler-times "uqrshrn2\\tv" 3} } */
-/* { dg-final { scan-assembler-times "uqxtn2 v" 3} } */
-/* { dg-final { scan-assembler-times "sqxtn2 v" 3} } */
-/* { dg-final { scan-assembler-times "sqxtun2 v" 3} } */
-/* { dg-final { scan-assembler-times "\\txtn2 v" 6} } */
+/* { dg-final { scan-assembler-times "uqxtn2\\tv" 3} } */
+/* { dg-final { scan-assembler-times "sqxtn2\\tv" 3} } */
+/* { dg-final { scan-assembler-times "sqxtun2\\tv" 3} } */
+/* { dg-final { scan-assembler-times "\\txtn2\\tv" 6} } */
diff --git a/gcc/testsuite/gcc.target/aarch64/pr89057.c b/gcc/testsuite/gcc.target/aarch64/pr89057.c
new file mode 100644
index 0000000..1e20024
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/pr89057.c
@@ -0,0 +1,16 @@
+/* { dg-options "-O3" } */
+
+#include <arm_neon.h>
+
+void
+f (int32_t *dst, int32_t *src, int n)
+{
+ for (int i = 0; i < n; ++i)
+ {
+ int32x2x3_t a = vld3_s32 (src + i * 6);
+ int32x2x3_t b = { a.val[2], a.val[1], a.val[0] };
+ vst3_s32 (dst + i * 6, b);
+ }
+}
+
+/* { dg-final { scan-assembler-not {\tins\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/pr97701.c b/gcc/testsuite/gcc.target/aarch64/pr97701.c
new file mode 100644
index 0000000..05a8137
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/pr97701.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-O3" } */
+
+extern char a[][12][18][17][17];
+extern short b[][12][18][17][17];
+extern int c[][2][8][7];
+short *d;
+void e(signed f, int g, char h, char i, char j) {
+ for (int k = 648; k; k += f)
+ for (short l; l < j; l += 9)
+ for (long m = f + 6LL; m < (h ? h : i); m += 2)
+ for (int n = 0; n < 16; n += 3LL) {
+ for (int o = g; o; o++)
+ a[k][l][m][n][o] = b[k][l][m][n][o] = d[k] ? 2 : 1;
+ c[k][l][m][0] = 0;
+ }
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/pr98603.c b/gcc/testsuite/gcc.target/aarch64/pr98603.c
new file mode 100644
index 0000000..f75d8e4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/pr98603.c
@@ -0,0 +1,11 @@
+/* PR rtl-optimization/98603 */
+/* { dg-do compile } */
+/* { dg-options "-O0" } */
+
+int
+foo (void)
+{
+ int b, c;
+ asm goto ("" : "=R" (b), "=r" (c) : : : lab); /* { dg-error "impossible constraint in 'asm'" } */
+lab:;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/simd/simd.exp b/gcc/testsuite/gcc.target/aarch64/simd/simd.exp
index 6eb5e8c..3f7f661 100644
--- a/gcc/testsuite/gcc.target/aarch64/simd/simd.exp
+++ b/gcc/testsuite/gcc.target/aarch64/simd/simd.exp
@@ -1,5 +1,5 @@
# Specific regression driver for AArch64 SIMD instructions.
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 Free Software Foundation, Inc.
# Contributed by ARM Ltd.
#
# This file is part of GCC.
diff --git a/gcc/testsuite/gcc.target/aarch64/simd/vaddlv_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vaddlv_1.c
new file mode 100644
index 0000000..d4afaab
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/simd/vaddlv_1.c
@@ -0,0 +1,56 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+
+#include <arm_neon.h>
+
+#define FUNC(IT, OT, S) \
+OT \
+foo_##S (IT a) \
+{ \
+ return vaddlv_##S (a);\
+}
+
+FUNC (int8x8_t, int16_t, s8)
+/* { dg-final { scan-assembler-times {saddlv\th0, v0\.8b} 1} } */
+
+FUNC (int16x4_t, int32_t, s16)
+/* { dg-final { scan-assembler-times {saddlv\ts0, v0\.4h} 1} } */
+
+FUNC (int32x2_t, int64_t, s32)
+/* { dg-final { scan-assembler-times {saddlp\tv0\.1d, v0\.2s} 1} } */
+
+FUNC (uint8x8_t, uint16_t, u8)
+/* { dg-final { scan-assembler-times {uaddlv\th0, v0\.8b} 1} } */
+
+FUNC (uint16x4_t, uint32_t, u16)
+/* { dg-final { scan-assembler-times {uaddlv\ts0, v0\.4h} 1} } */
+
+FUNC (uint32x2_t, uint64_t, u32)
+/* { dg-final { scan-assembler-times {uaddlp\tv0.1d, v0\.2s} 1} } */
+
+#define FUNCQ(IT, OT, S) \
+OT \
+fooq_##S (IT a) \
+{ \
+ return vaddlvq_##S (a); \
+}
+
+FUNCQ (int8x16_t, int16_t, s8)
+/* { dg-final { scan-assembler-times {saddlv\th0, v0\.16b} 1} } */
+
+FUNCQ (int16x8_t, int32_t, s16)
+/* { dg-final { scan-assembler-times {saddlv\ts0, v0\.8h} 1} } */
+
+FUNCQ (int32x4_t, int64_t, s32)
+/* { dg-final { scan-assembler-times {saddlv\td0, v0\.4s} 1} } */
+
+FUNCQ (uint8x16_t, uint16_t, u8)
+/* { dg-final { scan-assembler-times {uaddlv\th0, v0\.16b} 1} } */
+
+FUNCQ (uint16x8_t, uint32_t, u16)
+/* { dg-final { scan-assembler-times {uaddlv\ts0, v0\.8h} 1} } */
+
+FUNCQ (uint32x4_t, uint64_t, u32)
+/* { dg-final { scan-assembler-times {uaddlv\td0, v0\.4s} 1} } */
+
diff --git a/gcc/testsuite/gcc.target/aarch64/simd/vmovl_high_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vmovl_high_1.c
new file mode 100644
index 0000000..d45bb83
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/simd/vmovl_high_1.c
@@ -0,0 +1,32 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+#include <arm_neon.h>
+
+#include <arm_neon.h>
+
+#define FUNC(IT, OT, S) \
+OT \
+foo_##S (IT a) \
+{ \
+ return vmovl_high_##S (a); \
+}
+
+FUNC (int8x16_t, int16x8_t, s8)
+/* { dg-final { scan-assembler-times {sxtl2\tv0\.8h, v0\.16b} 1} } */
+
+FUNC (int16x8_t, int32x4_t, s16)
+/* { dg-final { scan-assembler-times {sxtl2\tv0\.4s, v0\.8h} 1} } */
+
+FUNC (int32x4_t, int64x2_t, s32)
+/* { dg-final { scan-assembler-times {sxtl2\tv0\.2d, v0\.4s} 1} } */
+
+FUNC (uint8x16_t, uint16x8_t, u8)
+/* { dg-final { scan-assembler-times {uxtl2\tv0\.8h, v0\.16b} 1} } */
+
+FUNC (uint16x8_t, uint32x4_t, u16)
+/* { dg-final { scan-assembler-times {uxtl2\tv0\.4s, v0\.8h} 1} } */
+
+FUNC (uint32x4_t, uint64x2_t, u32)
+/* { dg-final { scan-assembler-times {uxtl2\tv0\.2d, v0\.4s} 1} } */
+
diff --git a/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp
index 8122503..8536933 100644
--- a/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp
+++ b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp
@@ -1,5 +1,5 @@
# Regression driver for SLS mitigation on AArch64.
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
# Contributed by ARM Ltd.
#
# This file is part of GCC.
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/aarch64-sve.exp b/gcc/testsuite/gcc.target/aarch64/sve/aarch64-sve.exp
index 6c1e878..622fc92 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/aarch64-sve.exp
+++ b/gcc/testsuite/gcc.target/aarch64/sve/aarch64-sve.exp
@@ -1,5 +1,5 @@
# Specific regression driver for AArch64 SVE.
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# Contributed by ARM Ltd.
#
# This file is part of GCC.
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp b/gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
index e679323..6146e65 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
@@ -1,5 +1,5 @@
# Assembly-based regression-test driver for the SVE ACLE
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle.exp b/gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle.exp
index ff614b2..a33b65a 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle.exp
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle.exp
@@ -1,5 +1,5 @@
# Specific regression driver for AArch64 SVE.
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# Contributed by ARM Ltd.
#
# This file is part of GCC.
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb.c
index d2b2777..c90730a 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfb.c
@@ -200,8 +200,7 @@ TEST_PREFETCH (prfb_vnum_0, uint8_t,
/*
** prfb_vnum_1:
-** incb x0
-** prfb pldl1keep, p0, \[x0\]
+** prfb pldl1keep, p0, \[x0, #1, mul vl\]
** ret
*/
TEST_PREFETCH (prfb_vnum_1, uint16_t,
@@ -209,24 +208,44 @@ TEST_PREFETCH (prfb_vnum_1, uint16_t,
svprfb_vnum (p0, x0, 1, SV_PLDL1KEEP))
/*
-** prfb_vnum_2:
-** incb x0, all, mul #2
-** prfb pldl1keep, p0, \[x0\]
+** prfb_vnum_31:
+** prfb pldl1keep, p0, \[x0, #31, mul vl\]
** ret
*/
-TEST_PREFETCH (prfb_vnum_2, uint32_t,
- svprfb_vnum (p0, x0, 2, SV_PLDL1KEEP),
- svprfb_vnum (p0, x0, 2, SV_PLDL1KEEP))
+TEST_PREFETCH (prfb_vnum_31, uint16_t,
+ svprfb_vnum (p0, x0, 31, SV_PLDL1KEEP),
+ svprfb_vnum (p0, x0, 31, SV_PLDL1KEEP))
/*
-** prfb_vnum_3:
-** incb x0, all, mul #3
-** prfb pldl1keep, p0, \[x0\]
+** prfb_vnum_32:
+** cntd (x[0-9]+)
+** lsl (x[0-9]+), \1, #?8
+** add (x[0-9]+), (\2, x0|x0, \2)
+** prfb pldl1keep, p0, \[\3\]
+** ret
+*/
+TEST_PREFETCH (prfb_vnum_32, uint16_t,
+ svprfb_vnum (p0, x0, 32, SV_PLDL1KEEP),
+ svprfb_vnum (p0, x0, 32, SV_PLDL1KEEP))
+
+/*
+** prfb_vnum_m32:
+** prfb pldl1keep, p0, \[x0, #-32, mul vl\]
+** ret
+*/
+TEST_PREFETCH (prfb_vnum_m32, uint16_t,
+ svprfb_vnum (p0, x0, -32, SV_PLDL1KEEP),
+ svprfb_vnum (p0, x0, -32, SV_PLDL1KEEP))
+
+/*
+** prfb_vnum_m33:
+** ...
+** prfb pldl1keep, p0, \[x[0-9]+\]
** ret
*/
-TEST_PREFETCH (prfb_vnum_3, uint64_t,
- svprfb_vnum (p0, x0, 3, SV_PLDL1KEEP),
- svprfb_vnum (p0, x0, 3, SV_PLDL1KEEP))
+TEST_PREFETCH (prfb_vnum_m33, uint16_t,
+ svprfb_vnum (p0, x0, -33, SV_PLDL1KEEP),
+ svprfb_vnum (p0, x0, -33, SV_PLDL1KEEP))
/*
** prfb_vnum_x1:
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd.c
index 72b2e64..869ef3d 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfd.c
@@ -200,8 +200,7 @@ TEST_PREFETCH (prfd_vnum_0, uint8_t,
/*
** prfd_vnum_1:
-** incb x0
-** prfd pldl1keep, p0, \[x0\]
+** prfd pldl1keep, p0, \[x0, #1, mul vl\]
** ret
*/
TEST_PREFETCH (prfd_vnum_1, uint16_t,
@@ -209,24 +208,44 @@ TEST_PREFETCH (prfd_vnum_1, uint16_t,
svprfd_vnum (p0, x0, 1, SV_PLDL1KEEP))
/*
-** prfd_vnum_2:
-** incb x0, all, mul #2
-** prfd pldl1keep, p0, \[x0\]
+** prfd_vnum_31:
+** prfd pldl1keep, p0, \[x0, #31, mul vl\]
** ret
*/
-TEST_PREFETCH (prfd_vnum_2, uint32_t,
- svprfd_vnum (p0, x0, 2, SV_PLDL1KEEP),
- svprfd_vnum (p0, x0, 2, SV_PLDL1KEEP))
+TEST_PREFETCH (prfd_vnum_31, uint16_t,
+ svprfd_vnum (p0, x0, 31, SV_PLDL1KEEP),
+ svprfd_vnum (p0, x0, 31, SV_PLDL1KEEP))
/*
-** prfd_vnum_3:
-** incb x0, all, mul #3
-** prfd pldl1keep, p0, \[x0\]
+** prfd_vnum_32:
+** cntd (x[0-9]+)
+** lsl (x[0-9]+), \1, #?8
+** add (x[0-9]+), (\2, x0|x0, \2)
+** prfd pldl1keep, p0, \[\3\]
+** ret
+*/
+TEST_PREFETCH (prfd_vnum_32, uint16_t,
+ svprfd_vnum (p0, x0, 32, SV_PLDL1KEEP),
+ svprfd_vnum (p0, x0, 32, SV_PLDL1KEEP))
+
+/*
+** prfd_vnum_m32:
+** prfd pldl1keep, p0, \[x0, #-32, mul vl\]
+** ret
+*/
+TEST_PREFETCH (prfd_vnum_m32, uint16_t,
+ svprfd_vnum (p0, x0, -32, SV_PLDL1KEEP),
+ svprfd_vnum (p0, x0, -32, SV_PLDL1KEEP))
+
+/*
+** prfd_vnum_m33:
+** ...
+** prfd pldl1keep, p0, \[x[0-9]+\]
** ret
*/
-TEST_PREFETCH (prfd_vnum_3, uint64_t,
- svprfd_vnum (p0, x0, 3, SV_PLDL1KEEP),
- svprfd_vnum (p0, x0, 3, SV_PLDL1KEEP))
+TEST_PREFETCH (prfd_vnum_m33, uint16_t,
+ svprfd_vnum (p0, x0, -33, SV_PLDL1KEEP),
+ svprfd_vnum (p0, x0, -33, SV_PLDL1KEEP))
/*
** prfd_vnum_x1:
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh.c
index 89069f9..45a735e 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfh.c
@@ -200,8 +200,7 @@ TEST_PREFETCH (prfh_vnum_0, uint8_t,
/*
** prfh_vnum_1:
-** incb x0
-** prfh pldl1keep, p0, \[x0\]
+** prfh pldl1keep, p0, \[x0, #1, mul vl\]
** ret
*/
TEST_PREFETCH (prfh_vnum_1, uint16_t,
@@ -209,24 +208,44 @@ TEST_PREFETCH (prfh_vnum_1, uint16_t,
svprfh_vnum (p0, x0, 1, SV_PLDL1KEEP))
/*
-** prfh_vnum_2:
-** incb x0, all, mul #2
-** prfh pldl1keep, p0, \[x0\]
+** prfh_vnum_31:
+** prfh pldl1keep, p0, \[x0, #31, mul vl\]
** ret
*/
-TEST_PREFETCH (prfh_vnum_2, uint32_t,
- svprfh_vnum (p0, x0, 2, SV_PLDL1KEEP),
- svprfh_vnum (p0, x0, 2, SV_PLDL1KEEP))
+TEST_PREFETCH (prfh_vnum_31, uint16_t,
+ svprfh_vnum (p0, x0, 31, SV_PLDL1KEEP),
+ svprfh_vnum (p0, x0, 31, SV_PLDL1KEEP))
/*
-** prfh_vnum_3:
-** incb x0, all, mul #3
-** prfh pldl1keep, p0, \[x0\]
+** prfh_vnum_32:
+** cntd (x[0-9]+)
+** lsl (x[0-9]+), \1, #?8
+** add (x[0-9]+), (\2, x0|x0, \2)
+** prfh pldl1keep, p0, \[\3\]
+** ret
+*/
+TEST_PREFETCH (prfh_vnum_32, uint16_t,
+ svprfh_vnum (p0, x0, 32, SV_PLDL1KEEP),
+ svprfh_vnum (p0, x0, 32, SV_PLDL1KEEP))
+
+/*
+** prfh_vnum_m32:
+** prfh pldl1keep, p0, \[x0, #-32, mul vl\]
+** ret
+*/
+TEST_PREFETCH (prfh_vnum_m32, uint16_t,
+ svprfh_vnum (p0, x0, -32, SV_PLDL1KEEP),
+ svprfh_vnum (p0, x0, -32, SV_PLDL1KEEP))
+
+/*
+** prfh_vnum_m33:
+** ...
+** prfh pldl1keep, p0, \[x[0-9]+\]
** ret
*/
-TEST_PREFETCH (prfh_vnum_3, uint64_t,
- svprfh_vnum (p0, x0, 3, SV_PLDL1KEEP),
- svprfh_vnum (p0, x0, 3, SV_PLDL1KEEP))
+TEST_PREFETCH (prfh_vnum_m33, uint16_t,
+ svprfh_vnum (p0, x0, -33, SV_PLDL1KEEP),
+ svprfh_vnum (p0, x0, -33, SV_PLDL1KEEP))
/*
** prfh_vnum_x1:
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw.c
index bbf6a45..444187f 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/prfw.c
@@ -200,8 +200,7 @@ TEST_PREFETCH (prfw_vnum_0, uint8_t,
/*
** prfw_vnum_1:
-** incb x0
-** prfw pldl1keep, p0, \[x0\]
+** prfw pldl1keep, p0, \[x0, #1, mul vl\]
** ret
*/
TEST_PREFETCH (prfw_vnum_1, uint16_t,
@@ -209,24 +208,44 @@ TEST_PREFETCH (prfw_vnum_1, uint16_t,
svprfw_vnum (p0, x0, 1, SV_PLDL1KEEP))
/*
-** prfw_vnum_2:
-** incb x0, all, mul #2
-** prfw pldl1keep, p0, \[x0\]
+** prfw_vnum_31:
+** prfw pldl1keep, p0, \[x0, #31, mul vl\]
** ret
*/
-TEST_PREFETCH (prfw_vnum_2, uint32_t,
- svprfw_vnum (p0, x0, 2, SV_PLDL1KEEP),
- svprfw_vnum (p0, x0, 2, SV_PLDL1KEEP))
+TEST_PREFETCH (prfw_vnum_31, uint16_t,
+ svprfw_vnum (p0, x0, 31, SV_PLDL1KEEP),
+ svprfw_vnum (p0, x0, 31, SV_PLDL1KEEP))
/*
-** prfw_vnum_3:
-** incb x0, all, mul #3
-** prfw pldl1keep, p0, \[x0\]
+** prfw_vnum_32:
+** cntd (x[0-9]+)
+** lsl (x[0-9]+), \1, #?8
+** add (x[0-9]+), (\2, x0|x0, \2)
+** prfw pldl1keep, p0, \[\3\]
+** ret
+*/
+TEST_PREFETCH (prfw_vnum_32, uint16_t,
+ svprfw_vnum (p0, x0, 32, SV_PLDL1KEEP),
+ svprfw_vnum (p0, x0, 32, SV_PLDL1KEEP))
+
+/*
+** prfw_vnum_m32:
+** prfw pldl1keep, p0, \[x0, #-32, mul vl\]
+** ret
+*/
+TEST_PREFETCH (prfw_vnum_m32, uint16_t,
+ svprfw_vnum (p0, x0, -32, SV_PLDL1KEEP),
+ svprfw_vnum (p0, x0, -32, SV_PLDL1KEEP))
+
+/*
+** prfw_vnum_m33:
+** ...
+** prfw pldl1keep, p0, \[x[0-9]+\]
** ret
*/
-TEST_PREFETCH (prfw_vnum_3, uint64_t,
- svprfw_vnum (p0, x0, 3, SV_PLDL1KEEP),
- svprfw_vnum (p0, x0, 3, SV_PLDL1KEEP))
+TEST_PREFETCH (prfw_vnum_m33, uint16_t,
+ svprfw_vnum (p0, x0, -33, SV_PLDL1KEEP),
+ svprfw_vnum (p0, x0, -33, SV_PLDL1KEEP))
/*
** prfw_vnum_x1:
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_s8.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_s8.c
index 1eb0bf1..c916d20 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_s8.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_s8.c
@@ -74,7 +74,7 @@ TEST_STORE (st4_s8_28, svint8x4_t, int8_t,
/*
** st4_s8_32:
** [^{]*
-** st4b {z0\.b - z3\.b}, p0, \[x[0-9]+\]
+** st4b {z0\.b - z3\.b}, p0, \[x[0-9]+, x[0-9]+\]
** ret
*/
TEST_STORE (st4_s8_32, svint8x4_t, int8_t,
@@ -135,7 +135,7 @@ TEST_STORE (st4_s8_m32, svint8x4_t, int8_t,
/*
** st4_s8_m36:
** [^{]*
-** st4b {z0\.b - z3\.b}, p0, \[x[0-9]+\]
+** st4b {z0\.b - z3\.b}, p0, \[x[0-9]+, x[0-9]+\]
** ret
*/
TEST_STORE (st4_s8_m36, svint8x4_t, int8_t,
@@ -205,7 +205,7 @@ TEST_STORE (st4_vnum_s8_28, svint8x4_t, int8_t,
/*
** st4_vnum_s8_32:
** [^{]*
-** st4b {z0\.b - z3\.b}, p0, \[x[0-9]+\]
+** st4b {z0\.b - z3\.b}, p0, \[x[0-9]+, x[0-9]+\]
** ret
*/
TEST_STORE (st4_vnum_s8_32, svint8x4_t, int8_t,
@@ -266,7 +266,7 @@ TEST_STORE (st4_vnum_s8_m32, svint8x4_t, int8_t,
/*
** st4_vnum_s8_m36:
** [^{]*
-** st4b {z0\.b - z3\.b}, p0, \[x[0-9]+\]
+** st4b {z0\.b - z3\.b}, p0, \[x[0-9]+, x[0-9]+\]
** ret
*/
TEST_STORE (st4_vnum_s8_m36, svint8x4_t, int8_t,
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_u8.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_u8.c
index e7c2e7d..32b8c8c 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_u8.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/asm/st4_u8.c
@@ -74,7 +74,7 @@ TEST_STORE (st4_u8_28, svuint8x4_t, uint8_t,
/*
** st4_u8_32:
** [^{]*
-** st4b {z0\.b - z3\.b}, p0, \[x[0-9]+\]
+** st4b {z0\.b - z3\.b}, p0, \[x[0-9]+, x[0-9]+\]
** ret
*/
TEST_STORE (st4_u8_32, svuint8x4_t, uint8_t,
@@ -135,7 +135,7 @@ TEST_STORE (st4_u8_m32, svuint8x4_t, uint8_t,
/*
** st4_u8_m36:
** [^{]*
-** st4b {z0\.b - z3\.b}, p0, \[x[0-9]+\]
+** st4b {z0\.b - z3\.b}, p0, \[x[0-9]+, x[0-9]+\]
** ret
*/
TEST_STORE (st4_u8_m36, svuint8x4_t, uint8_t,
@@ -205,7 +205,7 @@ TEST_STORE (st4_vnum_u8_28, svuint8x4_t, uint8_t,
/*
** st4_vnum_u8_32:
** [^{]*
-** st4b {z0\.b - z3\.b}, p0, \[x[0-9]+\]
+** st4b {z0\.b - z3\.b}, p0, \[x[0-9]+, x[0-9]+\]
** ret
*/
TEST_STORE (st4_vnum_u8_32, svuint8x4_t, uint8_t,
@@ -266,7 +266,7 @@ TEST_STORE (st4_vnum_u8_m32, svuint8x4_t, uint8_t,
/*
** st4_vnum_u8_m36:
** [^{]*
-** st4b {z0\.b - z3\.b}, p0, \[x[0-9]+\]
+** st4b {z0\.b - z3\.b}, p0, \[x[0-9]+, x[0-9]+\]
** ret
*/
TEST_STORE (st4_vnum_u8_m36, svuint8x4_t, uint8_t,
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general/ldff1_8.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/ldff1_8.c
new file mode 100644
index 0000000..b55cc1f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/ldff1_8.c
@@ -0,0 +1,32 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+#include <arm_sve.h>
+
+void
+foo (int8_t *ptr1, int8_t *ptr2, svint8_t *res1, svint8_t *res2)
+{
+ svbool_t pg = svptrue_b8 ();
+
+ svsetffr ();
+ svint8_t x1 = svldff1 (pg, ptr1);
+ svbool_t ok1 = svrdffr ();
+ if (!svptest_last (pg, ok1))
+ {
+ x1 = svsel (ok1, x1, svdup_s8 (0));
+ svsetffr ();
+ }
+
+ svint8_t x2 = svldff1 (pg, ptr2);
+ svbool_t ok2 = svrdffr ();
+ if (!svptest_last (pg, ok2))
+ x2 = svsel (ok2, x2, svdup_s8 (0));
+
+ *res1 = x1;
+ *res2 = x2;
+}
+
+/* { dg-final { scan-assembler-times {\trdffrs\t} 2 } } */
+/* { dg-final { scan-assembler-times {\t(?:b.last|b.nfrst)\t} 2 } } */
+/* { dg-final { scan-assembler-not {\trdffr\t} } } */
+/* { dg-final { scan-assembler-not {\tptest\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/adr_6.c b/gcc/testsuite/gcc.target/aarch64/sve/adr_6.c
new file mode 100644
index 0000000..1f92749
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/adr_6.c
@@ -0,0 +1,43 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP_IMM(TYPE, AMT) \
+ TYPE test##_##TYPE##_##AMT (TYPE a, TYPE b) { return a + b * AMT; }
+
+#define TEST_OP(TYPE) \
+ TEST_OP_IMM (TYPE, 2) \
+ TEST_OP_IMM (TYPE, 4) \
+ TEST_OP_IMM (TYPE, 8)
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (int8_t, 32)
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (int8_t, 64)
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (int16_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+/* These two can't use ADR. */
+TEST_TYPE (int8_t, 128)
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (int16_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (int32_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler-times {\tadd\tz[0-9]+\.b,} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b,} 6 } } */
+
+/* { dg-final { scan-assembler-times {\tadr\tz[0-9]+\.s, \[z[0-9]+\.s, z[0-9]+\.s, lsl #?1\]\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tadr\tz[0-9]+\.s, \[z[0-9]+\.s, z[0-9]+\.s, lsl #?2\]\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tadr\tz[0-9]+\.s, \[z[0-9]+\.s, z[0-9]+\.s, lsl #?3\]\n} 4 } } */
+
+/* { dg-final { scan-assembler-times {\tadr\tz[0-9]+\.d, \[z[0-9]+\.d, z[0-9]+\.d, lsl #?1\]\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tadr\tz[0-9]+\.d, \[z[0-9]+\.d, z[0-9]+\.d, lsl #?2\]\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tadr\tz[0-9]+\.d, \[z[0-9]+\.d, z[0-9]+\.d, lsl #?3\]\n} 6 } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/asrdiv_4.c b/gcc/testsuite/gcc.target/aarch64/sve/asrdiv_4.c
new file mode 100644
index 0000000..6684fe1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/asrdiv_4.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include <stdint.h>
+
+#define DEF_LOOP(TYPE1, TYPE2, COUNT) \
+ void __attribute__ ((noipa)) \
+ test_##TYPE1##_##TYPE2##_##TYPE3 (TYPE2 *restrict r, \
+ TYPE1 *restrict pred, \
+ TYPE2 *restrict a) \
+ { \
+ for (int i = 0; i < COUNT; ++i) \
+ if (pred[i]) \
+ r[i] = a[i] / 16; \
+ }
+
+#define TEST_ALL(T) \
+ T (int16_t, int8_t, 7) \
+ T (int32_t, int8_t, 3) \
+ T (int32_t, int16_t, 3) \
+ T (int64_t, int8_t, 5) \
+ T (int64_t, int16_t, 5) \
+ T (int64_t, int32_t, 5)
+
+TEST_ALL (DEF_LOOP)
+
+/* { dg-final { scan-assembler-times {\tasrd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #4\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasrd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #4\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasrd\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #4\n} 1 } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cnot_2.c b/gcc/testsuite/gcc.target/aarch64/sve/cnot_2.c
new file mode 100644
index 0000000..fe77823
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cnot_2.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include <stdint.h>
+
+#define DEF_LOOP(TYPE1, TYPE2, COUNT) \
+ void __attribute__ ((noipa)) \
+ test_##TYPE1##_##TYPE2##_##TYPE3 (TYPE2 *restrict r, \
+ TYPE1 *restrict pred, \
+ TYPE2 *restrict a) \
+ { \
+ for (int i = 0; i < COUNT; ++i) \
+ if (pred[i]) \
+ r[i] = !a[i]; \
+ }
+
+#define TEST_ALL(T) \
+ T (int16_t, int8_t, 7) \
+ T (int32_t, int8_t, 3) \
+ T (int32_t, int16_t, 3) \
+ T (int64_t, int8_t, 5) \
+ T (int64_t, int16_t, 5) \
+ T (int64_t, int32_t, 5)
+
+TEST_ALL (DEF_LOOP)
+
+/* { dg-final { scan-assembler-times {\tcnot\tz[0-9]+\.b, p[0-7]/m,} 3 } } */
+/* { dg-final { scan-assembler-times {\tcnot\tz[0-9]+\.h, p[0-7]/m,} 2 } } */
+/* { dg-final { scan-assembler-times {\tcnot\tz[0-9]+\.s, p[0-7]/m,} 1 } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1.c
new file mode 100644
index 0000000..478b52a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1.c
@@ -0,0 +1,32 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include <stdint.h>
+
+#define DEF_LOOP(TYPE1, TYPE2, COUNT) \
+ void __attribute__ ((noipa)) \
+ test_##TYPE1##_##TYPE2 (TYPE2 *__restrict r, \
+ TYPE1 *__restrict a, \
+ TYPE2 *__restrict b) \
+ { \
+ for (int i = 0; i < COUNT; ++i) \
+ r[i] = a[i] == 0 ? b[i] / 16 : b[i]; \
+ }
+
+#define TEST_ALL(T) \
+ T (int16_t, int8_t, 7) \
+ T (int32_t, int8_t, 3) \
+ T (int32_t, int16_t, 3) \
+ T (int64_t, int8_t, 5) \
+ T (int64_t, int16_t, 5) \
+ T (int64_t, int32_t, 5)
+
+TEST_ALL (DEF_LOOP)
+
+/* { dg-final { scan-assembler-times {\tasrd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #4\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasrd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #4\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasrd\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #4\n} 1 } } */
+
+/* { dg-final { scan-assembler-not {\tmov\tz} } } */
+/* { dg-final { scan-assembler-not {\tmovprfx\t} } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1_run.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1_run.c
new file mode 100644
index 0000000..25c88ea
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1_run.c
@@ -0,0 +1,26 @@
+/* { dg-do run { target { aarch64_sve_hw } } } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include "cond_asrd_1.c"
+
+#define TEST_LOOP(TYPE1, TYPE2, N) \
+ { \
+ TYPE1 a[N]; \
+ TYPE2 r[N], b[N]; \
+ for (int i = 0; i < N; ++i) \
+ { \
+ a[i] = i % 3 < 2 ? 0 : i * 13; \
+ b[i] = (i & 1 ? i : -i) * 17; \
+ asm volatile ("" ::: "memory"); \
+ } \
+ test_##TYPE1##_##TYPE2 (r, a, b); \
+ for (int i = 0; i < N; ++i) \
+ if (r[i] != (TYPE2) (a[i] == 0 ? b[i] / 16 : b[i])) \
+ __builtin_abort (); \
+ }
+
+int main ()
+{
+ TEST_ALL (TEST_LOOP)
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_2.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_2.c
new file mode 100644
index 0000000..e4040ee
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_2.c
@@ -0,0 +1,35 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include <stdint.h>
+
+#define DEF_LOOP(TYPE1, TYPE2, COUNT) \
+ void __attribute__ ((noipa)) \
+ test_##TYPE1##_##TYPE2 (TYPE2 *__restrict r, \
+ TYPE1 *__restrict a, \
+ TYPE2 *__restrict b) \
+ { \
+ for (int i = 0; i < COUNT; ++i) \
+ r[i] = a[i] == 0 ? b[i] / 16 : a[i]; \
+ }
+
+#define TEST_ALL(T) \
+ T (int16_t, int8_t, 7) \
+ T (int32_t, int8_t, 3) \
+ T (int32_t, int16_t, 3) \
+ T (int64_t, int8_t, 5) \
+ T (int64_t, int16_t, 5) \
+ T (int64_t, int32_t, 5)
+
+TEST_ALL (DEF_LOOP)
+
+/* { dg-final { scan-assembler-times {\tasrd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #4\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasrd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #4\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasrd\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #4\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-not {\tmov\tz} } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_2_run.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_2_run.c
new file mode 100644
index 0000000..ba1b722
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_2_run.c
@@ -0,0 +1,26 @@
+/* { dg-do run { target { aarch64_sve_hw } } } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include "cond_asrd_2.c"
+
+#define TEST_LOOP(TYPE1, TYPE2, N) \
+ { \
+ TYPE1 a[N]; \
+ TYPE2 r[N], b[N]; \
+ for (int i = 0; i < N; ++i) \
+ { \
+ a[i] = i % 3 < 2 ? 0 : i * 13; \
+ b[i] = (i & 1 ? i : -i) * 17; \
+ asm volatile ("" ::: "memory"); \
+ } \
+ test_##TYPE1##_##TYPE2 (r, a, b); \
+ for (int i = 0; i < N; ++i) \
+ if (r[i] != (TYPE2) (a[i] == 0 ? b[i] / 16 : a[i])) \
+ __builtin_abort (); \
+ }
+
+int main ()
+{
+ TEST_ALL (TEST_LOOP)
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_3.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_3.c
new file mode 100644
index 0000000..0d620a3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_3.c
@@ -0,0 +1,35 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include <stdint.h>
+
+#define DEF_LOOP(TYPE1, TYPE2, COUNT) \
+ void __attribute__ ((noipa)) \
+ test_##TYPE1##_##TYPE2 (TYPE2 *__restrict r, \
+ TYPE1 *__restrict a, \
+ TYPE2 *__restrict b) \
+ { \
+ for (int i = 0; i < COUNT; ++i) \
+ r[i] = a[i] == 0 ? b[i] / 16 : 0; \
+ }
+
+#define TEST_ALL(T) \
+ T (int16_t, int8_t, 7) \
+ T (int32_t, int8_t, 3) \
+ T (int32_t, int16_t, 3) \
+ T (int64_t, int8_t, 5) \
+ T (int64_t, int16_t, 5) \
+ T (int64_t, int32_t, 5)
+
+TEST_ALL (DEF_LOOP)
+
+/* { dg-final { scan-assembler-times {\tasrd\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, #4\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasrd\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, #4\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasrd\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, #4\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.b, p[0-7]/z, z[0-9]+\.b\n} 3 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.h, p[0-7]/z, z[0-9]+\.h\n} 2 { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-times {\tmovprfx\tz[0-9]+\.s, p[0-7]/z, z[0-9]+\.s\n} 1 { xfail *-*-* } } } */
+
+/* { dg-final { scan-assembler-not {\tmov\tz} { xfail *-*-* } } } */
+/* { dg-final { scan-assembler-not {\tsel\t} { xfail *-*-* } } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_3_run.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_3_run.c
new file mode 100644
index 0000000..42ab6fe
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_3_run.c
@@ -0,0 +1,26 @@
+/* { dg-do run { target { aarch64_sve_hw } } } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include "cond_asrd_3.c"
+
+#define TEST_LOOP(TYPE1, TYPE2, N) \
+ { \
+ TYPE1 a[N]; \
+ TYPE2 r[N], b[N]; \
+ for (int i = 0; i < N; ++i) \
+ { \
+ a[i] = i % 3 < 2 ? 0 : i * 13; \
+ b[i] = (i & 1 ? i : -i) * 17; \
+ asm volatile ("" ::: "memory"); \
+ } \
+ test_##TYPE1##_##TYPE2 (r, a, b); \
+ for (int i = 0; i < N; ++i) \
+ if (r[i] != (TYPE2) (a[i] == 0 ? b[i] / 16 : 0)) \
+ __builtin_abort (); \
+ }
+
+int main ()
+{
+ TEST_ALL (TEST_LOOP)
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4.c
new file mode 100644
index 0000000..729d3f4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4.c
@@ -0,0 +1,32 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include <stdint.h>
+
+#define DEF_LOOP(TYPE1, TYPE2, COUNT) \
+ void __attribute__ ((noipa)) \
+ test_##TYPE1##_##TYPE2 (TYPE2 *__restrict r, \
+ TYPE2 *__restrict a, \
+ TYPE1 *__restrict pred) \
+ { \
+ for (int i = 0; i < COUNT; ++i) \
+ r[i] = pred[i] ? !a[i] : a[i]; \
+ }
+
+#define TEST_ALL(T) \
+ T (int16_t, int8_t, 7) \
+ T (int32_t, int8_t, 3) \
+ T (int32_t, int16_t, 3) \
+ T (int64_t, int8_t, 5) \
+ T (int64_t, int16_t, 5) \
+ T (int64_t, int32_t, 5)
+
+TEST_ALL (DEF_LOOP)
+
+/* { dg-final { scan-assembler-times {\tcnot\tz[0-9]+\.b, p[0-7]/m,} 3 } } */
+/* { dg-final { scan-assembler-times {\tcnot\tz[0-9]+\.h, p[0-7]/m,} 2 } } */
+/* { dg-final { scan-assembler-times {\tcnot\tz[0-9]+\.s, p[0-7]/m,} 1 } } */
+
+/* { dg-final { scan-assembler-not {\tmov\tz} } } */
+/* { dg-final { scan-assembler-not {\tmovprfx\t} } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4_run.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4_run.c
new file mode 100644
index 0000000..de9c0a5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4_run.c
@@ -0,0 +1,26 @@
+/* { dg-do run { target { aarch64_sve_hw } } } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include "cond_cnot_4.c"
+
+#define TEST_LOOP(TYPE1, TYPE2, N) \
+ { \
+ TYPE1 pred[N]; \
+ TYPE2 r[N], a[N]; \
+ for (int i = 0; i < N; ++i) \
+ { \
+ a[i] = i & 1 ? 0 : 3 * (i + 1); \
+ pred[i] = (i % 3 < 2); \
+ asm volatile ("" ::: "memory"); \
+ } \
+ test_##TYPE1##_##TYPE2 (r, a, pred); \
+ for (int i = 0; i < N; ++i) \
+ if (r[i] != (TYPE2) (pred[i] ? !a[i] : a[i])) \
+ __builtin_abort (); \
+ }
+
+int main ()
+{
+ TEST_ALL (TEST_LOOP)
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_5.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_5.c
new file mode 100644
index 0000000..7318e10
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_5.c
@@ -0,0 +1,32 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include <stdint.h>
+
+#define DEF_LOOP(TYPE1, TYPE2, COUNT) \
+ void __attribute__ ((noipa)) \
+ test_##TYPE1##_##TYPE2 (TYPE2 *__restrict r, \
+ TYPE1 *__restrict a, \
+ TYPE2 *__restrict b) \
+ { \
+ for (int i = 0; i < COUNT; ++i) \
+ r[i] = a[i] == 0 ? !b[i] : a[i]; \
+ }
+
+#define TEST_ALL(T) \
+ T (int16_t, int8_t, 7) \
+ T (int32_t, int8_t, 3) \
+ T (int32_t, int16_t, 3) \
+ T (int64_t, int8_t, 5) \
+ T (int64_t, int16_t, 5) \
+ T (int64_t, int32_t, 5)
+
+TEST_ALL (DEF_LOOP)
+
+/* { dg-final { scan-assembler-times {\tcnot\tz[0-9]+\.b, p[0-7]/m,} 3 } } */
+/* { dg-final { scan-assembler-times {\tcnot\tz[0-9]+\.h, p[0-7]/m,} 2 } } */
+/* { dg-final { scan-assembler-times {\tcnot\tz[0-9]+\.s, p[0-7]/m,} 1 } } */
+
+/* { dg-final { scan-assembler-not {\tmov\tz} } } */
+/* { dg-final { scan-assembler-not {\tmovprfx\t} } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_5_run.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_5_run.c
new file mode 100644
index 0000000..f8f277c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_5_run.c
@@ -0,0 +1,26 @@
+/* { dg-do run { target { aarch64_sve_hw } } } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include "cond_cnot_5.c"
+
+#define TEST_LOOP(TYPE1, TYPE2, N) \
+ { \
+ TYPE1 a[N]; \
+ TYPE2 r[N], b[N]; \
+ for (int i = 0; i < N; ++i) \
+ { \
+ a[i] = i % 3 < 2 ? 0 : i * 42; \
+ b[i] = i & 1 ? 0 : 3 * (i + 1); \
+ asm volatile ("" ::: "memory"); \
+ } \
+ test_##TYPE1##_##TYPE2 (r, a, b); \
+ for (int i = 0; i < N; ++i) \
+ if (r[i] != (TYPE2) (a[i] == 0 ? !b[i] : a[i])) \
+ __builtin_abort (); \
+ }
+
+int main ()
+{
+ TEST_ALL (TEST_LOOP)
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_6.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_6.c
new file mode 100644
index 0000000..d44e357
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_6.c
@@ -0,0 +1,31 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include <stdint.h>
+
+#define DEF_LOOP(TYPE1, TYPE2, COUNT) \
+ void __attribute__ ((noipa)) \
+ test_##TYPE1##_##TYPE2 (TYPE2 *__restrict r, \
+ TYPE1 *__restrict a, \
+ TYPE2 *__restrict b) \
+ { \
+ for (int i = 0; i < COUNT; ++i) \
+ r[i] = a[i] == 0 ? !b[i] : 127; \
+ }
+
+#define TEST_ALL(T) \
+ T (int16_t, int8_t, 7) \
+ T (int32_t, int8_t, 3) \
+ T (int32_t, int16_t, 3) \
+ T (int64_t, int8_t, 5) \
+ T (int64_t, int16_t, 5) \
+ T (int64_t, int32_t, 5)
+
+TEST_ALL (DEF_LOOP)
+
+/* { dg-final { scan-assembler-times {\tcnot\tz[0-9]+\.b, p[0-7]/m,} 3 } } */
+/* { dg-final { scan-assembler-times {\tcnot\tz[0-9]+\.h, p[0-7]/m,} 2 } } */
+/* { dg-final { scan-assembler-times {\tcnot\tz[0-9]+\.s, p[0-7]/m,} 1 } } */
+
+/* { dg-final { scan-assembler-not {\tmov\tz[^\n]*z} } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_6_run.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_6_run.c
new file mode 100644
index 0000000..9e33616
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_6_run.c
@@ -0,0 +1,26 @@
+/* { dg-do run { target { aarch64_sve_hw } } } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include "cond_cnot_6.c"
+
+#define TEST_LOOP(TYPE1, TYPE2, N) \
+ { \
+ TYPE1 a[N]; \
+ TYPE2 r[N], b[N]; \
+ for (int i = 0; i < N; ++i) \
+ { \
+ a[i] = i % 3 < 2 ? 0 : i * 42; \
+ b[i] = i & 1 ? 0 : 3 * (i + 1); \
+ asm volatile ("" ::: "memory"); \
+ } \
+ test_##TYPE1##_##TYPE2 (r, a, b); \
+ for (int i = 0; i < N; ++i) \
+ if (r[i] != (TYPE2) (a[i] == 0 ? !b[i] : 127)) \
+ __builtin_abort (); \
+ }
+
+int main ()
+{
+ TEST_ALL (TEST_LOOP)
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5.c
new file mode 100644
index 0000000..17b3f86
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5.c
@@ -0,0 +1,49 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include <stdint.h>
+
+#define abs(A) ((A) < 0 ? -(A) : (A))
+#define neg(A) (-(A))
+#define not(A) (~(A))
+
+#define DEF_LOOP(TYPE1, TYPE2, COUNT, OP) \
+ void __attribute__ ((noipa)) \
+ test_##TYPE1##_##TYPE2##_##OP (TYPE2 *__restrict r, \
+ TYPE2 *__restrict a, \
+ TYPE1 *__restrict pred) \
+ { \
+ for (int i = 0; i < COUNT; ++i) \
+ r[i] = pred[i] ? OP (a[i]) : a[i]; \
+ }
+
+#define TEST_TYPES(T, TYPE1, TYPE2, COUNT) \
+ T (TYPE1, TYPE2, COUNT, abs) \
+ T (TYPE1, TYPE2, COUNT, neg) \
+ T (TYPE1, TYPE2, COUNT, not)
+
+#define TEST_ALL(T) \
+ TEST_TYPES (T, int16_t, int8_t, 7) \
+ TEST_TYPES (T, int32_t, int8_t, 3) \
+ TEST_TYPES (T, int32_t, int16_t, 3) \
+ TEST_TYPES (T, int64_t, int8_t, 5) \
+ TEST_TYPES (T, int64_t, int16_t, 5) \
+ TEST_TYPES (T, int64_t, int32_t, 5)
+
+TEST_ALL (DEF_LOOP)
+
+/* { dg-final { scan-assembler-times {\tabs\tz[0-9]+\.b, p[0-7]/m,} 3 } } */
+/* { dg-final { scan-assembler-times {\tabs\tz[0-9]+\.h, p[0-7]/m,} 2 } } */
+/* { dg-final { scan-assembler-times {\tabs\tz[0-9]+\.s, p[0-7]/m,} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tneg\tz[0-9]+\.b, p[0-7]/m,} 3 } } */
+/* { dg-final { scan-assembler-times {\tneg\tz[0-9]+\.h, p[0-7]/m,} 2 } } */
+/* { dg-final { scan-assembler-times {\tneg\tz[0-9]+\.s, p[0-7]/m,} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tnot\tz[0-9]+\.b, p[0-7]/m,} 3 } } */
+/* { dg-final { scan-assembler-times {\tnot\tz[0-9]+\.h, p[0-7]/m,} 2 } } */
+/* { dg-final { scan-assembler-times {\tnot\tz[0-9]+\.s, p[0-7]/m,} 1 } } */
+
+/* { dg-final { scan-assembler-not {\tmov\tz} } } */
+/* { dg-final { scan-assembler-not {\tmovprfx\t} } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5_run.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5_run.c
new file mode 100644
index 0000000..d6d5526
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5_run.c
@@ -0,0 +1,26 @@
+/* { dg-do run { target { aarch64_sve_hw } } } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include "cond_unary_5.c"
+
+#define TEST_LOOP(TYPE1, TYPE2, N, OP) \
+ { \
+ TYPE1 pred[N]; \
+ TYPE2 r[N], a[N]; \
+ for (int i = 0; i < N; ++i) \
+ { \
+ a[i] = (i & 1 ? i : 3 * i) * (i % 3 == 0 ? 1 : -1); \
+ pred[i] = (i % 4 < 2); \
+ asm volatile ("" ::: "memory"); \
+ } \
+ test_##TYPE1##_##TYPE2##_##OP (r, a, pred); \
+ for (int i = 0; i < N; ++i) \
+ if (r[i] != (pred[i] ? OP (a[i]) : a[i])) \
+ __builtin_abort (); \
+ }
+
+int main ()
+{
+ TEST_ALL (TEST_LOOP)
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_6.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_6.c
new file mode 100644
index 0000000..1bd342b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_6.c
@@ -0,0 +1,53 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include <stdint.h>
+
+#define abs(A) ((A) < 0 ? -(A) : (A))
+#define neg(A) (-(A))
+#define not(A) (~(A))
+
+#define DEF_LOOP(TYPE1, TYPE2, COUNT, OP) \
+ void __attribute__ ((noipa)) \
+ test_##TYPE1##_##TYPE2##_##OP (TYPE2 *__restrict r, \
+ TYPE2 *__restrict a, \
+ TYPE2 *__restrict b, \
+ TYPE1 *__restrict pred) \
+ { \
+ for (int i = 0; i < COUNT; ++i) \
+ { \
+ TYPE2 bi = b[i]; \
+ r[i] = pred[i] ? OP (a[i]) : bi; \
+ } \
+ }
+
+#define TEST_TYPES(T, TYPE1, TYPE2, COUNT) \
+ T (TYPE1, TYPE2, COUNT, abs) \
+ T (TYPE1, TYPE2, COUNT, neg) \
+ T (TYPE1, TYPE2, COUNT, not)
+
+#define TEST_ALL(T) \
+ TEST_TYPES (T, int16_t, int8_t, 7) \
+ TEST_TYPES (T, int32_t, int8_t, 3) \
+ TEST_TYPES (T, int32_t, int16_t, 3) \
+ TEST_TYPES (T, int64_t, int8_t, 5) \
+ TEST_TYPES (T, int64_t, int16_t, 5) \
+ TEST_TYPES (T, int64_t, int32_t, 5)
+
+TEST_ALL (DEF_LOOP)
+
+/* { dg-final { scan-assembler-times {\tabs\tz[0-9]+\.b, p[0-7]/m,} 3 } } */
+/* { dg-final { scan-assembler-times {\tabs\tz[0-9]+\.h, p[0-7]/m,} 2 } } */
+/* { dg-final { scan-assembler-times {\tabs\tz[0-9]+\.s, p[0-7]/m,} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tneg\tz[0-9]+\.b, p[0-7]/m,} 3 } } */
+/* { dg-final { scan-assembler-times {\tneg\tz[0-9]+\.h, p[0-7]/m,} 2 } } */
+/* { dg-final { scan-assembler-times {\tneg\tz[0-9]+\.s, p[0-7]/m,} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tnot\tz[0-9]+\.b, p[0-7]/m,} 3 } } */
+/* { dg-final { scan-assembler-times {\tnot\tz[0-9]+\.h, p[0-7]/m,} 2 } } */
+/* { dg-final { scan-assembler-times {\tnot\tz[0-9]+\.s, p[0-7]/m,} 1 } } */
+
+/* { dg-final { scan-assembler-not {\tmov\tz} } } */
+/* { dg-final { scan-assembler-not {\tmovprfx\t} } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_6_run.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_6_run.c
new file mode 100644
index 0000000..04e4bd1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_6_run.c
@@ -0,0 +1,27 @@
+/* { dg-do run { target { aarch64_sve_hw } } } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include "cond_unary_6.c"
+
+#define TEST_LOOP(TYPE1, TYPE2, N, OP) \
+ { \
+ TYPE1 pred[N]; \
+ TYPE2 r[N], a[N], b[N]; \
+ for (int i = 0; i < N; ++i) \
+ { \
+ a[i] = (i & 1 ? i : 3 * i) * (i % 3 == 0 ? 1 : -1); \
+ b[i] = (i % 5) * (i % 6 + 3); \
+ pred[i] = (i % 4 < 2); \
+ asm volatile ("" ::: "memory"); \
+ } \
+ test_##TYPE1##_##TYPE2##_##OP (r, a, b, pred); \
+ for (int i = 0; i < N; ++i) \
+ if (r[i] != (pred[i] ? OP (a[i]) : b[i])) \
+ __builtin_abort (); \
+ }
+
+int main ()
+{
+ TEST_ALL (TEST_LOOP)
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_7.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_7.c
new file mode 100644
index 0000000..0e11821
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_7.c
@@ -0,0 +1,48 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include <stdint.h>
+
+#define abs(A) ((A) < 0 ? -(A) : (A))
+#define neg(A) (-(A))
+#define not(A) (~(A))
+
+#define DEF_LOOP(TYPE1, TYPE2, COUNT, OP) \
+ void __attribute__ ((noipa)) \
+ test_##TYPE1##_##TYPE2##_##OP (TYPE2 *__restrict r, \
+ TYPE2 *__restrict a, \
+ TYPE1 *__restrict pred) \
+ { \
+ for (int i = 0; i < COUNT; ++i) \
+ r[i] = pred[i] ? OP (a[i]) : 5; \
+ }
+
+#define TEST_TYPES(T, TYPE1, TYPE2, COUNT) \
+ T (TYPE1, TYPE2, COUNT, abs) \
+ T (TYPE1, TYPE2, COUNT, neg) \
+ T (TYPE1, TYPE2, COUNT, not)
+
+#define TEST_ALL(T) \
+ TEST_TYPES (T, int16_t, int8_t, 7) \
+ TEST_TYPES (T, int32_t, int8_t, 3) \
+ TEST_TYPES (T, int32_t, int16_t, 3) \
+ TEST_TYPES (T, int64_t, int8_t, 5) \
+ TEST_TYPES (T, int64_t, int16_t, 5) \
+ TEST_TYPES (T, int64_t, int32_t, 5)
+
+TEST_ALL (DEF_LOOP)
+
+/* { dg-final { scan-assembler-times {\tabs\tz[0-9]+\.b, p[0-7]/m,} 3 } } */
+/* { dg-final { scan-assembler-times {\tabs\tz[0-9]+\.h, p[0-7]/m,} 2 } } */
+/* { dg-final { scan-assembler-times {\tabs\tz[0-9]+\.s, p[0-7]/m,} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tneg\tz[0-9]+\.b, p[0-7]/m,} 3 } } */
+/* { dg-final { scan-assembler-times {\tneg\tz[0-9]+\.h, p[0-7]/m,} 2 } } */
+/* { dg-final { scan-assembler-times {\tneg\tz[0-9]+\.s, p[0-7]/m,} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tnot\tz[0-9]+\.b, p[0-7]/m,} 3 } } */
+/* { dg-final { scan-assembler-times {\tnot\tz[0-9]+\.h, p[0-7]/m,} 2 } } */
+/* { dg-final { scan-assembler-times {\tnot\tz[0-9]+\.s, p[0-7]/m,} 1 } } */
+
+/* { dg-final { scan-assembler-not {\tmov\tz[^\n]*z} } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_7_run.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_7_run.c
new file mode 100644
index 0000000..4460a79
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_7_run.c
@@ -0,0 +1,26 @@
+/* { dg-do run { target { aarch64_sve_hw } } } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include "cond_unary_7.c"
+
+#define TEST_LOOP(TYPE1, TYPE2, N, OP) \
+ { \
+ TYPE1 pred[N]; \
+ TYPE2 r[N], a[N]; \
+ for (int i = 0; i < N; ++i) \
+ { \
+ a[i] = (i & 1 ? i : 3 * i) * (i % 3 == 0 ? 1 : -1); \
+ pred[i] = (i % 4 < 2); \
+ asm volatile ("" ::: "memory"); \
+ } \
+ test_##TYPE1##_##TYPE2##_##OP (r, a, pred); \
+ for (int i = 0; i < N; ++i) \
+ if (r[i] != (pred[i] ? OP (a[i]) : 5)) \
+ __builtin_abort (); \
+ }
+
+int main ()
+{
+ TEST_ALL (TEST_LOOP)
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_8.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_8.c
new file mode 100644
index 0000000..96c53b7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_8.c
@@ -0,0 +1,50 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include <stdint.h>
+
+#define abs(A) ((A) < 0 ? -(A) : (A))
+#define neg(A) (-(A))
+#define not(A) (~(A))
+
+#define DEF_LOOP(TYPE1, TYPE2, COUNT, OP) \
+ void __attribute__ ((noipa)) \
+ test_##TYPE1##_##TYPE2##_##OP (TYPE2 *__restrict r, \
+ TYPE2 *__restrict a, \
+ TYPE1 *__restrict pred) \
+ { \
+ for (int i = 0; i < COUNT; ++i) \
+ r[i] = pred[i] ? OP (a[i]) : 0; \
+ }
+
+#define TEST_TYPES(T, TYPE1, TYPE2, COUNT) \
+ T (TYPE1, TYPE2, COUNT, abs) \
+ T (TYPE1, TYPE2, COUNT, neg) \
+ T (TYPE1, TYPE2, COUNT, not)
+
+#define TEST_ALL(T) \
+ TEST_TYPES (T, int16_t, int8_t, 7) \
+ TEST_TYPES (T, int32_t, int8_t, 3) \
+ TEST_TYPES (T, int32_t, int16_t, 3) \
+ TEST_TYPES (T, int64_t, int8_t, 5) \
+ TEST_TYPES (T, int64_t, int16_t, 5) \
+ TEST_TYPES (T, int64_t, int32_t, 5)
+
+TEST_ALL (DEF_LOOP)
+
+/* { dg-final { scan-assembler-times {\tabs\tz[0-9]+\.b, p[0-7]/m,} 3 } } */
+/* { dg-final { scan-assembler-times {\tabs\tz[0-9]+\.h, p[0-7]/m,} 2 } } */
+/* { dg-final { scan-assembler-times {\tabs\tz[0-9]+\.s, p[0-7]/m,} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tneg\tz[0-9]+\.b, p[0-7]/m,} 3 } } */
+/* { dg-final { scan-assembler-times {\tneg\tz[0-9]+\.h, p[0-7]/m,} 2 } } */
+/* { dg-final { scan-assembler-times {\tneg\tz[0-9]+\.s, p[0-7]/m,} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tnot\tz[0-9]+\.b, p[0-7]/m,} 3 } } */
+/* { dg-final { scan-assembler-times {\tnot\tz[0-9]+\.h, p[0-7]/m,} 2 } } */
+/* { dg-final { scan-assembler-times {\tnot\tz[0-9]+\.s, p[0-7]/m,} 1 } } */
+
+/* { dg-final { scan-assembler {\tmovprfx\tz[^,]*, p[0-7]/z} } } */
+
+/* { dg-final { scan-assembler-not {\tmov\tz[^\n]*z} } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_8_run.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_8_run.c
new file mode 100644
index 0000000..55676d6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_unary_8_run.c
@@ -0,0 +1,28 @@
+/* { dg-do run { target { aarch64_sve_hw } } } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include "cond_unary_8.c"
+
+#define N 99
+
+#define TEST_LOOP(TYPE1, TYPE2, N, OP) \
+ { \
+ TYPE1 pred[N]; \
+ TYPE2 r[N], a[N]; \
+ for (int i = 0; i < N; ++i) \
+ { \
+ a[i] = (i & 1 ? i : 3 * i) * (i % 3 == 0 ? 1 : -1); \
+ pred[i] = (i % 4 < 2); \
+ asm volatile ("" ::: "memory"); \
+ } \
+ test_##TYPE1##_##TYPE2##_##OP (r, a, pred); \
+ for (int i = 0; i < N; ++i) \
+ if (r[i] != (pred[i] ? OP (a[i]) : 0)) \
+ __builtin_abort (); \
+ }
+
+int main ()
+{
+ TEST_ALL (TEST_LOOP)
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5.c
new file mode 100644
index 0000000..1886628
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5.c
@@ -0,0 +1,33 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include <stdint.h>
+
+#define DEF_LOOP(TYPE1, TYPE2, CONST, COUNT) \
+ void __attribute__ ((noipa)) \
+ test_##CONST##_##TYPE1##_##TYPE2 (TYPE2 *restrict r, \
+ TYPE1 *restrict a, \
+ TYPE2 *restrict b) \
+ { \
+ for (int i = 0; i < COUNT; ++i) \
+ r[i] = a[i] > 20 ? b[i] & CONST : b[i]; \
+ }
+
+#define TEST_ALL(T) \
+ T (int32_t, uint16_t, 0xff, 3) \
+ \
+ T (int64_t, uint16_t, 0xff, 5) \
+ T (int64_t, uint32_t, 0xff, 5) \
+ T (int64_t, uint32_t, 0xffff, 5)
+
+TEST_ALL (DEF_LOOP)
+
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x2[],][^L]*\tuxtb\t\1\.h, p[0-7]/m, \1\.h\n} } } */
+
+/* { dg-final { scan-assembler {\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x2[],][^L]*\tuxtb\t\1\.h, p[0-7]/m, \1\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x2[],][^L]*\tuxtb\t\1\.s, p[0-7]/m, \1\.s\n} } } */
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x2[],][^L]*\tuxth\t\1\.s, p[0-7]/m, \1\.s\n} } } */
+
+/* { dg-final { scan-assembler-not {\tmov\tz[^\n]*z} } } */
+/* { dg-final { scan-assembler-not {\tmovprfx\t} } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5_run.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5_run.c
new file mode 100644
index 0000000..675fd2b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5_run.c
@@ -0,0 +1,26 @@
+/* { dg-do run { target { aarch64_sve_hw } } } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include "cond_uxt_5.c"
+
+#define TEST_LOOP(TYPE1, TYPE2, CONST, N) \
+ { \
+ TYPE1 a[N]; \
+ TYPE2 r[N], b[N]; \
+ for (int i = 0; i < N; ++i) \
+ { \
+ a[i] = (i & 1 ? -20 - i : 20 + i); \
+ b[i] = -5 - i; \
+ asm volatile ("" ::: "memory"); \
+ } \
+ test_##CONST##_##TYPE1##_##TYPE2 (r, a, b); \
+ for (int i = 0; i < N; ++i) \
+ if (r[i] != (TYPE2) (a[i] > 20 ? b[i] & CONST : b[i])) \
+ __builtin_abort (); \
+ }
+
+int main ()
+{
+ TEST_ALL (TEST_LOOP)
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_6.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_6.c
new file mode 100644
index 0000000..e47276a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_6.c
@@ -0,0 +1,33 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include <stdint.h>
+
+#define DEF_LOOP(TYPE1, TYPE2, CONST, COUNT) \
+ void __attribute__ ((noipa)) \
+ test_##CONST##_##TYPE1##_##TYPE2 (TYPE2 *restrict r, \
+ TYPE1 *restrict a, \
+ TYPE2 *restrict b) \
+ { \
+ for (int i = 0; i < COUNT; ++i) \
+ r[i] = a[i] > 20 ? b[i] & CONST : a[i]; \
+ }
+
+#define TEST_ALL(T) \
+ T (int32_t, uint16_t, 0xff, 3) \
+ \
+ T (int64_t, uint16_t, 0xff, 5) \
+ T (int64_t, uint32_t, 0xff, 5) \
+ T (int64_t, uint32_t, 0xffff, 5)
+
+TEST_ALL (DEF_LOOP)
+
+/* { dg-final { scan-assembler {\tld1w\t(z[0-9]+)\.s, p[0-7]/z, \[x1[],][^L]*\tld1h\t(z[0-9]+)\.s, p[0-7]/z, \[x2[],][^L]*\tuxtb\t\1\.h, p[0-7]/m, \2\.h\n} } } */
+
+/* { dg-final { scan-assembler {\tld1d\t(z[0-9]+)\.d, p[0-7]/z, \[x1[],][^L]*\tld1h\t(z[0-9]+)\.d, p[0-7]/z, \[x2[],][^L]*\tuxtb\t\1\.h, p[0-7]/m, \2\.h\n} } } */
+/* { dg-final { scan-assembler {\tld1d\t(z[0-9]+)\.d, p[0-7]/z, \[x1[],][^L]*\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x2[],][^L]*\tuxtb\t\1\.s, p[0-7]/m, \2\.s\n} } } */
+/* { dg-final { scan-assembler {\tld1d\t(z[0-9]+)\.d, p[0-7]/z, \[x1[],][^L]*\tld1w\t(z[0-9]+)\.d, p[0-7]/z, \[x2[],][^L]*\tuxth\t\1\.s, p[0-7]/m, \2\.s\n} } } */
+
+/* { dg-final { scan-assembler-not {\tmov\tz[^\n]*z} } } */
+/* { dg-final { scan-assembler-not {\tmovprfx\t} } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_6_run.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_6_run.c
new file mode 100644
index 0000000..7220854
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_6_run.c
@@ -0,0 +1,26 @@
+/* { dg-do run { target { aarch64_sve_hw } } } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include "cond_uxt_6.c"
+
+#define TEST_LOOP(TYPE1, TYPE2, CONST, N) \
+ { \
+ TYPE1 a[N]; \
+ TYPE2 r[N], b[N]; \
+ for (int i = 0; i < N; ++i) \
+ { \
+ a[i] = (i & 1 ? -20 - i : 20 + i); \
+ b[i] = -5 - i; \
+ asm volatile ("" ::: "memory"); \
+ } \
+ test_##CONST##_##TYPE1##_##TYPE2 (r, a, b); \
+ for (int i = 0; i < N; ++i) \
+ if (r[i] != (TYPE2) (a[i] > 20 ? b[i] & CONST : a[i])) \
+ __builtin_abort (); \
+ }
+
+int main ()
+{
+ TEST_ALL (TEST_LOOP)
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_7.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_7.c
new file mode 100644
index 0000000..f49915c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_7.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include <stdint.h>
+
+#define DEF_LOOP(TYPE1, TYPE2, CONST, COUNT) \
+ void __attribute__ ((noipa)) \
+ test_##CONST##_##TYPE1##_##TYPE2 (TYPE2 *restrict r, \
+ TYPE1 *restrict a, \
+ TYPE2 *restrict b) \
+ { \
+ for (int i = 0; i < COUNT; ++i) \
+ r[i] = a[i] > 20 ? b[i] & CONST : 127; \
+ }
+
+#define TEST_ALL(T) \
+ T (int32_t, uint16_t, 0xff, 3) \
+ \
+ T (int64_t, uint16_t, 0xff, 5) \
+ T (int64_t, uint32_t, 0xff, 5) \
+ T (int64_t, uint32_t, 0xffff, 5)
+
+TEST_ALL (DEF_LOOP)
+
+/* { dg-final { scan-assembler-times {\tuxtb\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tuxtb\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tuxth\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_7_run.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_7_run.c
new file mode 100644
index 0000000..4c6dc36
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_7_run.c
@@ -0,0 +1,26 @@
+/* { dg-do run { target { aarch64_sve_hw } } } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include "cond_uxt_7.c"
+
+#define TEST_LOOP(TYPE1, TYPE2, CONST, N) \
+ { \
+ TYPE1 a[N]; \
+ TYPE2 r[N], b[N]; \
+ for (int i = 0; i < N; ++i) \
+ { \
+ a[i] = (i & 1 ? -20 - i : 20 + i); \
+ b[i] = -5 - i; \
+ asm volatile ("" ::: "memory"); \
+ } \
+ test_##CONST##_##TYPE1##_##TYPE2 (r, a, b); \
+ for (int i = 0; i < N; ++i) \
+ if (r[i] != (TYPE2) (a[i] > 20 ? b[i] & CONST : 127)) \
+ __builtin_abort (); \
+ }
+
+int main ()
+{
+ TEST_ALL (TEST_LOOP)
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_8.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_8.c
new file mode 100644
index 0000000..42eb4b2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_8.c
@@ -0,0 +1,32 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include <stdint.h>
+
+#define DEF_LOOP(TYPE1, TYPE2, CONST, COUNT) \
+ void __attribute__ ((noipa)) \
+ test_##CONST##_##TYPE1##_##TYPE2 (TYPE2 *restrict r, \
+ TYPE1 *restrict a, \
+ TYPE2 *restrict b) \
+ { \
+ for (int i = 0; i < COUNT; ++i) \
+ r[i] = a[i] > 20 ? b[i] & CONST : 0; \
+ }
+
+#define TEST_ALL(T) \
+ T (int32_t, uint16_t, 0xff, 3) \
+ \
+ T (int64_t, uint16_t, 0xff, 5) \
+ T (int64_t, uint32_t, 0xff, 5) \
+ T (int64_t, uint32_t, 0xffff, 5)
+
+TEST_ALL (DEF_LOOP)
+
+/* { dg-final { scan-assembler-times {\tuxtb\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tuxtb\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tuxth\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler {\tmovprfx\tz[^,]*, p[0-7]/z} } } */
+
+/* { dg-final { scan-assembler-not {\tmov\tz[^\n]*z} } } */
+/* { dg-final { scan-assembler-not {\tsel\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_8_run.c b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_8_run.c
new file mode 100644
index 0000000..cfe3ed6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_8_run.c
@@ -0,0 +1,26 @@
+/* { dg-do run { target { aarch64_sve_hw } } } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+#include "cond_uxt_8.c"
+
+#define TEST_LOOP(TYPE1, TYPE2, CONST, N) \
+ { \
+ TYPE1 a[N]; \
+ TYPE2 r[N], b[N]; \
+ for (int i = 0; i < N; ++i) \
+ { \
+ a[i] = (i & 1 ? -20 - i : 20 + i); \
+ b[i] = -5 - i; \
+ asm volatile ("" ::: "memory"); \
+ } \
+ test_##CONST##_##TYPE1##_##TYPE2 (r, a, b); \
+ for (int i = 0; i < N; ++i) \
+ if (r[i] != (TYPE2) (a[i] > 20 ? b[i] & CONST : 0)) \
+ __builtin_abort (); \
+ }
+
+int main ()
+{
+ TEST_ALL (TEST_LOOP)
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/cost_model_11.c b/gcc/testsuite/gcc.target/aarch64/sve/cost_model_11.c
new file mode 100644
index 0000000..d9f4ccc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/cost_model_11.c
@@ -0,0 +1,12 @@
+/* { dg-options "-O2 -ftree-vectorize -msve-vector-bits=128" } */
+
+long
+f (long *x, long *y, long *z, long n)
+{
+ long res = 0;
+ for (long i = 0; i < n; ++i)
+ z[i] = x[i * 4] + y[i * 4];
+ return res;
+}
+
+/* { dg-final { scan-assembler-not {\tld4d\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_5.c b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_5.c
index da367e4..2a33ee8 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_5.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_load_5.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-vectorize -ffast-math --param aarch64-sve-compare-costs=0" } */
+/* { dg-options "-O2 -ftree-vectorize -ffast-math -fno-vect-cost-model" } */
#include <stdint.h>
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mla_2.c b/gcc/testsuite/gcc.target/aarch64/sve/mla_2.c
new file mode 100644
index 0000000..2fafd4b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/mla_2.c
@@ -0,0 +1,34 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_##AMT (TYPE a, TYPE b, TYPE c) \
+ { \
+ return a + b * c; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (int8_t, 32)
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (int8_t, 64)
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (int16_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (int8_t, 128)
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (int16_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (int32_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler-times {\t(?:mla|mad)\tz[0-9]+\.b,} 6 } } */
+/* { dg-final { scan-assembler-times {\t(?:mla|mad)\tz[0-9]+\.h,} 4 } } */
+/* { dg-final { scan-assembler-times {\t(?:mla|mad)\tz[0-9]+\.s,} 2 } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mls_2.c b/gcc/testsuite/gcc.target/aarch64/sve/mls_2.c
new file mode 100644
index 0000000..b08812e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/mls_2.c
@@ -0,0 +1,34 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE \
+ test##_##TYPE##_##AMT (TYPE a, TYPE b, TYPE c) \
+ { \
+ return a - b * c; \
+ }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (int8_t, 32)
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (int8_t, 64)
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (int16_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (int8_t, 128)
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (int16_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (int32_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler-times {\t(?:mls|msb)\tz[0-9]+\.b,} 6 } } */
+/* { dg-final { scan-assembler-times {\t(?:mls|msb)\tz[0-9]+\.h,} 4 } } */
+/* { dg-final { scan-assembler-times {\t(?:mls|msb)\tz[0-9]+\.s,} 2 } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mul_2.c b/gcc/testsuite/gcc.target/aarch64/sve/mul_2.c
new file mode 100644
index 0000000..ff049f5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/mul_2.c
@@ -0,0 +1,52 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP_IMM(TYPE, OP, NAME, AMT) \
+ TYPE test##_##TYPE##_##NAME (TYPE a) { return a * AMT; }
+
+#define TEST_OP(TYPE, MINV, MAXV) \
+ TYPE test##_##TYPE##_reg (TYPE a, TYPE b) { return a * b; } \
+ TEST_OP_IMM (TYPE, OP, a, MINV) \
+ TEST_OP_IMM (TYPE, OP, b, 50) \
+ TEST_OP_IMM (TYPE, OP, c, MAXV)
+
+#define TEST_TYPE(TYPE, SIZE, MINV, MAXV) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE, MINV, MAXV)
+
+TEST_TYPE (int8_t, 32, -100, 100)
+TEST_TYPE (uint8_t, 32, 2, 250)
+
+TEST_TYPE (int8_t, 64, -110, 110)
+TEST_TYPE (uint8_t, 64, 3, 253)
+TEST_TYPE (int16_t, 64, -128, 123)
+TEST_TYPE (uint16_t, 64, 3, 255)
+
+TEST_TYPE (int8_t, 128, -120, 120)
+TEST_TYPE (uint8_t, 128, 4, 251)
+TEST_TYPE (int16_t, 128, -128, 123)
+TEST_TYPE (uint16_t, 128, 2, 255)
+TEST_TYPE (int32_t, 128, -128, 123)
+TEST_TYPE (uint32_t, 128, 4, 255)
+
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.b, z[0-9]+\.b, #-100\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.b, z[0-9]+\.b, #-110\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.b, z[0-9]+\.b, #-120\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.h, z[0-9]+\.h, #-128\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.s, z[0-9]+\.s, #-128\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.b, z[0-9]+\.b, #50\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.h, z[0-9]+\.h, #50\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.s, z[0-9]+\.s, #50\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.b, z[0-9]+\.b, #100\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.b, z[0-9]+\.b, #110\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.b, z[0-9]+\.b, #120\n} 1 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.h, z[0-9]+\.h, #123\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tmul\tz[0-9]+\.s, z[0-9]+\.s, #123\n} 1 } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/mul_highpart_3.c b/gcc/testsuite/gcc.target/aarch64/sve/mul_highpart_3.c
new file mode 100644
index 0000000..3aa6575
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/mul_highpart_3.c
@@ -0,0 +1,34 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_OP(TYPE) \
+ TYPE test##_##TYPE##_reg (TYPE a, TYPE b) { return a % 17; }
+
+#define TEST_TYPE(TYPE, SIZE) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_OP (TYPE##SIZE)
+
+TEST_TYPE (int8_t, 32)
+TEST_TYPE (uint8_t, 32)
+
+TEST_TYPE (int8_t, 64)
+TEST_TYPE (uint8_t, 64)
+TEST_TYPE (int16_t, 64)
+TEST_TYPE (uint16_t, 64)
+
+TEST_TYPE (int8_t, 128)
+TEST_TYPE (uint8_t, 128)
+TEST_TYPE (int16_t, 128)
+TEST_TYPE (uint16_t, 128)
+TEST_TYPE (int32_t, 128)
+TEST_TYPE (uint32_t, 128)
+
+/* { dg-final { scan-assembler-times {\tsmulh\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tsmulh\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tsmulh\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tumulh\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tumulh\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tumulh\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pcs/aarch64-sve-pcs.exp b/gcc/testsuite/gcc.target/aarch64/sve/pcs/aarch64-sve-pcs.exp
index 63f1f4e..64218fb 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/pcs/aarch64-sve-pcs.exp
+++ b/gcc/testsuite/gcc.target/aarch64/sve/pcs/aarch64-sve-pcs.exp
@@ -1,5 +1,5 @@
# Specific regression driver for AArch64 SVE.
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# Contributed by ARM Ltd.
#
# This file is part of GCC.
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr97092.c b/gcc/testsuite/gcc.target/aarch64/sve/pr97092.c
new file mode 100644
index 0000000..69f7a3e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/pr97092.c
@@ -0,0 +1,24 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O1 -ftree-vectorize -march=armv8.2-a+sve" } */
+
+void g (void);
+long a;
+
+signed char
+bar (int c, int d)
+{
+ return c + d;
+}
+
+void
+foo (void)
+{
+ int f;
+ for (; (long)foo < 4;) {
+ f = 0;
+ for (; f < 10; f++);
+ g ();
+ a = -4;
+ for (; a; a = bar (a, 1));
+ }
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr97144.c b/gcc/testsuite/gcc.target/aarch64/sve/pr97144.c
new file mode 100644
index 0000000..75245e2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/pr97144.c
@@ -0,0 +1,26 @@
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+int a, b = 5, c = 3;
+char d;
+char e[1];
+int f[] = {0, 0, 1};
+short g;
+char *h = e;
+void i(void) { b = a; }
+static void j(void) {
+ h = e;
+ if (f[2])
+ k:
+ for (;;) {
+ for (c = 0; c <= 4; c++) {
+ for (g = 0; g <= 4; g++)
+ f[g + 4] &= 2;
+ }
+ if (d)
+ goto k;
+ }
+}
+void l(void) {
+ j();
+ c = 0;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr98177-1.c b/gcc/testsuite/gcc.target/aarch64/sve/pr98177-1.c
new file mode 100644
index 0000000..9789193
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/pr98177-1.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-Ofast -msve-vector-bits=128" } */
+
+int a, b;
+short c;
+void d(long e) {
+ for (int f = 0; f < b; f += 1)
+ for (short g = 0; g < c; g += 5)
+ a = (short)e;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr98177-2.c b/gcc/testsuite/gcc.target/aarch64/sve/pr98177-2.c
new file mode 100644
index 0000000..c7244ef
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/pr98177-2.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-Ofast -msve-vector-bits=128" } */
+
+int a, b, c;
+
+void foo(long e) {
+ for (int f = 0; f < b; f ++)
+ for (int g = 0; g < c; g ++)
+ a = (short)e;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr98214.c b/gcc/testsuite/gcc.target/aarch64/sve/pr98214.c
new file mode 100644
index 0000000..2de9625
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/pr98214.c
@@ -0,0 +1,21 @@
+/* { dg-options "-O3 -msve-vector-bits=512" } */
+
+long c;
+int a;
+int e[14];
+short b[14];
+void d(long *f, long h) { *f ^= h + *f; }
+void this_test_has_completed_successfully ();
+int main() {
+ e[2] = 1;
+ for (int g = 0; g < 13; g++)
+ a = b[g] = e[g];
+ d(&c, a);
+ for (int g = 0; g < 4; g++)
+ d(&c, b[2]);
+ if (c != 15)
+ __builtin_abort();
+ this_test_has_completed_successfully ();
+}
+
+/* { dg-final { scan-assembler {this_test_has_completed_successfully} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr98535.c b/gcc/testsuite/gcc.target/aarch64/sve/pr98535.c
new file mode 100644
index 0000000..6873a38
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/pr98535.c
@@ -0,0 +1,18 @@
+/* { dg-options "-O3 -mtune=neoverse-v1" } */
+
+typedef short a;
+
+typedef struct {
+ a b, c, d, e;
+} f;
+
+f *g;
+
+long h;
+
+void
+i() {
+ f j;
+ for (; h; h++)
+ *g++ = j;
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/ptest_1.c b/gcc/testsuite/gcc.target/aarch64/sve/ptest_1.c
new file mode 100644
index 0000000..abc5108
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/ptest_1.c
@@ -0,0 +1,10 @@
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+void
+f (char *restrict x, char *restrict y, char *restrict z, unsigned long n)
+{
+ for (unsigned long i = 0; i < n; i += 1)
+ x[i] = y[i] + z[i];
+}
+
+/* { dg-final { scan-assembler-not {\tptest\t} } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/sel_1.c b/gcc/testsuite/gcc.target/aarch64/sve/sel_1.c
index 9c581c5..65208dd 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/sel_1.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/sel_1.c
@@ -1,4 +1,4 @@
-/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-do assemble { target aarch64_variant_pcs } } */
/* { dg-options "-O2 -msve-vector-bits=256 --save-temps" } */
/* { dg-final { check-function-bodies "**" "" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/sel_2.c b/gcc/testsuite/gcc.target/aarch64/sve/sel_2.c
index 60aaa87..8087073 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/sel_2.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/sel_2.c
@@ -1,4 +1,4 @@
-/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-do assemble { target aarch64_variant_pcs } } */
/* { dg-options "-O2 -msve-vector-bits=256 --save-temps" } */
/* { dg-final { check-function-bodies "**" "" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/sel_3.c b/gcc/testsuite/gcc.target/aarch64/sve/sel_3.c
index 36ec15b..68f9d97 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve/sel_3.c
+++ b/gcc/testsuite/gcc.target/aarch64/sve/sel_3.c
@@ -1,4 +1,4 @@
-/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-do assemble { target aarch64_variant_pcs } } */
/* { dg-options "-O2 -msve-vector-bits=256 --save-temps" } */
/* { dg-final { check-function-bodies "**" "" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/shift_2.c b/gcc/testsuite/gcc.target/aarch64/sve/shift_2.c
new file mode 100644
index 0000000..b7462c4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/shift_2.c
@@ -0,0 +1,81 @@
+/* { dg-do assemble { target aarch64_asm_sve_ok } } */
+/* { dg-options "-O -msve-vector-bits=2048 -save-temps" } */
+
+#include <stdint.h>
+
+#define TEST_SHIFT_IMM(TYPE, NAME, OP, AMT) \
+ TYPE NAME##_##TYPE##_##AMT (TYPE a) { return a OP AMT; }
+
+#define TEST_SHIFT(TYPE, NAME, OP, LIMIT) \
+ TYPE NAME##_##TYPE##_reg (TYPE a, TYPE b) { return a OP b; } \
+ TEST_SHIFT_IMM (TYPE, NAME, OP, 1) \
+ TEST_SHIFT_IMM (TYPE, NAME, OP, 5) \
+ TEST_SHIFT_IMM (TYPE, NAME, OP, LIMIT)
+
+#define TEST_TYPE(TYPE, SIZE, LIMIT) \
+ typedef TYPE TYPE##SIZE __attribute__((vector_size(SIZE))); \
+ TEST_SHIFT (TYPE##SIZE, shl, <<, LIMIT) \
+ TEST_SHIFT (TYPE##SIZE, shr, >>, LIMIT) \
+
+TEST_TYPE (int8_t, 32, 7)
+TEST_TYPE (uint8_t, 32, 7)
+
+TEST_TYPE (int8_t, 64, 7)
+TEST_TYPE (uint8_t, 64, 7)
+TEST_TYPE (int16_t, 64, 15)
+TEST_TYPE (uint16_t, 64, 15)
+
+TEST_TYPE (int8_t, 128, 7)
+TEST_TYPE (uint8_t, 128, 7)
+TEST_TYPE (int16_t, 128, 15)
+TEST_TYPE (uint16_t, 128, 15)
+TEST_TYPE (int32_t, 128, 31)
+TEST_TYPE (uint32_t, 128, 31)
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, p[0-7]/m, z[0-9]+\.b, z[0-9]+\.b\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, p[0-7]/m, z[0-9]+\.h, z[0-9]+\.h\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, p[0-7]/m, z[0-9]+\.s, z[0-9]+\.s\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, z[0-9]+\.b, #1\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, z[0-9]+\.h, #1\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, z[0-9]+\.s, #1\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, z[0-9]+\.b, #1\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, z[0-9]+\.h, #1\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, z[0-9]+\.s, #1\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, z[0-9]+\.b, #1\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, z[0-9]+\.h, #1\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, z[0-9]+\.s, #1\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, z[0-9]+\.b, #5\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, z[0-9]+\.h, #5\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, z[0-9]+\.s, #5\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, z[0-9]+\.b, #5\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, z[0-9]+\.h, #5\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, z[0-9]+\.s, #5\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, z[0-9]+\.b, #5\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, z[0-9]+\.h, #5\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, z[0-9]+\.s, #5\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.b, z[0-9]+\.b, #7\n} 6 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.h, z[0-9]+\.h, #15\n} 4 } } */
+/* { dg-final { scan-assembler-times {\tlsl\tz[0-9]+\.s, z[0-9]+\.s, #31\n} 2 } } */
+
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.b, z[0-9]+\.b, #7\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.h, z[0-9]+\.h, #15\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tlsr\tz[0-9]+\.s, z[0-9]+\.s, #31\n} 1 } } */
+
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.b, z[0-9]+\.b, #7\n} 3 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.h, z[0-9]+\.h, #15\n} 2 } } */
+/* { dg-final { scan-assembler-times {\tasr\tz[0-9]+\.s, z[0-9]+\.s, #31\n} 1 } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve2/aarch64-sve2.exp b/gcc/testsuite/gcc.target/aarch64/sve2/aarch64-sve2.exp
index b142771..fcff0d2 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve2/aarch64-sve2.exp
+++ b/gcc/testsuite/gcc.target/aarch64/sve2/aarch64-sve2.exp
@@ -1,5 +1,5 @@
# Specific regression driver for AArch64 SVE2.
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# Contributed by ARM Ltd.
#
# This file is part of GCC.
diff --git a/gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp b/gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp
index b3189fe..632d350 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp
+++ b/gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp
@@ -1,5 +1,5 @@
# Assembly-based regression-test driver for the SVE ACLE
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
@@ -62,7 +62,7 @@ set-torture-options {
# Main loop.
set files [glob -nocomplain $srcdir/$subdir/asm/*.c]
set save-dg-do-what-default ${dg-do-what-default}
-if { [check_effective_target_aarch64_asm_sve_ok]
+if { [check_effective_target_aarch64_asm_sve2_ok]
&& [check_effective_target_aarch64_variant_pcs] } {
set dg-do-what-default assemble
} else {
diff --git a/gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle.exp b/gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle.exp
index 0fbaae5..a8c5421 100644
--- a/gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle.exp
+++ b/gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle.exp
@@ -1,5 +1,5 @@
# Specific regression driver for AArch64 SVE.
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# Contributed by ARM Ltd.
#
# This file is part of GCC.
diff --git a/gcc/testsuite/gcc.target/aarch64/torture/aarch64-torture.exp b/gcc/testsuite/gcc.target/aarch64/torture/aarch64-torture.exp
index 732e2b2..2c0679f 100644
--- a/gcc/testsuite/gcc.target/aarch64/torture/aarch64-torture.exp
+++ b/gcc/testsuite/gcc.target/aarch64/torture/aarch64-torture.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/aarch64/usaba_1.c b/gcc/testsuite/gcc.target/aarch64/usaba_1.c
new file mode 100644
index 0000000..58b5beb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/usaba_1.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -fno-tree-reassoc" } */
+
+#pragma GCC target "+nosve"
+
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+#define MAX(a, b) ((a) > (b) ? (a) : (b))
+
+#define FUNC(T, N, S) \
+void saba_##S (T * __restrict__ a, T * __restrict__ b, T * __restrict__ c) \
+{ \
+ int i; \
+ for (i = 0; i < N; i++) \
+ c[i] += (MAX (a[i], b[i]) - MIN (a[i], b[i])); \
+}
+
+FUNC (signed char, 16, qi)
+/* { dg-final { scan-assembler-times {saba\tv[0-9]+\.16b, v[0-9]+\.16b, v[0-9]+\.16b} 1 } } */
+FUNC (short, 8, hi)
+/* { dg-final { scan-assembler-times {saba\tv[0-9]+\.8h, v[0-9]+\.8h, v[0-9]+\.8h} 1 } } */
+FUNC (int, 4, si)
+/* { dg-final { scan-assembler-times {saba\tv[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.4s} 1 } } */
+FUNC (unsigned char, 16, uqi)
+/* { dg-final { scan-assembler-times {uaba\tv[0-9]+\.16b, v[0-9]+\.16b, v[0-9]+.16b} 1 } } */
+FUNC (unsigned short, 8, uhi)
+/* { dg-final { scan-assembler-times {uaba\tv[0-9]+\.8h, v[0-9]+\.8h, v[0-9]+\.8h} 1 } } */
+FUNC (unsigned int, 4, usi)
+/* { dg-final { scan-assembler-times {uaba\tv[0-9]+\.4s, v[0-9]+\.4s, v[0-9]+\.4s} 1 } } */
+
diff --git a/gcc/testsuite/gcc.target/aarch64/vdup_lane_2.c b/gcc/testsuite/gcc.target/aarch64/vdup_lane_2.c
index a49db3e..16f4808 100644
--- a/gcc/testsuite/gcc.target/aarch64/vdup_lane_2.c
+++ b/gcc/testsuite/gcc.target/aarch64/vdup_lane_2.c
@@ -333,7 +333,7 @@ main ()
/* Asm check for vdups_lane_f32, vdups_lane_s32, vdups_lane_u32. */
/* Can't generate "dup s<n>, v<m>[0]" for vdups_lane_s32 and vdups_lane_u32. */
-/* { dg-final { scan-assembler-times "dup\\ts\[0-9\]+, v\[0-9\]+\.s\\\[0\\\]" 1} } */
+/* { dg-final { scan-assembler-times {fmov\ts0, s1} 1 } } */
/* { dg-final { scan-assembler-times "dup\\ts\[0-9\]+, v\[0-9\]+\.s\\\[1\\\]" 3 } } */
/* Asm check for vdupd_lane_f64, vdupd_lane_s64, vdupd_lane_u64. */
diff --git a/gcc/testsuite/gcc.target/aarch64/with-tune-config.c b/gcc/testsuite/gcc.target/aarch64/with-tune-config.c
new file mode 100644
index 0000000..0940e9e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/with-tune-config.c
@@ -0,0 +1,7 @@
+/* { dg-do compile { target { tune_cortex_a76 } } } */
+/* { dg-additional-options " -dA " } */
+
+void foo ()
+{}
+
+/* { dg-final { scan-assembler "//.tune cortex-a76" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/with-tune-march.c b/gcc/testsuite/gcc.target/aarch64/with-tune-march.c
new file mode 100644
index 0000000..61039ad
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/with-tune-march.c
@@ -0,0 +1,8 @@
+/* { dg-do compile { target { tune_cortex_a76 } } } */
+/* { dg-additional-options " -dA -march=armv8.6-a " } */
+
+void foo ()
+{}
+
+/* { dg-final { scan-assembler "//.tune cortex-a76" } } */
+/* { dg-final { scan-assembler ".arch armv8.6-a" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/with-tune-mcpu.c b/gcc/testsuite/gcc.target/aarch64/with-tune-mcpu.c
new file mode 100644
index 0000000..4f8267a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/with-tune-mcpu.c
@@ -0,0 +1,8 @@
+/* { dg-do compile { target { tune_cortex_a76 } } } */
+/* { dg-additional-options " -dA -mcpu=cortex-a73" } */
+
+void foo ()
+{}
+
+/* { dg-final { scan-assembler "//.tune cortex-a73" } } */
+/* { dg-final { scan-assembler ".arch armv8-a" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/with-tune-mtune.c b/gcc/testsuite/gcc.target/aarch64/with-tune-mtune.c
new file mode 100644
index 0000000..60f795a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/with-tune-mtune.c
@@ -0,0 +1,7 @@
+/* { dg-do compile { target { tune_cortex_a76 } } } */
+/* { dg-additional-options " -dA -mtune=cortex-a73" } */
+
+void foo ()
+{}
+
+/* { dg-final { scan-assembler "//.tune cortex-a73" } } */
diff --git a/gcc/testsuite/gcc.target/alpha/alpha.exp b/gcc/testsuite/gcc.target/alpha/alpha.exp
index 2ee1d2b..f97b491 100644
--- a/gcc/testsuite/gcc.target/alpha/alpha.exp
+++ b/gcc/testsuite/gcc.target/alpha/alpha.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2020 Free Software Foundation, Inc.
+# Copyright (C) 2005-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/arc/arc.exp b/gcc/testsuite/gcc.target/arc/arc.exp
index 501d458..4116a92 100644
--- a/gcc/testsuite/gcc.target/arc/arc.exp
+++ b/gcc/testsuite/gcc.target/arc/arc.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/arc/loop-3.c b/gcc/testsuite/gcc.target/arc/loop-3.c
index bf7aec9..7f55e2f 100644
--- a/gcc/testsuite/gcc.target/arc/loop-3.c
+++ b/gcc/testsuite/gcc.target/arc/loop-3.c
@@ -23,5 +23,5 @@ void fn1(void)
}
}
-/* { dg-final { scan-assembler "bne_s @.L2" } } */
+/* { dg-final { scan-assembler "bne.*@.L2" } } */
/* { dg-final { scan-assembler-not "add.eq" } } */
diff --git a/gcc/testsuite/gcc.target/arc/pmpyd.c b/gcc/testsuite/gcc.target/arc/pmpyd.c
new file mode 100644
index 0000000..0eb0ff7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arc/pmpyd.c
@@ -0,0 +1,15 @@
+/* { dg-do assemble } */
+/* { dg-skip-if "" { ! { clmcpu } } } */
+/* { dg-options "-mcpu=hs38 -Os -EB" } */
+
+/* This example is found during big-endian build. The compiler is
+ matching mpydu.hi r12,r13,r3 as a predicated instruction, which is
+ incorrect. The error is due to different predicates between the
+ output operand and the first operand of the instruction. */
+unsigned int test(unsigned int x, unsigned long long y)
+{
+ y /= 0x20000000;
+ if (x > 1)
+ y *= x;
+ return y;
+}
diff --git a/gcc/testsuite/gcc.target/arc/tmac-1.c b/gcc/testsuite/gcc.target/arc/tmac-1.c
index 3fcabf5..5b302ca 100644
--- a/gcc/testsuite/gcc.target/arc/tmac-1.c
+++ b/gcc/testsuite/gcc.target/arc/tmac-1.c
@@ -7,5 +7,5 @@
/* { dg-final { scan-assembler "macd " } } */
/* { dg-final { scan-assembler "macdu" } } */
-/* { dg-final { scan-assembler "mpyd " } } */
+/* { dg-final { scan-assembler "mpyd\\t" } } */
/* { dg-final { scan-assembler "mpydu" } } */
diff --git a/gcc/testsuite/gcc.target/arc/uncached-9.c b/gcc/testsuite/gcc.target/arc/uncached-9.c
new file mode 100644
index 0000000..4caba29
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arc/uncached-9.c
@@ -0,0 +1,39 @@
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+#include <stdlib.h>
+
+struct uncached_st
+{
+ int value;
+} __attribute__((uncached));
+
+struct cached_st
+{
+ int value;
+};
+
+struct uncached_st g_uncached_st =
+ {
+ .value = 17
+ };
+
+struct cached_st g_cached_st =
+ {
+ .value = 4
+ };
+
+void __attribute__((noinline)) test_struct_copy (void)
+{
+ g_cached_st.value = g_uncached_st.value;
+}
+
+int main (void)
+{
+ test_struct_copy();
+
+ if (g_cached_st.value != g_uncached_st.value)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp b/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp
index 7ccc337..6510262 100644
--- a/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp
+++ b/gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/arm/aapcs/vfp22.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp22.c
index 1944bb5..fc22792 100644
--- a/gcc/testsuite/gcc.target/arm/aapcs/vfp22.c
+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp22.c
@@ -3,6 +3,7 @@
/* { dg-do run { target arm_eabi } } */
/* { dg-require-effective-target arm_hard_vfp_ok } */
/* { dg-require-effective-target arm_fp16_hw } */
+/* { dg-require-effective-target arm_fp16_alternative_ok } */
/* { dg-add-options arm_fp16_alternative } */
#ifndef IN_FRAMEWORK
diff --git a/gcc/testsuite/gcc.target/arm/aapcs/vfp23.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp23.c
index bcacf9f..469aabd 100644
--- a/gcc/testsuite/gcc.target/arm/aapcs/vfp23.c
+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp23.c
@@ -3,6 +3,7 @@
/* { dg-do run { target arm_eabi } } */
/* { dg-require-effective-target arm_hard_vfp_ok } */
/* { dg-require-effective-target arm_fp16_hw } */
+/* { dg-require-effective-target arm_fp16_alternative_ok } */
/* { dg-add-options arm_fp16_alternative } */
#ifndef IN_FRAMEWORK
diff --git a/gcc/testsuite/gcc.target/arm/aapcs/vfp24.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp24.c
index ef36bb7..80a4682 100644
--- a/gcc/testsuite/gcc.target/arm/aapcs/vfp24.c
+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp24.c
@@ -3,6 +3,7 @@
/* { dg-do run { target arm_eabi } } */
/* { dg-require-effective-target arm_hard_vfp_ok } */
/* { dg-require-effective-target arm_fp16_hw } */
+/* { dg-require-effective-target arm_fp16_alternative_ok } */
/* { dg-add-options arm_fp16_alternative } */
#ifndef IN_FRAMEWORK
diff --git a/gcc/testsuite/gcc.target/arm/aapcs/vfp25.c b/gcc/testsuite/gcc.target/arm/aapcs/vfp25.c
index 3c796ca..649c175 100644
--- a/gcc/testsuite/gcc.target/arm/aapcs/vfp25.c
+++ b/gcc/testsuite/gcc.target/arm/aapcs/vfp25.c
@@ -3,6 +3,7 @@
/* { dg-do run { target arm_eabi } } */
/* { dg-require-effective-target arm_hard_vfp_ok } */
/* { dg-require-effective-target arm_fp16_hw } */
+/* { dg-require-effective-target arm_fp16_alternative_ok } */
/* { dg-add-options arm_fp16_alternative } */
#ifndef IN_FRAMEWORK
diff --git a/gcc/testsuite/gcc.target/arm/acle/acle.exp b/gcc/testsuite/gcc.target/arm/acle/acle.exp
index 9a3f4fa..8e0d0e2 100644
--- a/gcc/testsuite/gcc.target/arm/acle/acle.exp
+++ b/gcc/testsuite/gcc.target/arm/acle/acle.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/arm/arm.exp b/gcc/testsuite/gcc.target/arm/arm.exp
index 91eaa2c..d306573 100644
--- a/gcc/testsuite/gcc.target/arm/arm.exp
+++ b/gcc/testsuite/gcc.target/arm/arm.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/arm/cmse/cmse.exp b/gcc/testsuite/gcc.target/arm/cmse/cmse.exp
index 9ac0142..6ce99fe 100644
--- a/gcc/testsuite/gcc.target/arm/cmse/cmse.exp
+++ b/gcc/testsuite/gcc.target/arm/cmse/cmse.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/arm/data-rel-1.c b/gcc/testsuite/gcc.target/arm/data-rel-1.c
index a09e235..5931b44 100644
--- a/gcc/testsuite/gcc.target/arm/data-rel-1.c
+++ b/gcc/testsuite/gcc.target/arm/data-rel-1.c
@@ -1,5 +1,6 @@
/* { dg-skip-if "-mpure-code and -fPIC incompatible" { *-*-* } { "-mpure-code" } } */
/* { dg-options "-fPIC -mno-pic-data-is-text-relative" } */
+/* { dg-require-effective-target fpic } */
/* { dg-final { scan-assembler-not "j-\\(.LPIC" } } */
/* { dg-final { scan-assembler-not "_GLOBAL_OFFSET_TABLE_-\\(.LPIC" } } */
/* { dg-final { scan-assembler "j\\(GOT\\)" } } */
diff --git a/gcc/testsuite/gcc.target/arm/data-rel-2.c b/gcc/testsuite/gcc.target/arm/data-rel-2.c
index 56a54e8..3ed83e2 100644
--- a/gcc/testsuite/gcc.target/arm/data-rel-2.c
+++ b/gcc/testsuite/gcc.target/arm/data-rel-2.c
@@ -1,6 +1,7 @@
/* { dg-skip-if "Not supported in FDPIC" { arm*-*-uclinuxfdpiceabi } "*" "" } */
/* { dg-skip-if "-mpure-code and -fPIC incompatible" { *-*-* } { "-mpure-code" } } */
/* { dg-options "-fPIC -mno-pic-data-is-text-relative -mno-single-pic-base" } */
+/* { dg-require-effective-target fpic } */
/* { dg-final { scan-assembler-not "j-\\(.LPIC" } } */
/* { dg-final { scan-assembler "_GLOBAL_OFFSET_TABLE_-\\(.LPIC" } } */
/* { dg-final { scan-assembler "j\\(GOT\\)" } } */
diff --git a/gcc/testsuite/gcc.target/arm/data-rel-3.c b/gcc/testsuite/gcc.target/arm/data-rel-3.c
index 4ce9048..5ab6ba7 100644
--- a/gcc/testsuite/gcc.target/arm/data-rel-3.c
+++ b/gcc/testsuite/gcc.target/arm/data-rel-3.c
@@ -1,6 +1,7 @@
/* { dg-skip-if "Not supported in FDPIC" { arm*-*-uclinuxfdpiceabi } "*" "" } */
/* { dg-skip-if "-mpure-code and -fPIC incompatible" { *-*-* } { "-mpure-code" } } */
/* { dg-options "-fPIC -mpic-data-is-text-relative" } */
+/* { dg-require-effective-target fpic } */
/* { dg-final { scan-assembler "j-\\(.LPIC" } } */
/* { dg-final { scan-assembler-not "_GLOBAL_OFFSET_TABLE_-\\(.LPIC" } } */
/* { dg-final { scan-assembler-not "j\\(GOT\\)" } } */
diff --git a/gcc/testsuite/gcc.target/arm/fp16-aapcs-2.c b/gcc/testsuite/gcc.target/arm/fp16-aapcs-2.c
index 51a76fc..c34387f 100644
--- a/gcc/testsuite/gcc.target/arm/fp16-aapcs-2.c
+++ b/gcc/testsuite/gcc.target/arm/fp16-aapcs-2.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-require-effective-target arm_fp16_ok } */
-/* { dg-options "-mfloat-abi=softfp -O2" } */
+/* { dg-options "-mfloat-abi=softfp -O2 -mno-long-calls" } */
/* { dg-add-options arm_fp16_ieee } */
/* { dg-skip-if "incompatible float-abi" { arm*-*-* } { "-mfloat-abi=hard" } } */
diff --git a/gcc/testsuite/gcc.target/arm/headmerge-1.c b/gcc/testsuite/gcc.target/arm/headmerge-1.c
index 218c6a2..319ccd2 100644
--- a/gcc/testsuite/gcc.target/arm/headmerge-1.c
+++ b/gcc/testsuite/gcc.target/arm/headmerge-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -mno-long-calls" } */
/* { dg-final { scan-assembler-times "#120" 1 } } */
extern void foo1 (int);
diff --git a/gcc/testsuite/gcc.target/arm/headmerge-2.c b/gcc/testsuite/gcc.target/arm/headmerge-2.c
index 17d8e93..a015eb0 100644
--- a/gcc/testsuite/gcc.target/arm/headmerge-2.c
+++ b/gcc/testsuite/gcc.target/arm/headmerge-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -mno-long-calls" } */
/* { dg-final { scan-assembler-times "120\n" 1 } } */
extern void foo1 (int);
diff --git a/gcc/testsuite/gcc.target/arm/ivopts.c b/gcc/testsuite/gcc.target/arm/ivopts.c
index 2733e66..d7d72a5 100644
--- a/gcc/testsuite/gcc.target/arm/ivopts.c
+++ b/gcc/testsuite/gcc.target/arm/ivopts.c
@@ -11,6 +11,6 @@ tr5 (short array[], int n)
}
/* { dg-final { scan-tree-dump-times "PHI <" 1 "ivopts"} } */
-/* { dg-final { object-size text <= 20 { target { arm_thumb2_ok_no_arm_v8_1_lob } } } } */
+/* { dg-final { object-size text <= 20 { target { arm_thumb2_no_arm_v8_1_lob } } } } */
/* { dg-final { object-size text <= 32 { target { arm_nothumb && { ! arm_iwmmxt_ok } } } } } */
/* { dg-final { object-size text <= 36 { target { arm_nothumb && arm_iwmmxt_ok } } } } */
diff --git a/gcc/testsuite/gcc.target/arm/lob2.c b/gcc/testsuite/gcc.target/arm/lob2.c
index fdeb268..d174857 100644
--- a/gcc/testsuite/gcc.target/arm/lob2.c
+++ b/gcc/testsuite/gcc.target/arm/lob2.c
@@ -2,7 +2,7 @@
if a non-inlineable function call takes place inside the loop. */
/* { dg-do compile } */
/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" "-mcpu=*" } } */
-/* { dg-options "-march=armv8.1-m.main -mthumb -O3 --save-temps" } */
+/* { dg-options "-march=armv8.1-m.main+fp -mthumb -O3 --save-temps" } */
#include <stdlib.h>
#include "lob.h"
diff --git a/gcc/testsuite/gcc.target/arm/lob3.c b/gcc/testsuite/gcc.target/arm/lob3.c
index 70314ea..f529006 100644
--- a/gcc/testsuite/gcc.target/arm/lob3.c
+++ b/gcc/testsuite/gcc.target/arm/lob3.c
@@ -1,7 +1,7 @@
/* Check that GCC does not generate Armv8.1-M low over head loop instructions
if causes VFP emulation library calls to happen inside the loop. */
/* { dg-do compile } */
-/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" "-mcpu=*" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" "-mcpu=*" "-mfloat-abi=hard" } } */
/* { dg-options "-march=armv8.1-m.main -mthumb -O3 --save-temps -mfloat-abi=soft" } */
/* { dg-require-effective-target arm_softfloat } */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/arm/lob4.c b/gcc/testsuite/gcc.target/arm/lob4.c
index 792f352..86c774e 100644
--- a/gcc/testsuite/gcc.target/arm/lob4.c
+++ b/gcc/testsuite/gcc.target/arm/lob4.c
@@ -1,7 +1,7 @@
/* Check that GCC does not generate Armv8.1-M low over head loop instructions
if LR is modified within the loop. */
/* { dg-do compile } */
-/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" "-mcpu=*" } } */
+/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" "-mcpu=*" "-mfloat-abi=hard" } } */
/* { dg-options "-march=armv8.1-m.main -mthumb -O3 --save-temps -mfloat-abi=soft" } */
/* { dg-require-effective-target arm_softfloat } */
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/arm/lob5.c b/gcc/testsuite/gcc.target/arm/lob5.c
index 1a6adf1..df5383b 100644
--- a/gcc/testsuite/gcc.target/arm/lob5.c
+++ b/gcc/testsuite/gcc.target/arm/lob5.c
@@ -3,7 +3,7 @@
therefore is not optimizable. Outer loops are not optimized. */
/* { dg-do compile } */
/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-marm" "-mcpu=*" } } */
-/* { dg-options "-march=armv8.1-m.main -mthumb -O3 --save-temps" } */
+/* { dg-options "-march=armv8.1-m.main+fp -mthumb -O3 --save-temps" } */
#include <stdlib.h>
#include "lob.h"
diff --git a/gcc/testsuite/gcc.target/arm/lto/lto.exp b/gcc/testsuite/gcc.target/arm/lto/lto.exp
index d443546..64ebd8d 100644
--- a/gcc/testsuite/gcc.target/arm/lto/lto.exp
+++ b/gcc/testsuite/gcc.target/arm/lto/lto.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/arm/memset-inline-2.c b/gcc/testsuite/gcc.target/arm/memset-inline-2.c
index b8195ca..ba1f7ed 100644
--- a/gcc/testsuite/gcc.target/arm/memset-inline-2.c
+++ b/gcc/testsuite/gcc.target/arm/memset-inline-2.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-options "-save-temps -Os -fno-inline" } */
+/* { dg-options "-save-temps -Os -fno-inline -mno-long-calls" } */
#include <string.h>
#include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/arm/multilib.exp b/gcc/testsuite/gcc.target/arm/multilib.exp
index 6aba29e..46f2d86 100644
--- a/gcc/testsuite/gcc.target/arm/multilib.exp
+++ b/gcc/testsuite/gcc.target/arm/multilib.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# Copyright (C) 2017-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_libcall1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_libcall1.c
index 4fd422c..222007f 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_libcall1.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_libcall1.c
@@ -1,6 +1,6 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
-/* { dg-additional-options "-march=armv8.1-m.main+mve -mfloat-abi=hard -mthumb -mfpu=auto --save-temps" } */
+/* { dg-additional-options "-march=armv8.1-m.main+mve -mfloat-abi=hard -mthumb -mfpu=auto -mno-long-calls --save-temps" } */
float
foo (float a, float b, float c)
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_libcall2.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_libcall2.c
index 3fd1329..42047a3 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_libcall2.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_libcall2.c
@@ -1,6 +1,6 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
-/* { dg-additional-options "-march=armv8.1-m.main+mve -mfloat-abi=hard -mthumb -mfpu=auto --save-temps" } */
+/* { dg-additional-options "-march=armv8.1-m.main+mve -mfloat-abi=hard -mthumb -mfpu=auto -mno-long-calls --save-temps" } */
double
foo (double a, double b, double c)
diff --git a/gcc/testsuite/gcc.target/arm/mve/mve.exp b/gcc/testsuite/gcc.target/arm/mve/mve.exp
index e84cb06..f8590bf 100644
--- a/gcc/testsuite/gcc.target/arm/mve/mve.exp
+++ b/gcc/testsuite/gcc.target/arm/mve/mve.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2019-2020 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/arm/pr44788.c b/gcc/testsuite/gcc.target/arm/pr44788.c
index e69bbc6..470db32 100644
--- a/gcc/testsuite/gcc.target/arm/pr44788.c
+++ b/gcc/testsuite/gcc.target/arm/pr44788.c
@@ -2,6 +2,7 @@
/* { dg-skip-if "-mpure-code and -fPIC incompatible" { *-*-* } { "-mpure-code" } } */
/* { dg-require-effective-target arm_thumb2_ok } */
/* { dg-options "-Os -fno-strict-aliasing -fPIC -mthumb -march=armv7-a -mfpu=vfp3 -mfloat-abi=softfp" } */
+/* { dg-require-effective-target fpic } */
extern void foo (float *);
diff --git a/gcc/testsuite/gcc.target/arm/pr52006.c b/gcc/testsuite/gcc.target/arm/pr52006.c
index 136a39d..f818818 100644
--- a/gcc/testsuite/gcc.target/arm/pr52006.c
+++ b/gcc/testsuite/gcc.target/arm/pr52006.c
@@ -4,6 +4,7 @@
/* { dg-skip-if "no support for hard-float VFP ABI" { arm_thumb1 } { "-march=*" } { "" } } */
/* { dg-skip-if "-mpure-code and -fPIC incompatible" { *-*-* } { "-mpure-code" } } */
/* { dg-options "-march=armv7-a+fp -mfloat-abi=hard -O2 -fPIC" } */
+/* { dg-require-effective-target fpic } */
unsigned long a;
static int b;
diff --git a/gcc/testsuite/gcc.target/arm/pr59858.c b/gcc/testsuite/gcc.target/arm/pr59858.c
index bcfd5d5..3360b48 100644
--- a/gcc/testsuite/gcc.target/arm/pr59858.c
+++ b/gcc/testsuite/gcc.target/arm/pr59858.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-march=armv5te -fno-builtin -mfloat-abi=soft -mthumb -fno-stack-protector -Os -fno-tree-loop-optimize -fno-tree-dominator-opts -fPIC -w" } */
+/* { dg-require-effective-target fpic } */
/* { dg-skip-if "Incompatible command line options: -mfloat-abi=soft -mfloat-abi=hard" { *-*-* } { "-mfloat-abi=hard" } { "" } } */
/* { dg-require-effective-target arm_arch_v5te_thumb_ok } */
diff --git a/gcc/testsuite/gcc.target/arm/pr78255-2.c b/gcc/testsuite/gcc.target/arm/pr78255-2.c
index cc1c180..fd379ae 100644
--- a/gcc/testsuite/gcc.target/arm/pr78255-2.c
+++ b/gcc/testsuite/gcc.target/arm/pr78255-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2" } */
+/* { dg-options "-O2 -mno-long-calls" } */
extern int bar (void *);
diff --git a/gcc/testsuite/gcc.target/arm/pr97872.c b/gcc/testsuite/gcc.target/arm/pr97872.c
new file mode 100644
index 0000000..eeb4dd9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr97872.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O3" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint8x8_t f1(int8x8_t a, int8x8_t b) {
+ return a < b;
+}
+
+/* { dg-final { scan-assembler-not "vbsl" } } */
diff --git a/gcc/testsuite/gcc.target/arm/pr97969.c b/gcc/testsuite/gcc.target/arm/pr97969.c
new file mode 100644
index 0000000..714a1d1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr97969.c
@@ -0,0 +1,54 @@
+/* { dg-do compile } */
+/* { dg-options "-std=c99 -fno-omit-frame-pointer -mthumb -w -Os" } */
+
+typedef a[23];
+enum { b };
+typedef struct {
+ int c;
+ char *e;
+ char f
+} d;
+typedef enum { g = 1 } h;
+typedef struct {
+ h i;
+ int j
+} k;
+typedef struct {
+ a l;
+ int a;
+ int m;
+ int n;
+ int o;
+ short p;
+ int q;
+ k r;
+ char e;
+ char *s;
+ d t;
+ d *u;
+ short v;
+ int w
+} aa;
+c(char x, int y, char z, int ab) {
+ aa ac;
+ ac.r.i = 0;
+ d ad;
+ ac.t = ad;
+ ac.u = 0;
+ ae(&ac.v, 0, 0);
+ ac.w = 0;
+ af(&ac, x + y, z, z + ab);
+ if (ag(0))
+ return 0;
+ if (x)
+ ac.s = z + ab;
+ else
+ ac.s = x + y;
+ ac.o |= g;
+ if (!setjmp()) {
+ ah(ac);
+ ai(b);
+ ac.e = z + ab;
+ aj(ac);
+ }
+}
diff --git a/gcc/testsuite/gcc.target/arm/pr98636.c b/gcc/testsuite/gcc.target/arm/pr98636.c
new file mode 100644
index 0000000..c4d235c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr98636.c
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-mfp16-format=alternative" } */
+
+#pragma GCC push_options
+# pragma GCC target ("arch=armv8.2-a+fp16") /* { dg-error "selected fp16 options are incompatible" } */
+#pragma GCC pop_options
diff --git a/gcc/testsuite/gcc.target/arm/pure-code/pure-code.exp b/gcc/testsuite/gcc.target/arm/pure-code/pure-code.exp
index cf3664a..60efcd6 100644
--- a/gcc/testsuite/gcc.target/arm/pure-code/pure-code.exp
+++ b/gcc/testsuite/gcc.target/arm/pure-code/pure-code.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/arm/require-pic-register-loc.c b/gcc/testsuite/gcc.target/arm/require-pic-register-loc.c
index 9f089ee..9c532f3 100644
--- a/gcc/testsuite/gcc.target/arm/require-pic-register-loc.c
+++ b/gcc/testsuite/gcc.target/arm/require-pic-register-loc.c
@@ -1,15 +1,16 @@
/* { dg-do compile } */
/* { dg-skip-if "-mpure-code and -fPIC incompatible" { *-*-* } { "-mpure-code" } } */
/* { dg-options "-g -fPIC" } */
+/* { dg-require-effective-target fpic } */
void *v;
void a (void *x) { }
void b (void) { }
- /* line 8. */
-int /* line 9. */
-main (int argc) /* line 10. */
-{ /* line 11. */
- if (argc == 12345) /* line 12. */
+ /* line 9. */
+int /* line 10. */
+main (int argc) /* line 11. */
+{ /* line 12. */
+ if (argc == 12345) /* line 13. */
{
a (v);
return 1;
@@ -19,12 +20,12 @@ main (int argc) /* line 10. */
return 0;
}
-/* { dg-final { scan-assembler-not "\.loc 1 8 \[0-9\]\+" } } */
/* { dg-final { scan-assembler-not "\.loc 1 9 \[0-9\]\+" } } */
/* { dg-final { scan-assembler-not "\.loc 1 10 \[0-9\]\+" } } */
+/* { dg-final { scan-assembler-not "\.loc 1 11 \[0-9\]\+" } } */
/* The loc at the start of the prologue. */
-/* { dg-final { scan-assembler-times "\.loc 1 11 \[0-9\]\+" 1 } } */
+/* { dg-final { scan-assembler-times "\.loc 1 12 \[0-9\]\+" 1 } } */
/* The loc at the end of the prologue, with the first user line. */
-/* { dg-final { scan-assembler-times "\.loc 1 12 \[0-9\]\+" 1 } } */
+/* { dg-final { scan-assembler-times "\.loc 1 13 \[0-9\]\+" 1 } } */
diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-vand.c b/gcc/testsuite/gcc.target/arm/simd/mve-vand.c
new file mode 100644
index 0000000..26247dc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/simd/mve-vand.c
@@ -0,0 +1,63 @@
+/* { dg-do assemble } */
+/* { dg-require-effective-target arm_v8_1m_mve_ok } */
+/* { dg-add-options arm_v8_1m_mve } */
+/* { dg-additional-options "-O3" } */
+
+#include <stdint.h>
+
+#define FUNC(SIGN, TYPE, BITS, NB, OP, NAME) \
+ void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE##BITS##_t * __restrict__ dest, TYPE##BITS##_t *a, TYPE##BITS##_t *b) { \
+ int i; \
+ for (i=0; i<NB; i++) { \
+ dest[i] = a[i] OP b[i]; \
+ } \
+}
+
+#define FUNC_IMM(SIGN, TYPE, BITS, NB, OP, NAME) \
+ void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE##BITS##_t * __restrict__ dest, TYPE##BITS##_t *a) { \
+ int i; \
+ for (i=0; i<NB; i++) { \
+ dest[i] = a[i] OP 1; \
+ } \
+}
+
+/* 64-bit vectors. */
+FUNC(s, int, 32, 2, &, vand)
+FUNC(u, uint, 32, 2, &, vand)
+FUNC(s, int, 16, 4, &, vand)
+FUNC(u, uint, 16, 4, &, vand)
+FUNC(s, int, 8, 8, &, vand)
+FUNC(u, uint, 8, 8, &, vand)
+
+/* 128-bit vectors. */
+FUNC(s, int, 32, 4, &, vand)
+FUNC(u, uint, 32, 4, &, vand)
+FUNC(s, int, 16, 8, &, vand)
+FUNC(u, uint, 16, 8, &, vand)
+FUNC(s, int, 8, 16, &, vand)
+FUNC(u, uint, 8, 16, &, vand)
+
+/* 64-bit vectors. */
+FUNC_IMM(s, int, 32, 2, &, vandimm)
+FUNC_IMM(u, uint, 32, 2, &, vandimm)
+FUNC_IMM(s, int, 16, 4, &, vandimm)
+FUNC_IMM(u, uint, 16, 4, &, vandimm)
+FUNC_IMM(s, int, 8, 8, &, vandimm)
+FUNC_IMM(u, uint, 8, 8, &, vandimm)
+
+/* 128-bit vectors. */
+FUNC_IMM(s, int, 32, 4, &, vandimm)
+FUNC_IMM(u, uint, 32, 4, &, vandimm)
+FUNC_IMM(s, int, 16, 8, &, vandimm)
+FUNC_IMM(u, uint, 16, 8, &, vandimm)
+FUNC_IMM(s, int, 8, 16, &, vandimm)
+FUNC_IMM(u, uint, 8, 16, &, vandimm)
+
+/* MVE has only 128-bit vectors, so we can vectorize only half of the
+ functions above. */
+/* Although float16 and float32 types are supported at assembly level,
+ we cannot test them with the '&' operator, so we check only the
+ integer variants. */
+/* For some reason, we do not generate the immediate version, we still
+ use vldr to load the vector of immediates. */
+/* { dg-final { scan-assembler-times {vand\tq[0-9]+, q[0-9]+, q[0-9]+} 12 } } */
diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-vbic.c b/gcc/testsuite/gcc.target/arm/simd/mve-vbic.c
new file mode 100644
index 0000000..c9a64c6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/simd/mve-vbic.c
@@ -0,0 +1,65 @@
+/* { dg-do assemble } */
+/* { dg-require-effective-target arm_v8_1m_mve_ok } */
+/* { dg-add-options arm_v8_1m_mve } */
+/* { dg-additional-options "-O3" } */
+
+#include <stdint.h>
+
+#define FUNC(SIGN, TYPE, BITS, NB, OP, NAME) \
+ void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE##BITS##_t * __restrict__ dest, TYPE##BITS##_t *a, TYPE##BITS##_t *b) { \
+ int i; \
+ for (i=0; i<NB; i++) { \
+ dest[i] = a[i] OP b[i]; \
+ } \
+}
+
+#define FUNC_IMM(SIGN, TYPE, BITS, NB, OP, NAME) \
+ void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE##BITS##_t * __restrict__ dest, TYPE##BITS##_t *a) { \
+ int i; \
+ for (i=0; i<NB; i++) { \
+ dest[i] = a[i] OP 1; \
+ } \
+}
+
+/* 64-bit vectors. */
+FUNC(s, int, 32, 2, & ~ , vbic)
+FUNC(u, uint, 32, 2, & ~ , vbic)
+FUNC(s, int, 16, 4, & ~ , vbic)
+FUNC(u, uint, 16, 4, & ~ , vbic)
+FUNC(s, int, 8, 8, & ~ , vbic)
+FUNC(u, uint, 8, 8, & ~ , vbic)
+
+/* 128-bit vectors. */
+FUNC(s, int, 32, 4, & ~ , vbic)
+FUNC(u, uint, 32, 4, & ~ , vbic)
+FUNC(s, int, 16, 8, & ~ , vbic)
+FUNC(u, uint, 16, 8, & ~ , vbic)
+FUNC(s, int, 8, 16, & ~ , vbic)
+FUNC(u, uint, 8, 16, & ~ , vbic)
+
+/* 64-bit vectors. */
+FUNC_IMM(s, int, 32, 2, & ~, vbicimm)
+FUNC_IMM(u, uint, 32, 2, & ~, vbicimm)
+FUNC_IMM(s, int, 16, 4, & ~, vbicimm)
+FUNC_IMM(u, uint, 16, 4, & ~, vbicimm)
+FUNC_IMM(s, int, 8, 8, & ~, vbicimm)
+FUNC_IMM(u, uint, 8, 8, & ~, vbicimm)
+
+/* 128-bit vectors. */
+FUNC_IMM(s, int, 32, 4, & ~, vbicimm)
+FUNC_IMM(u, uint, 32, 4, & ~, vbicimm)
+FUNC_IMM(s, int, 16, 8, & ~, vbicimm)
+FUNC_IMM(u, uint, 16, 8, & ~, vbicimm)
+FUNC_IMM(s, int, 8, 16, & ~, vbicimm)
+FUNC_IMM(u, uint, 8, 16, & ~, vbicimm)
+
+/* MVE has only 128-bit vectors, so we can vectorize only half of the
+ functions above. */
+/* We emit vand.i[16|32] qX, #XX for the first four versions of the
+ 128-bit vector vbicimm tests. */
+/* For some reason, we do not generate the immediate version for
+ int8x16 and uint8x16, we still use vldr to load the vector of
+ immediates. */
+/* { dg-final { scan-assembler-times {vbic\tq[0-9]+, q[0-9]+, q[0-9]+} 6 } } */
+/* { dg-final { scan-assembler-times {vand.i[0-9]+\tq[0-9]+} 4 } } */
+/* { dg-final { scan-assembler-times {vand\tq[0-9]+, q[0-9]+, q[0-9]+} 2 } } */
diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-veor.c b/gcc/testsuite/gcc.target/arm/simd/mve-veor.c
new file mode 100644
index 0000000..321961f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/simd/mve-veor.c
@@ -0,0 +1,61 @@
+/* { dg-do assemble } */
+/* { dg-require-effective-target arm_v8_1m_mve_ok } */
+/* { dg-add-options arm_v8_1m_mve } */
+/* { dg-additional-options "-O3" } */
+
+#include <stdint.h>
+
+#define FUNC(SIGN, TYPE, BITS, NB, OP, NAME) \
+ void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE##BITS##_t * __restrict__ dest, TYPE##BITS##_t *a, TYPE##BITS##_t *b) { \
+ int i; \
+ for (i=0; i<NB; i++) { \
+ dest[i] = a[i] OP b[i]; \
+ } \
+}
+
+#define FUNC_IMM(SIGN, TYPE, BITS, NB, OP, NAME) \
+ void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE##BITS##_t * __restrict__ dest, TYPE##BITS##_t *a) { \
+ int i; \
+ for (i=0; i<NB; i++) { \
+ dest[i] = a[i] OP 1; \
+ } \
+}
+
+/* 64-bit vectors. */
+FUNC(s, int, 32, 2, ^, veor)
+FUNC(u, uint, 32, 2, ^, veor)
+FUNC(s, int, 16, 4, ^, veor)
+FUNC(u, uint, 16, 4, ^, veor)
+FUNC(s, int, 8, 8, ^, veor)
+FUNC(u, uint, 8, 8, ^, veor)
+
+/* 128-bit vectors. */
+FUNC(s, int, 32, 4, ^, veor)
+FUNC(u, uint, 32, 4, ^, veor)
+FUNC(s, int, 16, 8, ^, veor)
+FUNC(u, uint, 16, 8, ^, veor)
+FUNC(s, int, 8, 16, ^, veor)
+FUNC(u, uint, 8, 16, ^, veor)
+
+/* 64-bit vectors. */
+FUNC_IMM(s, int, 32, 2, ^, veorimm)
+FUNC_IMM(u, uint, 32, 2, ^, veorimm)
+FUNC_IMM(s, int, 16, 4, ^, veorimm)
+FUNC_IMM(u, uint, 16, 4, ^, veorimm)
+FUNC_IMM(s, int, 8, 8, ^, veorimm)
+FUNC_IMM(u, uint, 8, 8, ^, veorimm)
+
+/* 128-bit vectors. */
+FUNC_IMM(s, int, 32, 4, ^, veorimm)
+FUNC_IMM(u, uint, 32, 4, ^, veorimm)
+FUNC_IMM(s, int, 16, 8, ^, veorimm)
+FUNC_IMM(u, uint, 16, 8, ^, veorimm)
+FUNC_IMM(s, int, 8, 16, ^, veorimm)
+FUNC_IMM(u, uint, 8, 16, ^, veorimm)
+
+/* MVE has only 128-bit vectors, so we can vectorize only half of the
+ functions above. */
+/* Although float16 and float32 types are supported at assembly level,
+ we cannot test them with the '^' operator, so we check only the
+ integer variants. */
+/* { dg-final { scan-assembler-times {veor\tq[0-9]+, q[0-9]+, q[0-9]+} 12 } } */
diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-vmvn.c b/gcc/testsuite/gcc.target/arm/simd/mve-vmvn.c
new file mode 100644
index 0000000..73e897a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/simd/mve-vmvn.c
@@ -0,0 +1,35 @@
+/* { dg-do assemble } */
+/* { dg-require-effective-target arm_v8_1m_mve_ok } */
+/* { dg-add-options arm_v8_1m_mve } */
+/* { dg-additional-options "-O3" } */
+
+#include <stdint.h>
+
+#define FUNC(SIGN, TYPE, BITS, NB, OP, NAME) \
+ void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE##BITS##_t * __restrict__ dest, TYPE##BITS##_t *a) { \
+ int i; \
+ for (i=0; i<NB; i++) { \
+ dest[i] = OP a[i]; \
+ } \
+}
+
+/* vmnvq supports only 16-bit and 32-bit elements. */
+/* 64-bit vectors. */
+FUNC(s, int, 32, 2, ~, vmvn)
+FUNC(u, uint, 32, 2, ~, vmvn)
+FUNC(s, int, 16, 4, ~, vmvn)
+FUNC(u, uint, 16, 4, ~, vmvn)
+FUNC(s, int, 8, 8, ~, vmvn)
+FUNC(u, uint, 8, 8, ~, vmvn)
+
+/* 128-bit vectors. */
+FUNC(s, int, 32, 4, ~, vmvn)
+FUNC(u, uint, 32, 4, ~, vmvn)
+FUNC(s, int, 16, 8, ~, vmvn)
+FUNC(u, uint, 16, 8, ~, vmvn)
+FUNC(s, int, 8, 16, ~, vmvn)
+FUNC(u, uint, 8, 16, ~, vmvn)
+
+/* MVE has only 128-bit vectors, so we can vectorize only half of the
+ functions above. */
+/* { dg-final { scan-assembler-times {vmvn\tq[0-9]+, q[0-9]+} 6 } } */
diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-vneg.c b/gcc/testsuite/gcc.target/arm/simd/mve-vneg.c
new file mode 100644
index 0000000..7945a06
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/simd/mve-vneg.c
@@ -0,0 +1,52 @@
+/* { dg-do assemble } */
+/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
+/* { dg-add-options arm_v8_1m_mve_fp } */
+/* { dg-additional-options "-O3" } */
+
+#include <stdint.h>
+#include <arm_mve.h>
+
+#define FUNC(SIGN, TYPE, BITS, NB, OP, NAME) \
+ void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE##BITS##_t * __restrict__ dest, TYPE##BITS##_t *a) { \
+ int i; \
+ for (i=0; i<NB; i++) { \
+ dest[i] = OP a[i]; \
+ } \
+}
+
+#define FUNC_FLOAT(SIGN, TYPE, BITS, NB, OP, NAME) \
+ void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE * __restrict__ dest, TYPE *a) { \
+ int i; \
+ for (i=0; i<NB; i++) { \
+ dest[i] = OP a[i]; \
+ } \
+}
+
+/* vmnvq supports only 16-bit and 32-bit elements. */
+/* 64-bit vectors. */
+FUNC(s, int, 32, 2, -, vneg)
+FUNC(u, uint, 32, 2, -, vneg)
+FUNC(s, int, 16, 4, -, vneg)
+FUNC(u, uint, 16, 4, -, vneg)
+FUNC(s, int, 8, 8, -, vneg)
+FUNC(u, uint, 8, 8, -, vneg)
+FUNC_FLOAT(f, float, 32, 2, -, vneg)
+FUNC(f, float, 16, 4, -, vneg)
+
+/* 128-bit vectors. */
+FUNC(s, int, 32, 4, -, vneg)
+FUNC(u, uint, 32, 4, -, vneg)
+FUNC(s, int, 16, 8, -, vneg)
+FUNC(u, uint, 16, 8, -, vneg)
+FUNC(s, int, 8, 16, -, vneg)
+FUNC(u, uint, 8, 16, -, vneg)
+FUNC_FLOAT(f, float, 32, 4, -, vneg)
+FUNC(f, float, 16, 8, -, vneg)
+
+/* MVE has only 128-bit vectors, so we can vectorize only half of the
+ functions above. */
+/* { dg-final { scan-assembler-times {vneg.s[0-9]+ q[0-9]+, q[0-9]+} 6 } } */
+/* { dg-final { scan-assembler-times {vneg.f[0-9]+ q[0-9]+, q[0-9]+} 2 } } */
+/* { dg-final { scan-assembler-times {vldr[bhw].[0-9]+\tq[0-9]+} 8 } } */
+/* { dg-final { scan-assembler-times {vstr[bhw].[0-9]+\tq[0-9]+} 8 } } */
+/* { dg-final { scan-assembler-not {orr\tr[0-9]+, r[0-9]+, r[0-9]+} } } */
diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-vorn.c b/gcc/testsuite/gcc.target/arm/simd/mve-vorn.c
new file mode 100644
index 0000000..219b835
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/simd/mve-vorn.c
@@ -0,0 +1,38 @@
+/* { dg-do assemble } */
+/* { dg-require-effective-target arm_v8_1m_mve_ok } */
+/* { dg-add-options arm_v8_1m_mve } */
+/* { dg-additional-options "-O3" } */
+
+#include <stdint.h>
+
+#define FUNC(SIGN, TYPE, BITS, NB, OP, NAME) \
+ void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE##BITS##_t * __restrict__ dest, TYPE##BITS##_t *a, TYPE##BITS##_t *b) { \
+ int i; \
+ for (i=0; i<NB; i++) { \
+ dest[i] = a[i] OP b[i]; \
+ } \
+}
+
+/* 64-bit vectors. */
+FUNC(s, int, 32, 2, | ~ , vorn)
+FUNC(u, uint, 32, 2, | ~ , vorn)
+FUNC(s, int, 16, 4, | ~ , vorn)
+FUNC(u, uint, 16, 4, | ~ , vorn)
+FUNC(s, int, 8, 8, | ~ , vorn)
+FUNC(u, uint, 8, 8, | ~ , vorn)
+
+/* 128-bit vectors. */
+FUNC(s, int, 32, 4, | ~ , vorn)
+FUNC(u, uint, 32, 4, | ~ , vorn)
+FUNC(s, int, 16, 8, | ~ , vorn)
+FUNC(u, uint, 16, 8, | ~ , vorn)
+FUNC(s, int, 8, 16, | ~ , vorn)
+FUNC(u, uint, 8, 16, | ~ , vorn)
+
+/* MVE has only 128-bit vectors, so we can vectorize only half of the
+ functions above. */
+/* Although float16 and float32 types are supported at assembly level,
+ we cannot test them with the '| ~ ' operator, so we check only the
+ integer variants. */
+/* No need to test immediates as second operand, they are covered by vorr. */
+/* { dg-final { scan-assembler-times {vorn\tq[0-9]+, q[0-9]+, q[0-9]+} 6 } } */
diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-vorr.c b/gcc/testsuite/gcc.target/arm/simd/mve-vorr.c
new file mode 100644
index 0000000..b1190f6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/simd/mve-vorr.c
@@ -0,0 +1,64 @@
+/* { dg-do assemble } */
+/* { dg-require-effective-target arm_v8_1m_mve_ok } */
+/* { dg-add-options arm_v8_1m_mve } */
+/* { dg-additional-options "-O3" } */
+
+#include <stdint.h>
+
+#define FUNC(SIGN, TYPE, BITS, NB, OP, NAME) \
+ void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE##BITS##_t * __restrict__ dest, TYPE##BITS##_t *a, TYPE##BITS##_t *b) { \
+ int i; \
+ for (i=0; i<NB; i++) { \
+ dest[i] = a[i] OP b[i]; \
+ } \
+}
+
+#define FUNC_IMM(SIGN, TYPE, BITS, NB, OP, NAME) \
+ void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE##BITS##_t * __restrict__ dest, TYPE##BITS##_t *a) { \
+ int i; \
+ for (i=0; i<NB; i++) { \
+ dest[i] = a[i] OP 1; \
+ } \
+}
+
+/* 64-bit vectors. */
+FUNC(s, int, 32, 2, |, vorr)
+FUNC(u, uint, 32, 2, |, vorr)
+FUNC(s, int, 16, 4, |, vorr)
+FUNC(u, uint, 16, 4, |, vorr)
+FUNC(s, int, 8, 8, |, vorr)
+FUNC(u, uint, 8, 8, |, vorr)
+
+/* 128-bit vectors. */
+FUNC(s, int, 32, 4, |, vorr)
+FUNC(u, uint, 32, 4, |, vorr)
+FUNC(s, int, 16, 8, |, vorr)
+FUNC(u, uint, 16, 8, |, vorr)
+FUNC(s, int, 8, 16, |, vorr)
+FUNC(u, uint, 8, 16, |, vorr)
+
+/* 64-bit vectors. */
+FUNC_IMM(s, int, 32, 2, |, vorrimm)
+FUNC_IMM(u, uint, 32, 2, |, vorrimm)
+FUNC_IMM(s, int, 16, 4, |, vorrimm)
+FUNC_IMM(u, uint, 16, 4, |, vorrimm)
+FUNC_IMM(s, int, 8, 8, |, vorrimm)
+FUNC_IMM(u, uint, 8, 8, |, vorrimm)
+
+/* 128-bit vectors. */
+FUNC_IMM(s, int, 32, 4, |, vorrimm)
+FUNC_IMM(u, uint, 32, 4, |, vorrimm)
+FUNC_IMM(s, int, 16, 8, |, vorrimm)
+FUNC_IMM(u, uint, 16, 8, |, vorrimm)
+FUNC_IMM(s, int, 8, 16, |, vorrimm)
+FUNC_IMM(u, uint, 8, 16, |, vorrimm)
+
+/* MVE has only 128-bit vectors, so we can vectorize only half of the
+ functions above. */
+/* Although float16 and float32 types are supported at assembly level,
+ we cannot test them with the '|' operator, so we check only the
+ integer variants. */
+/* We emit vorr.i[16|32] qX, #1 for the first four versions of the
+ 128-bit vector vorrimm tests. */
+/* { dg-final { scan-assembler-times {vorr\tq[0-9]+, q[0-9]+, q[0-9]+} 8 } } */
+/* { dg-final { scan-assembler-times {vorr.i[0-9]+\tq[0-9]+} 4 } } */
diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-vshl.c b/gcc/testsuite/gcc.target/arm/simd/mve-vshl.c
new file mode 100644
index 0000000..7a06449
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/simd/mve-vshl.c
@@ -0,0 +1,62 @@
+/* { dg-do assemble } */
+/* { dg-require-effective-target arm_v8_1m_mve_ok } */
+/* { dg-add-options arm_v8_1m_mve } */
+/* { dg-additional-options "-O3" } */
+
+#include <stdint.h>
+
+#define FUNC(SIGN, TYPE, BITS, NB, OP, NAME) \
+ void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE##BITS##_t * __restrict__ dest, TYPE##BITS##_t *a, TYPE##BITS##_t *b) { \
+ int i; \
+ for (i=0; i<NB; i++) { \
+ dest[i] = a[i] OP b[i]; \
+ } \
+}
+
+#define FUNC_IMM(SIGN, TYPE, BITS, NB, OP, NAME) \
+ void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE##BITS##_t * __restrict__ dest, TYPE##BITS##_t *a) { \
+ int i; \
+ for (i=0; i<NB; i++) { \
+ dest[i] = a[i] OP 5; \
+ } \
+}
+
+/* 64-bit vectors. */
+FUNC(s, int, 32, 2, <<, vshl)
+FUNC(u, uint, 32, 2, <<, vshl)
+FUNC(s, int, 16, 4, <<, vshl)
+FUNC(u, uint, 16, 4, <<, vshl)
+FUNC(s, int, 8, 8, <<, vshl)
+FUNC(u, uint, 8, 8, <<, vshl)
+
+/* 128-bit vectors. */
+FUNC(s, int, 32, 4, <<, vshl)
+FUNC(u, uint, 32, 4, <<, vshl)
+FUNC(s, int, 16, 8, <<, vshl) /* FIXME: not vectorized */
+FUNC(u, uint, 16, 8, <<, vshl) /* FIXME: not vectorized */
+FUNC(s, int, 8, 16, <<, vshl) /* FIXME: not vectorized */
+FUNC(u, uint, 8, 16, <<, vshl) /* FIXME: not vectorized */
+
+/* 64-bit vectors. */
+FUNC_IMM(s, int, 32, 2, <<, vshlimm)
+FUNC_IMM(u, uint, 32, 2, <<, vshlimm)
+FUNC_IMM(s, int, 16, 4, <<, vshlimm)
+FUNC_IMM(u, uint, 16, 4, <<, vshlimm)
+FUNC_IMM(s, int, 8, 8, <<, vshlimm)
+FUNC_IMM(u, uint, 8, 8, <<, vshlimm)
+
+/* 128-bit vectors. */
+FUNC_IMM(s, int, 32, 4, <<, vshlimm)
+FUNC_IMM(u, uint, 32, 4, <<, vshlimm)
+FUNC_IMM(s, int, 16, 8, <<, vshlimm)
+FUNC_IMM(u, uint, 16, 8, <<, vshlimm)
+FUNC_IMM(s, int, 8, 16, <<, vshlimm)
+FUNC_IMM(u, uint, 8, 16, <<, vshlimm)
+
+/* MVE has only 128-bit vectors, so we can vectorize only half of the
+ functions above. */
+/* We only emit vshl.u, which is equivalent to vshl.s anyway. */
+/* { dg-final { scan-assembler-times {vshl.u[0-9]+\tq[0-9]+, q[0-9]+} 2 } } */
+
+/* We emit vshl.i when the shift amount is an immediate. */
+/* { dg-final { scan-assembler-times {vshl.i[0-9]+\tq[0-9]+, q[0-9]+} 6 } } */
diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-vshr.c b/gcc/testsuite/gcc.target/arm/simd/mve-vshr.c
new file mode 100644
index 0000000..d4e658c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/simd/mve-vshr.c
@@ -0,0 +1,59 @@
+/* { dg-do assemble } */
+/* { dg-require-effective-target arm_v8_1m_mve_ok } */
+/* { dg-add-options arm_v8_1m_mve } */
+/* { dg-additional-options "-O3" } */
+
+#include <stdint.h>
+
+#define FUNC(SIGN, TYPE, BITS, NB, OP, NAME) \
+ void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE##BITS##_t * __restrict__ dest, TYPE##BITS##_t *a, TYPE##BITS##_t *b) { \
+ int i; \
+ for (i=0; i<NB; i++) { \
+ dest[i] = a[i] OP b[i]; \
+ } \
+}
+
+#define FUNC_IMM(SIGN, TYPE, BITS, NB, OP, NAME) \
+ void test_ ## NAME ##_ ## SIGN ## BITS ## x ## NB (TYPE##BITS##_t * __restrict__ dest, TYPE##BITS##_t *a) { \
+ int i; \
+ for (i=0; i<NB; i++) { \
+ dest[i] = a[i] OP 5; \
+ } \
+}
+
+/* 64-bit vectors. */
+FUNC(s, int, 32, 2, >>, vshr)
+FUNC(u, uint, 32, 2, >>, vshr)
+FUNC(s, int, 16, 4, >>, vshr)
+FUNC(u, uint, 16, 4, >>, vshr)
+FUNC(s, int, 8, 8, >>, vshr)
+FUNC(u, uint, 8, 8, >>, vshr)
+
+/* 128-bit vectors. */
+FUNC(s, int, 32, 4, >>, vshr)
+FUNC(u, uint, 32, 4, >>, vshr)
+FUNC(s, int, 16, 8, >>, vshr)
+FUNC(u, uint, 16, 8, >>, vshr)
+FUNC(s, int, 8, 16, >>, vshr)
+FUNC(u, uint, 8, 16, >>, vshr)
+
+/* 64-bit vectors. */
+FUNC_IMM(s, int, 32, 2, >>, vshrimm)
+FUNC_IMM(u, uint, 32, 2, >>, vshrimm)
+FUNC_IMM(s, int, 16, 4, >>, vshrimm)
+FUNC_IMM(u, uint, 16, 4, >>, vshrimm)
+FUNC_IMM(s, int, 8, 8, >>, vshrimm)
+FUNC_IMM(u, uint, 8, 8, >>, vshrimm)
+
+/* 128-bit vectors. */
+FUNC_IMM(s, int, 32, 4, >>, vshrimm)
+FUNC_IMM(u, uint, 32, 4, >>, vshrimm)
+FUNC_IMM(s, int, 16, 8, >>, vshrimm)
+FUNC_IMM(u, uint, 16, 8, >>, vshrimm)
+FUNC_IMM(s, int, 8, 16, >>, vshrimm)
+FUNC_IMM(u, uint, 8, 16, >>, vshrimm)
+
+/* MVE has only 128-bit vectors, so we can vectorize only half of the
+ functions above. */
+/* { dg-final { scan-assembler-times {vshr.s[0-9]+\tq[0-9]+, q[0-9]+} 3 } } */
+/* { dg-final { scan-assembler-times {vshr.u[0-9]+\tq[0-9]+, q[0-9]+} 3 } } */
diff --git a/gcc/testsuite/gcc.target/arm/simd/mve-vsub_1.c b/gcc/testsuite/gcc.target/arm/simd/mve-vsub_1.c
index cb3ef3a..842e5c6 100644
--- a/gcc/testsuite/gcc.target/arm/simd/mve-vsub_1.c
+++ b/gcc/testsuite/gcc.target/arm/simd/mve-vsub_1.c
@@ -1,7 +1,6 @@
/* { dg-do compile } */
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
-/* { dg -additional-options "-O3 -funsafe-math-optimizations" } */
/* { dg-additional-options "-O3" } */
#include <stdint.h>
diff --git a/gcc/testsuite/gcc.target/arm/simd/simd.exp b/gcc/testsuite/gcc.target/arm/simd/simd.exp
index c2ca671..5cde329 100644
--- a/gcc/testsuite/gcc.target/arm/simd/simd.exp
+++ b/gcc/testsuite/gcc.target/arm/simd/simd.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/arm/simd/vceqz_p64.c b/gcc/testsuite/gcc.target/arm/simd/vceqz_p64.c
new file mode 100644
index 0000000..c6aa6c9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/simd/vceqz_p64.c
@@ -0,0 +1,18 @@
+/* Test the `vceqz_p64' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O2 -fno-inline" } */
+/* { dg-require-effective-target arm_crypto_ok } */
+/* { dg-add-options arm_crypto } */
+
+#include "arm_neon.h"
+
+poly64x1_t v1;
+uint64x1_t result1;
+
+void func()
+{
+ result1 = vceqz_p64 (v1);
+}
+
+/* { dg-final { scan-assembler-times "vceq\.i32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+, #0\n" 1 } } */
diff --git a/gcc/testsuite/gcc.target/arm/simd/vceqzq_p64.c b/gcc/testsuite/gcc.target/arm/simd/vceqzq_p64.c
new file mode 100644
index 0000000..a99bb8a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/simd/vceqzq_p64.c
@@ -0,0 +1,18 @@
+/* Test the `vceqzq_p64' ARM Neon intrinsic. */
+
+/* { dg-do compile } */
+/* { dg-options "-save-temps -O2 -fno-inline" } */
+/* { dg-require-effective-target arm_crypto_ok } */
+/* { dg-add-options arm_crypto } */
+
+#include "arm_neon.h"
+
+poly64x2_t v2;
+uint64x2_t result2;
+
+void func()
+{
+ result2 = vceqzq_p64 (v2);
+}
+
+/* { dg-final { scan-assembler-times "vceq\.i32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+, #0\n" 2 } } */
diff --git a/gcc/testsuite/gcc.target/arm/tlscall.c b/gcc/testsuite/gcc.target/arm/tlscall.c
index 71366ef..8d5609a 100644
--- a/gcc/testsuite/gcc.target/arm/tlscall.c
+++ b/gcc/testsuite/gcc.target/arm/tlscall.c
@@ -2,6 +2,7 @@
/* { dg-do assemble } */
/* { dg-options "-O2 -fPIC -mtls-dialect=gnu2" } */
+/* { dg-require-effective-target fpic } */
/* { dg-skip-if "FDPIC does not support gnu2 TLS dialect" { arm*-*-uclinuxfdpiceabi } "*" "" } */
/* { dg-skip-if "-mpure-code and -fPIC incompatible" { *-*-* } { "-mpure-code" } } */
diff --git a/gcc/testsuite/gcc.target/arm/vect-half-floats.c b/gcc/testsuite/gcc.target/arm/vect-half-floats.c
new file mode 100644
index 0000000..49ca2e9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/vect-half-floats.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-Ofast -ftree-vectorize -fdump-tree-vect-all -std=c11" } */
+/* { dg-require-effective-target float16 } */
+/* { dg-require-effective-target arm_fp16_ok } */
+/* { dg-add-options float16 } */
+
+void foo (_Float16 n1[], _Float16 n2[], _Float16 r[], int n)
+{
+ for (int i = 0; i < n; i++)
+ r[i] = n1[i] + n2[i];
+}
+
+/* { dg-final { scan-tree-dump-not "LOOP VECTORIZED" "vect" } } */
+
diff --git a/gcc/testsuite/gcc.target/avr/avr.exp b/gcc/testsuite/gcc.target/avr/avr.exp
index 85721fc..c8af505 100644
--- a/gcc/testsuite/gcc.target/avr/avr.exp
+++ b/gcc/testsuite/gcc.target/avr/avr.exp
@@ -1,41 +1,41 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-# GCC testsuite that uses the `dg.exp' driver.
-
-# Exit immediately if this isn't an AVR target.
-if ![istarget avr-*-*] then {
- return
-}
-
-# Load support procs.
-load_lib gcc-dg.exp
-
-# If a testcase doesn't have special options, use these.
-global DEFAULT_CFLAGS
-if ![info exists DEFAULT_CFLAGS] then {
- set DEFAULT_CFLAGS " -ansi -pedantic-errors"
-}
-
-# Initialize `dg'.
-dg-init
-
-# Main loop.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{\[cCS\],cpp}]] \
- "" $DEFAULT_CFLAGS
-
-# All done.
-dg-finish
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# GCC testsuite that uses the `dg.exp' driver.
+
+# Exit immediately if this isn't an AVR target.
+if ![istarget avr-*-*] then {
+ return
+}
+
+# Load support procs.
+load_lib gcc-dg.exp
+
+# If a testcase doesn't have special options, use these.
+global DEFAULT_CFLAGS
+if ![info exists DEFAULT_CFLAGS] then {
+ set DEFAULT_CFLAGS " -ansi -pedantic-errors"
+}
+
+# Initialize `dg'.
+dg-init
+
+# Main loop.
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{\[cCS\],cpp}]] \
+ "" $DEFAULT_CFLAGS
+
+# All done.
+dg-finish
diff --git a/gcc/testsuite/gcc.target/avr/mmcu/avr-mmcu.exp b/gcc/testsuite/gcc.target/avr/mmcu/avr-mmcu.exp
index 094012d..f672a08 100644
--- a/gcc/testsuite/gcc.target/avr/mmcu/avr-mmcu.exp
+++ b/gcc/testsuite/gcc.target/avr/mmcu/avr-mmcu.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/avr/torture/avr-torture.exp b/gcc/testsuite/gcc.target/avr/torture/avr-torture.exp
index 4dee32f..deec129 100644
--- a/gcc/testsuite/gcc.target/avr/torture/avr-torture.exp
+++ b/gcc/testsuite/gcc.target/avr/torture/avr-torture.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/bfin/bfin.exp b/gcc/testsuite/gcc.target/bfin/bfin.exp
index 64b99fb..ccaab47 100644
--- a/gcc/testsuite/gcc.target/bfin/bfin.exp
+++ b/gcc/testsuite/gcc.target/bfin/bfin.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp b/gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp
index 51ea7e2..eecf520 100644
--- a/gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp
+++ b/gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/bpf/bpf.exp b/gcc/testsuite/gcc.target/bpf/bpf.exp
index 457f16c..8c293d4 100644
--- a/gcc/testsuite/gcc.target/bpf/bpf.exp
+++ b/gcc/testsuite/gcc.target/bpf/bpf.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2019-2020 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/cris/cris.exp b/gcc/testsuite/gcc.target/cris/cris.exp
index 5910557..2802c11 100644
--- a/gcc/testsuite/gcc.target/cris/cris.exp
+++ b/gcc/testsuite/gcc.target/cris/cris.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2020 Free Software Foundation, Inc.
+# Copyright (C) 2005-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/cris/torture/cris-torture.exp b/gcc/testsuite/gcc.target/cris/torture/cris-torture.exp
index c03e657..8f88077 100644
--- a/gcc/testsuite/gcc.target/cris/torture/cris-torture.exp
+++ b/gcc/testsuite/gcc.target/cris/torture/cris-torture.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2020 Free Software Foundation, Inc.
+# Copyright (C) 2005-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/csky/csky.exp b/gcc/testsuite/gcc.target/csky/csky.exp
index 4906330..880cb880 100644
--- a/gcc/testsuite/gcc.target/csky/csky.exp
+++ b/gcc/testsuite/gcc.target/csky/csky.exp
@@ -1,5 +1,5 @@
# GCC testsuite for C-SKY targets.
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 Free Software Foundation, Inc.
# Contributed by C-SKY Microsystems and Mentor Graphics.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/gcc/testsuite/gcc.target/epiphany/epiphany.exp b/gcc/testsuite/gcc.target/epiphany/epiphany.exp
index 14ac820..9a6efaf 100644
--- a/gcc/testsuite/gcc.target/epiphany/epiphany.exp
+++ b/gcc/testsuite/gcc.target/epiphany/epiphany.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/frv/frv.exp b/gcc/testsuite/gcc.target/frv/frv.exp
index 745e81d..c4215f1 100644
--- a/gcc/testsuite/gcc.target/frv/frv.exp
+++ b/gcc/testsuite/gcc.target/frv/frv.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.target/gcn/fpdiv.c b/gcc/testsuite/gcc.target/gcn/fpdiv.c
new file mode 100644
index 0000000..7125b6f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/gcn/fpdiv.c
@@ -0,0 +1,38 @@
+/* { dg-do run } */
+/* { dg-options "-ffast-math" } */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+
+double num = 100;
+double denom = 50;
+
+union bits {
+ double fp;
+ uint64_t ull;
+};
+
+int main (int argc, char* argv[])
+{
+ union bits recip;
+ union bits res;
+
+ recip.fp = 1.0 / denom;
+
+ if (recip.ull != 0x3f947ae147ae147b)
+ {
+ fprintf (stderr, "incorrectly-rounded reciprocal: %llx", recip.ull);
+ exit (1);
+ }
+
+ res.fp = num / denom;
+
+ if (res.ull != 0x4000000000000000)
+ {
+ fprintf (stderr, "incorrectly-rounded quotient: %llx", res.ull);
+ exit (1);
+ }
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/gcn/gcn.exp b/gcc/testsuite/gcc.target/gcn/gcn.exp
index 0e799e8..9d056f3 100644
--- a/gcc/testsuite/gcc.target/gcn/gcn.exp
+++ b/gcc/testsuite/gcc.target/gcn/gcn.exp
@@ -1,5 +1,5 @@
# Specific regression driver for nvptx.
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/h8300/h8300.exp b/gcc/testsuite/gcc.target/h8300/h8300.exp
index ccbe0c0..759cbd1 100644
--- a/gcc/testsuite/gcc.target/h8300/h8300.exp
+++ b/gcc/testsuite/gcc.target/h8300/h8300.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/hppa/hppa.exp b/gcc/testsuite/gcc.target/hppa/hppa.exp
index c88241a..45e2e2c 100644
--- a/gcc/testsuite/gcc.target/hppa/hppa.exp
+++ b/gcc/testsuite/gcc.target/hppa/hppa.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/i386/20051216-1.c b/gcc/testsuite/gcc.target/i386/20051216-1.c
new file mode 100644
index 0000000..42a31d0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/20051216-1.c
@@ -0,0 +1,5 @@
+/* PR rtl-optimization/25432 */
+/* { dg-do compile } */
+/* { dg-options "-O1 -march=cascadelake" } */
+
+#include "../../gcc.c-torture/compile/20051216-1.c"
diff --git a/gcc/testsuite/gcc.target/i386/avx2-pr98461.c b/gcc/testsuite/gcc.target/i386/avx2-pr98461.c
new file mode 100644
index 0000000..15f49b8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx2-pr98461.c
@@ -0,0 +1,54 @@
+/* PR target/98461 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -mavx2 -masm=att" } */
+/* { dg-final { scan-assembler-times "\tvpmovmskb\t" 6 } } */
+/* { dg-final { scan-assembler-times "\tnotl\t" 6 } } */
+/* { dg-final { scan-assembler-not "\tvpcmpeq" } } */
+/* { dg-final { scan-assembler-not "\tvpxor" } } */
+/* { dg-final { scan-assembler-not "\tvpandn" } } */
+
+#include <x86intrin.h>
+
+int
+f1 (__m256i x)
+{
+ return ~_mm256_movemask_epi8 (x);
+}
+
+int
+f2 (__m256i x)
+{
+ return _mm256_movemask_epi8 (_mm256_andnot_si256 (x, _mm256_set1_epi8 (255)));
+}
+
+int
+f3 (__v32qi x)
+{
+ x ^= (__v32qi) { -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1 };
+ return _mm256_movemask_epi8 ((__m256i) x);
+}
+
+long
+f4 (__m256i x)
+{
+ return (unsigned) ~_mm256_movemask_epi8 (x);
+}
+
+long
+f5 (__m256i x)
+{
+ return (unsigned) _mm256_movemask_epi8 (_mm256_andnot_si256 (x, _mm256_set1_epi8 (255)));
+}
+
+long
+f6 (__v32qi x)
+{
+ x ^= (__v32qi) { -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1 };
+ return (unsigned) _mm256_movemask_epi8 ((__m256i) x);
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-pr96891-1.c b/gcc/testsuite/gcc.target/i386/avx512bw-pr96891-1.c
new file mode 100644
index 0000000..d899ceb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512bw-pr96891-1.c
@@ -0,0 +1,75 @@
+/* { dg-do compile } */
+/* { dg-options "-mavx512bw -mavx512vl -O2" } */
+/* { dg-final { scan-assembler-not "%k\[0-7\]" } } */
+
+typedef char v16qi __attribute__ ((vector_size (16)));
+typedef char v32qi __attribute__ ((vector_size (32)));
+typedef short v8hi __attribute__ ((vector_size (16)));
+typedef short v16hi __attribute__ ((vector_size (32)));
+typedef int v4si __attribute__ ((vector_size (16)));
+typedef int v8si __attribute__ ((vector_size (32)));
+typedef long long v2di __attribute__ ((vector_size (16)));
+typedef long long v4di __attribute__ ((vector_size (32)));
+
+#define FOO(VTYPE, OPNAME, OP) \
+ VTYPE \
+ foo_##VTYPE##_##OPNAME (VTYPE a, VTYPE b) \
+ { \
+ return a OP b; \
+ } \
+
+#define FOO1(VTYPE, OPNAME, OP) \
+ VTYPE \
+ foo1_##VTYPE##_##OPNAME (VTYPE a, VTYPE b) \
+ { \
+ return ~(a OP b); \
+ } \
+
+FOO (v16qi, eq, ==)
+FOO1 (v16qi, neq, !=)
+FOO (v16qi, gt, >)
+FOO (v16qi, lt, <)
+FOO1 (v16qi, le, <=)
+FOO1 (v16qi, ge, >=)
+FOO (v32qi, eq, ==)
+FOO1 (v32qi, neq, !=)
+FOO (v32qi, gt, >)
+FOO (v32qi, lt, <)
+FOO1 (v32qi, le, <=)
+FOO1 (v32qi, ge, >=)
+FOO (v8hi, eq, ==)
+FOO1 (v8hi, neq, !=)
+FOO (v8hi, gt, >)
+FOO (v8hi, lt, <)
+FOO1 (v8hi, le, <=)
+FOO1 (v8hi, ge, >=)
+FOO (v16hi, eq, ==)
+FOO1 (v16hi, neq, !=)
+FOO (v16hi, gt, >)
+FOO (v16hi, lt, <)
+FOO1 (v16hi, le, <=)
+FOO1 (v16hi, ge, >=)
+FOO (v4si, eq, ==)
+FOO1 (v4si, neq, !=)
+FOO (v4si, gt, >)
+FOO (v4si, lt, <)
+FOO1 (v4si, le, <=)
+FOO1 (v4si, ge, >=)
+FOO (v8si, eq, ==)
+FOO1 (v8si, neq, !=)
+FOO (v8si, gt, >)
+FOO (v8si, lt, <)
+FOO1 (v8si, le, <=)
+FOO1 (v8si, ge, >=)
+FOO (v2di, eq, ==)
+FOO1 (v2di, neq, !=)
+FOO (v2di, gt, >)
+FOO (v2di, lt, <)
+FOO1 (v2di, le, <=)
+FOO1 (v2di, ge, >=)
+FOO (v4di, eq, ==)
+FOO1 (v4di, neq, !=)
+FOO (v4di, gt, >)
+FOO (v4di, lt, >)
+FOO1 (v4di, le, <=)
+FOO1 (v4di, ge, >=)
diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-vandnpd-2.c b/gcc/testsuite/gcc.target/i386/avx512dq-vandnpd-2.c
index 0be2b7c..0a7d19b 100644
--- a/gcc/testsuite/gcc.target/i386/avx512dq-vandnpd-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512dq-vandnpd-2.c
@@ -16,8 +16,11 @@ CALC (double *s1, double *s2, double *r)
for (i = 0; i < SIZE; i++)
{
- tmp = (~(*(long long *) &s1[i])) & (*(long long *) &s2[i]);
- r[i] = *(double *) &tmp;
+ union U { double d; long long l; } u1, u2;
+ u1.d = s1[i];
+ u2.d = s2[i];
+ u1.l = (~u1.l) & u2.l;
+ r[i] = u1.d;
}
}
diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-vandnps-2.c b/gcc/testsuite/gcc.target/i386/avx512dq-vandnps-2.c
index 39a45c1..836a7ab 100644
--- a/gcc/testsuite/gcc.target/i386/avx512dq-vandnps-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512dq-vandnps-2.c
@@ -16,8 +16,11 @@ CALC (float *s1, float *s2, float *r)
for (i = 0; i < SIZE; i++)
{
- tmp = (~(*(int *) &s1[i])) & (*(int *) &s2[i]);
- r[i] = *(float *) &tmp;
+ union U { float f; int i; } u1, u2;
+ u1.f = s1[i];
+ u2.f = s2[i];
+ u1.i = (~u1.i) & u2.i;
+ r[i] = u1.f;
}
}
diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-vandpd-2.c b/gcc/testsuite/gcc.target/i386/avx512dq-vandpd-2.c
index 208336b6..b629c9f 100644
--- a/gcc/testsuite/gcc.target/i386/avx512dq-vandpd-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512dq-vandpd-2.c
@@ -16,8 +16,11 @@ CALC (double *s1, double *s2, double *r)
for (i = 0; i < SIZE; i++)
{
- tmp = (*(long long *) &s1[i]) & (*(long long *) &s2[i]);
- r[i] = *(double *) &tmp;
+ union U { double d; long long l; } u1, u2;
+ u1.d = s1[i];
+ u2.d = s2[i];
+ u1.l &= u2.l;
+ r[i] = u1.d;
}
}
diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-vandps-2.c b/gcc/testsuite/gcc.target/i386/avx512dq-vandps-2.c
index 50268b9..6e55e66 100644
--- a/gcc/testsuite/gcc.target/i386/avx512dq-vandps-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512dq-vandps-2.c
@@ -16,8 +16,11 @@ CALC (float *s1, float *s2, float *r)
for (i = 0; i < SIZE; i++)
{
- tmp = (*(int *) &s1[i]) & (*(int *) &s2[i]);
- r[i] = *(float *) &tmp;
+ union U { float f; int i; } u1, u2;
+ u1.f = s1[i];
+ u2.f = s2[i];
+ u1.i &= u2.i;
+ r[i] = u1.f;
}
}
diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-vorpd-2.c b/gcc/testsuite/gcc.target/i386/avx512dq-vorpd-2.c
index 97fe84e..6376c1c 100644
--- a/gcc/testsuite/gcc.target/i386/avx512dq-vorpd-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512dq-vorpd-2.c
@@ -15,8 +15,11 @@ CALC (double *src1, double *src2, double *dst)
for (i = 0; i < SIZE; i++)
{
- long long tmp = (*(long long *) &src1[i]) | (*(long long *) &src2[i]);
- dst[i] = *(double *) &tmp;
+ union U { double d; long long l; } u1, u2;
+ u1.d = src1[i];
+ u2.d = src2[i];
+ u1.l |= u2.l;
+ dst[i] = u1.d;
}
}
diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-vorps-2.c b/gcc/testsuite/gcc.target/i386/avx512dq-vorps-2.c
index 95a7c5f..3d30247 100644
--- a/gcc/testsuite/gcc.target/i386/avx512dq-vorps-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512dq-vorps-2.c
@@ -15,8 +15,11 @@ CALC (float *src1, float *src2, float *dst)
for (i = 0; i < SIZE; i++)
{
- int tmp = (*(int *) &src1[i]) | (*(int *) &src2[i]);
- dst[i] = *(float *) &tmp;
+ union U { float f; int i; } u1, u2;
+ u1.f = src1[i];
+ u2.f = src2[i];
+ u1.i |= u2.i;
+ dst[i] = u1.f;
}
}
diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-vxorpd-2.c b/gcc/testsuite/gcc.target/i386/avx512dq-vxorpd-2.c
index 4f4a07e..068be60 100644
--- a/gcc/testsuite/gcc.target/i386/avx512dq-vxorpd-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512dq-vxorpd-2.c
@@ -15,8 +15,11 @@ CALC (double *src1, double *src2, double *dst)
for (i = 0; i < SIZE; i++)
{
- long long tmp = (*(long long *) &src1[i]) ^ (*(long long *) &src2[i]);
- dst[i] = *(double *) &tmp;
+ union U { double d; long long l; } u1, u2;
+ u1.d = src1[i];
+ u2.d = src2[i];
+ u1.l ^= u2.l;
+ dst[i] = u1.d;
}
}
diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-vxorps-2.c b/gcc/testsuite/gcc.target/i386/avx512dq-vxorps-2.c
index 144283e..716bb81 100644
--- a/gcc/testsuite/gcc.target/i386/avx512dq-vxorps-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512dq-vxorps-2.c
@@ -15,8 +15,11 @@ CALC (float *src1, float *src2, float *dst)
for (i = 0; i < SIZE; i++)
{
- int tmp = (*(int *) &src1[i]) ^ (*(int *) &src2[i]);
- dst[i] = *(float *) &tmp;
+ union U { float f; int i; } u1, u2;
+ u1.f = src1[i];
+ u2.f = src2[i];
+ u1.i ^= u2.i;
+ dst[i] = u1.f;
}
}
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-pr96891-1.c b/gcc/testsuite/gcc.target/i386/avx512f-pr96891-1.c
new file mode 100644
index 0000000..48ba943
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512f-pr96891-1.c
@@ -0,0 +1,40 @@
+/* { dg-do compile } */
+/* { dg-options "-mavx512vl -O2" } */
+/* { dg-final { scan-assembler-not "%k\[0-7\]" } } */
+
+typedef float v4sf __attribute__ ((vector_size (16)));
+typedef float v8sf __attribute__ ((vector_size (32)));
+typedef double v2df __attribute__ ((vector_size (16)));
+typedef double v4df __attribute__ ((vector_size (32)));
+
+#define FOO(VTYPE, OPNAME, OP) \
+ VTYPE \
+ foo_##VTYPE##_##OPNAME (VTYPE a, VTYPE b) \
+ { \
+ return a OP b; \
+ } \
+
+FOO (v4sf, eq, ==)
+FOO (v4sf, neq, !=)
+FOO (v4sf, gt, >)
+FOO (v4sf, ge, >=)
+FOO (v4sf, lt, <)
+FOO (v4sf, le, <=)
+FOO (v8sf, eq, ==)
+FOO (v8sf, neq, !=)
+FOO (v8sf, gt, >)
+FOO (v8sf, ge, >=)
+FOO (v8sf, lt, <)
+FOO (v8sf, le, <=)
+FOO (v2df, eq, ==)
+FOO (v2df, neq, !=)
+FOO (v2df, gt, >)
+FOO (v2df, ge, >=)
+FOO (v2df, lt, <)
+FOO (v2df, le, <=)
+FOO (v4df, eq, ==)
+FOO (v4df, neq, !=)
+FOO (v4df, gt, >)
+FOO (v4df, ge, >=)
+FOO (v4df, lt, <)
+FOO (v4df, le, <=)
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-pr96891-2.c b/gcc/testsuite/gcc.target/i386/avx512f-pr96891-2.c
new file mode 100644
index 0000000..5192a00
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512f-pr96891-2.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-options "-mavx512vl -mavx512bw -mavx512dq -O2" } */
+/* { dg-final { scan-assembler-not "%k\[0-7\]" } } */
+
+#include<immintrin.h>
+
+#define FOO(VTYPE,PREFIX,SUFFIX,OPNAME,MASK,LEN) \
+ VTYPE \
+ foo_##LEN##_##SUFFIX##_##OPNAME (VTYPE a, VTYPE b) \
+ { \
+ MASK m = _mm##PREFIX##_cmp##OPNAME##_##SUFFIX##_mask (a, b); \
+ return _mm##PREFIX##_movm_##SUFFIX (m); \
+ } \
+
+FOO (__m128i,, epi8, eq, __mmask16, 128);
+FOO (__m128i,, epi16, eq, __mmask8, 128);
+FOO (__m128i,, epi32, eq, __mmask8, 128);
+FOO (__m128i,, epi64, eq, __mmask8, 128);
+FOO (__m128i,, epi8, gt, __mmask16, 128);
+FOO (__m128i,, epi16, gt, __mmask8, 128);
+FOO (__m128i,, epi32, gt, __mmask8, 128);
+FOO (__m128i,, epi64, gt, __mmask8, 128);
+FOO (__m256i, 256, epi8, eq, __mmask32, 256);
+FOO (__m256i, 256, epi16, eq, __mmask16, 256);
+FOO (__m256i, 256, epi32, eq, __mmask8, 256);
+FOO (__m256i, 256, epi64, eq, __mmask8, 256);
+FOO (__m256i, 256, epi8, gt, __mmask32, 256);
+FOO (__m256i, 256, epi16, gt, __mmask16, 256);
+FOO (__m256i, 256, epi32, gt, __mmask8, 256);
+FOO (__m256i, 256, epi64, gt, __mmask8, 256);
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-pr96891-3.c b/gcc/testsuite/gcc.target/i386/avx512f-pr96891-3.c
new file mode 100644
index 0000000..1cf18f2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512f-pr96891-3.c
@@ -0,0 +1,39 @@
+/* { dg-do compile } */
+/* { dg-options "-mavx512vl -mavx512bw -mavx512dq -O2 -masm=att" } */
+/* { dg-final { scan-assembler-not {not[bwlqd]\]} } } */
+/* { dg-final { scan-assembler-times {(?n)vpcmp[bwdq][ \t]*\$5} 4} } */
+/* { dg-final { scan-assembler-times {(?n)vpcmp[bwdq][ \t]*\$6} 4} } */
+/* { dg-final { scan-assembler-times {(?n)vpcmp[bwdq][ \t]*\$7} 4} } */
+/* { dg-final { scan-assembler-times {(?n)vcmpp[sd][ \t]*\$5} 2} } */
+/* { dg-final { scan-assembler-times {(?n)vcmpp[sd][ \t]*\$6} 2} } */
+/* { dg-final { scan-assembler-times {(?n)vcmpp[sd][ \t]*\$7} 2} } */
+
+#include<immintrin.h>
+
+#define FOO(VTYPE,PREFIX,SUFFIX,MASK,LEN,CMPIMM) \
+ MASK \
+ foo_##LEN##_##SUFFIX##_##CMPIMM (VTYPE a, VTYPE b) \
+ { \
+ MASK m = _mm##PREFIX##_cmp_##SUFFIX##_mask (a, b, CMPIMM); \
+ return ~m; \
+ } \
+
+FOO (__m128i,, epi8, __mmask16, 128, 1);
+FOO (__m128i,, epi16, __mmask8, 128, 1);
+FOO (__m128i,, epi32, __mmask8, 128, 1);
+FOO (__m128i,, epi64, __mmask8, 128, 1);
+FOO (__m256i, 256, epi8, __mmask32, 256, 2);
+FOO (__m256i, 256, epi16, __mmask16, 256, 2);
+FOO (__m256i, 256, epi32, __mmask8, 256, 2);
+FOO (__m256i, 256, epi64, __mmask8, 256, 2);
+FOO (__m512i, 512, epi8, __mmask64, 512, 3);
+FOO (__m512i, 512, epi16, __mmask32, 512, 3);
+FOO (__m512i, 512, epi32, __mmask16, 512, 3);
+FOO (__m512i, 512, epi64, __mmask8, 512, 3);
+
+FOO (__m128,, ps, __mmask8, 128, 1);
+FOO (__m128d,, pd, __mmask8, 128, 1);
+FOO (__m256, 256, ps, __mmask8, 256, 2);
+FOO (__m256d, 256, pd, __mmask8, 256, 2);
+FOO (__m512, 512, ps, __mmask16, 512, 3);
+FOO (__m512d, 512, pd, __mmask8, 512, 3);
diff --git a/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-pr97770-2.c b/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-pr97770-2.c
index 339dc29..f9d0578 100644
--- a/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-pr97770-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512vpopcntdq-pr97770-2.c
@@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-options "-O2 -mavx512vpopcntdq" } */
+/* { dg-require-effective-target avx512vpopcntdq } */
#define AVX512VPOPCNTDQ
diff --git a/gcc/testsuite/gcc.target/i386/avx512vpopcntdqvl-pr97770-1.c b/gcc/testsuite/gcc.target/i386/avx512vpopcntdqvl-pr97770-1.c
index 7a34f15..df4c23c 100644
--- a/gcc/testsuite/gcc.target/i386/avx512vpopcntdqvl-pr97770-1.c
+++ b/gcc/testsuite/gcc.target/i386/avx512vpopcntdqvl-pr97770-1.c
@@ -1,5 +1,7 @@
/* { dg-do run } */
/* { dg-options "-O3 -mavx512vpopcntdq -mavx512vl" } */
+/* { dg-require-effective-target avx512vpopcntdq } */
+/* { dg-require-effective-target avx512vl } */
#define AVX512VL
#define AVX512F_LEN 256
diff --git a/gcc/testsuite/gcc.target/i386/bitwise_mask_op-3.c b/gcc/testsuite/gcc.target/i386/bitwise_mask_op-3.c
index 18bf4f0..4a90786 100644
--- a/gcc/testsuite/gcc.target/i386/bitwise_mask_op-3.c
+++ b/gcc/testsuite/gcc.target/i386/bitwise_mask_op-3.c
@@ -40,5 +40,4 @@ foo_andnb (__m512i a, __m512i b)
foo = m1 & ~m2;
}
-/* { dg-final { scan-assembler-times "knotb\[\t \]" "1" } } */
/* { dg-final { scan-assembler-times "kmovb\[\t \]" "4"} } */
diff --git a/gcc/testsuite/gcc.target/i386/i386.exp b/gcc/testsuite/gcc.target/i386/i386.exp
index fd11ff5..bc40d5a 100644
--- a/gcc/testsuite/gcc.target/i386/i386.exp
+++ b/gcc/testsuite/gcc.target/i386/i386.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/i386/iamcu/abi-iamcu.exp b/gcc/testsuite/gcc.target/i386/iamcu/abi-iamcu.exp
index 5365157..e5256a6 100644
--- a/gcc/testsuite/gcc.target/i386/iamcu/abi-iamcu.exp
+++ b/gcc/testsuite/gcc.target/i386/iamcu/abi-iamcu.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/i386/ifcvt-onecmpl-abs-1.c b/gcc/testsuite/gcc.target/i386/ifcvt-onecmpl-abs-1.c
index 195da3f..6e02dd7 100644
--- a/gcc/testsuite/gcc.target/i386/ifcvt-onecmpl-abs-1.c
+++ b/gcc/testsuite/gcc.target/i386/ifcvt-onecmpl-abs-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-rtl-ce1" } */
+/* { dg-options "-O2" } */
/* Check code generation for one's complement version of abs */
@@ -10,4 +10,4 @@ int onecmplabs(int x)
return x;
}
-/* { dg-final { scan-rtl-dump "succeeded through noce_try_abs" "ce1" } } */
+/* { dg-final { scan-assembler "\txor" } } */
diff --git a/gcc/testsuite/gcc.target/i386/m128-check.h b/gcc/testsuite/gcc.target/i386/m128-check.h
index 6f414b0..c468eac 100644
--- a/gcc/testsuite/gcc.target/i386/m128-check.h
+++ b/gcc/testsuite/gcc.target/i386/m128-check.h
@@ -76,11 +76,10 @@ typedef union
#define PRINTF(...)
#endif
-#define CHECK_EXP(UINON_TYPE, VALUE_TYPE, FMT) \
+#define CHECK_EXP(UNION_TYPE, VALUE_TYPE, FMT) \
static int \
-__attribute__((optimize ("no-strict-aliasing"))) \
__attribute__((noinline, unused)) \
-check_##UINON_TYPE (UINON_TYPE u, const VALUE_TYPE *v) \
+check_##UNION_TYPE (UNION_TYPE u, const VALUE_TYPE *v) \
{ \
int i; \
int err = 0; \
@@ -193,10 +192,10 @@ union ieee754_double
};
#endif
-#define CHECK_FP_EXP(UINON_TYPE, VALUE_TYPE, ESP, FMT) \
+#define CHECK_FP_EXP(UNION_TYPE, VALUE_TYPE, ESP, FMT) \
static int \
__attribute__((noinline, unused)) \
-check_fp_##UINON_TYPE (UINON_TYPE u, const VALUE_TYPE *v) \
+check_fp_##UNION_TYPE (UNION_TYPE u, const VALUE_TYPE *v) \
{ \
int i; \
int err = 0; \
diff --git a/gcc/testsuite/gcc.target/i386/m256-check.h b/gcc/testsuite/gcc.target/i386/m256-check.h
index 6dbc3a0..da03984 100644
--- a/gcc/testsuite/gcc.target/i386/m256-check.h
+++ b/gcc/testsuite/gcc.target/i386/m256-check.h
@@ -79,10 +79,10 @@ CHECK_EXP (union256i_uw, unsigned short, "%d")
CHECK_EXP (union256i_ud, unsigned int, "0x%x")
CHECK_EXP (union256i_uq, unsigned long long, "0x%llx")
-#define CHECK_FP_EXP(UINON_TYPE, VALUE_TYPE, ESP, FMT) \
+#define CHECK_FP_EXP(UNION_TYPE, VALUE_TYPE, ESP, FMT) \
static int \
__attribute__((noinline, unused)) \
-check_fp_##UINON_TYPE (UINON_TYPE u, const VALUE_TYPE *v) \
+check_fp_##UNION_TYPE (UNION_TYPE u, const VALUE_TYPE *v) \
{ \
int i; \
int err = 0; \
diff --git a/gcc/testsuite/gcc.target/i386/m512-check.h b/gcc/testsuite/gcc.target/i386/m512-check.h
index 1a1065d..6befaf0 100644
--- a/gcc/testsuite/gcc.target/i386/m512-check.h
+++ b/gcc/testsuite/gcc.target/i386/m512-check.h
@@ -77,10 +77,10 @@ CHECK_EXP (union512i_uq, unsigned long long, "0x%llx")
CHECK_FP_EXP (union512, float, ESP_FLOAT, "%f")
CHECK_FP_EXP (union512d, double, ESP_DOUBLE, "%f")
-#define CHECK_ROUGH_EXP(UINON_TYPE, VALUE_TYPE, FMT) \
+#define CHECK_ROUGH_EXP(UNION_TYPE, VALUE_TYPE, FMT) \
static int \
__attribute__((noinline, unused)) \
-check_rough_##UINON_TYPE (UINON_TYPE u, const VALUE_TYPE *v, \
+check_rough_##UNION_TYPE (UNION_TYPE u, const VALUE_TYPE *v, \
VALUE_TYPE eps) \
{ \
int i; \
diff --git a/gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp b/gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp
index b254b07..592e834 100644
--- a/gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp
+++ b/gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.target/i386/pr66821.c b/gcc/testsuite/gcc.target/i386/pr66821.c
index a04e862..4195e75 100644
--- a/gcc/testsuite/gcc.target/i386/pr66821.c
+++ b/gcc/testsuite/gcc.target/i386/pr66821.c
@@ -11,5 +11,5 @@ foo (int x)
}
/* Check if the tests have been folded into a bit test. */
-/* { dg-final { scan-tree-dump "(8784908|0x0*860c0c)" "optimized" } } */
+/* { dg-final { scan-tree-dump "(8784908|-8784909|0x0*860c0c)" "optimized" } } */
/* { dg-final { scan-tree-dump "(<<|>>)" "optimized" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr78102.c b/gcc/testsuite/gcc.target/i386/pr78102.c
index 0fc3326..60abddc 100644
--- a/gcc/testsuite/gcc.target/i386/pr78102.c
+++ b/gcc/testsuite/gcc.target/i386/pr78102.c
@@ -1,7 +1,7 @@
/* PR target/78102 */
/* { dg-do compile } */
/* { dg-options "-O2 -mno-sse4.2 -msse4.1" } */
-/* { dg-final { scan-assembler-times "pcmpeqq" 3 } } */
+/* { dg-final { scan-assembler-times "pcmpeq" 4 } } */
#include <x86intrin.h>
diff --git a/gcc/testsuite/gcc.target/i386/pr79804.c b/gcc/testsuite/gcc.target/i386/pr79804.c
index 08d1a3e..fcfcef7 100644
--- a/gcc/testsuite/gcc.target/i386/pr79804.c
+++ b/gcc/testsuite/gcc.target/i386/pr79804.c
@@ -4,7 +4,7 @@
void foo (void)
{
- register int r19 asm ("19");
+ register int r19 asm ("19"); /* { dg-error "register specified for 'r19' is an internal GCC implementation detail" } */
- asm volatile ("# %0" : "=r"(r19)); /* { dg-error "invalid use of register" } */
-} /* { dg-error "cannot be used in 'asm' here" } */
+ asm volatile ("# %0" : "=r"(r19));
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr88178.c b/gcc/testsuite/gcc.target/i386/pr88178.c
index a5fbd35..622e1c2 100644
--- a/gcc/testsuite/gcc.target/i386/pr88178.c
+++ b/gcc/testsuite/gcc.target/i386/pr88178.c
@@ -4,5 +4,5 @@
void foo (void)
{
- register int r19 asm ("19");
+ register int r19 asm ("19"); /* { dg-error "register specified for 'r19' is an internal GCC implementation detail" } */
}
diff --git a/gcc/testsuite/gcc.target/i386/pr92469.c b/gcc/testsuite/gcc.target/i386/pr92469.c
new file mode 100644
index 0000000..8cff36b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr92469.c
@@ -0,0 +1,24 @@
+/* PR target/92469 */
+/* { dg-do compile } */
+/* { dg-options "-O0" } */
+
+void
+foo (void)
+{
+ register int x asm ("frame"); /* { dg-error "register specified for 'x' is an internal GCC implementation detail" } */
+ int y = x;
+}
+
+void
+bar (void)
+{
+ register int x asm ("19"); /* { dg-error "register specified for 'x' is an internal GCC implementation detail" } */
+ int y = x;
+}
+
+void
+baz (void)
+{
+ register int x asm ("argp"); /* { dg-error "register specified for 'x' is an internal GCC implementation detail" } */
+ int y = x;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr92645-6.c b/gcc/testsuite/gcc.target/i386/pr92645-6.c
new file mode 100644
index 0000000..c5c5f8f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr92645-6.c
@@ -0,0 +1,34 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-O3 -msse2" } */
+
+typedef long v2di __attribute__((vector_size(16)));
+typedef int v4si __attribute__((vector_size(16)));
+
+void foo (v4si *p, v2di *q)
+{
+ union { v2di a; v4si b; } u;
+ u.a = *q;
+ (*p)[0] = u.b[0];
+ (*p)[1] = u.b[2];
+ (*p)[2] = u.b[1];
+ (*p)[3] = u.b[3];
+}
+
+void bar (v4si *p, __int128_t *q)
+{
+ union { __int128_t a; v4si b; } u;
+ u.a = *q;
+ (*p)[0] = u.b[1];
+ (*p)[1] = u.b[2];
+ (*p)[2] = u.b[1];
+ (*p)[3] = u.b[3];
+}
+
+/* Both functions should end up with sth like
+ [v]pshufd $val, (%esi), %xmm0
+ [v]movdqa %xmm0, (%edi)
+ ret
+ recognized by SLP vectorization involving an existing "vector". */
+/* { dg-final { scan-assembler-not "punpck" } } */
+/* { dg-final { scan-assembler-times "pshufd" 2 } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr92645-7.c b/gcc/testsuite/gcc.target/i386/pr92645-7.c
new file mode 100644
index 0000000..e4c04c2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr92645-7.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-O3 -msse2" } */
+
+typedef long v2di __attribute__((vector_size(16)));
+typedef int v4si __attribute__((vector_size(16)));
+
+void bar (v4si *p, __int128_t *q)
+{
+ union { __int128_t a; v4si b; } u;
+ u.a = *q;
+ (*p)[0] = u.b[0];
+ (*p)[1] = u.b[2];
+ (*p)[2] = u.b[1];
+ (*p)[3] = u.b[3];
+}
+
+/* The function should end up with sth like
+ [v]pshufd $216, (%esi), %xmm0
+ [v]movdqa %xmm0, (%edi)
+ ret
+ recognized by SLP vectorization involving an existing "vector". */
+/* { dg-final { scan-assembler-not "punpck" } } */
+/* { dg-final { scan-assembler-times "pshufd" 1 } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr92658-avx2-2.c b/gcc/testsuite/gcc.target/i386/pr92658-avx2-2.c
new file mode 100644
index 0000000..7aad858
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr92658-avx2-2.c
@@ -0,0 +1,192 @@
+/* PR target/92658 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize -mavx2" } */
+
+typedef char v32qi __attribute__((vector_size (32)));
+typedef short v16hi __attribute__((vector_size (32)));
+typedef int v8si __attribute__((vector_size (32)));
+typedef long long v4di __attribute__((vector_size (32)));
+
+void
+foo_s8_s16 (v16hi * dst, v32qi * __restrict src)
+{
+ short tem[16];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ tem[2] = (*src)[2];
+ tem[3] = (*src)[3];
+ tem[4] = (*src)[4];
+ tem[5] = (*src)[5];
+ tem[6] = (*src)[6];
+ tem[7] = (*src)[7];
+ tem[8] = (*src)[8];
+ tem[9] = (*src)[9];
+ tem[10] = (*src)[10];
+ tem[11] = (*src)[11];
+ tem[12] = (*src)[12];
+ tem[13] = (*src)[13];
+ tem[14] = (*src)[14];
+ tem[15] = (*src)[15];
+ dst[0] = *(v16hi *) tem;
+}
+
+void
+bar_s8_s16 (v16hi * dst, v32qi src)
+{
+ short tem[16];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ tem[2] = src[2];
+ tem[3] = src[3];
+ tem[4] = src[4];
+ tem[5] = src[5];
+ tem[6] = src[6];
+ tem[7] = src[7];
+ tem[8] = src[8];
+ tem[9] = src[9];
+ tem[10] = src[10];
+ tem[11] = src[11];
+ tem[12] = src[12];
+ tem[13] = src[13];
+ tem[14] = src[14];
+ tem[15] = src[15];
+ dst[0] = *(v16hi *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxbw" 2 } } */
+
+void
+foo_s8_s32 (v8si * dst, v32qi * __restrict src)
+{
+ int tem[8];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ tem[2] = (*src)[2];
+ tem[3] = (*src)[3];
+ tem[4] = (*src)[4];
+ tem[5] = (*src)[5];
+ tem[6] = (*src)[6];
+ tem[7] = (*src)[7];
+ dst[0] = *(v8si *) tem;
+}
+
+void
+bar_s8_s32 (v8si * dst, v32qi src)
+{
+ int tem[8];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ tem[2] = src[2];
+ tem[3] = src[3];
+ tem[4] = src[4];
+ tem[5] = src[5];
+ tem[6] = src[6];
+ tem[7] = src[7];
+ dst[0] = *(v8si *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxbd" 2 } } */
+
+void
+foo_s8_s64 (v4di * dst, v32qi * __restrict src)
+{
+ long long tem[4];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ tem[2] = (*src)[2];
+ tem[3] = (*src)[3];
+ dst[0] = *(v4di *) tem;
+}
+
+void
+bar_s8_s64 (v4di * dst, v32qi src)
+{
+ long long tem[4];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ tem[2] = src[2];
+ tem[3] = src[3];
+ dst[0] = *(v4di *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxbq" 2 { xfail *-*-* } } } */
+
+void
+foo_s16_s32 (v8si * dst, v16hi * __restrict src)
+{
+ int tem[8];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ tem[2] = (*src)[2];
+ tem[3] = (*src)[3];
+ tem[4] = (*src)[4];
+ tem[5] = (*src)[5];
+ tem[6] = (*src)[6];
+ tem[7] = (*src)[7];
+ dst[0] = *(v8si *) tem;
+}
+
+void
+bar_s16_s32 (v8si * dst, v16hi src)
+{
+ int tem[8];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ tem[2] = src[2];
+ tem[3] = src[3];
+ tem[4] = src[4];
+ tem[5] = src[5];
+ tem[6] = src[6];
+ tem[7] = src[7];
+ dst[0] = *(v8si *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxwd" 2 } } */
+
+void
+foo_s16_s64 (v4di * dst, v16hi * __restrict src)
+{
+ long long tem[4];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ tem[2] = (*src)[2];
+ tem[3] = (*src)[3];
+ dst[0] = *(v4di *) tem;
+}
+
+void
+bar_s16_s64 (v4di * dst, v16hi src)
+{
+ long long tem[4];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ tem[2] = src[2];
+ tem[3] = src[3];
+ dst[0] = *(v4di *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxwq" 2 } } */
+
+void
+foo_s32_s64 (v4di * dst, v8si * __restrict src)
+{
+ long long tem[4];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ tem[2] = (*src)[2];
+ tem[3] = (*src)[3];
+ dst[0] = *(v4di *) tem;
+}
+
+void
+bar_s32_s64 (v4di * dst, v8si src)
+{
+ long long tem[4];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ tem[2] = src[2];
+ tem[3] = src[3];
+ dst[0] = *(v4di *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxdq" 2 } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr92658-avx512bw-2.c b/gcc/testsuite/gcc.target/i386/pr92658-avx512bw-2.c
new file mode 100644
index 0000000..33eecbf
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr92658-avx512bw-2.c
@@ -0,0 +1,280 @@
+/* PR target/92658 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize -mavx512bw -mprefer-vector-width=512" } */
+
+typedef char v64qi __attribute__((vector_size (64)));
+typedef short v32hi __attribute__((vector_size (64)));
+typedef int v16si __attribute__((vector_size (64)));
+typedef long long v8di __attribute__((vector_size (64)));
+
+void
+foo_s8_s16 (v32hi * dst, v64qi * __restrict src)
+{
+ short tem[32];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ tem[2] = (*src)[2];
+ tem[3] = (*src)[3];
+ tem[4] = (*src)[4];
+ tem[5] = (*src)[5];
+ tem[6] = (*src)[6];
+ tem[7] = (*src)[7];
+ tem[8] = (*src)[8];
+ tem[9] = (*src)[9];
+ tem[10] = (*src)[10];
+ tem[11] = (*src)[11];
+ tem[12] = (*src)[12];
+ tem[13] = (*src)[13];
+ tem[14] = (*src)[14];
+ tem[15] = (*src)[15];
+ tem[16] = (*src)[16];
+ tem[17] = (*src)[17];
+ tem[18] = (*src)[18];
+ tem[19] = (*src)[19];
+ tem[20] = (*src)[20];
+ tem[21] = (*src)[21];
+ tem[22] = (*src)[22];
+ tem[23] = (*src)[23];
+ tem[24] = (*src)[24];
+ tem[25] = (*src)[25];
+ tem[26] = (*src)[26];
+ tem[27] = (*src)[27];
+ tem[28] = (*src)[28];
+ tem[29] = (*src)[29];
+ tem[30] = (*src)[30];
+ tem[31] = (*src)[31];
+ dst[0] = *(v32hi *) tem;
+}
+
+void
+bar_s8_s16 (v32hi * dst, v64qi src)
+{
+ short tem[32];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ tem[2] = src[2];
+ tem[3] = src[3];
+ tem[4] = src[4];
+ tem[5] = src[5];
+ tem[6] = src[6];
+ tem[7] = src[7];
+ tem[8] = src[8];
+ tem[9] = src[9];
+ tem[10] = src[10];
+ tem[11] = src[11];
+ tem[12] = src[12];
+ tem[13] = src[13];
+ tem[14] = src[14];
+ tem[15] = src[15];
+ tem[16] = src[16];
+ tem[17] = src[17];
+ tem[18] = src[18];
+ tem[19] = src[19];
+ tem[20] = src[20];
+ tem[21] = src[21];
+ tem[22] = src[22];
+ tem[23] = src[23];
+ tem[24] = src[24];
+ tem[25] = src[25];
+ tem[26] = src[26];
+ tem[27] = src[27];
+ tem[28] = src[28];
+ tem[29] = src[29];
+ tem[30] = src[30];
+ tem[31] = src[31];
+ dst[0] = *(v32hi *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxbw" 2 } } */
+
+void
+foo_s8_s32 (v16si * dst, v64qi * __restrict src)
+{
+ int tem[16];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ tem[2] = (*src)[2];
+ tem[3] = (*src)[3];
+ tem[4] = (*src)[4];
+ tem[5] = (*src)[5];
+ tem[6] = (*src)[6];
+ tem[7] = (*src)[7];
+ tem[8] = (*src)[8];
+ tem[9] = (*src)[9];
+ tem[10] = (*src)[10];
+ tem[11] = (*src)[11];
+ tem[12] = (*src)[12];
+ tem[13] = (*src)[13];
+ tem[14] = (*src)[14];
+ tem[15] = (*src)[15];
+ dst[0] = *(v16si *) tem;
+}
+
+void
+bar_s8_s32 (v16si * dst, v64qi src)
+{
+ int tem[16];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ tem[2] = src[2];
+ tem[3] = src[3];
+ tem[4] = src[4];
+ tem[5] = src[5];
+ tem[6] = src[6];
+ tem[7] = src[7];
+ tem[8] = src[8];
+ tem[9] = src[9];
+ tem[10] = src[10];
+ tem[11] = src[11];
+ tem[12] = src[12];
+ tem[13] = src[13];
+ tem[14] = src[14];
+ tem[15] = src[15];
+ dst[0] = *(v16si *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxbd" 2 } } */
+
+void
+foo_s8_s64 (v8di * dst, v64qi * __restrict src)
+{
+ long long tem[8];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ tem[2] = (*src)[2];
+ tem[3] = (*src)[3];
+ tem[4] = (*src)[4];
+ tem[5] = (*src)[5];
+ tem[6] = (*src)[6];
+ tem[7] = (*src)[7];
+ dst[0] = *(v8di *) tem;
+}
+
+void
+bar_s8_s64 (v8di * dst, v64qi src)
+{
+ long long tem[8];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ tem[2] = src[2];
+ tem[3] = src[3];
+ tem[4] = src[4];
+ tem[5] = src[5];
+ tem[6] = src[6];
+ tem[7] = src[7];
+ dst[0] = *(v8di *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxbq" 2 } } */
+
+void
+foo_s16_s32 (v16si * dst, v32hi * __restrict src)
+{
+ int tem[16];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ tem[2] = (*src)[2];
+ tem[3] = (*src)[3];
+ tem[4] = (*src)[4];
+ tem[5] = (*src)[5];
+ tem[6] = (*src)[6];
+ tem[7] = (*src)[7];
+ tem[8] = (*src)[8];
+ tem[9] = (*src)[9];
+ tem[10] = (*src)[10];
+ tem[11] = (*src)[11];
+ tem[12] = (*src)[12];
+ tem[13] = (*src)[13];
+ tem[14] = (*src)[14];
+ tem[15] = (*src)[15];
+ dst[0] = *(v16si *) tem;
+}
+
+void
+bar_s16_s32 (v16si * dst, v32hi src)
+{
+ int tem[16];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ tem[2] = src[2];
+ tem[3] = src[3];
+ tem[4] = src[4];
+ tem[5] = src[5];
+ tem[6] = src[6];
+ tem[7] = src[7];
+ tem[8] = src[8];
+ tem[9] = src[9];
+ tem[10] = src[10];
+ tem[11] = src[11];
+ tem[12] = src[12];
+ tem[13] = src[13];
+ tem[14] = src[14];
+ tem[15] = src[15];
+ dst[0] = *(v16si *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxwd" 2 } } */
+
+void
+foo_s16_s64 (v8di * dst, v32hi * __restrict src)
+{
+ long long tem[8];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ tem[2] = (*src)[2];
+ tem[3] = (*src)[3];
+ tem[4] = (*src)[4];
+ tem[5] = (*src)[5];
+ tem[6] = (*src)[6];
+ tem[7] = (*src)[7];
+ dst[0] = *(v8di *) tem;
+}
+
+void
+bar_s16_s64 (v8di * dst, v32hi src)
+{
+ long long tem[8];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ tem[2] = src[2];
+ tem[3] = src[3];
+ tem[4] = src[4];
+ tem[5] = src[5];
+ tem[6] = src[6];
+ tem[7] = src[7];
+ dst[0] = *(v8di *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxwq" 2 } } */
+
+void
+foo_s32_s64 (v8di * dst, v16si * __restrict src)
+{
+ long long tem[8];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ tem[2] = (*src)[2];
+ tem[3] = (*src)[3];
+ tem[4] = (*src)[4];
+ tem[5] = (*src)[5];
+ tem[6] = (*src)[6];
+ tem[7] = (*src)[7];
+ dst[0] = *(v8di *) tem;
+}
+
+void
+bar_s32_s64 (v8di * dst, v16si src)
+{
+ long long tem[8];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ tem[2] = src[2];
+ tem[3] = src[3];
+ tem[4] = src[4];
+ tem[5] = src[5];
+ tem[6] = src[6];
+ tem[7] = src[7];
+ dst[0] = *(v8di *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxdq" 2 } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr92658-avx512bw.c b/gcc/testsuite/gcc.target/i386/pr92658-avx512bw.c
index b1d54d2..2e89784 100644
--- a/gcc/testsuite/gcc.target/i386/pr92658-avx512bw.c
+++ b/gcc/testsuite/gcc.target/i386/pr92658-avx512bw.c
@@ -1,6 +1,6 @@
/* PR target/92658 */
/* { dg-do compile } */
-/* { dg-options "-O2 -ftree-vectorize -mavx512bw" } */
+/* { dg-options "-O2 -ftree-vectorize -mavx512bw -mprefer-vector-width=512" } */
typedef unsigned char v64qi __attribute__((vector_size (64)));
typedef unsigned short v32hi __attribute__((vector_size (64)));
diff --git a/gcc/testsuite/gcc.target/i386/pr92658-sse4-2.c b/gcc/testsuite/gcc.target/i386/pr92658-sse4-2.c
new file mode 100644
index 0000000..ca174ce
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr92658-sse4-2.c
@@ -0,0 +1,148 @@
+/* PR target/92658 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize -msse4.1" } */
+
+typedef char v16qi __attribute__((vector_size (16)));
+typedef short v8hi __attribute__((vector_size (16)));
+typedef int v4si __attribute__((vector_size (16)));
+typedef long long v2di __attribute__((vector_size (16)));
+
+void
+foo_s8_s16 (v8hi * dst, v16qi * __restrict src)
+{
+ short tem[8];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ tem[2] = (*src)[2];
+ tem[3] = (*src)[3];
+ tem[4] = (*src)[4];
+ tem[5] = (*src)[5];
+ tem[6] = (*src)[6];
+ tem[7] = (*src)[7];
+ dst[0] = *(v8hi *) tem;
+}
+
+void
+bar_s8_s16 (v8hi * dst, v16qi src)
+{
+ short tem[8];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ tem[2] = src[2];
+ tem[3] = src[3];
+ tem[4] = src[4];
+ tem[5] = src[5];
+ tem[6] = src[6];
+ tem[7] = src[7];
+ dst[0] = *(v8hi *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxbw" 2 } } */
+
+void
+foo_s8_s32 (v4si * dst, v16qi * __restrict src)
+{
+ int tem[4];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ tem[2] = (*src)[2];
+ tem[3] = (*src)[3];
+ dst[0] = *(v4si *) tem;
+}
+
+void
+bar_s8_s32 (v4si * dst, v16qi src)
+{
+ int tem[4];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ tem[2] = src[2];
+ tem[3] = src[3];
+ dst[0] = *(v4si *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxbd" 2 { xfail *-*-* } } } */
+
+void
+foo_s8_s64 (v2di * dst, v16qi * __restrict src)
+{
+ long long tem[2];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ dst[0] = *(v2di *) tem;
+}
+
+void
+bar_s8_s64 (v2di * dst, v16qi src)
+{
+ long long tem[2];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ dst[0] = *(v2di *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxbq" 2 { xfail *-*-* } } } */
+
+void
+foo_s16_s32 (v4si * dst, v8hi * __restrict src)
+{
+ int tem[4];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ tem[2] = (*src)[2];
+ tem[3] = (*src)[3];
+ dst[0] = *(v4si *) tem;
+}
+
+void
+bar_s16_s32 (v4si * dst, v8hi src)
+{
+ int tem[4];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ tem[2] = src[2];
+ tem[3] = src[3];
+ dst[0] = *(v4si *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxwd" 2 } } */
+
+void
+foo_s16_s64 (v2di * dst, v8hi * __restrict src)
+{
+ long long tem[2];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ dst[0] = *(v2di *) tem;
+}
+
+void
+bar_s16_s64 (v2di * dst, v8hi src)
+{
+ long long tem[2];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ dst[0] = *(v2di *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxwq" 2 { xfail *-*-* } } } */
+
+void
+foo_s32_s64 (v2di * dst, v4si * __restrict src)
+{
+ long long tem[2];
+ tem[0] = (*src)[0];
+ tem[1] = (*src)[1];
+ dst[0] = *(v2di *) tem;
+}
+
+void
+bar_s32_s64 (v2di * dst, v4si src)
+{
+ long long tem[2];
+ tem[0] = src[0];
+ tem[1] = src[1];
+ dst[0] = *(v2di *) tem;
+}
+
+/* { dg-final { scan-assembler-times "pmovsxdq" 2 } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr94440-1.c b/gcc/testsuite/gcc.target/i386/pr94440-1.c
new file mode 100644
index 0000000..c18b16b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr94440-1.c
@@ -0,0 +1,23 @@
+/* PR target/94440 */
+/* { dg-do compile { target ia32 } } */
+/* { dg-options "-mfpmath=sse,387 -msse2 -Ofast -fexcess-precision=standard -fno-graphite --param=scev-max-expr-size=0" } */
+
+int b;
+double c, d;
+
+void
+foo (void)
+{
+ int i;
+ for (i = 0; i < b; i++)
+ c += i;
+}
+
+int __attribute__((optimize(1)))
+main ()
+{
+ double a[9];
+ int i;
+ for (i = 0; i < 9; i++)
+ d += a[i];
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr94440-2.c b/gcc/testsuite/gcc.target/i386/pr94440-2.c
new file mode 100644
index 0000000..3ac78e0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr94440-2.c
@@ -0,0 +1,19 @@
+/* PR target/94440 */
+/* { dg-do compile } */
+/* { dg-options "-O0 -msse2 -ffast-math" } */
+
+double a;
+int b;
+long double c;
+
+void
+foo (void)
+{
+ float d = (double)(long double)b;
+}
+
+__attribute__((optimize("O0"))) void
+bar (void)
+{
+ a = c;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr94802.c b/gcc/testsuite/gcc.target/i386/pr94802.c
new file mode 100644
index 0000000..6c1bc66
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr94802.c
@@ -0,0 +1,59 @@
+/* PR tree-optimization/94802 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -masm=att" } */
+/* { dg-final { scan-assembler-not "\ttestl\t" } } */
+/* { dg-final { scan-assembler-times "\tcmpl\t" 8 } } */
+
+void foo (void);
+
+int
+f1 (int a, int b)
+{
+ return (a - b) >= 0;
+}
+
+int
+f2 (int a, int b)
+{
+ return (a - b) > 0;
+}
+
+int
+f3 (int a, int b)
+{
+ return (a - b) <= 0;
+}
+
+int
+f4 (int a, int b)
+{
+ return (a - b) < 0;
+}
+
+void
+f5 (int a, int b)
+{
+ if ((a - b) >= 0)
+ foo ();
+}
+
+void
+f6 (int a, int b)
+{
+ if ((a - b) > 0)
+ foo ();
+}
+
+void
+f7 (int a, int b)
+{
+ if ((a - b) <= 0)
+ foo ();
+}
+
+void
+f8 (int a, int b)
+{
+ if ((a - b) < 0)
+ foo ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr95021-1.c b/gcc/testsuite/gcc.target/i386/pr95021-1.c
index a0b9a26..ec58596 100644
--- a/gcc/testsuite/gcc.target/i386/pr95021-1.c
+++ b/gcc/testsuite/gcc.target/i386/pr95021-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target ia32 } } */
-/* { dg-options "-O2 -msse2 -mstv -W" } */
+/* { dg-options "-O2 -msse2 -mstv -mpreferred-stack-boundary=4 -mno-stackrealign -W" } */
/* { dg-final { scan-assembler "movq\[ \t\]%xmm\[0-9\]+, \\(%esp\\)" } } */
/* { dg-final { scan-assembler-not "psrlq" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr95021-3.c b/gcc/testsuite/gcc.target/i386/pr95021-3.c
index 52f9e45..0f16b16 100644
--- a/gcc/testsuite/gcc.target/i386/pr95021-3.c
+++ b/gcc/testsuite/gcc.target/i386/pr95021-3.c
@@ -1,5 +1,5 @@
/* { dg-do compile { target ia32 } } */
-/* { dg-options "-O2 -msse2 -mstv -mregparm=3 -W -mtune=generic" } */
+/* { dg-options "-O2 -msse2 -mstv -mpreferred-stack-boundary=4 -mno-stackrealign -mregparm=3 -W -mtune=generic" } */
/* { dg-final { scan-assembler "movq\[ \t\]+\[^\n\]*, %xmm" } } */
#include "pr95021-1.c"
diff --git a/gcc/testsuite/gcc.target/i386/pr95771.c b/gcc/testsuite/gcc.target/i386/pr95771.c
new file mode 100644
index 0000000..d7b67017
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr95771.c
@@ -0,0 +1,67 @@
+/* PR tree-optimization/95771 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -mpopcnt -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times " = __builtin_popcount" 6 "optimized" { target int128 } } } */
+/* { dg-final { scan-tree-dump-times " = __builtin_popcount" 4 "optimized" { target { ! int128 } } } } */
+
+int
+foo (unsigned char x)
+{
+ int i = 0;
+ while (x)
+ {
+ x &= x - 1;
+ ++i;
+ }
+ return i;
+}
+
+int
+bar (unsigned short x)
+{
+ int i = 0;
+ while (x)
+ {
+ x &= x - 1;
+ ++i;
+ }
+ return i;
+}
+
+int
+baz (unsigned int x)
+{
+ int i = 0;
+ while (x)
+ {
+ x &= x - 1;
+ ++i;
+ }
+ return i;
+}
+
+int
+qux (unsigned long long x)
+{
+ int i = 0;
+ while (x)
+ {
+ x &= x - 1;
+ ++i;
+ }
+ return i;
+}
+
+#ifdef __SIZEOF_INT128__
+int
+corge (unsigned __int128 x)
+{
+ int i = 0;
+ while (x)
+ {
+ x &= x - 1;
+ ++i;
+ }
+ return i;
+}
+#endif
diff --git a/gcc/testsuite/gcc.target/i386/pr95852-1.c b/gcc/testsuite/gcc.target/i386/pr95852-1.c
new file mode 100644
index 0000000..a3f85dd
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr95852-1.c
@@ -0,0 +1,266 @@
+/* PR tree-optimization/95852 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized -masm=att" } */
+/* { dg-final { scan-tree-dump-times " = \.MUL_OVERFLOW " 32 "optimized" } } */
+/* { dg-final { scan-assembler-times "\tmull\t" 32 } } */
+/* { dg-final { scan-assembler-times "\tseto\t" 8 } } */
+/* { dg-final { scan-assembler-times "\tsetno\t" 8 } } */
+/* { dg-final { scan-assembler-times "\tjn\?o\t" 16 } } */
+
+unsigned fn (void);
+
+int
+f1 (unsigned x, unsigned y, unsigned *res)
+{
+ *res = x * y;
+ return x && (*res / x) != y;
+}
+
+unsigned
+f2 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ if (x && (r / x) != y)
+ return fn ();
+ return r;
+}
+
+int
+f3 (unsigned x, unsigned y, unsigned *res)
+{
+ *res = x * y;
+ return !x || (*res / x) == y;
+}
+
+unsigned
+f4 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ if (!x || (r / x) == y)
+ return fn ();
+ return r;
+}
+
+int
+f5 (int x, int y, int *res)
+{
+ *res = (unsigned) x * y;
+ return x && ((unsigned) *res / x) != (unsigned) y;
+}
+
+int
+f6 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ if (x && ((unsigned) r / x) != (unsigned) y)
+ return fn ();
+ return r;
+}
+
+int
+f7 (int x, int y, int *res)
+{
+ *res = (unsigned) x * y;
+ return !x || ((unsigned) *res / x) == (unsigned) y;
+}
+
+int
+f8 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ if (!x || ((unsigned) r / x) == (unsigned) y)
+ return fn ();
+ return r;
+}
+
+int
+f9 (unsigned x, unsigned y, unsigned *res)
+{
+ *res = x * y;
+ return y && (*res / y) != x;
+}
+
+unsigned
+f10 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ if (y && (r / y) != x)
+ return fn ();
+ return r;
+}
+
+int
+f11 (unsigned x, unsigned y, unsigned *res)
+{
+ *res = x * y;
+ return !y || (*res / y) == x;
+}
+
+unsigned
+f12 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ if (!y || (r / y) == x)
+ return fn ();
+ return r;
+}
+
+int
+f13 (int x, int y, int *res)
+{
+ *res = (unsigned) x * y;
+ return y && ((unsigned) *res / y) != (unsigned) x;
+}
+
+int
+f14 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ if (y && ((unsigned) r / y) != (unsigned) x)
+ return fn ();
+ return r;
+}
+
+int
+f15 (int x, int y, int *res)
+{
+ *res = (unsigned) x * y;
+ return !y || ((unsigned) *res / y) == (unsigned) x;
+}
+
+int
+f16 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ if (!y || ((unsigned) r / y) == (unsigned) x)
+ return fn ();
+ return r;
+}
+
+int
+f17 (unsigned x, unsigned *res)
+{
+ *res = x * 35U;
+ return x && (*res / x) != 35U;
+}
+
+unsigned
+f18 (unsigned x)
+{
+ unsigned int r = x * 35U;
+ if (x && (r / x) != 35U)
+ return fn ();
+ return r;
+}
+
+int
+f19 (unsigned x, unsigned *res)
+{
+ *res = x * 35U;
+ return !x || (*res / x) == 35U;
+}
+
+unsigned
+f20 (unsigned x)
+{
+ unsigned int r = x * 35U;
+ if (!x || (r / x) == 35U)
+ return fn ();
+ return r;
+}
+
+int
+f21 (int x, int *res)
+{
+ *res = (unsigned) x * 35;
+ return x && ((unsigned) *res / x) != 35U;
+}
+
+int
+f22 (int x)
+{
+ int r = (unsigned) x * 35;
+ if (x && ((unsigned) r / x) != 35U)
+ return fn ();
+ return r;
+}
+
+int
+f23 (int x, int *res)
+{
+ *res = (unsigned) x * 35;
+ return !x || ((unsigned) *res / x) == 35U;
+}
+
+int
+f24 (int x)
+{
+ int r = (unsigned) x * 35;
+ if (!x || ((unsigned) r / x) == 35U)
+ return fn ();
+ return r;
+}
+
+int
+f25 (unsigned x, unsigned *res)
+{
+ *res = x * 35U;
+ return (*res / 35U) != x;
+}
+
+unsigned
+f26 (unsigned x)
+{
+ unsigned int r = x * 35U;
+ if ((r / 35U) != x)
+ return fn ();
+ return r;
+}
+
+int
+f27 (unsigned x, unsigned *res)
+{
+ *res = x * 35U;
+ return !35U || (*res / 35U) == x;
+}
+
+unsigned
+f28 (unsigned x)
+{
+ unsigned int r = x * 35U;
+ if ((r / 35U) == x)
+ return fn ();
+ return r;
+}
+
+int
+f29 (int x, int *res)
+{
+ *res = (unsigned) x * 35;
+ return 35 && ((unsigned) *res / 35) != (unsigned) x;
+}
+
+int
+f30 (int x)
+{
+ int r = (unsigned) x * 35;
+ if (((unsigned) r / 35) != (unsigned) x)
+ return fn ();
+ return r;
+}
+
+int
+f31 (int x, int *res)
+{
+ *res = (unsigned) x * 35;
+ return ((unsigned) *res / 35) == (unsigned) x;
+}
+
+int
+f32 (int x)
+{
+ int r = (unsigned) x * 35;
+ if (((unsigned) r / 35) == (unsigned) x)
+ return fn ();
+ return r;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr95852-2.c b/gcc/testsuite/gcc.target/i386/pr95852-2.c
new file mode 100644
index 0000000..de85cec
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr95852-2.c
@@ -0,0 +1,266 @@
+/* PR tree-optimization/95852 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized -masm=att" } */
+/* { dg-final { scan-tree-dump-times " = \.MUL_OVERFLOW " 32 "optimized" } } */
+/* { dg-final { scan-assembler-times "\tmull\t" 32 } } */
+/* { dg-final { scan-assembler-times "\tseto\t" 8 } } */
+/* { dg-final { scan-assembler-times "\tsetno\t" 8 } } */
+/* { dg-final { scan-assembler-times "\tjn\?o\t" 16 } } */
+
+unsigned fn (void);
+
+int
+f1 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ return x && (r / x) != y;
+}
+
+unsigned
+f2 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ if (x && (r / x) != y)
+ return fn ();
+ return 0;
+}
+
+int
+f3 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ return !x || (r / x) == y;
+}
+
+unsigned
+f4 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ if (!x || (r / x) == y)
+ return fn ();
+ return 0;
+}
+
+int
+f5 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ return x && ((unsigned) r / x) != (unsigned) y;
+}
+
+int
+f6 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ if (x && ((unsigned) r / x) != (unsigned) y)
+ return fn ();
+ return 0;
+}
+
+int
+f7 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ return !x || ((unsigned) r / x) == (unsigned) y;
+}
+
+int
+f8 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ if (!x || ((unsigned) r / x) == (unsigned) y)
+ return fn ();
+ return 0;
+}
+
+int
+f9 (unsigned x, unsigned y)
+{
+ unsigned r = x * y;
+ return y && (r / y) != x;
+}
+
+unsigned
+f10 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ if (y && (r / y) != x)
+ return fn ();
+ return 0;
+}
+
+int
+f11 (unsigned x, unsigned y)
+{
+ unsigned r = x * y;
+ return !y || (r / y) == x;
+}
+
+unsigned
+f12 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ if (!y || (r / y) == x)
+ return fn ();
+ return 0;
+}
+
+int
+f13 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ return y && ((unsigned) r / y) != (unsigned) x;
+}
+
+int
+f14 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ if (y && ((unsigned) r / y) != (unsigned) x)
+ return fn ();
+ return 0;
+}
+
+int
+f15 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ return !y || ((unsigned) r / y) == (unsigned) x;
+}
+
+int
+f16 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ if (!y || ((unsigned) r / y) == (unsigned) x)
+ return fn ();
+ return 0;
+}
+
+int
+f17 (unsigned x)
+{
+ unsigned r = x * 35U;
+ return x && (r / x) != 35U;
+}
+
+unsigned
+f18 (unsigned x)
+{
+ unsigned int r = x * 35U;
+ if (x && (r / x) != 35U)
+ return fn ();
+ return 0;
+}
+
+int
+f19 (unsigned x)
+{
+ unsigned r = x * 35U;
+ return !x || (r / x) == 35U;
+}
+
+unsigned
+f20 (unsigned x)
+{
+ unsigned int r = x * 35U;
+ if (!x || (r / x) == 35U)
+ return fn ();
+ return 0;
+}
+
+int
+f21 (int x)
+{
+ int r = (unsigned) x * 35;
+ return x && ((unsigned) r / x) != 35U;
+}
+
+int
+f22 (int x)
+{
+ int r = (unsigned) x * 35;
+ if (x && ((unsigned) r / x) != 35U)
+ return fn ();
+ return 0;
+}
+
+int
+f23 (int x)
+{
+ int r = (unsigned) x * 35;
+ return !x || ((unsigned) r / x) == 35U;
+}
+
+int
+f24 (int x)
+{
+ int r = (unsigned) x * 35;
+ if (!x || ((unsigned) r / x) == 35U)
+ return fn ();
+ return 0;
+}
+
+int
+f25 (unsigned x)
+{
+ unsigned r = x * 35U;
+ return (r / 35U) != x;
+}
+
+unsigned
+f26 (unsigned x)
+{
+ unsigned int r = x * 35U;
+ if ((r / 35U) != x)
+ return fn ();
+ return 0;
+}
+
+int
+f27 (unsigned x)
+{
+ unsigned r = x * 35U;
+ return !35U || (r / 35U) == x;
+}
+
+unsigned
+f28 (unsigned x)
+{
+ unsigned int r = x * 35U;
+ if ((r / 35U) == x)
+ return fn ();
+ return 0;
+}
+
+int
+f29 (int x)
+{
+ int r = (unsigned) x * 35;
+ return 35 && ((unsigned) r / 35) != (unsigned) x;
+}
+
+int
+f30 (int x)
+{
+ int r = (unsigned) x * 35;
+ if (((unsigned) r / 35) != (unsigned) x)
+ return fn ();
+ return 0;
+}
+
+int
+f31 (int x)
+{
+ int r = (unsigned) x * 35;
+ return ((unsigned) r / 35) == (unsigned) x;
+}
+
+int
+f32 (int x)
+{
+ int r = (unsigned) x * 35;
+ if (((unsigned) r / 35) == (unsigned) x)
+ return fn ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr95852-3.c b/gcc/testsuite/gcc.target/i386/pr95852-3.c
new file mode 100644
index 0000000..19e3911
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr95852-3.c
@@ -0,0 +1,266 @@
+/* PR tree-optimization/95852 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized -masm=att" } */
+/* { dg-final { scan-tree-dump-times " = \.MUL_OVERFLOW " 32 "optimized" } } */
+/* { dg-final { scan-assembler-times "\timull\t" 32 } } */
+/* { dg-final { scan-assembler-times "\tseto\t" 8 } } */
+/* { dg-final { scan-assembler-times "\tsetno\t" 8 } } */
+/* { dg-final { scan-assembler-times "\tjn\?o\t" 16 } } */
+
+unsigned fn (void);
+
+int
+f1 (unsigned x, unsigned y, unsigned *res)
+{
+ *res = x * y;
+ return x && ((int) *res / (int) x) != (int) y;
+}
+
+unsigned
+f2 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ if (x && ((int) r / (int) x) != (int) y)
+ return fn ();
+ return r;
+}
+
+int
+f3 (unsigned x, unsigned y, unsigned *res)
+{
+ *res = x * y;
+ return !x || ((int) *res / (int) x) == (int) y;
+}
+
+unsigned
+f4 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ if (!x || ((int) r / (int) x) == (int) y)
+ return fn ();
+ return r;
+}
+
+int
+f5 (int x, int y, int *res)
+{
+ *res = (unsigned) x * y;
+ return x && (*res / x) != y;
+}
+
+int
+f6 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ if (x && (r / x) != y)
+ return fn ();
+ return r;
+}
+
+int
+f7 (int x, int y, int *res)
+{
+ *res = (unsigned) x * y;
+ return !x || (*res / x) == y;
+}
+
+int
+f8 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ if (!x || (r / x) == y)
+ return fn ();
+ return r;
+}
+
+int
+f9 (unsigned x, unsigned y, unsigned *res)
+{
+ *res = x * y;
+ return y && ((int) *res / (int) y) != (int) x;
+}
+
+unsigned
+f10 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ if (y && ((int) r / (int) y) != (int) x)
+ return fn ();
+ return r;
+}
+
+int
+f11 (unsigned x, unsigned y, unsigned *res)
+{
+ *res = x * y;
+ return !y || ((int) *res / (int) y) == (int) x;
+}
+
+unsigned
+f12 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ if (!y || ((int) r / (int) y) == (int) x)
+ return fn ();
+ return r;
+}
+
+int
+f13 (int x, int y, int *res)
+{
+ *res = (unsigned) x * y;
+ return y && (*res / y) != x;
+}
+
+int
+f14 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ if (y && (r / y) != x)
+ return fn ();
+ return r;
+}
+
+int
+f15 (int x, int y, int *res)
+{
+ *res = (unsigned) x * y;
+ return !y || (*res / y) == x;
+}
+
+int
+f16 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ if (!y || (r / y) == x)
+ return fn ();
+ return r;
+}
+
+int
+f17 (unsigned x, unsigned *res)
+{
+ *res = x * 35U;
+ return x && ((int) *res / (int) x) != 35;
+}
+
+unsigned
+f18 (unsigned x)
+{
+ unsigned int r = x * 35U;
+ if (x && ((int) r / (int) x) != 35)
+ return fn ();
+ return r;
+}
+
+int
+f19 (unsigned x, unsigned *res)
+{
+ *res = x * 35U;
+ return !x || ((int) *res / (int) x) == 35;
+}
+
+unsigned
+f20 (unsigned x)
+{
+ unsigned int r = x * 35U;
+ if (!x || ((int) r / (int) x) == 35)
+ return fn ();
+ return r;
+}
+
+int
+f21 (int x, int *res)
+{
+ *res = (unsigned) x * 35;
+ return x && (*res / x) != 35;
+}
+
+int
+f22 (int x)
+{
+ int r = (unsigned) x * 35;
+ if (x && (r / x) != 35)
+ return fn ();
+ return r;
+}
+
+int
+f23 (int x, int *res)
+{
+ *res = (unsigned) x * 35;
+ return !x || (*res / x) == 35;
+}
+
+int
+f24 (int x)
+{
+ int r = (unsigned) x * 35;
+ if (!x || (r / x) == 35)
+ return fn ();
+ return r;
+}
+
+int
+f25 (unsigned x, unsigned *res)
+{
+ *res = x * 35U;
+ return ((int) *res / 35) != (int) x;
+}
+
+unsigned
+f26 (unsigned x)
+{
+ unsigned int r = x * 35U;
+ if (((int) r / 35) != (int) x)
+ return fn ();
+ return r;
+}
+
+int
+f27 (unsigned x, unsigned *res)
+{
+ *res = x * 35U;
+ return ((int) *res / 35) == (int) x;
+}
+
+unsigned
+f28 (unsigned x)
+{
+ unsigned int r = x * 35U;
+ if (((int) r / 35) == (int) x)
+ return fn ();
+ return r;
+}
+
+int
+f29 (int x, int *res)
+{
+ *res = (unsigned) x * 35;
+ return 35 && (*res / 35) != x;
+}
+
+int
+f30 (int x)
+{
+ int r = (unsigned) x * 35;
+ if ((r / 35) != x)
+ return fn ();
+ return r;
+}
+
+int
+f31 (int x, int *res)
+{
+ *res = (unsigned) x * 35;
+ return (*res / 35) == x;
+}
+
+int
+f32 (int x)
+{
+ int r = (unsigned) x * 35;
+ if ((r / 35) == x)
+ return fn ();
+ return r;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr95852-4.c b/gcc/testsuite/gcc.target/i386/pr95852-4.c
new file mode 100644
index 0000000..f8b4656
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr95852-4.c
@@ -0,0 +1,266 @@
+/* PR tree-optimization/95852 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized -masm=att" } */
+/* { dg-final { scan-tree-dump-times " = \.MUL_OVERFLOW " 32 "optimized" } } */
+/* { dg-final { scan-assembler-times "\timull\t" 32 } } */
+/* { dg-final { scan-assembler-times "\tseto\t" 8 } } */
+/* { dg-final { scan-assembler-times "\tsetno\t" 8 } } */
+/* { dg-final { scan-assembler-times "\tjn\?o\t" 16 } } */
+
+unsigned fn (void);
+
+int
+f1 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ return x && ((int) r / (int) x) != (int) y;
+}
+
+unsigned
+f2 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ if (x && ((int) r / (int) x) != (int) y)
+ return fn ();
+ return 0;
+}
+
+int
+f3 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ return !x || ((int) r / (int) x) == (int) y;
+}
+
+unsigned
+f4 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ if (!x || ((int) r / (int) x) == (int) y)
+ return fn ();
+ return 0;
+}
+
+int
+f5 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ return x && (r / x) != y;
+}
+
+int
+f6 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ if (x && (r / x) != y)
+ return fn ();
+ return 0;
+}
+
+int
+f7 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ return !x || (r / x) == y;
+}
+
+int
+f8 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ if (!x || (r / x) == y)
+ return fn ();
+ return 0;
+}
+
+int
+f9 (unsigned x, unsigned y)
+{
+ unsigned r = x * y;
+ return y && ((int) r / (int) y) != (int) x;
+}
+
+unsigned
+f10 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ if (y && ((int) r / (int) y) != (int) x)
+ return fn ();
+ return 0;
+}
+
+int
+f11 (unsigned x, unsigned y)
+{
+ unsigned r = x * y;
+ return !y || ((int) r / (int) y) == (int) x;
+}
+
+unsigned
+f12 (unsigned x, unsigned y)
+{
+ unsigned int r = x * y;
+ if (!y || ((int) r / (int) y) == (int) x)
+ return fn ();
+ return 0;
+}
+
+int
+f13 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ return y && (r / y) != x;
+}
+
+int
+f14 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ if (y && (r / y) != x)
+ return fn ();
+ return 0;
+}
+
+int
+f15 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ return !y || (r / y) == x;
+}
+
+int
+f16 (int x, int y)
+{
+ int r = (unsigned) x * y;
+ if (!y || (r / y) == x)
+ return fn ();
+ return 0;
+}
+
+int
+f17 (unsigned x)
+{
+ unsigned r = x * 35U;
+ return x && ((int) r / (int) x) != 35;
+}
+
+unsigned
+f18 (unsigned x)
+{
+ unsigned int r = x * 35U;
+ if (x && ((int) r / (int) x) != 35)
+ return fn ();
+ return 0;
+}
+
+int
+f19 (unsigned x)
+{
+ unsigned r = x * 35U;
+ return !x || ((int) r / (int) x) == 35;
+}
+
+unsigned
+f20 (unsigned x)
+{
+ unsigned int r = x * 35U;
+ if (!x || ((int) r / (int) x) == 35)
+ return fn ();
+ return 0;
+}
+
+int
+f21 (int x)
+{
+ int r = (unsigned) x * 35;
+ return x && (r / x) != 35;
+}
+
+int
+f22 (int x)
+{
+ int r = (unsigned) x * 35;
+ if (x && (r / x) != 35)
+ return fn ();
+ return 0;
+}
+
+int
+f23 (int x)
+{
+ int r = (unsigned) x * 35;
+ return !x || (r / x) == 35;
+}
+
+int
+f24 (int x)
+{
+ int r = (unsigned) x * 35;
+ if (!x || (r / x) == 35)
+ return fn ();
+ return 0;
+}
+
+int
+f25 (unsigned x)
+{
+ unsigned r = x * 35U;
+ return ((int) r / 35) != (int) x;
+}
+
+unsigned
+f26 (unsigned x)
+{
+ unsigned int r = x * 35U;
+ if (((int) r / 35) != (int) x)
+ return fn ();
+ return 0;
+}
+
+int
+f27 (unsigned x)
+{
+ unsigned r = x * 35U;
+ return !35 || ((int) r / 35) == (int) x;
+}
+
+unsigned
+f28 (unsigned x)
+{
+ unsigned int r = x * 35U;
+ if (((int) r / 35) == (int) x)
+ return fn ();
+ return 0;
+}
+
+int
+f29 (int x)
+{
+ int r = (unsigned) x * 35;
+ return 35 && (r / 35) != x;
+}
+
+int
+f30 (int x)
+{
+ int r = (unsigned) x * 35;
+ if ((r / 35) != x)
+ return fn ();
+ return 0;
+}
+
+int
+f31 (int x)
+{
+ int r = (unsigned) x * 35;
+ return (r / 35) == x;
+}
+
+int
+f32 (int x)
+{
+ int r = (unsigned) x * 35;
+ if ((r / 35) == x)
+ return fn ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr95905-1.c b/gcc/testsuite/gcc.target/i386/pr95905-1.c
new file mode 100644
index 0000000..8de715e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr95905-1.c
@@ -0,0 +1,26 @@
+/* PR target/95905 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse4.1 -mno-avx" } */
+/* { dg-final { scan-assembler "\tpmovzxbw\t" } } */
+/* { dg-final { scan-assembler "\tpmovzxwd\t" } } */
+/* { dg-final { scan-assembler "\tpmovzxdq\t" } } */
+
+#include <x86intrin.h>
+
+__m128i
+f1 (__m128i a)
+{
+ return _mm_unpacklo_epi8 (a, _mm_setzero_si128 ());
+}
+
+__m128i
+f2 (__m128i a)
+{
+ return _mm_unpacklo_epi16 (a, _mm_setzero_si128 ());
+}
+
+__m128i
+f3 (__m128i a)
+{
+ return _mm_unpacklo_epi32 (a, _mm_setzero_si128 ());
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr95905-2.c b/gcc/testsuite/gcc.target/i386/pr95905-2.c
new file mode 100644
index 0000000..231335c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr95905-2.c
@@ -0,0 +1,82 @@
+/* PR target/95905 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse4.1" } */
+/* { dg-final { scan-assembler-times "\tv?pmovzxbw\t" 4 } } */
+/* { dg-final { scan-assembler-times "\tv?pmovzxwd\t" 4 } } */
+/* { dg-final { scan-assembler-times "\tv?pmovzxdq\t" 4 } } */
+
+typedef unsigned char V1 __attribute__((vector_size (16)));
+typedef unsigned short V2 __attribute__((vector_size (16)));
+typedef unsigned int V3 __attribute__((vector_size (16)));
+
+V1
+f1 (V1 x)
+{
+ return __builtin_shuffle (x, (V1) {}, (V1) { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 });
+}
+
+V2
+f2 (V2 x)
+{
+ return __builtin_shuffle (x, (V2) {}, (V2) { 0, 8, 1, 9, 2, 10, 3, 11 });
+}
+
+V3
+f3 (V3 x)
+{
+ return __builtin_shuffle (x, (V3) {}, (V3) { 0, 4, 1, 5 });
+}
+
+V1
+f4 (V1 *x)
+{
+ return __builtin_shuffle (*x, (V1) {}, (V1) { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 });
+}
+
+V2
+f5 (V2 *x)
+{
+ return __builtin_shuffle (*x, (V2) {}, (V2) { 0, 8, 1, 9, 2, 10, 3, 11 });
+}
+
+V3
+f6 (V3 *x)
+{
+ return __builtin_shuffle (*x, (V3) {}, (V3) { 0, 4, 1, 5 });
+}
+
+V1
+f7 (V1 x)
+{
+ return __builtin_shuffle ((V1) {}, x, (V1) { 16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7 });
+}
+
+V2
+f8 (V2 x)
+{
+ return __builtin_shuffle ((V2) {}, x, (V2) { 8, 0, 9, 1, 10, 2, 11, 3 });
+}
+
+V3
+f9 (V3 x)
+{
+ return __builtin_shuffle ((V3) {}, x, (V3) { 4, 0, 5, 1 });
+}
+
+V1
+f10 (V1 *x)
+{
+ return __builtin_shuffle ((V1) {}, *x, (V1) { 16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7 });
+}
+
+V2
+f11 (V2 *x)
+{
+ return __builtin_shuffle ((V2) {}, *x, (V2) { 8, 0, 9, 1, 10, 2, 11, 3 });
+}
+
+V3
+f12 (V3 *x)
+{
+ return __builtin_shuffle ((V3) {}, *x, (V3) { 4, 0, 5, 1 });
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr95905-3.c b/gcc/testsuite/gcc.target/i386/pr95905-3.c
new file mode 100644
index 0000000..b7b4bc5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr95905-3.c
@@ -0,0 +1,82 @@
+/* PR target/95905 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -mavx2" } */
+/* { dg-final { scan-assembler-times "\tvpmovzxbw\t" 4 } } */
+/* { dg-final { scan-assembler-times "\tvpmovzxwd\t" 4 } } */
+/* { dg-final { scan-assembler-times "\tvpmovzxdq\t" 4 } } */
+
+typedef unsigned char V1 __attribute__((vector_size (32)));
+typedef unsigned short V2 __attribute__((vector_size (32)));
+typedef unsigned int V3 __attribute__((vector_size (32)));
+
+V1
+f1 (V1 x)
+{
+ return __builtin_shuffle (x, (V1) {}, (V1) { 0, 32, 1, 33, 2, 34, 3, 35, 4, 36, 5, 37, 6, 38, 7, 39, 8, 40, 9, 41, 10, 42, 11, 43, 12, 44, 13, 45, 14, 46, 15, 47 });
+}
+
+V2
+f2 (V2 x)
+{
+ return __builtin_shuffle (x, (V2) {}, (V2) { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 });
+}
+
+V3
+f3 (V3 x)
+{
+ return __builtin_shuffle (x, (V3) {}, (V3) { 0, 8, 1, 9, 2, 10, 3, 11 });
+}
+
+V1
+f4 (V1 *x)
+{
+ return __builtin_shuffle (*x, (V1) {}, (V1) { 0, 32, 1, 33, 2, 34, 3, 35, 4, 36, 5, 37, 6, 38, 7, 39, 8, 40, 9, 41, 10, 42, 11, 43, 12, 44, 13, 45, 14, 46, 15, 47 });
+}
+
+V2
+f5 (V2 *x)
+{
+ return __builtin_shuffle (*x, (V2) {}, (V2) { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 });
+}
+
+V3
+f6 (V3 *x)
+{
+ return __builtin_shuffle (*x, (V3) {}, (V3) { 0, 8, 1, 9, 2, 10, 3, 11 });
+}
+
+V1
+f7 (V1 x)
+{
+ return __builtin_shuffle ((V1) {}, x, (V1) { 32, 0, 33, 1, 34, 2, 35, 3, 36, 4, 37, 5, 38, 6, 39, 7, 40, 8, 41, 9, 42, 10, 43, 11, 44, 12, 45, 13, 46, 14, 47, 15 });
+}
+
+V2
+f8 (V2 x)
+{
+ return __builtin_shuffle ((V2) {}, x, (V2) { 16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7 });
+}
+
+V3
+f9 (V3 x)
+{
+ return __builtin_shuffle ((V3) {}, x, (V3) { 8, 0, 9, 1, 10, 2, 11, 3 });
+}
+
+V1
+f10 (V1 *x)
+{
+ return __builtin_shuffle ((V1) {}, *x, (V1) { 32, 0, 33, 1, 34, 2, 35, 3, 36, 4, 37, 5, 38, 6, 39, 7, 40, 8, 41, 9, 42, 10, 43, 11, 44, 12, 45, 13, 46, 14, 47, 15 });
+}
+
+V2
+f11 (V2 *x)
+{
+ return __builtin_shuffle ((V2) {}, *x, (V2) { 16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7 });
+}
+
+V3
+f12 (V3 *x)
+{
+ return __builtin_shuffle ((V3) {}, *x, (V3) { 8, 0, 9, 1, 10, 2, 11, 3 });
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr95905-4.c b/gcc/testsuite/gcc.target/i386/pr95905-4.c
new file mode 100644
index 0000000..43cdf7f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr95905-4.c
@@ -0,0 +1,82 @@
+/* PR target/95905 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -mavx512bw" } */
+/* { dg-final { scan-assembler-times "\tvpmovzxbw\t" 4 } } */
+/* { dg-final { scan-assembler-times "\tvpmovzxwd\t" 4 } } */
+/* { dg-final { scan-assembler-times "\tvpmovzxdq\t" 4 } } */
+
+typedef unsigned char V1 __attribute__((vector_size (64)));
+typedef unsigned short V2 __attribute__((vector_size (64)));
+typedef unsigned int V3 __attribute__((vector_size (64)));
+
+V1
+f1 (V1 x)
+{
+ return __builtin_shuffle (x, (V1) {}, (V1) { 0, 64, 1, 65, 2, 66, 3, 67, 4, 68, 5, 69, 6, 70, 7, 71, 8, 72, 9, 73, 10, 74, 11, 75, 12, 76, 13, 77, 14, 78, 15, 79, 16, 80, 17, 81, 18, 82, 19, 83, 20, 84, 21, 85, 22, 86, 23, 87, 24, 88, 25, 89, 26, 90, 27, 91, 28, 92, 29, 93, 30, 94, 31, 95 });
+}
+
+V2
+f2 (V2 x)
+{
+ return __builtin_shuffle (x, (V2) {}, (V2) { 0, 32, 1, 33, 2, 34, 3, 35, 4, 36, 5, 37, 6, 38, 7, 39, 8, 40, 9, 41, 10, 42, 11, 43, 12, 44, 13, 45, 14, 46, 15, 47 });
+}
+
+V3
+f3 (V3 x)
+{
+ return __builtin_shuffle (x, (V3) {}, (V3) { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 });
+}
+
+V1
+f4 (V1 *x)
+{
+ return __builtin_shuffle (*x, (V1) {}, (V1) { 0, 64, 1, 65, 2, 66, 3, 67, 4, 68, 5, 69, 6, 70, 7, 71, 8, 72, 9, 73, 10, 74, 11, 75, 12, 76, 13, 77, 14, 78, 15, 79, 16, 80, 17, 81, 18, 82, 19, 83, 20, 84, 21, 85, 22, 86, 23, 87, 24, 88, 25, 89, 26, 90, 27, 91, 28, 92, 29, 93, 30, 94, 31, 95 });
+}
+
+V2
+f5 (V2 *x)
+{
+ return __builtin_shuffle (*x, (V2) {}, (V2) { 0, 32, 1, 33, 2, 34, 3, 35, 4, 36, 5, 37, 6, 38, 7, 39, 8, 40, 9, 41, 10, 42, 11, 43, 12, 44, 13, 45, 14, 46, 15, 47 });
+}
+
+V3
+f6 (V3 *x)
+{
+ return __builtin_shuffle (*x, (V3) {}, (V3) { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 });
+}
+
+V1
+f7 (V1 x)
+{
+ return __builtin_shuffle ((V1) {}, x, (V1) { 64, 0, 65, 1, 66, 2, 67, 3, 68, 4, 69, 5, 70, 6, 71, 7, 72, 8, 73, 9, 74, 10, 75, 11, 76, 12, 77, 13, 78, 14, 79, 15, 80, 16, 81, 17, 82, 18, 83, 19, 84, 20, 85, 21, 86, 22, 87, 23, 88, 24, 89, 25, 90, 26, 91, 27, 92, 28, 93, 29, 94, 30, 95, 31 });
+}
+
+V2
+f8 (V2 x)
+{
+ return __builtin_shuffle ((V2) {}, x, (V2) { 32, 0, 33, 1, 34, 2, 35, 3, 36, 4, 37, 5, 38, 6, 39, 7, 40, 8, 41, 9, 42, 10, 43, 11, 44, 12, 45, 13, 46, 14, 47, 15 });
+}
+
+V3
+f9 (V3 x)
+{
+ return __builtin_shuffle ((V3) {}, x, (V3) { 16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7 });
+}
+
+V1
+f10 (V1 *x)
+{
+ return __builtin_shuffle ((V1) {}, *x, (V1) { 64, 0, 65, 1, 66, 2, 67, 3, 68, 4, 69, 5, 70, 6, 71, 7, 72, 8, 73, 9, 74, 10, 75, 11, 76, 12, 77, 13, 78, 14, 79, 15, 80, 16, 81, 17, 82, 18, 83, 19, 84, 20, 85, 21, 86, 22, 87, 23, 88, 24, 89, 25, 90, 26, 91, 27, 92, 28, 93, 29, 94, 30, 95, 31 });
+}
+
+V2
+f11 (V2 *x)
+{
+ return __builtin_shuffle ((V2) {}, *x, (V2) { 32, 0, 33, 1, 34, 2, 35, 3, 36, 4, 37, 5, 38, 6, 39, 7, 40, 8, 41, 9, 42, 10, 43, 11, 44, 12, 45, 13, 46, 14, 47, 15 });
+}
+
+V3
+f12 (V3 *x)
+{
+ return __builtin_shuffle ((V3) {}, *x, (V3) { 16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7 });
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr96271.c b/gcc/testsuite/gcc.target/i386/pr96271.c
new file mode 100644
index 0000000..b916bd1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr96271.c
@@ -0,0 +1,11 @@
+/* PR tree-optimization/96271 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -mtune=intel -msse2 -masm=att" } */
+/* { dg-final { scan-assembler "movq\t%xmm0, %r" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler "movq\t%xmm1, %r" { target { ! ia32 } } } } */
+
+int
+foo (double a, double b)
+{
+ return __builtin_memcmp (&a, &b, sizeof (double)) == 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr96793-1.c b/gcc/testsuite/gcc.target/i386/pr96793-1.c
new file mode 100644
index 0000000..b205d39
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr96793-1.c
@@ -0,0 +1,28 @@
+/* PR target/96793 */
+/* { dg-do run { target sse2_runtime } } */
+/* { dg-require-effective-target fenv } */
+/* { dg-options "-O2 -frounding-math -msse2 -mno-sse4 -mfpmath=sse" } */
+
+#include <fenv.h>
+
+double
+__attribute__((noinline))
+test (double value)
+{
+ return __builtin_trunc (value);
+}
+
+int
+main ()
+{
+ double result;
+
+ fesetround (FE_DOWNWARD);
+
+ result = test (0.25);
+
+ if (__builtin_signbit (result) != 0)
+ __builtin_abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr96793-2.c b/gcc/testsuite/gcc.target/i386/pr96793-2.c
new file mode 100644
index 0000000..14efaab
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr96793-2.c
@@ -0,0 +1,28 @@
+/* PR target/96793 */
+/* { dg-do run { target sse2_runtime } } */
+/* { dg-require-effective-target fenv } */
+/* { dg-options "-O2 -frounding-math -msse2 -mno-sse4 -mfpmath=sse" } */
+
+#include <fenv.h>
+
+double
+__attribute__((noinline))
+test (double value)
+{
+ return __builtin_rint (value);
+}
+
+int
+main ()
+{
+ double result;
+
+ fesetround (FE_DOWNWARD);
+
+ result = test (0.25);
+
+ if (__builtin_signbit (result) != 0)
+ __builtin_abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr96793.c b/gcc/testsuite/gcc.target/i386/pr96793.c
new file mode 100644
index 0000000..4a96478
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr96793.c
@@ -0,0 +1,28 @@
+/* PR target/96793 */
+/* { dg-do run { target sse2_runtime } } */
+/* { dg-require-effective-target fenv } */
+/* { dg-options "-O2 -frounding-math -msse2 -mno-sse4 -mfpmath=sse" } */
+
+#include <fenv.h>
+
+double
+__attribute__((noinline))
+test (double value)
+{
+ return __builtin_floor (value);
+}
+
+int
+main ()
+{
+ double result;
+
+ fesetround (FE_DOWNWARD);
+
+ result = test (0.25);
+
+ if (__builtin_signbit (result) != 0)
+ __builtin_abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr96938.c b/gcc/testsuite/gcc.target/i386/pr96938.c
new file mode 100644
index 0000000..832cdd4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr96938.c
@@ -0,0 +1,66 @@
+/* PR target/96938 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -masm=att" } */
+/* { dg-final { scan-assembler-times "\tbtrl\t" 10 } } */
+
+void
+f1 (unsigned char *f, int o, unsigned char v)
+{
+ *f = (*f & ~(1 << o)) | (v << o);
+}
+
+void
+f2 (unsigned char *f, int o, unsigned char v)
+{
+ int t = *f & ~(1 << o);
+ *f = t | (v << o);
+}
+
+void
+f3 (unsigned char *f, int o, unsigned char v)
+{
+ *f &= ~(1 << o);
+}
+
+void
+f4 (unsigned char *f, int o, unsigned char v)
+{
+ *f = (*f & ~(1 << (o & 31))) | v;
+}
+
+void
+f5 (unsigned char *f, int o, unsigned char v)
+{
+ *f = (*f & ~(1 << (o & 31))) | (v << (o & 31));
+}
+
+void
+f6 (unsigned short *f, int o, unsigned short v)
+{
+ *f = (*f & ~(1 << o)) | (v << o);
+}
+
+void
+f7 (unsigned short *f, int o, unsigned short v)
+{
+ int t = *f & ~(1 << o);
+ *f = t | (v << o);
+}
+
+void
+f8 (unsigned short *f, int o, unsigned short v)
+{
+ *f &= ~(1 << o);
+}
+
+void
+f9 (unsigned short *f, int o, unsigned short v)
+{
+ *f = (*f & ~(1 << (o & 31))) | v;
+}
+
+void
+f10 (unsigned short *f, int o, unsigned short v)
+{
+ *f = (*f & ~(1 << (o & 31))) | (v << (o & 31));
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr97510.c b/gcc/testsuite/gcc.target/i386/pr97510.c
new file mode 100644
index 0000000..4f967b5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr97510.c
@@ -0,0 +1,18 @@
+/* PR target/97510 */
+/* { dg-do compile } */
+/* { dg-options "-Os -fexcess-precision=standard -mfpmath=387 -funsafe-math-optimizations" } */
+
+float compute_rsqrt_ref_r_0;
+
+__attribute__((optimize(1)))
+void compute_rsqrt_ref() {
+ compute_rsqrt_ref_r_0 = 1.0 / 0.0;
+}
+
+int icompute_rsqrt_ref(float *);
+
+void test_512() {
+ float in[0];
+ for (int i;;)
+ in[i] = 8.6756 * icompute_rsqrt_ref(in);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr97684.c b/gcc/testsuite/gcc.target/i386/pr97684.c
new file mode 100644
index 0000000..983bf53
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr97684.c
@@ -0,0 +1,24 @@
+/* PR rtl-optimization/97684 */
+/* { dg-do compile } */
+/* { dg-options "-O1 -flive-range-shrinkage -fschedule-insns -fselective-scheduling -funroll-all-loops -fno-web" } */
+
+void
+c5 (double);
+
+void
+g4 (int *n4)
+{
+ double lp = 0.0;
+ int fn;
+
+ for (fn = 0; fn < 18; ++fn)
+ {
+ int as;
+
+ as = __builtin_abs (n4[fn]);
+ if (as > lp)
+ lp = as;
+ }
+
+ c5 (lp);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr97978.c b/gcc/testsuite/gcc.target/i386/pr97978.c
new file mode 100644
index 0000000..263bca8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr97978.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-options "-Os -fno-PIC" } */
+int sg;
+long int kk;
+
+void
+bp (int jz, int tj, long int li)
+{
+ if (jz == 0 || tj == 0)
+ __builtin_unreachable ();
+
+ kk = li;
+}
+
+void
+qp (void)
+{
+ ++kk;
+
+ for (;;)
+ bp (1l / sg, 0, ~0u);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr98100.c b/gcc/testsuite/gcc.target/i386/pr98100.c
index 4deda1a..09c2e32 100644
--- a/gcc/testsuite/gcc.target/i386/pr98100.c
+++ b/gcc/testsuite/gcc.target/i386/pr98100.c
@@ -1,6 +1,7 @@
/* PR target/98100 */
/* { dg-do compile } */
/* { dg-options "-O2 -mno-avx -fvar-tracking-assignments -g0" } */
+/* { dg-require-ifunc "" } */
__attribute__((target_clones("default","avx2"))) void
foo ()
diff --git a/gcc/testsuite/gcc.target/i386/pr98169.c b/gcc/testsuite/gcc.target/i386/pr98169.c
new file mode 100644
index 0000000..b192731
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98169.c
@@ -0,0 +1,29 @@
+/* PR tree-optimization/98169 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-finite-math-only" } */
+/* { dg-final { scan-assembler-times "\tsetn\?p\t" 4 } } */
+/* { dg-final { scan-assembler-not "\tjn\?\[ep]\t" } } */
+
+int
+f1 (float a)
+{
+ return a == a;
+}
+
+int
+f2 (float a)
+{
+ return !__builtin_isnanf (a);
+}
+
+int
+f3 (double a)
+{
+ return a == a;
+}
+
+int
+f4 (double a)
+{
+ return !__builtin_isnan (a);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr98212.c b/gcc/testsuite/gcc.target/i386/pr98212.c
new file mode 100644
index 0000000..b8ed023
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98212.c
@@ -0,0 +1,21 @@
+/* PR rtl-optimization/98212 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse2 -mfpmath=sse -mno-avx" } */
+/* { dg-final { scan-assembler-times "\tucomiss\t" 2 } } */
+/* { dg-final { scan-assembler-not "\tcomiss\t" } } */
+
+void foo (void);
+
+void
+bar (float a, float b)
+{
+ if (a != b)
+ foo ();
+}
+
+void
+baz (float a, float b)
+{
+ if (a == b)
+ foo ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr98264.c b/gcc/testsuite/gcc.target/i386/pr98264.c
new file mode 100644
index 0000000..ea23527
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98264.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-O3 -w" } */
+
+a[], g[], h[];
+double b, c;
+double j[];
+i;
+l() {
+ int e = 0;
+ for (; e < 80; e += 4) {
+ a[0] = h[e];
+ a[1] = h[e + 1];
+ j[0] = a[0] - c;
+ j[1] = a[1] + b;
+ __attribute__(()) k = *(double *)a, e, f = e = 0;
+ *g = k;
+ double *d = j;
+ for (; e < 2; e++)
+ if (d[e])
+ i = f;
+ }
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr98274.c b/gcc/testsuite/gcc.target/i386/pr98274.c
new file mode 100644
index 0000000..dd08f33
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98274.c
@@ -0,0 +1,8 @@
+/* PR target/98274 */
+/* { dg-do compile { target lp64 } } */
+/* { dg-options "-mabi=sysv -O2 -march=x86-64-v2" } */
+
+void __attribute__((target ("avx")))
+foo (void)
+{
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr98289.c b/gcc/testsuite/gcc.target/i386/pr98289.c
new file mode 100644
index 0000000..9c620d4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98289.c
@@ -0,0 +1,54 @@
+/* PR rtl-optimization/98289 */
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-require-effective-target freorder } */
+/* { dg-options "-O2 -freorder-blocks-and-partition -fdump-rtl-pro_and_epilogue-details" } */
+/* { dg-final { scan-rtl-dump-times "Performing shrink-wrapping" 4 "pro_and_epilogue" } } */
+
+int bar (void) __attribute__((cold));
+
+void
+foo (int x)
+{
+ if (x)
+ __builtin_abort ();
+}
+
+void
+baz (int x)
+{
+ if (__builtin_expect (x, 0))
+ {
+ bar ();
+ bar ();
+ bar ();
+ }
+}
+
+void
+qux (int x, int y, int z, int w)
+{
+ if (x || y || z || w)
+ __builtin_abort ();
+}
+
+int
+corge (int x, int y, int z, int w, int u)
+{
+ if (__builtin_expect (x, 0))
+ goto lab;
+ u++;
+ if (__builtin_expect (y, 0))
+ goto lab;
+ u *= 2;
+ if (__builtin_expect (z, 0))
+ goto lab;
+ u |= 42;
+ if (__builtin_expect (w, 0))
+ {
+ lab:;
+ bar ();
+ bar ();
+ if (bar () > 32) goto lab;
+ }
+ return u;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr98334.c b/gcc/testsuite/gcc.target/i386/pr98334.c
new file mode 100644
index 0000000..283abc5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98334.c
@@ -0,0 +1,36 @@
+/* PR rtl-optimization/98334 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fomit-frame-pointer -fno-stack-protector" } */
+/* { dg-final { scan-assembler-not "\taddl\t" } } */
+/* { dg-final { scan-assembler-not "\tsubl\t" } } */
+/* { dg-final { scan-assembler-not "\tleal\t" } } */
+
+int
+foo (int i, unsigned int n)
+{
+ int result = 0;
+ while (n > 0)
+ {
+ result += i;
+ n -= 1;
+ }
+ return result;
+}
+
+int
+bar (int x, int y)
+{
+ return (int) (y - 1U) * x + x;
+}
+
+int
+baz (int x, int y)
+{
+ return (y - 1) * x + x;
+}
+
+int
+qux (int x, int y)
+{
+ return x * (int) (y + 1U) - x;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr98482-1.c b/gcc/testsuite/gcc.target/i386/pr98482-1.c
new file mode 100644
index 0000000..912cbe0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98482-1.c
@@ -0,0 +1,9 @@
+/* { dg-do compile { target { *-*-linux* && lp64 } } } */
+/* { dg-require-effective-target mfentry } */
+/* { dg-options "-fprofile -mfentry -O2 -mcmodel=large" } */
+/* { dg-final { scan-assembler "movabsq\t\\\$__fentry__, %r10\n\tcall\t\\*%r10" } } */
+
+void
+func (void)
+{
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr98482-2.c b/gcc/testsuite/gcc.target/i386/pr98482-2.c
new file mode 100644
index 0000000..03c62a4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98482-2.c
@@ -0,0 +1,10 @@
+/* { dg-do compile { target { *-*-linux* && lp64 } } } */
+/* { dg-require-effective-target mfentry } */
+/* { dg-require-effective-target fpic } */
+/* { dg-options "-fpic -fprofile -mfentry -O2 -mcmodel=large" } */
+/* { dg-final { scan-assembler "movabsq\t\\\$__fentry__@PLTOFF, %r11\n\taddq\t%r11, %r10\n\tcall\t\\*%r10" } } */
+
+void
+func (void)
+{
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr98495-1.c b/gcc/testsuite/gcc.target/i386/pr98495-1.c
new file mode 100644
index 0000000..df24e63
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98495-1.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mmmx -msse2 -mtune=generic" } */
+/* { dg-final { scan-assembler-not "movswl" } } */
+/* { dg-final { scan-assembler-not "movzwl" } } */
+/* { dg-final { scan-assembler-not "cwtl" } } */
+/* { dg-final { scan-assembler "pextrw" } } */
+
+#include <xmmintrin.h>
+
+unsigned int foo16(__m64 x) { return _mm_extract_pi16(x, 3); }
diff --git a/gcc/testsuite/gcc.target/i386/pr98495-2.c b/gcc/testsuite/gcc.target/i386/pr98495-2.c
new file mode 100644
index 0000000..5fd001e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98495-2.c
@@ -0,0 +1,11 @@
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-O2 -mmmx -msse2 -mtune=generic" } */
+/* { dg-final { scan-assembler-not "movswl" } } */
+/* { dg-final { scan-assembler-not "movzwl" } } */
+/* { dg-final { scan-assembler-not "cwtl" } } */
+/* { dg-final { scan-assembler-not "cltq" } } */
+/* { dg-final { scan-assembler "pextrw" } } */
+
+#include <xmmintrin.h>
+
+unsigned long long int foo16(__m64 x) { return _mm_extract_pi16(x, 3); }
diff --git a/gcc/testsuite/gcc.target/i386/pr98495-3.c b/gcc/testsuite/gcc.target/i386/pr98495-3.c
new file mode 100644
index 0000000..458b470
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98495-3.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mmmx -msse2 -mtune=generic" } */
+/* { dg-final { scan-assembler "(movswl|cwtl)" } } */
+/* { dg-final { scan-assembler "pextrw" } } */
+
+#include <xmmintrin.h>
+
+int foo16(__m64 x) { return (short) _mm_extract_pi16(x, 3); }
diff --git a/gcc/testsuite/gcc.target/i386/pr98495-4.c b/gcc/testsuite/gcc.target/i386/pr98495-4.c
new file mode 100644
index 0000000..16d3cba
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98495-4.c
@@ -0,0 +1,8 @@
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-O2 -mmmx -msse2 -mtune=generic" } */
+/* { dg-final { scan-assembler "movswq" } } */
+/* { dg-final { scan-assembler "pextrw" } } */
+
+#include <xmmintrin.h>
+
+long long int foo16(__m64 x) { return (short) _mm_extract_pi16(x, 3); }
diff --git a/gcc/testsuite/gcc.target/i386/pr98495-5.c b/gcc/testsuite/gcc.target/i386/pr98495-5.c
new file mode 100644
index 0000000..a62b42d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98495-5.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-O0 -mmmx -msse2 -mtune=generic" } */
+/* { dg-final { scan-assembler-not "movswl" } } */
+/* { dg-final { scan-assembler-not "cwtl" } } */
+/* { dg-final { scan-assembler "pextrw" } } */
+
+#include <xmmintrin.h>
+
+unsigned int foo16(__m64 x) { return _mm_extract_pi16(x, 3); }
diff --git a/gcc/testsuite/gcc.target/i386/pr98522.c b/gcc/testsuite/gcc.target/i386/pr98522.c
new file mode 100644
index 0000000..762f2ed
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98522.c
@@ -0,0 +1,39 @@
+/* PR target/98522 */
+/* { dg-do run { target { ! ia32 } } } */
+/* { dg-options "-O2" } */
+/* { dg-require-effective-target fenv_exceptions } */
+
+#include <emmintrin.h>
+#include <fenv.h>
+
+__m64
+__attribute__((noinline))
+test_cvt (__m128 a)
+{
+ return _mm_cvt_ps2pi (a);
+}
+
+__m64
+__attribute__((noinline))
+test_cvtt (__m128 a)
+{
+ return _mm_cvtt_ps2pi (a);
+}
+
+int
+main ()
+{
+ __m128 x = (__m128)(__m128i){0x0000000000000000LL, 0x7fffffffffffffffLL};
+ volatile __m64 y;
+
+ feclearexcept (FE_INVALID);
+
+ y = test_cvt(x);
+ y = test_cvtt (x);
+
+ if (fetestexcept (FE_INVALID))
+ __builtin_abort ();
+
+ return 0;
+}
+
diff --git a/gcc/testsuite/gcc.target/i386/pr98567-1.c b/gcc/testsuite/gcc.target/i386/pr98567-1.c
new file mode 100644
index 0000000..ef53ec7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98567-1.c
@@ -0,0 +1,31 @@
+/* PR target/98567 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -mbmi -fno-stack-protector" } */
+/* { dg-final { scan-assembler-times "\tblsi" 4 } } */
+/* { dg-final { scan-assembler-times "\tsetne\t" 2 } } */
+/* { dg-final { scan-assembler-times "\tsete\t" 2 } } */
+/* { dg-final { scan-assembler-not "\ttest\[ld]" } } */
+
+int
+foo (unsigned long x)
+{
+ return (-x & x) == 0;
+}
+
+int
+bar (unsigned int x)
+{
+ return (-x & x) == 0;
+}
+
+int
+baz (unsigned long x)
+{
+ return (x & -x) != 0;
+}
+
+int
+qux (unsigned int x)
+{
+ return 0 != (x & -x);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr98567-2.c b/gcc/testsuite/gcc.target/i386/pr98567-2.c
new file mode 100644
index 0000000..dccb24f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98567-2.c
@@ -0,0 +1,31 @@
+/* PR target/98567 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -mbmi -fno-stack-protector" } */
+/* { dg-final { scan-assembler-times "\tblsi" 4 } } */
+/* { dg-final { scan-assembler-times "\tsetle\t" 2 } } */
+/* { dg-final { scan-assembler-times "\tsetg\t" 2 } } */
+/* { dg-final { scan-assembler-not "\ttest\[ld]" } } */
+
+int
+foo (unsigned long x)
+{
+ return 0 >= (int) (-x & x);
+}
+
+int
+bar (unsigned int x)
+{
+ return (int) (-x & x) <= 0;
+}
+
+int
+baz (unsigned long x)
+{
+ return (int) (x & -x) > 0;
+}
+
+int
+qux (unsigned int x)
+{
+ return 0 < (int) (x & -x);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr98585.c b/gcc/testsuite/gcc.target/i386/pr98585.c
new file mode 100644
index 0000000..18325f5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98585.c
@@ -0,0 +1,14 @@
+/* PR target/98585 */
+/* { dg-do compile { target *-*-linux* } } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-O2 -mcmodel=large -masm=att" } */
+/* { dg-final { scan-assembler "movabs\[^\n\r]*bar" } } */
+
+void bar (void);
+
+void
+__attribute__ ((target ("bmi2")))
+foo()
+{
+ bar ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr98603.c b/gcc/testsuite/gcc.target/i386/pr98603.c
new file mode 100644
index 0000000..9bf924e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98603.c
@@ -0,0 +1,11 @@
+/* PR rtl-optimization/98603 */
+/* { dg-do compile } */
+/* { dg-options "-O0 -w" } */
+
+int
+foo (void)
+{
+ int b, c;
+ asm goto ("" : "=r" (b), "=r" (c) : "I" (128) : : lab); /* { dg-error "impossible constraint in 'asm'" } */
+lab:;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr98667-1.c b/gcc/testsuite/gcc.target/i386/pr98667-1.c
new file mode 100644
index 0000000..5bf0c92
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98667-1.c
@@ -0,0 +1,9 @@
+/* { dg-do compile { target ia32 } } */
+/* { dg-options "-O2 -fcf-protection -march=i486" } */
+
+void
+test (void)
+{
+}
+
+/* { dg-error "'-fcf-protection' is not compatible with this target" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/gcc.target/i386/pr98667-2.c b/gcc/testsuite/gcc.target/i386/pr98667-2.c
new file mode 100644
index 0000000..bc3a78c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98667-2.c
@@ -0,0 +1,9 @@
+/* { dg-do compile { target ia32 } } */
+/* { dg-options "-O2 -fcf-protection=branch -march=i486" } */
+
+void
+test (void)
+{
+}
+
+/* { dg-error "'-fcf-protection' is not compatible with this target" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/gcc.target/i386/pr98667-3.c b/gcc/testsuite/gcc.target/i386/pr98667-3.c
new file mode 100644
index 0000000..a6ea6d0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98667-3.c
@@ -0,0 +1,7 @@
+/* { dg-do compile { target ia32 } } */
+/* { dg-options "-O2 -fcf-protection=return -march=i486" } */
+
+void
+test (void)
+{
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr98670.c b/gcc/testsuite/gcc.target/i386/pr98670.c
new file mode 100644
index 0000000..34a0095
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98670.c
@@ -0,0 +1,16 @@
+/* PR target/98670 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse4.1" } */
+
+#include <x86intrin.h>
+
+void foo (__m128i);
+int a[6];
+
+void
+bar (void)
+{
+ __m128i d = *(__m128i *) (a + 2);
+ __m128i e = _mm_unpacklo_epi16 (d, (__m128i) {});
+ foo (e);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr98694.c b/gcc/testsuite/gcc.target/i386/pr98694.c
new file mode 100644
index 0000000..45889d4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98694.c
@@ -0,0 +1,41 @@
+/* PR rtl-optimization/98694 */
+/* { dg-do run { target { ! ia32 } } } */
+/* { dg-options "-O2 -mavx512bw" } */
+/* { dg-require-effective-target avx512bw } */
+
+#include<immintrin.h>
+typedef short v4hi __attribute__ ((vector_size (8)));
+typedef int v2si __attribute__ ((vector_size (8)));
+v4hi b;
+
+__attribute__ ((noipa))
+v2si
+foo (__m512i src1, __m512i src2)
+{
+ __mmask64 m = _mm512_cmpeq_epu8_mask (src1, src2);
+ short s = (short) m;
+ int i = (int)m;
+ b = __extension__ (v4hi) {s, s, s, s};
+ return __extension__ (v2si) {i, i};
+}
+
+int main ()
+{
+ if (!__builtin_cpu_supports ("avx512bw"))
+ return 0;
+
+ __m512i src1 = _mm512_setzero_si512 ();
+ __m512i src2 = _mm512_set_epi8 (0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1);
+ __mmask64 m = _mm512_cmpeq_epu8_mask (src1, src2);
+ v2si a = foo (src1, src2);
+ if (a[0] != (int)m)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr98833.c b/gcc/testsuite/gcc.target/i386/pr98833.c
new file mode 100644
index 0000000..086c37c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr98833.c
@@ -0,0 +1,9 @@
+/* PR target/98833 */
+/* { dg-do compile } */
+/* { dg-options "-mavx512vl -O2 -mxop" } */
+
+int __attribute__((__vector_size__(4 * sizeof(int)))) * f5_p;
+int __attribute__((__vector_size__(4 * sizeof(int)))) * f6_p;
+
+void f5() { *f5_p = 0 == *f5_p; }
+void f6() { *f5_p = *f6_p > *f5_p; }
diff --git a/gcc/testsuite/gcc.target/i386/sse-andnps-1.c b/gcc/testsuite/gcc.target/i386/sse-andnps-1.c
index eeeec02..9a3b7fa 100644
--- a/gcc/testsuite/gcc.target/i386/sse-andnps-1.c
+++ b/gcc/testsuite/gcc.target/i386/sse-andnps-1.c
@@ -28,6 +28,7 @@ TEST (void)
int source1[4]={34, 545, 955, 67};
int source2[4]={67, 4, 57, 897};
int e[4];
+ float f[4];
s1.x = _mm_loadu_ps ((float *)source1);
s2.x = _mm_loadu_ps ((float *)source2);
@@ -37,7 +38,8 @@ TEST (void)
e[1] = (~source1[1]) & source2[1];
e[2] = (~source1[2]) & source2[2];
e[3] = (~source1[3]) & source2[3];
+ __builtin_memcpy (f, e, sizeof (f));
- if (check_union128 (u, (float *)e))
+ if (check_union128 (u, f))
abort ();
}
diff --git a/gcc/testsuite/gcc.target/i386/sse-andps-1.c b/gcc/testsuite/gcc.target/i386/sse-andps-1.c
index 6094dba..e3d3419 100644
--- a/gcc/testsuite/gcc.target/i386/sse-andps-1.c
+++ b/gcc/testsuite/gcc.target/i386/sse-andps-1.c
@@ -30,6 +30,7 @@ TEST (void)
float f[4];
int i[4];
}source1, source2, e;
+ float f[4];
s1.x = _mm_set_ps (34, 545, 955, 67);
s2.x = _mm_set_ps (67, 4, 57, 897);
@@ -43,7 +44,8 @@ TEST (void)
e.i[1] = source1.i[1] & source2.i[1];
e.i[2] = source1.i[2] & source2.i[2];
e.i[3] = source1.i[3] & source2.i[3];
+ __builtin_memcpy (f, e.f, sizeof (f));
- if (check_union128 (u, e.f))
+ if (check_union128 (u, f))
abort ();
}
diff --git a/gcc/testsuite/gcc.target/i386/sse2-andnpd-1.c b/gcc/testsuite/gcc.target/i386/sse2-andnpd-1.c
index 0250d6b..23eabab 100644
--- a/gcc/testsuite/gcc.target/i386/sse2-andnpd-1.c
+++ b/gcc/testsuite/gcc.target/i386/sse2-andnpd-1.c
@@ -28,6 +28,7 @@ TEST (void)
long long source1[2]={34545, 95567};
long long source2[2]={674, 57897};
long long e[2];
+ double d[2];
s1.x = _mm_loadu_pd ((double *)source1);
s2.x = _mm_loadu_pd ((double *)source2);
@@ -35,7 +36,8 @@ TEST (void)
e[0] = (~source1[0]) & source2[0];
e[1] = (~source1[1]) & source2[1];
+ __builtin_memcpy (d, e, sizeof (d));
- if (check_union128d (u, (double *)e))
+ if (check_union128d (u, d))
abort ();
}
diff --git a/gcc/testsuite/gcc.target/i386/sse2-andpd-1.c b/gcc/testsuite/gcc.target/i386/sse2-andpd-1.c
index 9f037ab..0ea4267 100644
--- a/gcc/testsuite/gcc.target/i386/sse2-andpd-1.c
+++ b/gcc/testsuite/gcc.target/i386/sse2-andpd-1.c
@@ -31,6 +31,7 @@ TEST (void)
double d[2];
long long ll[2];
}source1, source2, e;
+ double d[2];
s1.x = _mm_set_pd (34545, 95567);
s2.x = _mm_set_pd (674, 57897);
@@ -42,7 +43,8 @@ TEST (void)
e.ll[0] = source1.ll[0] & source2.ll[0];
e.ll[1] = source1.ll[1] & source2.ll[1];
+ __builtin_memcpy (d, e.d, sizeof (d));
- if (check_union128d (u, e.d))
+ if (check_union128d (u, d))
abort ();
}
diff --git a/gcc/testsuite/gcc.target/i386/sse2-mmx-pextrw.c b/gcc/testsuite/gcc.target/i386/sse2-mmx-pextrw.c
index bb48740..edbac91 100644
--- a/gcc/testsuite/gcc.target/i386/sse2-mmx-pextrw.c
+++ b/gcc/testsuite/gcc.target/i386/sse2-mmx-pextrw.c
@@ -32,7 +32,7 @@ test_pextrw (__m64 *i, unsigned int imm, int *r)
static void
compute_correct_result (__m64 *src_p, unsigned int imm, int *res_p)
{
- short *src = (short *) src_p;
+ unsigned short *src = (unsigned short *) src_p;
if (imm < 4)
*res_p = src[imm];
}
diff --git a/gcc/testsuite/gcc.target/i386/sse2-pr98461-2.c b/gcc/testsuite/gcc.target/i386/sse2-pr98461-2.c
new file mode 100644
index 0000000..330272c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse2-pr98461-2.c
@@ -0,0 +1,25 @@
+/* PR target/98461 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse2 -mno-sse3 -masm=att" } */
+/* { dg-final { scan-assembler-times "\tpmovmskb\t" 3 } } */
+/* { dg-final { scan-assembler-not "\tmovzwl" } } */
+/* { dg-final { scan-assembler-times "\tnotl" 1 } } *
+/* { dg-final { scan-assembler-times "\txorl" 1 } } */
+
+#include <immintrin.h>
+
+unsigned int movemask_not1(__m128i logical) {
+ unsigned short res = (unsigned short)(_mm_movemask_epi8(logical));
+ return ~res;
+}
+
+unsigned int movemask_not2(__m128i logical) {
+ unsigned short res = (unsigned short)(_mm_movemask_epi8(logical));
+ res = ~res;
+ return res;
+}
+
+unsigned int movemask_zero_extend(__m128i logical) {
+ unsigned int res = _mm_movemask_epi8(logical);
+ return res & 0xffff;
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse2-pr98461.c b/gcc/testsuite/gcc.target/i386/sse2-pr98461.c
new file mode 100644
index 0000000..9fae755
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/sse2-pr98461.c
@@ -0,0 +1,50 @@
+/* PR target/98461 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse2 -mno-sse3 -masm=att" } */
+/* { dg-final { scan-assembler-times "\tpmovmskb\t" 6 } } */
+/* { dg-final { scan-assembler-times "\txorl\t" 6 } } */
+/* { dg-final { scan-assembler-not "\tpcmpeq" } } */
+/* { dg-final { scan-assembler-not "\tpxor" } } */
+/* { dg-final { scan-assembler-not "\tpandn" } } */
+
+#include <x86intrin.h>
+
+int
+f1 (__m128i x)
+{
+ return _mm_movemask_epi8 (x) ^ 65535;
+}
+
+int
+f2 (__m128i x)
+{
+ return _mm_movemask_epi8 (_mm_andnot_si128 (x, _mm_set1_epi8 (255)));
+}
+
+int
+f3 (__v16qi x)
+{
+ x ^= (__v16qi) { -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1 };
+ return _mm_movemask_epi8 ((__m128i) x);
+}
+
+long
+f4 (__m128i x)
+{
+ return (unsigned) (_mm_movemask_epi8 (x) ^ 65535);
+}
+
+long
+f5 (__m128i x)
+{
+ return (unsigned) _mm_movemask_epi8 (_mm_andnot_si128 (x, _mm_set1_epi8 (255)));
+}
+
+long
+f6 (__v16qi x)
+{
+ x ^= (__v16qi) { -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1 };
+ return (unsigned) _mm_movemask_epi8 ((__m128i) x);
+}
diff --git a/gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp b/gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp
index b08aa0d..4a5aca7 100644
--- a/gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp
+++ b/gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/i386/uintr-2.c b/gcc/testsuite/gcc.target/i386/uintr-2.c
index e705732..0a83c66 100644
--- a/gcc/testsuite/gcc.target/i386/uintr-2.c
+++ b/gcc/testsuite/gcc.target/i386/uintr-2.c
@@ -1,17 +1,20 @@
/* { dg-do compile { target { ! ia32 } } } */
/* { dg-options "-O2 -muintr -mgeneral-regs-only" } */
/* { dg-final { scan-assembler-times "uiret" "2" } } */
+/* { dg-final { scan-assembler-times "add\[lq]\[ \t]\+\\\$8, %\[er\]sp" "2" } } */
#include <x86gprintrin.h>
+typedef unsigned int uword_t __attribute__ ((mode (__word__)));
+
void
__attribute__((interrupt))
-foo (void *frame)
+foo (void *frame, uword_t uirrv)
{
}
void
__attribute__((interrupt))
-UINTR_hanlder (struct __uintr_frame *frame)
+UINTR_hanlder (struct __uintr_frame *frame, uword_t uirrv)
{
}
diff --git a/gcc/testsuite/gcc.target/i386/uintr-3.c b/gcc/testsuite/gcc.target/i386/uintr-3.c
index d284349..92476cf 100644
--- a/gcc/testsuite/gcc.target/i386/uintr-3.c
+++ b/gcc/testsuite/gcc.target/i386/uintr-3.c
@@ -1,9 +1,13 @@
/* { dg-do compile { target { ! ia32 } } } */
/* { dg-options "-O2 -muintr" } */
/* { dg-final { scan-assembler "uiret" } } */
+/* { dg-final { scan-assembler "add\[lq]\[ \t]\+\\\$8, %\[er\]sp" } } */
+
#include <x86gprintrin.h>
+typedef unsigned int uword_t __attribute__ ((mode (__word__)));
+
void __attribute__ ((target("general-regs-only"), interrupt))
-UINTR_handler (struct __uintr_frame *p)
+UINTR_handler (struct __uintr_frame *p, uword_t uirrv)
{
}
diff --git a/gcc/testsuite/gcc.target/i386/uintr-4.c b/gcc/testsuite/gcc.target/i386/uintr-4.c
index f3b371b..4d0ec34 100644
--- a/gcc/testsuite/gcc.target/i386/uintr-4.c
+++ b/gcc/testsuite/gcc.target/i386/uintr-4.c
@@ -3,7 +3,9 @@
#include <x86gprintrin.h>
+typedef unsigned int uword_t __attribute__ ((mode (__word__)));
+
void __attribute__ ((interrupt))
-UINTR_handler (struct __uintr_frame *p)
-{ /* { dg-message "SSE instructions aren't allowed in an interrupt service routine" } */
+UINTR_handler (struct __uintr_frame *p, uword_t uirrv)
+{ /* { dg-message "SSE instructions aren't allowed in an exception service routine" } */
}
diff --git a/gcc/testsuite/gcc.target/i386/uintr-5.c b/gcc/testsuite/gcc.target/i386/uintr-5.c
index ac44be0..49cb2ec 100644
--- a/gcc/testsuite/gcc.target/i386/uintr-5.c
+++ b/gcc/testsuite/gcc.target/i386/uintr-5.c
@@ -4,7 +4,9 @@
#include <x86gprintrin.h>
+typedef unsigned int uword_t __attribute__ ((mode (__word__)));
+
void
-UINTR_hanlder (struct __uintr_frame *frame)
+UINTR_hanlder (struct __uintr_frame *frame, uword_t uirrv)
{
}
diff --git a/gcc/testsuite/gcc.target/i386/x86-64-v2-msabi.c b/gcc/testsuite/gcc.target/i386/x86-64-v2-msabi.c
new file mode 100644
index 0000000..109589b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/x86-64-v2-msabi.c
@@ -0,0 +1,5 @@
+/* { dg-do compile { target lp64 } } */
+/* { dg-options "-mabi=ms -march=x86-64-v2" } */
+
+/* Verify -march=x86-64-v2 works even with -mabi=ms. */
+#include "x86-64-v2.c"
diff --git a/gcc/testsuite/gcc.target/i386/x86-64-v2-other.c b/gcc/testsuite/gcc.target/i386/x86-64-v2-other.c
new file mode 100644
index 0000000..1750b7b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/x86-64-v2-other.c
@@ -0,0 +1,5 @@
+/* { dg-do compile } */
+/* { dg-options "-march=x86-64-v2" } */
+
+/* Verify -march=x86-64-v2 works even with -m32 or -mabi=ms. */
+#include "x86-64-v2.c"
diff --git a/gcc/testsuite/gcc.target/i386/x86-64-v2.c b/gcc/testsuite/gcc.target/i386/x86-64-v2.c
index f17a15d..e4b7e88 100644
--- a/gcc/testsuite/gcc.target/i386/x86-64-v2.c
+++ b/gcc/testsuite/gcc.target/i386/x86-64-v2.c
@@ -12,8 +12,10 @@
#ifndef __SSE2__
# error __SSE2__ not defined
#endif
-#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
-# error __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 not defined
+#ifdef __x86_64__
+# ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
+# error __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 not defined
+# endif
#endif
#ifndef __LAHF_SAHF__
# error __LAHF_SAHF__ not defined
diff --git a/gcc/testsuite/gcc.target/i386/x86-64-v3-msabi.c b/gcc/testsuite/gcc.target/i386/x86-64-v3-msabi.c
new file mode 100644
index 0000000..dcf7cb0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/x86-64-v3-msabi.c
@@ -0,0 +1,5 @@
+/* { dg-do compile { target lp64 } } */
+/* { dg-options "-mabi=ms -march=x86-64-v3" } */
+
+/* Verify -march=x86-64-v3 works even with -mabi=ms. */
+#include "x86-64-v3.c"
diff --git a/gcc/testsuite/gcc.target/i386/x86-64-v3-other.c b/gcc/testsuite/gcc.target/i386/x86-64-v3-other.c
new file mode 100644
index 0000000..d80ac1b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/x86-64-v3-other.c
@@ -0,0 +1,5 @@
+/* { dg-do compile } */
+/* { dg-options "-march=x86-64-v3" } */
+
+/* Verify -march=x86-64-v3 works even with -m32 or -mabi=ms. */
+#include "x86-64-v3.c"
diff --git a/gcc/testsuite/gcc.target/i386/x86-64-v3.c b/gcc/testsuite/gcc.target/i386/x86-64-v3.c
index 784202f..5357720 100644
--- a/gcc/testsuite/gcc.target/i386/x86-64-v3.c
+++ b/gcc/testsuite/gcc.target/i386/x86-64-v3.c
@@ -1,7 +1,7 @@
/* { dg-do compile { target { ! ia32 } } } */
/* { dg-options "-mabi=sysv -march=x86-64-v3" } */
-/* Verify that the CPU features required by x86-64-v4 are enabled. */
+/* Verify that the CPU features required by x86-64-v3 are enabled. */
#ifndef __MMX__
# error __MMX__ not defined
@@ -12,8 +12,10 @@
#ifndef __SSE2__
# error __SSE2__ not defined
#endif
-#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
-# error __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 not defined
+#ifdef __x86_64__
+# ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
+# error __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 not defined
+# endif
#endif
#ifndef __LAHF_SAHF__
# error __LAHF_SAHF__ not defined
diff --git a/gcc/testsuite/gcc.target/i386/x86-64-v4-msabi.c b/gcc/testsuite/gcc.target/i386/x86-64-v4-msabi.c
new file mode 100644
index 0000000..fe8565f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/x86-64-v4-msabi.c
@@ -0,0 +1,5 @@
+/* { dg-do compile { target lp64 } } */
+/* { dg-options "-mabi=ms -march=x86-64-v4" } */
+
+/* Verify -march=x86-64-v4 works even with -mabi=ms. */
+#include "x86-64-v4.c"
diff --git a/gcc/testsuite/gcc.target/i386/x86-64-v4-other.c b/gcc/testsuite/gcc.target/i386/x86-64-v4-other.c
new file mode 100644
index 0000000..0e1a284
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/x86-64-v4-other.c
@@ -0,0 +1,5 @@
+/* { dg-do compile } */
+/* { dg-options "-march=x86-64-v4" } */
+
+/* Verify -march=x86-64-v4 works even with -m32 or -mabi=ms. */
+#include "x86-64-v4.c"
diff --git a/gcc/testsuite/gcc.target/i386/x86-64-v4.c b/gcc/testsuite/gcc.target/i386/x86-64-v4.c
index 7c202a4..718b1a1 100644
--- a/gcc/testsuite/gcc.target/i386/x86-64-v4.c
+++ b/gcc/testsuite/gcc.target/i386/x86-64-v4.c
@@ -12,8 +12,10 @@
#ifndef __SSE2__
# error __SSE2__ not defined
#endif
-#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
-# error __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 not defined
+#ifdef __x86_64__
+# ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
+# error __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 not defined
+# endif
#endif
#ifndef __LAHF_SAHF__
# error __LAHF_SAHF__ not defined
diff --git a/gcc/testsuite/gcc.target/ia64/ia64.exp b/gcc/testsuite/gcc.target/ia64/ia64.exp
index 1a83366..5fae842 100644
--- a/gcc/testsuite/gcc.target/ia64/ia64.exp
+++ b/gcc/testsuite/gcc.target/ia64/ia64.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/m68k/m68k.exp b/gcc/testsuite/gcc.target/m68k/m68k.exp
index 5733845..6d35e45 100644
--- a/gcc/testsuite/gcc.target/m68k/m68k.exp
+++ b/gcc/testsuite/gcc.target/m68k/m68k.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/microblaze/microblaze.exp b/gcc/testsuite/gcc.target/microblaze/microblaze.exp
index 6c33e18..86d9386 100644
--- a/gcc/testsuite/gcc.target/microblaze/microblaze.exp
+++ b/gcc/testsuite/gcc.target/microblaze/microblaze.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/mips/inter/mips16-inter.exp b/gcc/testsuite/gcc.target/mips/inter/mips16-inter.exp
index a93fdd5..6023cb0 100644
--- a/gcc/testsuite/gcc.target/mips/inter/mips16-inter.exp
+++ b/gcc/testsuite/gcc.target/mips/inter/mips16-inter.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.target/mips/mips-nonpic/README b/gcc/testsuite/gcc.target/mips/mips-nonpic/README
index 04a932f..51851a0 100644
--- a/gcc/testsuite/gcc.target/mips/mips-nonpic/README
+++ b/gcc/testsuite/gcc.target/mips/mips-nonpic/README
@@ -20,7 +20,7 @@ main-15.c address and call address taken only Neither (* But creating a PLT entr
main-16.c address and call address and call PLT entry
-Copyright (C) 2008-2020 Free Software Foundation, Inc.
+Copyright (C) 2008-2021 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.exp b/gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.exp
index e76de7b..c274fff 100644
--- a/gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.exp
+++ b/gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/mips/mips.exp b/gcc/testsuite/gcc.target/mips/mips.exp
index 457ed88..0129231 100644
--- a/gcc/testsuite/gcc.target/mips/mips.exp
+++ b/gcc/testsuite/gcc.target/mips/mips.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/msp430/msp430.exp b/gcc/testsuite/gcc.target/msp430/msp430.exp
index 9ad39cc..8c97f63 100644
--- a/gcc/testsuite/gcc.target/msp430/msp430.exp
+++ b/gcc/testsuite/gcc.target/msp430/msp430.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/nds32/nds32.exp b/gcc/testsuite/gcc.target/nds32/nds32.exp
index 130572f..242c298 100644
--- a/gcc/testsuite/gcc.target/nds32/nds32.exp
+++ b/gcc/testsuite/gcc.target/nds32/nds32.exp
@@ -1,5 +1,5 @@
# Target test cases of Andes NDS32 cpu for GNU compiler
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 Free Software Foundation, Inc.
# Contributed by Andes Technology Corporation.
#
# This file is part of GCC.
diff --git a/gcc/testsuite/gcc.target/nios2/nios2.exp b/gcc/testsuite/gcc.target/nios2/nios2.exp
index 3487011..87673a6 100644
--- a/gcc/testsuite/gcc.target/nios2/nios2.exp
+++ b/gcc/testsuite/gcc.target/nios2/nios2.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/nvptx/nvptx.exp b/gcc/testsuite/gcc.target/nvptx/nvptx.exp
index 8de8044..166939f 100644
--- a/gcc/testsuite/gcc.target/nvptx/nvptx.exp
+++ b/gcc/testsuite/gcc.target/nvptx/nvptx.exp
@@ -1,5 +1,5 @@
# Specific regression driver for nvptx.
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/or1k/or1k.exp b/gcc/testsuite/gcc.target/or1k/or1k.exp
index c8bfdad..fef2d1c 100644
--- a/gcc/testsuite/gcc.target/or1k/or1k.exp
+++ b/gcc/testsuite/gcc.target/or1k/or1k.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# Copyright (C) 2017-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp b/gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp
index c4e1d5e..d83e0ab 100644
--- a/gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp
+++ b/gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-1-p10-runnable.c b/gcc/testsuite/gcc.target/powerpc/builtins-1-p10-runnable.c
new file mode 100644
index 0000000..222c8b3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/builtins-1-p10-runnable.c
@@ -0,0 +1,398 @@
+/* { dg-do run } */
+/* { dg-require-effective-target power10_hw } */
+/* { dg-options "-mdejagnu-cpu=power10 -save-temps" } */
+
+/* { dg-final { scan-assembler-times {\mvdivsw\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvdivuw\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvdivsd\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvdivud\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvdivesw\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvdiveuw\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvdivesd\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvdiveud\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvmodsw\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvmoduw\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvmodsd\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvmodud\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvmulhsw\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvmulhuw\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvmulhsd\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvmulhud\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvmulld\M} 2 } } */
+
+#include <stdint.h>
+#include <stdio.h>
+#include <math.h>
+#include <altivec.h>
+
+#define DEBUG 0
+
+#ifdef DEBUG
+#include <stdio.h>
+#endif
+
+void abort (void);
+
+int main()
+ {
+ int i;
+ vector int i_arg1, i_arg2;
+ vector unsigned int u_arg1, u_arg2;
+ vector long long int d_arg1, d_arg2;
+ vector long long unsigned int ud_arg1, ud_arg2;
+
+ vector int vec_i_expected, vec_i_result;
+ vector unsigned int vec_u_expected, vec_u_result;
+ vector long long int vec_d_expected, vec_d_result;
+ vector long long unsigned int vec_ud_expected, vec_ud_result;
+
+ /* Signed word divide */
+ i_arg1 = (vector int){ 20, 40, 60, 80};
+ i_arg2 = (vector int){ 2, 2, 2, 2};
+ vec_i_expected = (vector int){10, 20, 30, 40};
+
+ vec_i_result = vec_div (i_arg1, i_arg2);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (vec_i_expected[i] != vec_i_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_div signed result[%d] = %d != "
+ "expected[%d] = %d\n",
+ i, vec_i_result[i], i, vec_i_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Unsigned word divide */
+ u_arg1 = (vector unsigned int){ 20, 40, 60, 80};
+ u_arg2 = (vector unsigned int){ 2, 2, 2, 2};
+ vec_u_expected = (vector unsigned int){10, 20, 30, 40};
+
+ vec_u_result = vec_div (u_arg1, u_arg2);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (vec_u_expected[i] != vec_u_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_div unsigned result[%d] = %d != "
+ "expected[%d] = %d\n",
+ i, vec_u_result[i], i, vec_u_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Signed double word divide */
+ d_arg1 = (vector long long){ 24, 68};
+ d_arg2 = (vector long long){ 2, 2};
+ vec_d_expected = (vector long long){12, 34};
+
+ vec_d_result = vec_div (d_arg1, d_arg2);
+
+ for (i = 0; i < 2; i++)
+ {
+ if (vec_d_expected[i] != vec_d_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_div signed result[%d] = %d != "
+ "expected[%d] = %d\n",
+ i, vec_d_result[i], i, vec_d_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Unsigned double word divide */
+ ud_arg1 = (vector unsigned long long){ 24, 68};
+ ud_arg2 = (vector unsigned long long){ 2, 2};
+ vec_ud_expected = (vector unsigned long long){12, 34};
+
+ vec_ud_result = vec_div (ud_arg1, ud_arg2);
+
+ for (i = 0; i < 2; i++)
+ {
+ if (vec_ud_expected[i] != vec_ud_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_div unsigned result[%d] = %d != "
+ "expected[%d] = %d\n",
+ i, vec_ud_result[i], i, vec_ud_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Divide Extended signed word result = (arg1 << 32)/arg2 */
+ i_arg1 = (vector int){ 2, 4, 6, 8};
+ i_arg2 = (vector int){ 2048, 2048, 2048, 2048};
+ vec_i_expected = (vector int){4194304, 8388608, 12582912, 16777216};
+
+ vec_i_result = vec_dive (i_arg1, i_arg2);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (vec_i_expected[i] != vec_i_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_dive signed result[%d] = %d != "
+ "expected[%d] = %d\n",
+ i, vec_i_result[i], i, vec_i_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Divide Extended unsigned word result = (arg1 << 32)/arg2 */
+ u_arg1 = (vector unsigned int){ 2, 4, 6, 8};
+ u_arg2 = (vector unsigned int){ 2048, 2048, 2048, 2048};
+ vec_u_expected = (vector unsigned int){4194304, 8388608,
+ 12582912, 16777216};
+
+ vec_u_result = vec_dive (u_arg1, u_arg2);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (vec_u_expected[i] != vec_u_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_dive unsigned result[%d] = %d != "
+ "expected[%d] = %d\n",
+ i, vec_u_result[i], i, vec_u_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Divide Extended double signed esult = (arg1 << 64)/arg2 */
+ d_arg1 = (vector long long int){ 2, 4};
+ d_arg2 = (vector long long int){ 4294967296, 4294967296};
+
+ vec_d_expected = (vector long long int){8589934592, 17179869184};
+
+ vec_d_result = vec_dive (d_arg1, d_arg2);
+
+ for (i = 0; i < 2; i++)
+ {
+ if (vec_d_expected[i] != vec_d_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_dive signed result[%d] = %lld != "
+ "expected[%d] = %lld\n",
+ i, vec_d_result[i], i, vec_d_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Divide Extended double unsigned result = (arg1 << 64)/arg2 */
+ ud_arg1 = (vector long long unsigned int){ 2, 4};
+ ud_arg2 = (vector long long unsigned int){ 4294967296, 4294967296};
+
+ vec_ud_expected = (vector long long unsigned int){8589934592,
+ 17179869184};
+
+ vec_ud_result = vec_dive (ud_arg1, ud_arg2);
+
+ for (i = 0; i < 2; i++)
+ {
+ if (vec_ud_expected[i] != vec_ud_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_dive unsigned result[%d] = %lld != "
+ "expected[%d] = %lld\n",
+ i, vec_ud_result[i], i, vec_ud_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Signed word modulo */
+ i_arg1 = (vector int){ 23, 45, 61, 89};
+ i_arg2 = (vector int){ 2, 2, 2, 2};
+ vec_i_expected = (vector int){1, 1, 1, 1};
+
+ vec_i_result = vec_mod (i_arg1, i_arg2);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (vec_i_expected[i] != vec_i_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_mod signed result[%d] = %d != "
+ "expected[%d] = %d\n",
+ i, vec_i_result[i], i, vec_i_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Unsigned word modulo */
+ u_arg1 = (vector unsigned int){ 25, 41, 67, 86};
+ u_arg2 = (vector unsigned int){ 3, 3, 3, 3};
+ vec_u_expected = (vector unsigned int){1, 2, 1, 2};
+
+ vec_u_result = vec_mod (u_arg1, u_arg2);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (vec_u_expected[i] != vec_u_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_mod unsigned result[%d] = %d != "
+ "expected[%d] = %d\n",
+ i, vec_u_result[i], i, vec_u_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Signed double word modulo */
+ d_arg1 = (vector long long){ 24, 68};
+ d_arg2 = (vector long long){ 7, 7};
+ vec_d_expected = (vector long long){3, 5};
+
+ vec_d_result = vec_mod (d_arg1, d_arg2);
+
+ for (i = 0; i < 2; i++)
+ {
+ if (vec_d_expected[i] != vec_d_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_mod signed result[%d] = %d != "
+ "expected[%d] = %d\n",
+ i, vec_d_result[i], i, vec_d_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Unsigned double word modulo */
+ ud_arg1 = (vector unsigned long long){ 24, 68};
+ ud_arg2 = (vector unsigned long long){ 8, 8};
+ vec_ud_expected = (vector unsigned long long){0, 4};
+
+ vec_ud_result = vec_mod (ud_arg1, ud_arg2);
+
+ for (i = 0; i < 2; i++)
+ {
+ if (vec_ud_expected[i] != vec_ud_result[i])
+#ifdef DEBUG
+ printf("ERROR vecmod unsigned result[%d] = %d != "
+ "expected[%d] = %d\n",
+ i, vec_ud_result[i], i, vec_ud_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Signed word multiply high */
+ i_arg1 = (vector int){ 2147483648, 2147483648, 2147483648, 2147483648 };
+ i_arg2 = (vector int){ 2, 3, 4, 5};
+ // vec_i_expected = (vector int){-1, -2, -2, -3};
+ vec_i_expected = (vector int){1, -2, -2, -3};
+
+ vec_i_result = vec_mulh (i_arg1, i_arg2);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (vec_i_expected[i] != vec_i_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_mulh signed result[%d] = %d != "
+ "expected[%d] = %d\n",
+ i, vec_i_result[i], i, vec_i_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Unsigned word multiply high */
+ u_arg1 = (vector unsigned int){ 2147483648, 2147483648,
+ 2147483648, 2147483648 };
+ u_arg2 = (vector unsigned int){ 4, 5, 6, 7 };
+ vec_u_expected = (vector unsigned int){2, 2, 3, 3 };
+
+ vec_u_result = vec_mulh (u_arg1, u_arg2);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (vec_u_expected[i] != vec_u_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_mulh unsigned result[%d] = %d != "
+ "expected[%d] = %d\n",
+ i, vec_u_result[i], i, vec_u_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Signed double word multiply high */
+ d_arg1 = (vector long long int){ 2305843009213693951,
+ 4611686018427387903 };
+ d_arg2 = (vector long long int){ 12, 20 };
+ vec_d_expected = (vector long long int){ 1, 4 };
+
+ vec_d_result = vec_mulh (d_arg1, d_arg2);
+
+ for (i = 0; i < 2; i++)
+ {
+ if (vec_d_expected[i] != vec_d_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_mulh signed result[%d] = %d != "
+ "expected[%d] = %d\n",
+ i, vec_d_result[i], i, vec_d_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Unsigned double word multiply high */
+ ud_arg1 = (vector unsigned long long int){ 2305843009213693951,
+ 4611686018427387903 };
+ ud_arg2 = (vector unsigned long long int){ 32, 10 };
+ vec_ud_expected = (vector unsigned long long int){ 3, 2 };
+
+ vec_ud_result = vec_mulh (ud_arg1, ud_arg2);
+
+ for (i = 0; i < 2; i++)
+ {
+ if (vec_ud_expected[i] != vec_ud_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_mulh unsigned result[%d] = %d != "
+ "expected[%d] = %d\n",
+ i, vec_ud_result[i], i, vec_ud_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Unsigned double word multiply low */
+ ud_arg1 = (vector unsigned long long int){ 2048, 4096 };
+ ud_arg2 = (vector unsigned long long int){ 2, 4 };
+ vec_ud_expected = (vector unsigned long long int){ 4096, 16384 };
+
+ vec_ud_result = vec_mul (ud_arg1, ud_arg2);
+
+ for (i = 0; i < 2; i++)
+ {
+ if (vec_ud_expected[i] != vec_ud_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_mul unsigned result[%d] = %d != "
+ "expected[%d] = %d\n",
+ i, vec_ud_result[i], i, vec_ud_expected[i]);
+#else
+ abort();
+#endif
+ }
+
+ /* Signed double word multiply low */
+ d_arg1 = (vector signed long long int){ 2048, 4096 };
+ d_arg2 = (vector signed long long int){ 2, 4 };
+ vec_d_expected = (vector signed long long int){ 4096, 16384 };
+
+ vec_d_result = vec_mul (d_arg1, d_arg2);
+
+ for (i = 0; i < 2; i++)
+ {
+ if (vec_d_expected[i] != vec_d_result[i])
+#ifdef DEBUG
+ printf("ERROR vec_mul signed result[%d] = %d != "
+ "expected[%d] = %d\n",
+ i, vec_d_result[i], i, vec_d_expected[i]);
+#else
+ abort();
+#endif
+ }
+ }
diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-1.fold.h b/gcc/testsuite/gcc.target/powerpc/builtins-1.fold.h
index 8bc5f5e..42d5522 100644
--- a/gcc/testsuite/gcc.target/powerpc/builtins-1.fold.h
+++ b/gcc/testsuite/gcc.target/powerpc/builtins-1.fold.h
@@ -214,10 +214,10 @@ int main ()
extern vector long long l8; l8 = vec_mul (l3, l4);
extern vector unsigned long long u6; u6 = vec_mul (u3, u4);
- extern vector double dh; dh = vec_ctf (la, -2);
+ extern vector double dh; dh = vec_ctf (la, 2);
extern vector double di; di = vec_ctf (ua, 2);
extern vector int sz; sz = vec_cts (fa, 0x1F);
- extern vector long long l9; l9 = vec_cts (dh, -2);
+ extern vector long long l9; l9 = vec_cts (dh, 2);
extern vector unsigned long long u7; u7 = vec_ctu (di, 2);
extern vector unsigned int usz; usz = vec_ctu (fa, 0x1F);
diff --git a/gcc/testsuite/gcc.target/powerpc/builtins-2.c b/gcc/testsuite/gcc.target/powerpc/builtins-2.c
index 2aa23a3..30acae4 100644
--- a/gcc/testsuite/gcc.target/powerpc/builtins-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/builtins-2.c
@@ -42,12 +42,12 @@ int main ()
|| ue[0] != 27L || ue[1] != 27L || uf[0] != 14L || uf[1] != 14L)
abort ();
- vector double da = vec_ctf (sa, -2);
+ vector double da = vec_ctf (sa, 2);
vector double db = vec_ctf (ua, 2);
- vector long long sg = vec_cts (da, -2);
+ vector long long sg = vec_cts (da, 2);
vector unsigned long long ug = vec_ctu (db, 2);
- if (da[0] != 108.0 || da[1] != -56.0 || db[0] != 6.75 || db[1] != 3.5
+ if (da[0] != 6.75 || da[1] != -3.5 || db[0] != 6.75 || db[1] != 3.5
|| sg[0] != 27L || sg[1] != -14L || ug[0] != 27L || ug[1] != 14L)
abort ();
diff --git a/gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp b/gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp
index 36a4f94..b76dd56 100644
--- a/gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp
+++ b/gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.target/powerpc/float128-longdouble-math.c b/gcc/testsuite/gcc.target/powerpc/float128-longdouble-math.c
new file mode 100644
index 0000000..07934bb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/float128-longdouble-math.c
@@ -0,0 +1,442 @@
+/* { dg-require-effective-target ppc_float128_hw } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -mlong-double-128 -Wno-psabi -mabi=ieeelongdouble" } */
+
+/* Test if switching long double to IEEE 128-bit maps all of the math built-in
+ function names correctly. We leave off the \M in matching the calls, so
+ power10 will match using bl foo@notoc. */
+
+#ifdef DO_FUNC
+#define BUILTIN1(FUNC, ARG1) FUNC (ARG1)
+#define BUILTIN2(FUNC, ARG1, ARG2) FUNC (ARG1, ARG2)
+#define BUILTIN3(FUNC, ARG1, ARG2, ARG3) FUNC (ARG1, ARG2, ARG3)
+
+#else
+#define BUILTIN1(FUNC, ARG1) __builtin_ ## FUNC (ARG1)
+#define BUILTIN2(FUNC, ARG1, ARG2) __builtin_ ## FUNC (ARG1, ARG2)
+#define BUILTIN3(FUNC, ARG1, ARG2, ARG3) __builtin_ ## FUNC (ARG1, ARG2, ARG3)
+#endif
+
+/* Built-in functions that returns a long double and take one long double
+ argument. */
+
+void
+return_ld_arg_ld (long double *p,
+ long double *q)
+{
+ /* { dg-final { scan-assembler {\mbl __acoshieee128} } } */
+ *p++ = BUILTIN1 (acoshl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __acosieee128} } } */
+ *p++ = BUILTIN1 (acosl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __asinhieee128} } } */
+ *p++ = BUILTIN1 (asinhl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __asinieee128} } } */
+ *p++ = BUILTIN1 (asinl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __atanhieee128} } } */
+ *p++ = BUILTIN1 (atanhl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __atanieee128} } } */
+ *p++ = BUILTIN1 (atanl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __cbrtieee128} } } */
+ *p++ = BUILTIN1 (cbrtl, *q++);
+
+ /* inline code. */
+ /* { dg-final { scan-assembler {\mxsrqpi +[0-9]+,[0-9]+,[0-9]+,2} } } */
+ *p++ = BUILTIN1 (ceill, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __coshieee128} } } */
+ *p++ = BUILTIN1 (coshl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __cosieee128} } } */
+ *p++ = BUILTIN1 (cosl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __erfcieee128} } } */
+ *p++ = BUILTIN1 (erfcl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __erfieee128} } } */
+ *p++ = BUILTIN1 (erfl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __exp10ieee128} } } */
+ *p++ = BUILTIN1 (exp10l, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __exp2ieee128} } } */
+ *p++ = BUILTIN1 (exp2l, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __expieee128} } } */
+ *p++ = BUILTIN1 (expl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __expm1ieee128} } } */
+ *p++ = BUILTIN1 (expm1l, *q++);
+
+ /* inline code. */
+ /* { dg-final { scan-assembler {\mxsabsqp} } } */
+ *p++ = BUILTIN1 (fabsl, *q++);
+
+ /* inline code. */
+ /* { dg-final { scan-assembler {\mxsrqpi +[0-9]+,[0-9]+,[0-9]+,3} } } */
+ *p++ = BUILTIN1 (floorl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __lgammaieee128} } } */
+ *p++ = BUILTIN1 (gammal, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __j0ieee128} } } */
+ *p++ = BUILTIN1 (j0l, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __j1ieee128} } } */
+ *p++ = BUILTIN1 (j1l, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __log10ieee128} } } */
+ *p++ = BUILTIN1 (log10l, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __log1pieee128} } } */
+ *p++ = BUILTIN1 (log1pl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __log2ieee128} } } */
+ *p++ = BUILTIN1 (log2l, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __logbieee128} } } */
+ *p++ = BUILTIN1 (logbl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __logieee128} } } */
+ *p++ = BUILTIN1 (logl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __nearbyintieee128} } } */
+ *p++ = BUILTIN1 (nearbyintl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __exp10ieee128} } } */
+ *p++ = BUILTIN1 (pow10l, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __rintieee128} } } */
+ *p++ = BUILTIN1 (rintl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __roundevenieee128} } } */
+ *p++ = BUILTIN1 (roundevenl, *q++);
+
+ /* inline code. */
+ /* { dg-final { scan-assembler {\mxsrqpi +[0-9]+,[0-9]+,[0-9]+,0} } } */
+ *p++ = BUILTIN1 (roundl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __significandieee128} } } */
+ *p++ = BUILTIN1 (significandl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __sinhieee128} } } */
+ *p++ = BUILTIN1 (sinhl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __sinieee128} } } */
+ *p++ = BUILTIN1 (sinl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __sqrtieee128} } } */
+ *p++ = BUILTIN1 (sqrtl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __tanhieee128} } } */
+ *p++ = BUILTIN1 (tanhl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __tanieee128} } } */
+ *p++ = BUILTIN1 (tanl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __tgammaieee128} } } */
+ *p++ = BUILTIN1 (tgammal, *q++);
+
+ /* inline code. */
+ /* { dg-final { scan-assembler {\mxsrqpi +[0-9]+,[0-9]+,[0-9]+,1} } } */
+ *p++ = BUILTIN1 (truncl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __y0ieee128} } } */
+ *p++ = BUILTIN1 (y0l, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __y1ieee128} } } */
+ *p = BUILTIN1 (y1l, *q);
+
+}
+
+/* Built-in functions that returns a long double and take two long double
+ arguments. */
+
+void
+return_ld_arg_ld_ld (long double *p,
+ long double *q,
+ long double *r)
+{
+ /* { dg-final { scan-assembler {\mbl __atan2ieee128} } } */
+ *p++ = BUILTIN2 (atan2l, *q++, *r++);
+
+ /* inline code. */
+ /* { dg-final { scan-assembler {\mxscpsgnqp} } } */
+ *p++ = BUILTIN2 (copysignl, *q++, *r++);
+
+ /* { dg-final { scan-assembler {\mbl __remainderieee128} } } */
+ *p++ = BUILTIN2 (dreml, *q++, *r++);
+
+ /* { dg-final { scan-assembler {\mbl __fdimieee128} } } */
+ *p++ = BUILTIN2 (fdiml, *q++, *r++);
+
+ /* { dg-final { scan-assembler {\mbl __fmaxieee128} } } */
+ *p++ = BUILTIN2 (fmaxl, *q++, *r++);
+
+ /* { dg-final { scan-assembler {\mbl __fminieee128} } } */
+ *p++ = BUILTIN2 (fminl, *q++, *r++);
+
+ /* { dg-final { scan-assembler {\mbl __fmodieee128} } } */
+ *p++ = BUILTIN2 (fmodl, *q++, *r++);
+
+ /* { dg-final { scan-assembler {\mbl __hypotieee128} } } */
+ *p++ = BUILTIN2 (hypotl, *q++, *r++);
+
+ /* { dg-final { scan-assembler {\mbl __nextafterieee128} } } */
+ *p++ = BUILTIN2 (nextafterl, *q++, *r++);
+
+ /* { dg-final { scan-assembler {\mbl __nexttowardieee128} } } */
+ *p++ = BUILTIN2 (nexttowardl, *q++, *r++);
+
+ /* { dg-final { scan-assembler {\mbl __powieee128} } } */
+ *p++ = BUILTIN2 (powl, *q++, *r++);
+
+ /* { dg-final { scan-assembler {\mbl __scalbnieee128} } } */
+ *p = BUILTIN2 (scalbl, *q, *r);
+}
+
+/* Built-in function that returns a long double and take three long double
+ arguments. */
+
+void
+return_ld_arg_ld_ld_ld (long double *p,
+ long double *q,
+ long double *r,
+ long double *s)
+{
+ /* inline code. */
+ /* { dg-final { scan-assembler {\mxsmaddqp} } } */
+ *p = BUILTIN3 (fmal, *q, *r, *s);
+}
+
+/* Built-in functions that returns a long double and take one
+ _Complex long double argument. */
+
+void
+return_ld_arg_cld (long double *p,
+ _Complex long double *q)
+{
+ /* { dg-final { scan-assembler {\mbl __cabsieee128} } } */
+ *p++ = BUILTIN1 (cabsl, *q++);
+}
+
+/* Built-in functions that returns a _Complex long double and takes one
+ _Complex long double argument. */
+
+void
+return_cld_arg_cld (_Complex long double *p,
+ _Complex long double *q)
+{
+ /* { dg-final { scan-assembler {\mbl __cacoshieee128} } } */
+ *p++ = BUILTIN1 (cacoshl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __cacosieee128} } } */
+ *p++ = BUILTIN1 (cacosl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __casinhieee128} } } */
+ *p++ = BUILTIN1 (casinhl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __casinieee128} } } */
+ *p++ = BUILTIN1 (casinl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __catanhieee128} } } */
+ *p++ = BUILTIN1 (catanhl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __catanieee128} } } */
+ *p++ = BUILTIN1 (catanl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __ccoshieee128} } } */
+ *p++ = BUILTIN1 (ccoshl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __ccosieee128} } } */
+ *p++ = BUILTIN1 (ccosl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __cexpieee128} } } */
+ *p++ = BUILTIN1 (cexpl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __clogieee128} } } */
+ *p++ = BUILTIN1 (clogl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __clog10ieee128} } } */
+ *p++ = BUILTIN1 (clog10l, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __cprojieee128} } } */
+ *p++ = BUILTIN1 (cprojl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __csinhieee128} } } */
+ *p++ = BUILTIN1 (csinhl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __csinieee128} } } */
+ *p++ = BUILTIN1 (csinl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __csqrtieee128} } } */
+ *p++ = BUILTIN1 (csqrtl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __ctanhieee128} } } */
+ *p++ = BUILTIN1 (ctanhl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __ctanieee128} } } */
+ *p = BUILTIN1 (ctanl, *q);
+}
+
+/* Built-in functions that returns a _Complex long double and takes one
+ long double argument. */
+
+void
+return_cld_arg_ld (_Complex long double *p,
+ long double *q)
+{
+ /* { dg-final { scan-assembler {\mbl __sincosieee128} } } */
+ *p = BUILTIN1 (cexpil, *q);
+}
+
+/* Built-in function that returns a _Complex long double and takes two
+ _Complex long double arguments. */
+
+void
+return_cld_arg_cld_cld (_Complex long double *p,
+ _Complex long double *q,
+ _Complex long double *r)
+{
+ /* { dg-final { scan-assembler {\mbl __cpowieee128} } } */
+ *p = BUILTIN2 (cpowl, *q, *r);
+}
+
+/* Built-in functions that returns a long double and takes a long double and a
+ pointer to an int arguments. */
+
+void
+return_ld_arg_ld_pi (long double *p,
+ long double *q,
+ int **r)
+{
+ /* { dg-final { scan-assembler {\mbl __frexpieee128} } } */
+ *p++ = BUILTIN2 (frexpl, *q++, *r++);
+
+ /* { dg-final { scan-assembler {\mbl __lgammaieee128_r} } } */
+ *p++ = BUILTIN2 (gammal_r, *q++, *r++);
+}
+
+/* Built-in functions that returns a long double and takes a long double and an
+ int arguments. */
+
+void
+return_ld_arg_ld_i (long double *p,
+ long double *q,
+ int *r)
+{
+ /* { dg-final { scan-assembler {\mbl __ldexpieee128} } } */
+ *p++ = BUILTIN2 (ldexpl, *q++, *r++);
+
+ /* { dg-final { scan-assembler {\mbl __powikf2} } } */
+ *p++ = BUILTIN2 (powil, *q++, *r++);
+
+ /* { dg-final { scan-assembler {\mbl __scalbnieee128} } } */
+ *p = BUILTIN2 (scalbnl, *q, *r);
+}
+
+/* Built-in function that returns a long double and takes a long double and a
+ long arguments. */
+
+void
+return_ld_arg_ld_l (long double *p,
+ long double *q,
+ long *r)
+{
+ /* { dg-final { scan-assembler {\mbl __scalblnieee128} } } */
+ *p = BUILTIN2 (scalblnl, *q, *r);
+}
+
+/* Built-in functions that returns a long double and takes a long double and a
+ long long arguments. */
+
+void
+return_ld_arg_i_ld (long double *p,
+ int *q,
+ long double *r)
+{
+ /* { dg-final { scan-assembler {\mbl __jnieee128} } } */
+ *p++ = BUILTIN2 (jnl, *q++, *r++);
+
+ /* { dg-final { scan-assembler {\mbl __ynieee128} } } */
+ *p = BUILTIN2 (ynl, *q, *r);
+}
+
+/* Built-in functions that returns a long double and takes a long double and a
+ pointer to a long double arguments. */
+
+void
+return_ld_arg_ld_pld (long double *p,
+ long double *q,
+ long double **r)
+{
+ /* { dg-final { scan-assembler {\mbl __modfieee128} } } */
+ *p = BUILTIN2 (modfl, *q, *r);
+}
+
+/* Built-in function that returns a long double and takes two long double and a
+ pointer to an int arguments. */
+
+void
+return_ld_arg_ld_ld_pi (long double *p,
+ long double *q,
+ long double *r,
+ int **s)
+{
+ /* { dg-final { scan-assembler {\mbl __remquoieee128} } } */
+ *p = BUILTIN3 (remquol, *q, *r, *s);
+}
+
+/* Built-in functions that return san int and takes one long double argument. */
+
+void
+return_i_arg_ld (int *p,
+ long double *q)
+{
+ /* { dg-final { scan-assembler {\mbl __ceilieee128} } } */
+ *p++ = BUILTIN1 (iceill, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __floorieee128} } } */
+ *p++ = BUILTIN1 (ifloorl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __ilogbieee128} } } */
+ *p++ = BUILTIN1 (ilogbl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __lrintieee128} } } */
+ *p++ = BUILTIN1 (irintl, *q++);
+
+ /* { dg-final { scan-assembler {\mbl __lroundieee128} } } */
+ *p++ = BUILTIN1 (iroundl, *q++);
+
+ /* inline code. */
+ /* { dg-final { scan-assembler {\mxscvqpswz} } } */
+ *p++ = BUILTIN1 (signbitl, *q++);
+}
+
+/* Built-in function that returns a double and takes one double and one long
+ double arguments. */
+
+void
+return_d_arg_d_ld (double *p,
+ double *q,
+ long double *r)
+{
+ /* { dg-final { scan-assembler {\mbl __nexttoward_to_ieee128} } } */
+ *p = BUILTIN2 (nexttoward, *q, *r);
+}
+
+/* Built-in function that returns a float and takes one float and one long
+ double arguments. */
+
+void
+return_f_arg_f_ld (float *p,
+ float *q,
+ long double *r)
+{
+ /* { dg-final { scan-assembler {\mbl __nexttowardf_to_ieee128} } } */
+ *p = BUILTIN2 (nexttowardf, *q, *r);
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/float128-longdouble-stdio.c b/gcc/testsuite/gcc.target/powerpc/float128-longdouble-stdio.c
new file mode 100644
index 0000000..39e59d9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/float128-longdouble-stdio.c
@@ -0,0 +1,36 @@
+/* { dg-require-effective-target ppc_float128_hw } */
+/* { dg-options "-mdejagnu-cpu=power9 -O2 -mlong-double-128 -Wno-psabi -mabi=ieeelongdouble" } */
+
+/* Test if switching long double to IEEE 128-bit maps the printf and scanf
+ function names correctly. We leave off the \M in matching the calls, so
+ power10 will match using bl foo@notoc. */
+
+#include <stdlib.h>
+
+volatile long double x = 1.0L;
+volatile long double y, z;
+
+int
+main (void)
+{
+ char buffer[100];
+
+ /* { dg-final { scan-assembler {\mbl __sprintfieee128} } } */
+ __builtin_sprintf (buffer, "%Lg", x);
+
+ /* { dg-final { scan-assembler {\mbl __printfieee128} } } */
+ __builtin_printf ("x is %Lg [%s]\n", x, buffer);
+
+ /* { dg-final { scan-assembler {\mbl __isoc99_sscanfieee128} } } */
+ __builtin_sscanf (buffer, "%Lg", &y);
+
+ __builtin_printf ("Type 1.0: ");
+
+ /* { dg-final { scan-assembler {\mbl __isoc99_scanfieee128} } } */
+ __builtin_scanf ("%Lg", &z);
+
+ if (x != y || x != z)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/float128-math.c b/gcc/testsuite/gcc.target/powerpc/float128-math.c
index 4ad3b5b..d1e2223 100644
--- a/gcc/testsuite/gcc.target/powerpc/float128-math.c
+++ b/gcc/testsuite/gcc.target/powerpc/float128-math.c
@@ -1,20 +1,20 @@
-/* { dg-do compile { target { powerpc*-*-linux* } } } */
/* { dg-require-effective-target ppc_float128_sw } */
/* { dg-require-effective-target vsx_hw } */
-/* { dg-options "-mvsx -O2 -mfloat128 -mabi=ieeelongdouble -Wno-psabi" } */
+/* { dg-options "-mvsx -O2 -mfloat128 -mlong-double-128 -mabi=ieeelongdouble -Wno-psabi" } */
/* Test whether we convert __builtin_<math>l to __builtin_<math>f128 if the
- default long double type is IEEE 128-bit. Also test that using the explicit
- __builtin_<math>f128 function does not interfere with the __builtin_<math>l
- function. */
+ default long double type is IEEE 128-bit. We leave off the \M in matching
+ the calls, so power10 will match using bl foo@notoc. Also test that using
+ the explicit __builtin_<math>f128 function does not interfere with the
+ __builtin_<math>l function. */
extern __float128 sinf128 (__float128);
-void foo (__float128 *p, long double *q, long double *r)
+void foo (__float128 *p, long double *q)
{
*p = sinf128 (*p);
*q = __builtin_sinl (*q);
}
-/* { dg-final { scan-assembler-times {\mbl sinf128\M} 2 } } */
-/* { dg-final { scan-assembler-not {\mbl sinl\M} } } */
+/* { dg-final { scan-assembler {\mbl __sinieee128} } } */
+/* { dg-final { scan-assembler-not {\mbl sinl} } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-char.p7.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-char.p7.c
index 42599c2..29a8aa8 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-char.p7.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-char.p7.c
@@ -11,7 +11,7 @@
/* one extsb (extend sign-bit) instruction generated for each test against
unsigned types */
-/* { dg-final { scan-assembler-times {\maddi\M} 6 } } */
+/* { dg-final { scan-assembler-times {\maddi\M} 9 } } */
/* { dg-final { scan-assembler-times {\mli\M} 6 } } */
/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstvx\M|\mstxv\M} 6 } } */
/* -m32 target uses rlwinm in place of rldicl. */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p7.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p7.c
index cbf6cff..3cae644 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p7.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p7.c
@@ -13,7 +13,8 @@
/* { dg-final { scan-assembler-times {\mxxpermdi\M} 1 } } */
/* { dg-final { scan-assembler-times {\mli\M} 1 } } */
/* -m32 target has an 'add' in place of one of the 'addi'. */
-/* { dg-final { scan-assembler-times {\maddi\M|\madd\M} 2 } } */
+/* { dg-final { scan-assembler-times {\maddi\M|\madd\M} 2 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\maddi\M|\madd\M} 3 { target ilp32 } } } */
/* -m32 target has a rlwinm in place of a rldic . */
/* { dg-final { scan-assembler-times {\mrldic\M|\mrlwinm\M} 1 } } */
/* { dg-final { scan-assembler-times {\mstxvd2x\M} 1 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p7.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p7.c
index c9abb6c..59a4979 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p7.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p7.c
@@ -12,7 +12,8 @@
/* { dg-final { scan-assembler-times {\mxscvspdp\M} 1 } } */
/* { dg-final { scan-assembler-times {\mli\M} 1 } } */
/* -m32 as an add in place of an addi. */
-/* { dg-final { scan-assembler-times {\maddi\M|\madd\M} 2 } } */
+/* { dg-final { scan-assembler-times {\maddi\M|\madd\M} 2 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\maddi\M|\madd\M} 3 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstvx\M|\mstxv\M} 1 } } */
/* -m32 uses rlwinm in place of rldic */
/* { dg-final { scan-assembler-times {\mrldic\M|\mrlwinm\M} 1 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p8.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p8.c
index 68eeeed..4b1d75e 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p8.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p8.c
@@ -26,7 +26,7 @@
/* { dg-final { scan-assembler-times {\mstxvd2x\M} 1 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\madd\M} 1 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mlfs\M} 1 { target ilp32 } } } */
-/* { dg-final { scan-assembler-times {\maddi\M} 1 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\maddi\M} 2 { target ilp32 } } } */
#include <altivec.h>
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-int.p7.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-int.p7.c
index 418762e..3729a16 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-int.p7.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-int.p7.c
@@ -10,7 +10,8 @@
// P7 variables: li, addi, stxvw4x, lwa/lwz
/* { dg-final { scan-assembler-times {\mli\M} 6 } } */
-/* { dg-final { scan-assembler-times {\maddi\M|\madd\M} 9 } } */
+/* { dg-final { scan-assembler-times {\maddi\M|\madd\M} 9 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\maddi\M|\madd\M} 12 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstvx\M|\mstxv\M} 6 } } */
/* { dg-final { scan-assembler-times {\mrldic\M|\mrlwinm\M} 3 } } */
/* { dg-final { scan-assembler-times {\mlwz\M|\mlwa\M|\mlwzx\M|\mlwax\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-int.p8.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-int.p8.c
index d1e3b62..75eaf25 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-int.p8.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-int.p8.c
@@ -30,7 +30,7 @@
/* { dg-final { scan-assembler-times {\mstxvw4x\M} 6 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\madd\M} 3 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mlwz\M} 6 { target ilp32 } } } */
-/* { dg-final { scan-assembler-times {\maddi\M} 6 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\maddi\M} 9 { target ilp32 } } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-short.p7.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-short.p7.c
index 46e943f..a495d9f 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-short.p7.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-short.p7.c
@@ -10,7 +10,8 @@
// P7 (be) constants: li, addi, stxvw4x, lha/lhz
/* { dg-final { scan-assembler-times {\mli\M} 6 } } */
-/* { dg-final { scan-assembler-times {\maddi\M|\madd\M} 9 } } */
+/* { dg-final { scan-assembler-times {\maddi\M|\madd\M} 9 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\maddi\M|\madd\M} 12 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mrldic\M|\mrlwinm\M} 3 } } */
/* { dg-final { scan-assembler-times {\mstxvw4x\M|\mstvx\M} 6 } } */
/* { dg-final { scan-assembler-times "lhz|lha|lhzx|lhax" 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-short.p8.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-short.p8.c
index 00685ac..0ddecb4 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-short.p8.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-extract-short.p8.c
@@ -32,7 +32,7 @@
/* add and rlwinm instructions only on the variable tests. */
/* { dg-final { scan-assembler-times {\madd\M} 3 { target ilp32 } } } */
/* { dg-final { scan-assembler-times "rlwinm" 3 { target ilp32 } } } */
-/* { dg-final { scan-assembler-times {\maddi\M} 6 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\maddi\M} 9 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mlha\M|\mlhz\M} 6 { target ilp32 } } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-char-p8.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-char-p8.c
index 39fd4df..4149d52 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-char-p8.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-char-p8.c
@@ -44,15 +44,22 @@ vector unsigned char testuu_cst (unsigned char x, vector unsigned char v)
return vec_insert (x, v, 12);
}
-/* one store per _var test */
-/* { dg-final { scan-assembler-times {\mstvx\M|\mstxvw4x\M} 4 } } */
+/* no store per _var test */
+/* { dg-final { scan-assembler-times {\mstvx\M|\mstxvw4x\M} 0 { target lp64 } } } */
/* one store-byte per test */
-/* { dg-final { scan-assembler-times {\mstb\M} 8 } } */
+/* { dg-final { scan-assembler-times {\mstb\M} 4 { target lp64 } } } */
/* one load per test */
-/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvw4x\M} 8 } } */
+/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvw4x\M} 8 { target le } } } */
+/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvw4x\M} 4 { target { be && lp64 } } } } */
/* one lvebx per _cst test.*/
/* { dg-final { scan-assembler-times {\mlvebx\M} 4 } } */
/* one vperm per _cst test.*/
-/* { dg-final { scan-assembler-times {\mvperm\M} 4 } } */
+/* { dg-final { scan-assembler-times {\mvperm\M} 12 { target lp64 } } } */
+
+/* -m32 codegen. */
+/* { dg-final { scan-assembler-times {\mstvx\M|\mstxvw4x\M} 4 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mstb\M} 8 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvw4x\M} 8 { target { be && ilp32 } } } } */
+/* { dg-final { scan-assembler-times {\mvperm\M} 4 { target ilp32 } } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-char-p9.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-char-p9.c
index ae1daad..b8e751f 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-char-p9.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-char-p9.c
@@ -44,19 +44,18 @@ vector unsigned char testuu_cst (unsigned char x, vector unsigned char v)
return vec_insert (x, v, 12);
}
-/* load immediate, add, store, stb, load variable test. */
-/* { dg-final { scan-assembler-times {\mstxv\M|\mstvx\M} 4 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {\mstb\M} 4 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {\mlvebx\M|\mlxv\M|\mlvx\M} 4 { target lp64} } } */
+/* no store per _var test. */
+/* { dg-final { scan-assembler-times {\mstxv\M|\mstvx\M} 0 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mstb\M} 0 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mlvebx\M|\mlxv\M|\mlvx\M} 0 { target lp64} } } */
/* an insert and a move per constant test. */
-/* { dg-final { scan-assembler-times {\mmtvsrwz\M} 4 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {\mvinsertb\M} 4 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mmtvsrwz\M} 8 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mvinsertb\M} 8 { target lp64 } } } */
/* -m32 codegen. */
/* { dg-final { scan-assembler-times {\mrlwinm\M} 4 { target ilp32 } } } */
-/* { dg-final { scan-assembler-times {\madd\M} 4 { target ilp32 } } } */
-/* { dg-final { scan-assembler-times {\mstxv\M} 4 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mstb\M} 8 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mlxv\M} 8 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mlvebx\M} 4 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mvperm\M} 4 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mxxperm\M} 0 { target ilp32 } } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-double.c
index 120579c..1286010 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-double.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-double.c
@@ -23,7 +23,16 @@ testd_cst (double d, vector double vd)
/* { dg-final { scan-assembler {\mxxpermdi\M} } } */
/* { dg-final { scan-assembler-times {\mrldic\M|\mrlwinm\M} 1 } } */
-/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxv\M|\mstvx\M} 1 } } */
-/* { dg-final { scan-assembler-times {\mstfdx\M|\mstfd\M} 1 } } */
-/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M|\mlvx\M} 1 } } */
+
+/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxv\M|\mstvx\M} 1 { target { ! has_arch_pwr8 } } } } */
+/* { dg-final { scan-assembler-times {\mstfdx\M|\mstfd\M} 1 { target { ! has_arch_pwr8 } } } } */
+/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M|\mlvx\M} 1 { target { ! has_arch_pwr8 } } } } */
+
+/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxv\M|\mstvx\M} 0 { target { has_arch_pwr8 && lp64 } } } } */
+/* { dg-final { scan-assembler-times {\mstfdx\M|\mstfd\M} 0 { target { has_arch_pwr8 && lp64 } } } } */
+
+/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M|\mlvx\M} 0 { target { has_arch_pwr8 && lp64 } } } } */
+/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M|\mlvx\M} 1 { target { has_arch_pwr8 && ilp32 } } } } */
+/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxv\M|\mstvx\M} 1 { target { has_arch_pwr8 && ilp32 } } } } */
+/* { dg-final { scan-assembler-times {\mstfdx\M|\mstfd\M} 1 { target { has_arch_pwr8 && ilp32 } } } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-float-p8.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-float-p8.c
index 76039bc..e458d8f 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-float-p8.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-float-p8.c
@@ -19,12 +19,18 @@ testf_cst (float f, vector float vf)
return vec_insert (f, vf, 12);
}
-/* { dg-final { scan-assembler-times {\mstvx\M|\mstxv\M|\mstxvd2x\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mstvx\M|\mstxv\M|\mstxvd2x\M} 0 { target lp64 } } } */
/* cst tests has stfs instead of stfsx. */
-/* { dg-final { scan-assembler-times {\mstfs\M|\mstfsx\M} 2 } } */
+/* { dg-final { scan-assembler-times {\mstfs\M|\mstfsx\M} 1 { target lp64 } } } */
/* { dg-final { scan-assembler-times {\mlvx\M|\mlxv\M|\mlxvd2x\M|\mlxvw4x\M} 2 } } */
/* cst test has a lvewx,vperm combo */
/* { dg-final { scan-assembler-times {\mlvewx\M} 1 } } */
-/* { dg-final { scan-assembler-times {\mvperm\M} 1 } } */
+/* { dg-final { scan-assembler-times {\mvperm\M} 3 { target lp64 } } } */
+
+/* -m32 codegen. */
+/* { dg-final { scan-assembler-times {\mstvx\M|\mstxv\M|\mstxvd2x\M} 1 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mstfs\M|\mstfsx\M} 2 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mvperm\M} 1 { target ilp32 } } } */
+
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-float-p9.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-float-p9.c
index 3819fe6..9684c9f 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-float-p9.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-float-p9.c
@@ -20,15 +20,16 @@ testf_cst (float f, vector float vf)
}
/* var test has a load and store. */
-/* { dg-final { scan-assembler-times {\mlxv\M|\mlvx\M} 1 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {\mstfsx\M} 1 { target lp64} } } */
+/* { dg-final { scan-assembler-times {\mlxv\M|\mlvx\M} 0 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mstfsx\M} 0 { target lp64} } } */
/* cst test have a xscvdpspn,xxextractuw,xxinsertw combo */
-/* { dg-final { scan-assembler-times {\mxscvdpspn\M} 1 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {\mxxextractuw\M} 1 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {\mxxinsertw\M} 1 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mxscvdpspn\M} 2 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mxxextractuw\M} 2 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mxxinsertw\M} 2 { target lp64 } } } */
/* { dg-final { scan-assembler-times {\mstfs\M} 2 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mlxv\M} 2 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mlvewx\M} 1 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mvperm\M} 1 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mxxperm\M} 0 { target ilp32 } } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-int-p8.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-int-p8.c
index 0f2bdd7..d5fa422c 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-int-p8.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-int-p8.c
@@ -49,9 +49,15 @@ testui2_cst(unsigned int x, vector unsigned int v)
}
/* Each test has lvx (8). cst tests have additional lvewx. (4) */
-/* var tests have both stwx (4) and stvx (4). cst tests have stw (4).*/
-/* { dg-final { scan-assembler-times {\mstvx\M|\mstwx\M|\mstw\M|\mstxvw4x\M} 12 } } */
-/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvw4x\M} 8 } } */
+/* var tests have no stwx and stvx. cst tests have stw (4).*/
+/* { dg-final { scan-assembler-times {\mstvx\M|\mstwx\M|\mstw\M|\mstxvw4x\M} 4 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvw4x\M} 8 { target le } } } */
+/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvw4x\M} 4 { target { be && lp64 } } } } */
-/* { dg-final { scan-assembler-times {\mlvewx\M} 4 } } */
-/* { dg-final { scan-assembler-times {\mvperm\M} 4 } } */
+/* { dg-final { scan-assembler-times {\mlvewx\M} 4 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mvperm\M} 12 { target lp64 } } } */
+
+/* { dg-final { scan-assembler-times {\mvperm\M} 4 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mstvx\M|\mstwx\M|\mstw\M|\mstxvw4x\M} 12 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvw4x\M} 8 { target { be && ilp32 } } } } */
+/* { dg-final { scan-assembler-times {\mlvewx\M} 4 { target ilp32 } } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-int-p9.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-int-p9.c
index a851fd6..5cd6b3e 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-int-p9.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-int-p9.c
@@ -49,16 +49,17 @@ testui2_cst(unsigned int x, vector unsigned int v)
}
-/* load immediate, add, store, stb, load variable test. */
-/* { dg-final { scan-assembler-times {\mstxv\M|\mstvx\M} 4 } } */
-/* { dg-final { scan-assembler-times {\mstwx\M} 4 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {\mlxv\M|\mlvx\M} 4 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mstxv\M|\mstvx\M} 0 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mstwx\M} 0 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mlxv\M|\mlvx\M} 0 { target lp64 } } } */
/* an insert and a move per constant test. */
-/* { dg-final { scan-assembler-times {\mmtvsrwz\M} 4 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {\mxxinsertw\M} 4 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mmtvsrwz\M} 8 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mxxinsertw\M} 8 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mstxv\M|\mstvx\M} 4 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mstw\M} 8 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mlxv\M} 8 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mlvewx\M} 4 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mvperm\M} 4 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mxxperm\M} 0 { target ilp32 } } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-longlong.c
index e969898..0a0ee31 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-longlong.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-longlong.c
@@ -60,13 +60,11 @@ testul2_cst(unsigned long long x, vector unsigned long long v)
/* { dg-final { scan-assembler-times {\mrldic\M|\mrlwinm\M} 4 } } */
-/* The number of addi instructions decreases on newer systems. Measured as 8 on
- power7 and power8 targets, and drops to 4 on power9 targets that use the
- newer stxv,lxv instructions. For this test ensure we get at least one. */
-/* { dg-final { scan-assembler {\maddi\M} } } */
-/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstvx\M|\mstxv\M} 4 } } */
-/* { dg-final { scan-assembler-times {\mstdx\M} 4 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {\mstw\M} 8 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstvx\M|\mstxv\M} 0 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mstdx\M} 0 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M|\mlvx\M} 4 } } */
+/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M|\mlvx\M} 0 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstvx\M|\mstxv\M} 4 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mvperm\M} 0 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M|\mlvx\M} 4 { target ilp32 } } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-short-p8.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-short-p8.c
index 0a73db7..a479d98 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-short-p8.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-short-p8.c
@@ -48,10 +48,15 @@ testus2_cst(unsigned short x, vector unsigned short v)
return vec_insert(x, v, 12);
}
-/* { dg-final { scan-assembler-times {\mlhz\M|\mlvx\M|\mlxv\M|\mlxvw4x\M} 8 } } */
-/* stores.. 2 each per variable tests, 1 each per cst test. */
-/* { dg-final { scan-assembler-times {\msthx\M|\mstvx\M|\msth\M|\mstxvw4x\M} 12 } } */
+/* { dg-final { scan-assembler-times {\mlhz\M|\mlvx\M|\mlxv\M|\mlxvw4x\M} 8 { target le } } } */
+/* { dg-final { scan-assembler-times {\mlhz\M|\mlvx\M|\mlxv\M|\mlxvw4x\M} 4 { target { be && lp64 } } } } */
+/* stores.. 0 per variable tests, 1 each per cst test. */
+/* { dg-final { scan-assembler-times {\msthx\M|\mstvx\M|\msth\M|\mstxvw4x\M} 4 { target lp64 } } } */
/* { dg-final { scan-assembler-times {\mlvehx\M} 4 } } */
-/* { dg-final { scan-assembler-times {\mvperm\M} 4 } } */
+/* { dg-final { scan-assembler-times {\mvperm\M} 12 { target lp64 } } } */
+
+/* { dg-final { scan-assembler-times {\mlhz\M|\mlvx\M|\mlxv\M|\mlxvw4x\M} 8 { target { be && ilp32 } } } } */
+/* { dg-final { scan-assembler-times {\msthx\M|\mstvx\M|\msth\M|\mstxvw4x\M} 12 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mvperm\M} 4 { target ilp32 } } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-short-p9.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-short-p9.c
index 0f35042..cea7488b 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-short-p9.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-insert-short-p9.c
@@ -48,14 +48,17 @@ testus2_cst(unsigned short x, vector unsigned short v)
return vec_insert(x, v, 12);
}
-/* { dg-final { scan-assembler-times {\mmtvsrwz\M} 4 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {\mvinserth\M} 4 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mmtvsrwz\M} 8 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mvinserth\M} 8 { target lp64 } } } */
-/* { dg-final { scan-assembler-times {\mstxv\M|\mstvx\M} 4 } } */
-/* { dg-final { scan-assembler-times {\mlxv\M|\mlvx\M} 4 { target lp64 }} } */
+/* { dg-final { scan-assembler-times {\mstxv\M|\mstvx\M} 0 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mlxv\M|\mlvx\M} 0 { target lp64 }} } */
/* -m32 uses sth/lvehx as part of the sequence. */
-/* { dg-final { scan-assembler-times {\msth\M} 8 { target ilp32 }} } */
-/* { dg-final { scan-assembler-times {\mlvehx\M} 4 { target ilp32 }} } */
-/* { dg-final { scan-assembler-times {\mlxv\M|\mlvx\M} 8 { target ilp32 }} } */
+/* { dg-final { scan-assembler-times {\mstxv\M|\mstvx\M} 4 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\msth\M} 8 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mlvehx\M} 4 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mvperm\M} 4 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mxxperm\M} 0 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mlxv\M|\mlvx\M} 8 { target ilp32 } } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-char.c
index 7406039..713fed7 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-char.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-char.c
@@ -120,6 +120,6 @@ test6_nor (vector unsigned char x, vector unsigned char y)
return *foo;
}
-/* { dg-final { scan-assembler-times {\mxxlor\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mxxlor\M} 7 } } */
/* { dg-final { scan-assembler-times {\mxxlxor\M} 6 } } */
-/* { dg-final { scan-assembler-times {\mxxlnor\M} 2 } } */
+/* { dg-final { scan-assembler-times {\mxxlnor\M} 1 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-int.c
index a7c6366..4d1c78f 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-int.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-int.c
@@ -119,6 +119,6 @@ test6_nor (vector unsigned int x, vector unsigned int y)
return *foo;
}
-/* { dg-final { scan-assembler-times {\mxxlor\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mxxlor\M} 7 } } */
/* { dg-final { scan-assembler-times {\mxxlxor\M} 6 } } */
-/* { dg-final { scan-assembler-times {\mxxlnor\M} 2 } } */
+/* { dg-final { scan-assembler-times {\mxxlnor\M} 1 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-longlong.c
index 10c69d3..27ef09a 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-longlong.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-longlong.c
@@ -156,6 +156,6 @@ test6_nor (vector unsigned long long x, vector unsigned long long y)
// For simplicity, this test now only targets "powerpc_p8vector_ok" environments
// where the answer is expected to be 6.
-/* { dg-final { scan-assembler-times {\mxxlor\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mxxlor\M} 9 } } */
/* { dg-final { scan-assembler-times {\mxxlxor\M} 6 } } */
-/* { dg-final { scan-assembler-times {\mxxlnor\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mxxlnor\M} 3 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-short.c
index 8352a7f..f796c5b3 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-short.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-ors-short.c
@@ -119,6 +119,6 @@ test6_nor (vector unsigned short x, vector unsigned short y)
return *foo;
}
-/* { dg-final { scan-assembler-times {\mxxlor\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mxxlor\M} 7 } } */
/* { dg-final { scan-assembler-times {\mxxlxor\M} 6 } } */
-/* { dg-final { scan-assembler-times {\mxxlnor\M} 2 } } */
+/* { dg-final { scan-assembler-times {\mxxlnor\M} 1 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-char.c
index 7fe3e0b..e74308c 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-char.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-char.c
@@ -104,5 +104,5 @@ test6_nand (vector unsigned char x, vector unsigned char y)
return *foo;
}
-/* { dg-final { scan-assembler-times {\mxxlnand\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mxxlnand\M} 3 } } */
/* { dg-final { scan-assembler-times {\mxxlorc\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-int.c
index 61d3405..57edaad 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-int.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-int.c
@@ -104,5 +104,5 @@ test6_nand (vector unsigned int x, vector unsigned int y)
return *foo;
}
-/* { dg-final { scan-assembler-times {\mxxlnand\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mxxlnand\M} 3 } } */
/* { dg-final { scan-assembler-times {\mxxlorc\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-longlong.c
index 8e14927..d4b8579 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-longlong.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-longlong.c
@@ -102,5 +102,5 @@ test6_nand (vector unsigned long long x, vector unsigned long long y)
return *foo;
}
+/* { dg-final { scan-assembler-times {\mxxlnand\M} 3 } } */
/* { dg-final { scan-assembler-times {\mxxlorc\M} 6 } } */
-/* { dg-final { scan-assembler-times {\mxxlnand\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-short.c
index cc354b9..bf98652 100644
--- a/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-short.c
+++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-logical-other-short.c
@@ -104,5 +104,5 @@ test6_nand (vector unsigned short x, vector unsigned short y)
return *foo;
}
-/* { dg-final { scan-assembler-times {\mxxlnand\M} 6 } } */
+/* { dg-final { scan-assembler-times {\mxxlnand\M} 3 } } */
/* { dg-final { scan-assembler-times {\mxxlorc\M} 6 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/m128-check.h b/gcc/testsuite/gcc.target/powerpc/m128-check.h
index fcb631a..a3088e0 100644
--- a/gcc/testsuite/gcc.target/powerpc/m128-check.h
+++ b/gcc/testsuite/gcc.target/powerpc/m128-check.h
@@ -83,10 +83,10 @@ typedef union
#define PRINTF(...)
#endif
-#define CHECK_EXP(UINON_TYPE, VALUE_TYPE, FMT) \
+#define CHECK_EXP(UNION_TYPE, VALUE_TYPE, FMT) \
static int \
__attribute__((noinline, unused)) \
-check_##UINON_TYPE (UINON_TYPE u, const VALUE_TYPE *v) \
+check_##UNION_TYPE (UNION_TYPE u, const VALUE_TYPE *v) \
{ \
int i; \
int err = 0; \
@@ -197,10 +197,10 @@ union ieee754_double
};
#endif
-#define CHECK_FP_EXP(UINON_TYPE, VALUE_TYPE, ESP, FMT) \
+#define CHECK_FP_EXP(UNION_TYPE, VALUE_TYPE, ESP, FMT) \
static int \
__attribute__((noinline, unused)) \
-check_fp_##UINON_TYPE (UINON_TYPE u, const VALUE_TYPE *v) \
+check_fp_##UNION_TYPE (UNION_TYPE u, const VALUE_TYPE *v) \
{ \
int i; \
int err = 0; \
diff --git a/gcc/testsuite/gcc.target/powerpc/powerpc.exp b/gcc/testsuite/gcc.target/powerpc/powerpc.exp
index 5c7fcc7..4b7441e 100644
--- a/gcc/testsuite/gcc.target/powerpc/powerpc.exp
+++ b/gcc/testsuite/gcc.target/powerpc/powerpc.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2020 Free Software Foundation, Inc.
+# Copyright (C) 2005-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ieee128-math.f90 b/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ieee128-math.f90
index d74c8d7..0668549 100644
--- a/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ieee128-math.f90
+++ b/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ieee128-math.f90
@@ -17,4 +17,4 @@ program test_qp
end
! { dg-final { scan-assembler-not {\mbl logl\M} } }
-! { dg-final { scan-assembler {\mbl logf128\M} } }
+! { dg-final { scan-assembler {\mbl __logieee128\M} } }
diff --git a/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp b/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp
index 89a4da5..0668981 100644
--- a/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp
+++ b/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/powerpc/pr79251-run.p8.c b/gcc/testsuite/gcc.target/powerpc/pr79251-run.p8.c
new file mode 100644
index 0000000..47d4d28
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr79251-run.p8.c
@@ -0,0 +1,14 @@
+/* { dg-do run } */
+/* { dg-require-effective-target p8vector_hw } */
+/* { dg-options "-O2 -mvsx -mdejagnu-cpu=power8" } */
+
+#include <stddef.h>
+#include <altivec.h>
+#include "pr79251.h"
+
+int
+main (void)
+{
+ TEST_VEC_INSERT_ALL (run_test)
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/pr79251-run.p9.c b/gcc/testsuite/gcc.target/powerpc/pr79251-run.p9.c
new file mode 100644
index 0000000..fd56b23
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr79251-run.p9.c
@@ -0,0 +1,14 @@
+/* { dg-do run } */
+/* { dg-require-effective-target p9vector_hw } */
+/* { dg-options "-O2 -mvsx -mdejagnu-cpu=power9" } */
+
+#include <stddef.h>
+#include <altivec.h>
+#include "pr79251.h"
+
+int
+main (void)
+{
+ TEST_VEC_INSERT_ALL (run_test)
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/pr79251.h b/gcc/testsuite/gcc.target/powerpc/pr79251.h
new file mode 100644
index 0000000..2684b66
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr79251.h
@@ -0,0 +1,36 @@
+
+#define test(TYPE, num) \
+ __attribute__ ((noinline, noclone)) \
+ vector TYPE test##num (vector TYPE v, TYPE i, signed int n) \
+ { \
+ return vec_insert (i, v, n); \
+ }
+
+#define TEST_VEC_INSERT_ALL(T) \
+ T (char, 0) \
+ T (unsigned char, 1) \
+ T (short, 2) \
+ T (unsigned short, 3) \
+ T (int, 4) \
+ T (unsigned int, 5) \
+ T (long long, 6) \
+ T (unsigned long long, 7) \
+ T (float, 8) \
+ T (double, 9)
+
+TEST_VEC_INSERT_ALL (test)
+
+#define run_test(TYPE, num) \
+ { \
+ vector TYPE v; \
+ vector TYPE u = {0x0}; \
+ for (long k = 0; k < 16 / sizeof (TYPE); k++) \
+ v[k] = 0xaa; \
+ for (long k = 0; k < 16 / sizeof (TYPE); k++) \
+ { \
+ u = test##num (v, 254, k); \
+ if (u[k] != (TYPE) 254) \
+ __builtin_abort (); \
+ } \
+ }
+
diff --git a/gcc/testsuite/gcc.target/powerpc/pr79251.p8.c b/gcc/testsuite/gcc.target/powerpc/pr79251.p8.c
new file mode 100644
index 0000000..178e02f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr79251.p8.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-O2 -mdejagnu-cpu=power8 -mvsx" } */
+
+#include <stddef.h>
+#include <altivec.h>
+#include "pr79251.h"
+
+/* { dg-final { scan-assembler-not {\mstxw\M} } } */
+/* { dg-final { scan-assembler-times {\mlvsl\M} 10 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mlvsr\M} 3 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mvperm\M} 20 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mxxpermdi\M} 10 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mxxsel\M} 7 { target lp64 } } } */
+
+/* { dg-final { scan-assembler-times {\mrlwinm\M} 10 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mstxvw4x\M} 6 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mstxvd2x\M} 4 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mstb\M|\msth\M|\mstw\M|\mstfs\M|\mstfd\M} 12 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mlxvw4x\M} 6 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mlxvd2x\M} 4 { target ilp32 } } } */
+
diff --git a/gcc/testsuite/gcc.target/powerpc/pr79251.p9.c b/gcc/testsuite/gcc.target/powerpc/pr79251.p9.c
new file mode 100644
index 0000000..2ae2da8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr79251.p9.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target powerpc_p9vector_ok } */
+/* { dg-options "-O2 -mdejagnu-cpu=power9 -mvsx" } */
+
+#include <stddef.h>
+#include <altivec.h>
+#include "pr79251.h"
+
+/* { dg-final { scan-assembler-not {\mstxw\M} } } */
+/* { dg-final { scan-assembler-times {\mlvsl\M} 10 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mlvsr\M} 10 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mxxperm\M} 20 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mxxinsertw\M} 3 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mvinserth\M} 2 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mvinsertb\M} 2 { target lp64 } } } */
+/* { dg-final { scan-assembler-times {\mxxpermdi\M} 3 { target lp64 } } } */
+
+/* { dg-final { scan-assembler-times {\mrlwinm\M} 10 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mstxv\M} 10 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mstb\M|\msth\M|\mstw\M|\mstfs\M|\mstfd\M} 12 { target ilp32 } } } */
+/* { dg-final { scan-assembler-times {\mlxv\M} 10 { target ilp32 } } } */
+
diff --git a/gcc/testsuite/gcc.target/powerpc/pr88233.c b/gcc/testsuite/gcc.target/powerpc/pr88233.c
index 8e5f15b..27c7371 100644
--- a/gcc/testsuite/gcc.target/powerpc/pr88233.c
+++ b/gcc/testsuite/gcc.target/powerpc/pr88233.c
@@ -1,4 +1,4 @@
-/* { dg-do compile { target lp64 } } */
+/* { dg-require-effective-target lp64 } */
/* { dg-options "-O2 -mdejagnu-cpu=power8" } */
typedef struct { double a[2]; } A;
diff --git a/gcc/testsuite/gcc.target/powerpc/pr91903.c b/gcc/testsuite/gcc.target/powerpc/pr91903.c
new file mode 100644
index 0000000..3045d07
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr91903.c
@@ -0,0 +1,73 @@
+/* { dg-do compile */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-mdejagnu-cpu=power8" } */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <altivec.h>
+
+vector double retd;
+vector float retf;
+vector signed int retsi;
+
+void test_int(vector signed int a, const int b)
+{
+ retf = vec_ctf(a,b); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retf = vec_ctf(a,-1); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retf = vec_ctf(a,-31); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retf = vec_ctf(a,-32); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retf = vec_ctf(a,1);
+ retf = vec_ctf(a,31);
+ retf = vec_ctf(a,32); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retf = vec_ctf(a,42); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+}
+
+void test_uint(vector unsigned int a, const int b)
+{
+ retf = vec_ctf(a,b); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retf = vec_ctf(a,-1); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retf = vec_ctf(a,-31); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retf = vec_ctf(a,-32); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retf = vec_ctf(a,1);
+ retf = vec_ctf(a,31);
+ retf = vec_ctf(a,32); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retf = vec_ctf(a,42); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+}
+
+void test_longlong(vector signed long long a, const int b,int x)
+{
+ retd = vec_ctf(a,b); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retd = vec_ctf(a,-1); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retd = vec_ctf(a,-31); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retd = vec_ctf(a,-32); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retd = vec_ctf(a,1);
+ retd = vec_ctf(a,31);
+ retd = vec_ctf(a,32); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retd = vec_ctf(a,42); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+}
+
+void test_ulonglong(vector unsigned long long a, const int b,int x)
+{
+ retd = vec_ctf(a,b); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retd = vec_ctf(a,-1); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retd = vec_ctf(a,-31); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retd = vec_ctf(a,-32); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retd = vec_ctf(a,1);
+ retd = vec_ctf(a,31);
+ retd = vec_ctf(a,32); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retd = vec_ctf(a,42); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+}
+
+
+void test_cts_1(vector float a, const int b)
+{
+ retsi = vec_cts(a,b); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retsi = vec_cts(a,-1); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retsi = vec_cts(a,-31); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retsi = vec_cts(a,-32); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retsi = vec_cts(a,1);
+ retsi = vec_cts(a,31);
+ retsi = vec_cts(a,32); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+ retsi = vec_cts(a,42); /* { dg-error "argument 2 must be a 5-bit unsigned literal" } */
+}
+
diff --git a/gcc/testsuite/gcc.target/powerpc/pr96933-1.c b/gcc/testsuite/gcc.target/powerpc/pr96933-1.c
index 3b63865..71d7208 100644
--- a/gcc/testsuite/gcc.target/powerpc/pr96933-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/pr96933-1.c
@@ -13,3 +13,4 @@
/* { dg-final { scan-assembler-times {\mvpkudum\M} 12 } } */
/* { dg-final { scan-assembler-not {\mstb\M} } } */
/* { dg-final { scan-assembler-not {\msth\M} } } */
+/* { dg-final { scan-assembler-not {\mrlwinm\M} } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/pr96933-2.c b/gcc/testsuite/gcc.target/powerpc/pr96933-2.c
index cef8fbd..9fa1512 100644
--- a/gcc/testsuite/gcc.target/powerpc/pr96933-2.c
+++ b/gcc/testsuite/gcc.target/powerpc/pr96933-2.c
@@ -13,3 +13,4 @@
/* { dg-final { scan-assembler-times {\mxxpermdi\M} 4 } } */
/* { dg-final { scan-assembler-not {\mstb\M} } } */
/* { dg-final { scan-assembler-not {\msth\M} } } */
+/* { dg-final { scan-assembler-not {\mrlwinm\M} } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/sse-andnps-1.c b/gcc/testsuite/gcc.target/powerpc/sse-andnps-1.c
index 7b0dc01..9851621 100644
--- a/gcc/testsuite/gcc.target/powerpc/sse-andnps-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/sse-andnps-1.c
@@ -1,4 +1,4 @@
-/* { dg-do run } */
+/* { dg-do run { target le } } */
/* { dg-options "-O3 -mpower8-vector -Wno-psabi" } */
/* { dg-require-effective-target p8vector_hw } */
@@ -30,6 +30,7 @@ TEST (void)
int source1[4]={34, 545, 955, 67};
int source2[4]={67, 4, 57, 897};
int e[4];
+ float f[4];
s1.x = _mm_loadu_ps ((float *)source1);
s2.x = _mm_loadu_ps ((float *)source2);
@@ -39,7 +40,8 @@ TEST (void)
e[1] = (~source1[1]) & source2[1];
e[2] = (~source1[2]) & source2[2];
e[3] = (~source1[3]) & source2[3];
+ __builtin_memcpy (f, e, sizeof (f));
- if (check_union128 (u, (float *)e))
+ if (check_union128 (u, f))
abort ();
}
diff --git a/gcc/testsuite/gcc.target/powerpc/sse-andps-1.c b/gcc/testsuite/gcc.target/powerpc/sse-andps-1.c
index a35dc71..3a63666 100644
--- a/gcc/testsuite/gcc.target/powerpc/sse-andps-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/sse-andps-1.c
@@ -32,6 +32,7 @@ TEST (void)
float f[4];
int i[4];
}source1, source2, e;
+ float f[4];
s1.x = _mm_set_ps (34, 545, 955, 67);
s2.x = _mm_set_ps (67, 4, 57, 897);
@@ -45,7 +46,8 @@ TEST (void)
e.i[1] = source1.i[1] & source2.i[1];
e.i[2] = source1.i[2] & source2.i[2];
e.i[3] = source1.i[3] & source2.i[3];
+ __builtin_memcpy (f, e.f, sizeof (f));
- if (check_union128 (u, e.f))
+ if (check_union128 (u, f))
abort ();
}
diff --git a/gcc/testsuite/gcc.target/powerpc/sse-movhps-1.c b/gcc/testsuite/gcc.target/powerpc/sse-movhps-1.c
index f94c5aa..a0666e5 100644
--- a/gcc/testsuite/gcc.target/powerpc/sse-movhps-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/sse-movhps-1.c
@@ -1,4 +1,4 @@
-/* { dg-do run } */
+/* { dg-do run { target le } } */
/* { dg-options "-O3 -mpower8-vector -Wno-psabi" } */
/* { dg-require-effective-target p8vector_hw } */
diff --git a/gcc/testsuite/gcc.target/powerpc/sse-movlps-1.c b/gcc/testsuite/gcc.target/powerpc/sse-movlps-1.c
index 3d1b79a..281d49c 100644
--- a/gcc/testsuite/gcc.target/powerpc/sse-movlps-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/sse-movlps-1.c
@@ -1,4 +1,4 @@
-/* { dg-do run } */
+/* { dg-do run { target le } } */
/* { dg-options "-O3 -mpower8-vector -Wno-psabi" } */
/* { dg-require-effective-target p8vector_hw } */
diff --git a/gcc/testsuite/gcc.target/powerpc/sse2-andnpd-1.c b/gcc/testsuite/gcc.target/powerpc/sse2-andnpd-1.c
index 212bc00..747bcc9 100644
--- a/gcc/testsuite/gcc.target/powerpc/sse2-andnpd-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/sse2-andnpd-1.c
@@ -1,4 +1,4 @@
-/* { dg-do run } */
+/* { dg-do run { target le } } */
/* { dg-options "-O3 -mpower8-vector -Wno-psabi" } */
/* { dg-require-effective-target p8vector_hw } */
@@ -28,6 +28,7 @@ TEST (void)
long long source1[2]={34545, 95567};
long long source2[2]={674, 57897};
long long e[2];
+ double d[2];
s1.x = _mm_loadu_pd ((double *)source1);
s2.x = _mm_loadu_pd ((double *)source2);
@@ -35,7 +36,8 @@ TEST (void)
e[0] = (~source1[0]) & source2[0];
e[1] = (~source1[1]) & source2[1];
+ __builtin_memcpy (d, e, sizeof (d));
- if (check_union128d (u, (double *)e))
+ if (check_union128d (u, d))
abort ();
}
diff --git a/gcc/testsuite/gcc.target/powerpc/sse2-andpd-1.c b/gcc/testsuite/gcc.target/powerpc/sse2-andpd-1.c
index 4a06951..5034bf9 100644
--- a/gcc/testsuite/gcc.target/powerpc/sse2-andpd-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/sse2-andpd-1.c
@@ -31,6 +31,7 @@ TEST (void)
double d[2];
long long ll[2];
}source1, source2, e;
+ double d[2];
s1.x = _mm_set_pd (34545, 95567);
s2.x = _mm_set_pd (674, 57897);
@@ -42,7 +43,8 @@ TEST (void)
e.ll[0] = source1.ll[0] & source2.ll[0];
e.ll[1] = source1.ll[1] & source2.ll[1];
+ __builtin_memcpy (d, e.d, sizeof (d));
- if (check_union128d (u, e.d))
+ if (check_union128d (u, d))
abort ();
}
diff --git a/gcc/testsuite/gcc.target/powerpc/vsu/vsu.exp b/gcc/testsuite/gcc.target/powerpc/vsu/vsu.exp
index 68b7e5b..5fa4870 100644
--- a/gcc/testsuite/gcc.target/powerpc/vsu/vsu.exp
+++ b/gcc/testsuite/gcc.target/powerpc/vsu/vsu.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.target/pru/pru.exp b/gcc/testsuite/gcc.target/pru/pru.exp
index f99f7ce..9fb7cf4 100644
--- a/gcc/testsuite/gcc.target/pru/pru.exp
+++ b/gcc/testsuite/gcc.target/pru/pru.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/riscv/attribute-18.c b/gcc/testsuite/gcc.target/riscv/attribute-18.c
new file mode 100644
index 0000000..492360c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/attribute-18.c
@@ -0,0 +1,4 @@
+/* { dg-do compile } */
+/* { dg-options "-mriscv-attribute -march=rv64imafdcp -mabi=lp64d -misa-spec=2.2" } */
+int foo() {}
+/* { dg-final { scan-assembler ".attribute arch, \"rv64i2p0_m2p0_a2p0_f2p0_d2p0_c2p0_p\"" } } */
diff --git a/gcc/testsuite/gcc.target/riscv/pr98777.c b/gcc/testsuite/gcc.target/riscv/pr98777.c
new file mode 100644
index 0000000..ea2c2f9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/pr98777.c
@@ -0,0 +1,31 @@
+/* { dg-do compile } */
+/* { dg-options "-fstrict-aliasing -O" } */
+
+typedef struct {
+ _Complex e;
+ _Complex f;
+ _Complex g;
+ _Complex h;
+ _Complex i;
+ _Complex j;
+ _Complex k;
+ _Complex l;
+ _Complex m;
+ _Complex n;
+ _Complex o;
+ _Complex p;
+} Scl16;
+
+Scl16 g1sScl16, g2sScl16, g3sScl16, g4sScl16, g5sScl16, g6sScl16, g7sScl16,
+ g8sScl16, g9sScl16, g10sScl16, g11sScl16, g12sScl16, g13sScl16, g14sScl16,
+ g15sScl16, g16sScl16;
+
+void testvaScl16();
+
+void
+testitScl16() {
+ testvaScl16(g10sScl16, g11sScl16, g12sScl16, g13sScl16, g14sScl16, g1sScl16,
+ g2sScl16, g3sScl16, g4sScl16, g5sScl16, g6sScl16, g7sScl16,
+ g8sScl16, g9sScl16, g10sScl16, g11sScl16, g12sScl16, g13sScl16,
+ g14sScl16, g15sScl16, g16sScl16);
+}
diff --git a/gcc/testsuite/gcc.target/riscv/predef-10.c b/gcc/testsuite/gcc.target/riscv/predef-10.c
new file mode 100644
index 0000000..7c447bf
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/predef-10.c
@@ -0,0 +1,43 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=rv32i2p0 -mabi=ilp32 -mcmodel=medlow -misa-spec=2.2" } */
+
+int main () {
+
+#ifndef __riscv_arch_test
+#error "__riscv_arch_test"
+#endif
+
+#if __riscv_xlen != 32
+#error "__riscv_xlen"
+#endif
+
+#if !defined(__riscv_i) || (__riscv_i != (2 * 1000 * 1000))
+#error "__riscv_i"
+#endif
+
+#if defined(__riscv_c)
+#error "__riscv_c"
+#endif
+
+#if defined(__riscv_e)
+#error "__riscv_e"
+#endif
+
+#if defined(__riscv_a)
+#error "__riscv_a"
+#endif
+
+#if defined(__riscv_m)
+#error "__riscv_m"
+#endif
+
+#if defined(__riscv_f)
+#error "__riscv_f"
+#endif
+
+#if defined(__riscv_d)
+#error "__riscv_d"
+#endif
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/riscv/predef-11.c b/gcc/testsuite/gcc.target/riscv/predef-11.c
new file mode 100644
index 0000000..80f4811
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/predef-11.c
@@ -0,0 +1,43 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=rv64gc -mabi=lp64 -mcmodel=medlow -misa-spec=2.2" } */
+
+int main () {
+
+#ifndef __riscv_arch_test
+#error "__riscv_arch_test"
+#endif
+
+#if __riscv_xlen != 64
+#error "__riscv_xlen"
+#endif
+
+#if !defined(__riscv_i) || (__riscv_i != (2 * 1000 * 1000))
+#error "__riscv_i"
+#endif
+
+#if !defined(__riscv_c) || (__riscv_c != (2 * 1000 * 1000))
+#error "__riscv_c"
+#endif
+
+#if defined(__riscv_e)
+#error "__riscv_e"
+#endif
+
+#if !defined(__riscv_a) || (__riscv_a != (2 * 1000 * 1000))
+#error "__riscv_a"
+#endif
+
+#if !defined(__riscv_m) || (__riscv_m != (2 * 1000 * 1000))
+#error "__riscv_m"
+#endif
+
+#if !defined(__riscv_f) || (__riscv_f != (2 * 1000 * 1000))
+#error "__riscv_f"
+#endif
+
+#if !defined(__riscv_d) || (__riscv_d != (2 * 1000 * 1000))
+#error "__riscv_d"
+#endif
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/riscv/predef-12.c b/gcc/testsuite/gcc.target/riscv/predef-12.c
new file mode 100644
index 0000000..dd35dbd
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/predef-12.c
@@ -0,0 +1,43 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=rv64gc -mabi=lp64 -mcmodel=medlow -misa-spec=20191213" } */
+
+int main () {
+
+#ifndef __riscv_arch_test
+#error "__riscv_arch_test"
+#endif
+
+#if __riscv_xlen != 64
+#error "__riscv_xlen"
+#endif
+
+#if !defined(__riscv_i) || (__riscv_i != (2 * 1000 * 1000 + 1 * 1000))
+#error "__riscv_i"
+#endif
+
+#if !defined(__riscv_c) || (__riscv_c != (2 * 1000 * 1000))
+#error "__riscv_c"
+#endif
+
+#if defined(__riscv_e)
+#error "__riscv_e"
+#endif
+
+#if !defined(__riscv_a) || (__riscv_a != (2 * 1000 * 1000 + 1 * 1000))
+#error "__riscv_a"
+#endif
+
+#if !defined(__riscv_m) || (__riscv_m != (2 * 1000 * 1000))
+#error "__riscv_m"
+#endif
+
+#if !defined(__riscv_f) || (__riscv_f != (2 * 1000 * 1000 + 2 * 1000))
+#error "__riscv_f"
+#endif
+
+#if !defined(__riscv_d) || (__riscv_d != (2 * 1000 * 1000 + 2 * 1000))
+#error "__riscv_d"
+#endif
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/riscv/predef-13.c b/gcc/testsuite/gcc.target/riscv/predef-13.c
new file mode 100644
index 0000000..95cf001
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/predef-13.c
@@ -0,0 +1,43 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=rv32e -mabi=ilp32e -mcmodel=medlow -misa-spec=2.2" } */
+
+int main () {
+
+#ifndef __riscv_arch_test
+#error "__riscv_arch_test"
+#endif
+
+#if __riscv_xlen != 32
+#error "__riscv_xlen"
+#endif
+
+#if defined(__riscv_i)
+#error "__riscv_i"
+#endif
+
+#if defined(__riscv_c)
+#error "__riscv_c"
+#endif
+
+#if !defined(__riscv_e) || (__riscv_e != (1 * 1000 * 1000 + 9 * 1000))
+#error "__riscv_e"
+#endif
+
+#if defined(__riscv_a)
+#error "__riscv_a"
+#endif
+
+#if defined(__riscv_m)
+#error "__riscv_m"
+#endif
+
+#if defined(__riscv_f)
+#error "__riscv_f"
+#endif
+
+#if defined(__riscv_d)
+#error "__riscv_d"
+#endif
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/riscv/riscv.exp b/gcc/testsuite/gcc.target/riscv/riscv.exp
index 483fe91..2b83bf9 100644
--- a/gcc/testsuite/gcc.target/riscv/riscv.exp
+++ b/gcc/testsuite/gcc.target/riscv/riscv.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# Copyright (C) 2017-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/rl78/rl78.exp b/gcc/testsuite/gcc.target/rl78/rl78.exp
index 27d9b37..9548b7e 100644
--- a/gcc/testsuite/gcc.target/rl78/rl78.exp
+++ b/gcc/testsuite/gcc.target/rl78/rl78.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/rx/rx.exp b/gcc/testsuite/gcc.target/rx/rx.exp
index 6fb9b73..a66f7b1 100644
--- a/gcc/testsuite/gcc.target/rx/rx.exp
+++ b/gcc/testsuite/gcc.target/rx/rx.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/s390/md/atomic_exchange-1.c b/gcc/testsuite/gcc.target/s390/md/atomic_exchange-1.c
index f82b213..54e97d3 100644
--- a/gcc/testsuite/gcc.target/s390/md/atomic_exchange-1.c
+++ b/gcc/testsuite/gcc.target/s390/md/atomic_exchange-1.c
@@ -1,7 +1,7 @@
/* Machine description pattern tests. */
/* { dg-do compile } */
-/* { dg-options "-lpthread -latomic" } */
+/* { dg-options "-lpthread" } */
/* { dg-do run { target { s390_useable_hw } } } */
/**/
diff --git a/gcc/testsuite/gcc.target/s390/s390.exp b/gcc/testsuite/gcc.target/s390/s390.exp
index d76d80d..df46060 100644
--- a/gcc/testsuite/gcc.target/s390/s390.exp
+++ b/gcc/testsuite/gcc.target/s390/s390.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -28,6 +28,7 @@ if ![istarget s390*-*-*] then {
load_lib gcc-dg.exp
load_lib target-supports.exp
load_lib gfortran-dg.exp
+load_lib atomic-dg.exp
# Return 1 if the the assembler understands .machine and .machinemode. The
# target attribute needs that feature to work.
@@ -197,7 +198,7 @@ proc check_effective_target_s390_z14_hw { } {
int main (void)
{
int x = 0;
- asm ("msgrkc %%0,%%0,%%0" : "+r" (x) : );
+ asm ("msgrkc %0,%0,%0" : "+r" (x) : );
return x;
}
}] "-march=z14 -m64 -mzarch" ] } { return 0 } else { return 1 }
@@ -250,6 +251,8 @@ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/arch13/*.{c,S}]] \
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/vxe/*.{c,S}]] \
"" "-O3 -march=arch12 -mzarch"
+# Some md tests require libatomic
+atomic_init
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/md/*.{c,S}]] \
"" $DEFAULT_CFLAGS
@@ -294,4 +297,5 @@ foreach t [list $srcdir/$subdir/pr80080-3.c] {
}
# All done.
+atomic_finish
dg-finish
diff --git a/gcc/testsuite/gcc.target/s390/vector/long-double-vx-macro-off-on.c b/gcc/testsuite/gcc.target/s390/vector/long-double-vx-macro-off-on.c
new file mode 100644
index 0000000..2d67679
--- /dev/null
+++ b/gcc/testsuite/gcc.target/s390/vector/long-double-vx-macro-off-on.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target target_attribute } */
+/* { dg-options "-march=z14" } */
+#if !defined(__LONG_DOUBLE_VX__)
+#error
+#endif
+
+#pragma GCC target("arch=zEC12")
+#if defined(__LONG_DOUBLE_VX__)
+#error
+#endif
diff --git a/gcc/testsuite/gcc.target/s390/vector/long-double-vx-macro-on-off.c b/gcc/testsuite/gcc.target/s390/vector/long-double-vx-macro-on-off.c
new file mode 100644
index 0000000..6f26431
--- /dev/null
+++ b/gcc/testsuite/gcc.target/s390/vector/long-double-vx-macro-on-off.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target target_attribute } */
+/* { dg-options "-march=z13" } */
+#if defined(__LONG_DOUBLE_VX__)
+#error
+#endif
+
+#pragma GCC target("arch=z15")
+#if !defined(__LONG_DOUBLE_VX__)
+#error
+#endif
diff --git a/gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-eq.c b/gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-eq.c
index a8402b9..3645d3c 100644
--- a/gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-eq.c
+++ b/gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-eq.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -march=z14 -mzvector -mzarch" } */
+/* { dg-options "-O3 -march=z14 -mzvector -mzarch -fexceptions -fnon-call-exceptions" } */
#include "autovec.h"
diff --git a/gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-eq.c b/gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-eq.c
index 7dd91a5..d98aa0c 100644
--- a/gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-eq.c
+++ b/gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-eq.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O3 -march=z14 -mzvector -mzarch" } */
+/* { dg-options "-O3 -march=z14 -mzvector -mzarch -fexceptions -fnon-call-exceptions" } */
#include "autovec.h"
diff --git a/gcc/testsuite/gcc.target/sh/sh.exp b/gcc/testsuite/gcc.target/sh/sh.exp
index ff4515e..e39d11c 100644
--- a/gcc/testsuite/gcc.target/sh/sh.exp
+++ b/gcc/testsuite/gcc.target/sh/sh.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# Copyright (C) 2007-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/sh/torture/sh-torture.exp b/gcc/testsuite/gcc.target/sh/torture/sh-torture.exp
index 0d199ec..71a581d 100644
--- a/gcc/testsuite/gcc.target/sh/torture/sh-torture.exp
+++ b/gcc/testsuite/gcc.target/sh/torture/sh-torture.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/sparc/sparc.exp b/gcc/testsuite/gcc.target/sparc/sparc.exp
index ea2efe1..fab1399 100644
--- a/gcc/testsuite/gcc.target/sparc/sparc.exp
+++ b/gcc/testsuite/gcc.target/sparc/sparc.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/tic6x/builtins/c6x-builtins.exp b/gcc/testsuite/gcc.target/tic6x/builtins/c6x-builtins.exp
index b5f7a6d..cd3b04a 100644
--- a/gcc/testsuite/gcc.target/tic6x/builtins/c6x-builtins.exp
+++ b/gcc/testsuite/gcc.target/tic6x/builtins/c6x-builtins.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/tic6x/tic6x.exp b/gcc/testsuite/gcc.target/tic6x/tic6x.exp
index f4e4e86..8cbd66f 100644
--- a/gcc/testsuite/gcc.target/tic6x/tic6x.exp
+++ b/gcc/testsuite/gcc.target/tic6x/tic6x.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/vax/cmpelim-eq-notsi.c b/gcc/testsuite/gcc.target/vax/cmpelim-eq-notsi.c
index ba5b735..dbd6d43 100644
--- a/gcc/testsuite/gcc.target/vax/cmpelim-eq-notsi.c
+++ b/gcc/testsuite/gcc.target/vax/cmpelim-eq-notsi.c
@@ -11,14 +11,14 @@ eq_notsi (int_t x)
if (x == 0)
return x;
else
- return x + 2;
+ return 2 - x;
}
/* Expect assembly like:
mcoml 4(%ap),%r0 # 32 [c=16] *one_cmplsi2_ccz
jeql .L1 # 34 [c=26] *branch_ccz
- addl2 $2,%r0 # 31 [c=32] *addsi3
+ subl3 %r0,$2,%r0 # 31 [c=32] *subsi3/1
.L1:
*/
diff --git a/gcc/testsuite/gcc.target/vax/cmpelim-le-notsi.c b/gcc/testsuite/gcc.target/vax/cmpelim-le-notsi.c
index 938a6b3..3e52da1 100644
--- a/gcc/testsuite/gcc.target/vax/cmpelim-le-notsi.c
+++ b/gcc/testsuite/gcc.target/vax/cmpelim-le-notsi.c
@@ -11,14 +11,14 @@ le_notsi (int_t x)
if (x <= 0)
return x;
else
- return x + 2;
+ return 2 - x;
}
/* Expect assembly like:
mcoml 4(%ap),%r0 # 28 [c=16] *one_cmplsi2_ccnz
jleq .L1 # 30 [c=26] *branch_ccnz
- addl2 $2,%r0 # 27 [c=32] *addsi3
+ subl3 %r0,$2,%r0 # 27 [c=32] *subsi3/1
.L1:
*/
diff --git a/gcc/testsuite/gcc.target/vax/cmpelim-lt-notsi.c b/gcc/testsuite/gcc.target/vax/cmpelim-lt-notsi.c
index c3586b1..2c758cc 100644
--- a/gcc/testsuite/gcc.target/vax/cmpelim-lt-notsi.c
+++ b/gcc/testsuite/gcc.target/vax/cmpelim-lt-notsi.c
@@ -11,14 +11,14 @@ lt_notsi (int_t x)
if (x < 0)
return x;
else
- return x + 2;
+ return 2 - x;
}
/* Expect assembly like:
mcoml 4(%ap),%r0 # 28 [c=16] *one_cmplsi2_ccn
jlss .L1 # 30 [c=26] *branch_ccn
- addl2 $2,%r0 # 27 [c=32] *addsi3
+ subl3 %r0,$2,%r0 # 27 [c=32] *subsi3/1
.L1:
*/
diff --git a/gcc/testsuite/gcc.target/vax/push.c b/gcc/testsuite/gcc.target/vax/push.c
new file mode 100644
index 0000000..647ea60
--- /dev/null
+++ b/gcc/testsuite/gcc.target/vax/push.c
@@ -0,0 +1,27 @@
+/* { dg-do compile } */
+
+void bar (void (*) (void), int, int);
+
+void
+foo (void)
+{
+ bar (foo, 1, 0);
+}
+
+/* Expect assembly like:
+
+ pushl $0
+ pushl $1
+ pushab foo
+ calls $3,bar
+
+rather than:
+
+ clrl -(%sp)
+ movl $1,-(%sp)
+ movab foo,-(%sp)
+ calls $3,bar
+
+ */
+
+/* { dg-final { scan-assembler "\[ \t\]+pushl\[ \t\]+\\\$0\n\[ \t\]+pushl\[ \t\]+\\\$1\n\[ \t\]+pushab\[ \t\]+foo\n" } } */
diff --git a/gcc/testsuite/gcc.target/vax/vax.exp b/gcc/testsuite/gcc.target/vax/vax.exp
index 678e900..c1262c6 100644
--- a/gcc/testsuite/gcc.target/vax/vax.exp
+++ b/gcc/testsuite/gcc.target/vax/vax.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/visium/visium.exp b/gcc/testsuite/gcc.target/visium/visium.exp
index 744be9e..43973a2 100644
--- a/gcc/testsuite/gcc.target/visium/visium.exp
+++ b/gcc/testsuite/gcc.target/visium/visium.exp
@@ -1,5 +1,5 @@
# Specific regression driver for Visium.
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.target/x86_64/abi/README.gcc b/gcc/testsuite/gcc.target/x86_64/abi/README.gcc
index 76d4550..5a2ede7 100644
--- a/gcc/testsuite/gcc.target/x86_64/abi/README.gcc
+++ b/gcc/testsuite/gcc.target/x86_64/abi/README.gcc
@@ -18,7 +18,7 @@ The current maintainer is:
matz@suse.de
-Copyright (C) 2005-2020 Free Software Foundation, Inc.
+Copyright (C) 2005-2021 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp b/gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp
index cb05db3..eeca20b 100644
--- a/gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp
+++ b/gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2020 Free Software Foundation, Inc.
+# Copyright (C) 2005-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp b/gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp
index 0760b2b..0f2f455 100644
--- a/gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp
+++ b/gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp
index bfdf37f..c20d96f 100644
--- a/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp
+++ b/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp b/gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp
index 64e22c2..ac9aab5 100644
--- a/gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp
+++ b/gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S b/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S
index 6d31e8d..1d6cd95 100644
--- a/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S
+++ b/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S
@@ -1,5 +1,5 @@
/* Assembly proxy functions for ms_abi tests.
- Copyright (C) 2016-2020 Free Software Foundation, Inc.
+ Copyright (C) 2016-2021 Free Software Foundation, Inc.
Contributed by Daniel Santos <daniel.santos@pobox.com>
This file is part of GCC.
diff --git a/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp b/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp
index 6c9ac65..f1a65f6 100644
--- a/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp
+++ b/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp
@@ -1,5 +1,5 @@
# Tests for ms_abi to sysv_abi calls.
-# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# Copyright (C) 2016-2021 Free Software Foundation, Inc.
# Contributed by Daniel Santos <daniel.santos@pobox.com>
#
# This file is part of GCC.
diff --git a/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp b/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp
index de097f3..c8a0495 100644
--- a/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp
+++ b/gcc/testsuite/gcc.target/xstormy16/xstormy16.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gcc.target/xtensa/bswap.c b/gcc/testsuite/gcc.target/xtensa/bswap.c
new file mode 100644
index 0000000..057a356
--- /dev/null
+++ b/gcc/testsuite/gcc.target/xtensa/bswap.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O1" } */
+
+unsigned long f32(unsigned long v)
+{
+ return __builtin_bswap32(v);
+}
+
+unsigned long long f64(unsigned long long v)
+{
+ return __builtin_bswap64(v);
+}
+
+/* { dg-final { scan-assembler-times "ssai" 2 } } */
diff --git a/gcc/testsuite/gcc.target/xtensa/pr98285.c b/gcc/testsuite/gcc.target/xtensa/pr98285.c
new file mode 100644
index 0000000..2c037d5
--- /dev/null
+++ b/gcc/testsuite/gcc.target/xtensa/pr98285.c
@@ -0,0 +1,54 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+int mul3(int v)
+{
+ return v * 3;
+}
+
+int mul5(int v)
+{
+ return v * 5;
+}
+
+int mul7(int v)
+{
+ return v * 7;
+}
+
+int mul9(int v)
+{
+ return v * 9;
+}
+
+int mul2sub(int a, int b)
+{
+ return a * 2 - b;
+}
+
+int mul4sub(int a, int b)
+{
+ return a * 4 - b;
+}
+
+short index2(short *p, int i)
+{
+ return p[i];
+}
+
+int index4(int *p, int i)
+{
+ return p[i];
+}
+
+long long index8(long long *p, int i)
+{
+ return p[i];
+}
+
+/* { dg-final { scan-assembler-times "addx2" 2 } } */
+/* { dg-final { scan-assembler-times "addx4" 2 } } */
+/* { dg-final { scan-assembler-times "addx8" 2 } } */
+/* { dg-final { scan-assembler-times "subx2" 1 } } */
+/* { dg-final { scan-assembler-times "subx4" 1 } } */
+/* { dg-final { scan-assembler-times "subx8" 1 } } */
diff --git a/gcc/testsuite/gcc.target/xtensa/shifts.c b/gcc/testsuite/gcc.target/xtensa/shifts.c
new file mode 100644
index 0000000..8d7e4a9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/xtensa/shifts.c
@@ -0,0 +1,31 @@
+/* { dg-do compile } */
+/* { dg-options "-O1" } */
+
+int lshift1(int v)
+{
+ return v << 1;
+}
+
+int lshift2(int v, int s)
+{
+ return v << (s * 8);
+}
+
+unsigned int lshift3(unsigned int v, int s)
+{
+ return v << (s * 8);
+}
+
+int rshift1(int v, int s)
+{
+ return v >> (s * 8);
+}
+
+unsigned int rshift2(unsigned int v, int s)
+{
+ return v >> (s * 8);
+}
+
+/* { dg-final { scan-assembler-not "slli" } } */
+/* { dg-final { scan-assembler-times "ssa8l" 2 } } */
+/* { dg-final { scan-assembler-times "ssa8b" 2 } } */
diff --git a/gcc/testsuite/gcc.target/xtensa/xtensa.exp b/gcc/testsuite/gcc.target/xtensa/xtensa.exp
index 0e26d0c..b65fa0d 100644
--- a/gcc/testsuite/gcc.target/xtensa/xtensa.exp
+++ b/gcc/testsuite/gcc.target/xtensa/xtensa.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2019-2020 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.test-framework/README b/gcc/testsuite/gcc.test-framework/README
index 6841976..f7783a0 100644
--- a/gcc/testsuite/gcc.test-framework/README
+++ b/gcc/testsuite/gcc.test-framework/README
@@ -25,7 +25,7 @@ The awk script prints unexpected results followed by the number of tests
that passed and failed.
-Copyright (C) 2005-2020 Free Software Foundation, Inc.
+Copyright (C) 2005-2021 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gcc/testsuite/gcc.test-framework/gen_directive_tests b/gcc/testsuite/gcc.test-framework/gen_directive_tests
index cbfcda3..40e22d6 100644
--- a/gcc/testsuite/gcc.test-framework/gen_directive_tests
+++ b/gcc/testsuite/gcc.test-framework/gen_directive_tests
@@ -14,7 +14,7 @@
# This script has evolved and could be rewritten to be more compact.
#
#
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.test-framework/test-framework.awk b/gcc/testsuite/gcc.test-framework/test-framework.awk
index a428068..b207790 100644
--- a/gcc/testsuite/gcc.test-framework/test-framework.awk
+++ b/gcc/testsuite/gcc.test-framework/test-framework.awk
@@ -3,7 +3,7 @@
# of passing tests.
#
#
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gcc.test-framework/test-framework.exp b/gcc/testsuite/gcc.test-framework/test-framework.exp
index 45328bf..fb53176 100644
--- a/gcc/testsuite/gcc.test-framework/test-framework.exp
+++ b/gcc/testsuite/gcc.test-framework/test-framework.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gdc.dg/asan/asan.exp b/gcc/testsuite/gdc.dg/asan/asan.exp
index 2d6a1cf..13569bd 100644
--- a/gcc/testsuite/gdc.dg/asan/asan.exp
+++ b/gcc/testsuite/gdc.dg/asan/asan.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# Copyright (C) 2017-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gdc.dg/debug/debug.exp b/gcc/testsuite/gdc.dg/debug/debug.exp
new file mode 100644
index 0000000..adcdf57
--- /dev/null
+++ b/gcc/testsuite/gdc.dg/debug/debug.exp
@@ -0,0 +1,28 @@
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# Load support procs.
+load_lib gdc-dg.exp
+
+# Initialize `dg'.
+dg-init
+
+# Main loop.
+gcc-dg-debug-runtest gdc_target_compile trivial.d [list -O -O3] \
+ [lsort [glob -nocomplain $srcdir/$subdir/*.d]]
+
+# All done.
+dg-finish
diff --git a/gcc/testsuite/gdc.dg/debug/dwarf2/dwarf2.exp b/gcc/testsuite/gdc.dg/debug/dwarf2/dwarf2.exp
new file mode 100644
index 0000000..f97e6a0
--- /dev/null
+++ b/gcc/testsuite/gdc.dg/debug/dwarf2/dwarf2.exp
@@ -0,0 +1,31 @@
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# Load support procs.
+load_lib gdc-dg.exp
+
+# Main loop.
+set comp_output [gdc_target_compile \
+ "$srcdir/$subdir/../trivial.d" "trivial.S" assembly \
+ "additional_flags=-gdwarf"]
+if { ! [string match "*: target system does not support the * debug format*" \
+ $comp_output] } {
+ remove-build-file "trivial.S"
+ gdc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.d ] ] "" "-gdwarf"
+}
+
+# All done.
+dg-finish
diff --git a/gcc/testsuite/gdc.dg/debug/dwarf2/imports/pr98067.d b/gcc/testsuite/gdc.dg/debug/dwarf2/imports/pr98067.d
new file mode 100644
index 0000000..d740d71
--- /dev/null
+++ b/gcc/testsuite/gdc.dg/debug/dwarf2/imports/pr98067.d
@@ -0,0 +1,3 @@
+module imports.pr98067;
+
+enum MAP_ANON = 0x10;
diff --git a/gcc/testsuite/gdc.dg/debug/dwarf2/langdw2.d b/gcc/testsuite/gdc.dg/debug/dwarf2/langdw2.d
new file mode 100644
index 0000000..61c3927
--- /dev/null
+++ b/gcc/testsuite/gdc.dg/debug/dwarf2/langdw2.d
@@ -0,0 +1,7 @@
+// DW_LANG_D is not available in dwarf2, so we should produce DW_LANG_C (0x2)
+// as AT_language.
+// { dg-do compile }
+// { dg-options "-gdwarf-2 -gstrict-dwarf -dA" }
+// { dg-final { scan-assembler "0x2\[^\n\r\]*AT_language" } }
+
+module langdw2;
diff --git a/gcc/testsuite/gdc.dg/debug/dwarf2/langdw3.d b/gcc/testsuite/gdc.dg/debug/dwarf2/langdw3.d
new file mode 100644
index 0000000..7bdc68c
--- /dev/null
+++ b/gcc/testsuite/gdc.dg/debug/dwarf2/langdw3.d
@@ -0,0 +1,6 @@
+// We should produce DW_LANG_D (0x13) as AT_language.
+// { dg-do compile }
+// { dg-options "-gdwarf-3 -dA" }
+// { dg-final { scan-assembler "0x13\[^\n\r\]*AT_language" } }
+
+module langdw3;
diff --git a/gcc/testsuite/gdc.dg/debug/dwarf2/pr98067.d b/gcc/testsuite/gdc.dg/debug/dwarf2/pr98067.d
new file mode 100644
index 0000000..4beb268
--- /dev/null
+++ b/gcc/testsuite/gdc.dg/debug/dwarf2/pr98067.d
@@ -0,0 +1,6 @@
+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98067
+// { dg-options "-gdwarf-2 -gstrict-dwarf -I $srcdir/gdc.dg/debug/dwarf2" }
+// { dg-do compile }
+module pr98067;
+
+import imports.pr98067 : MAP_ANON;
diff --git a/gcc/testsuite/gdc.dg/debug/trivial.d b/gcc/testsuite/gdc.dg/debug/trivial.d
new file mode 100644
index 0000000..dab2b68
--- /dev/null
+++ b/gcc/testsuite/gdc.dg/debug/trivial.d
@@ -0,0 +1,6 @@
+/* { dg-do run } */
+
+int main()
+{
+ return 0;
+}
diff --git a/gcc/testsuite/gdc.dg/dg.exp b/gcc/testsuite/gdc.dg/dg.exp
index 47a16da..0fcb2b7 100644
--- a/gcc/testsuite/gdc.dg/dg.exp
+++ b/gcc/testsuite/gdc.dg/dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# Copyright (C) 2017-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gdc.dg/lto/lto.exp b/gcc/testsuite/gdc.dg/lto/lto.exp
index ffbf2cf..30fe787 100644
--- a/gcc/testsuite/gdc.dg/lto/lto.exp
+++ b/gcc/testsuite/gdc.dg/lto/lto.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# Copyright (C) 2017-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gdc.dg/pr98277.d b/gcc/testsuite/gdc.dg/pr98277.d
new file mode 100644
index 0000000..d3b859f
--- /dev/null
+++ b/gcc/testsuite/gdc.dg/pr98277.d
@@ -0,0 +1,13 @@
+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98277
+// { dg-do compile }
+
+enum Side
+{
+ left,
+ right
+}
+
+ref int getSide(Side side, ref int left, ref int right)
+{
+ return side == Side.left ? left : right;
+}
diff --git a/gcc/testsuite/gdc.dg/pr98427.d b/gcc/testsuite/gdc.dg/pr98427.d
new file mode 100644
index 0000000..225db8b
--- /dev/null
+++ b/gcc/testsuite/gdc.dg/pr98427.d
@@ -0,0 +1,23 @@
+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98427
+// { dg-do compile }
+// { dg-options "-O2 -fno-inline" }
+
+@trusted memoizeExpr()
+{
+ struct CodepointSet
+ {
+ struct CowArray
+ {
+ uint *ptr;
+ }
+
+ const CodepointSet binary(U)(U rhs)
+ {
+ return rhs;
+ }
+
+ CowArray array;
+ }
+
+ CodepointSet().binary(CodepointSet());
+}
diff --git a/gcc/testsuite/gdc.dg/torture/torture.exp b/gcc/testsuite/gdc.dg/torture/torture.exp
index d498818..da3297b 100644
--- a/gcc/testsuite/gdc.dg/torture/torture.exp
+++ b/gcc/testsuite/gdc.dg/torture/torture.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gdc.dg/ubsan/ubsan.exp b/gcc/testsuite/gdc.dg/ubsan/ubsan.exp
index b8db551..8df06da 100644
--- a/gcc/testsuite/gdc.dg/ubsan/ubsan.exp
+++ b/gcc/testsuite/gdc.dg/ubsan/ubsan.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2019-2020 Free Software Foundation, Inc.
+# Copyright (C) 2019-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gdc.test/compilable/99bottles.d b/gcc/testsuite/gdc.test/compilable/99bottles.d
index e7d2f77..09360a8 100644
--- a/gcc/testsuite/gdc.test/compilable/99bottles.d
+++ b/gcc/testsuite/gdc.test/compilable/99bottles.d
@@ -2,7 +2,7 @@
// http://www.digitalmars.com/d/archives/digitalmars/D/announce/4374.html
// http://www.99-bottles-of-beer.net/language-d-1212.html
-// Displays the "99 bottles of beer" song at compile time,
+// Generates the "99 bottles of beer" song at compile time,
// using the template metaprograming facilities of D.
// No executable is generated. No libraries are used.
// Illustrates template default values, template string value parameters,
@@ -49,4 +49,505 @@ template beer(int maxbeers, int n = maxbeers)
~ showHowMany!( maxbeers, " on the wall.");
}
-pragma(msg, beer!(99));
+enum expected = `99 bottles of beer on the wall,
+99 bottles of beer.
+Take one down and pass it around,
+98 bottles of beer on the wall.
+
+98 bottles of beer on the wall,
+98 bottles of beer.
+Take one down and pass it around,
+97 bottles of beer on the wall.
+
+97 bottles of beer on the wall,
+97 bottles of beer.
+Take one down and pass it around,
+96 bottles of beer on the wall.
+
+96 bottles of beer on the wall,
+96 bottles of beer.
+Take one down and pass it around,
+95 bottles of beer on the wall.
+
+95 bottles of beer on the wall,
+95 bottles of beer.
+Take one down and pass it around,
+94 bottles of beer on the wall.
+
+94 bottles of beer on the wall,
+94 bottles of beer.
+Take one down and pass it around,
+93 bottles of beer on the wall.
+
+93 bottles of beer on the wall,
+93 bottles of beer.
+Take one down and pass it around,
+92 bottles of beer on the wall.
+
+92 bottles of beer on the wall,
+92 bottles of beer.
+Take one down and pass it around,
+91 bottles of beer on the wall.
+
+91 bottles of beer on the wall,
+91 bottles of beer.
+Take one down and pass it around,
+90 bottles of beer on the wall.
+
+90 bottles of beer on the wall,
+90 bottles of beer.
+Take one down and pass it around,
+89 bottles of beer on the wall.
+
+89 bottles of beer on the wall,
+89 bottles of beer.
+Take one down and pass it around,
+88 bottles of beer on the wall.
+
+88 bottles of beer on the wall,
+88 bottles of beer.
+Take one down and pass it around,
+87 bottles of beer on the wall.
+
+87 bottles of beer on the wall,
+87 bottles of beer.
+Take one down and pass it around,
+86 bottles of beer on the wall.
+
+86 bottles of beer on the wall,
+86 bottles of beer.
+Take one down and pass it around,
+85 bottles of beer on the wall.
+
+85 bottles of beer on the wall,
+85 bottles of beer.
+Take one down and pass it around,
+84 bottles of beer on the wall.
+
+84 bottles of beer on the wall,
+84 bottles of beer.
+Take one down and pass it around,
+83 bottles of beer on the wall.
+
+83 bottles of beer on the wall,
+83 bottles of beer.
+Take one down and pass it around,
+82 bottles of beer on the wall.
+
+82 bottles of beer on the wall,
+82 bottles of beer.
+Take one down and pass it around,
+81 bottles of beer on the wall.
+
+81 bottles of beer on the wall,
+81 bottles of beer.
+Take one down and pass it around,
+80 bottles of beer on the wall.
+
+80 bottles of beer on the wall,
+80 bottles of beer.
+Take one down and pass it around,
+79 bottles of beer on the wall.
+
+79 bottles of beer on the wall,
+79 bottles of beer.
+Take one down and pass it around,
+78 bottles of beer on the wall.
+
+78 bottles of beer on the wall,
+78 bottles of beer.
+Take one down and pass it around,
+77 bottles of beer on the wall.
+
+77 bottles of beer on the wall,
+77 bottles of beer.
+Take one down and pass it around,
+76 bottles of beer on the wall.
+
+76 bottles of beer on the wall,
+76 bottles of beer.
+Take one down and pass it around,
+75 bottles of beer on the wall.
+
+75 bottles of beer on the wall,
+75 bottles of beer.
+Take one down and pass it around,
+74 bottles of beer on the wall.
+
+74 bottles of beer on the wall,
+74 bottles of beer.
+Take one down and pass it around,
+73 bottles of beer on the wall.
+
+73 bottles of beer on the wall,
+73 bottles of beer.
+Take one down and pass it around,
+72 bottles of beer on the wall.
+
+72 bottles of beer on the wall,
+72 bottles of beer.
+Take one down and pass it around,
+71 bottles of beer on the wall.
+
+71 bottles of beer on the wall,
+71 bottles of beer.
+Take one down and pass it around,
+70 bottles of beer on the wall.
+
+70 bottles of beer on the wall,
+70 bottles of beer.
+Take one down and pass it around,
+69 bottles of beer on the wall.
+
+69 bottles of beer on the wall,
+69 bottles of beer.
+Take one down and pass it around,
+68 bottles of beer on the wall.
+
+68 bottles of beer on the wall,
+68 bottles of beer.
+Take one down and pass it around,
+67 bottles of beer on the wall.
+
+67 bottles of beer on the wall,
+67 bottles of beer.
+Take one down and pass it around,
+66 bottles of beer on the wall.
+
+66 bottles of beer on the wall,
+66 bottles of beer.
+Take one down and pass it around,
+65 bottles of beer on the wall.
+
+65 bottles of beer on the wall,
+65 bottles of beer.
+Take one down and pass it around,
+64 bottles of beer on the wall.
+
+64 bottles of beer on the wall,
+64 bottles of beer.
+Take one down and pass it around,
+63 bottles of beer on the wall.
+
+63 bottles of beer on the wall,
+63 bottles of beer.
+Take one down and pass it around,
+62 bottles of beer on the wall.
+
+62 bottles of beer on the wall,
+62 bottles of beer.
+Take one down and pass it around,
+61 bottles of beer on the wall.
+
+61 bottles of beer on the wall,
+61 bottles of beer.
+Take one down and pass it around,
+60 bottles of beer on the wall.
+
+60 bottles of beer on the wall,
+60 bottles of beer.
+Take one down and pass it around,
+59 bottles of beer on the wall.
+
+59 bottles of beer on the wall,
+59 bottles of beer.
+Take one down and pass it around,
+58 bottles of beer on the wall.
+
+58 bottles of beer on the wall,
+58 bottles of beer.
+Take one down and pass it around,
+57 bottles of beer on the wall.
+
+57 bottles of beer on the wall,
+57 bottles of beer.
+Take one down and pass it around,
+56 bottles of beer on the wall.
+
+56 bottles of beer on the wall,
+56 bottles of beer.
+Take one down and pass it around,
+55 bottles of beer on the wall.
+
+55 bottles of beer on the wall,
+55 bottles of beer.
+Take one down and pass it around,
+54 bottles of beer on the wall.
+
+54 bottles of beer on the wall,
+54 bottles of beer.
+Take one down and pass it around,
+53 bottles of beer on the wall.
+
+53 bottles of beer on the wall,
+53 bottles of beer.
+Take one down and pass it around,
+52 bottles of beer on the wall.
+
+52 bottles of beer on the wall,
+52 bottles of beer.
+Take one down and pass it around,
+51 bottles of beer on the wall.
+
+51 bottles of beer on the wall,
+51 bottles of beer.
+Take one down and pass it around,
+50 bottles of beer on the wall.
+
+50 bottles of beer on the wall,
+50 bottles of beer.
+Take one down and pass it around,
+49 bottles of beer on the wall.
+
+49 bottles of beer on the wall,
+49 bottles of beer.
+Take one down and pass it around,
+48 bottles of beer on the wall.
+
+48 bottles of beer on the wall,
+48 bottles of beer.
+Take one down and pass it around,
+47 bottles of beer on the wall.
+
+47 bottles of beer on the wall,
+47 bottles of beer.
+Take one down and pass it around,
+46 bottles of beer on the wall.
+
+46 bottles of beer on the wall,
+46 bottles of beer.
+Take one down and pass it around,
+45 bottles of beer on the wall.
+
+45 bottles of beer on the wall,
+45 bottles of beer.
+Take one down and pass it around,
+44 bottles of beer on the wall.
+
+44 bottles of beer on the wall,
+44 bottles of beer.
+Take one down and pass it around,
+43 bottles of beer on the wall.
+
+43 bottles of beer on the wall,
+43 bottles of beer.
+Take one down and pass it around,
+42 bottles of beer on the wall.
+
+42 bottles of beer on the wall,
+42 bottles of beer.
+Take one down and pass it around,
+41 bottles of beer on the wall.
+
+41 bottles of beer on the wall,
+41 bottles of beer.
+Take one down and pass it around,
+40 bottles of beer on the wall.
+
+40 bottles of beer on the wall,
+40 bottles of beer.
+Take one down and pass it around,
+39 bottles of beer on the wall.
+
+39 bottles of beer on the wall,
+39 bottles of beer.
+Take one down and pass it around,
+38 bottles of beer on the wall.
+
+38 bottles of beer on the wall,
+38 bottles of beer.
+Take one down and pass it around,
+37 bottles of beer on the wall.
+
+37 bottles of beer on the wall,
+37 bottles of beer.
+Take one down and pass it around,
+36 bottles of beer on the wall.
+
+36 bottles of beer on the wall,
+36 bottles of beer.
+Take one down and pass it around,
+35 bottles of beer on the wall.
+
+35 bottles of beer on the wall,
+35 bottles of beer.
+Take one down and pass it around,
+34 bottles of beer on the wall.
+
+34 bottles of beer on the wall,
+34 bottles of beer.
+Take one down and pass it around,
+33 bottles of beer on the wall.
+
+33 bottles of beer on the wall,
+33 bottles of beer.
+Take one down and pass it around,
+32 bottles of beer on the wall.
+
+32 bottles of beer on the wall,
+32 bottles of beer.
+Take one down and pass it around,
+31 bottles of beer on the wall.
+
+31 bottles of beer on the wall,
+31 bottles of beer.
+Take one down and pass it around,
+30 bottles of beer on the wall.
+
+30 bottles of beer on the wall,
+30 bottles of beer.
+Take one down and pass it around,
+29 bottles of beer on the wall.
+
+29 bottles of beer on the wall,
+29 bottles of beer.
+Take one down and pass it around,
+28 bottles of beer on the wall.
+
+28 bottles of beer on the wall,
+28 bottles of beer.
+Take one down and pass it around,
+27 bottles of beer on the wall.
+
+27 bottles of beer on the wall,
+27 bottles of beer.
+Take one down and pass it around,
+26 bottles of beer on the wall.
+
+26 bottles of beer on the wall,
+26 bottles of beer.
+Take one down and pass it around,
+25 bottles of beer on the wall.
+
+25 bottles of beer on the wall,
+25 bottles of beer.
+Take one down and pass it around,
+24 bottles of beer on the wall.
+
+24 bottles of beer on the wall,
+24 bottles of beer.
+Take one down and pass it around,
+23 bottles of beer on the wall.
+
+23 bottles of beer on the wall,
+23 bottles of beer.
+Take one down and pass it around,
+22 bottles of beer on the wall.
+
+22 bottles of beer on the wall,
+22 bottles of beer.
+Take one down and pass it around,
+21 bottles of beer on the wall.
+
+21 bottles of beer on the wall,
+21 bottles of beer.
+Take one down and pass it around,
+20 bottles of beer on the wall.
+
+20 bottles of beer on the wall,
+20 bottles of beer.
+Take one down and pass it around,
+19 bottles of beer on the wall.
+
+19 bottles of beer on the wall,
+19 bottles of beer.
+Take one down and pass it around,
+18 bottles of beer on the wall.
+
+18 bottles of beer on the wall,
+18 bottles of beer.
+Take one down and pass it around,
+17 bottles of beer on the wall.
+
+17 bottles of beer on the wall,
+17 bottles of beer.
+Take one down and pass it around,
+16 bottles of beer on the wall.
+
+16 bottles of beer on the wall,
+16 bottles of beer.
+Take one down and pass it around,
+15 bottles of beer on the wall.
+
+15 bottles of beer on the wall,
+15 bottles of beer.
+Take one down and pass it around,
+14 bottles of beer on the wall.
+
+14 bottles of beer on the wall,
+14 bottles of beer.
+Take one down and pass it around,
+13 bottles of beer on the wall.
+
+13 bottles of beer on the wall,
+13 bottles of beer.
+Take one down and pass it around,
+12 bottles of beer on the wall.
+
+12 bottles of beer on the wall,
+12 bottles of beer.
+Take one down and pass it around,
+11 bottles of beer on the wall.
+
+11 bottles of beer on the wall,
+11 bottles of beer.
+Take one down and pass it around,
+10 bottles of beer on the wall.
+
+10 bottles of beer on the wall,
+10 bottles of beer.
+Take one down and pass it around,
+9 bottles of beer on the wall.
+
+9 bottles of beer on the wall,
+9 bottles of beer.
+Take one down and pass it around,
+8 bottles of beer on the wall.
+
+8 bottles of beer on the wall,
+8 bottles of beer.
+Take one down and pass it around,
+7 bottles of beer on the wall.
+
+7 bottles of beer on the wall,
+7 bottles of beer.
+Take one down and pass it around,
+6 bottles of beer on the wall.
+
+6 bottles of beer on the wall,
+6 bottles of beer.
+Take one down and pass it around,
+5 bottles of beer on the wall.
+
+5 bottles of beer on the wall,
+5 bottles of beer.
+Take one down and pass it around,
+4 bottles of beer on the wall.
+
+4 bottles of beer on the wall,
+4 bottles of beer.
+Take one down and pass it around,
+3 bottles of beer on the wall.
+
+3 bottles of beer on the wall,
+3 bottles of beer.
+Take one down and pass it around,
+2 bottles of beer on the wall.
+
+2 bottles of beer on the wall,
+2 bottles of beer.
+Take one down and pass it around,
+1 bottle of beer on the wall.
+
+1 bottle of beer on the wall,
+1 bottle of beer.
+Take one down and pass it around,
+no more bottles of beer on the wall.
+
+No more bottles of beer on the wall,
+no more bottles of beer.
+Go to the store and buy some more,
+99 bottles of beer on the wall.
+`;
+
+static assert(beer!(99) == expected);
diff --git a/gcc/testsuite/gdc.test/compilable/Test16206.d b/gcc/testsuite/gdc.test/compilable/Test16206.d
new file mode 100644
index 0000000..0b9ccf3
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/Test16206.d
@@ -0,0 +1,28 @@
+struct S {
+ static int foo()() { return 0; }
+ static int foo()(int n) { return 1; }
+ static int foo(string s) { return 2; }
+ enum foo(int[] arr) = arr.length;
+}
+
+alias AliasSeq(T...) = T;
+
+alias allFoos = AliasSeq!(__traits(getOverloads, S, "foo", true));
+
+static assert(allFoos.length == 4);
+
+static assert(allFoos[0]("") == 2);
+static assert(allFoos[1]() == 0);
+static assert(allFoos[2](1) == 1);
+alias foo3 = allFoos[3];
+static assert(foo3!([]) == 0);
+
+static assert(S.foo() == 0);
+static assert(S.foo(1) == 1);
+static assert(S.foo("") == 2);
+static assert(S.foo!([]) == 0);
+
+
+alias fooFuns = AliasSeq!(__traits(getOverloads, S, "foo"));
+static assert(fooFuns.length == 1);
+static assert(fooFuns[0]("") == 2); \ No newline at end of file
diff --git a/gcc/testsuite/gdc.test/compilable/b16382.d b/gcc/testsuite/gdc.test/compilable/b16382.d
index 08726cb..e28ad18 100644
--- a/gcc/testsuite/gdc.test/compilable/b16382.d
+++ b/gcc/testsuite/gdc.test/compilable/b16382.d
@@ -1,4 +1,10 @@
// REQUIRED_ARGS: -c
+/*
+TEST_OUTPUT:
+---
+&this
+---
+*/
struct S0 {
void foo() {
pragma(msg, &this);
diff --git a/gcc/testsuite/gdc.test/compilable/b17111.d b/gcc/testsuite/gdc.test/compilable/b17111.d
index 5409124..6bf5da9 100644
--- a/gcc/testsuite/gdc.test/compilable/b17111.d
+++ b/gcc/testsuite/gdc.test/compilable/b17111.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+compilable/b17111.d(16): Deprecation: `case` variables have to be `const` or `immutable`
+compilable/b17111.d(17): Deprecation: `case` variables have to be `const` or `immutable`
+---
+*/
alias TestType = ubyte;
void test()
diff --git a/gcc/testsuite/gdc.test/compilable/checkimports3.d b/gcc/testsuite/gdc.test/compilable/checkimports3.d
new file mode 100644
index 0000000..770b382
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/checkimports3.d
@@ -0,0 +1,12 @@
+/*
+REQUIRED_ARGS: -de
+EXTRA_FILES: imports/checkimports3a.d imports/checkimports3b.d imports/checkimports3c.d
+*/
+import imports.checkimports3a;
+import imports.checkimports3b;
+import imports.checkimports3c;
+
+void test()
+{
+ foo();
+}
diff --git a/gcc/testsuite/gdc.test/compilable/compilable.exp b/gcc/testsuite/gdc.test/compilable/compilable.exp
index e2af832..4f3100a 100644
--- a/gcc/testsuite/gdc.test/compilable/compilable.exp
+++ b/gcc/testsuite/gdc.test/compilable/compilable.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gdc.test/compilable/compile1.d b/gcc/testsuite/gdc.test/compilable/compile1.d
index 61669c2..86d84af 100644
--- a/gcc/testsuite/gdc.test/compilable/compile1.d
+++ b/gcc/testsuite/gdc.test/compilable/compile1.d
@@ -15,9 +15,9 @@ static assert(C1748!int.stringof == "C1748!int");
**************************************************/
version(all)
- pragma(msg, "true");
+ pragma(inline, true);
else
- pragma(msg, "false");
+ pragma(inline, false);
/**************************************************
2438
@@ -78,7 +78,7 @@ template ice8982(T)
void bug8982(ref const int v = 7){}
static if (is(typeof(bug8982) P == __parameters)) {
- pragma(msg, ((P[0..1] g) => g[0])());
+ enum eval8982 = ((P[0..1] g) => g[0])();
}
}
@@ -275,7 +275,7 @@ void main()
try
{
}
- catch
+ catch(.object.Throwable)
{
}
}
@@ -298,7 +298,7 @@ void test11939()
**************************************************/
template A(B) {
- pragma(msg, "missing ;")
+ pragma(lib, "missing ;")
enum X = 0;
}
@@ -766,7 +766,7 @@ struct A12799
/***************************************************/
// 13236
-pragma(msg, is(typeof({ struct S { S x; } })));
+enum bug13286 = is(typeof({ struct S { S x; } }));
/***************************************************/
// 13280
@@ -857,14 +857,15 @@ X14166[int] makeAA14166() { return aa14166; }
struct Tup14166(T...) { T field; alias field this; }
Tup14166!(int, int) tup14166;
Tup14166!(int, int) makeTup14166() { return tup14166; }
-
-pragma(msg, typeof((s14166.x += 1) = 2)); // ok <- error
-pragma(msg, typeof(s14166.a.length += 2)); // ok <- error
-pragma(msg, typeof(s14166++)); // ok <- error
-pragma(msg, typeof(s14166.x ^^ 2)); // ok <- error
-pragma(msg, typeof(s14166.y ^^= 2.5)); // ok <- error
-pragma(msg, typeof(makeAA14166()[0] = 1)); // ok <- error
-pragma(msg, typeof(tup14166.field = makeTup14166())); // ok <- error
+alias TT14166(T...) = T;
+
+static assert(is(typeof((s14166.x += 1) = 2) == int)); // ok <- error
+static assert(is(typeof(s14166.a.length += 2) == size_t)); // ok <- error
+static assert(is(typeof(s14166++) == S14166)); // ok <- error
+static assert(is(typeof(s14166.x ^^ 2) == int)); // ok <- error
+static assert(is(typeof(s14166.y ^^= 2.5) == double)); // ok <- error
+static assert(is(typeof(makeAA14166()[0] = 1) == X14166)); // ok <- error
+static assert(is(typeof(tup14166.field = makeTup14166()) == TT14166!(int, int))); // ok <- error
/***************************************************/
// 14388
diff --git a/gcc/testsuite/gdc.test/compilable/ddoc14633.d b/gcc/testsuite/gdc.test/compilable/ddoc14633.d
index 759287c..af39633 100644
--- a/gcc/testsuite/gdc.test/compilable/ddoc14633.d
+++ b/gcc/testsuite/gdc.test/compilable/ddoc14633.d
@@ -1,12 +1,6 @@
// PERMUTE_ARGS:
// REQUIRED_ARGS: -D -Dd${RESULTS_DIR}/compilable -w -o-
-/*
-TEST_OUTPUT:
----
----
-*/
-
/** Blah
Params:
T = some type
diff --git a/gcc/testsuite/gdc.test/compilable/ddoc3.d b/gcc/testsuite/gdc.test/compilable/ddoc3.d
index bc00b69..1bcae41 100644
--- a/gcc/testsuite/gdc.test/compilable/ddoc3.d
+++ b/gcc/testsuite/gdc.test/compilable/ddoc3.d
@@ -1,7 +1,7 @@
// EXTRA_SOURCES: extra-files/ddoc3.ddoc
// PERMUTE_ARGS:
// REQUIRED_ARGS: -D -Dd${RESULTS_DIR}/compilable -o-
-// POST_SCRIPT: compilable/extra-files/ddocAny-postscript.sh 3
+// POST_SCRIPT: compilable/extra-files/ddocAny-postscript.sh
/**
* Summary
diff --git a/gcc/testsuite/gdc.test/compilable/deprecate14283.d b/gcc/testsuite/gdc.test/compilable/deprecate14283.d
index 9c82add..e91db64 100644
--- a/gcc/testsuite/gdc.test/compilable/deprecate14283.d
+++ b/gcc/testsuite/gdc.test/compilable/deprecate14283.d
@@ -1,11 +1,5 @@
// REQUIRED_ARGS: -dw
// PERMUTE_ARGS:
-/*
-TEST_OUTPUT:
----
----
-*/
-
class C
{
void bug()
diff --git a/gcc/testsuite/gdc.test/compilable/diag11066.d b/gcc/testsuite/gdc.test/compilable/diag11066.d
index 3d93831..598ff85 100644
--- a/gcc/testsuite/gdc.test/compilable/diag11066.d
+++ b/gcc/testsuite/gdc.test/compilable/diag11066.d
@@ -1,10 +1,4 @@
// REQUIRED_ARGS: -w -profile
-/*
-TEST_OUTPUT:
----
----
-*/
-
void main()
{
string s;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/diag12598.d b/gcc/testsuite/gdc.test/compilable/diag12598.d
index 236692d..8f98188 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/diag12598.d
+++ b/gcc/testsuite/gdc.test/compilable/diag12598.d
@@ -1,9 +1,6 @@
/*
-REQUIRED_ARGS: -transition=import
-TEST_OUTPUT:
----
-fail_compilation/diag12598.d(14): Error: struct 'lines' is a type, not an lvalue
----
+REQUIRED_ARGS:
+EXTRA_FILES: imports/diag12598a.d
*/
class C
diff --git a/gcc/testsuite/gdc.test/compilable/diag3243.d b/gcc/testsuite/gdc.test/compilable/diag3243.d
index b25d0bb..7d034d8 100644
--- a/gcc/testsuite/gdc.test/compilable/diag3243.d
+++ b/gcc/testsuite/gdc.test/compilable/diag3243.d
@@ -1,11 +1,5 @@
// REQUIRED_ARGS: -vtls
// PERMUTE_ARGS:
-/*
-TEST_OUTPUT:
----
----
-*/
-
template T()
{
static this() {}
diff --git a/gcc/testsuite/gdc.test/compilable/dip22d.d b/gcc/testsuite/gdc.test/compilable/dip22d.d
new file mode 100644
index 0000000..1becf0c
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/dip22d.d
@@ -0,0 +1,10 @@
+/*
+REQUIRED_ARGS:
+*/
+
+// https://github.com/dlang/DIPs/blob/master/DIPs/archive/DIP22.md
+
+import imports.dip22d;
+import imports.dip22e;
+
+Foo foo;
diff --git a/gcc/testsuite/gdc.test/compilable/extra-files/header1.d b/gcc/testsuite/gdc.test/compilable/extra-files/header1.d
index a746a2a..5eb6afd 100644
--- a/gcc/testsuite/gdc.test/compilable/extra-files/header1.d
+++ b/gcc/testsuite/gdc.test/compilable/extra-files/header1.d
@@ -10,6 +10,30 @@ static assert(true, "message");
alias double mydbl;
+alias fl1 = function ()
+ in {}
+ in (true)
+ out (; true)
+ out (r; true)
+ out
+ {
+ }
+ out (r)
+ {
+ }
+ do
+ {
+ return 2;
+ };
+
+alias fl2 = function ()
+ in (true)
+ out(; true)
+ out(r; true)
+ {
+ return 2;
+ };
+
int testmain()
in
{
@@ -133,11 +157,11 @@ template Foo(T, int V)
}
try
- bar(1, 2);
+ bar(1, 2);
catch(Object o)
- x++;
+ x++;
finally
- x--;
+ x--;
Object o;
synchronized (o)
@@ -244,6 +268,7 @@ class Test
pure nothrow @safe @nogc unittest {}
pure nothrow @safe @nogc invariant {}
+ pure nothrow @safe @nogc invariant (true);
pure nothrow @safe @nogc new (size_t sz) { return null; }
pure nothrow @safe @nogc delete (void* p) { }
@@ -519,3 +544,21 @@ struct Foo3A(T)
@disable this(this);
@disable this();
}
+
+void test13x(@(10) int a, @(20) int, @(30) @(40) int[] arr...) {}
+
+enum Test14UDA1;
+struct Test14UDA2
+{
+ string str;
+}
+
+Test14UDA2 test14uda3(string name)
+{
+ return Test14UDA2(name);
+}
+struct Test14UDA4(string v){}
+
+void test14x(@Test14UDA1 int, @Test14UDA2("1") int, @test14uda3("2") int, @Test14UDA4!"3" int) {}
+
+void test15x(@(20) void delegate(int) @safe dg){}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/imports/checkimports3a.d b/gcc/testsuite/gdc.test/compilable/imports/checkimports3a.d
index 85e6cd8..85e6cd8 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/imports/checkimports3a.d
+++ b/gcc/testsuite/gdc.test/compilable/imports/checkimports3a.d
diff --git a/gcc/testsuite/gdc.test/fail_compilation/imports/checkimports3b.d b/gcc/testsuite/gdc.test/compilable/imports/checkimports3b.d
index 37ea7ae..37ea7ae 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/imports/checkimports3b.d
+++ b/gcc/testsuite/gdc.test/compilable/imports/checkimports3b.d
diff --git a/gcc/testsuite/gdc.test/fail_compilation/imports/checkimports3c.d b/gcc/testsuite/gdc.test/compilable/imports/checkimports3c.d
index 93b4ac5..93b4ac5 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/imports/checkimports3c.d
+++ b/gcc/testsuite/gdc.test/compilable/imports/checkimports3c.d
diff --git a/gcc/testsuite/gdc.test/fail_compilation/imports/diag12598a.d b/gcc/testsuite/gdc.test/compilable/imports/diag12598a.d
index dee0054..dee0054 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/imports/diag12598a.d
+++ b/gcc/testsuite/gdc.test/compilable/imports/diag12598a.d
diff --git a/gcc/testsuite/gdc.test/compilable/imports/dip22d.d b/gcc/testsuite/gdc.test/compilable/imports/dip22d.d
new file mode 100644
index 0000000..9f80442
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/imports/dip22d.d
@@ -0,0 +1,5 @@
+module imports.dip22d;
+
+private struct Foo {}
+private void foo() {}
+private void bar() {}
diff --git a/gcc/testsuite/gdc.test/compilable/imports/dip22e.d b/gcc/testsuite/gdc.test/compilable/imports/dip22e.d
new file mode 100644
index 0000000..3464e60
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/imports/dip22e.d
@@ -0,0 +1,4 @@
+module imports.dip22e;
+
+public struct Foo {}
+public void bar(int) {}
diff --git a/gcc/testsuite/gdc.test/compilable/imports/pkgmodule/package.d b/gcc/testsuite/gdc.test/compilable/imports/pkgmodule/package.d
new file mode 100644
index 0000000..b6e98ff
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/imports/pkgmodule/package.d
@@ -0,0 +1,3 @@
+/// Used to test is(x == package) and is(x == module)
+
+module imports.pkgmodule;
diff --git a/gcc/testsuite/gdc.test/compilable/imports/pkgmodule/plainmodule.d b/gcc/testsuite/gdc.test/compilable/imports/pkgmodule/plainmodule.d
new file mode 100644
index 0000000..948a87e
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/imports/pkgmodule/plainmodule.d
@@ -0,0 +1,2 @@
+/// Used to test is(x == module)
+module imports.pkgmodule.plainmodule;
diff --git a/gcc/testsuite/gdc.test/compilable/imports/plainpackage/plainmodule.d b/gcc/testsuite/gdc.test/compilable/imports/plainpackage/plainmodule.d
new file mode 100644
index 0000000..9e9933b
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/imports/plainpackage/plainmodule.d
@@ -0,0 +1,4 @@
+/// Used to test is(x == module)
+
+module imports.plainpackage.plainmodule;
+
diff --git a/gcc/testsuite/gdc.test/compilable/imports/test15371.d b/gcc/testsuite/gdc.test/compilable/imports/test15371.d
new file mode 100644
index 0000000..49b446a
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/imports/test15371.d
@@ -0,0 +1,9 @@
+module imports.test15371;
+
+struct A
+{
+ private int a;
+ private void fun() {}
+ private void fun(int, int) {}
+ public void fun(int) {}
+}
diff --git a/gcc/testsuite/gdc.test/compilable/interpret3.d b/gcc/testsuite/gdc.test/compilable/interpret3.d
index 6e7304d..a2830ea 100644
--- a/gcc/testsuite/gdc.test/compilable/interpret3.d
+++ b/gcc/testsuite/gdc.test/compilable/interpret3.d
@@ -1,4 +1,11 @@
-// PERMUTE_ARGS: -inline
+// PERMUTE_ARGS: -inline
+/*
+TEST_OUTPUT:
+---
+compilable/interpret3.d(2914): Deprecation: `case` variables have to be `const` or `immutable`
+compilable/interpret3.d(6351): Deprecation: identity comparison of static arrays implicitly coerces them to slices, which are compared by reference
+---
+*/
template compiles(int T)
{
diff --git a/gcc/testsuite/gdc.test/compilable/isZeroInit.d b/gcc/testsuite/gdc.test/compilable/isZeroInit.d
new file mode 100644
index 0000000..b5423cf
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/isZeroInit.d
@@ -0,0 +1,78 @@
+alias AliasSeq(T...) = T;
+
+struct Holder(T, ubyte val)
+{
+ T x = val;
+}
+
+struct SArrayHolder(T, ubyte val)
+{
+ T[2] x = val;
+}
+
+static foreach (T; AliasSeq!(bool, byte, short, int, long,
+ ubyte, ushort, uint, ulong,
+ char, wchar, dchar,
+ float, double, real))
+{
+ static assert(__traits(isZeroInit, T) == (T.init is T(0)));
+ static assert(__traits(isZeroInit, T[2]) == (T.init is T(0)));
+
+ static assert(!__traits(isZeroInit, Holder!(T, 1)));
+ static assert(__traits(isZeroInit, Holder!(T, 0)));
+
+ static assert(__traits(isZeroInit, SArrayHolder!(T, 0)));
+ static assert(!__traits(isZeroInit, SArrayHolder!(T, 1)));
+
+}
+
+static assert(__traits(isZeroInit, void)); // For initializing arrays of element type `void`.
+static assert(__traits(isZeroInit, void*));
+static assert(__traits(isZeroInit, void[]));
+static assert(__traits(isZeroInit, float[]));
+static assert(__traits(isZeroInit, Object));
+class C1 : Object
+{
+ int x = 1;
+}
+static assert(__traits(isZeroInit, C1)); // An Object's fields are irrelevant.
+
+struct S1
+{
+ int[] a;
+ int b;
+}
+static assert(__traits(isZeroInit, S1));
+
+struct S2
+{
+ alias H = Holder!(int, 1);
+ H h;
+ int a;
+}
+static assert(!__traits(isZeroInit, S2));
+
+struct S3
+{
+ S1 h;
+ float f = 0;
+}
+static assert(__traits(isZeroInit, S3));
+
+struct S4
+{
+ S2 h = S2(S2.H(0), 0);
+ int a;
+}
+static assert(__traits(isZeroInit, S4));
+
+struct S5
+{
+ Object o = null;
+}
+static assert(__traits(isZeroInit, S5));
+
+version(D_SIMD):
+import core.simd : int4;
+static assert(__traits(isZeroInit, Holder!(int4, 0)));
+static assert(!__traits(isZeroInit, Holder!(int4, 1)));
diff --git a/gcc/testsuite/gdc.test/compilable/isreturnonstack.d b/gcc/testsuite/gdc.test/compilable/isreturnonstack.d
new file mode 100644
index 0000000..8bdb97d
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/isreturnonstack.d
@@ -0,0 +1,7 @@
+struct S { int[10] a; }
+int test1();
+S test2();
+
+static assert(__traits(isReturnOnStack, test1) == false);
+static assert(__traits(isReturnOnStack, test2) == true);
+
diff --git a/gcc/testsuite/gdc.test/compilable/line.d b/gcc/testsuite/gdc.test/compilable/line.d
index 5122ed3..14e1789 100644
--- a/gcc/testsuite/gdc.test/compilable/line.d
+++ b/gcc/testsuite/gdc.test/compilable/line.d
@@ -19,12 +19,12 @@ static assert(__FILE_FULL_PATH__[$-__FILE__.length..$] == __FILE__);
static assert(__LINE__ == 101);
static assert(__FILE__ == "newfile.d");
-static assert(__FILE_FULL_PATH__ == "newfile.d");
+static assert(__FILE_FULL_PATH__[$ - 9 .. $] == "newfile.d");
# line 200
static assert(__LINE__ == 201);
static assert(__FILE__ == "newfile.d");
-static assert(__FILE_FULL_PATH__ == "newfile.d");
+static assert(__FILE_FULL_PATH__[$ - 9 .. $] == "newfile.d");
diff --git a/gcc/testsuite/gdc.test/compilable/test11563.d b/gcc/testsuite/gdc.test/compilable/test11563.d
index b208215b..6fb39fe 100644
--- a/gcc/testsuite/gdc.test/compilable/test11563.d
+++ b/gcc/testsuite/gdc.test/compilable/test11563.d
@@ -3,7 +3,7 @@ import imports.test11563std_traits;
interface J : I {} // comment out to let compilation succeed
struct A { }
-pragma(msg, moduleName!A);
+static assert(moduleName!A == "b");
interface I {}
diff --git a/gcc/testsuite/gdc.test/compilable/test12527.d b/gcc/testsuite/gdc.test/compilable/test12527.d
index b075b9e..b476c17 100644
--- a/gcc/testsuite/gdc.test/compilable/test12527.d
+++ b/gcc/testsuite/gdc.test/compilable/test12527.d
@@ -2,9 +2,7 @@
@system:
alias Fun = void function() @safe;
- pragma (msg, Fun.stringof);
static assert(Fun.stringof == "void function() @safe");
alias Del = void delegate() @safe;
- pragma (msg, Del.stringof);
static assert(Del.stringof == "void delegate() @safe");
diff --git a/gcc/testsuite/gdc.test/compilable/test12567a.d b/gcc/testsuite/gdc.test/compilable/test12567a.d
index 53cc377..464c840 100644
--- a/gcc/testsuite/gdc.test/compilable/test12567a.d
+++ b/gcc/testsuite/gdc.test/compilable/test12567a.d
@@ -1,10 +1,5 @@
// REQUIRED_ARGS:
// PERMUTE_ARGS:
-/*
-TEST_OUTPUT:
----
----
-*/
deprecated
module test12567a;
diff --git a/gcc/testsuite/gdc.test/compilable/test12567b.d b/gcc/testsuite/gdc.test/compilable/test12567b.d
index 2e37d31..9b9d7e1 100644
--- a/gcc/testsuite/gdc.test/compilable/test12567b.d
+++ b/gcc/testsuite/gdc.test/compilable/test12567b.d
@@ -1,10 +1,5 @@
// REQUIRED_ARGS:
// PERMUTE_ARGS:
-/*
-TEST_OUTPUT:
----
----
-*/
deprecated("message")
module test12567b;
diff --git a/gcc/testsuite/gdc.test/compilable/test12567d.d b/gcc/testsuite/gdc.test/compilable/test12567d.d
index 512f0b7..ee7bc29 100644
--- a/gcc/testsuite/gdc.test/compilable/test12567d.d
+++ b/gcc/testsuite/gdc.test/compilable/test12567d.d
@@ -1,10 +1,5 @@
// REQUIRED_ARGS: -d
// PERMUTE_ARGS:
-/*
-TEST_OUTPUT:
----
----
-*/
import imports.a12567;
void main() { foo(); }
diff --git a/gcc/testsuite/gdc.test/compilable/test12567e.d b/gcc/testsuite/gdc.test/compilable/test12567e.d
index 14c72bc..2e74cf7 100644
--- a/gcc/testsuite/gdc.test/compilable/test12567e.d
+++ b/gcc/testsuite/gdc.test/compilable/test12567e.d
@@ -1,7 +1,2 @@
// REQUIRED_ARGS: -o-
-/*
-TEST_OUTPUT:
----
----
-*/
deprecated("a" ~ "b") module fail12567;
diff --git a/gcc/testsuite/gdc.test/compilable/test13053.d b/gcc/testsuite/gdc.test/compilable/test13053.d
index 3f8b421..ddd4c90 100644
--- a/gcc/testsuite/gdc.test/compilable/test13053.d
+++ b/gcc/testsuite/gdc.test/compilable/test13053.d
@@ -1,10 +1,4 @@
// PERMUTE_ARGS: -w -wi
-/*
-TEST_OUTPUT:
----
----
-*/
-
@system:
struct S
diff --git a/gcc/testsuite/gdc.test/compilable/test14375.d b/gcc/testsuite/gdc.test/compilable/test14375.d
index 30206d8..ccff8d5 100644
--- a/gcc/testsuite/gdc.test/compilable/test14375.d
+++ b/gcc/testsuite/gdc.test/compilable/test14375.d
@@ -1,8 +1,4 @@
-/*
-TEST_OUTPUT:
----
----
- */
+// https://issues.dlang.org/show_bug.cgi?id=14375
interface IKeysAPI(string greetings) {
static assert(greetings == "Hello world", greetings);
}
diff --git a/gcc/testsuite/gdc.test/compilable/test15019.d b/gcc/testsuite/gdc.test/compilable/test15019.d
index c294875..963dba8 100644
--- a/gcc/testsuite/gdc.test/compilable/test15019.d
+++ b/gcc/testsuite/gdc.test/compilable/test15019.d
@@ -42,15 +42,15 @@ alias mat4x4 mat4;
string definePostfixAliases(string type)
{
return "alias " ~ type ~ "!byte " ~ type ~ "b;\n"
-"alias " ~ type ~ "!ubyte " ~ type ~ "ub;\n"
-"alias " ~ type ~ "!short " ~ type ~ "s;\n"
-"alias " ~ type ~ "!ushort " ~ type ~ "us;\n"
-"alias " ~ type ~ "!int " ~ type ~ "i;\n"
-"alias " ~ type ~ "!uint " ~ type ~ "ui;\n"
-"alias " ~ type ~ "!long " ~ type ~ "l;\n"
-"alias " ~ type ~ "!ulong " ~ type ~ "ul;\n"
-"alias " ~ type ~ "!float " ~ type ~ "f;\n"
-"alias " ~ type ~ "!double " ~ type ~ "d;\n";
+~ "alias " ~ type ~ "!ubyte " ~ type ~ "ub;\n"
+~ "alias " ~ type ~ "!short " ~ type ~ "s;\n"
+~ "alias " ~ type ~ "!ushort " ~ type ~ "us;\n"
+~ "alias " ~ type ~ "!int " ~ type ~ "i;\n"
+~ "alias " ~ type ~ "!uint " ~ type ~ "ui;\n"
+~ "alias " ~ type ~ "!long " ~ type ~ "l;\n"
+~ "alias " ~ type ~ "!ulong " ~ type ~ "ul;\n"
+~ "alias " ~ type ~ "!float " ~ type ~ "f;\n"
+~ "alias " ~ type ~ "!double " ~ type ~ "d;\n";
}
// define a lot of type names
diff --git a/gcc/testsuite/gdc.test/compilable/test15326.d b/gcc/testsuite/gdc.test/compilable/test15326.d
index 05c942b..c88f5d0 100644
--- a/gcc/testsuite/gdc.test/compilable/test15326.d
+++ b/gcc/testsuite/gdc.test/compilable/test15326.d
@@ -5,19 +5,19 @@ private struct _NestedSym_
{
static if ((void*).sizeof == 8)
{
- pragma(msg, "64");
+ int pointersize = 64;
}
else
{
- pragma(msg, "32");
+ int pointersize = 32;
}
version (X86_64)
{
- pragma(msg, "X86_64");
+ string arch = "X86_64";
}
else
{
- pragma(msg, "Not 64");
+ string arch = "Not 64";
}
}
diff --git a/gcc/testsuite/gdc.test/compilable/test15371.d b/gcc/testsuite/gdc.test/compilable/test15371.d
new file mode 100644
index 0000000..6e762be
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/test15371.d
@@ -0,0 +1,10 @@
+// EXTRA_FILES: imports/test15371.d
+import imports.test15371;
+
+void main()
+{
+ A a;
+ static assert(__traits(hasMember, A, "a"));
+ static assert(__traits(getOverloads, A, "fun").length == 3);
+ static assert(__traits(compiles, __traits(getMember, a, "a") ));
+}
diff --git a/gcc/testsuite/gdc.test/compilable/test15785.d b/gcc/testsuite/gdc.test/compilable/test15785.d
index c8ad240..483c080 100644
--- a/gcc/testsuite/gdc.test/compilable/test15785.d
+++ b/gcc/testsuite/gdc.test/compilable/test15785.d
@@ -1,10 +1,5 @@
// REQUIRED_ARGS: -de
// PERMUTE_ARGS:
-/*
-TEST_OUTPUT:
----
----
-*/
import imports.test15785;
class Derived : Base, IBase2
diff --git a/gcc/testsuite/gdc.test/compilable/test15856.d b/gcc/testsuite/gdc.test/compilable/test15856.d
index b61d1c4..8a5c425 100644
--- a/gcc/testsuite/gdc.test/compilable/test15856.d
+++ b/gcc/testsuite/gdc.test/compilable/test15856.d
@@ -1,4 +1,4 @@
-// REQUIRED_ARGS: -transition=checkimports -de
+// REQUIRED_ARGS: -de
// PERMUTE_ARGS:
/*
TEST_PUTPUT:
diff --git a/gcc/testsuite/gdc.test/compilable/test15925.d b/gcc/testsuite/gdc.test/compilable/test15925.d
deleted file mode 100644
index 871af4e..0000000
--- a/gcc/testsuite/gdc.test/compilable/test15925.d
+++ /dev/null
@@ -1,18 +0,0 @@
-/* REQUIRED_ARGS: -transition=import -transition=checkimports
-PERMUTE_ARGS:
-TEST_OUTPUT:
----
-compilable/test15925.d(17): Deprecation: local import search method found variable imp15925.X instead of nothing
----
-*/
-
-mixin template Import()
-{
- import imports.imp15925;
-}
-
-class Foo
-{
- mixin Import!();
- static assert(X == 1);
-}
diff --git a/gcc/testsuite/gdc.test/compilable/test16002.d b/gcc/testsuite/gdc.test/compilable/test16002.d
new file mode 100644
index 0000000..f3303c0
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/test16002.d
@@ -0,0 +1,24 @@
+module test.compilable.test16002;
+
+import imports.plainpackage.plainmodule;
+import imports.pkgmodule.plainmodule;
+
+struct MyStruct;
+
+alias a = imports.plainpackage;
+alias b = imports.pkgmodule.plainmodule;
+
+static assert(is(imports.plainpackage == package));
+static assert(is(a == package));
+static assert(!is(imports.plainpackage.plainmodule == package));
+static assert(!is(b == package));
+static assert(is(imports.pkgmodule == package));
+static assert(!is(MyStruct == package));
+
+static assert(!is(imports.plainpackage == module));
+static assert(!is(a == module));
+static assert(is(imports.plainpackage.plainmodule == module));
+static assert(is(b == module));
+// This is supposed to work even though we haven't directly imported imports.pkgmodule.
+static assert(is(imports.pkgmodule == module));
+static assert(!is(MyStruct == module));
diff --git a/gcc/testsuite/gdc.test/compilable/test16525.d b/gcc/testsuite/gdc.test/compilable/test16525.d
index 6c85e0c..e4ce7ef 100644
--- a/gcc/testsuite/gdc.test/compilable/test16525.d
+++ b/gcc/testsuite/gdc.test/compilable/test16525.d
@@ -12,8 +12,8 @@ extern(C++) struct CPP
void test()
{
- pragma(msg, templ!(D.memvar));
- pragma(msg, templ!(CPP.memvar));
- // root cause, C++ member variables have no mangling
- pragma(msg, CPP.memvar.mangleof);
+ static assert(templ!(D.memvar) == 1234);
+ static assert(templ!(CPP.memvar) == 1234);
+ // ICE: root cause, C++ member variables have no mangling
+ enum CPPmemvar = CPP.memvar.mangleof;
}
diff --git a/gcc/testsuite/gdc.test/compilable/test17143.d b/gcc/testsuite/gdc.test/compilable/test17143.d
index 403c9aa..98e31f4 100644
--- a/gcc/testsuite/gdc.test/compilable/test17143.d
+++ b/gcc/testsuite/gdc.test/compilable/test17143.d
@@ -1,4 +1,4 @@
import std.typecons : tuple;
enum foo = tuple(1, 2).expand;
-pragma(msg, typeof(foo).stringof);
-pragma(msg, foo.stringof);
+static assert(typeof(foo).stringof == "(int, int)");
+static assert(foo.stringof == "tuple(1, 2)");
diff --git a/gcc/testsuite/gdc.test/compilable/test17791.d b/gcc/testsuite/gdc.test/compilable/test17791.d
new file mode 100644
index 0000000..cfd0244
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/test17791.d
@@ -0,0 +1,23 @@
+// REQUIRED_ARGS: -de
+deprecated("A deprecated class") {
+class DepClass
+{
+}
+}
+
+class NewClass
+{
+}
+
+void main()
+{
+ // test that a symbol (which is not likely to be deprecated)
+ // is not depercated
+ static assert(!__traits(isDeprecated, int));
+ // check that a class marked deprecated "isDeprecated"
+ static assert(__traits(isDeprecated, DepClass));
+ // check that a class not marked deprecated is not deprecated
+ static assert(!__traits(isDeprecated, NewClass));
+ // Check for expressions (18617)
+ static assert(__traits(isDeprecated, { scope foo = new DepClass; }));
+}
diff --git a/gcc/testsuite/gdc.test/compilable/test17908.d b/gcc/testsuite/gdc.test/compilable/test17908.d
new file mode 100644
index 0000000..3520b5f
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/test17908.d
@@ -0,0 +1,17 @@
+// PERMUTE ARGS:
+
+@disable void foo() {}
+void foo(int) {}
+alias g = foo;
+
+// make sure the order of declaration
+// doesn't change anything
+void bar(int) {}
+@disable void bar() {}
+alias h = bar;
+
+void main()
+{
+ g(10);
+ h(10);
+}
diff --git a/gcc/testsuite/gdc.test/compilable/test7815.d b/gcc/testsuite/gdc.test/compilable/test7815.d
index 405d9fc..631c020 100644
--- a/gcc/testsuite/gdc.test/compilable/test7815.d
+++ b/gcc/testsuite/gdc.test/compilable/test7815.d
@@ -1,10 +1,4 @@
// REQUIRED_ARGS: -o-
-/*
-TEST_OUTPUT:
----
----
-*/
-
mixin template Helpers()
{
static if (is(Flags!Move))
diff --git a/gcc/testsuite/gdc.test/compilable/test9701.d b/gcc/testsuite/gdc.test/compilable/test9701.d
new file mode 100644
index 0000000..8f822ad
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/test9701.d
@@ -0,0 +1,58 @@
+// https://issues.dlang.org/show_bug.cgi?id=9701
+
+template AliasSeq(TList...)
+{
+ alias AliasSeq = TList;
+}
+
+enum
+{
+ uda4,
+ uda5,
+ uda6,
+ uda8,
+ uda9
+}
+
+enum Enum
+{
+ value0,
+ @("uda1") value1,
+ @("uda2", "uda3", 42) value2,
+ @uda4 value3,
+ @uda5 @uda6 value4,
+ @("uda7") @uda8 value5,
+ @uda9 @("uda10") value6,
+ deprecated value7,
+ deprecated("message") value8,
+}
+
+@("uda0")
+enum
+{
+ value0,
+ @("uda1") value1,
+ @("uda2") @("uda3") value2,
+ @uda4 value3,
+ @uda5 @uda6 value4,
+ @("uda7") @uda8 value5,
+ @uda9 @("uda10") value6
+}
+
+static assert(__traits(getAttributes, Enum.value0).length == 0);
+static assert(__traits(getAttributes, Enum.value1) == AliasSeq!("uda1"));
+static assert(__traits(getAttributes, Enum.value2) == AliasSeq!("uda2", "uda3", 42));
+static assert(__traits(getAttributes, Enum.value3) == AliasSeq!(uda4));
+static assert(__traits(getAttributes, Enum.value4) == AliasSeq!(uda5, uda6));
+static assert(__traits(getAttributes, Enum.value5) == AliasSeq!("uda7", uda8));
+static assert(__traits(getAttributes, Enum.value6) == AliasSeq!(uda9, "uda10"));
+static assert(__traits(isDeprecated, Enum.value7));
+static assert(__traits(isDeprecated, Enum.value8));
+
+static assert(__traits(getAttributes, value0) == AliasSeq!("uda0"));
+static assert(__traits(getAttributes, value1) == AliasSeq!("uda0", "uda1"));
+static assert(__traits(getAttributes, value2) == AliasSeq!("uda0", "uda2", "uda3"));
+static assert(__traits(getAttributes, value3) == AliasSeq!("uda0", uda4));
+static assert(__traits(getAttributes, value4) == AliasSeq!("uda0", uda5, uda6));
+static assert(__traits(getAttributes, value5) == AliasSeq!("uda0", "uda7", uda8));
+static assert(__traits(getAttributes, value6) == AliasSeq!("uda0", uda9, "uda10"));
diff --git a/gcc/testsuite/gdc.test/compilable/testDIP37.d b/gcc/testsuite/gdc.test/compilable/testDIP37.d
index 7188758..38bce38 100644
--- a/gcc/testsuite/gdc.test/compilable/testDIP37.d
+++ b/gcc/testsuite/gdc.test/compilable/testDIP37.d
@@ -34,7 +34,6 @@ void test7()
static import pkgDIP37.datetime;
static assert(!__traits(compiles, def()));
pkgDIP37.datetime.def();
- pkgDIP37.datetime.common.def();
}
// https://issues.dlang.org/show_bug.cgi?id=17629
diff --git a/gcc/testsuite/gdc.test/compilable/testInference.d b/gcc/testsuite/gdc.test/compilable/testInference.d
index 95f4fcb..3248f3e 100644
--- a/gcc/testsuite/gdc.test/compilable/testInference.d
+++ b/gcc/testsuite/gdc.test/compilable/testInference.d
@@ -261,11 +261,13 @@ void test8234()
/***************************************************/
// 8504
+import core.demangle : demangle;
+
void foo8504()()
{
static assert(typeof(foo8504!()).stringof == "void()");
static assert(typeof(foo8504!()).mangleof == "FZv");
- static assert(foo8504!().mangleof == "_D13testInference12__T7foo8504Z7foo8504FZv");
+ static assert(demangle(foo8504!().mangleof) == "void testInference.foo8504!().foo8504()");
}
auto toDelegate8504a(F)(auto ref F fp) { return fp; }
@@ -277,7 +279,7 @@ void test8504()
{
static assert(typeof(foo8504!()).stringof == "pure nothrow @nogc @safe void()");
static assert(typeof(foo8504!()).mangleof == "FNaNbNiNfZv");
- static assert(foo8504!().mangleof == "_D13testInference12__T7foo8504Z7foo8504FNaNbNiNfZv");
+ static assert(demangle(foo8504!().mangleof) == "pure nothrow @nogc @safe void testInference.foo8504!().foo8504()");
auto fp1 = toDelegate8504a(&testC8504);
auto fp2 = toDelegate8504b(&testC8504);
@@ -651,7 +653,7 @@ void foo10296()()
void bar()() { a[1] = 2; }
bar();
- pragma(msg, typeof(bar!())); // nothrow @safe void()
+ static assert(typeof(bar!()).stringof == "pure nothrow @nogc @safe void()"); // nothrow @safe void()
}
pure void test10296()
{
@@ -809,7 +811,7 @@ void test13840() nothrow
func13840(); // throwable function call
}
}
- catch
+ catch(Throwable)
{}
}
diff --git a/gcc/testsuite/gdc.test/compilable/testcheckimports.d b/gcc/testsuite/gdc.test/compilable/testcheckimports.d
index 328b8a9..ee9764a 100644
--- a/gcc/testsuite/gdc.test/compilable/testcheckimports.d
+++ b/gcc/testsuite/gdc.test/compilable/testcheckimports.d
@@ -1,9 +1,5 @@
-// REQUIRED_ARGS: -transition=checkimports -de
-/*
-TEST_OUTPUT:
----
----
-*/
+// REQUIRED_ARGS:
+// EXTRA_FILES: imports/test15857a.d imports/test15857b.d imports/test15857c.d
// https://issues.dlang.org/show_bug.cgi?id=15825
diff --git a/gcc/testsuite/gdc.test/compilable/testheader1.d b/gcc/testsuite/gdc.test/compilable/testheader1.d
index c46728d..256a1fe 100644
--- a/gcc/testsuite/gdc.test/compilable/testheader1.d
+++ b/gcc/testsuite/gdc.test/compilable/testheader1.d
@@ -1,6 +1,12 @@
// EXTRA_SOURCES: extra-files/header1.d
// REQUIRED_ARGS: -o- -unittest -H -Hf${RESULTS_DIR}/compilable/header1.di
// PERMUTE_ARGS: -d -dw
-// POST_SCRIPT: compilable/extra-files/header-postscript.sh header1
+// POST_SCRIPT: compilable/extra-files/header-postscript.sh
+/*
+TEST_OUTPUT:
+---
+Hello World
+---
+*/
void main() {}
diff --git a/gcc/testsuite/gdc.test/compilable/testheader1i.d b/gcc/testsuite/gdc.test/compilable/testheader1i.d
index 9859992..0eca3c4 100644
--- a/gcc/testsuite/gdc.test/compilable/testheader1i.d
+++ b/gcc/testsuite/gdc.test/compilable/testheader1i.d
@@ -1,6 +1,12 @@
// EXTRA_SOURCES: extra-files/header1.d
// REQUIRED_ARGS: -o- -H -Hf${RESULTS_DIR}/compilable/header1i.di -inline
// PERMUTE_ARGS: -d -dw
-// POST_SCRIPT: compilable/extra-files/header-postscript.sh header1i
+// POST_SCRIPT: compilable/extra-files/header-postscript.sh
+/*
+TEST_OUTPUT:
+---
+Hello World
+---
+*/
void main() {}
diff --git a/gcc/testsuite/gdc.test/compilable/testheaderudamodule.d b/gcc/testsuite/gdc.test/compilable/testheaderudamodule.d
index 1a7d650..5ee9486 100644
--- a/gcc/testsuite/gdc.test/compilable/testheaderudamodule.d
+++ b/gcc/testsuite/gdc.test/compilable/testheaderudamodule.d
@@ -11,3 +11,5 @@ struct UDA
}
void main() {}
+
+void foo(@(1) int bar, @UDA(2) string bebe);
diff --git a/gcc/testsuite/gdc.test/compilable/testparse.d b/gcc/testsuite/gdc.test/compilable/testparse.d
index d6713ad..f514146 100644
--- a/gcc/testsuite/gdc.test/compilable/testparse.d
+++ b/gcc/testsuite/gdc.test/compilable/testparse.d
@@ -4,7 +4,7 @@
/***************************************************/
// 6719
-pragma(msg, __traits(compiles, mixin("(const(A))[0..0]")));
+static assert(__traits(compiles, mixin("(const(A))[0..0]")) == false);
/***************************************************/
// 9232
diff --git a/gcc/testsuite/gdc.test/compilable/traits.d b/gcc/testsuite/gdc.test/compilable/traits.d
index 736eae4..4d8a5e1 100644
--- a/gcc/testsuite/gdc.test/compilable/traits.d
+++ b/gcc/testsuite/gdc.test/compilable/traits.d
@@ -1,10 +1,140 @@
// REQUIRED_ARGS:
+// EXTRA_FILES: imports/plainpackage/plainmodule.d imports/pkgmodule/package.d imports/pkgmodule/plainmodule.d
// This file is intended to contain all compilable traits-related tests in an
// effort to keep the number of files in the `compilable` folder to a minimum.
+// https://issues.dlang.org/show_bug.cgi?id=19152
+module traits;
+
+class C19152
+{
+ int OnExecute()
+ {
+ auto name = __traits(getOverloads, this, "OnExecute").stringof;
+ return 0;
+ }
+}
+
+static assert(is(typeof(__traits(getTargetInfo, "cppRuntimeLibrary")) == string));
+version (CppRuntime_Microsoft)
+{
+ static assert(__traits(getTargetInfo, "cppRuntimeLibrary") == "libcmt");
+}
+
+import imports.plainpackage.plainmodule;
+import imports.pkgmodule.plainmodule;
+
+#line 40
+struct MyStruct;
+
+alias a = imports.plainpackage;
+alias b = imports.pkgmodule.plainmodule;
+
+static assert(__traits(isPackage, imports.plainpackage));
+static assert(__traits(isPackage, a));
+static assert(!__traits(isPackage, imports.plainpackage.plainmodule));
+static assert(!__traits(isPackage, b));
+static assert(__traits(isPackage, imports.pkgmodule));
+static assert(!__traits(isPackage, MyStruct));
+
+static assert(!__traits(isModule, imports.plainpackage));
+static assert(!__traits(isModule, a));
+static assert(__traits(isModule, imports.plainpackage.plainmodule));
+static assert(__traits(isModule, b));
+// This is supposed to work even though we haven't directly imported imports.pkgmodule.
+static assert(__traits(isModule, imports.pkgmodule));
+static assert(!__traits(isModule, MyStruct));
+
/******************************************/
// https://issues.dlang.org/show_bug.cgi?id=19942
static assert(!__traits(compiles, { a.init; }));
static assert(!__traits(compiles, { import m : a; a.init; }));
+
+version(Windows)
+ static assert(__traits(getLocation, MyStruct)[0] == `compilable\traits.d`);
+else
+ static assert(__traits(getLocation, MyStruct)[0] == "compilable/traits.d");
+static assert(__traits(getLocation, MyStruct)[1] == 40);
+static assert(__traits(getLocation, MyStruct)[2] == 1);
+
+int foo();
+int foo(int);
+
+static assert(__traits(getLocation, __traits(getOverloads, traits, "foo")[1])[1] == 74);
+
+mixin("int bar;");
+static assert(__traits(getLocation, bar)[1] == 78);
+
+struct Outer
+{
+ struct Nested{}
+
+ void method() {}
+}
+static assert(__traits(getLocation, Outer.Nested)[1] == 83);
+static assert(__traits(getLocation, Outer.method)[1] == 85);
+
+/******************************************/
+// https://issues.dlang.org/show_bug.cgi?id=19902
+// Define hasElaborateCopyConstructor trait
+// but done as two independent traits per conversation
+// in https://github.com/dlang/dmd/pull/10265
+
+struct S
+{
+ this (ref S rhs) {}
+}
+
+struct OuterS
+{
+ struct S
+ {
+ this (ref S rhs) {}
+ }
+
+ S s;
+}
+
+void foo(T)()
+{
+ struct S(U)
+ {
+ this (ref S rhs) {}
+ }
+}
+
+struct U(T)
+{
+ this (ref U rhs) {}
+}
+
+struct SPostblit
+{
+ this(this) {}
+}
+
+struct DisabledPostblit
+{
+ @disable this(this);
+}
+
+struct NoCpCtor { }
+class C19902 { }
+
+static assert(__traits(compiles, foo!int));
+static assert(__traits(compiles, foo!S));
+static assert(!__traits(hasPostblit, U!S));
+static assert(__traits(hasPostblit, SPostblit));
+
+static assert(!__traits(hasPostblit, NoCpCtor));
+static assert(!__traits(hasPostblit, C19902));
+static assert(!__traits(hasPostblit, int));
+
+// Check that invalid use cases don't compile
+static assert(!__traits(compiles, __traits(hasPostblit)));
+static assert(!__traits(compiles, __traits(hasPostblit, S())));
+
+static assert(__traits(isCopyable, int));
+static assert(!__traits(isCopyable, DisabledPostblit));
diff --git a/gcc/testsuite/gdc.test/compilable/vcg-ast.d b/gcc/testsuite/gdc.test/compilable/vcg-ast.d
new file mode 100644
index 0000000..7cc376f
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/vcg-ast.d
@@ -0,0 +1,43 @@
+module vcg;
+// REQUIRED_ARGS: -vcg-ast -o-
+// PERMUTE_ARGS:
+
+template Seq(A...)
+{
+ alias Seq = A;
+}
+
+auto a = Seq!(1,2,3);
+
+
+template R(T)
+{
+ struct _R { T elem; }
+}
+
+typeof(R!int._R.elem) x;
+
+
+static foreach(enum i; 0..3)
+{
+ mixin("int a" ~ i.stringof ~ " = 1;");
+}
+
+void foo()
+{
+ static foreach(enum i; 0..3)
+ {
+ mixin("int a" ~ i.stringof ~ " = 1;");
+ }
+}
+
+class C
+{
+ invariant {}
+ invariant (true);
+
+ int foo() in{} out{} out(r){} in(true) out(; true) out(r; true)
+ {
+ return 2;
+ }
+}
diff --git a/gcc/testsuite/gdc.test/compilable/warn3882.d b/gcc/testsuite/gdc.test/compilable/warn3882.d
index bf824b8..d981a47 100644
--- a/gcc/testsuite/gdc.test/compilable/warn3882.d
+++ b/gcc/testsuite/gdc.test/compilable/warn3882.d
@@ -1,10 +1,4 @@
// PERMUTE_ARGS: -w -wi -debug
-/*
-TEST_OUTPUT:
----
----
-*/
-
@safe pure nothrow void strictVoidReturn(T)(T x) {}
@safe pure nothrow void nonstrictVoidReturn(T)(ref T x) {}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/bug5.d b/gcc/testsuite/gdc.test/fail_compilation/bug5.d
index 7878af7..b2f7d1d 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/bug5.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/bug5.d
@@ -1,4 +1,9 @@
-// REQUIRED_ARGS:
+/*
+TEST_OUTPUT:
+---
+fail_compilation/bug5.d(8): Error: function `bug5.test1` no `return exp;` or `assert(0);` at end of function
+---
+*/
int test1()
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/bug5b.d b/gcc/testsuite/gdc.test/fail_compilation/bug5b.d
index ca7ddd9..8ba5717 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/bug5b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/bug5b.d
@@ -1,4 +1,9 @@
-// REQUIRED_ARGS:
+/*
+TEST_OUTPUT:
+---
+fail_compilation/bug5b.d(8): Error: function `bug5b.test1` has no `return` statement, but is expected to return a value of type `int`
+---
+*/
int test1()
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/bug8150a.d b/gcc/testsuite/gdc.test/fail_compilation/bug8150a.d
index 906b73c..a03f850 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/bug8150a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/bug8150a.d
@@ -1,4 +1,11 @@
-// Bugzilla 8150: nothrow check doesn't work for constructor
+// https://issues.dlang.org/show_bug.cgi?id=8150: nothrow check doesn't work for constructor
+/*
+TEST_OUTPUT:
+---
+fail_compilation/bug8150a.d(14): Error: `object.Exception` is thrown but not caught
+fail_compilation/bug8150a.d(12): Error: `nothrow` constructor `bug8150a.Foo.this` may throw
+---
+*/
struct Foo
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/bug8150b.d b/gcc/testsuite/gdc.test/fail_compilation/bug8150b.d
index b861aee..2091bc8 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/bug8150b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/bug8150b.d
@@ -1,4 +1,12 @@
-// Bugzilla 8150: nothrow check doesn't work for constructor
+// https://issues.dlang.org/show_bug.cgi?id=8150: nothrow check doesn't work for constructor
+/*
+TEST_OUTPUT:
+---
+fail_compilation/bug8150b.d(15): Error: `object.Exception` is thrown but not caught
+fail_compilation/bug8150b.d(13): Error: `nothrow` constructor `bug8150b.Foo.__ctor!().this` may throw
+fail_compilation/bug8150b.d(20): Error: template instance `bug8150b.Foo.__ctor!()` error instantiating
+---
+*/
struct Foo
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/checkimports1a.d b/gcc/testsuite/gdc.test/fail_compilation/checkimports1a.d
deleted file mode 100644
index a27ddea..0000000
--- a/gcc/testsuite/gdc.test/fail_compilation/checkimports1a.d
+++ /dev/null
@@ -1,20 +0,0 @@
-// REQUIRED_ARGS: -transition=checkimports -de
-/*
-TEST_OUTPUT:
----
-fail_compilation/checkimports1a.d(16): Deprecation: local import search method found struct imports.diag12598a.lines instead of variable checkimports1a.C.lines
----
-*/
-
-
-// new lookup + information
-class C
-{
- void f()
- {
- import imports.diag12598a;
- lines ~= "";
- }
-
- string[] lines;
-}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/checkimports1b.d b/gcc/testsuite/gdc.test/fail_compilation/checkimports1b.d
deleted file mode 100644
index 60d3ae8..0000000
--- a/gcc/testsuite/gdc.test/fail_compilation/checkimports1b.d
+++ /dev/null
@@ -1,20 +0,0 @@
-// REQUIRED_ARGS: -transition=import -transition=checkimports
-/*
-TEST_OUTPUT:
----
-fail_compilation/checkimports1b.d(16): Deprecation: local import search method found struct imports.diag12598a.lines instead of variable checkimports1b.C.lines
-fail_compilation/checkimports1b.d(16): Error: struct 'lines' is a type, not an lvalue
----
-*/
-
-// old lookup + information
-class C
-{
- void f()
- {
- import imports.diag12598a;
- lines ~= "";
- }
-
- string[] lines;
-}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/checkimports1c.d b/gcc/testsuite/gdc.test/fail_compilation/checkimports1c.d
deleted file mode 100644
index f6587ef..0000000
--- a/gcc/testsuite/gdc.test/fail_compilation/checkimports1c.d
+++ /dev/null
@@ -1,20 +0,0 @@
-// REQUIRED_ARGS: -transition=checkimports -transition=import
-/*
-TEST_OUTPUT:
----
-fail_compilation/checkimports1c.d(16): Deprecation: local import search method found struct imports.diag12598a.lines instead of variable checkimports1c.C.lines
-fail_compilation/checkimports1c.d(16): Error: struct 'lines' is a type, not an lvalue
----
-*/
-
-// old lookup + information (the order of switches is reverse)
-class C
-{
- void f()
- {
- import imports.diag12598a;
- lines ~= "";
- }
-
- string[] lines;
-}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/checkimports2a.d b/gcc/testsuite/gdc.test/fail_compilation/checkimports2a.d
index 567a308..abec424 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/checkimports2a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/checkimports2a.d
@@ -1,16 +1,11 @@
-// REQUIRED_ARGS: -transition=checkimports
+// REQUIRED_ARGS:
/*
TEST_OUTPUT:
---
-fail_compilation/checkimports2a.d(26): Deprecation: local import search method found variable imports.imp2.X instead of variable checkimports2a.X
-fail_compilation/checkimports2a.d(32): Deprecation: local import search method found variable imports.imp2.X instead of nothing
-fail_compilation/checkimports2a.d(32): Error: no property 'X' for type 'checkimports2a.B'
-fail_compilation/checkimports2a.d(32): while evaluating: `static assert((B).X == 0)`
-fail_compilation/checkimports2a.d(33): Deprecation: local import search method found variable imports.imp2.Y instead of nothing
-fail_compilation/checkimports2a.d(33): Error: no property 'Y' for type 'checkimports2a.B'
-fail_compilation/checkimports2a.d(33): while evaluating: `static assert((B).Y == 2)`
-fail_compilation/checkimports2a.d(35): Deprecation: local import search method found variable imports.imp2.X instead of variable checkimports2a.X
-fail_compilation/checkimports2a.d(36): Deprecation: local import search method found variable imports.imp2.Y instead of variable imports.imp1.Y
+fail_compilation/checkimports2a.d(27): Error: no property `X` for type `checkimports2a.B`, did you mean `imports.imp2.X`?
+fail_compilation/checkimports2a.d(27): while evaluating: `static assert((B).X == 0)`
+fail_compilation/checkimports2a.d(28): Error: no property `Y` for type `checkimports2a.B`, did you mean `imports.imp2.Y`?
+fail_compilation/checkimports2a.d(28): while evaluating: `static assert((B).Y == 2)`
---
*/
diff --git a/gcc/testsuite/gdc.test/fail_compilation/checkimports2b.d b/gcc/testsuite/gdc.test/fail_compilation/checkimports2b.d
index 4f52521..8b99fdc 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/checkimports2b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/checkimports2b.d
@@ -1,17 +1,8 @@
-// REQUIRED_ARGS: -transition=import -transition=checkimports -de
+// REQUIRED_ARGS:
/*
TEST_OUTPUT:
---
-fail_compilation/checkimports2b.d(27): Deprecation: local import search method found variable imports.imp2.X instead of variable checkimports2b.X
-fail_compilation/checkimports2b.d(27): while evaluating: `static assert(2 == 2)`
-fail_compilation/checkimports2b.d(33): Deprecation: local import search method found variable imports.imp2.X instead of nothing
-fail_compilation/checkimports2b.d(33): while evaluating: `static assert(2 == 2)`
-fail_compilation/checkimports2b.d(34): Deprecation: local import search method found variable imports.imp2.Y instead of nothing
-fail_compilation/checkimports2b.d(34): while evaluating: `static assert(2 == 2)`
-fail_compilation/checkimports2b.d(36): Deprecation: local import search method found variable imports.imp2.X instead of variable checkimports2b.X
-fail_compilation/checkimports2b.d(36): while evaluating: `static assert(2 == 2)`
-fail_compilation/checkimports2b.d(37): Deprecation: local import search method found variable imports.imp2.Y instead of variable imports.imp1.Y
-fail_compilation/checkimports2b.d(37): while evaluating: `static assert(2 == 2)`
+fail_compilation/checkimports2b.d(18): Error: static assert: `0 == 2` is false
---
*/
diff --git a/gcc/testsuite/gdc.test/fail_compilation/checkimports2c.d b/gcc/testsuite/gdc.test/fail_compilation/checkimports2c.d
index f56da9c..4208dcdf 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/checkimports2c.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/checkimports2c.d
@@ -1,18 +1,8 @@
-// REQUIRED_ARGS: -transition=checkimports -transition=import -de
+// REQUIRED_ARGS:
/*
TEST_OUTPUT:
---
-
-fail_compilation/checkimports2c.d(28): Deprecation: local import search method found variable imports.imp2.X instead of variable checkimports2c.X
-fail_compilation/checkimports2c.d(28): while evaluating: `static assert(2 == 2)`
-fail_compilation/checkimports2c.d(34): Deprecation: local import search method found variable imports.imp2.X instead of nothing
-fail_compilation/checkimports2c.d(34): while evaluating: `static assert(2 == 2)`
-fail_compilation/checkimports2c.d(35): Deprecation: local import search method found variable imports.imp2.Y instead of nothing
-fail_compilation/checkimports2c.d(35): while evaluating: `static assert(2 == 2)`
-fail_compilation/checkimports2c.d(37): Deprecation: local import search method found variable imports.imp2.X instead of variable checkimports2c.X
-fail_compilation/checkimports2c.d(37): while evaluating: `static assert(2 == 2)`
-fail_compilation/checkimports2c.d(38): Deprecation: local import search method found variable imports.imp2.Y instead of variable imports.imp1.Y
-fail_compilation/checkimports2c.d(38): while evaluating: `static assert(2 == 2)`
+fail_compilation/checkimports2c.d(18): Error: static assert: `0 == 2` is false
---
*/
diff --git a/gcc/testsuite/gdc.test/fail_compilation/checkimports3.d b/gcc/testsuite/gdc.test/fail_compilation/checkimports3.d
deleted file mode 100644
index e9d44a7..0000000
--- a/gcc/testsuite/gdc.test/fail_compilation/checkimports3.d
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
-REQUIRED_ARGS: -transition=checkimports -de
-TEST_OUTPUT:
----
-fail_compilation/checkimports3.d(14): Deprecation: local import search method found overloadset checkimports3.foo (3 overloads) instead of overloadset checkimports3.foo (2 overloads)
----
-*/
-import imports.checkimports3a;
-import imports.checkimports3b;
-import imports.checkimports3c;
-
-void test()
-{
- foo();
-}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/diag10169.d b/gcc/testsuite/gdc.test/fail_compilation/diag10169.d
index 2a9714d..3c35b66 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/diag10169.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/diag10169.d
@@ -1,8 +1,7 @@
/*
TEST_OUTPUT:
---
-fail_compilation/diag10169.d(12): Deprecation: imports.a10169.B.x is not visible from module diag10169
-fail_compilation/diag10169.d(12): Error: struct imports.a10169.B member `x` is not accessible
+fail_compilation/diag10169.d(11): Error: no property `x` for type `B`, did you mean `imports.a10169.B.x`?
---
*/
import imports.a10169;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/diag10327.d b/gcc/testsuite/gdc.test/fail_compilation/diag10327.d
index 1d163c7..38f9ccb 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/diag10327.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/diag10327.d
@@ -1 +1,11 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/diag10327.d(11): Error: module `test10327` is in file 'imports/test10327.d' which cannot be read
+import path[0] = fail_compilation
+import path[1] = $p:druntime/import$
+import path[2] = $p:phobos$
+---
+*/
+
import imports.test10327; // package.d missing
diff --git a/gcc/testsuite/gdc.test/fail_compilation/diag15713.d b/gcc/testsuite/gdc.test/fail_compilation/diag15713.d
index 14f2d84..a7714c9 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/diag15713.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/diag15713.d
@@ -1,4 +1,5 @@
/*
+TEST_OUTPUT:
---
fail_compilation/diag15713.d(18): Error: no property 'widthSign' for type 'Data'
fail_compilation/diag15713.d(38): Error: template instance test.conwritefImpl!("parse-int", "width", "\x0a", Data()) error instantiating
diff --git a/gcc/testsuite/gdc.test/fail_compilation/diag5385.d b/gcc/testsuite/gdc.test/fail_compilation/diag5385.d
index 131659c..7c81b16 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/diag5385.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/diag5385.d
@@ -1,22 +1,14 @@
/*
TEST_OUTPUT:
---
-fail_compilation/diag5385.d(27): Deprecation: imports.fail5385.C.privX is not visible from module diag5385
-fail_compilation/diag5385.d(27): Error: class imports.fail5385.C member `privX` is not accessible
-fail_compilation/diag5385.d(28): Deprecation: imports.fail5385.C.packX is not visible from module diag5385
-fail_compilation/diag5385.d(28): Error: class imports.fail5385.C member `packX` is not accessible
-fail_compilation/diag5385.d(29): Deprecation: imports.fail5385.C.privX2 is not visible from module diag5385
-fail_compilation/diag5385.d(29): Error: class imports.fail5385.C member `privX2` is not accessible
-fail_compilation/diag5385.d(30): Deprecation: imports.fail5385.C.packX2 is not visible from module diag5385
-fail_compilation/diag5385.d(30): Error: class imports.fail5385.C member `packX2` is not accessible
-fail_compilation/diag5385.d(31): Deprecation: imports.fail5385.S.privX is not visible from module diag5385
-fail_compilation/diag5385.d(31): Error: struct imports.fail5385.S member `privX` is not accessible
-fail_compilation/diag5385.d(32): Deprecation: imports.fail5385.S.packX is not visible from module diag5385
-fail_compilation/diag5385.d(32): Error: struct imports.fail5385.S member `packX` is not accessible
-fail_compilation/diag5385.d(33): Deprecation: imports.fail5385.S.privX2 is not visible from module diag5385
-fail_compilation/diag5385.d(33): Error: struct imports.fail5385.S member `privX2` is not accessible
-fail_compilation/diag5385.d(34): Deprecation: imports.fail5385.S.packX2 is not visible from module diag5385
-fail_compilation/diag5385.d(34): Error: struct imports.fail5385.S member `packX2` is not accessible
+fail_compilation/diag5385.d(19): Error: no property `privX` for type `imports.fail5385.C`, did you mean `imports.fail5385.C.privX`?
+fail_compilation/diag5385.d(20): Error: no property `packX` for type `imports.fail5385.C`, did you mean `imports.fail5385.C.packX`?
+fail_compilation/diag5385.d(21): Error: no property `privX2` for type `imports.fail5385.C`, did you mean `imports.fail5385.C.privX2`?
+fail_compilation/diag5385.d(22): Error: no property `packX2` for type `imports.fail5385.C`, did you mean `imports.fail5385.C.packX2`?
+fail_compilation/diag5385.d(23): Error: no property `privX` for type `S`, did you mean `imports.fail5385.S.privX`?
+fail_compilation/diag5385.d(24): Error: no property `packX` for type `S`, did you mean `imports.fail5385.S.packX`?
+fail_compilation/diag5385.d(25): Error: no property `privX2` for type `S`, did you mean `imports.fail5385.S.privX2`?
+fail_compilation/diag5385.d(26): Error: no property `packX2` for type `S`, did you mean `imports.fail5385.S.packX2`?
---
*/
diff --git a/gcc/testsuite/gdc.test/fail_compilation/dip22a.d b/gcc/testsuite/gdc.test/fail_compilation/dip22a.d
index 7497b42..5bd2b5b 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/dip22a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/dip22a.d
@@ -1,17 +1,12 @@
/*
-REQUIRED_ARGS: -de
+REQUIRED_ARGS:
TEST_OUTPUT:
---
-fail_compilation/dip22a.d(21): Deprecation: imports.dip22a.Klass.bar is not visible from module dip22a
-fail_compilation/dip22a.d(21): Error: class imports.dip22a.Klass member `bar` is not accessible
-fail_compilation/dip22a.d(22): Deprecation: imports.dip22a.Struct.bar is not visible from module dip22a
-fail_compilation/dip22a.d(22): Error: struct imports.dip22a.Struct member `bar` is not accessible
-fail_compilation/dip22a.d(23): Error: imports.dip22a.bar is not visible from module dip22a
-fail_compilation/dip22a.d(23): Error: function `imports.dip22a.bar` is not accessible from module `dip22a`
-fail_compilation/dip22a.d(24): Error: imports.dip22a.Template!int.bar is not visible from module dip22a
-fail_compilation/dip22a.d(24): Error: function `imports.dip22a.Template!int.bar` is not accessible from module `dip22a`
-fail_compilation/dip22a.d(25): Deprecation: imports.dip22a.bar is not visible from module dip22a
-fail_compilation/dip22a.d(25): Error: function `imports.dip22a.bar` is not accessible from module `dip22a`
+fail_compilation/dip22a.d(16): Error: no property `bar` for type `imports.dip22a.Klass`, did you mean `imports.dip22a.Klass.bar`?
+fail_compilation/dip22a.d(17): Error: no property `bar` for type `Struct`, did you mean `imports.dip22a.Struct.bar`?
+fail_compilation/dip22a.d(18): Error: undefined identifier `bar` in module `imports.dip22a`, did you mean function `bar`?
+fail_compilation/dip22a.d(19): Error: no property `bar` for type `void`
+fail_compilation/dip22a.d(20): Error: no property `bar` for type `int`
---
*/
import imports.dip22a;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/dip22b.d b/gcc/testsuite/gdc.test/fail_compilation/dip22b.d
index 7aca88c..9520180 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/dip22b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/dip22b.d
@@ -1,8 +1,8 @@
/*
-REQUIRED_ARGS: -de
+REQUIRED_ARGS:
TEST_OUTPUT:
---
-fail_compilation/dip22b.d(12): Deprecation: pkg.dip22c.Foo is not visible from module dip22
+fail_compilation/dip22b.d(12): Error: undefined identifier `Foo`, did you mean variable `foo`?
---
*/
module pkg.dip22;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/dip22d.d b/gcc/testsuite/gdc.test/fail_compilation/dip22d.d
deleted file mode 100644
index dd1b8ef..0000000
--- a/gcc/testsuite/gdc.test/fail_compilation/dip22d.d
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
-REQUIRED_ARGS: -transition=import
-TEST_OUTPUT:
----
-fail_compilation/dip22d.d(12): Error: imports.dip22d.Foo at fail_compilation/imports/dip22d.d(3) conflicts with imports.dip22e.Foo at fail_compilation/imports/dip22e.d(3)
-fail_compilation/dip22d.d(12): Error: module dip22d struct imports.dip22d.Foo is private
----
-*/
-import imports.dip22d;
-import imports.dip22e;
-
-Foo foo;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/dip22e.d b/gcc/testsuite/gdc.test/fail_compilation/dip22e.d
index f82d8e7..b1411b2 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/dip22e.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/dip22e.d
@@ -1,10 +1,8 @@
/*
-REQUIRED_ARGS: -transition=checkimports -de
+REQUIRED_ARGS:
TEST_OUTPUT:
---
-fail_compilation/dip22e.d(16): Deprecation: imports.dip22d.foo is not visible from module dip22e
-fail_compilation/dip22e.d(16): Error: function `imports.dip22d.foo` is not accessible from module `dip22e`
-fail_compilation/dip22e.d(17): Deprecation: local import search method found overloadset dip22e.bar (2 overloads) instead of function imports.dip22e.bar
+fail_compilation/dip22e.d(14): Error: undefined identifier `foo`, did you mean struct `Foo`?
---
*/
diff --git a/gcc/testsuite/gdc.test/fail_compilation/disable.d b/gcc/testsuite/gdc.test/fail_compilation/disable.d
index 517fddd..7e7d9c2 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/disable.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/disable.d
@@ -1,15 +1,16 @@
/*
TEST_OUTPUT:
---
-fail_compilation/disable.d(50): Error: function disable.DisabledOpAssign.opAssign is not callable because it is annotated with @disable
-fail_compilation/disable.d(53): Error: function disable.DisabledPostblit.opAssign is not callable because it is annotated with @disable
-fail_compilation/disable.d(56): Error: function disable.HasDtor.opAssign is not callable because it is annotated with @disable
-fail_compilation/disable.d(60): Error: generated function disable.Nested!(DisabledOpAssign).Nested.opAssign is not callable because it is annotated with @disable
-fail_compilation/disable.d(63): Error: generated function disable.Nested!(DisabledPostblit).Nested.opAssign is not callable because it is annotated with @disable
-fail_compilation/disable.d(66): Error: generated function disable.Nested!(HasDtor).Nested.opAssign is not callable because it is annotated with @disable
-fail_compilation/disable.d(70): Error: generated function disable.NestedDtor!(DisabledOpAssign).NestedDtor.opAssign is not callable because it is annotated with @disable
-fail_compilation/disable.d(73): Error: generated function disable.NestedDtor!(DisabledPostblit).NestedDtor.opAssign is not callable because it is annotated with @disable
-fail_compilation/disable.d(76): Error: generated function disable.NestedDtor!(HasDtor).NestedDtor.opAssign is not callable because it is annotated with @disable
+fail_compilation/disable.d(56): Error: function `disable.DisabledOpAssign.opAssign` cannot be used because it is annotated with `@disable`
+fail_compilation/disable.d(59): Error: function `disable.DisabledPostblit.opAssign` cannot be used because it is annotated with `@disable`
+fail_compilation/disable.d(62): Error: function `disable.HasDtor.opAssign` cannot be used because it is annotated with `@disable`
+fail_compilation/disable.d(66): Error: generated function `disable.Nested!(DisabledOpAssign).Nested.opAssign` cannot be used because it is annotated with `@disable`
+fail_compilation/disable.d(69): Error: generated function `disable.Nested!(DisabledPostblit).Nested.opAssign` cannot be used because it is annotated with `@disable`
+fail_compilation/disable.d(72): Error: generated function `disable.Nested!(HasDtor).Nested.opAssign` cannot be used because it is annotated with `@disable`
+fail_compilation/disable.d(76): Error: generated function `disable.NestedDtor!(DisabledOpAssign).NestedDtor.opAssign` cannot be used because it is annotated with `@disable`
+fail_compilation/disable.d(79): Error: generated function `disable.NestedDtor!(DisabledPostblit).NestedDtor.opAssign` cannot be used because it is annotated with `@disable`
+fail_compilation/disable.d(82): Error: generated function `disable.NestedDtor!(HasDtor).NestedDtor.opAssign` cannot be used because it is annotated with `@disable`
+fail_compilation/disable.d(84): Error: enum member `disable.Enum1.value` cannot be used because it is annotated with `@disable`
---
*/
struct DisabledOpAssign {
@@ -44,6 +45,11 @@ struct NestedDtor (T)
~this() {}
}
+enum Enum1
+{
+ @disable value
+}
+
void main ()
{
DisabledOpAssign o;
@@ -74,4 +80,6 @@ void main ()
NestedDtor!(HasDtor) ndd;
ndd = NestedDtor!(HasDtor)();
+
+ auto v1 = Enum1.value;
}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail10207.d b/gcc/testsuite/gdc.test/fail_compilation/fail10207.d
index ac8b4ee..3f09a27 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail10207.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail10207.d
@@ -1,7 +1,7 @@
/*
TEST_OUTPUT:
---
-fail_compilation/fail10207.d(7): Error: user defined attributes not allowed for `alias` declarations
+fail_compilation/fail10207.d(7): Error: user-defined attributes not allowed for `alias` declarations
---
*/
alias @Safe int __externC;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail104.d b/gcc/testsuite/gdc.test/fail_compilation/fail104.d
index 7e455f3..2111844 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail104.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail104.d
@@ -1,6 +1,14 @@
// Issue 76 - Using a non-template struct as a template
// Compiling leads to "Assertion failure: 's->parent' on line 1694 in file
// 'template.c'"
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail104.d(26): Error: template instance `P!()` `P` is not a template declaration, it is a alias
+fail_compilation/fail104.d(26): Error: mixin `fail104.C!(S).C.T!()` is not defined
+fail_compilation/fail104.d(31): Error: template instance `fail104.C!(S)` error instantiating
+---
+*/
struct S
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail10528.d b/gcc/testsuite/gdc.test/fail_compilation/fail10528.d
index c05a29a..067e83c 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail10528.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail10528.d
@@ -1,18 +1,14 @@
/*
TEST_OUTPUT:
---
-fail_compilation/fail10528.d(23): Error: module fail10528 variable a10528.a is private
-fail_compilation/fail10528.d(23): Deprecation: a10528.a is not visible from module fail10528
-fail_compilation/fail10528.d(24): Error: a10528.a is not visible from module fail10528
-fail_compilation/fail10528.d(26): Error: module fail10528 enum member a10528.b is private
-fail_compilation/fail10528.d(26): Deprecation: a10528.b is not visible from module fail10528
-fail_compilation/fail10528.d(27): Error: a10528.b is not visible from module fail10528
-fail_compilation/fail10528.d(29): Deprecation: a10528.S.c is not visible from module fail10528
-fail_compilation/fail10528.d(29): Error: variable `a10528.S.c` is not accessible from module `fail10528`
-fail_compilation/fail10528.d(30): Error: variable `a10528.S.c` is not accessible from module `fail10528`
-fail_compilation/fail10528.d(32): Deprecation: a10528.C.d is not visible from module fail10528
-fail_compilation/fail10528.d(32): Error: variable `a10528.C.d` is not accessible from module `fail10528`
-fail_compilation/fail10528.d(33): Error: variable `a10528.C.d` is not accessible from module `fail10528`
+fail_compilation/fail10528.d(19): Error: undefined identifier `a`
+fail_compilation/fail10528.d(20): Error: undefined identifier `a` in module `a10528`, did you mean variable `a`?
+fail_compilation/fail10528.d(22): Error: undefined identifier `b`
+fail_compilation/fail10528.d(23): Error: undefined identifier `b` in module `a10528`, did you mean enum member `b`?
+fail_compilation/fail10528.d(25): Error: no property `c` for type `S`, did you mean `a10528.S.c`?
+fail_compilation/fail10528.d(26): Error: no property `c` for type `S`, did you mean `a10528.S.c`?
+fail_compilation/fail10528.d(28): Error: no property `d` for type `a10528.C`, did you mean `a10528.C.d`?
+fail_compilation/fail10528.d(29): Error: no property `d` for type `a10528.C`, did you mean `a10528.C.d`?
---
*/
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail10905.d b/gcc/testsuite/gdc.test/fail_compilation/fail10905.d
index 2028648..6181d94 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail10905.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail10905.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail10905.d(20): Error: incompatible types for `(this.x) == (cast(const(__vector(long[2])))cast(__vector(long[2]))1L)`: both operands are of type `const(__vector(long[2]))`
+---
+*/
struct Foo
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail10968.d b/gcc/testsuite/gdc.test/fail_compilation/fail10968.d
index ef75f91..257d739 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail10968.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail10968.d
@@ -43,12 +43,12 @@ void bar() pure @safe
/*
TEST_OUTPUT:
---
-fail_compilation/fail10968.d(66): Error: struct fail10968.SD is not copyable because it is annotated with @disable
-fail_compilation/fail10968.d(67): Error: struct fail10968.SD is not copyable because it is annotated with @disable
-fail_compilation/fail10968.d(68): Error: struct fail10968.SD is not copyable because it is annotated with @disable
-fail_compilation/fail10968.d(71): Error: struct fail10968.SD is not copyable because it is annotated with @disable
-fail_compilation/fail10968.d(72): Error: struct fail10968.SD is not copyable because it is annotated with @disable
-fail_compilation/fail10968.d(73): Error: struct fail10968.SD is not copyable because it is annotated with @disable
+fail_compilation/fail10968.d(66): Error: struct fail10968.SD is not copyable because it is annotated with `@disable`
+fail_compilation/fail10968.d(67): Error: struct fail10968.SD is not copyable because it is annotated with `@disable`
+fail_compilation/fail10968.d(68): Error: struct fail10968.SD is not copyable because it is annotated with `@disable`
+fail_compilation/fail10968.d(71): Error: struct fail10968.SD is not copyable because it is annotated with `@disable`
+fail_compilation/fail10968.d(72): Error: struct fail10968.SD is not copyable because it is annotated with `@disable`
+fail_compilation/fail10968.d(73): Error: struct fail10968.SD is not copyable because it is annotated with `@disable`
---
*/
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail11355.d b/gcc/testsuite/gdc.test/fail_compilation/fail11355.d
index 474d376..c41a4c4 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail11355.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail11355.d
@@ -1,7 +1,7 @@
/*
TEST_OUTPUT:
---
-fail_compilation/fail11355.d(28): Error: struct fail11355.A is not copyable because it is annotated with @disable
+fail_compilation/fail11355.d(28): Error: struct fail11355.A is not copyable because it is annotated with `@disable`
---
*/
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail115.d b/gcc/testsuite/gdc.test/fail_compilation/fail115.d
index e9d5a67..4990b66 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail115.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail115.d
@@ -1,4 +1,11 @@
-// Issue 402 - compiler crash with mixin and forward reference
+// https://issues.dlang.org/show_bug.cgi?id=402
+// compiler crash with mixin and forward reference
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail115.d(17): Error: mixin `Foo!y` cannot resolve forward reference
+---
+*/
template Foo(alias b)
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail11503a.d b/gcc/testsuite/gdc.test/fail_compilation/fail11503a.d
index 28f7bef..b49cde9 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail11503a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail11503a.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail11503a.d(24): Error: cannot implicitly convert expression `makes()` of type `immutable(S)*` to `S*`
+---
+*/
struct S
{
immutable(S)* s;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail11503b.d b/gcc/testsuite/gdc.test/fail_compilation/fail11503b.d
index 80549de..ebfbbfd 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail11503b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail11503b.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail11503b.d(17): Error: cannot implicitly convert expression `makes()` of type `immutable(int[])` to `int[]`
+---
+*/
immutable int[] x = [1, 2, 3];
auto makes() pure
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail11503c.d b/gcc/testsuite/gdc.test/fail_compilation/fail11503c.d
index dc45eef..ad3963f 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail11503c.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail11503c.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail11503c.d(19): Error: cannot implicitly convert expression `d.filename()` of type `const(char)[]` to `string`
+---
+*/
struct Data
{
char[256] buffer;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail11503d.d b/gcc/testsuite/gdc.test/fail_compilation/fail11503d.d
index d96e2a8..d1605b2 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail11503d.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail11503d.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail11503d.d(26): Error: cannot implicitly convert expression `filename(d)` of type `const(char)[]` to `string`
+fail_compilation/fail11503d.d(27): Error: cannot implicitly convert expression `filename2(& d)` of type `const(char)[]` to `string`
+---
+*/
struct Data2
{
char buffer;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail12.d b/gcc/testsuite/gdc.test/fail_compilation/fail12.d
index ad38cd7..aa060e6 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail12.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail12.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail12.d(17): Error: function `fail12.main.Foo!(y).abc` at fail_compilation/fail12.d(9) conflicts with function `fail12.main.Foo!(y).abc` at fail_compilation/fail12.d(9)
+---
+*/
template Foo(alias b)
{
int abc() { return b; }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail121.d b/gcc/testsuite/gdc.test/fail_compilation/fail121.d
index 4bc8179..70e9d0c 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail121.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail121.d
@@ -1,5 +1,12 @@
// PERMUTE_ARGS: -d -dw
// segfault on DMD0.150, never failed if use typeid() instead.
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail121.d(23): Error: no property `typeinfo` for type `fail121.myobject`
+fail_compilation/fail121.d(23): Error: no property `typeinfo` for type `int`
+---
+*/
struct myobject
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail12485.d b/gcc/testsuite/gdc.test/fail_compilation/fail12485.d
deleted file mode 100644
index 71f8698..0000000
--- a/gcc/testsuite/gdc.test/fail_compilation/fail12485.d
+++ /dev/null
@@ -1,11 +0,0 @@
-void dorecursive()
-{
- recursive([0]);
-}
-
-void recursive(R)(R r)
-{
- import std.algorithm;
- recursive( r.filter!(e=>true) );
-}
-
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail137.d b/gcc/testsuite/gdc.test/fail_compilation/fail137.d
deleted file mode 100644
index 80a2a25..0000000
--- a/gcc/testsuite/gdc.test/fail_compilation/fail137.d
+++ /dev/null
@@ -1,23 +0,0 @@
-// 751 Compiler segfault on template expansion
-
- template TypeTuple( TList... )
- {
- alias TList TypeTuple;
- }
-
- template IndexOf( T, TList... )
- {
- static if( TList.length == 0 )
- const size_t IndexOf = 1;
- else static if( is( T == typeof( TList[0] ) ) )
- const size_t IndexOf = 0;
- else
- const size_t IndexOf = 1 + IndexOf!( T, (TList[1 .. $]) );
- }
-
- void main()
- {
- TypeTuple!(int, long) T;
- printf( "%u\n", IndexOf!(long, T) );
- }
-
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail14.d b/gcc/testsuite/gdc.test/fail_compilation/fail14.d
index 0da6dc4..a44d41cb8 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail14.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail14.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail14.d(10): Error: template instance `fail14.A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!(A!int))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))` recursive expansion exceeded allowed nesting limit
+---
+*/
class A(T)
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail14486.d b/gcc/testsuite/gdc.test/fail_compilation/fail14486.d
index ca209aa..84af9cf 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail14486.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail14486.d
@@ -1,5 +1,44 @@
// REQUIRED_ARGS: -o-
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail14486.d(56): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+fail_compilation/fail14486.d(56): Error: `delete c0` is not `@safe` but is used in `@safe` function `test1a`
+fail_compilation/fail14486.d(57): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+fail_compilation/fail14486.d(57): Error: `pure` function `fail14486.test1a` cannot call impure destructor `fail14486.C1a.~this`
+fail_compilation/fail14486.d(57): Error: `@safe` function `fail14486.test1a` cannot call `@system` destructor `fail14486.C1a.~this`
+fail_compilation/fail14486.d(43): `fail14486.C1a.~this` is declared here
+fail_compilation/fail14486.d(57): Error: `@nogc` function `fail14486.test1a` cannot call non-@nogc destructor `fail14486.C1a.~this`
+fail_compilation/fail14486.d(62): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+fail_compilation/fail14486.d(63): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+fail_compilation/fail14486.d(63): Error: destructor `fail14486.C1b.~this` is not `nothrow`
+fail_compilation/fail14486.d(60): Error: `nothrow` function `fail14486.test1b` may throw
+fail_compilation/fail14486.d(68): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+fail_compilation/fail14486.d(68): Error: `delete s0` is not `@safe` but is used in `@safe` function `test2a`
+fail_compilation/fail14486.d(69): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+fail_compilation/fail14486.d(69): Error: `pure` function `fail14486.test2a` cannot call impure destructor `fail14486.S1a.~this`
+fail_compilation/fail14486.d(69): Error: `@safe` function `fail14486.test2a` cannot call `@system` destructor `fail14486.S1a.~this`
+fail_compilation/fail14486.d(49): `fail14486.S1a.~this` is declared here
+fail_compilation/fail14486.d(69): Error: `@nogc` function `fail14486.test2a` cannot call non-@nogc destructor `fail14486.S1a.~this`
+fail_compilation/fail14486.d(74): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+fail_compilation/fail14486.d(75): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+fail_compilation/fail14486.d(75): Error: destructor `fail14486.S1b.~this` is not `nothrow`
+fail_compilation/fail14486.d(72): Error: `nothrow` function `fail14486.test2b` may throw
+fail_compilation/fail14486.d(80): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+fail_compilation/fail14486.d(80): Error: `delete a0` is not `@safe` but is used in `@safe` function `test3a`
+fail_compilation/fail14486.d(81): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+fail_compilation/fail14486.d(81): Error: `pure` function `fail14486.test3a` cannot call impure destructor `fail14486.S1a.~this`
+fail_compilation/fail14486.d(81): Error: `@safe` function `fail14486.test3a` cannot call `@system` destructor `fail14486.S1a.~this`
+fail_compilation/fail14486.d(49): `fail14486.S1a.~this` is declared here
+fail_compilation/fail14486.d(81): Error: `@nogc` function `fail14486.test3a` cannot call non-@nogc destructor `fail14486.S1a.~this`
+fail_compilation/fail14486.d(86): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+fail_compilation/fail14486.d(87): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+fail_compilation/fail14486.d(87): Error: destructor `fail14486.S1b.~this` is not `nothrow`
+fail_compilation/fail14486.d(84): Error: `nothrow` function `fail14486.test3b` may throw
+---
+*/
+
class C0a { }
class C1a { ~this() {} }
class C2a { ~this() {} @nogc pure @safe delete(void* p) {} }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail15.d b/gcc/testsuite/gdc.test/fail_compilation/fail15.d
index 564ddda..0386b9a 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail15.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail15.d
@@ -1,4 +1,10 @@
/*
+TEST_OUTPUT:
+---
+fail_compilation/fail15.d(24): Error: cannot use `[]` operator on expression of type `void`
+---
+*/
+/*
Segfault on DMD 0.095
http://www.digitalmars.com/d/archives/digitalmars/D/bugs/926.html
*/
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail15044.d b/gcc/testsuite/gdc.test/fail_compilation/fail15044.d
index 8674b8d..964dcf9 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail15044.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail15044.d
@@ -1,7 +1,7 @@
/*
TEST_OUTPUT:
---
-fail_compilation/fail15044.d(30): Error: generated function fail15044.V.opAssign is not callable because it is annotated with @disable
+fail_compilation/fail15044.d(30): Error: generated function `fail15044.V.opAssign` cannot be used because it is annotated with `@disable`
---
*/
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail15616b.d b/gcc/testsuite/gdc.test/fail_compilation/fail15616b.d
index 53defae..4776f40 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail15616b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail15616b.d
@@ -1,5 +1,6 @@
/*
REQUIRED_ARGS: -v
+TEST_OUTPUT:
---
fail_compilation/fail15616b.d(43): Error: none of the overloads of 'foo' are callable using argument types (double), candidates are:
fail_compilation/fail15616b.d(16): fail15616b.foo(int a)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail16.d b/gcc/testsuite/gdc.test/fail_compilation/fail16.d
index c9af9d3..6c7a90a 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail16.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail16.d
@@ -1,4 +1,11 @@
// ICE(template.c) in DMD0.080
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail16.d(19): Error: function declaration without return type. (Note that constructors are always named `this`)
+fail_compilation/fail16.d(19): Error: no identifier for declarator `bar!(typeof(X))(X)`
+---
+*/
int i;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail16206a.d b/gcc/testsuite/gdc.test/fail_compilation/fail16206a.d
new file mode 100644
index 0000000..3c1cc56
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail16206a.d
@@ -0,0 +1,12 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail16206a.d(12): Error: `bool` expected as third argument of `__traits(getOverloads)`, not `"Not a bool"` of type `string`
+---
+*/
+
+struct S {
+ static int foo()() { return 0; }
+}
+alias AliasSeq(T...) = T;
+alias allFoos = AliasSeq!(__traits(getOverloads, S, "foo", "Not a bool")); \ No newline at end of file
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail16206b.d b/gcc/testsuite/gdc.test/fail_compilation/fail16206b.d
new file mode 100644
index 0000000..9b3a69c
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail16206b.d
@@ -0,0 +1,12 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail16206b.d(12): Error: expected 2 arguments for `hasMember` but had 3
+---
+*/
+
+struct S {
+ static int foo()() { return 0; }
+}
+alias AliasSeq(T...) = T;
+alias allFoos = AliasSeq!(__traits(hasMember, S, "foo", true)); \ No newline at end of file
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail17.d b/gcc/testsuite/gdc.test/fail_compilation/fail17.d
index fa3b488..2c73d30 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail17.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail17.d
@@ -1,3 +1,11 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail17.d(11): Error: undefined identifier `B`
+fail_compilation/fail17.d(11): Error: mixin `fail17.A!int.A.B!(T, A!T)` is not defined
+fail_compilation/fail17.d(14): Error: template instance `fail17.A!int` error instantiating
+---
+*/
struct A(T)
{
mixin B!(T, A!(T));
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail17502.d b/gcc/testsuite/gdc.test/fail_compilation/fail17502.d
index 8202b1e..b1366d1 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail17502.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail17502.d
@@ -1,10 +1,10 @@
/*
TEST_OUTPUT:
---
-fail_compilation/fail17502.d(12): Error: function fail17502.Foo.foo void functions have no result
-fail_compilation/fail17502.d(13): Error: cannot have parameter of type const(void)
-fail_compilation/fail17502.d(16): Error: function fail17502.Foo.bar void functions have no result
-fail_compilation/fail17502.d(17): Error: cannot have parameter of type const(void)
+fail_compilation/fail17502.d(13): Error: function `fail17502.Foo.foo` `void` functions have no result
+fail_compilation/fail17502.d(13): Error: undefined identifier `res`
+fail_compilation/fail17502.d(17): Error: function `fail17502.Foo.bar` `void` functions have no result
+fail_compilation/fail17502.d(17): Error: undefined identifier `res`
---
*/
class Foo
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail18143.d b/gcc/testsuite/gdc.test/fail_compilation/fail18143.d
new file mode 100644
index 0000000..28df93a
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail18143.d
@@ -0,0 +1,43 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail18143.d(20): Error: variable `fail18143.S.a` cannot modify parameter `this` in contract
+fail_compilation/fail18143.d(21): Error: variable `fail18143.S.a` cannot modify parameter `this` in contract
+fail_compilation/fail18143.d(25): Error: variable `fail18143.S.a` cannot modify parameter `this` in contract
+fail_compilation/fail18143.d(26): Error: variable `fail18143.S.a` cannot modify parameter `this` in contract
+fail_compilation/fail18143.d(35): Error: variable `fail18143.C.a` cannot modify parameter `this` in contract
+fail_compilation/fail18143.d(36): Error: variable `fail18143.C.a` cannot modify parameter `this` in contract
+fail_compilation/fail18143.d(40): Error: variable `fail18143.C.a` cannot modify parameter `this` in contract
+fail_compilation/fail18143.d(41): Error: variable `fail18143.C.a` cannot modify parameter `this` in contract
+---
+*/
+
+struct S
+{
+ int a;
+
+ this(int n)
+ in { a = n; } // error, modifying this.a in contract
+ out { a = n; } // error, modifying this.a in contract
+ do { }
+
+ void foo(int n)
+ in { a = n; } // error, modifying this.a in contract
+ out { a = n; } // error, modifying this.a in contract
+ do { }
+}
+
+class C
+{
+ int a;
+
+ this(int n)
+ in { a = n; } // error, modifying this.a in contract
+ out { a = n; } // error, modifying this.a in contract
+ do { }
+
+ void foo(int n)
+ in { a = n; } // error, modifying this.a in contract
+ out { a = n; } // error, modifying this.a in contract
+ do { }
+}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail18719.d b/gcc/testsuite/gdc.test/fail_compilation/fail18719.d
new file mode 100644
index 0000000..7d993d1
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail18719.d
@@ -0,0 +1,41 @@
+// https://issues.dlang.org/show_bug.cgi?id=18719
+
+// REQUIRED_ARGS:
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail18719.d(30): Error: immutable field `x` initialized multiple times
+ Previous initialization is here.
+---
+*/
+
+struct S
+{
+ int x = -1;
+ this(int y) immutable
+ {
+ x = y;
+ import std.stdio;
+ writeln("Ctor called with ", y);
+ }
+ void opAssign(int) immutable;
+}
+
+class C
+{
+ S x;
+ this() immutable
+ {
+ this(42); /* Initializes x. */
+ x = 13; /* Breaking immutable, or ok? */
+ }
+ this(int x) immutable
+ {
+ this.x = x;
+ }
+}
+
+void main()
+{
+ new immutable C;
+}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail196.d b/gcc/testsuite/gdc.test/fail_compilation/fail196.d
index 2a2812b..78fc361 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail196.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail196.d
@@ -1,3 +1,25 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail196.d(26): Error: delimited string must end in )"
+fail_compilation/fail196.d(26): Error: Implicit string concatenation is error-prone and disallowed in D
+fail_compilation/fail196.d(26): Use the explicit syntax instead (concatenating literals is `@nogc`): "foo(xxx)" ~ ";\x0a assert(s == "
+fail_compilation/fail196.d(27): Error: semicolon expected, not `foo`
+fail_compilation/fail196.d(27): Error: found `");\x0a\x0a s = q"` when expecting `;` following statement
+fail_compilation/fail196.d(29): Error: found `";\x0a assert(s == "` when expecting `;` following statement
+fail_compilation/fail196.d(30): Error: found `");\x0a\x0a s = q"` when expecting `;` following statement
+fail_compilation/fail196.d(32): Error: found `{` when expecting `;` following statement
+fail_compilation/fail196.d(32): Error: found `}` when expecting `;` following statement
+fail_compilation/fail196.d(33): Error: found `foo` when expecting `;` following statement
+fail_compilation/fail196.d(33): Error: found `}` when expecting `;` following statement
+fail_compilation/fail196.d(35): Error: found `<` when expecting `;` following statement
+fail_compilation/fail196.d(36): Error: found `foo` when expecting `;` following statement
+fail_compilation/fail196.d(36): Error: found `<` instead of statement
+fail_compilation/fail196.d(42): Error: unterminated string constant starting at fail_compilation/fail196.d(42)
+fail_compilation/fail196.d(44): Error: found `End of File` when expecting `}` following compound statement
+fail_compilation/fail196.d(44): Error: found `End of File` when expecting `}` following compound statement
+---
+*/
void main()
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail19890a.d b/gcc/testsuite/gdc.test/fail_compilation/fail19890a.d
index 57c4caf..2120dc5 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail19890a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail19890a.d
@@ -1,5 +1,6 @@
// PERMUTE_ARGS:
/*
+TEST_OUTPUT:
---
fail_compilation/fail19890a.d(8): Error: `void[/^[0-9]+(LU)?$/]` size 1 * /^[0-9]+$/ exceeds 0x7fffffff size limit for static array
---
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail19890b.d b/gcc/testsuite/gdc.test/fail_compilation/fail19890b.d
index a9b1874..c3ee677 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail19890b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail19890b.d
@@ -1,5 +1,6 @@
// PERMUTE_ARGS:
/*
+TEST_OUTPUT:
---
fail_compilation/fail19890b.d(8): Error: `void[/^[0-9]+(LU)?$/]` size 1 * /^[0-9]+$/ exceeds 0x7fffffff size limit for static array
---
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail199.d b/gcc/testsuite/gdc.test/fail_compilation/fail199.d
index e293aa1..9cb14b8 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail199.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail199.d
@@ -1,4 +1,11 @@
// REQUIRED_ARGS: -de
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail199.d(20): Deprecation: class `fail199.DepClass` is deprecated
+fail_compilation/fail199.d(20): Deprecation: class `fail199.DepClass` is deprecated
+---
+*/
//import std.stdio;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail200.d b/gcc/testsuite/gdc.test/fail_compilation/fail200.d
index c0ba46c..9d804a9 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail200.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail200.d
@@ -1,4 +1,11 @@
// REQUIRED_ARGS: -de
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail200.d(17): Deprecation: interface `fail200.DepClass` is deprecated
+fail_compilation/fail200.d(17): Deprecation: interface `fail200.DepClass` is deprecated
+---
+*/
//import std.stdio;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail201.d b/gcc/testsuite/gdc.test/fail_compilation/fail201.d
index d9655b3b..6c4d923 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail201.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail201.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail201.d(10): Error: shift by 33 is outside the range `0..31`
+fail_compilation/fail201.d(10): Error: shift by 33 is outside the range `0..31`
+---
+*/
void main() {
int c;
c = c >>> 33;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail202.d b/gcc/testsuite/gdc.test/fail_compilation/fail202.d
index 78cf21a..57009ed 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail202.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail202.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail202.d(10): Error: shift by 33 is outside the range `0..31`
+fail_compilation/fail202.d(10): Error: shift by 33 is outside the range `0..31`
+---
+*/
void main() {
int c;
c = c >> 33;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail203.d b/gcc/testsuite/gdc.test/fail_compilation/fail203.d
index 3d96e0c..51accf5 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail203.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail203.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail203.d(10): Error: shift by 33 is outside the range `0..31`
+fail_compilation/fail203.d(10): Error: shift by 33 is outside the range `0..31`
+---
+*/
void main() {
int c;
c = c << 33;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail204.d b/gcc/testsuite/gdc.test/fail_compilation/fail204.d
index 41b7c29..e6f2faa 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail204.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail204.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail204.d(9): Error: shift assign by 65 is outside the range `0..63`
+---
+*/
void main() {
long c;
c >>= 65;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail205.d b/gcc/testsuite/gdc.test/fail_compilation/fail205.d
index 04ef95e..89ddc93 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail205.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail205.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail205.d(9): Error: shift assign by 65 is outside the range `0..63`
+---
+*/
void main() {
long c;
c <<= 65;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail206.d b/gcc/testsuite/gdc.test/fail_compilation/fail206.d
index 6c0bf46..e3b2dce 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail206.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail206.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail206.d(9): Error: shift assign by 65 is outside the range `0..63`
+---
+*/
void main() {
long c;
c >>>= 65;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail217.d b/gcc/testsuite/gdc.test/fail_compilation/fail217.d
index 67c28cd..63ed0a0 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail217.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail217.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail217.d(22): Error: mutable method `fail217.Message.this` is not callable using a `immutable` object
+fail_compilation/fail217.d(13): Consider adding `const` or `inout` here
+---
+*/
class Message
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail220.d b/gcc/testsuite/gdc.test/fail_compilation/fail220.d
index 5e2f130..294dc21 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail220.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail220.d
@@ -1,3 +1,13 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail220.d(12): Error: identifier expected for template value parameter
+fail_compilation/fail220.d(12): Error: found `==` when expecting `)`
+fail_compilation/fail220.d(12): Error: found `class` when expecting `)`
+fail_compilation/fail220.d(12): Error: declaration expected, not `)`
+fail_compilation/fail220.d(16): Error: unrecognized declaration
+---
+*/
template types (T) {
static if (is (T V : V[K], K == class)) {
static assert (false, "assoc");
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail225.d b/gcc/testsuite/gdc.test/fail_compilation/fail225.d
index 6cf59f3..dee9a54 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail225.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail225.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail225.d(15): Error: cannot implicitly convert expression `1` of type `int` to `immutable(char*)`
+fail_compilation/fail225.d(15): Error: cannot implicitly convert expression `& ch` of type `char*` to `immutable(char*)`
+---
+*/
struct Struct {
char* chptr;
}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail232.d b/gcc/testsuite/gdc.test/fail_compilation/fail232.d
index ee2f431..d2e68d4 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail232.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail232.d
@@ -1,3 +1,14 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail232.d(15): Error: shift by 33 is outside the range `0..31`
+fail_compilation/fail232.d(15): Error: shift by 33 is outside the range `0..31`
+fail_compilation/fail232.d(16): Error: shift by 33 is outside the range `0..31`
+fail_compilation/fail232.d(16): Error: shift by 33 is outside the range `0..31`
+fail_compilation/fail232.d(17): Error: shift by 33 is outside the range `0..31`
+fail_compilation/fail232.d(17): Error: shift by 33 is outside the range `0..31`
+---
+*/
void bug1601() {
int i;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail239.d b/gcc/testsuite/gdc.test/fail_compilation/fail239.d
index 81fbca2..14b6443 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail239.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail239.d
@@ -1,2 +1,8 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail239.d(8): Error: type `F` is not an expression
+---
+*/
class F { int x; }
alias typeof(F).x b;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail252.d b/gcc/testsuite/gdc.test/fail_compilation/fail252.d
index 3d2db65..e9ea2bf 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail252.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail252.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail252.d(13): Error: cannot implicitly override base class method `fail252.Timer.Task.run` with `fail252.Timer.__anonclass1.run`; add `override` attribute
+---
+*/
class Timer {
abstract class Task {
public abstract void run();
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail257.d b/gcc/testsuite/gdc.test/fail_compilation/fail257.d
index 249a524..0e2d669 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail257.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail257.d
@@ -1 +1,8 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail257.d(8): Error: incompatible types for `("foo"d) == ("bar"c)`: `dstring` and `string`
+fail_compilation/fail257.d(8): while evaluating `pragma(msg, "foo"d == "bar"c ? "A" : "B")`
+---
+*/
pragma(msg, "foo"d == "bar"c ? "A" : "B");
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail258.d b/gcc/testsuite/gdc.test/fail_compilation/fail258.d
index 97381a6..459d271 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail258.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail258.d
@@ -1,3 +1,13 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail258.d(11): Error: delimiter cannot be whitespace
+fail_compilation/fail258.d(11): Error: delimited string must end in
+"
+fail_compilation/fail258.d(11): Error: declaration expected, not `"X"`
+fail_compilation/fail258.d(14): Error: unterminated string constant starting at fail_compilation/fail258.d(14)
+---
+*/
q"
X
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail262.d b/gcc/testsuite/gdc.test/fail_compilation/fail262.d
index 93e6af0..6d15e1a 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail262.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail262.d
@@ -1,7 +1,7 @@
/*
TEST_OUTPUT:
---
-fail_compilation/fail262.d(23): Error: function fail262.B.f does not override any function
+fail_compilation/fail262.d(23): Error: function `const void fail262.B.f()` does not override any function, did you mean to override `shared const void fail262.A.f()`?
---
*/
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail2740.d b/gcc/testsuite/gdc.test/fail_compilation/fail2740.d
index af7334f..340be52 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail2740.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail2740.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail2740.d(17): Error: class `fail2740.Foo` ambiguous virtual function `foo`
+---
+*/
interface IFoo
{
int foo();
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail276.d b/gcc/testsuite/gdc.test/fail_compilation/fail276.d
index 052558c..4f9b7c3 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail276.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail276.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail276.d(19): Error: `this` has no effect
+fail_compilation/fail276.d(15): Error: `this` is only defined in non-static member functions, not `__anonclass2`
+---
+*/
class C
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail279.d b/gcc/testsuite/gdc.test/fail_compilation/fail279.d
index 22d795e..8fa7aa4 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail279.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail279.d
@@ -1,4 +1,12 @@
-// Issue 2920 - recursive templates blow compiler stack
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail279.d(14): Error: mixin `fail279.Template!0.Template!1.Template!2.Template!3.Template!4.Template!5.Template!6.Template!7.Template!8.Template!9.Template!10.Template!11.Template!12.Template!13.Template!14.Template!15.Template!16.Template!17.Template!18.Template!19.Template!20.Template!21.Template!22.Template!23.Template!24.Template!25.Template!26.Template!27.Template!28.Template!29.Template!30.Template!31.Template!32.Template!33.Template!34.Template!35.Template!36.Template!37.Template!38.Template!39.Template!40.Template!41.Template!42.Template!43.Template!44.Template!45.Template!46.Template!47.Template!48.Template!49.Template!50.Template!51.Template!52.Template!53.Template!54.Template!55.Template!56.Template!57.Template!58.Template!59.Template!60.Template!61.Template!62.Template!63.Template!64.Template!65.Template!66.Template!67.Template!68.Template!69.Template!70.Template!71.Template!72.Template!73.Template!74.Template!75.Template!76.Template!77.Template!78.Template!79.Template!80.Template!81.Template!82.Template!83.Template!84.Template!85.Template!86.Template!87.Template!88.Template!89.Template!90.Template!91.Template!92.Template!93.Template!94.Template!95.Template!96.Template!97.Template!98.Template!99.Template!100.Template!101.Template!102.Template!103.Template!104.Template!105.Template!106.Template!107.Template!108.Template!109.Template!110.Template!111.Template!112.Template!113.Template!114.Template!115.Template!116.Template!117.Template!118.Template!119.Template!120.Template!121.Template!122.Template!123.Template!124.Template!125.Template!126.Template!127.Template!128.Template!129.Template!130.Template!131.Template!132.Template!133.Template!134.Template!135.Template!136.Template!137.Template!138.Template!139.Template!140.Template!141.Template!142.Template!143.Template!144.Template!145.Template!146.Template!147.Template!148.Template!149.Template!150.Template!151.Template!152.Template!153.Template!154.Template!155.Template!156.Template!157.Template!158.Template!159.Template!160.Template!161.Template!162.Template!163.Template!164.Template!165.Template!166.Template!167.Template!168.Template!169.Template!170.Template!171.Template!172.Template!173.Template!174.Template!175.Template!176.Template!177.Template!178.Template!179.Template!180.Template!181.Template!182.Template!183.Template!184.Template!185.Template!186.Template!187.Template!188.Template!189.Template!190.Template!191.Template!192.Template!193.Template!194.Template!195.Template!196.Template!197.Template!198.Template!199.Template!200.Template!201.Template!202.Template!203.Template!204.Template!205.Template!206.Template!207.Template!208.Template!209.Template!210.Template!211.Template!212.Template!213.Template!214.Template!215.Template!216.Template!217.Template!218.Template!219.Template!220.Template!221.Template!222.Template!223.Template!224.Template!225.Template!226.Template!227.Template!228.Template!229.Template!230.Template!231.Template!232.Template!233.Template!234.Template!235.Template!236.Template!237.Template!238.Template!239.Template!240.Template!241.Template!242.Template!243.Template!244.Template!245.Template!246.Template!247.Template!248.Template!249.Template!250.Template!251.Template!252.Template!253.Template!254.Template!255.Template!256.Template!257.Template!258.Template!259.Template!260.Template!261.Template!262.Template!263.Template!264.Template!265.Template!266.Template!267.Template!268.Template!269.Template!270.Template!271.Template!272.Template!273.Template!274.Template!275.Template!276.Template!277.Template!278.Template!279.Template!280.Template!281.Template!282.Template!283.Template!284.Template!285.Template!286.Template!287.Template!288.Template!289.Template!290.Template!291.Template!292.Template!293.Template!294.Template!295.Template!296.Template!297.Template!298.Template!299.Template!300.Template!301.Template!302.Template!303.Template!304.Template!305.Template!306.Template!307.Template!308.Template!309.Template!310.Template!311.Template!312.Template!313.Template!314.Template!315.Template!316.Template!317.Template!318.Template!319.Template!320.Template!321.Template!322.Template!323.Template!324.Template!325.Template!326.Template!327.Template!328.Template!329.Template!330.Template!331.Template!332.Template!333.Template!334.Template!335.Template!336.Template!337.Template!338.Template!339.Template!340.Template!341.Template!342.Template!343.Template!344.Template!345.Template!346.Template!347.Template!348.Template!349.Template!350.Template!351.Template!352.Template!353.Template!354.Template!355.Template!356.Template!357.Template!358.Template!359.Template!360.Template!361.Template!362.Template!363.Template!364.Template!365.Template!366.Template!367.Template!368.Template!369.Template!370.Template!371.Template!372.Template!373.Template!374.Template!375.Template!376.Template!377.Template!378.Template!379.Template!380.Template!381.Template!382.Template!383.Template!384.Template!385.Template!386.Template!387.Template!388.Template!389.Template!390.Template!391.Template!392.Template!393.Template!394.Template!395.Template!396.Template!397.Template!398.Template!399.Template!400.Template!401.Template!402.Template!403.Template!404.Template!405.Template!406.Template!407.Template!408.Template!409.Template!410.Template!411.Template!412.Template!413.Template!414.Template!415.Template!416.Template!417.Template!418.Template!419.Template!420.Template!421.Template!422.Template!423.Template!424.Template!425.Template!426.Template!427.Template!428.Template!429.Template!430.Template!431.Template!432.Template!433.Template!434.Template!435.Template!436.Template!437.Template!438.Template!439.Template!440.Template!441.Template!442.Template!443.Template!444.Template!445.Template!446.Template!447.Template!448.Template!449.Template!450.Template!451.Template!452.Template!453.Template!454.Template!455.Template!456.Template!457.Template!458.Template!459.Template!460.Template!461.Template!462.Template!463.Template!464.Template!465.Template!466.Template!467.Template!468.Template!469.Template!470.Template!471.Template!472.Template!473.Template!474.Template!475.Template!476.Template!477.Template!478.Template!479.Template!480.Template!481.Template!482.Template!483.Template!484.Template!485.Template!486.Template!487.Template!488.Template!489.Template!490.Template!491.Template!492.Template!493.Template!494.Template!495.Template!496.Template!497.Template!498.Template!499.Template!500` recursive expansion
+---
+*/
+
+// https://issues.dlang.org/show_bug.cgi?id=2920
+// recursive templates blow compiler stack
// template_16
template Template(int i)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail280.d b/gcc/testsuite/gdc.test/fail_compilation/fail280.d
index 796d171..95e6c23 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail280.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail280.d
@@ -1,5 +1,12 @@
-// Issue 2920 - recursive templates blow compiler stack
+// https://issues.dlang.org/show_bug.cgi?id=2920
+// recursive templates blow compiler stack
// template_17_A.
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail280.d(13): Error: template instance `fail280.t!500` recursive expansion exceeded allowed nesting limit
+---
+*/
template t(int i)
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail281.d b/gcc/testsuite/gdc.test/fail_compilation/fail281.d
index daa9385..3b9bcd7 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail281.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail281.d
@@ -1,5 +1,12 @@
-// Issue 2920 - recursive templates blow compiler stack
+// https://issues.dlang.org/show_bug.cgi?id=2920
+// recursive templates blow compiler stack
// template_29_B.
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail281.d(15): Error: template instance `fail281.foo!4294966795u` recursive expansion exceeded allowed nesting limit
+---
+*/
template foo(uint i)
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail308.d b/gcc/testsuite/gdc.test/fail_compilation/fail308.d
index d283da0..d885b3e 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail308.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail308.d
@@ -1,4 +1,10 @@
// REQUIRED_ARGS: -unittest
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail308.d(18): Error: template instance `object.RTInfo!(TestType)` recursive expansion
+---
+*/
void main()
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail313.d b/gcc/testsuite/gdc.test/fail_compilation/fail313.d
index 8f11001..a2c2890 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail313.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail313.d
@@ -2,11 +2,9 @@
REQUIRED_ARGS: -de
TEST_OUTPUT:
---
-fail_compilation/fail313.d(18): Deprecation: module imports.b313 is not accessible here, perhaps add 'static import imports.b313;'
-fail_compilation/fail313.d(25): Deprecation: imports.a313.core is not visible from module test313
-fail_compilation/fail313.d(25): Deprecation: package core.stdc is not accessible here
-fail_compilation/fail313.d(25): Deprecation: module core.stdc.stdio is not accessible here, perhaps add 'static import core.stdc.stdio;'
-fail_compilation/fail313.d(30): Deprecation: package imports.pkg313 is not accessible here, perhaps add 'static import imports.pkg313;'
+fail_compilation/fail313.d(15): Error: undefined identifier `b313` in package `imports`, perhaps add `static import imports.b313;`
+fail_compilation/fail313.d(22): Error: undefined identifier `core`
+fail_compilation/fail313.d(27): Error: undefined identifier `pkg313` in package `imports`, perhaps add `static import imports.pkg313;`
---
*/
module test313;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail3150.d b/gcc/testsuite/gdc.test/fail_compilation/fail3150.d
index 3382bad..5ca758c 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail3150.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail3150.d
@@ -1,4 +1,10 @@
// REQUIRED_ARGS: -de
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail3150.d(10): Error: cannot cast expression `[1, 2]` of type `int[]` to `ulong`
+---
+*/
void main() {
ulong u = cast(ulong)[1,2];
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail316.d b/gcc/testsuite/gdc.test/fail_compilation/fail316.d
index 21788d6..ab4077c 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail316.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail316.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail316.d(17): Error: mixin `fail316.foo.BadImpl!(uint, Mix1)` cannot resolve forward reference
+---
+*/
template BadImpl(T, alias thename)
{
void a_bad_idea(T t)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail324.d b/gcc/testsuite/gdc.test/fail_compilation/fail324.d
index 9963c8b..931cb8d 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail324.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail324.d
@@ -1,5 +1,5 @@
/*
-test_output:
+TEST_OUTPUT:
---
fail_compilation/fail324.d(16): Error: template instance doStuff!((i){ return i; }) cannot use local '__lambda1' as parameter to non-global template doStuff(alias fun)()
---
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail3290.d b/gcc/testsuite/gdc.test/fail_compilation/fail3290.d
index f398fc9..2b6bbac 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail3290.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail3290.d
@@ -1,4 +1,10 @@
-// 3290
+// https://issues.dlang.org/show_bug.cgi?id=3290
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail3290.d(12): Error: argument type mismatch, `const(int)` to `ref int`
+---
+*/
void main()
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail341.d b/gcc/testsuite/gdc.test/fail_compilation/fail341.d
index af78e81..8677d48 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail341.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail341.d
@@ -1,8 +1,8 @@
/*
TEST_OUTPUT:
---
-fail_compilation/fail341.d(26): Error: struct fail341.S is not copyable because it is annotated with @disable
-fail_compilation/fail341.d(27): Error: function fail341.foo is not callable because it is annotated with @disable
+fail_compilation/fail341.d(26): Error: struct fail341.S is not copyable because it is annotated with `@disable`
+fail_compilation/fail341.d(27): Error: function `fail341.foo` cannot be used because it is annotated with `@disable`
---
*/
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail344.d b/gcc/testsuite/gdc.test/fail_compilation/fail344.d
index 9173740..f395392 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail344.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail344.d
@@ -1,4 +1,16 @@
-// 3737
+// https://issues.dlang.org/show_bug.cgi?id=3737
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail344.d(20): Error: undefined identifier `Q`
+fail_compilation/fail344.d(20): Error: undefined identifier `Q`
+fail_compilation/fail344.d(20): Error: undefined identifier `V`
+fail_compilation/fail344.d(23): while evaluating: `static assert(Alike!(SIB!(crayon)))`
+fail_compilation/fail344.d(23): Error: template instance `fail344.SIB!(crayon).SIB.Alike!(SIB!(crayon))` error instantiating
+fail_compilation/fail344.d(23): while evaluating: `static assert(Alike!(SIB!(crayon)))`
+fail_compilation/fail344.d(28): Error: template instance `fail344.SIB!(crayon).SIB.opDispatch!"E"` error instantiating
+---
+*/
int crayon;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail346.d b/gcc/testsuite/gdc.test/fail_compilation/fail346.d
index 532f0bf..af491bd 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail346.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail346.d
@@ -1,3 +1,12 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail346.d(15): Error: undefined identifier `P`
+fail_compilation/fail346.d(15): Error: variable `fail346.S.T!0.T` cannot use template to add field to aggregate `S`
+fail_compilation/fail346.d(20): Error: template instance `fail346.S.T!0` error instantiating
+fail_compilation/fail346.d(23): instantiated from here: `V!(S, 0)`
+---
+*/
struct S {
int x;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail356a.d b/gcc/testsuite/gdc.test/fail_compilation/fail356a.d
index 4981f72..6375b5c 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail356a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail356a.d
@@ -1,2 +1,9 @@
+/*
+EXTRA_FILES: imports/fail356.d
+TEST_OUTPUT:
+---
+fail_compilation/fail356a.d(9): Error: variable `fail356a.imports` conflicts with import `fail356a.imports` at fail_compilation/fail356a.d(8)
+---
+*/
import imports.fail356;
int imports; // collides with package name
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail356b.d b/gcc/testsuite/gdc.test/fail_compilation/fail356b.d
index 18f6085..21f91b1 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail356b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail356b.d
@@ -1,2 +1,9 @@
+/*
+EXTRA_FILES: imports/fail356.d
+TEST_OUTPUT:
+---
+fail_compilation/fail356b.d(9): Error: variable `fail356b.bar` conflicts with alias `fail356b.bar` at fail_compilation/fail356b.d(8)
+---
+*/
import imports.fail356 : bar;
int bar; // collides with selective import
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail356c.d b/gcc/testsuite/gdc.test/fail_compilation/fail356c.d
index ab12c90..bd10943 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail356c.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail356c.d
@@ -1,2 +1,9 @@
+/*
+EXTRA_FILES: imports/fail356.d
+TEST_OUTPUT:
+---
+fail_compilation/fail356c.d(9): Error: variable `fail356c.foo` conflicts with import `fail356c.foo` at fail_compilation/fail356c.d(8)
+---
+*/
import foo = imports.fail356;
int foo; // collides with renamed import
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail3581a.d b/gcc/testsuite/gdc.test/fail_compilation/fail3581a.d
index 5c44866..56e8c0c 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail3581a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail3581a.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail3581a.d(9): Error: function `fail3581a.B.f` cannot override a non-virtual function
+---
+*/
class A { void f() {} }
class B : A { static override void f() {}; }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail3581b.d b/gcc/testsuite/gdc.test/fail_compilation/fail3581b.d
index 38be322..c2f7f13 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail3581b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail3581b.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail3581b.d(9): Error: function `fail3581b.B.f` `private` method is not virtual and cannot override
+---
+*/
class A { void f() {} }
class B : A { private override void f() {}; }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail359.d b/gcc/testsuite/gdc.test/fail_compilation/fail359.d
index aae36c8..c6a23ad 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail359.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail359.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail359.d(8): Error: #line integer ["filespec"]\n expected
+fail_compilation/fail359.d(9): Error: no identifier for declarator `_BOOM`
+---
+*/
#line 5 _BOOM
void main() { }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail3673a.d b/gcc/testsuite/gdc.test/fail_compilation/fail3673a.d
index 92c23f0..889d940 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail3673a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail3673a.d
@@ -1,2 +1,8 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail3673a.d(8): Error: template constraints only allowed for templates
+---
+*/
class A {}
class B : A if(false) { }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail3673b.d b/gcc/testsuite/gdc.test/fail_compilation/fail3673b.d
index 264b4ae..bf745ac 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail3673b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail3673b.d
@@ -1,2 +1,12 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail3673b.d(12): Error: basic type expected, not `if`
+fail_compilation/fail3673b.d(12): Error: template constraints only allowed for templates
+fail_compilation/fail3673b.d(12): Error: { } expected following `class` declaration
+fail_compilation/fail3673b.d(12): Error: no identifier for declarator `A`
+fail_compilation/fail3673b.d(12): Error: declaration expected, not `{`
+---
+*/
class A {}
class B : if(false) A { }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail3731.d b/gcc/testsuite/gdc.test/fail_compilation/fail3731.d
index 377fd49..c2903bb 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail3731.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail3731.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail3731.d(13): Error: cannot implicitly convert expression `x` of type `immutable(D)` to `fail3731.main.C`
+---
+*/
void main()
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail3753.d b/gcc/testsuite/gdc.test/fail_compilation/fail3753.d
index 4855995..d20d8e9 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail3753.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail3753.d
@@ -1,4 +1,5 @@
/*
+TEST_OUTPUT:
---
Error: cannot mix core.std.stdlib.alloca() and exception handling in _Dmain()
---
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail3895.d b/gcc/testsuite/gdc.test/fail_compilation/fail3895.d
index 9921f2a..3879ef5 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail3895.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail3895.d
@@ -1,9 +1,14 @@
-import std.stdio;
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail3895.d(12): Error: cannot append type `double[]` to type `float[]`
+---
+*/
+
void main() {
double[] stuff = [1.,2.,3.,4.,5.];
float[] otherStuff;
otherStuff ~= stuff;
- writeln(otherStuff);
}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4206.d b/gcc/testsuite/gdc.test/fail_compilation/fail4206.d
index 409158a..b9c1671 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4206.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4206.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4206.d(9): Error: initializer must be an expression, not `s`
+---
+*/
struct s {}
enum var = s;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4269a.d b/gcc/testsuite/gdc.test/fail_compilation/fail4269a.d
index 7794c46..6604f1f 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4269a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4269a.d
@@ -1,3 +1,11 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4269a.d(12): Error: undefined identifier `B`
+fail_compilation/fail4269a.d(12): Error: variable `fail4269a.A.blah` field not allowed in interface
+fail_compilation/fail4269a.d(13): Error: undefined identifier `B`
+---
+*/
enum bool WWW = is(typeof(A.x));
interface A {
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4269b.d b/gcc/testsuite/gdc.test/fail_compilation/fail4269b.d
index 2234cb8..2530133 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4269b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4269b.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4269b.d(11): Error: undefined identifier `B`
+fail_compilation/fail4269b.d(12): Error: undefined identifier `B`
+---
+*/
enum bool WWW = is(typeof(A.x));
struct A {
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4269c.d b/gcc/testsuite/gdc.test/fail_compilation/fail4269c.d
index b00ec1b..8bbfaac 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4269c.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4269c.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4269c.d(11): Error: undefined identifier `B`
+fail_compilation/fail4269c.d(12): Error: undefined identifier `B`
+---
+*/
enum bool WWW = is(typeof(A.x));
class A {
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4269d.d b/gcc/testsuite/gdc.test/fail_compilation/fail4269d.d
index b9d2afc..135e1d4 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4269d.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4269d.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4269d.d(9): Error: undefined identifier `Y`
+---
+*/
static if(is(typeof(X6.init))) {}
alias Y X6;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4269e.d b/gcc/testsuite/gdc.test/fail_compilation/fail4269e.d
index d7b2f23..c63bfac 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4269e.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4269e.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4269e.d(10): Error: semicolon expected, not `X5`
+fail_compilation/fail4269e.d(10): Error: no identifier for declarator `X5`
+---
+*/
static if(is(typeof(X5.init))) {}
typedef Y X5;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4269f.d b/gcc/testsuite/gdc.test/fail_compilation/fail4269f.d
index 4033447..7a719c7 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4269f.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4269f.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4269f.d(9): Error: `alias X16 = X16;` cannot alias itself, use a qualified name to create an overload set
+---
+*/
static if(is(typeof(X16))) {}
alias X16 X16;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4269g.d b/gcc/testsuite/gdc.test/fail_compilation/fail4269g.d
index 9241e48..69d9a9a 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4269g.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4269g.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4269g.d(10): Error: alias `fail4269g.Xg` cannot alias an expression `d[1]`
+---
+*/
int[2] d;
static if(is(typeof(Xg.init))) {}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375a.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375a.d
index 030b485..5ee2a31 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375a.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375a.d(14): Warning: else is dangling, add { } after condition at fail_compilation/fail4375a.d(11)
+---
+*/
void main() {
if (true)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375b.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375b.d
index 6ac5b71..0d16446 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375b.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375b.d(16): Warning: else is dangling, add { } after condition at fail_compilation/fail4375b.d(12)
+---
+*/
void main() {
// disallowed
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375c.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375c.d
index 697c99f..4e578aa 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375c.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375c.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375c.d(15): Warning: else is dangling, add { } after condition at fail_compilation/fail4375c.d(11)
+---
+*/
void main() {
if (true)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375d.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375d.d
index 329907e..8e9b4e7 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375d.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375d.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375d.d(15): Warning: else is dangling, add { } after condition at fail_compilation/fail4375d.d(11)
+---
+*/
void main() {
if (true)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375e.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375e.d
index 14b96d7..ae809bc 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375e.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375e.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375e.d(14): Warning: else is dangling, add { } after condition at fail_compilation/fail4375e.d(11)
+---
+*/
void main() {
version (A)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375f.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375f.d
index c715ee6..5855b1b 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375f.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375f.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375f.d(14): Warning: else is dangling, add { } after condition at fail_compilation/fail4375f.d(11)
+---
+*/
void main() {
version (A)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375g.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375g.d
index f555651..4b9d12b 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375g.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375g.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375g.d(14): Warning: else is dangling, add { } after condition at fail_compilation/fail4375g.d(11)
+---
+*/
void main() {
static if (true)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375h.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375h.d
index 793e42b..72e3e14 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375h.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375h.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375h.d(16): Warning: else is dangling, add { } after condition at fail_compilation/fail4375h.d(13)
+---
+*/
void main() {
switch (4) {
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375i.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375i.d
index da3e67c..5801c61 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375i.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375i.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375i.d(16): Warning: else is dangling, add { } after condition at fail_compilation/fail4375i.d(11)
+---
+*/
void main() {
if (true)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375j.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375j.d
index cd289a0..9a87540 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375j.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375j.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375j.d(16): Warning: else is dangling, add { } after condition at fail_compilation/fail4375j.d(11)
+---
+*/
void main() {
if (true)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375k.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375k.d
index f372406..bb8b7b2 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375k.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375k.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375k.d-mixin-11(15): Warning: else is dangling, add { } after condition at fail_compilation/fail4375k.d-mixin-11(12)
+---
+*/
void main() {
mixin(q{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375l.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375l.d
index fea1d82..965b0e7 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375l.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375l.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375l.d(15): Warning: else is dangling, add { } after condition at fail_compilation/fail4375l.d(11)
+---
+*/
void main() {
if (true)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375m.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375m.d
index fdde1a1..a6bdf1e 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375m.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375m.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375m.d(15): Warning: else is dangling, add { } after condition at fail_compilation/fail4375m.d(12)
+---
+*/
void main() {
do
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375o.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375o.d
index 6c3d3e1..c37b219 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375o.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375o.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375o.d(15): Warning: else is dangling, add { } after condition at fail_compilation/fail4375o.d(11)
+---
+*/
void main() {
if (true)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375p.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375p.d
index 82f7cab..52a6e65 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375p.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375p.d
@@ -1,5 +1,12 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375p.d(19): Warning: else is dangling, add { } after condition at fail_compilation/fail4375p.d(12)
+fail_compilation/fail4375p.d(16): Error: undefined identifier `x`
+---
+*/
void main() {
if (true)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375q.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375q.d
index 7d11c46..f445eab 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375q.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375q.d
@@ -1,5 +1,12 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375q.d(17): Warning: else is dangling, add { } after condition at fail_compilation/fail4375q.d(13)
+fail_compilation/fail4375q.d(14): Error: `with` expressions must be aggregate types or pointers to them, not `int`
+---
+*/
void main() {
auto x = 1;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375r.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375r.d
index 49b2f8a..61923e2 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375r.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375r.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375r.d(17): Warning: else is dangling, add { } after condition at fail_compilation/fail4375r.d(11)
+---
+*/
void main() {
if (true)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375s.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375s.d
index ed1b725..cd4e5a0 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375s.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375s.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375s.d(17): Warning: else is dangling, add { } after condition at fail_compilation/fail4375s.d(11)
+---
+*/
void main() {
if (true)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375t.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375t.d
index 1975636..557761b 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375t.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375t.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w -unittest
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375t.d(14): Warning: else is dangling, add { } after condition at fail_compilation/fail4375t.d(11)
+---
+*/
unittest { // disallowed
if (true)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375u.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375u.d
index cb06823..1028b78 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375u.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375u.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375u.d(13): Warning: else is dangling, add { } after condition at fail_compilation/fail4375u.d(11)
+---
+*/
static if (true)
static if (false)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375v.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375v.d
index 1510c8d..f4a6089 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375v.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375v.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375v.d(13): Warning: else is dangling, add { } after condition at fail_compilation/fail4375v.d(11)
+---
+*/
version (A)
version (B)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375w.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375w.d
index cd3c3bd..ae1ac21 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375w.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375w.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375w.d(13): Warning: else is dangling, add { } after condition at fail_compilation/fail4375w.d(11)
+---
+*/
static if (true)
version (B)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375x.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375x.d
index b6ae64f..33c8eb2 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375x.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375x.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375x.d(14): Warning: else is dangling, add { } after condition at fail_compilation/fail4375x.d(11)
+---
+*/
static if (true)
abstract:
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4375y.d b/gcc/testsuite/gdc.test/fail_compilation/fail4375y.d
index b3713e3..bc79631 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4375y.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4375y.d
@@ -1,5 +1,11 @@
// REQUIRED_ARGS: -w
-// 4375: Dangling else
+// https://issues.dlang.org/show_bug.cgi?id=4375: Dangling else
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4375y.d(16): Warning: else is dangling, add { } after condition at fail_compilation/fail4375y.d(11)
+---
+*/
static if (true)
align(1)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4510.d b/gcc/testsuite/gdc.test/fail_compilation/fail4510.d
index d101000..64a8d45 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4510.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4510.d
@@ -1,4 +1,10 @@
-// 4510
+// https://issues.dlang.org/show_bug.cgi?id=4510
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4510.d(12): Error: argument type mismatch, `float` to `ref double`
+---
+*/
void main()
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4511.d b/gcc/testsuite/gdc.test/fail_compilation/fail4511.d
index f4d8a1c..efe4d41 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4511.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4511.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4511.d(18): Error: cannot implicitly override base class method `fail4511.test72.X.func` with `fail4511.test72.Y.func`; add `override` attribute
+---
+*/
void test72()
{
class A {}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4517.d b/gcc/testsuite/gdc.test/fail_compilation/fail4517.d
index a55b0f5..f3fe031 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4517.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4517.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4517.d(16): Error: `enum` member `B` not represented in `final switch`
+---
+*/
enum E : ushort
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4611.d b/gcc/testsuite/gdc.test/fail_compilation/fail4611.d
index f1547ba..02fcc2e 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4611.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4611.d
@@ -1,4 +1,5 @@
/*
+TEST_OUTPUT:
---
fail_compilation/fail4611.d(15): Error: Vec[2147483647] size 4 * 2147483647 exceeds 0x7fffffff size limit for static array
---
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail47.d b/gcc/testsuite/gdc.test/fail_compilation/fail47.d
index d320fda..9da0c09 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail47.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail47.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail47.d(8): Error: variable `fail47._foo` is aliased to a function
+---
+*/
void foo() {}
int _foo;
alias _foo foo;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail4958.d b/gcc/testsuite/gdc.test/fail_compilation/fail4958.d
index b723476..02bbc61 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail4958.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail4958.d
@@ -1,2 +1,8 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail4958.d(8): Error: enum member `fail4958.FloatEnum.B` has inexact value due to loss of precision
+---
+*/
enum FloatEnum : float { A = float.max/2, B, C }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail5435.d b/gcc/testsuite/gdc.test/fail_compilation/fail5435.d
index 2c610a8..fefed37 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail5435.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail5435.d
@@ -1,4 +1,32 @@
-// 5435
+// https://issues.dlang.org/show_bug.cgi?id=5435
+/*
+TEST_OUTPUT:
+---
+Enum5435.A
+Enum5435.B
+Enum5435.C
+fail_compilation/fail5435.d(38): Error: cannot implicitly convert expression `"foo"` of type `string` to `Enum5435`
+fail_compilation/fail5435.d(38): while evaluating `pragma(msg, foo)`
+fail_compilation/fail5435.d(38): Error: cannot implicitly convert expression `3.0` of type `double` to `Enum5435`
+fail_compilation/fail5435.d(38): while evaluating `pragma(msg, foo)`
+fail_compilation/fail5435.d(39): Error: cannot implicitly convert expression `Enum5435.A` of type `Enum5435` to `string`
+fail_compilation/fail5435.d(39): while evaluating `pragma(msg, foo)`
+fail_compilation/fail5435.d(39): Error: cannot implicitly convert expression `Enum5435.B` of type `Enum5435` to `string`
+fail_compilation/fail5435.d(39): while evaluating `pragma(msg, foo)`
+fail_compilation/fail5435.d(39): Error: cannot implicitly convert expression `Enum5435.C` of type `Enum5435` to `string`
+fail_compilation/fail5435.d(39): while evaluating `pragma(msg, foo)`
+foo
+fail_compilation/fail5435.d(39): Error: cannot implicitly convert expression `3.0` of type `double` to `string`
+fail_compilation/fail5435.d(39): while evaluating `pragma(msg, foo)`
+0
+1
+2
+fail_compilation/fail5435.d(40): Error: cannot implicitly convert expression `"foo"` of type `string` to `int`
+fail_compilation/fail5435.d(40): while evaluating `pragma(msg, foo)`
+fail_compilation/fail5435.d(40): Error: cannot implicitly convert expression `3.0` of type `double` to `int`
+fail_compilation/fail5435.d(40): while evaluating `pragma(msg, foo)`
+---
+*/
template Tuple5435(E...) { alias E Tuple5435; }
enum Enum5435 { A, B, C };
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail56.d b/gcc/testsuite/gdc.test/fail_compilation/fail56.d
index 579401f..64902fe 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail56.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail56.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail56.d(21): Error: mixin `dstress.nocompile.bug_20050330_A.main.Blah!(5, a).Blah!(5, a)` recursive mixin instantiation
+fail_compilation/fail56.d(26): Error: mixin `dstress.nocompile.bug_20050330_A.main.Blah!(5, a)` error instantiating
+---
+*/
// $HeadURL$
// $Date$
// $Author$
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail5634.d b/gcc/testsuite/gdc.test/fail_compilation/fail5634.d
index 0044adf..e2442e6 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail5634.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail5634.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+----
+fail_compilation/fail5634.d(9): Error: function `D main()` conflicts with previous declaration at fail_compilation/fail5634.d(8)
+---
+*/
+
void main() { }
void main() { }
-
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail57.d b/gcc/testsuite/gdc.test/fail_compilation/fail57.d
index ded3a6e..41149cd 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail57.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail57.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail57.d(11): Error: divide by 0
+fail_compilation/fail57.d(11): Error: divide by 0
+---
+*/
int main()
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail5733.d b/gcc/testsuite/gdc.test/fail_compilation/fail5733.d
index 2292716..d58b362 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail5733.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail5733.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail5733.d(12): Error: `opDispatch!"foo"` isn't a template
+---
+*/
struct Test
{
struct opDispatch(string dummy)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail58.d b/gcc/testsuite/gdc.test/fail_compilation/fail58.d
index ad6f8da..29d9e58 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail58.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail58.d
@@ -1,3 +1,12 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail58.d(26): Error: function `fail58.SomeFunc(dchar[] pText, out int pStopPosn)` is not callable using argument types `(string, int)`
+fail_compilation/fail58.d(26): cannot pass argument `"123"` of type `string` to parameter `dchar[] pText`
+fail_compilation/fail58.d(30): Error: function `fail58.SomeFunc(dchar[] pText, out int pStopPosn)` is not callable using argument types `(string, int)`
+fail_compilation/fail58.d(30): cannot pass argument `""` of type `string` to parameter `dchar[] pText`
+---
+*/
debug(1) import std.stdio;
const int anything = -1000; // Line #2
dchar[] SomeFunc( dchar[] pText, out int pStopPosn)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail5851.d b/gcc/testsuite/gdc.test/fail_compilation/fail5851.d
index c422c14..236a956 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail5851.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail5851.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail5851.d(11): Error: alias this is not reachable as `Foo` already converts to `object.Object`
+---
+*/
class Foo
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail5953a1.d b/gcc/testsuite/gdc.test/fail_compilation/fail5953a1.d
index f977c58..cd64e74 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail5953a1.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail5953a1.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail5953a1.d(9): Error: expression expected, not `,`
+---
+*/
void main()
{
auto a2 = [,]; // invalid, but compiles
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail5953a2.d b/gcc/testsuite/gdc.test/fail_compilation/fail5953a2.d
index a1e6c75..2edbc10 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail5953a2.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail5953a2.d
@@ -1,3 +1,11 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail5953a2.d(11): Error: expression expected, not `,`
+fail_compilation/fail5953a2.d(11): Error: expression expected, not `,`
+fail_compilation/fail5953a2.d(11): Error: expression expected, not `,`
+---
+*/
void main()
{
auto a3 = [,,,]; // invalid, but compiles
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail5953s1.d b/gcc/testsuite/gdc.test/fail_compilation/fail5953s1.d
index c64601b..275c3f9 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail5953s1.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail5953s1.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail5953s1.d(10): Error: expression expected, not `,`
+---
+*/
void main()
{
struct S{}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail5953s2.d b/gcc/testsuite/gdc.test/fail_compilation/fail5953s2.d
index 3f1ac9c..d66ff5d 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail5953s2.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail5953s2.d
@@ -1,3 +1,11 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail5953s2.d(12): Error: expression expected, not `,`
+fail_compilation/fail5953s2.d(12): Error: expression expected, not `,`
+fail_compilation/fail5953s2.d(12): Error: expression expected, not `,`
+---
+*/
void main()
{
struct S{}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail60.d b/gcc/testsuite/gdc.test/fail_compilation/fail60.d
index 3d66025..ec8de0b 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail60.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail60.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail60.d(14): Error: `this` is only defined in non-static member functions, not `A`
+---
+*/
class A
{
class B
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail6029.d b/gcc/testsuite/gdc.test/fail_compilation/fail6029.d
index e5199db..45797eb 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail6029.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail6029.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail6029.d(10): Error: alias this is not reachable as `A` already converts to `A`
+---
+*/
struct A
{
static A a;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail6242.d b/gcc/testsuite/gdc.test/fail_compilation/fail6242.d
index 92df770..08f5de3 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail6242.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail6242.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail6242.d(9): Error: cannot implicitly override base class method `fail6242.A.fun` with `fail6242.B.fun`; add `override` attribute
+---
+*/
class A { void fun(int) {} }
class B : A { void fun(int x) in { assert(x > 0); } body {} }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail6458.d b/gcc/testsuite/gdc.test/fail_compilation/fail6458.d
index 52b97a3..218de0d 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail6458.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail6458.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail6458.d(10): Error: Invalid trailing code unit
+---
+*/
void main()
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail6497.d b/gcc/testsuite/gdc.test/fail_compilation/fail6497.d
index d985cb4..3ac90b5 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail6497.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail6497.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail6497.d(12): Error: cannot take address of local `n` in `@safe` function `main`
+fail_compilation/fail6497.d(12): Error: cannot take address of local `n` in `@safe` function `main`
+---
+*/
void main() @safe
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail6561.d b/gcc/testsuite/gdc.test/fail_compilation/fail6561.d
index 8a9da8b..456ef0d 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail6561.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail6561.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail6561.d(9): Error: undefined identifier `x`
+---
+*/
struct S
{
alias x this; // should cause undefined identifier error
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail6611.d b/gcc/testsuite/gdc.test/fail_compilation/fail6611.d
index 7816889..26587dc 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail6611.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail6611.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail6611.d(11): Error: cannot post-increment array slice `x[]`, use pre-increment instead
+---
+*/
void main()
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail6781.d b/gcc/testsuite/gdc.test/fail_compilation/fail6781.d
index ef1c77f..174ca3d 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail6781.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail6781.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail6781.d(9): Error: undefined identifier `some_error`
+fail_compilation/fail6781.d(14): Error: template instance `fail6781.C6781.makeSortedIndices.bug6781!(greater)` error instantiating
+---
+*/
void bug6781(alias xxx)() {
some_error;
}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail6968.d b/gcc/testsuite/gdc.test/fail_compilation/fail6968.d
index 69f63b9..b56a5db 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail6968.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail6968.d
@@ -1,4 +1,14 @@
-// 6968
+// https://issues.dlang.org/show_bug.cgi?id=6968
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail6968.d(26): Error: cannot pass type `int` as a function argument
+fail_compilation/fail6968.d(26): Error: cannot pass type `long` as a function argument
+fail_compilation/fail6968.d(26): Error: circular initialization of variable `fail6968.PredAny!(int, long, float).PredAny`
+fail_compilation/fail6968.d(31): Error: template instance `fail6968.PredAny!(int, long, float)` error instantiating
+fail_compilation/fail6968.d(31): while evaluating `pragma(msg, PredAny!(int, long, float))`
+---
+*/
template Pred(A, B)
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7173.d b/gcc/testsuite/gdc.test/fail_compilation/fail7173.d
index 2f6c748..05ba7f9 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7173.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7173.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7173.d(23): Error: expression `b1._a.opBinary(b2._a).fun()` is `void` and has no value
+---
+*/
struct A{
A opBinary(string op)(A a){ A rt; return rt; }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7178.d b/gcc/testsuite/gdc.test/fail_compilation/fail7178.d
index 04a1018..8540249 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7178.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7178.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7178.d(10): Error: undefined identifier `contents` in module `fail7178`
+fail_compilation/fail7178.d(12): Error: mixin `fail7178.populate!int` error instantiating
+---
+*/
template populate(overloads...)
{
mixin populate!(.contents);
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7234.d b/gcc/testsuite/gdc.test/fail_compilation/fail7234.d
index e8ddd4e..f38308d 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7234.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7234.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7234.d(14): Error: no property `empty` for type `Contract*`, perhaps `import std.range;` is needed?
+---
+*/
struct Contract {
void opDispatch()(){}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7369.d b/gcc/testsuite/gdc.test/fail_compilation/fail7369.d
index b54757d..f17dc96 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7369.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7369.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7369.d(9): Error: cannot modify `this.a` in `const` function
+---
+*/
struct S7369 {
int a;
invariant() { a += 5; }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7424b.d b/gcc/testsuite/gdc.test/fail_compilation/fail7424b.d
index d358b60..1a7e092 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7424b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7424b.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7424b.d(10): Error: cannot resolve type for this.g()()
+---
+*/
struct S7424b
{
@property int g()() { return 0; }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7424c.d b/gcc/testsuite/gdc.test/fail_compilation/fail7424c.d
index c067178..1c06540 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7424c.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7424c.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7424c.d(10): Error: cannot resolve type for this.g()()
+---
+*/
struct S7424c
{
@property int g()() { return 0; }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7424d.d b/gcc/testsuite/gdc.test/fail_compilation/fail7424d.d
index a981be6..d784a75 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7424d.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7424d.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7424d.d(10): Error: cannot resolve type for this.g()()
+---
+*/
struct S7424d
{
@property int g()() immutable { return 0; }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7424e.d b/gcc/testsuite/gdc.test/fail_compilation/fail7424e.d
index 4dfda62..3bf3a2d 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7424e.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7424e.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7424e.d(10): Error: cannot resolve type for this.g()()
+---
+*/
struct S7424e
{
@property int g()() immutable { return 0; }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7424f.d b/gcc/testsuite/gdc.test/fail_compilation/fail7424f.d
index e72a05b..266163d 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7424f.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7424f.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7424f.d(10): Error: cannot resolve type for this.g()()
+---
+*/
struct S7424f
{
@property int g()() shared { return 0; }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7424g.d b/gcc/testsuite/gdc.test/fail_compilation/fail7424g.d
index 059f586..aca6586 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7424g.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7424g.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7424g.d(10): Error: cannot resolve type for this.g()()
+---
+*/
struct S7424g
{
@property int g()() { return 0; }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7424h.d b/gcc/testsuite/gdc.test/fail_compilation/fail7424h.d
index fd22b2e..e08eac1 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7424h.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7424h.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7424h.d(10): Error: cannot resolve type for this.g()()
+---
+*/
struct S7424g
{
@property int g()() { return 0; }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7424i.d b/gcc/testsuite/gdc.test/fail_compilation/fail7424i.d
index 2871e93..1c2cb1c 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7424i.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7424i.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7424i.d(10): Error: cannot resolve type for this.g()()
+---
+*/
struct S7424g
{
@property int g()() immutable { return 0; }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7524a.d b/gcc/testsuite/gdc.test/fail_compilation/fail7524a.d
index 6f1ebef..834c315 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7524a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7524a.d
@@ -1,4 +1,10 @@
-
-// 7524
+/*
+REQUIRED_ARGS: -o-
+TEST_OUTPUT:
+----
+fail_compilation/fail7524a.d(10): Error: #line integer ["filespec"]\n expected
+fail_compilation/fail7524a.d(10): Error: declaration expected, not `"$r:\w+ +\d+ \d+$"`
+----
+*/
#line 47 __DATE__
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7524b.d b/gcc/testsuite/gdc.test/fail_compilation/fail7524b.d
index 042baf5..f462746 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7524b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7524b.d
@@ -1,3 +1,10 @@
-// 7524
+// https://issues.dlang.org/show_bug.cgi?id=7524
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7524b.d(10): Error: #line integer ["filespec"]\n expected
+fail_compilation/fail7524b.d(10): Error: declaration expected, not `$n$L`
+---
+*/
#line 47 __VERSION__
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7603a.d b/gcc/testsuite/gdc.test/fail_compilation/fail7603a.d
index e1d28ea..76a92c2 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7603a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7603a.d
@@ -1 +1,7 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7603a.d(7): Error: cannot modify constant `true`
+---
+*/
void test(ref bool val = true) { }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7603b.d b/gcc/testsuite/gdc.test/fail_compilation/fail7603b.d
index 5317072..9b84d3f 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7603b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7603b.d
@@ -1 +1,7 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7603b.d(7): Error: cannot modify constant `true`
+---
+*/
void test(out bool val = true) { }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7603c.d b/gcc/testsuite/gdc.test/fail_compilation/fail7603c.d
index f5f6e18..25a7399 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7603c.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7603c.d
@@ -1,2 +1,8 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7603c.d(8): Error: cannot modify constant `3`
+---
+*/
enum x = 3;
void test(ref int val = x) { }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail77.d b/gcc/testsuite/gdc.test/fail_compilation/fail77.d
index 79ada70..687b0ad 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail77.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail77.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail77.d(11): Error: cannot cast expression `& i` of type `int*` to `ubyte[4]`
+---
+*/
void test()
{
int i;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7702.d b/gcc/testsuite/gdc.test/fail_compilation/fail7702.d
index 8b7ae21..4638c0b 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7702.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7702.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7702.d(14): Error: `s.opDispatch!"x"` isn't a template
+---
+*/
struct S
{
template opDispatch (string name) {}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7751.d b/gcc/testsuite/gdc.test/fail_compilation/fail7751.d
index e367d0e..87143fa 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7751.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7751.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7751.d(15): Error: no constructor for `Foo`
+fail_compilation/fail7751.d(23): Error: template instance `fail7751.foo!int` error instantiating
+---
+*/
class Foo(T)
{
T x;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7851.d b/gcc/testsuite/gdc.test/fail_compilation/fail7851.d
index 7ede41f..f5d9ea3 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7851.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7851.d
@@ -1,4 +1,12 @@
-// 7851
+// https://issues.dlang.org/show_bug.cgi?id=7851
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7851.d(38): Error: need `this` for `__mem_field_0` of type `int`
+fail_compilation/fail7851.d(38): Error: need `this` for `__mem_field_1` of type `long`
+fail_compilation/fail7851.d(38): Error: need `this` for `__mem_field_2` of type `float`
+---
+*/
template TypeTuple(TList...)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7859.d b/gcc/testsuite/gdc.test/fail_compilation/fail7859.d
index 436d3a3..ef8b770 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7859.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7859.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7859.d(9): Error: undefined identifier `NonExistent`
+---
+*/
template A(alias B) {}
mixin template C(alias B = cast(NonExistent)null) {
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail7861.d b/gcc/testsuite/gdc.test/fail_compilation/fail7861.d
index ce59e8e..e3a2d08 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail7861.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail7861.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail7861.d(17): Error: no property `nonexistent` for type `test.B`
+---
+*/
module test;
mixin template A() {
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail8009.d b/gcc/testsuite/gdc.test/fail_compilation/fail8009.d
index 1af7e2c..19a0712 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail8009.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail8009.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail8009.d(9): Error: template `fail8009.filter` cannot deduce function from argument types `!()(void)`, candidates are:
+fail_compilation/fail8009.d(8): `filter(R)(scope bool delegate(ref BAD!R) func)`
+---
+*/
void filter(R)(scope bool delegate(ref BAD!R) func) { }
void main() { filter(r => r); }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail8032.d b/gcc/testsuite/gdc.test/fail_compilation/fail8032.d
index a328181..9f6dc40 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail8032.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail8032.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail8032.d(19): Error: function `fail8032.B.f` cannot determine overridden function
+---
+*/
mixin template T()
{
void f() { }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail8313.d b/gcc/testsuite/gdc.test/fail_compilation/fail8313.d
index 9dec1bd..2badeff 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail8313.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail8313.d
@@ -1,3 +1,13 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail8313.d(13): Error: `fail8313.bar` called with argument types `(int)` matches both:
+fail_compilation/fail8313.d(11): `fail8313.bar!().bar(int x)`
+and:
+fail_compilation/fail8313.d(12): `fail8313.bar!().bar(int x)`
+fail_compilation/fail8313.d(13): while evaluating: `static assert(bar()(int x)(1))`
+---
+*/
auto bar()(int x){return x;}
auto bar()(int x = bar()){return x;}
static assert(bar(1));
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail8691.d b/gcc/testsuite/gdc.test/fail_compilation/fail8691.d
index e1979bb..8e46023 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail8691.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail8691.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail8691.d(7): Error: struct `fail8691.Foo` cannot have field `f` with static array of same struct type
+---
+*/
struct Foo
{
Foo[1] f;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail9301.d b/gcc/testsuite/gdc.test/fail_compilation/fail9301.d
index bd7e952..eee7270 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail9301.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail9301.d
@@ -1,6 +1,9 @@
/*
-REQUIRED_ARGS: -o-
-PERMUTE_ARGS:
+REQUIRED_ARGS: -m64 -o-
+TEST_OUTPUT:
+---
+fail_compilation/fail9301.d(11): Error: cannot implicitly convert expression `0` of type `int` to `__vector(void[16])`
+---
*/
void main()
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail9346.d b/gcc/testsuite/gdc.test/fail_compilation/fail9346.d
index d3c7a59..57d420f 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail9346.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail9346.d
@@ -1,8 +1,8 @@
/*
TEST_OUTPUT:
---
-fail_compilation/fail9346.d(26): Error: struct fail9346.S is not copyable because it is annotated with @disable
-fail_compilation/fail9346.d(27): Error: struct fail9346.S is not copyable because it is annotated with @disable
+fail_compilation/fail9346.d(26): Error: struct fail9346.S is not copyable because it is annotated with `@disable`
+fail_compilation/fail9346.d(27): Error: struct fail9346.S is not copyable because it is annotated with `@disable`
---
*/
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail94.d b/gcc/testsuite/gdc.test/fail_compilation/fail94.d
index 23fef93..335b695 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail94.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail94.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail94.d(28): Error: cannot implicitly override base class method `fail94.A.clone` with `fail94.B.clone`; add `override` attribute
+---
+*/
interface I
{
int foo();
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail9613.d b/gcc/testsuite/gdc.test/fail_compilation/fail9613.d
index 18a18cc..7f9d007 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail9613.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail9613.d
@@ -1,4 +1,11 @@
// PREMUTE_ARGS:
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail9613.d(12): Error: `(arguments)` expected following `const(byte)`
+fail_compilation/fail9613.d(12): Error: semicolon expected following auto declaration, not `.`
+---
+*/
void main()
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail_compilation.exp b/gcc/testsuite/gdc.test/fail_compilation/fail_compilation.exp
index c560308..cd65d7b 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fail_compilation.exp
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail_compilation.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail_contracts1.d b/gcc/testsuite/gdc.test/fail_compilation/fail_contracts1.d
new file mode 100644
index 0000000..572b821
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail_contracts1.d
@@ -0,0 +1,8 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail_contracts1.d(8): Error: `(identifier) { ... }` or `(identifier; expression)` following `out` expected, not `)`
+---
+*/
+
+void foo() out()){}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail_contracts2.d b/gcc/testsuite/gdc.test/fail_compilation/fail_contracts2.d
new file mode 100644
index 0000000..2a07a60
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail_contracts2.d
@@ -0,0 +1,8 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail_contracts2.d(8): Error: missing `do { ... }` after `in` or `out`
+---
+*/
+
+void foo()in{}{}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail_contracts3.d b/gcc/testsuite/gdc.test/fail_compilation/fail_contracts3.d
new file mode 100644
index 0000000..de3e9bb
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail_contracts3.d
@@ -0,0 +1,14 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail_contracts3.d(13): Error: function `fail_contracts3.D.foo` cannot have an in contract when overridden function `fail_contracts3.C.foo` does not have an in contract
+---
+*/
+
+class C {
+ void foo(){}
+}
+
+class D : C {
+ override void foo()in{}do{}
+}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail_contracts4.d b/gcc/testsuite/gdc.test/fail_compilation/fail_contracts4.d
new file mode 100644
index 0000000..f1b6644
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail_contracts4.d
@@ -0,0 +1,8 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail_contracts4.d(8): Error: missing `do { ... }` for function literal
+---
+*/
+
+enum x = delegate int()in(true) out(;true) out(r; true) in{} out(r){};
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail_isZeroInit.d b/gcc/testsuite/gdc.test/fail_compilation/fail_isZeroInit.d
new file mode 100644
index 0000000..a352984
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/fail_isZeroInit.d
@@ -0,0 +1,12 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fail_isZeroInit.d(11): Error: type expected as second argument of __traits `isZeroInit` instead of `a`
+---
+*/
+void test()
+{
+ int a = 3;
+ // Providing a specific variable rather than a type isn't allowed.
+ enum bool az = __traits(isZeroInit, a);
+}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/failinout1.d b/gcc/testsuite/gdc.test/fail_compilation/failinout1.d
index fc3d791..aa7a4b6 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/failinout1.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/failinout1.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/failinout1.d(9): Error: cannot modify `inout` expression `x`
+---
+*/
inout(int) foo(inout(int) x)
{
x = 5; // cannot modify inout
diff --git a/gcc/testsuite/gdc.test/fail_compilation/failinout2.d b/gcc/testsuite/gdc.test/fail_compilation/failinout2.d
index 12a9c44..e155363 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/failinout2.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/failinout2.d
@@ -1 +1,7 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/failinout2.d(7): Error: variable `failinout2.x` only parameters or stack based variables can be `inout`
+---
+*/
inout int x;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/failinout3748a.d b/gcc/testsuite/gdc.test/fail_compilation/failinout3748a.d
index bb2cd55..77edb7e 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/failinout3748a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/failinout3748a.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/failinout3748a.d(9): Error: variable `failinout3748a.S3748.err8` only parameters or stack based variables can be `inout`
+---
+*/
struct S3748
{
inout(int) err8;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/failinout3748b.d b/gcc/testsuite/gdc.test/fail_compilation/failinout3748b.d
index 741e44f..b6dddd8 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/failinout3748b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/failinout3748b.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/failinout3748b.d(9): Error: variable `failinout3748b.main.err11` `inout` variables can only be declared inside `inout` functions
+---
+*/
void main()
{
inout(int)* err11;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/failsafea.d b/gcc/testsuite/gdc.test/fail_compilation/failsafea.d
index b2a3f22..e121bda 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/failsafea.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/failsafea.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/failsafea.d(14): Error: `@safe` function `failsafea.callingsystem` cannot call `@system` function `failsafea.systemfunc`
+fail_compilation/failsafea.d(9): `failsafea.systemfunc` is declared here
+---
+*/
void systemfunc() @system {}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/failsafeb.d b/gcc/testsuite/gdc.test/fail_compilation/failsafeb.d
index c04d9ee..6af6b6f 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/failsafeb.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/failsafeb.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/failsafeb.d(13): Error: `@safe` function `failsafeb.callingsystem` cannot call `@system` function pointer `sysfuncptr`
+---
+*/
void function() @system sysfuncptr;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/failsafec.d b/gcc/testsuite/gdc.test/fail_compilation/failsafec.d
index 8bcda91..4446e76 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/failsafec.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/failsafec.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/failsafec.d(13): Error: `@safe` function `failsafec.callingsystem` cannot call `@system` delegate `sysdelegate`
+---
+*/
void delegate() @system sysdelegate;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fix350a.d b/gcc/testsuite/gdc.test/fail_compilation/fix350a.d
index 8c3563c..2d60a00 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fix350a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fix350a.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fix350a.d(12): Error: comma expected separating field initializers
+fail_compilation/fix350a.d(12): Error: comma expected separating field initializers
+---
+*/
struct S1
{
int a, b, c;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/fix350b.d b/gcc/testsuite/gdc.test/fail_compilation/fix350b.d
index 6c1a0bc..8ec428f 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/fix350b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/fix350b.d
@@ -1,3 +1,11 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/fix350b.d(15): Error: comma expected separating field initializers
+fail_compilation/fix350b.d(15): Error: comma expected separating field initializers
+fail_compilation/fix350b.d(16): Error: comma expected separating field initializers
+---
+*/
int foo() { return 3; }
struct S2
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice10273.d b/gcc/testsuite/gdc.test/fail_compilation/ice10273.d
index b7983bb..763fc06 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice10273.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice10273.d
@@ -1,4 +1,14 @@
-// 10273 - ICE in CTFE
+// https://issues.dlang.org/show_bug.cgi?id=10273
+// ICE in CTFE
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice10273.d(14): Error: cannot implicitly convert expression `3.45` of type `double` to `int`
+fail_compilation/ice10273.d(13): Error: CTFE failed because of previous errors in `Bug10273.init`
+fail_compilation/ice10273.d(22): called from here: `bug10273()`
+fail_compilation/ice10273.d(22): while evaluating: `static assert(bug10273())`
+---
+*/
struct Bug10273 {
int val = 3.45;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice10283.d b/gcc/testsuite/gdc.test/fail_compilation/ice10283.d
index 347ac35..f52b8a2 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice10283.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice10283.d
@@ -1,4 +1,10 @@
-// 10283
+// https://issues.dlang.org/show_bug.cgi?id=10283
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice10283.d(14): Error: cannot implicitly convert expression `7` of type `int` to `string`
+---
+*/
S10283 blah(S10283 xxx) { return xxx; }
S10283 repy = blah(S10283());
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice10599.d b/gcc/testsuite/gdc.test/fail_compilation/ice10599.d
index b8be25a..6e9649c 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice10599.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice10599.d
@@ -1,4 +1,13 @@
-// 10599 ICE(interpret.c)
+// https://issues.dlang.org/show_bug.cgi?id=10599
+// ICE(interpret.c)
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice10599.d(13): Error: cannot implicitly convert expression `3.45` of type `double` to `int`
+fail_compilation/ice10599.d(21): called from here: `bug10599()`
+fail_compilation/ice10599.d(21): while evaluating: `static assert(bug10599())`
+---
+*/
struct Bug {
int val = 3.45;
@@ -9,4 +18,4 @@ int bug10599()
return 1;
}
-static assert(bug10599()); \ No newline at end of file
+static assert(bug10599());
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice11963.d b/gcc/testsuite/gdc.test/fail_compilation/ice11963.d
index 9046f09..39eb120 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice11963.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice11963.d
@@ -1 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice11963.d(10): Error: unexpected `(` in declarator
+fail_compilation/ice11963.d(10): Error: identifier expected for template type parameter
+fail_compilation/ice11963.d(10): Error: no identifier for declarator `A`
+fail_compilation/ice11963.d(10): Error: declaration expected, not `""`
+---
+*/
A("")=
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice11965.d b/gcc/testsuite/gdc.test/fail_compilation/ice11965.d
index 8c036ee..c8db60f 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice11965.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice11965.d
@@ -1 +1,14 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice11965.d(15): Error: no identifier for declarator `b*`
+fail_compilation/ice11965.d(15): Error: found `End of File` when expecting `}` following compound statement
+fail_compilation/ice11965.d(15): Error: found `End of File` when expecting `]`
+fail_compilation/ice11965.d(15): Error: no identifier for declarator `u[()
+{
+b* A;
+}
+]`
+---
+*/
u[{b*A,
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice11967.d b/gcc/testsuite/gdc.test/fail_compilation/ice11967.d
index 93b8130..a3bda63 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice11967.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice11967.d
@@ -1 +1,12 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice11967.d(12): Error: use `@(attributes)` instead of `[attributes]`
+fail_compilation/ice11967.d(12): Error: expression expected, not `%`
+fail_compilation/ice11967.d(12): Error: found `g` when expecting `)`
+fail_compilation/ice11967.d(12): Error: found `{` when expecting `]`
+fail_compilation/ice11967.d(13): Error: `@identifier` or `@(ArgumentList)` expected, not `@End of File`
+fail_compilation/ice11967.d(13): Error: declaration expected following attribute, not end of file
+---
+*/
[F(%g{@
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice11968.d b/gcc/testsuite/gdc.test/fail_compilation/ice11968.d
index ce0d9fc..651f162 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice11968.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice11968.d
@@ -1 +1,9 @@
+/*
+TEST_OUTPUT:
+----
+fail_compilation/ice11968.d(9): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+fail_compilation/ice11968.d(9): Error: cannot modify string literal `"fail_compilation$?:windows=\\|/$ice11968.d"`
+----
+*/
+
void main() { delete __FILE__ ; }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice11974.d b/gcc/testsuite/gdc.test/fail_compilation/ice11974.d
index d9f2f30..3bf5a70 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice11974.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice11974.d
@@ -1 +1,7 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice11974.d(7): Error: cannot modify constant `0`
+---
+*/
void main() { 0 = __LINE__ ^^ [ 0 ] ; }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice11982.d b/gcc/testsuite/gdc.test/fail_compilation/ice11982.d
index 251dada..ff5fae4 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice11982.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice11982.d
@@ -1 +1,16 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice11982.d(16): Error: basic type expected, not `scope`
+fail_compilation/ice11982.d(16): Error: found `scope` when expecting `;` following statement
+fail_compilation/ice11982.d(16): Error: basic type expected, not `}`
+fail_compilation/ice11982.d(16): Error: missing `{ ... }` for function literal
+fail_compilation/ice11982.d(16): Error: C style cast illegal, use `cast(funk)function _error_()
+{
+}
+`
+fail_compilation/ice11982.d(16): Error: found `}` when expecting `;` following statement
+fail_compilation/ice11982.d(17): Error: found `End of File` when expecting `}` following compound statement
+---
+*/
void main() { new scope ( funk ) function }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice12673.d b/gcc/testsuite/gdc.test/fail_compilation/ice12673.d
index 57f0ec0..fb49e8e 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice12673.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice12673.d
@@ -1,3 +1,13 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice12673.d(13): Error: static assert: `__traits(compiles, () pure nothrow @nogc @safe
+{
+__error__
+}
+)` is false
+---
+*/
void main()
{
static assert(__traits(compiles, { abcd(); }));
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice13644.d b/gcc/testsuite/gdc.test/fail_compilation/ice13644.d
index 87e56e4..aa44709 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice13644.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice13644.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice13644.d(22): Error: foreach: key cannot be of non-integral type `string`
+---
+*/
struct Tuple(T...)
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice15855.d b/gcc/testsuite/gdc.test/fail_compilation/ice15855.d
index 407288b..e800838 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice15855.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice15855.d
@@ -1,3 +1,24 @@
// REQUIRED_ARGS: -o-
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice15855.d(25): Error: found `End of File` when expecting `(`
+fail_compilation/ice15855.d(25): Error: found `End of File` instead of statement
+fail_compilation/ice15855.d(25): Error: expression expected, not `End of File`
+fail_compilation/ice15855.d(25): Error: found `End of File` when expecting `;` following `for` condition
+fail_compilation/ice15855.d(25): Error: expression expected, not `End of File`
+fail_compilation/ice15855.d(25): Error: found `End of File` when expecting `)`
+fail_compilation/ice15855.d(25): Error: found `End of File` instead of statement
+fail_compilation/ice15855.d(25): Error: found `End of File` when expecting `}` following compound statement
+fail_compilation/ice15855.d(25): Error: found `End of File` when expecting `]`
+fail_compilation/ice15855.d(25): Error: no identifier for declarator `a[()
+{
+for (; 0; 0)
+{
+}
+}
+]`
+---
+*/
a[{for
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice7782.d b/gcc/testsuite/gdc.test/fail_compilation/ice7782.d
index 161995a..d42011a 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice7782.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice7782.d
@@ -1,3 +1,14 @@
+/*
+EXTRA_FILES: imports/ice7782algorithm.d imports/ice7782range.d
+TEST_OUTPUT:
+----
+fail_compilation/ice7782.d(13): Error: module `ice7782math` is in file 'imports/ice7782range/imports/ice7782math.d' which cannot be read
+import path[0] = fail_compilation
+import path[1] = $p:druntime/import$
+import path[2] = $p:phobos$
+----
+*/
+
import imports.ice7782algorithm;
import imports.ice7782range. imports.ice7782math;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice8604.d b/gcc/testsuite/gdc.test/fail_compilation/ice8604.d
index a734c2f..3c17998 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice8604.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice8604.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice8604.d(9): Error: undefined identifier `i`
+---
+*/
struct StructFoo
{
static if(i) { }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice8630.d b/gcc/testsuite/gdc.test/fail_compilation/ice8630.d
index ef733dc..a96ef34 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice8630.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice8630.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice8630.d(9): Error: undefined identifier `v`
+fail_compilation/ice8630.d(10): Error: template instance `ice8630.foo!(int[])` error instantiating
+---
+*/
auto map(alias func, R)(R r) { return r; }
typeof(v) foo(R)(R v) { return map!(p=>p)(v); }
void main() { foo([1]); }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice8742.d b/gcc/testsuite/gdc.test/fail_compilation/ice8742.d
index 480a2d7..d814071 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice8742.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice8742.d
@@ -1,4 +1,9 @@
-// PERMUTE_ARGS:
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice8742.d(15): Error: class `ice8742.main.__anonclass1` is nested within `main`, but super class `D` is nested within `C`
+---
+*/
class C
{
class D { }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice9013.d b/gcc/testsuite/gdc.test/fail_compilation/ice9013.d
index 116729f..47a451b 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice9013.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice9013.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice9013.d(9): Error: undefined identifier `missing`
+---
+*/
void main()
{
foreach (i; 0 .. missing)
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice9254a.d b/gcc/testsuite/gdc.test/fail_compilation/ice9254a.d
index 594b5ce..6b8f2f3 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice9254a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice9254a.d
@@ -1,3 +1,14 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice9254a.d(15): Error: Using the result of a comma expression is not allowed
+fail_compilation/ice9254a.d(15): Error: Using the result of a comma expression is not allowed
+fail_compilation/ice9254a.d(15): Error: Using the result of a comma expression is not allowed
+fail_compilation/ice9254a.d(15): Error: Using the result of a comma expression is not allowed
+fail_compilation/ice9254a.d(15): Error: Using the result of a comma expression is not allowed
+fail_compilation/ice9254a.d(15): Error: invalid `foreach` aggregate `false`
+---
+*/
void main()
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice9254b.d b/gcc/testsuite/gdc.test/fail_compilation/ice9254b.d
index c5a9944..a430fbf 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice9254b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice9254b.d
@@ -1,3 +1,14 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice9254b.d(17): Error: Using the result of a comma expression is not allowed
+fail_compilation/ice9254b.d(17): Error: Using the result of a comma expression is not allowed
+fail_compilation/ice9254b.d(17): Error: Using the result of a comma expression is not allowed
+fail_compilation/ice9254b.d(17): Error: Using the result of a comma expression is not allowed
+fail_compilation/ice9254b.d(17): Error: Using the result of a comma expression is not allowed
+fail_compilation/ice9254b.d(17): Error: invalid `foreach` aggregate `false`
+---
+*/
class C
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/ice9254c.d b/gcc/testsuite/gdc.test/fail_compilation/ice9254c.d
index d816bbf..b58cfe5 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/ice9254c.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/ice9254c.d
@@ -1,3 +1,14 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/ice9254c.d(15): Error: Using the result of a comma expression is not allowed
+fail_compilation/ice9254c.d(15): Error: Using the result of a comma expression is not allowed
+fail_compilation/ice9254c.d(15): Error: Using the result of a comma expression is not allowed
+fail_compilation/ice9254c.d(15): Error: Using the result of a comma expression is not allowed
+fail_compilation/ice9254c.d(15): Error: Using the result of a comma expression is not allowed
+fail_compilation/ice9254c.d(15): Error: invalid `foreach` aggregate `false`
+---
+*/
void main()
{
diff --git a/gcc/testsuite/gdc.test/fail_compilation/imphint.d b/gcc/testsuite/gdc.test/fail_compilation/imphint.d
index 1e1387c..2b3abeb 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/imphint.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/imphint.d
@@ -1,4 +1,5 @@
-/* PERMUTE_ARGS:
+/*
+TEST_OUTPUT:
---
fail_compilation/imphint.d(14): Error: 'printf' is not defined, perhaps you need to import core.stdc.stdio; ?
fail_compilation/imphint.d(15): Error: 'writeln' is not defined, perhaps you need to import std.stdio; ?
diff --git a/gcc/testsuite/gdc.test/compilable/imports/imp15925.d b/gcc/testsuite/gdc.test/fail_compilation/imports/imp15925.d
index c9d537a..c9d537a 100644
--- a/gcc/testsuite/gdc.test/compilable/imports/imp15925.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/imports/imp15925.d
diff --git a/gcc/testsuite/gdc.test/fail_compilation/imports/imp21353.d b/gcc/testsuite/gdc.test/fail_compilation/imports/imp21353.d
new file mode 100644
index 0000000..e498b64
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/imports/imp21353.d
@@ -0,0 +1,7 @@
+module imports.imp21353;
+
+struct A { int x; }
+
+struct B { import imports.imp21353 : A; }
+
+private struct P { }
diff --git a/gcc/testsuite/gdc.test/compilable/imports/test15117a.d b/gcc/testsuite/gdc.test/fail_compilation/imports/test15117a.d
index 9daf6f1..9daf6f1 100644
--- a/gcc/testsuite/gdc.test/compilable/imports/test15117a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/imports/test15117a.d
diff --git a/gcc/testsuite/gdc.test/fail_compilation/isreturnonstack.d b/gcc/testsuite/gdc.test/fail_compilation/isreturnonstack.d
new file mode 100644
index 0000000..1dde699
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/isreturnonstack.d
@@ -0,0 +1,12 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/isreturnonstack.d(11): Error: argument to `__traits(isReturnOnStack, int)` is not a function
+fail_compilation/isreturnonstack.d(12): Error: expected 1 arguments for `isReturnOnStack` but had 2
+---
+*/
+
+int test() { return 0; }
+
+enum b = __traits(isReturnOnStack, int);
+enum c = __traits(isReturnOnStack, test, int);
diff --git a/gcc/testsuite/gdc.test/fail_compilation/lookup.d b/gcc/testsuite/gdc.test/fail_compilation/lookup.d
index 0bb5385..aedb44e 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/lookup.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/lookup.d
@@ -1,9 +1,9 @@
/*
TEST_OUTPUT:
---
-fail_compilation/lookup.d(23): Error: no property 'X' for type 'lookup.B'
+fail_compilation/lookup.d(23): Error: no property `X` for type `lookup.B`, did you mean `imports.imp2.X`?
fail_compilation/lookup.d(23): while evaluating: `static assert((B).X == 0)`
-fail_compilation/lookup.d(24): Error: no property 'Y' for type 'lookup.B'
++fail_compilation/lookup.d(24): Error: no property `Y` for type `lookup.B`, did you mean `imports.imp2.Y`?
fail_compilation/lookup.d(24): while evaluating: `static assert((B).Y == 2)`
---
*/
diff --git a/gcc/testsuite/gdc.test/fail_compilation/staticarrayoverflow.d b/gcc/testsuite/gdc.test/fail_compilation/staticarrayoverflow.d
index f419869..6a5a16d 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/staticarrayoverflow.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/staticarrayoverflow.d
@@ -1,6 +1,6 @@
/*
REQUIRED_ARGS: -m64
-PERMUTE_ARGS:
+TEST_OUTPUT:
---
fail_compilation/staticarrayoverflow.d(24): Error: static array `S[1879048192]` size overflowed to 7516192768000
fail_compilation/staticarrayoverflow.d(24): Error: variable `staticarrayoverflow.y` size overflow
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test1.d b/gcc/testsuite/gdc.test/fail_compilation/test1.d
index 9dae856..aeceb52 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/test1.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/test1.d
@@ -1 +1,7 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/test1.d(8): Error: no identifier for declarator `fail`
+---
+*/
fail
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test11176.d b/gcc/testsuite/gdc.test/fail_compilation/test11176.d
index 242119e..020d807 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/test11176.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/test11176.d
@@ -1,5 +1,6 @@
/*
REQUIRED_ARGS: -de
+TEST_OUTPUT:
---
fail_compilation/test11176.d(12): Deprecation: b.ptr cannot be used in @safe code, use &b[0] instead
fail_compilation/test11176.d(16): Deprecation: b.ptr cannot be used in @safe code, use &b[0] instead
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test143.d b/gcc/testsuite/gdc.test/fail_compilation/test143.d
index 94f614a..c95ecc1 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/test143.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/test143.d
@@ -1,5 +1,13 @@
// REQUIRED_ARGS: -de
-module test143; // Bugzilla 143
+// https://issues.dlang.org/show_bug.cgi?id=143
+// EXTRA_FILES: imports/test143.d
+/*
+TEST_OUTPUT:
+---
+fail_compilation/test143.d(19): Error: undefined identifier `x`
+---
+*/
+module test143;
import imports.test143;
diff --git a/gcc/testsuite/gdc.test/compilable/test15177.d b/gcc/testsuite/gdc.test/fail_compilation/test15117.d
index 0bb2d04..e6ce3b5 100644
--- a/gcc/testsuite/gdc.test/compilable/test15177.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/test15117.d
@@ -1,6 +1,13 @@
// REQUIRED_ARGS: -o-
// PERMUTE_ARGS:
-// EXTRA_SOURCES: imports/test15117a.d
+// COMPILED_IMPORTS: imports/test15117a.d
+/*
+TEST_OUTPUT:
+---
+fail_compilation/test15177.d-mixin-20(20): Error: `imports.test15117a.object` is not visible from module `test15177`
+fail_compilation/test15177.d(29): Error: template instance `test15177.RunApiTest!()` error instantiating
+---
+*/
import users = imports.test15117a;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test15399.d b/gcc/testsuite/gdc.test/fail_compilation/test15399.d
index 8aecfde..bad3ed2 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/test15399.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/test15399.d
@@ -1,4 +1,5 @@
/* https://issues.dlang.org/show_bug.cgi?id=15399
+TEST_OUTPUT:
---
fail_compilation/test15399.d(31): Error: writing to misaligned pointer in field S1.ptr is not @safe
fail_compilation/test15399.d(32): Error: writing to misaligned pointer in field S2.ptr is not @safe
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test15785.d b/gcc/testsuite/gdc.test/fail_compilation/test15785.d
index b35e510..474076f 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/test15785.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/test15785.d
@@ -2,12 +2,11 @@
/*
TEST_OUTPUT:
---
-fail_compilation/test15785.d(17): Deprecation: imports.test15785.Base.foo is not visible from module test15785
-fail_compilation/test15785.d(17): Error: class test15785.Derived member `foo` is not accessible
-fail_compilation/test15785.d(18): Deprecation: imports.test15785.Base.bar is not visible from module test15785
-fail_compilation/test15785.d(18): Error: class test15785.Derived member `bar` is not accessible
+fail_compilation/test15785.d(16): Error: no property `foo` for type `imports.test15785.Base`, did you mean `imports.test15785.Base.foo`?
+fail_compilation/test15785.d(17): Error: undefined identifier `bar`
---
*/
+
import imports.test15785;
class Derived : Base
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test15785b.d b/gcc/testsuite/gdc.test/fail_compilation/test15785b.d
index 1613617..e09b4bf 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/test15785b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/test15785b.d
@@ -1,11 +1,11 @@
-// REQUIRED_ARGS: -de
+// REQUIRED_ARGS:
// PERMUTE_ARGS:
/*
TEST_OUTPUT:
---
-fail_compilation/test15785b.d(15): Deprecation: imports.test15785.Base.T is not visible from module test15785b
-fail_compilation/test15785b.d(16): Deprecation: imports.test15785.Base.T is not visible from module test15785b
-fail_compilation/test15785b.d(17): Deprecation: imports.test15785.IBase2.T is not visible from module test15785b
+fail_compilation/test15785b.d(15): Error: `imports.test15785.Base.T` is not visible from module `test15785b`
+fail_compilation/test15785b.d(16): Error: `imports.test15785.Base.T` is not visible from module `test15785b`
+fail_compilation/test15785b.d(17): Error: `imports.test15785.IBase2.T` is not visible from module `test15785b`
---
*/
import imports.test15785;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test15897.d b/gcc/testsuite/gdc.test/fail_compilation/test15897.d
index 19c65b4..aa22c10 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/test15897.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/test15897.d
@@ -2,7 +2,7 @@
/*
TEST_OUTPUT:
---
-fail_compilation/test15897.d(18): Deprecation: test15897.Animal.create is not visible from class Cat
+fail_compilation/test15897.d(18): Error: no property `create` for type `imports.test15897.Cat`
---
*/
module test15897;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test15925.d b/gcc/testsuite/gdc.test/fail_compilation/test15925.d
new file mode 100644
index 0000000..9359859
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/test15925.d
@@ -0,0 +1,19 @@
+/* REQUIRED_ARGS:
+PERMUTE_ARGS:
+TEST_OUTPUT:
+---
+fail_compilation/test15925.d(18): Error: undefined identifier `X`
+fail_compilation/test15925.d(18): while evaluating: `static assert(X == 1)`
+---
+*/
+
+mixin template Import()
+{
+ import imports.imp15925;
+}
+
+class Foo
+{
+ mixin Import!();
+ static assert(X == 1);
+}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test16002.d b/gcc/testsuite/gdc.test/fail_compilation/test16002.d
new file mode 100644
index 0000000..80ae40b
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/test16002.d
@@ -0,0 +1,15 @@
+/*
+REQUIRED_ARGS:
+PERMUTE_ARGS:
+TEST_OUTPUT:
+---
+fail_compilation/test16002.d(100): Error: undefined identifier `imports.nonexistent`
+fail_compilation/test16002.d(101): Error: undefined identifier `imports.nonexistent`
+---
+*/
+
+module test.fail_compilation.test16002;
+
+#line 100
+enum A = is(imports.nonexistent == package);
+enum B = is(imports.nonexistent == module);
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test16188.d b/gcc/testsuite/gdc.test/fail_compilation/test16188.d
index ffdb41a..38219e9 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/test16188.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/test16188.d
@@ -1,4 +1,9 @@
-/* PERMUTE_ARGS:
+TEST_OUTPUT:
+---
+fail_compilation/test16188.d(1): Error: no identifier for declarator `TEST_OUTPUT`
+fail_compilation/test16188.d(1): Error: declaration expected, not `:`
+fail_compilation/test16188.d(18): Error: unrecognized declaration
+---
*/
// https://issues.dlang.org/show_bug.cgi?id=16188
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test17096.d b/gcc/testsuite/gdc.test/fail_compilation/test17096.d
new file mode 100644
index 0000000..e421419
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/test17096.d
@@ -0,0 +1,50 @@
+/* TEST_OUTPUT:
+---
+fail_compilation/test17096.d(28): Error: expected 1 arguments for `isPOD` but had 2
+fail_compilation/test17096.d(29): Error: expected 1 arguments for `isNested` but had 2
+fail_compilation/test17096.d(30): Error: expected 1 arguments for `isVirtualFunction` but had 2
+fail_compilation/test17096.d(31): Error: expected 1 arguments for `isVirtualMethod` but had 2
+fail_compilation/test17096.d(32): Error: expected 1 arguments for `isAbstractFunction` but had 2
+fail_compilation/test17096.d(33): Error: expected 1 arguments for `isFinalFunction` but had 2
+fail_compilation/test17096.d(34): Error: expected 1 arguments for `isOverrideFunction` but had 2
+fail_compilation/test17096.d(35): Error: expected 1 arguments for `isStaticFunction` but had 2
+fail_compilation/test17096.d(36): Error: expected 1 arguments for `isRef` but had 2
+fail_compilation/test17096.d(37): Error: expected 1 arguments for `isOut` but had 2
+fail_compilation/test17096.d(38): Error: expected 1 arguments for `isLazy` but had 2
+fail_compilation/test17096.d(39): Error: expected 1 arguments for `identifier` but had 2
+fail_compilation/test17096.d(40): Error: expected 1 arguments for `getProtection` but had 2
+fail_compilation/test17096.d(41): Error: expected 1 arguments for `parent` but had 2
+fail_compilation/test17096.d(42): Error: expected 1 arguments for `classInstanceSize` but had 2
+fail_compilation/test17096.d(43): Error: expected 1 arguments for `allMembers` but had 2
+fail_compilation/test17096.d(44): Error: expected 1 arguments for `derivedMembers` but had 2
+fail_compilation/test17096.d(45): Error: expected 1 arguments for `getAliasThis` but had 2
+fail_compilation/test17096.d(46): Error: expected 1 arguments for `getAttributes` but had 2
+fail_compilation/test17096.d(47): Error: expected 1 arguments for `getFunctionAttributes` but had 2
+fail_compilation/test17096.d(48): Error: expected 1 arguments for `getUnitTests` but had 2
+fail_compilation/test17096.d(49): Error: expected 1 arguments for `getVirtualIndex` but had 2
+fail_compilation/test17096.d(50): Error: a single type expected for trait pointerBitmap
+---
+*/
+enum b03 = __traits(isPOD, 1, 2);
+enum b04 = __traits(isNested, 1, 2);
+enum b05 = __traits(isVirtualFunction, 1, 2);
+enum b06 = __traits(isVirtualMethod, 1, 2);
+enum b07 = __traits(isAbstractFunction, 1, 2);
+enum b08 = __traits(isFinalFunction, 1, 2);
+enum b09 = __traits(isOverrideFunction, 1, 2);
+enum b10 = __traits(isStaticFunction, 1, 2);
+enum b11 = __traits(isRef, 1, 2);
+enum b12 = __traits(isOut, 1, 2);
+enum b13 = __traits(isLazy, 1, 2);
+enum b14 = __traits(identifier, 1, 2);
+enum b15 = __traits(getProtection, 1, 2);
+enum b16 = __traits(parent, 1, 2);
+enum b17 = __traits(classInstanceSize, 1, 2);
+enum b18 = __traits(allMembers, 1, 2);
+enum b19 = __traits(derivedMembers, 1, 2);
+enum b20 = __traits(getAliasThis, 1, 2);
+enum b21 = __traits(getAttributes, 1, 2);
+enum b22 = __traits(getFunctionAttributes, 1, 2);
+enum b23 = __traits(getUnitTests, 1, 2);
+enum b24 = __traits(getVirtualIndex, 1, 2);
+enum b25 = __traits(getPointerBitmap, 1, 2);
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test17908a.d b/gcc/testsuite/gdc.test/fail_compilation/test17908a.d
new file mode 100644
index 0000000..9072397
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/test17908a.d
@@ -0,0 +1,15 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/test17908a.d(10): Error: function `test17908a.foo` cannot be used because it is annotated with `@disable`
+---
+*/
+
+@disable void foo();
+@disable void foo(int) {}
+alias g = foo;
+
+void main()
+{
+ g(10);
+}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test17908b.d b/gcc/testsuite/gdc.test/fail_compilation/test17908b.d
new file mode 100644
index 0000000..e2c4d84
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/test17908b.d
@@ -0,0 +1,14 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/test17908b.d(13): Error: function `test17908b.foobar` cannot be used because it is annotated with `@disable`
+---
+*/
+void foobar() {}
+@disable void foobar(int) {}
+alias i = foobar;
+
+void main()
+{
+ i(10);
+}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test21353.d b/gcc/testsuite/gdc.test/fail_compilation/test21353.d
new file mode 100644
index 0000000..0f22fe7
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/test21353.d
@@ -0,0 +1,26 @@
+/*
+EXTRA_FILES: imports/imp21353.d
+TEST_OUTPUT:
+---
+fail_compilation/test21353.d(19): Error: no property `A` for type `imports.imp21353.B`
+fail_compilation/test21353.d(20): Error: no property `A` for type `imports.imp21353.B`
+fail_compilation/test21353.d(21): Error: no property `A` for type `imports.imp21353.B`
+fail_compilation/test21353.d(23): Error: undefined identifier `P` in module `imports.imp21353`
+fail_compilation/test21353.d(24): Error: undefined identifier `P` in module `imports.imp21353`
+---
+*/
+
+// https://issues.dlang.org/show_bug.cgi?id=21353
+
+import imports.imp21353;
+
+void main()
+{
+ B.A;
+ with (B) { A(0); }
+ with (B()) { A(0); } // fixed
+
+ imports.imp21353.P();
+ with (imports.imp21353) { P(); } // fixed
+}
+
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test314.d b/gcc/testsuite/gdc.test/fail_compilation/test314.d
index 3dea03f..eb3f07d 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/test314.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/test314.d
@@ -1,11 +1,11 @@
/*
-REQUIRED_ARGS: -de
+REQUIRED_ARGS:
TEST_OUTPUT:
---
-fail_compilation/test314.d(19): Deprecation: imports.a314.renamed is not visible from module test314
-fail_compilation/test314.d(20): Deprecation: imports.a314.bug is not visible from module test314
-fail_compilation/test314.d(22): Deprecation: imports.b314.renamedpkg is not visible from module test314
-fail_compilation/test314.d(23): Deprecation: imports.b314.bugpkg is not visible from module test314
+fail_compilation/test314.d(19): Error: undefined identifier `renamed`
+fail_compilation/test314.d(20): Error: undefined identifier `bug`
+fail_compilation/test314.d(22): Error: undefined identifier `renamedpkg`
+fail_compilation/test314.d(23): Error: undefined identifier `bugpkg`
---
*/
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test5412a.d b/gcc/testsuite/gdc.test/fail_compilation/test5412a.d
index 412cb21..3577834 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/test5412a.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/test5412a.d
@@ -1,3 +1,10 @@
+/*
+EXTRA_FILES: imports/test5412a.d imports/test5412b.d
+TEST_OUTPUT:
+---
+fail_compilation/test5412a.d(11): Error: import `test5412a.A` conflicts with import `test5412a.A` at fail_compilation/test5412a.d(10)
+---
+*/
module test5412a;
import A = imports.test5412a;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test5412b.d b/gcc/testsuite/gdc.test/fail_compilation/test5412b.d
index 846fdd3..8f06b52 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/test5412b.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/test5412b.d
@@ -1,3 +1,10 @@
+/*
+EXTRA_FILES: imports/test5412a.d imports/test5412b.d
+TEST_OUTPUT:
+---
+fail_compilation/test5412b.d(11): Error: static import `test5412b.A` conflicts with import `test5412b.A` at fail_compilation/test5412b.d(10)
+---
+*/
module test5412b;
import A = imports.test5412a;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test5412c.d b/gcc/testsuite/gdc.test/fail_compilation/test5412c.d
index 88290f6..b3073ee 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/test5412c.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/test5412c.d
@@ -1,3 +1,10 @@
+/*
+EXTRA_FILES: test5412c2.di imports/test5412a.d
+TEST_OUTPUT:
+---
+fail_compilation/test5412c.d(11): Error: import `test5412c.test5412c2` conflicts with import `test5412c.test5412c2` at fail_compilation/test5412c.d(10)
+---
+*/
module test5412c;
import test5412c2 = imports.test5412a;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test5412c2.di b/gcc/testsuite/gdc.test/fail_compilation/test5412c2.di
new file mode 100644
index 0000000..0023c5f
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/test5412c2.di
@@ -0,0 +1 @@
+module test5412c2;
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test8509.d b/gcc/testsuite/gdc.test/fail_compilation/test8509.d
index 121ae9e..b39c00f 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/test8509.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/test8509.d
@@ -1,3 +1,10 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/test8509.d(13): Error: cannot implicitly convert expression `"hello world"` of type `string` to `E`
+fail_compilation/test8509.d(14): Error: cannot implicitly convert expression `"hello world"` of type `string` to `E`
+---
+*/
module test8509;
enum E : string { a = "hello", b = "world" }
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test8751.d b/gcc/testsuite/gdc.test/fail_compilation/test8751.d
index f739a5a..d7057b8 100644
--- a/gcc/testsuite/gdc.test/fail_compilation/test8751.d
+++ b/gcc/testsuite/gdc.test/fail_compilation/test8751.d
@@ -1,3 +1,9 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/test8751.d(7): Error: undefined identifier `Bar`
+---
+*/
Bar foo3(ref const int x) pure {
return y => x > y; // error
}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test9701.d b/gcc/testsuite/gdc.test/fail_compilation/test9701.d
new file mode 100644
index 0000000..384c514
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/test9701.d
@@ -0,0 +1,63 @@
+/*
+TEST_OUTPUT
+---
+fail_compilation/test9701.d(38): Error: `@safe` is not a valid attribute for enum members
+fail_compilation/test9701.d(39): Error: `@system` is not a valid attribute for enum members
+fail_compilation/test9701.d(40): Error: `@trusted` is not a valid attribute for enum members
+fail_compilation/test9701.d(41): Error: `@nogc` is not a valid attribute for enum members
+fail_compilation/test9701.d(42): Error: `pure` is not a valid attribute for enum members
+fail_compilation/test9701.d(43): Error: `shared` is not a valid attribute for enum members
+fail_compilation/test9701.d(44): Error: `inout` is not a valid attribute for enum members
+fail_compilation/test9701.d(45): Error: `immutable` is not a valid attribute for enum members
+fail_compilation/test9701.d(46): Error: `const` is not a valid attribute for enum members
+fail_compilation/test9701.d(47): Error: `synchronized` is not a valid attribute for enum members
+fail_compilation/test9701.d(48): Error: `scope` is not a valid attribute for enum members
+fail_compilation/test9701.d(49): Error: `auto` is not a valid attribute for enum members
+fail_compilation/test9701.d(50): Error: `ref` is not a valid attribute for enum members
+fail_compilation/test9701.d(51): Error: `__gshared` is not a valid attribute for enum members
+fail_compilation/test9701.d(52): Error: `final` is not a valid attribute for enum members
+fail_compilation/test9701.d(53): Error: `extern` is not a valid attribute for enum members
+fail_compilation/test9701.d(54): Error: `export` is not a valid attribute for enum members
+fail_compilation/test9701.d(55): Error: `nothrow` is not a valid attribute for enum members
+fail_compilation/test9701.d(56): Error: `public` is not a valid attribute for enum members
+fail_compilation/test9701.d(57): Error: `private` is not a valid attribute for enum members
+fail_compilation/test9701.d(58): Error: `package` is not a valid attribute for enum members
+fail_compilation/test9701.d(59): Error: `static` is not a valid attribute for enum members
+fail_compilation/test9701.d(60): Error: `static` is not a valid attribute for enum members
+fail_compilation/test9701.d(61): Error: `static` is not a valid attribute for enum members
+fail_compilation/test9701.d(62): Error: `static` is not a valid attribute for enum members
+---
+*/
+
+// This test exists to verify that parsing of enum member attributes rejects invalid attributes
+
+// https://issues.dlang.org/show_bug.cgi?id=9701
+
+enum Enum
+{
+ @safe safe,
+ @system system,
+ @trusted trusted,
+ @nogc nogc,
+ pure pure_,
+ shared shared_,
+ inout inout_,
+ immutable immutable_,
+ const const_,
+ synchronized synchronized_,
+ scope scope_,
+ auto auto_,
+ ref ref_,
+ __gshared __gshared_,
+ final final_,
+ extern extern_,
+ export export_,
+ nothrow nothrow_,
+ public public_,
+ private private_,
+ package package_,
+ static static1,
+ @("a") static static2,
+ static @("a") static3,
+ @("a") static @("b") static3,
+}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/test9701b.d b/gcc/testsuite/gdc.test/fail_compilation/test9701b.d
new file mode 100644
index 0000000..16c2541
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/test9701b.d
@@ -0,0 +1,22 @@
+/*
+REQUIRED_ARGS: -de
+TEST_OUTPUT
+---
+fail_compilation/test9701b.d(20): Deprecation: enum member `test9701b.Enum.e0` is deprecated
+fail_compilation/test9701b.d(21): Deprecation: enum member `test9701b.Enum.e1` is deprecated - message
+---
+*/
+
+// https://issues.dlang.org/show_bug.cgi?id=9701
+
+enum Enum
+{
+ deprecated e0,
+ deprecated("message") e1,
+}
+
+void main()
+{
+ auto value = Enum.e0;
+ auto value2 = Enum.e1;
+}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/trait_loc_err.d b/gcc/testsuite/gdc.test/fail_compilation/trait_loc_err.d
new file mode 100644
index 0000000..8d5d480
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/trait_loc_err.d
@@ -0,0 +1,15 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/trait_loc_err.d(13): Error: can only get the location of a symbol, not `trait_loc_err`
+fail_compilation/trait_loc_err.d(14): Error: can only get the location of a symbol, not `std`
+---
+*/
+module trait_loc_err;
+import std.stdio;
+
+void main()
+{
+ __traits(getLocation, __traits(parent, main));
+ __traits(getLocation, __traits(parent, std.stdio));
+}
diff --git a/gcc/testsuite/gdc.test/fail_compilation/trait_loc_ov_err.d b/gcc/testsuite/gdc.test/fail_compilation/trait_loc_ov_err.d
new file mode 100644
index 0000000..313e57d
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/trait_loc_ov_err.d
@@ -0,0 +1,40 @@
+module trait_loc_ov_err;
+/*
+TEST_OUTPUT:
+---
+fail_compilation/trait_loc_ov_err.d(24): Error: cannot get location of an overload set, use `__traits(getOverloads, ..., "ov1")[N]` to get the Nth overload
+fail_compilation/trait_loc_ov_err.d(25): Error: cannot get location of an overload set, use `__traits(getOverloads, ..., "ov2")[N]` to get the Nth overload
+---
+*/
+
+void ov1(){}
+void ov1(int){}
+
+void ov21(){}
+void ov22(int){}
+alias ov2 = ov21;
+alias ov2 = ov22;
+
+template OvT(T, U){}
+template OvT(T){}
+
+auto func(T)(T t) {}
+auto func(T,U)(T t,U u) {}
+
+enum e1 = __traits(getLocation, ov1);
+enum e2 = __traits(getLocation, ov2);
+
+enum e3 = __traits(getLocation, OvT);
+enum e4 = __traits(getLocation, func);
+
+enum e5 = __traits(getLocation, __traits(getOverloads, trait_loc_ov_err, "ov1")[0]);
+enum e6 = __traits(getLocation, __traits(getOverloads, trait_loc_ov_err, "ov1")[1]);
+
+enum e7 = __traits(getLocation, __traits(getOverloads, trait_loc_ov_err, "ov2")[0]);
+enum e8 = __traits(getLocation, __traits(getOverloads, trait_loc_ov_err, "ov2")[1]);
+
+enum e9 = __traits(getLocation, __traits(getOverloads, trait_loc_ov_err, "OvT", true)[1]);
+enum e10 = __traits(getLocation, __traits(getOverloads, trait_loc_ov_err, "OvT", true)[0]);
+
+enum e11 = __traits(getLocation, __traits(getOverloads, trait_loc_ov_err, "func", true)[0]);
+enum e12 = __traits(getLocation, __traits(getOverloads, trait_loc_ov_err, "func", true)[1]);
diff --git a/gcc/testsuite/gdc.test/fail_compilation/traits.d b/gcc/testsuite/gdc.test/fail_compilation/traits.d
new file mode 100644
index 0000000..bee29ed
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/traits.d
@@ -0,0 +1,27 @@
+/************************************************************/
+
+/*
+TEST_OUTPUT:
+---
+fail_compilation/traits.d(100): Error: `getTargetInfo` key `"not_a_target_info"` not supported by this implementation
+fail_compilation/traits.d(101): Error: string expected as argument of __traits `getTargetInfo` instead of `100`
+fail_compilation/traits.d(102): Error: expected 1 arguments for `getTargetInfo` but had 2
+fail_compilation/traits.d(103): Error: expected 1 arguments for `getTargetInfo` but had 0
+fail_compilation/traits.d(200): Error: undefined identifier `imports.nonexistent`
+fail_compilation/traits.d(201): Error: undefined identifier `imports.nonexistent`
+fail_compilation/traits.d(202): Error: expected 1 arguments for `isPackage` but had 0
+fail_compilation/traits.d(203): Error: expected 1 arguments for `isModule` but had 0
+---
+*/
+
+#line 100
+enum A1 = __traits(getTargetInfo, "not_a_target_info");
+enum B1 = __traits(getTargetInfo, 100);
+enum C1 = __traits(getTargetInfo, "cppRuntimeLibrary", "bits");
+enum D1 = __traits(getTargetInfo);
+
+#line 200
+enum A2 = __traits(isPackage, imports.nonexistent);
+enum B2 = __traits(isModule, imports.nonexistent);
+enum C2 = __traits(isPackage);
+enum D2 = __traits(isModule);
diff --git a/gcc/testsuite/gdc.test/fail_compilation/traits_child.d b/gcc/testsuite/gdc.test/fail_compilation/traits_child.d
new file mode 100644
index 0000000..7a0b75e
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/traits_child.d
@@ -0,0 +1,17 @@
+/************************************************************/
+
+/*
+TEST_OUTPUT:
+---
+fail_compilation/traits_child.d(100): Error: expected 2 arguments for `child` but had 1
+fail_compilation/traits_child.d(101): Error: symbol or expression expected as first argument of __traits
+child` instead of `long`
+fail_compilation/traits_child.d(102): Error: symbol expected as second argument of __traits `child` inste
+d of `3`
+---
+*/
+
+#line 100
+enum a = __traits(child, long);
+enum b = __traits(child, long, 3);
+enum c = __traits(child, "hi", 3);
diff --git a/gcc/testsuite/gdc.test/fail_compilation/udaparams.d b/gcc/testsuite/gdc.test/fail_compilation/udaparams.d
new file mode 100644
index 0000000..ec760bd
--- /dev/null
+++ b/gcc/testsuite/gdc.test/fail_compilation/udaparams.d
@@ -0,0 +1,57 @@
+/*
+TEST_OUTPUT:
+---
+fail_compilation/udaparams.d(31): Error: variadic parameter cannot have user-defined attributes
+fail_compilation/udaparams.d(32): Error: variadic parameter cannot have user-defined attributes
+fail_compilation/udaparams.d(34): Error: user-defined attributes cannot appear as postfixes
+fail_compilation/udaparams.d(35): Error: user-defined attributes cannot appear as postfixes
+fail_compilation/udaparams.d(36): Error: user-defined attributes cannot appear as postfixes
+fail_compilation/udaparams.d(38): Error: `@safe` attribute for function parameter is not supported
+fail_compilation/udaparams.d(39): Error: `@safe` attribute for function parameter is not supported
+fail_compilation/udaparams.d(40): Error: `@safe` attribute for function parameter is not supported
+fail_compilation/udaparams.d(43): Error: `@system` attribute for function parameter is not supported
+fail_compilation/udaparams.d(44): Error: `@trusted` attribute for function parameter is not supported
+fail_compilation/udaparams.d(45): Error: `@nogc` attribute for function parameter is not supported
+fail_compilation/udaparams.d(51): Error: Cannot put a storage-class in an alias declaration.
+fail_compilation/udaparams.d(52): Error: Cannot put a storage-class in an alias declaration.
+fail_compilation/udaparams.d(53): Error: semicolon expected to close `alias` declaration
+fail_compilation/udaparams.d(53): Error: declaration expected, not `=>`
+fail_compilation/udaparams.d(54): Error: semicolon expected to close `alias` declaration
+fail_compilation/udaparams.d(54): Error: declaration expected, not `=>`
+fail_compilation/udaparams.d(57): Error: basic type expected, not `@`
+fail_compilation/udaparams.d(57): Error: identifier expected for template value parameter
+fail_compilation/udaparams.d(57): Error: found `@` when expecting `)`
+fail_compilation/udaparams.d(57): Error: basic type expected, not `3`
+fail_compilation/udaparams.d(57): Error: found `3` when expecting `)`
+fail_compilation/udaparams.d(57): Error: semicolon expected following function declaration
+fail_compilation/udaparams.d(57): Error: declaration expected, not `)`
+---
+*/
+
+void vararg1(int a, @(10) ...);
+extern(C) void vararg2(int a, @(10) ...);
+
+void rhsuda(int a @(10));
+void rhsuda2(int @(10));
+void rhsuda3(int[] arr @(10) ...);
+
+void wrongAttr1(@safe int);
+void wrongAttr2(@safe void function());
+void wrongAttr3(@safe void delegate());
+
+
+void test16(A)(A a @system);
+void test16(A)(A a @trusted);
+void test16(A)(A a @nogc);
+
+// lambdas without parentheses
+alias test19a = @safe b => 1 + 2;
+alias test19b = @system b => 1 + 2;
+alias test19c = @nogc b => 1 + 2;
+alias test19d = @(2) @system b => 1 + 2;
+alias test19e = @safe @(2) b => 1 + 2;
+alias test19f = extern(C++) b => 1 + 2;
+alias test19g = align(2) b => 1 + 2;
+
+// UDAs on Template parameter aren't supported
+void test21(@(3) T)(T t) {}
diff --git a/gcc/testsuite/gdc.test/runnable/aliasthis.d b/gcc/testsuite/gdc.test/runnable/aliasthis.d
index 8cd0051..ee8e6a1 100644
--- a/gcc/testsuite/gdc.test/runnable/aliasthis.d
+++ b/gcc/testsuite/gdc.test/runnable/aliasthis.d
@@ -1,3 +1,29 @@
+/*
+TEST_OUTPUT:
+---
+false
+[] = int
+[] = string
+[0] = int
+[1] = string
+[] = string
+[] = int
+[1] = string
+[0] = int
+---
+
+RUN_OUTPUT:
+---
+1 1.1
+ctor
+cpctor
+dtor
+cpctor
+dtor
+dtor
+Success
+---
+*/
extern (C) int printf(const(char*) fmt, ...);
import core.vararg;
@@ -551,7 +577,7 @@ void test2781()
}
eval = 0;
- foreach (i, e; tup(tup((eval++, 10), 3.14), tup("str", [1,2])))
+ foreach (i, e; tup(tup((){eval++; return 10;}(), 3.14), tup("str", [1,2])))
{
static if (i == 0) assert(e == tup(10, 3.14));
static if (i == 1) assert(e == tup("str", [1,2]));
@@ -559,7 +585,7 @@ void test2781()
assert(eval == 1);
eval = 0;
- foreach (i, e; tup((eval++,10), tup(3.14, tup("str", tup([1,2])))))
+ foreach (i, e; tup((){eval++; return 10;}(), tup(3.14, tup("str", tup([1,2])))))
{
static if (i == 0) assert(e == 10);
static if (i == 1) assert(e == tup(3.14, tup("str", tup([1,2]))));
@@ -836,7 +862,7 @@ void test6369c()
void test6369d()
{
int eval = 0;
- Seq!(int, string) t = tup((++eval, 10), "str");
+ Seq!(int, string) t = tup((){++eval; return 10;}(), "str");
assert(eval == 1);
assert(t[0] == 10);
assert(t[1] == "str");
diff --git a/gcc/testsuite/gdc.test/runnable/constfold.d b/gcc/testsuite/gdc.test/runnable/constfold.d
index 42406ea..1d259f6 100644
--- a/gcc/testsuite/gdc.test/runnable/constfold.d
+++ b/gcc/testsuite/gdc.test/runnable/constfold.d
@@ -302,7 +302,6 @@ static assert(is(typeof( (){ C4 g = 7; C4 h = g;})));
alias uint DWORD;
MY_API_FUNCTION lpStartAddress;
extern (Windows) alias DWORD function(void*) MY_API_FUNCTION;
-pragma(msg, MY_API_FUNCTION.stringof);
static assert(MY_API_FUNCTION.stringof == "extern (Windows) uint function(void*)");
/************************************/
@@ -565,7 +564,8 @@ void test13977()
Object.init && check();
assert(x == 0);
- (check(2), false) && check();
+ check(2);
+ false && check();
assert(x == 2); x = 0;
}
@@ -594,7 +594,8 @@ void test13978()
Object.init || check();
assert(x == 1); x = 0;
- (check(2), true) || check();
+ check(2);
+ true || check();
assert(x == 2); x = 0;
}
diff --git a/gcc/testsuite/gdc.test/runnable/ctorpowtests.d b/gcc/testsuite/gdc.test/runnable/ctorpowtests.d
index 1b81a9e..89f846a 100644
--- a/gcc/testsuite/gdc.test/runnable/ctorpowtests.d
+++ b/gcc/testsuite/gdc.test/runnable/ctorpowtests.d
@@ -141,7 +141,8 @@ static assert(bazra(14)==64);
void moreCommaTests()
{
- auto k = (containsAsm(), containsAsm());
+ (containsAsm(), containsAsm());
+ auto k = containsAsm();
for (int i=0; i< k^^2; i+=StructWithCtor(1).n) {}
}
diff --git a/gcc/testsuite/gdc.test/runnable/declaration.d b/gcc/testsuite/gdc.test/runnable/declaration.d
index 0b6c6b5..0dbd287 100644
--- a/gcc/testsuite/gdc.test/runnable/declaration.d
+++ b/gcc/testsuite/gdc.test/runnable/declaration.d
@@ -1,3 +1,16 @@
+/*
+TEST_OUTPUT:
+---
+S7019(16), 16
+S7019(24), 24
+S7019(32), 32
+---
+
+RUN_OUTPUT:
+---
+Success
+---
+*/
extern(C) int printf(const char*, ...);
diff --git a/gcc/testsuite/gdc.test/runnable/foreach5.d b/gcc/testsuite/gdc.test/runnable/foreach5.d
index 59ee906..003a34a 100644
--- a/gcc/testsuite/gdc.test/runnable/foreach5.d
+++ b/gcc/testsuite/gdc.test/runnable/foreach5.d
@@ -1,3 +1,16 @@
+/*
+TEST_OUTPUT:
+---
+int
+double
+foobar7406(T)
+test7406()
+int
+foobar7406(T)
+int
+test7406()
+---
+*/
extern(C) int printf(const char* fmt, ...);
diff --git a/gcc/testsuite/gdc.test/runnable/funclit.d b/gcc/testsuite/gdc.test/runnable/funclit.d
index d18e88a..d45e3e6d 100644
--- a/gcc/testsuite/gdc.test/runnable/funclit.d
+++ b/gcc/testsuite/gdc.test/runnable/funclit.d
@@ -1,3 +1,19 @@
+/*
+TEST_OUTPUT:
+---
+int delegate() pure nothrow @nogc @safe delegate() pure nothrow @nogc @safe delegate() pure nothrow @safe
+int delegate() pure nothrow @nogc @safe delegate() pure nothrow @nogc @safe delegate() pure nothrow @safe
+int
+int
+int[]
+int delegate() pure nothrow @nogc @safe function() pure nothrow @safe
+---
+
+RUN_OUTPUT:
+---
+Success
+---
+*/
import core.vararg;
extern (C) int printf(const char*, ...);
diff --git a/gcc/testsuite/gdc.test/runnable/future.d b/gcc/testsuite/gdc.test/runnable/future.d
index 0b6fd95..1a91d30 100644
--- a/gcc/testsuite/gdc.test/runnable/future.d
+++ b/gcc/testsuite/gdc.test/runnable/future.d
@@ -1,4 +1,8 @@
/* PERMUTE_ARGS:
+TEST_OUTPUT:
+---
+runnable/future.d(15): Deprecation: `@__future` base class method `future.A.msg` is being overridden by `future.B.msg`; rename the latter
+---
*/
class A
diff --git a/gcc/testsuite/gdc.test/runnable/imports/link15194std.d b/gcc/testsuite/gdc.test/runnable/imports/link15194std.d
index 95c63ce..baa9d55 100644
--- a/gcc/testsuite/gdc.test/runnable/imports/link15194std.d
+++ b/gcc/testsuite/gdc.test/runnable/imports/link15194std.d
@@ -30,7 +30,6 @@ else
struct SetUnion(Rs...)
{
- pragma(msg, Rs);
Rs r;
// Rs[0] == RBRange!(RBNode!int*)
diff --git a/gcc/testsuite/gdc.test/runnable/imports/test18322import.d b/gcc/testsuite/gdc.test/runnable/imports/test18322import.d
new file mode 100644
index 0000000..8916cfd
--- /dev/null
+++ b/gcc/testsuite/gdc.test/runnable/imports/test18322import.d
@@ -0,0 +1,14 @@
+module test18322import;
+void fun(string templateFileFullPath = __FILE_FULL_PATH__,
+ string templateFile = __FILE__)(string expectedFilename, string fileFullPath = __FILE_FULL_PATH__)
+{
+ // make sure it is an absolute path
+ version(Windows)
+ assert(fileFullPath[1..3] == ":\\");
+ else
+ assert(fileFullPath[0] == '/');
+
+ assert(templateFileFullPath == fileFullPath);
+ assert(fileFullPath[$ - expectedFilename.length .. $] == expectedFilename);
+ assert(fileFullPath[$ - templateFile.length .. $] == templateFile);
+}
diff --git a/gcc/testsuite/gdc.test/runnable/imports/testmangle.d b/gcc/testsuite/gdc.test/runnable/imports/testmangle.d
new file mode 100644
index 0000000..5311a83
--- /dev/null
+++ b/gcc/testsuite/gdc.test/runnable/imports/testmangle.d
@@ -0,0 +1,66 @@
+// helper for mangling tests with back references
+
+module imports.testmangle;
+
+public import core.demangle : demangle, demangleType;
+
+// detect mangle version
+private
+{
+ struct Detect;
+ Detect* detectMangle(Detect*);
+ void DetectTmpl(T)() {}
+}
+
+pragma(msg,detectMangle.mangleof);
+static if(detectMangle.mangleof == "_D7imports10testmangle12detectMangleFPSQL3H6DetectZQ1e")
+ enum { BackRefs = true, BackRefSymbols = true }
+else static if(detectMangle.mangleof == "_D7imports10testmangle12detectMangleFPSQBlQBg6DetectZQq")
+ enum { BackRefs = true, BackRefSymbols = false }
+else static if(detectMangle.mangleof == "_D7imports10testmangle12detectMangleFPS7imports10testmangle6DetectZPS7imports10testmangle6Detect")
+ enum { BackRefs = false, BackRefSymbols = false }
+else
+ static assert(false, "unknown mangling");
+
+private enum tmplMangle = (DetectTmpl!int).mangleof;
+pragma(msg,tmplMangle);
+static if(tmplMangle[0..40] == "_D7imports10testmangle__T10DetectTmplTiZ")
+ enum HasTemplateLength = false;
+else static if(tmplMangle[0..42] == "_D7imports10testmangle18__T10DetectTmplTiZ")
+ enum HasTemplateLength = true;
+else
+ static assert(false, "unknown mangling");
+
+pragma(msg,BackRefs);
+pragma(msg,BackRefSymbols);
+
+static if (BackRefs)
+{
+ string tl(string s)() { return null; }
+ string id(string s, string r, string r2 = null)() { return BackRefSymbols && r2 !is null ? r2 : r; }
+}
+else
+{
+ string tl(string s)() { return HasTemplateLength ? s : null; }
+ string id(string s, string r, string r2 = null)() { return s; }
+}
+
+bool equalDemangle(string m1, string m2)
+{
+ auto dm1 = demangle(m1);
+ auto dm2 = demangle(m2);
+ return dm1 == dm2;
+}
+
+string unsignedToString(ulong x)
+{
+ string s;
+ s ~= cast(char)('0' + (x % 10));
+ x /= 10;
+ while (x > 0)
+ {
+ s = cast(char)('0' + (x % 10)) ~ s;
+ x /= 10;
+ }
+ return s;
+}
diff --git a/gcc/testsuite/gdc.test/runnable/interpret.d b/gcc/testsuite/gdc.test/runnable/interpret.d
index b822cad..fe44744 100644
--- a/gcc/testsuite/gdc.test/runnable/interpret.d
+++ b/gcc/testsuite/gdc.test/runnable/interpret.d
@@ -1,4 +1,22 @@
-// RUNNABLE_PHOBOS_TEST
+/* RUNNABLE_PHOBOS_TEST
+TEST_OUTPUT:
+---
+true
+g
+&Test109S(&Test109S(<recursion>))
+runnable/interpret.d(3197): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+runnable/interpret.d(3199): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+runnable/interpret.d(3202): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+runnable/interpret.d(3205): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+runnable/interpret.d(3206): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+runnable/interpret.d(3212): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+runnable/interpret.d(3213): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+runnable/interpret.d(3216): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+tfoo
+tfoo
+Crash!
+---
+*/
import std.stdio;
template Tuple(A...)
diff --git a/gcc/testsuite/gdc.test/runnable/lazy.d b/gcc/testsuite/gdc.test/runnable/lazy.d
index b9d0fd2..c184619 100644
--- a/gcc/testsuite/gdc.test/runnable/lazy.d
+++ b/gcc/testsuite/gdc.test/runnable/lazy.d
@@ -75,7 +75,7 @@ void test1()
);
whiler( x < 100,
- (printf("%d\n", x), x *= 2)
+ (){ printf("%d\n", x); x *= 2; }()
);
}
diff --git a/gcc/testsuite/gdc.test/runnable/link10920.d b/gcc/testsuite/gdc.test/runnable/link10920.d
index 29f3a47..7c3e3de 100644
--- a/gcc/testsuite/gdc.test/runnable/link10920.d
+++ b/gcc/testsuite/gdc.test/runnable/link10920.d
@@ -1,4 +1,5 @@
// PERMUTE_ARGS: -version=A
+// EXTRA_FILES: imports/link10920a.d
// It's imported but won't be linked.
import imports.link10920a;
@@ -10,7 +11,7 @@ void main()
{
// Run semantic3 of BitArray.toString()
// before the FormatSpec instantiation in main().
- pragma(msg, typeof(ba.toString()));
+ static assert(is(typeof(ba.toString())));
}
// The instance codegen should be run always, unrelated with -version=A.
diff --git a/gcc/testsuite/gdc.test/runnable/link15021.d b/gcc/testsuite/gdc.test/runnable/link15021.d
index 62918a2..2e82610 100644
--- a/gcc/testsuite/gdc.test/runnable/link15021.d
+++ b/gcc/testsuite/gdc.test/runnable/link15021.d
@@ -1,4 +1,11 @@
// PERMUTE_ARGS: -inline -g -debug -unittest
+// EXTRA_FILES: imports/std15021conv.d
+/*
+TEST_OUTPUT:
+---
+hit!
+---
+*/
import imports.std15021conv;
diff --git a/gcc/testsuite/gdc.test/runnable/link6574.d b/gcc/testsuite/gdc.test/runnable/link6574.d
index 0f97ed7..53e95f2 100644
--- a/gcc/testsuite/gdc.test/runnable/link6574.d
+++ b/gcc/testsuite/gdc.test/runnable/link6574.d
@@ -1,16 +1,28 @@
// PERMUTE_ARGS:
+// EXTRA_FILES: imports/testmangle.d
+/*
+TEST_OUTPUT:
+---
+_D7imports10testmangle12detectMangleFPSQBlQBg6DetectZQq
+_D7imports10testmangle__T10DetectTmplTiZQpFNaNbNiNfZv
+true
+false
+---
+*/
module link6574;
+import imports.testmangle;
+
enum Method { A, B, }
int foo(Method method = Method.A)()
{
- static assert(foo.mangleof == "_D8link657428__T3fooVE8link65746Methodi0Z3fooFZi");
+ static assert(foo.mangleof == "_D8link6574"~tl!"28"~"__T3fooVE"~id!("8link6574","Qs")~"6Methodi0Z"~id!("3foo","Qs")~"FZi");
return 10 * foo!method();
}
int foo(Method method : Method.A)()
{
- static assert(foo.mangleof == "_D8link657429__T3fooHVE8link65746Methodi0Z3fooFZi");
+ static assert(foo.mangleof == "_D8link6574"~tl!"29"~"__T3fooHVE"~id!("8link6574","Qt")~"6Methodi0Z"~id!("3foo","Qt")~"FZi");
return 2;
}
int foo(Method method : Method.B)()
@@ -21,7 +33,7 @@ int foo(Method method : Method.B)()
int bar(Method method = Method.B)()
{
- static assert(bar.mangleof == "_D8link657428__T3barVE8link65746Methodi1Z3barFZi");
+ static assert(bar.mangleof == "_D8link6574"~tl!"28"~"__T3barVE"~id!("8link6574","Qs")~"6Methodi1Z"~id!("3bar","Qs")~"FZi");
return 10 * bar!method();
}
int bar(Method method : Method.A)()
@@ -31,7 +43,7 @@ int bar(Method method : Method.A)()
}
int bar(Method method : Method.B)()
{
- static assert(bar.mangleof == "_D8link657429__T3barHVE8link65746Methodi1Z3barFZi");
+ static assert(bar.mangleof == "_D8link6574"~tl!"29"~"__T3barHVE"~id!("8link6574","Qt")~"6Methodi1Z"~id!("3bar","Qt")~"FZi");
return 3;
}
diff --git a/gcc/testsuite/gdc.test/runnable/mangle.d b/gcc/testsuite/gdc.test/runnable/mangle.d
index 8820a6d..e6d3645 100644
--- a/gcc/testsuite/gdc.test/runnable/mangle.d
+++ b/gcc/testsuite/gdc.test/runnable/mangle.d
@@ -1,5 +1,17 @@
// PERMUTE_ARGS:
// EXTRA_SOURCES: imports/mangle10077.d
+// EXTRA_FILES: imports/testmangle.d
+/*
+TEST_OUTPUT:
+---
+_D7imports10testmangle12detectMangleFPSQBlQBg6DetectZQq
+_D7imports10testmangle__T10DetectTmplTiZQpFNaNbNiNfZv
+true
+false
+---
+*/
+
+import imports.testmangle;
/***************************************************/
// 10077 - pragma(mangle)
@@ -79,7 +91,7 @@ class C2774
static assert(C2774.foo2774.mangleof == "_D6mangle5C27747foo2774MFZi");
template TFoo2774(T) {}
-static assert(TFoo2774!int.mangleof == "6mangle15__T8TFoo2774TiZ");
+static assert(TFoo2774!int.mangleof == "6mangle"~tl!"15"~"__T8TFoo2774TiZ");
void test2774()
{
@@ -175,8 +187,8 @@ void test8847b()
struct Test8847
{
- enum result1 = "S6mangle8Test88478__T3fooZ3fooMFZ6Result";
- enum result2 = "S6mangle8Test88478__T3fooZ3fooMxFiZ6Result";
+ enum result1 = "S6mangle8Test8847"~tl!("8")~"__T3fooZ"~id!("3foo","Qf")~"MFZ6Result";
+ enum result2 = "S6mangle8Test8847"~tl!("8")~"__T3fooZ"~id!("3foo","Qf")~"MxFiZ6Result";
auto foo()()
{
@@ -236,9 +248,10 @@ void test8847d()
void test8847e()
{
- enum resultHere = "6mangle"~"9test8847eFZ"~"8__T3fooZ"~"3foo";
+ enum resultHere = "6mangle"~"9test8847eFZ"~tl!"8"~"__T3fooZ"~id!("3foo","Qf");
enum resultBar = "S"~resultHere~"MFNaNfNgiZ3Bar";
- enum resultFoo = "_D"~resultHere~"MFNaNbNiNfNgiZNg"~resultBar; // added 'Nb'
+ static if(BackRefs) {} else
+ enum resultFoo = "_D"~resultHere~"MFNaNbNiNfNgiZNg"~resultBar; // added 'Nb'
// Make template function to infer 'nothrow' attributes
auto foo()(inout int) pure @safe
@@ -248,10 +261,16 @@ void test8847e()
return inout(Bar)();
}
+ import core.demangle : demangle, demangleType;
auto bar = foo(0);
static assert(typeof(bar).stringof == "Bar");
static assert(typeof(bar).mangleof == resultBar);
- static assert(foo!().mangleof == resultFoo);
+ enum fooDemangled = "pure nothrow @nogc @safe inout(mangle.test8847e().foo!().foo(inout(int)).Bar) mangle.test8847e().foo!().foo(inout(int))";
+
+ static if (BackRefs)
+ static assert(demangle(foo!().mangleof) == fooDemangled);
+ else
+ static assert(foo!().mangleof == resultFoo);
}
// --------
@@ -287,7 +306,7 @@ auto bar12352()
return S();
}
-static assert( bar12352 .mangleof == "_D6mangle8bar12352FNaNbNiNfZS6mangle8bar12352FZ1S");
+static assert( bar12352 .mangleof == "_D6mangle8bar12352FNaNbNiNfZS"~id!("6mangle8bar12352FZ","QBbQxFZ","QL2H")~"1S");
static assert(typeof(bar12352()) .mangleof == "S6mangle8bar12352FZ1S");
static assert(typeof(bar12352()).func.mangleof == "_D6mangle8bar12352FZ1S4funcMFZv");
@@ -301,7 +320,7 @@ auto baz12352()
return new C();
}
-static assert( baz12352 .mangleof == "_D6mangle8baz12352FNaNbNfZC6mangle8baz12352FZ1C");
+static assert( baz12352 .mangleof == "_D6mangle8baz12352FNaNbNfZC"~id!("6mangle8baz12352FZ","QzQuFZ","QL2F")~"1C");
static assert(typeof(baz12352()) .mangleof == "C6mangle8baz12352FZ1C");
static assert(typeof(baz12352()).func.mangleof == "_D6mangle8baz12352FZ1C4funcMFZv");
@@ -312,8 +331,8 @@ void f9525(T)(in T*) { }
void test9525()
{
- enum result1 = "S6mangle8test9525FZ26__T5test1S136mangle5f9525Z5test1MFZ1S";
- enum result2 = "S6mangle8test9525FZ26__T5test2S136mangle5f9525Z5test2MFNaNbZ1S";
+ enum result1 = "S6mangle8test9525FZ"~tl!"26"~"__T5test1S"~tl!"13"~id!("6mangle","QBc")~"5f9525Z"~id!("5test1","Qr")~"MFZ1S";
+ enum result2 = "S6mangle8test9525FZ"~tl!"26"~"__T5test2S"~tl!"13"~id!("6mangle","QBc")~"5f9525Z"~id!("5test2","Qr")~"MFNaNbZ1S";
void test1(alias a)()
{
@@ -383,23 +402,32 @@ void test11718()
string TyName(string tail)()
{
enum s = "__T7Ty11718" ~ tail;
- enum int len = s.length;
- return "S6mangle" ~ len.stringof ~ s;
+ enum len = unsignedToString(s.length);
+ return "S6mangle" ~ tl!(len) ~ s;
}
string fnName(string paramPart)()
{
- enum s = "_D6mangle35__T7fn11718T"~
+ enum s = "_D6mangle"~tl!("35")~"__T7fn11718T"~
"S6mangle9test11718FZ1AZ7fn11718"~paramPart~"1a"~
"S6mangle9test11718FZ1A";
- enum int len = s.length;
- return len.stringof ~ s;
+ enum len = unsignedToString(s.length);
+ return tl!len ~ s;
}
enum result1 = TyName!("S" ~ fnName!("F"~"S6mangle9test11718FZ1A"~"Z") ~ "Z") ~ "7Ty11718";
enum result2 = TyName!("S" ~ fnName!("F"~"" ~"Z") ~ "Z") ~ "7Ty11718";
struct A {}
- static assert(fn11718(A.init) == result1);
- static assert(fn11718!A() == result2);
+ static if (BackRefs)
+ {
+ static assert(fn11718(A.init) == "S6mangle__T7Ty11718S_DQv__T7fn11718TSQBk9test11718FZ1AZQBcFQxZ1aQBcZQCf");
+ static assert(fn11718!A() == "S6mangle__T7Ty11718S_DQv__T7fn11718TSQBk9test11718FZ1AZQBcFZ1aQBaZQCd");
+ }
+ else
+ {
+ pragma(msg, fn11718(A.init));
+ static assert(fn11718(A.init) == result1);
+ static assert(fn11718!A() == result2);
+ }
}
/*******************************************/
@@ -417,9 +445,10 @@ void test11776()
{
auto s = S11776!(a => 1)();
static assert(typeof(s).mangleof ==
- "S"~"6mangle"~"56"~(
- "__T"~"6S11776"~"S42"~("6mangle"~"9test11776"~"FZ"~"9__lambda1MFZ"~"9__lambda1")~"Z"
- )~"6S11776");
+ "S"~"6mangle"~tl!("56")~
+ ("__T"~"6S11776"~"S"~tl!("42")~
+ (id!("6mangle","Qs")~"9test11776"~"FZ"~"9__lambda1MFZ"~id!("9__lambda1","Qn"))~"Z"
+ )~id!("6S11776", "QBm"));
}
};
}
@@ -464,7 +493,7 @@ void test12217(int)
static assert( S.mangleof == "S6mangle9test12217FiZ1S");
static assert( bar.mangleof == "_D6mangle9test12217FiZ3barMFNaNbNiNfZv");
static assert( var.mangleof == "_D6mangle9test12217FiZ3vari");
- static assert(X!int.mangleof == "6mangle9test12217FiZ8__T1XTiZ");
+ static assert(X!int.mangleof == "6mangle9test12217FiZ"~tl!("8")~"__T1XTiZ");
}
void test12217() {}
@@ -476,22 +505,21 @@ void func12231a()()
if (is(typeof({
class C {}
static assert(C.mangleof ==
- "C6mangle16__U10func12231aZ10func12231aFZ9__lambda1MFZ1C");
+ "C6mangle"~tl!("16")~"__U10func12231aZ"~id!("10func12231a","Qn")~"FZ9__lambda1MFZ1C");
// ### L #
})))
{}
void func12231b()()
if (is(typeof({
- class C {}
- static assert(C.mangleof ==
- "C6mangle16__U10func12231bZ10func12231bFZ9__lambda1MFZ1C");
+ class C {} static assert(C.mangleof ==
+ "C6mangle"~tl!("16")~"__U10func12231bZ"~id!("10func12231b","Qn")~"FZ9__lambda1MFZ1C");
// L__L L LL
- })) &&
+ })) &&
is(typeof({
class C {}
static assert(C.mangleof ==
- "C6mangle16__U10func12231bZ10func12231bFZ9__lambda2MFZ1C");
+ "C6mangle"~tl!("16")~"__U10func12231bZ"~id!("10func12231b","Qn")~"FZ9__lambda2MFZ1C");
// L__L L LL
})))
{}
@@ -500,14 +528,14 @@ void func12231c()()
if (is(typeof({
class C {}
static assert(C.mangleof ==
- "C6mangle16__U10func12231cZ10func12231cFZ9__lambda1MFZ1C");
+ "C6mangle"~tl!("16")~"__U10func12231cZ"~id!("10func12231c","Qn")~"FZ9__lambda1MFZ1C");
// L__L L LL
})))
{
(){
class C {}
static assert(C.mangleof ==
- "C6mangle16__T10func12231cZ10func12231cFZ9__lambda1MFZ1C");
+ "C6mangle"~tl!("16")~"__T10func12231cZ"~id!("10func12231c","Qn")~"FZ9__lambda1MFZ1C");
// L__L L LL
}();
}
@@ -515,15 +543,15 @@ if (is(typeof({
void func12231c(X)()
if (is(typeof({
class C {}
- static assert(C.mangleof ==
- "C6mangle20__U10func12231cTAyaZ10func12231cFZ9__lambda1MFZ1C");
+ static assert(C.mangleof ==
+ "C6mangle"~tl!("20")~"__U10func12231cTAyaZ"~id!("10func12231c","Qr")~"FZ9__lambda1MFZ1C");
// L__L L___L LL
})))
{
(){
class C {}
static assert(C.mangleof ==
- "C6mangle20__T10func12231cTAyaZ10func12231cFZ9__lambda1MFZ1C");
+ "C6mangle"~tl!("20")~"__T10func12231cTAyaZ"~id!("10func12231c","Qr")~"FZ9__lambda1MFZ1C");
// L__L L___L LL
}();
}
diff --git a/gcc/testsuite/gdc.test/runnable/mixin2.d b/gcc/testsuite/gdc.test/runnable/mixin2.d
index 3591d12..26a2352 100644
--- a/gcc/testsuite/gdc.test/runnable/mixin2.d
+++ b/gcc/testsuite/gdc.test/runnable/mixin2.d
@@ -1,4 +1,36 @@
-// RUNNABLE_PHOBOS_TEST
+/* RUNNABLE_PHOBOS_TEST
+TEST_OUTPUT:
+---
+hello
+hello
+
+
+
+hello
+hello
+---
+
+RUN_OUTPUT:
+---
+31
+42
+53
+64
+75
+86
+97
+108
+119
+1210
+5
+test4
+Constructor
+ Inside Scope
+Destructor
+hey
+Success
+---
+*/
import std.stdio;
/*********************************************/
diff --git a/gcc/testsuite/gdc.test/runnable/nested.d b/gcc/testsuite/gdc.test/runnable/nested.d
index fa012b5..6b2fcb0 100644
--- a/gcc/testsuite/gdc.test/runnable/nested.d
+++ b/gcc/testsuite/gdc.test/runnable/nested.d
@@ -1,4 +1,10 @@
// REQUIRED_ARGS:
+/*
+TEST_OUTPUT:
+---
+null
+---
+*/
import core.stdc.stdio;
diff --git a/gcc/testsuite/gdc.test/runnable/nulltype.d b/gcc/testsuite/gdc.test/runnable/nulltype.d
index c400d7f..7a1f1c3 100644
--- a/gcc/testsuite/gdc.test/runnable/nulltype.d
+++ b/gcc/testsuite/gdc.test/runnable/nulltype.d
@@ -1,3 +1,16 @@
+/*
+TEST_OUTPUT:
+---
+pure nothrow @safe Object(bool b)
+pure nothrow @safe int*(bool b)
+pure nothrow @safe int[](bool b)
+---
+
+RUN_OUTPUT:
+---
+Success
+---
+*/
extern (C) int printf(const(char*) fmt, ...);
alias typeof(null) null_t;
diff --git a/gcc/testsuite/gdc.test/runnable/property2.d b/gcc/testsuite/gdc.test/runnable/property2.d
index 0735b93..1c5cf30 100644
--- a/gcc/testsuite/gdc.test/runnable/property2.d
+++ b/gcc/testsuite/gdc.test/runnable/property2.d
@@ -1,4 +1,24 @@
// PERMUTE_ARGS: -property
+/*
+TEST_OUTPUT:
+---
+decl: test
+stmt: test
+---
+
+RUN_OUTPUT:
+---
+0: getter
+1: setter
+2: getter
+3: setter
+4: setter
+5: compile error
+6: compile error
+7: setter
+Success
+---
+*/
extern (C) int printf(const char* fmt, ...);
diff --git a/gcc/testsuite/gdc.test/runnable/runnable.exp b/gcc/testsuite/gdc.test/runnable/runnable.exp
index af5d749..134d067 100644
--- a/gcc/testsuite/gdc.test/runnable/runnable.exp
+++ b/gcc/testsuite/gdc.test/runnable/runnable.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gdc.test/runnable/sdtor.d b/gcc/testsuite/gdc.test/runnable/sdtor.d
index ed58bcf..3edf8cf 100644
--- a/gcc/testsuite/gdc.test/runnable/sdtor.d
+++ b/gcc/testsuite/gdc.test/runnable/sdtor.d
@@ -1,4 +1,18 @@
// PERMUTE_ARGS: -unittest -O -release -inline -fPIC -g
+/*
+TEST_OUTPUT:
+---
+runnable/sdtor.d(36): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+runnable/sdtor.d(59): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+runnable/sdtor.d(93): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+runnable/sdtor.d(117): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+runnable/sdtor.d(143): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+runnable/sdtor.d(177): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+runnable/sdtor.d(203): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+runnable/sdtor.d(276): Deprecation: The `delete` keyword has been deprecated. Use `object.destroy()` (and `core.memory.GC.free()` if applicable) instead.
+S7353
+---
+*/
import core.vararg;
@@ -879,8 +893,10 @@ void test34()
X34[2] xs;
// xs[0][0] = X34();
printf("foreach\n");
- for (int j = 0; j < xs.length; j++) { auto x = (j++,j--,xs[j]);
- //foreach(x; xs) {
+ for (int j = 0; j < xs.length; j++) {
+ j++,j--;
+ auto x = xs[j];
+ //foreach(x; xs)
//printf("foreach x.i = %d\n", x[0].i);
//assert(x[0].i == 1);
printf("foreach x.i = %d\n", x.i);
@@ -1395,22 +1411,22 @@ void test54()
assert(S54.t == "c");
{ S54.t = null;
- int b = 1 && (bar54(S54(1)), 1);
+ int b = 1 && (){ bar54(S54(1)); return 1;}();
}
assert(S54.t == "ac");
{ S54.t = null;
- int b = 0 && (bar54(S54(1)), 1);
+ int b = 0 && (){ bar54(S54(1)); return 1;}();
}
assert(S54.t == "");
{ S54.t = null;
- int b = 0 || (bar54(S54(1)), 1);
+ int b = 0 || (){ bar54(S54(1)); return 1;}();
}
assert(S54.t == "ac");
{ S54.t = null;
- int b = 1 || (bar54(S54(1)), 1);
+ int b = 1 || (){ bar54(S54(1)); return 1;}();
}
assert(S54.t == "");
@@ -1529,7 +1545,8 @@ void test57()
printf("----\n"); //+
dtor_cnt = 0;
- if (auto s = (S57(1), S57(2), S57(10)))
+ S57(1), S57(2);
+ if (auto s = S57(10))
{
assert(dtor_cnt == 2);
printf("ifbody\n");
@@ -1562,7 +1579,8 @@ void test57()
printf("----\n"); //+
dtor_cnt = 0;
- if (auto s = (f(1), f(2), f(10)))
+ f(1), f(2);
+ if (auto s = f(10))
{
assert(dtor_cnt == 2);
printf("ifbody\n");
@@ -1596,7 +1614,8 @@ void test57()
printf("----\n");
dtor_cnt = 0;
- if ((S57(1), S57(2), S57(10)))
+ S57(1), S57(2);
+ if (S57(10))
{
assert(dtor_cnt == 3);
printf("ifbody\n");
@@ -1628,7 +1647,8 @@ void test57()
printf("----\n");
dtor_cnt = 0;
- if ((f(1), f(2), f(10)))
+ f(1), f(2);
+ if (f(10))
{
assert(dtor_cnt == 3);
printf("ifbody\n");
@@ -4432,7 +4452,8 @@ struct S64
S64 foo64()
{
- return S64((X64(), 1));
+ X64();
+ return S64(1);
}
void test64()
diff --git a/gcc/testsuite/gdc.test/runnable/stress.d b/gcc/testsuite/gdc.test/runnable/stress.d
index b157253..a8c6c91 100644
--- a/gcc/testsuite/gdc.test/runnable/stress.d
+++ b/gcc/testsuite/gdc.test/runnable/stress.d
@@ -89,8 +89,8 @@ void MDCHAR()
if(str[ITERS-1][0].sizeof != (typ).sizeof) printf("Size Error: %d\n",str[ITERS-1][0].sizeof);
foreach(s; str) {
- int lstart;
- foreach(int idx, char c; s) {
+ size_t lstart;
+ foreach(size_t idx, char c; s) {
if(c == '\n') {
typ[] t = s[lstart..idx];
if(t != "TEST LINE") {
@@ -108,8 +108,8 @@ void MDCHAR()
}
foreach(s; splitLines(cast(string)tmp)) {
- int lstart;
- foreach(int idx, char c; s) {
+ size_t lstart;
+ foreach(size_t idx, char c; s) {
if(c == '\n') {
if(s[lstart..idx] != "TEST LINE") {
printf("Error testing character array\n");
@@ -134,8 +134,8 @@ void CHAR()
if(str.length != (ITERS * 10)) printf("Length Error: %d\n",str.length);
if(str.sizeof != (typ[]).sizeof) printf("Size Error: %d\n",str.sizeof);
- int lstart;
- foreach(int idx, char c; str) {
+ size_t lstart;
+ foreach(size_t idx, char c; str) {
if(c == '\n') {
if(str[lstart..idx] != "TEST LINE") {
printf("Error testing character array\n");
@@ -159,8 +159,8 @@ void WCHAR()
if(str.length != (ITERS * 10)) printf("Length Error: %d\n",str.length);
if(str.sizeof != (typ[]).sizeof) printf("Size Error: %d\n",str.sizeof);
- int lstart;
- foreach(int idx, char c; str) {
+ size_t lstart;
+ foreach(size_t idx, char c; str) {
if(c == '\n') {
if(str[lstart..idx] != toUTF16(cast(char[])"TEST LINE")) {
printf("Error testing character array\n");
@@ -184,8 +184,8 @@ void DCHAR()
if(str.length != (ITERS * 10)) printf("Length Error: %d\n",str.length);
if(str.sizeof != (typ[]).sizeof) printf("Size Error: %d\n",str.sizeof);
- int lstart;
- foreach(int idx, char c; str) {
+ size_t lstart;
+ foreach(size_t idx, char c; str) {
if(c == '\n') {
if(str[lstart..idx] != toUTF32(cast(char[])"TEST LINE")) {
printf("Error testing character array\n");
diff --git a/gcc/testsuite/gdc.test/runnable/structlit.d b/gcc/testsuite/gdc.test/runnable/structlit.d
index 9adcc7d..38af612 100644
--- a/gcc/testsuite/gdc.test/runnable/structlit.d
+++ b/gcc/testsuite/gdc.test/runnable/structlit.d
@@ -1295,7 +1295,7 @@ struct Z11256c(Ranges...)
struct F11256(alias pred)
{
- this(int[] = null) { }
+ this(int[]) { }
}
Z!Ranges z11256(alias Z, Ranges...)(Ranges ranges)
@@ -1305,9 +1305,9 @@ Z!Ranges z11256(alias Z, Ranges...)(Ranges ranges)
void test11256()
{
- z11256!Z11256a(S11256.init, F11256!(gv => true)());
- z11256!Z11256b(S11256.init, F11256!(gv => true)());
- z11256!Z11256c(S11256.init, F11256!(gv => true)());
+ z11256!Z11256a(S11256.init, F11256!(gv => true)(null));
+ z11256!Z11256b(S11256.init, F11256!(gv => true)(null));
+ z11256!Z11256c(S11256.init, F11256!(gv => true)(null));
}
/********************************************/
diff --git a/gcc/testsuite/gdc.test/runnable/template3.d b/gcc/testsuite/gdc.test/runnable/template3.d
index 0c03ca3..e331367 100644
--- a/gcc/testsuite/gdc.test/runnable/template3.d
+++ b/gcc/testsuite/gdc.test/runnable/template3.d
@@ -1,3 +1,18 @@
+/*
+TEST_OUTPUT:
+---
+instantiating...
+instantiating...
+last instantiation!!!
+---
+
+RUN_OUTPUT:
+---
+1
+3
+Success
+---
+*/
import core.stdc.stdio;
diff --git a/gcc/testsuite/gdc.test/runnable/template4.d b/gcc/testsuite/gdc.test/runnable/template4.d
index 77d6254..0381d89 100644
--- a/gcc/testsuite/gdc.test/runnable/template4.d
+++ b/gcc/testsuite/gdc.test/runnable/template4.d
@@ -1,4 +1,15 @@
-// RUNNABLE_PHOBOS_TEST
+/* RUNNABLE_PHOBOS_TEST
+TEST_OUTPUT:
+---
+This actually gets evaluated!
+()
+(bool)
+(bool, short)
+(bool, short, int)
+Alias Test instantiated
+Alias Test instantiated
+---
+*/
import std.stdio;
import core.stdc.stdio;
@@ -1074,22 +1085,27 @@ struct Foo7469d(T...) { }
struct Foo7469e(int a, T...) { }
struct Foo7469f(T, int k=1) { }
struct Foo7469g(T, int k=1) { }
+struct Foo7469h(uint x) { }
+
+import core.demangle : demangleType;
void test7469()
{
- static assert(Foo7469a!(3 ) .mangleof[$-28 .. $] == "17__T8Foo7469aVii3Z8Foo7469a");
- static assert(Foo7469a!(3u) .mangleof[$-28 .. $] == "17__T8Foo7469aVii3Z8Foo7469a");
- static assert(Foo7469b!(3u) .mangleof[$-28 .. $] == "17__T8Foo7469bVii3Z8Foo7469b");
- static assert(Foo7469b!(3 ) .mangleof[$-28 .. $] == "17__T8Foo7469bVii3Z8Foo7469b");
- static assert(Foo7469c!(3 ) .mangleof[$-28 .. $] == "17__T8Foo7469cVii3Z8Foo7469c");
- static assert(Foo7469c!(3u) .mangleof[$-28 .. $] == "17__T8Foo7469cVki3Z8Foo7469c");
- static assert(Foo7469d!(3 ) .mangleof[$-28 .. $] == "17__T8Foo7469dVii3Z8Foo7469d");
- static assert(Foo7469d!(3u) .mangleof[$-28 .. $] == "17__T8Foo7469dVki3Z8Foo7469d");
- static assert(Foo7469e!(3u, 5u).mangleof[$-32 .. $] == "21__T8Foo7469eVii3Vki5Z8Foo7469e");
- static assert(Foo7469f!(int, 1).mangleof[$-30 .. $] == "19__T8Foo7469fTiVii1Z8Foo7469f");
- static assert(Foo7469f!(int) .mangleof[$-30 .. $] == "19__T8Foo7469fTiVii1Z8Foo7469f");
- static assert(Foo7469g!(int) .mangleof[$-30 .. $] == "19__T8Foo7469gTiVii1Z8Foo7469g");
- static assert(Foo7469g!(int, 1).mangleof[$-30 .. $] == "19__T8Foo7469gTiVii1Z8Foo7469g");
+ static assert(demangleType(Foo7469a!(3 ) .mangleof) == "template4.Foo7469a!(3).Foo7469a");
+ static assert(demangleType(Foo7469a!(3u) .mangleof) == "template4.Foo7469a!(3).Foo7469a");
+ static assert(demangleType(Foo7469b!(3u) .mangleof) == "template4.Foo7469b!(3).Foo7469b");
+ static assert(demangleType(Foo7469b!(3 ) .mangleof) == "template4.Foo7469b!(3).Foo7469b");
+ static assert(demangleType(Foo7469c!(3 ) .mangleof) == "template4.Foo7469c!(3).Foo7469c");
+ static assert(demangleType(Foo7469c!(3u) .mangleof) == "template4.Foo7469c!(3u).Foo7469c");
+ static assert(demangleType(Foo7469d!(3 ) .mangleof) == "template4.Foo7469d!(3).Foo7469d");
+ static assert(demangleType(Foo7469d!(3u) .mangleof) == "template4.Foo7469d!(3u).Foo7469d");
+ static assert(demangleType(Foo7469e!(3u, 5u).mangleof) == "template4.Foo7469e!(3, 5u).Foo7469e");
+ static assert(demangleType(Foo7469f!(int, 1).mangleof) == "template4.Foo7469f!(int, 1).Foo7469f");
+ static assert(demangleType(Foo7469f!(int) .mangleof) == "template4.Foo7469f!(int, 1).Foo7469f");
+ static assert(demangleType(Foo7469g!(int) .mangleof) == "template4.Foo7469g!(int, 1).Foo7469g");
+ static assert(demangleType(Foo7469g!(int, 1).mangleof) == "template4.Foo7469g!(int, 1).Foo7469g");
+ static assert(demangleType(Foo7469h!(3 ) .mangleof) == "template4.Foo7469h!(3u).Foo7469h");
+ static assert(demangleType(Foo7469h!(3u) .mangleof) == "template4.Foo7469h!(3u).Foo7469h");
}
/******************************************/
diff --git a/gcc/testsuite/gdc.test/runnable/template8.d b/gcc/testsuite/gdc.test/runnable/template8.d
index ce0edf1..3f70687 100644
--- a/gcc/testsuite/gdc.test/runnable/template8.d
+++ b/gcc/testsuite/gdc.test/runnable/template8.d
@@ -36,17 +36,17 @@ private string CreateAccessors(
static assert(len == 1);
// getter
result ~= "bool " ~ name ~ "(){ return "
- "("~store~" & "~toStringSfx(maskAllElse)~") != 0;}";
+ ~ "("~store~" & "~toStringSfx(maskAllElse)~") != 0;}";
// setter
result ~= "void " ~ name ~ "(bool v){"
- "if (v) "~store~" |= "~toStringSfx(maskAllElse)~";"
- "else "~store~" &= "~toStringSfx(maskMyself)~";}";
+ ~ "if (v) "~store~" |= "~toStringSfx(maskAllElse)~";"
+ ~ "else "~store~" &= "~toStringSfx(maskMyself)~";}";
}
else
{
// getter
result ~= T.stringof ~ " " ~ name ~ "(){ auto result = "
- "("~store~" & "
+ ~ "("~store~" & "
~ toStringSfx(maskAllElse) ~ ") >>"
~ toStringSfx(offset) ~ ";";
static if (T.min < 0)
diff --git a/gcc/testsuite/gdc.test/runnable/template9.d b/gcc/testsuite/gdc.test/runnable/template9.d
index 4f18295..486eb67 100644
--- a/gcc/testsuite/gdc.test/runnable/template9.d
+++ b/gcc/testsuite/gdc.test/runnable/template9.d
@@ -1,5 +1,53 @@
-// RUNNABLE_PHOBOS_TEST
-// PERMUTE_ARGS:
+/* RUNNABLE_PHOBOS_TEST
+PERMUTE_ARGS:
+EXTRA_FILES: imports/testmangle.d
+TEST_OUTPUT:
+---
+func
+double
+All good 1
+All good 2
+All good 3
+_D7imports10testmangle12detectMangleFPSQBlQBg6DetectZQq
+_D7imports10testmangle__T10DetectTmplTiZQpFNaNbNiNfZv
+true
+false
+uint
+int[]
+int[]
+const(K5886)
+4 ; const(K5886)
+8 ; const(K5886)
+K5886
+immutable(K5886)
+4 ; K5886
+4 ; immutable(K5886)
+1 ; K5886
+2 ; const(K5886)
+3 ; immutable(K5886)
+8 ; K5886
+9 ; const(K5886)
+10 ; immutable(K5886)
+> U = int, N:$?:64=ulong = 3LU|32=uint = 3u$
+K=string, V=int
+K=char, V=string
+T = SA, E = int, dim = $?:64=5LU|32=5u$
+T = DA, E = int
+T = AA, K = string, V = int
+pure nothrow @nogc @safe void(int t)
+pure nothrow @nogc @safe void(int t)
+T = byte
+T = char
+---
+
+RUN_OUTPUT:
+---
+typeof(T)=double typeof(S)=int
+typeof(T)=double typeof(S)=int
+typeof(T)=float typeof(S)=int
+Success
+---
+*/
module breaker;
@@ -4465,6 +4513,7 @@ void test13807()
/******************************************/
// 14174
+import imports.testmangle;
struct Config14174(a, b) {}
@@ -4474,22 +4523,22 @@ alias defConfig14174 = Config14174!(N14174, N14174);
void accepter14174a(Config : Config14174!(T) = defConfig14174, T...)()
{
- static assert(accepter14174a.mangleof
- == "_D7breaker131__T14"~
+ static assert(equalDemangle(accepter14174a.mangleof,
+ "_D7breaker131__T14"~
"accepter14174a"~
"HTS7breaker51__T11Config14174TS7breaker6N14174TS7breaker6N14174Z11Config14174TS7breaker6N14174TS7breaker6N14174Z14"~
"accepter14174a"~
- "FZv");
+ "FZv"));
}
void accepter14174b(Config : Config14174!(T) = defConfig14174, T...)()
{
- static assert(accepter14174b.mangleof
- == "_D7breaker131__T14"~
+ static assert(equalDemangle(accepter14174b.mangleof,
+ "_D7breaker131__T14"~
"accepter14174b"~
"HTS7breaker51__T11Config14174TS7breaker6N14174TS7breaker6N14174Z11Config14174TS7breaker6N14174TS7breaker6N14174Z14"~
"accepter14174b"~
- "FZv");
+ "FZv"));
}
void test14174()
diff --git a/gcc/testsuite/gdc.test/runnable/test15.d b/gcc/testsuite/gdc.test/runnable/test15.d
index 234f50b..405171e 100644
--- a/gcc/testsuite/gdc.test/runnable/test15.d
+++ b/gcc/testsuite/gdc.test/runnable/test15.d
@@ -901,12 +901,12 @@ void test49()
void foo50(int[] f, ...)
{
- foreach(int i, TypeInfo ti; _arguments) { }
+ foreach(size_t i, TypeInfo ti; _arguments) { }
}
void bar50(out int[] f, ...)
{
- foreach(int i, TypeInfo ti; _arguments) { }
+ foreach(size_t i, TypeInfo ti; _arguments) { }
}
void test50()
diff --git a/gcc/testsuite/gdc.test/runnable/test17373.d b/gcc/testsuite/gdc.test/runnable/test17373.d
new file mode 100644
index 0000000..93753ba
--- /dev/null
+++ b/gcc/testsuite/gdc.test/runnable/test17373.d
@@ -0,0 +1,20 @@
+interface Foo { void visit (int); }
+interface Bar { void visit(double); }
+interface FooBar : Foo, Bar {}
+static assert(__traits(getOverloads, FooBar, "visit").length == 2);
+
+interface Fbar { void visit(char); void visit(double); }
+interface Triple : Foo, Bar, Fbar {}
+static assert(__traits(getOverloads, Triple, "visit").length == 3);
+
+interface InheritanceMadness : FooBar, Triple {}
+static assert(__traits(getOverloads, Triple, "visit").length == 3);
+
+interface Simple
+{
+ int square(int);
+ real square(real);
+}
+static assert(__traits(getOverloads, Simple, "square").length == 2);
+
+void main() {}
diff --git a/gcc/testsuite/gdc.test/runnable/test17878.d b/gcc/testsuite/gdc.test/runnable/test17878.d
new file mode 100644
index 0000000..77b5a52
--- /dev/null
+++ b/gcc/testsuite/gdc.test/runnable/test17878.d
@@ -0,0 +1,19 @@
+@__future int foo()
+{
+ return 0;
+}
+
+int bar()
+{
+ return 1;
+}
+
+@__future int c;
+
+
+void main()
+{
+ static assert(__traits(isFuture, foo));
+ static assert(!__traits(isFuture, bar));
+ static assert(__traits(isFuture, c));
+}
diff --git a/gcc/testsuite/gdc.test/runnable/test18322.d b/gcc/testsuite/gdc.test/runnable/test18322.d
new file mode 100644
index 0000000..97e2e97
--- /dev/null
+++ b/gcc/testsuite/gdc.test/runnable/test18322.d
@@ -0,0 +1,21 @@
+/*
+REQUIRED_ARGS: -Irunnable/imports
+COMPILED_IMPORTS: imports/test18322import.d
+PERMUTE_ARGS:
+*/
+import test18322import;
+void main(){
+ version(Windows)
+ auto sep = "\\";
+ else
+ auto sep = "/";
+
+ auto filename = "runnable" ~ sep ~ "test18322.d";
+
+ fun(filename);
+ mixin(`fun(filename ~ "-mixin-16");`);
+
+ #line 100 "poundlinefile.d"
+ fun("poundlinefile.d");
+ mixin(`fun("poundlinefile.d-mixin-101");`);
+}
diff --git a/gcc/testsuite/gdc.test/runnable/test22.d b/gcc/testsuite/gdc.test/runnable/test22.d
index bd04878..2aabb4d 100644
--- a/gcc/testsuite/gdc.test/runnable/test22.d
+++ b/gcc/testsuite/gdc.test/runnable/test22.d
@@ -202,7 +202,9 @@ class B9
{
A9 test1 = new A9(1, 2, 3);
A9 test2 = new A9(1, 2, 3, 4);
- int[3] arg; A9 test3 = new A9((arg[0]=1, arg[1]=2, arg[2]=3, arg));
+ int[3] arg;
+ arg[0]=1, arg[1]=2, arg[2]=3;
+ A9 test3 = new A9(arg);
}
}
diff --git a/gcc/testsuite/gdc.test/runnable/test34.d b/gcc/testsuite/gdc.test/runnable/test34.d
index 6e2b368..e38ab1c 100644
--- a/gcc/testsuite/gdc.test/runnable/test34.d
+++ b/gcc/testsuite/gdc.test/runnable/test34.d
@@ -1,4 +1,11 @@
// RUNNABLE_PHOBOS_TEST
+/*
+TEST_OUTPUT:
+---
+Object
+---
+*/
+
module test34;
import std.stdio;
diff --git a/gcc/testsuite/gdc.test/runnable/test42.d b/gcc/testsuite/gdc.test/runnable/test42.d
index 66b3c04..e887fae 100644
--- a/gcc/testsuite/gdc.test/runnable/test42.d
+++ b/gcc/testsuite/gdc.test/runnable/test42.d
@@ -1,8 +1,18 @@
-// RUNNABLE_PHOBOS_TEST
-// REQUIRED_ARGS:
+/* RUNNABLE_PHOBOS_TEST
+REQUIRED_ARGS:
+TEST_OUTPUT:
+---
+success
+myInt int
+myBool bool
+i
+s
+C6test42__T4T219TiZ1C
+C6test427test219FZ8__mixin11C
+---
+*/
module test42;
-
import std.stdio;
import core.stdc.stdio;
import std.string;
@@ -52,7 +62,7 @@ void test3()
{
auto i = mixin("__LINE__");
writefln("%d", i);
- assert(i == 53);
+ assert(i == 63);
}
/***************************************************/
@@ -1092,17 +1102,17 @@ void test71()
{
size_t s = Foo71!(
"helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-"helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-"helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-"helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-"helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-"helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-"helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-"helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-"helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-"helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-"helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
-"When dealing with complex template tuples, it's very easy to overflow the
+~ "helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+~ "helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+~ "helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+~ "helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+~ "helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+~ "helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+~ "helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+~ "helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+~ "helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+~ "helloabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+~ "When dealing with complex template tuples, it's very easy to overflow the
maximum symbol length allowed by OPTLINK. This is, simply put, a damn shame,
because it prevents otherwise completely legal code from compiling and linking
with DMDWin, whereas it works perfectly fine when using DMDNix or GDC.
@@ -1980,7 +1990,7 @@ struct Foobar;
int test124()
{ int result;
dchar[] aa;
- alias uint foo_t;
+ alias size_t foo_t;
foreach (foo_t i, dchar d; aa)
{
@@ -3507,7 +3517,7 @@ void test215()
enum assocarrayliteral = Q!( [1:2] ).q.stringof;
enum complex80 = Q!( 1+1.0i ).q.stringof;
//enum dottype = Q!( C.Object.toString ).q.stringof;
- enum halt = (assert(0), 0).stringof; // ICE w/ -release
+ enum halt = 0.stringof; // ICE w/ -release
//enum remove = Q!( [1:2].remove(1) ).q.stringof;
enum templat = Q!( Q ).q.stringof;
}
diff --git a/gcc/testsuite/gdc.test/runnable/test8.d b/gcc/testsuite/gdc.test/runnable/test8.d
index f8b800f..4927bbc 100644
--- a/gcc/testsuite/gdc.test/runnable/test8.d
+++ b/gcc/testsuite/gdc.test/runnable/test8.d
@@ -696,7 +696,7 @@ void test38()
printf("Count: %d\n", count);
assert(count == 1028);
}
- catch
+ catch(Throwable)
{
printf("Exception: %d\n", k);
assert(0);
diff --git a/gcc/testsuite/gdc.test/runnable/testaa.d b/gcc/testsuite/gdc.test/runnable/testaa.d
index 75e8172..34cc705 100644
--- a/gcc/testsuite/gdc.test/runnable/testaa.d
+++ b/gcc/testsuite/gdc.test/runnable/testaa.d
@@ -512,7 +512,7 @@ int foo17()
}catch(Error e){
assert(e);
return 0;
- }catch{
+ }catch(Throwable){
assert(0);
}
assert(0);
diff --git a/gcc/testsuite/gdc.test/runnable/testaa2.d b/gcc/testsuite/gdc.test/runnable/testaa2.d
index d925603..17de167 100644
--- a/gcc/testsuite/gdc.test/runnable/testaa2.d
+++ b/gcc/testsuite/gdc.test/runnable/testaa2.d
@@ -151,7 +151,7 @@ void test3825()
* it has no side effect. Then optimizer eliminate it completely, and
* whole expression succeed to run in runtime. */
int n = 0;
- assert(thrown(aax[(n=aax[1], 0)] = 0)); // accessing aax[1] in key part, throws OK
+ assert(thrown(aax[((){ n=aax[1]; return 0;}())] = 0)); // accessing aax[1] in key part, throws OK
// This works as expected.
int[int][int] aaa;
diff --git a/gcc/testsuite/gdc.test/runnable/testassign.d b/gcc/testsuite/gdc.test/runnable/testassign.d
index f20da4a..b000967 100644
--- a/gcc/testsuite/gdc.test/runnable/testassign.d
+++ b/gcc/testsuite/gdc.test/runnable/testassign.d
@@ -1,3 +1,23 @@
+/*
+TEST_OUTPUT:
+---
+\ S1 S2a S2b S3a S3b S4a S4b
+- true true true true true true true
+Xa true true true true true true true
+Xb true true true true true true true
+Xc true true true true true true true
+Xd true true true true true true true
+Xe true true true true true true true
+Xf true true true true true true true
+Xg true true true true true true true
+---
+
+RUN_OUTPUT:
+---
+Success
+---
+*/
+
import core.stdc.stdio;
template TypeTuple(T...){ alias T TypeTuple; }
diff --git a/gcc/testsuite/gdc.test/runnable/testconst.d b/gcc/testsuite/gdc.test/runnable/testconst.d
index 2da39a2..7ec4245 100644
--- a/gcc/testsuite/gdc.test/runnable/testconst.d
+++ b/gcc/testsuite/gdc.test/runnable/testconst.d
@@ -1,3 +1,45 @@
+/*
+TEST_OUTPUT:
+---
+const(immutable(char)*)
+inout(immutable(char)*)
+inout(const(char)*)
+inout(const(char))
+shared(inout(char))
+shared(inout(char))
+immutable(char)
+immutable(char)
+inout(const(char))
+inout(const(char))
+shared(const(char))
+shared(const(char))
+inout(char*****)
+inout(char****)*
+const(char*****)
+const(char****)*
+immutable(char*****)
+immutable(char****)*
+shared(char*****)
+shared(char****)*
+const(shared(char****)*)
+shared(const(char*****))
+shared(char*****)
+immutable(char*****)
+inout(shared(char****)*)
+inout(shared(char**)***)
+shared(inout(char**))
+immutable(string)
+const(char[])
+char[]
+shared(foo85)
+const(char[26])
+const(char[26])
+immutable(char[26])
+immutable(char[26])
+string
+int[3]
+---
+*/
import core.stdc.stdio;
@@ -84,10 +126,11 @@ void foo8(const char[] s, const C8 c, const int x)
void test8()
{
+ import core.demangle : demangle;
auto p = &foo8;
showf(p.mangleof);
assert(typeof(p).mangleof == "PFxAaxC9testconst2C8xiZv");
- assert(p.mangleof == "_D9testconst5test8FZ1pPFxAaxC9testconst2C8xiZv");
+ assert(demangle(p.mangleof) == "void function(const(char[]), const(testconst.C8), const(int))* testconst.test8().p");
}
/************************************/
diff --git a/gcc/testsuite/gdc.test/runnable/testcontracts.d b/gcc/testsuite/gdc.test/runnable/testcontracts.d
index 9a2639d..f99a10a 100644
--- a/gcc/testsuite/gdc.test/runnable/testcontracts.d
+++ b/gcc/testsuite/gdc.test/runnable/testcontracts.d
@@ -422,6 +422,56 @@ void test6417()
}
/*******************************************/
+// 6549
+
+class C6549
+{
+ static int ocount = 0;
+ static int icount = 0;
+
+ abstract int foo(int)
+ in { ++icount; }
+ out { ++ocount; }
+}
+
+class CD6549 : C6549
+{
+ override int foo(int)
+ in { assert(false); }
+ do { return 10; }
+}
+
+abstract class D6549
+{
+ static int icount = 0;
+ static int ocount = 0;
+
+ int foo(int)
+ in { ++icount; }
+ out { ++ocount; }
+}
+
+class DD6549 : D6549
+{
+ override int foo(int)
+ in { assert(false); }
+ do { return 10; }
+}
+
+void test6549()
+{
+ auto c = new CD6549;
+ c.foo(10);
+ assert(C6549.icount == 1);
+ assert(C6549.ocount == 1);
+
+ auto d = new DD6549;
+ d.foo(10);
+ assert(D6549.icount == 1);
+ assert(D6549.ocount == 1);
+}
+
+/*******************************************/
// 7218
void test7218()
@@ -1030,6 +1080,81 @@ void test14779()
/*******************************************/
+//******************************************/
+// DIP 1009
+
+int dip1009_1(int x)
+ in (x > 0, "x must be positive!")
+ out (r; r < 0, "r must be negative!")
+ in (true, "cover trailing comma case",)
+ out (; true, "cover trailing comma case",)
+{
+ return -x;
+}
+
+int dip1009_2(int x)
+ in (x > 0)
+ out (r; r < 0)
+{
+ return -x;
+}
+
+int dip1009_3(int x)
+in (x > 0,)
+out (r; r < 0,)
+do
+{
+ return -x;
+}
+
+void dip1009_4(int x)
+ in (x > 0)
+ out (; x > 1)
+{
+ x += 1;
+}
+
+interface DIP1009_5
+{
+ void dip1009_5(int x)
+ in (x > 0)
+ out (; x > 1);
+}
+
+int dip1009_6(int x, int y)
+ in (x > 0)
+ out (r; r > 1)
+ out (; x > 0)
+ in (y > 0)
+ in (x + y > 1)
+ out (r; r > 1)
+{
+ return x+y;
+}
+
+int dip1009_7(int x)
+ in (x > 0)
+ in { assert(x > 1); }
+ out { assert(x > 2); }
+ out (; x > 3)
+ out (r; r > 3)
+{
+ x += 2;
+ return x;
+}
+
+class DIP1009_8
+{
+ private int x = 4;
+ invariant (x > 0, "x must stay positive");
+ invariant (x > 1, "x must be greater than one",);
+ invariant (x > 2);
+ invariant (x > 3,);
+ void foo(){ x = 5; }
+}
+
+/*******************************************/
+
int main()
{
test1();
@@ -1043,6 +1168,7 @@ int main()
test9();
test4785();
test6417();
+ test6549();
test7218();
test7517();
test8073();
@@ -1051,6 +1177,13 @@ int main()
test15524();
test15524a();
test14779();
+ dip1009_1(1);
+ dip1009_2(1);
+ dip1009_3(1);
+ dip1009_4(1);
+ dip1009_6(1, 1);
+ dip1009_7(3);
+ new DIP1009_8().foo();
printf("Success\n");
return 0;
diff --git a/gcc/testsuite/gdc.test/runnable/testdstress.d b/gcc/testsuite/gdc.test/runnable/testdstress.d
index f06f939..a416b8a 100644
--- a/gcc/testsuite/gdc.test/runnable/testdstress.d
+++ b/gcc/testsuite/gdc.test/runnable/testdstress.d
@@ -1,7 +1,7 @@
// RUNNABLE_PHOBOS_TEST
// PERMUTE_ARGS:
-module dstress.run.module_01;
+module run.module_01;
import core.memory;
import core.exception;
@@ -171,9 +171,9 @@ int i;
void test7()
{
- assert(dstress.run.module_01.i==0);
- dstress.run.module_01.i++;
- assert(dstress.run.module_01.i==1);
+ assert(run.module_01.i==0);
+ run.module_01.i++;
+ assert(run.module_01.i==1);
}
/* ================================ */
@@ -414,7 +414,7 @@ void test19()
{
try{
throw new Alias19();
- }catch{
+ }catch(Throwable){
return;
}
assert(0);
@@ -484,7 +484,7 @@ void test23()
{
try{
foo23();
- }catch{
+ }catch(Throwable){
}
assert(status23==-1);
}
@@ -515,7 +515,7 @@ void test24()
assert(status24==0);
try{
check24();
- }catch{
+ }catch(Throwable){
assert(status24==1);
status24-=5;
}
@@ -700,7 +700,7 @@ void test32()
assert(!(ti is null));
writefln("%s %d %d", ti.toString(), ti.tsize, (MyUnion32*).sizeof);
assert(ti.tsize==(MyUnion32*).sizeof);
- assert(ti.toString()=="dstress.run.module_01.MyUnion32*");
+ assert(ti.toString()=="run.module_01.MyUnion32*");
}
/* ================================ */
@@ -831,7 +831,7 @@ void test40()
try{
assert(!checked40);
GrandChild40 gc = new GrandChild40();
- }catch{
+ }catch(Throwable){
assert(checked40);
return;
}
diff --git a/gcc/testsuite/gdc.test/runnable/testenum.d b/gcc/testsuite/gdc.test/runnable/testenum.d
index 9ecf97a..0532744 100644
--- a/gcc/testsuite/gdc.test/runnable/testenum.d
+++ b/gcc/testsuite/gdc.test/runnable/testenum.d
@@ -1,4 +1,10 @@
-// PERMUTE_ARGS:
+/*
+PERMUTE_ARGS:
+RUN_OUTPUT:
+---
+Success
+---
+*/
extern(C) int printf(const char*, ...);
@@ -189,7 +195,6 @@ void test2407()
b = ES.b,
c = ES.c,
}
- static assert(EES.init == ES.init);
static assert(EES.init == S(1));
static assert(!__traits(compiles, EES.min));
static assert(!__traits(compiles, EES.max));
diff --git a/gcc/testsuite/gdc.test/runnable/testmodule.d b/gcc/testsuite/gdc.test/runnable/testmodule.d
index 5d81588..45da7d1 100644
--- a/gcc/testsuite/gdc.test/runnable/testmodule.d
+++ b/gcc/testsuite/gdc.test/runnable/testmodule.d
@@ -9,13 +9,13 @@
// @uri@ news:ct428n$2qoe$1@digitaldaemon.com
// @url@ nntp://news.digitalmars.com/D.gnu/983
-module dstress.run.unicode_06_哪里;
+module run.unicode_06_哪里;
int 哪里(int ö){
return ö+2;
}
int main(){
- assert(dstress.run.unicode_06_哪里.哪里(2)==4);
+ assert(run.unicode_06_哪里.哪里(2)==4);
return 0;
}
diff --git a/gcc/testsuite/gdc.test/runnable/testrightthis.d b/gcc/testsuite/gdc.test/runnable/testrightthis.d
index 1185132..32879ce 100644
--- a/gcc/testsuite/gdc.test/runnable/testrightthis.d
+++ b/gcc/testsuite/gdc.test/runnable/testrightthis.d
@@ -1,5 +1,11 @@
-// runnable/traits.d 9091,8972,8971,7027
-// runnable/test4.d test6()
+/*
+runnable/traits.d 9091,8972,8971,7027
+runnable/test4.d test6()
+RUN_OUTPUT:
+---
+Success
+---
+*/
extern(C) int printf(const char*, ...);
@@ -578,7 +584,6 @@ class Bar11245
{
void func()
{
- pragma(msg, "====");
float[Vec11245.f.length] newVal;
}
}
diff --git a/gcc/testsuite/gdc.test/runnable/testscope2.d b/gcc/testsuite/gdc.test/runnable/testscope2.d
index 6c96fb5..85282c2 100644
--- a/gcc/testsuite/gdc.test/runnable/testscope2.d
+++ b/gcc/testsuite/gdc.test/runnable/testscope2.d
@@ -1,5 +1,14 @@
// RUNNABLE_PHOBOS_TEST
// REQUIRED_ARGS: -dip25
+/*
+TEST_OUTPUT:
+---
+foo1 ulong function(return ref int* delegate() return p) ref return
+foo2 int function(return ref int delegate() p) ref
+foo3 int function(return ref inout(int*) p) ref
+foo4 int function(return ref inout(int*) p) ref
+---
+*/
import core.stdc.stdio;
diff --git a/gcc/testsuite/gdc.test/runnable/traits.d b/gcc/testsuite/gdc.test/runnable/traits.d
index 547976f..9d14ecd 100644
--- a/gcc/testsuite/gdc.test/runnable/traits.d
+++ b/gcc/testsuite/gdc.test/runnable/traits.d
@@ -1,5 +1,20 @@
// RUNNABLE_PHOBOS_TEST
-// PERMUTE_ARGS:
+/*
+PERMUTE_ARGS:
+EXTRA_FILES: imports/a9546.d
+
+Windows linker may write something like:
+---
+Creating library {{RESULTS_DIR}}/runnable/traits_0.lib and object {{RESULTS_DIR}}/runnable/traits_0.exp
+---
+
+TRANSFORM_OUTPUT: remove_lines("Creating library")
+TEST_OUTPUT:
+---
+__lambda1
+---
+*/
+
module traits;
import std.stdio;
@@ -12,6 +27,7 @@ class AC2 { abstract void foo(); }
class AC3 : AC2 { }
final class FC { void foo() { } }
enum E { EMEM }
+struct D1 { @disable void true_(); void false_(){} }
/********************************************************/
@@ -623,7 +639,7 @@ struct Test24
private void test24(int, int){}
}
-static assert(__traits(getProtection, __traits(getOverloads, Test24, "test24")[1]) == "private");
+static assert(__traits(getVisibility, __traits(getOverloads, Test24, "test24")[1]) == "private");
/********************************************************/
// 1369
@@ -878,7 +894,7 @@ protected struct TestProt3 {}
public struct TestProt4 {}
export struct TestProt5 {}
-void getProtection()
+void getVisibility()
{
class Test
{
@@ -891,52 +907,52 @@ void getProtection()
Test t;
// TOKvar and VarDeclaration
- static assert(__traits(getProtection, Test.va) == "private");
- static assert(__traits(getProtection, Test.vb) == "package");
- static assert(__traits(getProtection, Test.vc) == "protected");
- static assert(__traits(getProtection, Test.vd) == "public");
- static assert(__traits(getProtection, Test.ve) == "export");
+ static assert(__traits(getVisibility, Test.va) == "private");
+ static assert(__traits(getVisibility, Test.vb) == "package");
+ static assert(__traits(getVisibility, Test.vc) == "protected");
+ static assert(__traits(getVisibility, Test.vd) == "public");
+ static assert(__traits(getVisibility, Test.ve) == "export");
// TOKdotvar and VarDeclaration
- static assert(__traits(getProtection, t.va) == "private");
- static assert(__traits(getProtection, t.vb) == "package");
- static assert(__traits(getProtection, t.vc) == "protected");
- static assert(__traits(getProtection, t.vd) == "public");
- static assert(__traits(getProtection, t.ve) == "export");
+ static assert(__traits(getVisibility, t.va) == "private");
+ static assert(__traits(getVisibility, t.vb) == "package");
+ static assert(__traits(getVisibility, t.vc) == "protected");
+ static assert(__traits(getVisibility, t.vd) == "public");
+ static assert(__traits(getVisibility, t.ve) == "export");
// TOKvar and FuncDeclaration
- static assert(__traits(getProtection, Test.fa) == "private");
- static assert(__traits(getProtection, Test.fb) == "package");
- static assert(__traits(getProtection, Test.fc) == "protected");
- static assert(__traits(getProtection, Test.fd) == "public");
- static assert(__traits(getProtection, Test.fe) == "export");
+ static assert(__traits(getVisibility, Test.fa) == "private");
+ static assert(__traits(getVisibility, Test.fb) == "package");
+ static assert(__traits(getVisibility, Test.fc) == "protected");
+ static assert(__traits(getVisibility, Test.fd) == "public");
+ static assert(__traits(getVisibility, Test.fe) == "export");
// TOKdotvar and FuncDeclaration
- static assert(__traits(getProtection, t.fa) == "private");
- static assert(__traits(getProtection, t.fb) == "package");
- static assert(__traits(getProtection, t.fc) == "protected");
- static assert(__traits(getProtection, t.fd) == "public");
- static assert(__traits(getProtection, t.fe) == "export");
+ static assert(__traits(getVisibility, t.fa) == "private");
+ static assert(__traits(getVisibility, t.fb) == "package");
+ static assert(__traits(getVisibility, t.fc) == "protected");
+ static assert(__traits(getVisibility, t.fd) == "public");
+ static assert(__traits(getVisibility, t.fe) == "export");
// TOKtype
- static assert(__traits(getProtection, TestProt1) == "private");
- static assert(__traits(getProtection, TestProt2) == "package");
- static assert(__traits(getProtection, TestProt3) == "protected");
- static assert(__traits(getProtection, TestProt4) == "public");
- static assert(__traits(getProtection, TestProt5) == "export");
+ static assert(__traits(getVisibility, TestProt1) == "private");
+ static assert(__traits(getVisibility, TestProt2) == "package");
+ static assert(__traits(getVisibility, TestProt3) == "protected");
+ static assert(__traits(getVisibility, TestProt4) == "public");
+ static assert(__traits(getVisibility, TestProt5) == "export");
// This specific pattern is important to ensure it always works
// through reflection, however that becomes implemented
- static assert(__traits(getProtection, __traits(getMember, t, "va")) == "private");
- static assert(__traits(getProtection, __traits(getMember, t, "vb")) == "package");
- static assert(__traits(getProtection, __traits(getMember, t, "vc")) == "protected");
- static assert(__traits(getProtection, __traits(getMember, t, "vd")) == "public");
- static assert(__traits(getProtection, __traits(getMember, t, "ve")) == "export");
- static assert(__traits(getProtection, __traits(getMember, t, "fa")) == "private");
- static assert(__traits(getProtection, __traits(getMember, t, "fb")) == "package");
- static assert(__traits(getProtection, __traits(getMember, t, "fc")) == "protected");
- static assert(__traits(getProtection, __traits(getMember, t, "fd")) == "public");
- static assert(__traits(getProtection, __traits(getMember, t, "fe")) == "export");
+ static assert(__traits(getVisibility, __traits(getMember, t, "va")) == "private");
+ static assert(__traits(getVisibility, __traits(getMember, t, "vb")) == "package");
+ static assert(__traits(getVisibility, __traits(getMember, t, "vc")) == "protected");
+ static assert(__traits(getVisibility, __traits(getMember, t, "vd")) == "public");
+ static assert(__traits(getVisibility, __traits(getMember, t, "ve")) == "export");
+ static assert(__traits(getVisibility, __traits(getMember, t, "fa")) == "private");
+ static assert(__traits(getVisibility, __traits(getMember, t, "fb")) == "package");
+ static assert(__traits(getVisibility, __traits(getMember, t, "fc")) == "protected");
+ static assert(__traits(getVisibility, __traits(getMember, t, "fd")) == "public");
+ static assert(__traits(getVisibility, __traits(getMember, t, "fe")) == "export");
}
/********************************************************/
@@ -947,47 +963,47 @@ void test9546()
import imports.a9546 : S;
S s;
- static assert(__traits(getProtection, s.privA) == "private");
- static assert(__traits(getProtection, s.protA) == "protected");
- static assert(__traits(getProtection, s.packA) == "package");
- static assert(__traits(getProtection, S.privA) == "private");
- static assert(__traits(getProtection, S.protA) == "protected");
- static assert(__traits(getProtection, S.packA) == "package");
-
- static assert(__traits(getProtection, mixin("s.privA")) == "private");
- static assert(__traits(getProtection, mixin("s.protA")) == "protected");
- static assert(__traits(getProtection, mixin("s.packA")) == "package");
- static assert(__traits(getProtection, mixin("S.privA")) == "private");
- static assert(__traits(getProtection, mixin("S.protA")) == "protected");
- static assert(__traits(getProtection, mixin("S.packA")) == "package");
-
- static assert(__traits(getProtection, __traits(getMember, s, "privA")) == "private");
- static assert(__traits(getProtection, __traits(getMember, s, "protA")) == "protected");
- static assert(__traits(getProtection, __traits(getMember, s, "packA")) == "package");
- static assert(__traits(getProtection, __traits(getMember, S, "privA")) == "private");
- static assert(__traits(getProtection, __traits(getMember, S, "protA")) == "protected");
- static assert(__traits(getProtection, __traits(getMember, S, "packA")) == "package");
-
- static assert(__traits(getProtection, s.privF) == "private");
- static assert(__traits(getProtection, s.protF) == "protected");
- static assert(__traits(getProtection, s.packF) == "package");
- static assert(__traits(getProtection, S.privF) == "private");
- static assert(__traits(getProtection, S.protF) == "protected");
- static assert(__traits(getProtection, S.packF) == "package");
-
- static assert(__traits(getProtection, mixin("s.privF")) == "private");
- static assert(__traits(getProtection, mixin("s.protF")) == "protected");
- static assert(__traits(getProtection, mixin("s.packF")) == "package");
- static assert(__traits(getProtection, mixin("S.privF")) == "private");
- static assert(__traits(getProtection, mixin("S.protF")) == "protected");
- static assert(__traits(getProtection, mixin("S.packF")) == "package");
-
- static assert(__traits(getProtection, __traits(getMember, s, "privF")) == "private");
- static assert(__traits(getProtection, __traits(getMember, s, "protF")) == "protected");
- static assert(__traits(getProtection, __traits(getMember, s, "packF")) == "package");
- static assert(__traits(getProtection, __traits(getMember, S, "privF")) == "private");
- static assert(__traits(getProtection, __traits(getMember, S, "protF")) == "protected");
- static assert(__traits(getProtection, __traits(getMember, S, "packF")) == "package");
+ static assert(__traits(getVisibility, s.privA) == "private");
+ static assert(__traits(getVisibility, s.protA) == "protected");
+ static assert(__traits(getVisibility, s.packA) == "package");
+ static assert(__traits(getVisibility, S.privA) == "private");
+ static assert(__traits(getVisibility, S.protA) == "protected");
+ static assert(__traits(getVisibility, S.packA) == "package");
+
+ static assert(__traits(getVisibility, mixin("s.privA")) == "private");
+ static assert(__traits(getVisibility, mixin("s.protA")) == "protected");
+ static assert(__traits(getVisibility, mixin("s.packA")) == "package");
+ static assert(__traits(getVisibility, mixin("S.privA")) == "private");
+ static assert(__traits(getVisibility, mixin("S.protA")) == "protected");
+ static assert(__traits(getVisibility, mixin("S.packA")) == "package");
+
+ static assert(__traits(getVisibility, __traits(getMember, s, "privA")) == "private");
+ static assert(__traits(getVisibility, __traits(getMember, s, "protA")) == "protected");
+ static assert(__traits(getVisibility, __traits(getMember, s, "packA")) == "package");
+ static assert(__traits(getVisibility, __traits(getMember, S, "privA")) == "private");
+ static assert(__traits(getVisibility, __traits(getMember, S, "protA")) == "protected");
+ static assert(__traits(getVisibility, __traits(getMember, S, "packA")) == "package");
+
+ static assert(__traits(getVisibility, s.privF) == "private");
+ static assert(__traits(getVisibility, s.protF) == "protected");
+ static assert(__traits(getVisibility, s.packF) == "package");
+ static assert(__traits(getVisibility, S.privF) == "private");
+ static assert(__traits(getVisibility, S.protF) == "protected");
+ static assert(__traits(getVisibility, S.packF) == "package");
+
+ static assert(__traits(getVisibility, mixin("s.privF")) == "private");
+ static assert(__traits(getVisibility, mixin("s.protF")) == "protected");
+ static assert(__traits(getVisibility, mixin("s.packF")) == "package");
+ static assert(__traits(getVisibility, mixin("S.privF")) == "private");
+ static assert(__traits(getVisibility, mixin("S.protF")) == "protected");
+ static assert(__traits(getVisibility, mixin("S.packF")) == "package");
+
+ static assert(__traits(getVisibility, __traits(getMember, s, "privF")) == "private");
+ static assert(__traits(getVisibility, __traits(getMember, s, "protF")) == "protected");
+ static assert(__traits(getVisibility, __traits(getMember, s, "packF")) == "package");
+ static assert(__traits(getVisibility, __traits(getMember, S, "privF")) == "private");
+ static assert(__traits(getVisibility, __traits(getMember, S, "protF")) == "protected");
+ static assert(__traits(getVisibility, __traits(getMember, S, "packF")) == "package");
}
/********************************************************/
@@ -1548,6 +1564,28 @@ void async(ARGS...)(ARGS)
alias test17495 = async!(int, int);
/********************************************************/
+// 15094
+
+void test15094()
+{
+ static struct Foo { int i; }
+ static struct Bar { Foo foo; }
+
+ Bar bar;
+ auto n = __traits(getMember, bar.foo, "i");
+ assert(n == bar.foo.i);
+}
+
+/********************************************************/
+
+void testIsDisabled()
+{
+ static assert(__traits(isDisabled, D1.true_));
+ static assert(!__traits(isDisabled, D1.false_));
+ static assert(!__traits(isDisabled, D1));
+}
+
+/********************************************************/
// https://issues.dlang.org/show_bug.cgi?id=10100
enum E10100
@@ -1603,6 +1641,7 @@ int main()
test_getFunctionAttributes();
test_isOverrideFunction();
test12237();
+ test15094();
writeln("Success");
return 0;
diff --git a/gcc/testsuite/gdc.test/runnable/traits_child.d b/gcc/testsuite/gdc.test/runnable/traits_child.d
new file mode 100644
index 0000000..056b8f1
--- /dev/null
+++ b/gcc/testsuite/gdc.test/runnable/traits_child.d
@@ -0,0 +1,122 @@
+struct A
+{
+ ulong i;
+ void foo(ulong a)
+ {
+ i = a;
+ }
+
+ void foo(string s)
+ {
+ i = s.length;
+ }
+
+ void bar(T)(T a)
+ {
+ i = a;
+ }
+
+ void bar(T : string)(T s)
+ {
+ i = s.length;
+ }
+}
+
+alias ai = A.i;
+alias afoo = A.foo;
+alias abar = A.bar;
+alias abar_ulong = A.bar!ulong;
+alias abar_string = A.bar!string;
+
+struct B
+{
+ A a;
+}
+
+alias ba = B.a;
+
+template T(alias x)
+{
+ void set(int n)
+ {
+ x = n;
+ }
+}
+
+mixin template M(alias x)
+{
+ void set(int n)
+ {
+ x = n;
+ }
+}
+
+struct C
+{
+ int i;
+ alias t = T!i;
+ mixin M!i m;
+}
+
+alias ct = C.t;
+alias ctset = C.t.set;
+alias cm = C.m;
+alias cmset = C.m.set;
+
+
+// adapted from http://thecybershadow.net/d/dconf2017/#/21
+struct S { string a, b, c; }
+
+static string printField(alias field)()
+{
+ S s = { a: "aa", b: "bb", c: "cc" };
+ return __traits(child, s, field);
+}
+
+void main()
+{
+ auto f = printField!(S.b)();
+ assert(f == "bb");
+
+ A a;
+ __traits(child, a, ai) = 3;
+ assert(a.i == 3);
+ assert(__traits(child, a, ai) == 3);
+ __traits(child, a, afoo)(2);
+ assert(a.i == 2);
+ __traits(child, a, afoo)("hello");
+ assert(a.i == 5);
+ __traits(child, a, abar)(6);
+ assert(a.i == 6);
+ __traits(child, a, abar_ulong)(7);
+ assert(a.i == 7);
+ __traits(child, a, abar_string)("hi");
+ assert(a.i == 2);
+
+ __traits(child, a, A.i) = 7;
+ assert(a.i == 7);
+ __traits(child, a, A.bar)(3);
+ assert(a.i == 3);
+ __traits(child, a, A.bar!ulong)(4);
+ assert(a.i == 4);
+ __traits(child, a, __traits(getMember, A, "i")) = 5;
+ assert(a.i == 5);
+ __traits(child, a, __traits(getOverloads, A, "bar", true)[1])("hi!");
+ assert(a.i == 3);
+
+ B b;
+ __traits(child, b.a, ai) = 2;
+ assert(b.a.i == 2);
+ __traits(child, __traits(child, b, ba), ai) = 3;
+ assert(b.a.i == 3);
+
+ C c;
+ __traits(child, c, ct).set(3);
+ assert(c.i == 3);
+ __traits(child, c, ctset)(4);
+ assert(c.i == 4);
+ __traits(child, c, cm).set(5);
+ assert(c.i == 5);
+ __traits(child, c, cmset)(6);
+ assert(c.i == 6);
+}
diff --git a/gcc/testsuite/gdc.test/runnable/uda.d b/gcc/testsuite/gdc.test/runnable/uda.d
index c1782c9..a01a5ca 100644
--- a/gcc/testsuite/gdc.test/runnable/uda.d
+++ b/gcc/testsuite/gdc.test/runnable/uda.d
@@ -1,3 +1,38 @@
+/*
+EXTRA_FILES: imports/a9741.d
+TEST_OUTPUT:
+---
+tuple(3, 4, 7, (SSS))
+tuple(3, 4, 7, (SSS))
+7
+SSS
+tuple("hello")
+tuple('c')
+tuple((FFF))
+tuple(10)
+tuple(20)
+tuple(30)
+tuple((Test6))
+tuple(Test7(3, "foo"))
+tuple((Test8!"foo"))
+tuple((Test9!"foo"))
+tuple(Test10(3))
+tuple(Test11(3))
+tuple(10)
+tuple(20)
+tuple()
+tuple(40)
+B9741
+tuple((A9741))
+tuple(1)
+tuple(2)
+---
+
+RUN_OUTPUT:
+---
+Success
+---
+*/
import core.stdc.stdio;
@@ -467,6 +502,193 @@ static assert(__traits(getAttributes, FileData11844.member)[0](new FileData11844
/************************************************/
+template AliasSeq(T...)
+{
+ alias AliasSeq = T;
+}
+
+template ParameterUDA(size_t p_num, func...)
+if (func.length == 1 && is(typeof(func[0]) PT == __parameters) && PT.length > p_num)
+{
+ static if (is(typeof(func[0]) PT == __parameters))
+ {
+ template Get(size_t i)
+ {
+ static if (//!isFunctionPointer!func && !isDelegate!func
+ // Parameters without UDA may yield CT error.
+ /*&&*/ is(typeof(__traits(getAttributes, PT[i..i+1]))x))
+ {
+ alias Get = AliasSeq!(__traits(getAttributes, PT[i..i+1]));
+ }
+ else
+ {
+ alias Get = AliasSeq!();
+ }
+ }
+ }
+ else
+ {
+ static assert(0, func[0].stringof ~ "is not a function");
+
+ // Define dummy entities to avoid pointless errors
+ template Get(size_t i) { alias Get = AliasSeq!(); }
+ alias PT = AliasSeq!();
+ }
+
+ alias ParameterUDA = Get!p_num;
+}
+
+void test13x(@(10) int a, @(20) int, @(30) @(40) int[] arr...) {}
+
+void test13()
+{
+ static assert([ParameterUDA!(0, test13x)] == [10]);
+ static assert([ParameterUDA!(1, test13x)] == [20]);
+ static assert([ParameterUDA!(2, test13x)] == [30, 40]);
+}
+
+template Test13t(F)
+{
+ static assert(!__traits(compiles, ParameterUDA!(0, F)));
+ static assert(!__traits(compiles, ParameterUDA!(1, F)));
+ static assert(!__traits(compiles, ParameterUDA!(2, F)));
+ enum Test13t = true;
+}
+
+alias test13t = Test13t!(typeof(test13x));
+
+enum Test14UDA1;
+
+struct Test14UDA2
+{
+ string str;
+}
+
+Test14UDA2 test14uda3(string name)
+{
+ return Test14UDA2(name);
+}
+
+struct Test14UDA4(string v)
+{
+}
+
+void test14x(@Test14UDA1 int, @Test14UDA2("1") int, @test14uda3("2") int, @Test14UDA4!"3" int) {}
+void test14()
+{
+ static assert(is(ParameterUDA!(0, test14x)[0] == Test14UDA1));
+ static assert(ParameterUDA!(1, test14x)[0] == Test14UDA2("1"));
+ static assert(ParameterUDA!(2, test14x)[0] == test14uda3("2"));
+ static assert(is(ParameterUDA!(3, test14x)[0] == Test14UDA4!"3"));
+}
+
+void test15x(@(20) void delegate(int) @safe dg)
+{
+ static assert([__traits(getAttributes, dg)] == [20]);
+ static assert(is(typeof(dg) == void delegate(int) @safe));
+}
+
+template MinimalFunctionTypeOf(func...)
+if (func.length == 1)
+{
+ static if (is(func[0] T) || is(typeof(func[0]) T) && is(T Fdlg == delegate))
+ alias MinimalFunctionTypeOf = Fdlg; // HIT: delegate
+ else
+ static assert(0);
+}
+
+template Parameters(func...)
+if (func.length == 1)
+{
+ static if (is(MinimalFunctionTypeOf!func P == function))
+ alias Parameters = P;
+ else
+ static assert(0, "argument has no parameters");
+}
+
+void test15y(@(20) void delegate(@Test14UDA2("2") @("test15yUDA") int) @safe dg)
+{
+ static assert([__traits(getAttributes, dg)] == [20]);
+ static assert(is(typeof(dg) == void delegate(int) @safe));
+ auto foo = (@("myUDA") int x){
+ static assert([__traits(getAttributes, x)] == ["myUDA"]);
+ };
+ static assert(__traits(getAttributes, Parameters!dg)[0] == Test14UDA2("2"));
+ static assert(__traits(getAttributes, Parameters!dg)[1] == "test15yUDA");
+}
+
+void test15z()
+{
+ test15y((@(15) @(16) int x){
+ static assert([__traits(getAttributes, x)] == [15, 16]);
+ });
+}
+
+void test16x(A)(@(22) A a)
+{
+ static assert([__traits(getAttributes, a)] == [22]);
+}
+
+void test16()
+{
+ static assert([ParameterUDA!(0, test16x!int)] == [22]);
+}
+
+void test17()
+{
+ void test17x(A)(@(23) A a)
+ {
+ static assert([__traits(getAttributes, a)] == [23]);
+ }
+ static assert([ParameterUDA!(0, test17x!int)] == [23]);
+}
+
+void test18()
+{
+ void test18a(@(Tuple!(18, "a")) int a)
+ {
+ static assert(__traits(getAttributes, a) == Tuple!(18, "a"));
+ }
+ void test18b(@Tuple!(18, "b") int a)
+ {
+ static assert(__traits(getAttributes, a) == Tuple!(18, "b"));
+ }
+
+ static assert(ParameterUDA!(0, test18a) == Tuple!(18, "a"));
+ static assert(ParameterUDA!(0, test18b) == Tuple!(18, "b"));
+}
+
+// Lambdas with parentheses:
+void test19()
+{
+ // lambdas without parentheses
+ alias test19a = @(3) b => 1 + 2;
+ alias test19b = @(3) @(4) b => 1 + 2;
+
+ alias test19c = (@(3) c, @(5) d) => 1 + 2;
+ alias test19d = (@(3) @(4) c, @(5) d) => 1 + 2;
+ auto test19e = (@(3) int c, @(5) int d) => 1 + 2;
+
+ // still allow alias function declarations
+ alias FuncType = @safe void function();
+ alias FuncType2 = @safe nothrow void function();
+ alias FuncType3 = nothrow void function();
+ alias FuncType4 = nothrow @safe void function();
+}
+
+void test20()
+{
+ // Using a delegate with inferred parameter type
+ void test20a(int delegate(int) t){ t(1); }
+ test20a((@(19) a) {
+ static assert([__traits(getAttributes, a)] == [19]);
+ return a + 2;
+ });
+}
+
+/************************************************/
+
+
int main()
{
test1();
@@ -482,6 +704,13 @@ int main()
test11();
test12();
test9178();
+ test13();
+ test14();
+ test16();
+ test17();
+ test18();
+ test19();
+ test20();
printf("Success\n");
return 0;
diff --git a/gcc/testsuite/gdc.test/runnable/xtest46.d b/gcc/testsuite/gdc.test/runnable/xtest46.d
index 8cba4ed..bf19f57 100644
--- a/gcc/testsuite/gdc.test/runnable/xtest46.d
+++ b/gcc/testsuite/gdc.test/runnable/xtest46.d
@@ -1,5 +1,37 @@
// RUNNABLE_PHOBOS_TEST
// PERMUTE_ARGS: -unittest -O -release -inline -fPIC -g
+/* TEST_OUTPUT:
+---
+Boo!double
+Boo!int
+true
+int
+!! immutable(int)[]
+int(int i, long j = 7L)
+long
+C10390(C10390(C10390(<recursion>)))
+tuple(height)
+tuple(get, get)
+tuple(clear)
+tuple(draw, draw)
+runnable/xtest46.d(149): Deprecation: `opDot` is deprecated. Use `alias this`
+runnable/xtest46.d(151): Deprecation: `opDot` is deprecated. Use `alias this`
+runnable/xtest46.d(152): Deprecation: `opDot` is deprecated. Use `alias this`
+runnable/xtest46.d(154): Deprecation: `opDot` is deprecated. Use `alias this`
+runnable/xtest46.d(181): Deprecation: `opDot` is deprecated. Use `alias this`
+runnable/xtest46.d(183): Deprecation: `opDot` is deprecated. Use `alias this`
+runnable/xtest46.d(184): Deprecation: `opDot` is deprecated. Use `alias this`
+runnable/xtest46.d(186): Deprecation: `opDot` is deprecated. Use `alias this`
+const(int)
+string[]
+double[]
+double[]
+{}
+tuple("m")
+true
+TFunction1: extern (C) void function()
+---
+*/
import std.stdio;
import core.stdc.stdio;
diff --git a/gcc/testsuite/gdc.test/runnable_cxx/runnable_cxx.exp b/gcc/testsuite/gdc.test/runnable_cxx/runnable_cxx.exp
index a37376a..ecb8c3e 100644
--- a/gcc/testsuite/gdc.test/runnable_cxx/runnable_cxx.exp
+++ b/gcc/testsuite/gdc.test/runnable_cxx/runnable_cxx.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_18.c b/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_18.c
new file mode 100644
index 0000000..eef5cc6
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_18.c
@@ -0,0 +1,27 @@
+#include <stdlib.h>
+#include <string.h>
+#include "../../../libgfortran/ISO_Fortran_binding.h"
+
+
+extern int do_loop(CFI_cdesc_t* array);
+
+int main(int argc, char ** argv)
+{
+ int nx = 9;
+ int ny = 10;
+ int nz = 2;
+
+ int arr[nx*ny*nz];
+ memset(arr,0,sizeof(int)*nx*ny*nz);
+ CFI_index_t shape[3];
+ shape[0] = nz;
+ shape[1] = ny;
+ shape[2] = nx;
+
+ CFI_CDESC_T(3) farr;
+ int rc = CFI_establish((CFI_cdesc_t*)&farr, arr, CFI_attribute_other, CFI_type_int, 0, (CFI_rank_t)3, (const CFI_index_t *)shape);
+ if (rc != CFI_SUCCESS) abort();
+ int result = do_loop((CFI_cdesc_t*)&farr);
+ if (result != nx*ny*nz) abort();
+ return 0;
+}
diff --git a/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_18.f90 b/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_18.f90
new file mode 100644
index 0000000..76be51d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_18.f90
@@ -0,0 +1,28 @@
+! { dg-do run }
+! { dg-additional-sources ISO_Fortran_binding_18.c }
+
+module fortran_binding_test_18
+ use iso_c_binding
+ implicit none
+contains
+
+ subroutine test(array)
+ integer(c_int) :: array(:)
+ array = 1
+ end subroutine
+
+ function do_loop(array) result(the_sum) bind(c)
+ integer(c_int), intent(in out) :: array(:,:,:)
+ integer(c_int) :: the_sum, i, j
+
+ the_sum = 0
+ array = 0
+ do i=1,size(array,3)
+ do j=1,size(array,2)
+ call test(array(:,j,i))
+ end do
+ end do
+ the_sum = sum(array)
+ end function
+
+end module
diff --git a/gcc/testsuite/gfortran.dg/analyzer/analyzer.exp b/gcc/testsuite/gfortran.dg/analyzer/analyzer.exp
index 462395c..6d3a40c 100644
--- a/gcc/testsuite/gfortran.dg/analyzer/analyzer.exp
+++ b/gcc/testsuite/gfortran.dg/analyzer/analyzer.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gfortran.dg/asan/asan.exp b/gcc/testsuite/gfortran.dg/asan/asan.exp
index 056f21f..ac3ff0b 100644
--- a/gcc/testsuite/gfortran.dg/asan/asan.exp
+++ b/gcc/testsuite/gfortran.dg/asan/asan.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gfortran.dg/associate_54.f90 b/gcc/testsuite/gfortran.dg/associate_54.f90
new file mode 100644
index 0000000..003175a
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/associate_54.f90
@@ -0,0 +1,34 @@
+! { dg-do compile }
+!
+! Test the fix for PR93701.
+!
+! Contributed by Simon Brass <simon.brass@desy.de>
+!
+module test
+ implicit none
+
+ integer, parameter :: N_STATE = 1, &
+ TEST_STATE = 1
+
+ type :: test_t
+ integer, dimension(:), allocatable :: state
+ end type test_t
+
+contains
+
+ subroutine test_allocate (obj)
+ class(test_t), intent(out) :: obj
+ allocate (obj%state(N_STATE))
+ end subroutine test_allocate
+
+ subroutine test_alter_state1 (obj, a)
+ class(test_t), intent(inout) :: obj
+ integer, intent(in) :: a
+ associate (state => obj%state(TEST_STATES)) ! { dg-error "is used as array" }
+! state = a
+ state(TEST_STATE) = a
+ end associate
+ end subroutine test_alter_state1
+
+end module test
+
diff --git a/gcc/testsuite/gfortran.dg/associate_55.f90 b/gcc/testsuite/gfortran.dg/associate_55.f90
new file mode 100644
index 0000000..2b9e8c7
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/associate_55.f90
@@ -0,0 +1,35 @@
+! { dg-do compile }
+!
+! Test the fix for PR93701.
+!
+! Contributed by Simon Brass <simon.brass@desy.de>
+!
+module test
+ implicit none
+
+ integer, parameter :: N_STATE = 1, &
+ TEST_STATE = 1
+
+ type :: test_t
+ integer, dimension(:), allocatable :: state
+ end type test_t
+
+contains
+
+ subroutine test_allocate (obj)
+ class(test_t), intent(out) :: obj
+ allocate (obj%state(N_STATE))
+ end subroutine test_allocate
+
+
+ subroutine test_alter_state2 (obj, a)
+ class(test_t), intent(inout) :: obj
+ integer, intent(in) :: a
+ associate (state => obj%state(TEST_STATES)) ! { dg-error "no IMPLICIT type" }
+ state = a ! { dg-error "vector-indexed target" }
+! state(TEST_STATE) = a
+ end associate
+ end subroutine test_alter_state2
+
+end module test
+
diff --git a/gcc/testsuite/gfortran.dg/associate_56.f90 b/gcc/testsuite/gfortran.dg/associate_56.f90
new file mode 100644
index 0000000..429f129
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/associate_56.f90
@@ -0,0 +1,36 @@
+! { dg-do compile }
+!
+! Test the fix for PR93701.
+!
+! Contributed by Simon Brass <simon.brass@desy.de>
+!
+module test
+ implicit none
+
+ integer, parameter :: N_STATE = 1, &
+ TEST_STATE = 1
+
+ type :: test_t
+ integer, dimension(:), allocatable :: state
+ end type test_t
+
+contains
+
+ subroutine test_allocate (obj)
+ class(test_t), intent(out) :: obj
+ allocate (obj%state(N_STATE))
+ end subroutine test_allocate
+
+
+ subroutine test_alter_state2 (obj, a)
+ class(test_t), intent(inout) :: obj
+ integer, intent(in) :: a
+ integer, dimension(2) :: TEST_STATES = [1,2]
+ associate (state => obj%state(TEST_STATES))
+ state = a ! { dg-error "vector-indexed target" }
+ state(TEST_STATE) = a ! { dg-error "vector-indexed target" }
+ end associate
+ end subroutine test_alter_state2
+
+end module test
+
diff --git a/gcc/testsuite/gfortran.dg/associate_57.f90 b/gcc/testsuite/gfortran.dg/associate_57.f90
new file mode 100644
index 0000000..80c7668
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/associate_57.f90
@@ -0,0 +1,47 @@
+! { dg-do compile }
+! PR 96386 - this used to cause an ICE.
+! Test case by Menno Deij - van Rijswijk.
+
+MODULE assoc
+
+TYPE Level3
+ INTEGER :: someNumber
+END TYPE Level3
+
+TYPE Level2
+ INTEGER :: nLevel3
+ TYPE (Level3), ALLOCATABLE :: levels3(:)
+
+END TYPE Level2
+
+TYPE Level1
+ INTEGER :: nLevel2
+ TYPE (Level2), ALLOCATABLE :: levels2(:)
+END TYPE Level1
+
+TYPE outer_type
+ INTEGER :: nLevel1
+ TYPE (Level1), ALLOCATABLE :: levels1(:)
+END TYPE outer_type
+
+TYPE(outer_type), TARGET :: outer
+
+CONTAINS
+
+SUBROUTINE internal_compiler_error_repro()
+
+INTEGER F,B,Z
+
+ASSOCIATE(l1 => outer%levels1 ) ! <-- this gives an ICE
+!ASSOCIATE(l1 => outer%levels1(:) ) ! <-- No ICE if array spec is added
+ DO F=1,outer%nLevel1
+ ASSOCIATE(l2 => l1(F)%levels2 )
+ DO B=1,l2(F)%nLevel3 ! <-- condition for ICE to be triggered
+
+ END DO
+ END ASSOCIATE
+ END DO
+END ASSOCIATE
+
+END SUBROUTINE internal_compiler_error_repro
+end module
diff --git a/gcc/testsuite/gfortran.dg/associated_target_7.f90 b/gcc/testsuite/gfortran.dg/associated_target_7.f90
new file mode 100644
index 0000000..97f93b3
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/associated_target_7.f90
@@ -0,0 +1,87 @@
+! { dg-do run }
+!
+! associated_target_7.f90: Test the fix for PR98565.
+!
+! Contributed by Yves Secretan <yves.secretan@ete.inrs.ca>
+!
+MODULE PS_SN0N_M
+
+ IMPLICIT NONE
+ PRIVATE
+
+ TYPE, PUBLIC :: DT_GRID_T
+ INTEGER :: NNT
+ CONTAINS
+ ! PASS
+ END TYPE DT_GRID_T
+
+ TYPE, PUBLIC :: LM_ELEM_T
+ CLASS(DT_GRID_T), POINTER :: PGRID
+ CONTAINS
+ PROCEDURE, PUBLIC :: REQPGRID => LM_ELEM_REGPGRID
+ END TYPE LM_ELEM_T
+
+ TYPE, PUBLIC :: PS_SN0N_T
+ CLASS(DT_GRID_T), POINTER :: PGRID
+
+ CONTAINS
+ PROCEDURE, PUBLIC :: ASGOELE => PS_SN0N_ASGOELE
+ END TYPE PS_SN0N_T
+
+
+CONTAINS
+ !------------------------------------------------------------------------
+ !------------------------------------------------------------------------
+ FUNCTION LM_ELEM_REGPGRID(SELF) RESULT(PGRID)
+ CLASS(DT_GRID_T), POINTER :: PGRID
+ CLASS(LM_ELEM_T), INTENT(IN) :: SELF
+ PGRID => SELF%PGRID
+ RETURN
+ END FUNCTION LM_ELEM_REGPGRID
+
+ !------------------------------------------------------------------------
+ !------------------------------------------------------------------------
+ FUNCTION PS_SN0N_ASGOELE(SELF, OELE) RESULT(ERMSG)
+
+ INTEGER :: ERMSG
+ CLASS(PS_SN0N_T), INTENT(IN) :: SELF
+ CLASS(LM_ELEM_T), INTENT(IN) :: OELE
+
+ !CLASS(DT_GRID_T), POINTER :: PGRID
+ LOGICAL :: ISOK
+ !------------------------------------------------------------------------
+
+ ! ASSOCIATED with temp variable compiles
+ !PGRID => OELE%REQPGRID()
+ !ISOK = ASSOCIATED(SELF%PGRID, PGRID)
+
+ ! ASSOCIATE without temp variable crashes with ICE
+ ISOK = ASSOCIATED(SELF%PGRID, OELE%REQPGRID())
+ ERMSG = 0
+ IF (ISOK) ERMSG = 1
+
+ RETURN
+ END FUNCTION PS_SN0N_ASGOELE
+
+END MODULE PS_SN0N_M
+
+
+ USE PS_SN0N_M
+ CLASS(PS_SN0N_T), ALLOCATABLE :: SELF
+ CLASS(LM_ELEM_T), ALLOCATABLE :: OELE
+ TYPE (DT_GRID_T), TARGET :: GRID1 = DT_GRID_T (42)
+ TYPE (DT_GRID_T), TARGET :: GRID2 = DT_GRID_T (84)
+
+ ALLOCATE (PS_SN0N_T :: SELF)
+ ALLOCATE (LM_ELEM_T :: OELE)
+ SELF%PGRID => GRID1
+
+ OELE%PGRID => NULL ()
+ IF (SELF%ASGOELE (OELE) .NE. 0) STOP 1
+
+ OELE%PGRID => GRID2
+ IF (SELF%ASGOELE (OELE) .NE. 0) STOP 2
+
+ OELE%PGRID => GRID1
+ IF (SELF%ASGOELE (OELE) .NE. 1) STOP 3
+END
diff --git a/gcc/testsuite/gfortran.dg/charlen_18.f90 b/gcc/testsuite/gfortran.dg/charlen_18.f90
new file mode 100644
index 0000000..5ad2874
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/charlen_18.f90
@@ -0,0 +1,18 @@
+! { dg-do compile }
+! { dg-options "-fdec-structure" }
+!
+! Check fix for PR98517
+!
+! Contributed by Eric Reischer <emr-gnu@hev.psu.edu>
+!
+ SUBROUTINE TEST_BUG
+ IMPLICIT NONE
+
+ CHARACTER*(*) DEF_VAL
+ PARAMETER (DEF_VAL = 'ABCDEFGH')
+
+ STRUCTURE /SOME_STRUCT/
+ CHARACTER*64 SOME_VAR /DEF_VAL/
+ END STRUCTURE
+
+ END
diff --git a/gcc/testsuite/gfortran.dg/class_allocate_25.f90 b/gcc/testsuite/gfortran.dg/class_allocate_25.f90
new file mode 100644
index 0000000..4e5855f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/class_allocate_25.f90
@@ -0,0 +1,58 @@
+! { dg-do run }
+! { dg-options "-fdump-tree-original" }
+!
+! In the course of fixing PR83118, lots of issues came up with class array
+! assignment, where temporaries are generated. This testcase checks that
+! the use of assignment by allocate with source is OK, especially with array
+! constructors using class arrays. While this test did run previously, the
+! temporaries for such arrays were malformed with the class as the type and
+! element lengths of 72 bytes rather than the 4 bytes of the decalred type.
+!
+! Contributed by Dominique d'Humieres <dhumieres.dominique@free.fr>
+!
+type t1
+ integer :: i = 5
+end type t1
+type, extends(t1) :: t2
+ integer :: j = 6
+end type t2
+
+class(t1), allocatable :: a(:), b(:), c(:)
+integer :: i
+
+allocate(t2 :: a(3))
+allocate(t2 :: b(5))
+if (.not.check_t1 (a, [(5, i = 1, 3)], 2)) stop 1
+
+allocate(c, source=[a, b ]) ! F2008, PR 44672
+if (.not.check_t1 (c, [(5, i = 1, 8)], 1)) stop 2
+
+deallocate(c)
+allocate(c(8), source=[ a, b ])
+if (.not.check_t1 (c, [(5, i = 1, 8)], 1)) stop 3
+
+deallocate(c)
+c = [t1 :: a, b ] ! F2008, PR 43366
+if (.not.check_t1 (c, [(5, i = 1, 8)], 1)) stop 4
+deallocate(a, b, c)
+
+contains
+
+ logical function check_t1 (arg, array, t)
+ class(t1) :: arg(:)
+ integer :: array (:), t
+ check_t1 = .true.
+ select type (arg)
+ type is (t1)
+ if (any (arg%i .ne. array)) check_t1 = .false.
+ if (t .eq. 2) check_t1 = .false.
+ type is (t2)
+ if (any (arg%i .ne. array)) check_t1 = .false.
+ if (t .eq. 1) check_t1 = .false.
+ class default
+ check_t1 = .false.
+ end select
+ end function check_t1
+
+end
+! { dg-final { scan-tree-dump-times "elem_len=72" 0 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/class_assign_4.f90 b/gcc/testsuite/gfortran.dg/class_assign_4.f90
new file mode 100644
index 0000000..517e312
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/class_assign_4.f90
@@ -0,0 +1,183 @@
+! { dg-do run }
+!
+! In the course of fixing PR83118, lots of issues came up with class array
+! assignment, where temporaries are generated. This testcase checks that
+! it all works correctly.
+!
+! Contributed by Paul Thomas <pault@gcc.gnu.org>
+!
+module m
+ implicit none
+ type :: t1
+ integer :: i
+ CONTAINS
+ PROCEDURE :: add_t1
+ GENERIC :: OPERATOR(+) => add_t1
+ end type
+ type, extends(t1) :: t2
+ real :: r
+ end type
+
+contains
+ impure elemental function add_t1 (a, b) result (c)
+ class(t1), intent(in) :: a, b
+ class(t1), allocatable :: c
+ allocate (c, source = a)
+ c%i = a%i + b%i
+ select type (c)
+ type is (t2)
+ select type (b)
+ type is (t2)
+ c%r = c%r + b%r
+ end select
+ end select
+ end function add_t1
+
+end module m
+
+subroutine test_t1
+ use m
+ implicit none
+
+ class(t1), dimension(:), allocatable :: x, y
+
+ x = [t2(1,10.0),t2(2,20.0),t2(3,30.0)]
+ if (.not.check_t1 (x, [1,2,3], 2, [10, 20, 30]) ) stop 1
+
+ y = x
+ x = realloc_t1 (y)
+ if (.not.check_t1 (x, [3,2,1], 1) ) stop 2
+
+ x = realloc_t1 (x)
+ if (.not.check_t1 (x, [2,3,1], 1) ) stop 3
+
+ x = x([3,1,2])
+ if (.not.check_t1 (x, [1,2,3], 1) ) stop 4
+
+ x = x(3:1:-1) + y
+ if (.not.check_t1 (x, [4,4,4], 1) ) stop 5
+
+ x = y + x(3:1:-1)
+ if (.not.check_t1 (x, [5,6,7], 2) ) stop 6
+
+! Now check that the dynamic type survives assignments.
+ x = [t2(1,10.0),t2(2,20.0),t2(3,30.0)]
+ y = x
+
+ x = y(3:1:-1)
+ if (.not.check_t1 (x, [3,2,1], 2, [30,20,10]) ) stop 7
+
+ x = x(3:1:-1) + y
+ if (.not.check_t1 (x, [2,4,6], 2, [20,40,60]) ) stop 8
+
+ x = x(3:1:-1)
+ if (.not.check_t1 (x, [6,4,2], 2, [60,40,20]) ) stop 9
+
+ x = x([3,2,1])
+ if (.not.check_t1 (x, [2,4,6], 2, [20,40,60]) ) stop 10
+
+contains
+
+ function realloc_t1 (arg) result (res)
+ class(t1), dimension(:), allocatable :: arg
+ class(t1), dimension(:), allocatable :: res
+ select type (arg)
+ type is (t2)
+ allocate (res, source = [t1 (arg(3)%i), t1 (arg(2)%i), t1 (arg(1)%i)])
+ type is (t1)
+ allocate (res, source = [t1 (arg(2)%i), t1 (arg(1)%i), t1 (arg(3)%i)])
+ end select
+ end function realloc_t1
+
+ logical function check_t1 (arg, array, t, array2)
+ class(t1) :: arg(:)
+ integer :: array (:), t
+ integer, optional :: array2(:)
+ check_t1 = .true.
+ select type (arg)
+ type is (t1)
+ if (any (arg%i .ne. array)) check_t1 = .false.
+ if (t .eq. 2) check_t1 = .false.
+ type is (t2)
+ if (any (arg%i .ne. array)) check_t1 = .false.
+ if (t .eq. 1) check_t1 = .false.
+ if (present (array2)) then
+ if (any(int (arg%r) .ne. array2)) check_t1 = .false.
+ end if
+ class default
+ check_t1 = .false.
+ end select
+ end function check_t1
+
+end subroutine test_t1
+
+subroutine test_star
+ use m
+ implicit none
+
+ class(*), dimension(:), allocatable :: x, y
+
+ x = [t2(1,10.0),t2(2,20.0),t2(3,30.0)]
+ if (.not.check_star (x, [1,2,3], 2) ) stop 11
+
+ y = x
+ x = realloc_star (y)
+ if (.not.check_star (x, [3,2,1], 1) ) stop 12
+
+ x = realloc_star (x)
+ if (.not.check_star (x, [2,3,1], 1) ) stop 13
+
+ x = x([3,1,2])
+ if (.not.check_star (x, [1,2,3], 1) ) stop 14
+
+ x = x(3:1:-1)
+ if (.not.check_star (x, [3,2,1], 1) ) stop 15
+
+! Make sure that all is similarly well with type t2.
+ x = [t2(1,10.0),t2(2,20.0),t2(3,30.0)]
+
+ x = x([3,1,2])
+ if (.not.check_star (x, [3,1,2], 2, [30,10,20]) ) stop 16
+
+ x = x(3:1:-1)
+ if (.not.check_star (x, [2,1,3], 2, [20,10,30]) ) stop 17
+
+contains
+
+ function realloc_star (arg) result (res)
+ class(*), dimension(:), allocatable :: arg
+ class(*), dimension(:), allocatable :: res
+ select type (arg)
+ type is (t2)
+ allocate (res, source = [t1 (arg(3)%i), t1 (arg(2)%i), t1 (arg(1)%i)])
+ type is (t1)
+ allocate (res, source = [t1 (arg(2)%i), t1 (arg(1)%i), t1 (arg(3)%i)])
+ end select
+ end function realloc_star
+
+ logical function check_star (arg, array, t, array2)
+ class(*) :: arg(:)
+ integer :: array (:), t
+ integer, optional :: array2(:)
+ check_star = .true.
+ select type (arg)
+ type is (t1)
+ if (any (arg%i .ne. array)) check_star = .false.
+ if (t .eq. 2) check_star = .false.
+ type is (t2)
+ if (any (arg%i .ne. array)) check_star = .false.
+ if (t .eq. 1) check_star = .false.
+ if (present (array2)) then
+ if (any (int(arg%r) .ne. array2)) check_star = .false.
+ endif
+ class default
+ check_star = .false.
+ end select
+ end function check_star
+
+end subroutine test_star
+
+
+ call test_t1
+ call test_star
+end
diff --git a/gcc/testsuite/gfortran.dg/coarray/caf.exp b/gcc/testsuite/gfortran.dg/coarray/caf.exp
index cd2a7ed..b13aaca 100644
--- a/gcc/testsuite/gfortran.dg/coarray/caf.exp
+++ b/gcc/testsuite/gfortran.dg/coarray/caf.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gfortran.dg/coarray/send_char_array_1.f90 b/gcc/testsuite/gfortran.dg/coarray/send_char_array_1.f90
index 3e16fa8..b3caf80 100644
--- a/gcc/testsuite/gfortran.dg/coarray/send_char_array_1.f90
+++ b/gcc/testsuite/gfortran.dg/coarray/send_char_array_1.f90
@@ -25,28 +25,28 @@ program send_convert_char_array
allocate(character(kind=4, len=5)::co_str_k4_arr(4)[*])
! First check send/copy to self
- co_str_k1_scal[1] = str_k1_scal
+ co_str_k1_scal[this_image()] = str_k1_scal
if (co_str_k1_scal /= str_k1_scal // ' ') STOP 1
- co_str_k4_scal[1] = str_k4_scal
+ co_str_k4_scal[this_image()] = str_k4_scal
if (co_str_k4_scal /= str_k4_scal // 4_' ') STOP 2
- co_str_k4_scal[1] = str_k1_scal
+ co_str_k4_scal[this_image()] = str_k1_scal
if (co_str_k4_scal /= str_k4_scal // 4_' ') STOP 3
- co_str_k1_scal[1] = str_k4_scal
+ co_str_k1_scal[this_image()] = str_k4_scal
if (co_str_k1_scal /= str_k1_scal // ' ') STOP 4
- co_str_k1_arr(:)[1] = str_k1_arr
+ co_str_k1_arr(:)[this_image()] = str_k1_arr
if (any(co_str_k1_arr /= ['abc ', 'EFG ', 'klm ', 'NOP '])) STOP 5
- co_str_k4_arr(:)[1] = [4_'abc', 4_'EFG', 4_'klm', 4_'NOP']! str_k4_arr
+ co_str_k4_arr(:)[this_image()] = [4_'abc', 4_'EFG', 4_'klm', 4_'NOP']! str_k4_arr
if (any(co_str_k4_arr /= [4_'abc ', 4_'EFG ', 4_'klm ', 4_'NOP '])) STOP 6
- co_str_k4_arr(:)[1] = str_k1_arr
+ co_str_k4_arr(:)[this_image()] = str_k1_arr
if (any(co_str_k4_arr /= [ 4_'abc ', 4_'EFG ', 4_'klm ', 4_'NOP '])) STOP 7
- co_str_k1_arr(:)[1] = str_k4_arr
+ co_str_k1_arr(:)[this_image()] = str_k4_arr
if (any(co_str_k1_arr /= ['abc ', 'EFG ', 'klm ', 'NOP '])) STOP 8
end program send_convert_char_array
diff --git a/gcc/testsuite/gfortran.dg/data_inquiry_ref.f90 b/gcc/testsuite/gfortran.dg/data_inquiry_ref.f90
new file mode 100644
index 0000000..de320f1
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/data_inquiry_ref.f90
@@ -0,0 +1,39 @@
+! { dg-do compile }
+!
+! Test the fix for PR98022. Code is in place to deliver the expected result.
+! However, it was determined that the data statements below violate F18(R841)
+! and so an error results.
+!
+! Contributed by Arseny Solokha <asolokha@gmx.com>
+!
+module ur
+contains
+! The reporter's test.
+ function kn1() result(hm2)
+ complex :: hm(1:2), hm2(1:3), scalar
+ data (hm(md)%re, md=1,2)/1.0, 2.0/, scalar%re/42.0/ ! { dg-error "neither an array-element" }
+ data (hm(md)%im, md=1,2)/0.0, 0.0/, scalar%im/-42.0/ ! { dg-error "neither an array-element" }
+ hm2(1:2) = hm
+ hm2(3) = scalar
+ end function kn1
+
+! Check for derived types with complex components.
+ function kn2() result(hm2)
+ type t
+ complex :: c
+ integer :: i
+ end type
+ type (t) :: hm(1:2), scalar
+ complex :: hm2(1:3)
+ data (hm(md)%c%re, md=1,2)/0.0, 0.0/, scalar%c%re/42.0/ ! { dg-error "neither an array-element" }
+ data (hm(md)%c%im, md=1,2)/1.0, 2.0/, scalar%c%im/-42.0/ ! { dg-error "neither an array-element" }
+ data (hm(md)%i, md=1,2)/1, 2/
+ hm2(1:2) = hm%c
+ hm2(3) = scalar%c
+ end function kn2
+end module ur
+
+! use ur
+! if (any (kn1() .ne. [(1.0,0.0),(2.0,0.0),(42.0,-42.0)])) stop 1
+! if (any (kn2() .ne. [(0.0,1.0),(0.0,2.0),(42.0,-42.0)])) stop 2
+end
diff --git a/gcc/testsuite/gfortran.dg/debug/debug.exp b/gcc/testsuite/gfortran.dg/debug/debug.exp
index 975c519..a9c1e56 100644
--- a/gcc/testsuite/gfortran.dg/debug/debug.exp
+++ b/gcc/testsuite/gfortran.dg/debug/debug.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gfortran.dg/dec_math.f90 b/gcc/testsuite/gfortran.dg/dec_math.f90
index cc141ab..d95233a 100644
--- a/gcc/testsuite/gfortran.dg/dec_math.f90
+++ b/gcc/testsuite/gfortran.dg/dec_math.f90
@@ -1,5 +1,5 @@
! { dg-options "-cpp -std=gnu" }
-! { dg-do run }
+! { dg-do run { xfail i?86-*-freebsd* } }
!
! Test extra math intrinsics formerly offered by -fdec-math,
! now included with -std=gnu or -std=legacy.
diff --git a/gcc/testsuite/gfortran.dg/deferred_character_35.f90 b/gcc/testsuite/gfortran.dg/deferred_character_35.f90
new file mode 100644
index 0000000..c28f52f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/deferred_character_35.f90
@@ -0,0 +1,18 @@
+! { dg-do compile }
+!
+! Test the fix for PR93794, where the ASSOCIATE statement ICED on the
+! deferred character length, pointer component.
+!
+! Contributed by Gerhard Steinmetz <gscfq@t-online.de>
+!
+program p
+ type t
+ character(:), pointer :: a
+ end type
+ type(t) :: z
+ character(4), target :: c = 'abcd'
+ z%a => c
+ associate (y => z%a)
+ print *, y
+ end associate
+end
diff --git a/gcc/testsuite/gfortran.dg/deferred_character_36.f90 b/gcc/testsuite/gfortran.dg/deferred_character_36.f90
new file mode 100644
index 0000000..65f2464
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/deferred_character_36.f90
@@ -0,0 +1,16 @@
+! { dg-do run }
+!
+! Test the fix for PR93833, which ICEd as shown.
+!
+! Contributed by Gerhard Steinmetz <gscfq@t-online.de>
+!
+program p
+ character(:), allocatable :: c
+ c = "wxyz"
+contains
+ subroutine s
+ associate (y => [c])
+ if (any(y /= [c])) stop 1
+ end associate
+ end
+end
diff --git a/gcc/testsuite/gfortran.dg/dependency_60.f90 b/gcc/testsuite/gfortran.dg/dependency_60.f90
new file mode 100644
index 0000000..bf10812
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/dependency_60.f90
@@ -0,0 +1,19 @@
+! { dg-do run }
+! PR 92755 - this used to cause an ICE (see dependency_57.f90)
+! PR83118 - fixed so that it would run :-)
+! Original test case by Gerhard Steinmetz
+program p
+ type t
+ integer :: i
+ end type
+ type t2
+ class(t), allocatable :: a(:)
+ end type
+ type(t2) :: z
+ z%a = [t(1),t(2),t(3)]
+ z%a = [z%a]
+ select type (y => z%a)
+ type is (t)
+ if (any (y%i .ne. [1, 2, 3])) stop 1
+ end select
+end
diff --git a/gcc/testsuite/gfortran.dg/dg.exp b/gcc/testsuite/gfortran.dg/dg.exp
index 89a4da5..0668981 100644
--- a/gcc/testsuite/gfortran.dg/dg.exp
+++ b/gcc/testsuite/gfortran.dg/dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gfortran.dg/elemental_assignment_1.f90 b/gcc/testsuite/gfortran.dg/elemental_assignment_1.f90
new file mode 100644
index 0000000..23d7643
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/elemental_assignment_1.f90
@@ -0,0 +1,59 @@
+! { dg-do run }
+! PR 67539 - this used to give a segfault at runtime.
+! Test case by "mrestelli".
+
+module m
+ implicit none
+
+ type :: t_a
+ real, allocatable :: x
+ end type t_a
+
+ interface assignment(=)
+ module procedure copy_t_a
+ end interface
+
+contains
+
+ elemental subroutine copy_t_a(y,x)
+ type(t_a), intent(in) :: x
+ type(t_a), intent(out) :: y
+ allocate( y%x , source=x%x )
+ end subroutine copy_t_a
+
+ elemental function new_t_a(x) result(res)
+ real, intent(in) :: x
+ type(t_a) :: res
+ allocate( res%x )
+ res%x = x
+ end function new_t_a
+
+end module m
+
+
+program p
+ use m
+ implicit none
+
+ integer :: i
+ type(t_a) :: tmp
+ type(t_a), allocatable :: v(:)
+
+ allocate( v(2) )
+
+ v = new_t_a(1.5) ! -> segmentation fault
+
+ !tmp = new_t_a(1.5) ! -> OK
+ !v = tmp
+
+ !do i=1,size(v) ! -> also OK
+ ! v(i) = new_t_a(1.5)
+ !enddo
+
+ do i=1,size(v)
+ write(*,*) " i = ",i
+ write(*,*) allocated(v(i)%x)
+ write(*,*) v(i)%x
+ enddo
+
+end program p
diff --git a/gcc/testsuite/gfortran.dg/elemental_function_5.f90 b/gcc/testsuite/gfortran.dg/elemental_function_5.f90
new file mode 100644
index 0000000..315ff91
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/elemental_function_5.f90
@@ -0,0 +1,46 @@
+! { dg-do compile }
+!
+! Test the fix for PR98472.
+!
+! Contributed by Rui Coelho <ruicoelhopedro@hotmail.com>
+!
+module a
+ type, abstract :: base
+ contains
+ procedure(elem_func), deferred, nopass :: add
+ end type base
+
+ type, extends(base) :: derived
+ contains
+ procedure, nopass :: add => add_derived
+ end type derived
+
+ abstract interface
+ elemental function elem_func(x, y) result(out)
+ integer, intent(in) :: x, y
+ integer :: out
+ end function elem_func
+ end interface
+
+contains
+ elemental function add_derived(x, y) result(out)
+ integer, intent(in) :: x, y
+ integer :: out
+ out = x + y
+ end function add_derived
+end module a
+
+program main
+ use a
+ call foo
+contains
+ subroutine foo
+ integer, dimension(:), allocatable :: vec
+ class(base), allocatable :: instance
+ allocate(derived :: instance)
+ allocate(vec, source=instance%add([1, 2], [1, 2])) ! ICE here
+ if (any (vec .ne. [2, 4])) stop 1
+ end
+end program main
+
+
diff --git a/gcc/testsuite/gfortran.dg/finalize_37.f90 b/gcc/testsuite/gfortran.dg/finalize_37.f90
new file mode 100644
index 0000000..6d5be02
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/finalize_37.f90
@@ -0,0 +1,80 @@
+! { dg-do run }
+! { dg-additional-options "-fdump-tree-original" }
+!
+! PR fortran/92587
+!
+
+module m
+ implicit none (type, external)
+ type t2
+ contains
+ final :: fini
+ end type
+ type t3
+ type(t2) :: a
+ end type
+ type, extends(t3) :: t4
+ end type
+ class(t4), allocatable :: y
+ class(t4), allocatable :: z
+ integer :: fini_cnt = 0
+contains
+ subroutine sub
+ y = z
+ end
+ subroutine fini(x)
+ type(t2) :: x
+ fini_cnt = fini_cnt + 1
+ end
+end
+
+module m2
+ use m
+ implicit none (type, external)
+ type, extends(t3) :: t5
+ end type
+ type, extends(t3) :: t6
+ contains
+ final :: fin2
+ end type
+ integer :: fin2_cnt = 0
+contains
+ subroutine bar(x, y, z)
+ class(t4), allocatable, intent(out) :: x
+ class(t5), allocatable, intent(out) :: y
+ class(t6), allocatable, intent(out) :: z
+ end
+ subroutine fin2 (x)
+ type(t6) :: x
+ fin2_cnt = fin2_cnt + 1
+ end
+end
+
+ use m
+ use m2
+ implicit none (type, external)
+ class(t4), allocatable :: x2
+ class(t5), allocatable :: y2
+ class(t6), allocatable :: z2
+
+ if (fini_cnt /= 0 .or. fin2_cnt /= 0) stop 1
+ call bar (x2, y2, z2)
+ if (fini_cnt /= 0 .or. fin2_cnt /= 0) stop 2
+ if (allocated(x2) .or. allocated(y2) .or. allocated(z2)) stop 3
+
+ allocate(t4 :: x2)
+ allocate(t5 :: y2)
+ allocate(t6 :: z2)
+ call bar (x2, y2, z2)
+ if (fini_cnt /= 3 .or. fin2_cnt /= 1) stop 4
+ if (allocated(x2) .or. allocated(y2) .or. allocated(z2)) stop 5
+
+ allocate(t6 :: z2)
+ call bar (x2, y2, z2)
+ if (fini_cnt /= 4 .or. fin2_cnt /= 2) stop 6
+ if (allocated(x2) .or. allocated(y2) .or. allocated(z2)) stop 7
+end
+
+! { dg-final { scan-tree-dump "__final_m_T2 \\\(struct" "original" } }
+! { dg-final { scan-tree-dump "__final_m_T3 \\\(struct" "original" } }
+! { dg-final { scan-tree-dump "__final_m2_T6 \\\(struct" "original" } }
diff --git a/gcc/testsuite/gfortran.dg/forall_19.f90 b/gcc/testsuite/gfortran.dg/forall_19.f90
new file mode 100644
index 0000000..ef05c97
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/forall_19.f90
@@ -0,0 +1,32 @@
+! { dg-do run }
+! PR fortran/98307 - Dependency check fails when using "allocatable"
+
+program forall_deps
+ implicit none
+ type t
+ logical :: valid = .true.
+ integer :: s = 0
+ integer, allocatable :: p(:)
+ end type
+ type(t) :: v(2)
+ integer :: i
+
+ allocate (v(1)%p(8))
+ allocate (v(2)%p(8))
+ v(1)%s = 8
+ v(2)%s = 6
+
+ v(1)%p(:) = [1, 2, 3, 4, 5, 6, 7, 8]
+ v(2)%p(:) = [13, 14, 15, 16, 17, 18, 19, 20]
+ forall (i=1:2)
+ v(i)%p(1:v(i)%s) = v(3-i)%p(1:v(i)%s)
+ end forall
+ if (any(v(2)%p(:) /= [1, 2, 3, 4, 5, 6, 19, 20])) stop 1
+
+ v(1)%p(:) = [1, 2, 3, 4, 5, 6, 7, 8]
+ v(2)%p(:) = [13, 14, 15, 16, 17, 18, 19, 20]
+ forall (i=1:2, v(i)%valid)
+ v(i)%p(1:v(i)%s) = v(3-i)%p(1:v(i)%s)
+ end forall
+ if (any(v(2)%p(:) /= [1, 2, 3, 4, 5, 6, 19, 20])) stop 2
+end
diff --git a/gcc/testsuite/gfortran.dg/g77/README b/gcc/testsuite/gfortran.dg/g77/README
index fe8d47e..f90f4a5 100644
--- a/gcc/testsuite/gfortran.dg/g77/README
+++ b/gcc/testsuite/gfortran.dg/g77/README
@@ -201,7 +201,7 @@ check0.f Y
select_no_compile.f Y
-Copyright (C) 2004-2020 Free Software Foundation, Inc.
+Copyright (C) 2004-2021 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gcc/testsuite/gfortran.dg/goacc-gomp/goacc-gomp.exp b/gcc/testsuite/gfortran.dg/goacc-gomp/goacc-gomp.exp
index 6073fb3..e7d7603 100644
--- a/gcc/testsuite/gfortran.dg/goacc-gomp/goacc-gomp.exp
+++ b/gcc/testsuite/gfortran.dg/goacc-gomp/goacc-gomp.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2020 Free Software Foundation, Inc.
+# Copyright (C) 2005-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gfortran.dg/goacc/goacc.exp b/gcc/testsuite/gfortran.dg/goacc/goacc.exp
index 52b5f19..4b7d31c 100644
--- a/gcc/testsuite/gfortran.dg/goacc/goacc.exp
+++ b/gcc/testsuite/gfortran.dg/goacc/goacc.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2020 Free Software Foundation, Inc.
+# Copyright (C) 2005-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gfortran.dg/gomp/gomp.exp b/gcc/testsuite/gfortran.dg/gomp/gomp.exp
index 1b0fc0d..0549409 100644
--- a/gcc/testsuite/gfortran.dg/gomp/gomp.exp
+++ b/gcc/testsuite/gfortran.dg/gomp/gomp.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2005-2020 Free Software Foundation, Inc.
+# Copyright (C) 2005-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gfortran.dg/gomp/is_device_ptr-2.f90 b/gcc/testsuite/gfortran.dg/gomp/is_device_ptr-2.f90
new file mode 100644
index 0000000..7adc6f6
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/is_device_ptr-2.f90
@@ -0,0 +1,21 @@
+! PR fortran/98476
+
+subroutine abc(cc)
+ integer, target :: cc, dd
+ cc = 131
+ dd = 484
+
+ !$omp target enter data map(to: cc, dd)
+
+ !$omp target data use_device_addr(cc) use_device_ptr(dd)
+ !$omp target is_device_ptr(cc, dd) ! { dg-error "Non-dummy object 'dd' in IS_DEVICE_PTR clause at" }
+ if (cc /= 131 .or. dd /= 484) stop 1
+ cc = 44
+ dd = 45
+ !$omp end target
+ !$omp end target data
+
+ !$omp target exit data map(from:cc, dd)
+
+ if (cc /= 44 .or. dd /= 45) stop 5
+end
diff --git a/gcc/testsuite/gfortran.dg/gomp/map-3.f90 b/gcc/testsuite/gfortran.dg/gomp/map-3.f90
index 13f6364..bdd2890 100644
--- a/gcc/testsuite/gfortran.dg/gomp/map-3.f90
+++ b/gcc/testsuite/gfortran.dg/gomp/map-3.f90
@@ -1,10 +1,10 @@
! { dg-additional-options "-fdump-tree-original" }
subroutine bar
-integer, target :: x
+integer, target :: x, x2
integer, allocatable, target :: y(:,:), z(:,:)
x = 7
-!$omp target enter data map(to:x)
+!$omp target enter data map(to:x, x2)
x = 8
!$omp target data map(always, to: x)
@@ -15,7 +15,7 @@ call foo(x)
call foo2(x)
!$omp end target data
-!$omp target data use_device_addr(x)
+!$omp target data use_device_addr(x2)
call foo2(x)
!$omp end target data
!$omp target exit data map(release:x)
@@ -31,8 +31,8 @@ end
! { dg-final { scan-tree-dump-times "#pragma omp target enter data map\\(to:x\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target data map\\(always,to:x\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp target data use_device_ptr\\(x\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target data use_device_addr\\(x\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times "#pragma omp target data use_device_addr\\(x2\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target exit data map\\(release:x\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target data map\\(tofrom:\\*\\(c_char \\*\\) y.data \\\[len: .*\\) map\\(to:y \\\[pointer set, len: .*\\) map\\(alloc:.*y.data \\\[pointer assign, bias: 0\\\]\\) use_device_addr\\(y\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp target data map\\(tofrom:\\*\\(c_char \\*\\) z.data \\\[len: .*\\) map\\(to:z \\\[pointer set, len: .*\\) map\\(alloc:.*z.data \\\[pointer assign, bias: 0\\\]\\) use_device_ptr\\(z\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times "#pragma omp target data map\\(tofrom:\\*\\(c_char \\*\\) z.data \\\[len: .*\\) map\\(to:z \\\[pointer set, len: .*\\) map\\(alloc:.*z.data \\\[pointer assign, bias: 0\\\]\\) use_device_addr\\(z\\)" 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr86470.f90 b/gcc/testsuite/gfortran.dg/gomp/pr86470.f90
new file mode 100644
index 0000000..7e04437
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/pr86470.f90
@@ -0,0 +1,12 @@
+! { dg-do compile }
+! PR fortran/86470 - ICE with OpenMP, class(*)
+
+program p
+ implicit none
+ class(*), allocatable :: val
+!$OMP PARALLEL private(val)
+ allocate(integer::val)
+ val = 1
+ deallocate(val)
+!$OMP END PARALLEL
+end
diff --git a/gcc/testsuite/gfortran.dg/gomp/reduction4.f90 b/gcc/testsuite/gfortran.dg/gomp/reduction4.f90
index af8c91b..2e8aaa2 100644
--- a/gcc/testsuite/gfortran.dg/gomp/reduction4.f90
+++ b/gcc/testsuite/gfortran.dg/gomp/reduction4.f90
@@ -28,11 +28,6 @@ do i=1,10
end do
!$omp end parallel
-!$omp parallel reduction(inscan,+:a) ! { dg-error "'inscan' 'reduction' clause on 'parallel' construct" }
-do i=1,10
- a = a + 1
-end do
-!$omp end parallel
! ------------ simd ------------
!$omp simd reduction(+:a)
@@ -50,11 +45,6 @@ do i=1,10
a = a + 1
end do
-!$omp simd reduction(inscan,+:a) ! { dg-error "'inscan' 'reduction' clause but not in 'scan' directive clause" }
-do i=1,10
- a = a + 1
-end do
-
! ------------ do ------------
!$omp parallel
!$omp do reduction(+:a)
@@ -77,13 +67,6 @@ do i=1,10
end do
!$omp end parallel
-!$omp parallel
-!$omp do reduction(inscan,+:a) ! { dg-error "'a' specified in 'inscan' 'reduction' clause but not in 'scan' directive clause" }
-do i=1,10
- a = a + 1
-end do
-!$omp end parallel
-
! ------------ section ------------
!$omp parallel
!$omp sections reduction(+:a)
@@ -106,13 +89,6 @@ end do
!$omp end sections
!$omp end parallel
-!$omp parallel
-!$omp sections reduction(inscan,+:a) ! { dg-error "'inscan' 'reduction' clause on 'sections' construct" }
- !$omp section
- a = a + 1
-!$omp end sections
-!$omp end parallel
-
! ------------ task ------------
!$omp task in_reduction(+:a)
a = a + 1
@@ -152,18 +128,14 @@ end do
end
! { dg-final { scan-tree-dump-times "#pragma omp for reduction\\(\\\+:a\\)" 2 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp for reduction\\(inscan,\\\+:a\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp for reduction\\(task,\\\+:a\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp parallel\[\n\r\]" 8 "original" } }
+! { dg-final { scan-tree-dump-times "#pragma omp parallel\[\n\r\]" 6 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp parallel private\\(i\\) reduction\\(\\\+:a\\)" 2 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp parallel private\\(i\\) reduction\\(inscan,\\\+:a\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp parallel private\\(i\\) reduction\\(task,\\\+:a\\)" 1 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp section\[\n\r\]" 4 "original" } }
+! { dg-final { scan-tree-dump-times "#pragma omp section\[\n\r\]" 3 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp sections reduction\\(\\\+:a\\)" 2 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp sections reduction\\(inscan,\\\+:a\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp sections reduction\\(task,\\\+:a\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp simd linear\\(i:1\\) reduction\\(\\\+:a\\)" 2 "original" } }
-! { dg-final { scan-tree-dump-times "#pragma omp simd linear\\(i:1\\) reduction\\(inscan,\\\+:a\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp simd linear\\(i:1\\) reduction\\(task,\\\+:a\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp target in_reduction\\(\\\+:b\\)" 1 "original" } }
! { dg-final { scan-tree-dump-times "#pragma omp task in_reduction\\(\\\+:a\\)" 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/gomp/reduction5.f90 b/gcc/testsuite/gfortran.dg/gomp/reduction5.f90
index df915f1..032703d 100644
--- a/gcc/testsuite/gfortran.dg/gomp/reduction5.f90
+++ b/gcc/testsuite/gfortran.dg/gomp/reduction5.f90
@@ -20,7 +20,10 @@ end do
a = a + 1
!$omp end task ! { dg-error "Unexpected !.OMP END TASK statement" }
-!$omp taskloop reduction(inscan,+:a) in_reduction(+:b) ! { dg-error "34: Only DEFAULT permitted as reduction-modifier in REDUCTION clause" }
+!$omp taskloop reduction(inscan,+:a) in_reduction(+:b) ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" }
+ ! { dg-error "34: With INSCAN at .1., expected loop body with ..OMP SCAN between two structured-block-sequences" "" { target *-*-* } .-1 }
+ ! { dg-error "Only DEFAULT permitted as reduction-modifier in REDUCTION clause" "" { target *-*-* } .-2 }
+ ! { dg-error "'inscan' and non-'inscan' 'reduction' clauses on the same construct" "" { target *-*-* } .-3 }
do i=1,10
a = a + 1
end do
@@ -30,7 +33,8 @@ do i=1,10
a = a + 1
end do
-!$omp teams reduction(inscan,+:b) ! { dg-error "31: Only DEFAULT permitted as reduction-modifier in REDUCTION clause" }
+!$omp teams reduction(inscan,+:b) ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" }
+ ! { dg-error "Only DEFAULT permitted as reduction-modifier in REDUCTION clause" "" { target *-*-* } .-1 }
a = a + 1
!$omp end teams
@@ -38,4 +42,18 @@ end do
a = a + 1
!$omp end teams
+!$omp parallel reduction(inscan,+:a) ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" }
+do i=1,10
+ a = a + 1
+end do
+!$omp end parallel
+
+!$omp parallel
+!$omp sections reduction(inscan,+:a) ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" }
+ !$omp section
+ a = a + 1
+!$omp end sections
+!$omp end parallel
+
+
end
diff --git a/gcc/testsuite/gfortran.dg/gomp/reduction6.f90 b/gcc/testsuite/gfortran.dg/gomp/reduction6.f90
new file mode 100644
index 0000000..6bf6851
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/reduction6.f90
@@ -0,0 +1,18 @@
+! { dg-do compile }
+
+implicit none
+integer :: a, b, i
+a = 0
+
+!$omp simd reduction(inscan,+:a) ! { dg-error "30: With INSCAN at .1., expected loop body with ..OMP SCAN between two structured-block-sequences" }
+do i=1,10
+ a = a + 1
+end do
+
+!$omp parallel
+!$omp do reduction(inscan,+:a) ! { dg-error "28: With INSCAN at .1., expected loop body with ..OMP SCAN between two structured-block-sequences" }
+do i=1,10
+ a = a + 1
+end do
+!$omp end parallel
+end
diff --git a/gcc/testsuite/gfortran.dg/gomp/reduction7.f90 b/gcc/testsuite/gfortran.dg/gomp/reduction7.f90
new file mode 100644
index 0000000..7dc50e1
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/reduction7.f90
@@ -0,0 +1,9 @@
+implicit none
+integer :: a, b, i
+a = 0
+
+!$omp simd reduction(task,+:a) ! { dg-error "invalid 'task' reduction modifier on construct other than 'parallel', 'do' or 'sections'" }
+do i=1,10
+ a = a + 1
+end do
+end
diff --git a/gcc/testsuite/gfortran.dg/gomp/scan-1.f90 b/gcc/testsuite/gfortran.dg/gomp/scan-1.f90
new file mode 100644
index 0000000..8c879fd
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/scan-1.f90
@@ -0,0 +1,213 @@
+module m
+ integer a, b
+end module m
+
+subroutine f1
+ use m
+ !$omp scan inclusive (a) ! { dg-error "Unexpected ..OMP SCAN at .1. outside loop construct with 'inscan' REDUCTION clause" }
+ !$omp scan exclusive (b) ! { dg-error "Unexpected ..OMP SCAN at .1. outside loop construct with 'inscan' REDUCTION clause" }
+end
+
+subroutine f2 (c, d, e, f)
+ use m
+ implicit none
+ integer i, l, c(*), d(*), e(64), f(64)
+ l = 1
+
+ !$omp do reduction (inscan, +: a) reduction (+: b) ! { dg-error "'inscan' and non-'inscan' 'reduction' clauses on the same construct" }
+ do i = 1, 64
+ block
+ b = b + 1
+ a = a + c(i)
+ end block
+ !$omp scan inclusive (a)
+ d(i) = a
+ end do
+
+ !$omp do reduction (+: a) reduction (inscan, +: b) ! { dg-error "'inscan' and non-'inscan' 'reduction' clauses on the same construct" }
+ do i = 1, 64
+ block
+ a = a + 1
+ b = b + c(i)
+ end block
+ !$omp scan inclusive (b)
+ d(i) = b
+ end do
+
+ !$omp do reduction (inscan, +: e)
+ do i = 1, 64
+ block
+ e(1) = e(1) + c(i)
+ e(2) = e(2) + c(i)
+ end block
+ !$omp scan inclusive (a, e)
+ block
+ d(1) = e(1)
+ f(2) = e(2)
+ end block
+ end do
+
+ !$omp do reduction (inscan, +: e(:2)) ! { dg-error "Syntax error in OpenMP variable list" }
+ do i = 1, 64
+ block
+ e(1) = e(1) + c(i)
+ e(2) = e(2) + c(i)
+ end block
+ !$omp scan inclusive (a, e) ! { dg-error "outside loop construct with 'inscan' REDUCTION clause" }
+ block
+ d(1) = e(1)
+ f(2) = e(2)
+ end block
+ end do
+
+ !$omp do reduction (inscan, +: a) ordered ! { dg-error "ORDERED clause specified together with 'inscan' REDUCTION clause" }
+ do i = 1, 64
+ a = a + c(i)
+ !$omp scan inclusive (a)
+ d(i) = a
+ end do
+
+ !$omp do reduction (inscan, +: a) ordered(1) ! { dg-error "ORDERED clause specified together with 'inscan' REDUCTION clause" }
+ do i = 1, 64
+ a = a + c(i)
+ !$omp scan inclusive (a)
+ d(i) = a
+ end do
+
+ !$omp do reduction (inscan, +: a) schedule(static) ! { dg-error "SCHEDULE clause specified together with 'inscan' REDUCTION clause" }
+ do i = 1, 64
+ a = a + c(i)
+ !$omp scan inclusive (a)
+ d(i) = a
+ end do
+
+ !$omp do reduction (inscan, +: a) schedule(static, 2) ! { dg-error "SCHEDULE clause specified together with 'inscan' REDUCTION clause" }
+ do i = 1, 64
+ a = a + c(i)
+ !$omp scan inclusive (a)
+ d(i) = a
+ end do
+
+ !$omp do reduction (inscan, +: a) schedule(nonmonotonic: dynamic, 2) ! { dg-error "SCHEDULE clause specified together with 'inscan' REDUCTION clause" }
+ do i = 1, 64
+ a = a + c(i)
+ !$omp scan inclusive (a)
+ d(i) = a
+ end do
+end
+
+subroutine f3 (c, d)
+ use m
+ implicit none
+ integer i, c(64), d(64)
+ !$omp teams reduction (inscan, +: a) ! { dg-error "Only DEFAULT permitted as reduction-modifier in REDUCTION clause at" }
+ ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" "" { target *-*-* } .-1 }
+ ! ...
+ !$omp end teams
+
+ !$omp target parallel do reduction (inscan, +: a) map (c, d)
+ ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" "" { target *-*-* } .-1 }
+ do i = 1, 64
+ d(i) = a
+ !$omp scan exclusive (a)
+ a = a + c(i)
+ end do
+ !$omp teams
+ !$omp distribute parallel do reduction (inscan, +: a)
+ ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" "" { target *-*-* } .-1 }
+ do i = 1, 64
+ d(i) = a
+ !$omp scan exclusive (a)
+ a = a + c(i)
+ end do
+ !$omp end teams
+
+ !$omp distribute parallel do simd reduction (inscan, +: a)
+ ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" "" { target *-*-* } .-1 }
+ do i = 1, 64
+ d(i) = a
+ !$omp scan exclusive (a)
+ a = a + c(i)
+ end do
+end
+
+subroutine f4 (c, d)
+ use m
+ implicit none
+ integer i, c(64), d(64)
+ !$omp taskloop reduction (inscan, +: a) ! { dg-error "Only DEFAULT permitted as reduction-modifier in REDUCTION clause" }
+ ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" "" { target *-*-* } .-1 }
+ do i = 1, 64
+ d(i) = a
+ !$omp scan exclusive (a)
+ a = a + c(i)
+ end do
+end
+
+subroutine f7
+ use m
+ implicit none
+ integer i
+ !$omp simd reduction (inscan, +: a)
+ do i = 1, 64
+ if (i == 23) then ! { dg-error "invalid exit from OpenMP structured block" "" { target c++ } .+1 }
+ cycle ! { dg-error "invalid branch to/from OpenMP structured block" "" { target c } }
+ elseif (i == 27) then
+ goto 123 ! Diagnostic by ME, see scan-7.f90
+ ! { dg-warning "is not in the same block as the GOTO statement" "" { target *-*-* } .-1 }
+ endif
+ !$omp scan exclusive (a)
+ block
+123 a = 0 ! { dg-error "jump to label 'l1'" "" { target c++ } }
+ ! { dg-warning "is not in the same block as the GOTO statement" "" { target *-*-* } .-1 }
+ if (i == 33) then ! { dg-error "invalid exit from OpenMP structured block" "" { target c++ } .+1 }
+ cycle ! { dg-error "invalid branch to/from OpenMP structured block" "" { target c } }
+ end if
+ end block
+ end do
+end
+
+subroutine f8 (c, d, e, f)
+ use m
+ implicit none
+ integer i, c(64), d(64), e(64), f(64)
+ !$omp do reduction (inscan, +: a, b) ! { dg-error "With INSCAN at .1., expected loop body with ..OMP SCAN between two structured-block-sequences" }
+ do i = 1, 64
+ block
+ a = a + c(i)
+ b = b + d(i)
+ end block
+ !$omp scan inclusive (a) inclusive (b) ! { dg-error "Unexpected junk after ..OMP SCAN" }
+ block
+ e(i) = a
+ f(i) = b
+ end block
+ end do
+
+ !$omp do reduction (inscan, +: a, b) ! { dg-error "With INSCAN at .1., expected loop body with ..OMP SCAN between two structured-block-sequences" }
+ do i = 1, 64
+ block
+ a = a + c(i)
+ b = b + d(i)
+ end block
+ !$omp scan ! { dg-error "Expected INCLUSIVE or EXCLUSIVE clause" }
+ block
+ e(i) = a
+ f(i) = b
+ end block
+ end do
+end
+
+subroutine f9
+ use m
+ implicit none
+ integer i
+! The first error (exit) causes two follow-up errors:
+ !$omp simd reduction (inscan, +: a) ! { dg-error "With INSCAN at .1., expected loop body with ..OMP SCAN between two structured-block-sequences" }
+ do i = 1, 64
+ if (i == 23) &
+ exit ! { dg-error "EXIT statement at .1. terminating ..OMP DO loop" } */
+ !$omp scan exclusive (a) ! { dg-error "Unexpected ..OMP SCAN at .1. outside loop construct with 'inscan' REDUCTION clause" }
+ a = a + 1
+ end do
+end
diff --git a/gcc/testsuite/gfortran.dg/gomp/scan-2.f90 b/gcc/testsuite/gfortran.dg/gomp/scan-2.f90
new file mode 100644
index 0000000..c057232
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/scan-2.f90
@@ -0,0 +1,21 @@
+! { dg-do compile }
+! { dg-additional-options "-fdump-tree-original" }
+
+module m
+ integer :: a, b
+end module m
+
+subroutine f1 (c, d)
+ use m
+ implicit none
+ integer i, c(*), d(*)
+ !$omp simd reduction (inscan, +: a)
+ do i = 1, 64
+ d(i) = a
+ !$omp scan exclusive (a)
+ a = a + c(i)
+ end do
+end
+
+! { dg-final { scan-tree-dump-times "#pragma omp simd linear\\(i:1\\) reduction\\(inscan,\\\+:a\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times "#pragma omp scan exclusive\\(a\\)" 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/gomp/scan-3.f90 b/gcc/testsuite/gfortran.dg/gomp/scan-3.f90
new file mode 100644
index 0000000..8318166
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/scan-3.f90
@@ -0,0 +1,21 @@
+! { dg-do compile }
+! { dg-additional-options "-fdump-tree-original" }
+
+module m
+ integer :: a, b
+end module m
+
+subroutine f1 (c, d)
+ use m
+ implicit none
+ integer i, c(*), d(*)
+ !$omp do reduction (inscan, +: a)
+ do i = 1, 64
+ d(i) = a
+ !$omp scan inclusive (a)
+ a = a + c(i)
+ end do
+end
+
+! { dg-final { scan-tree-dump-times "#pragma omp for reduction\\(inscan,\\\+:a\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times "#pragma omp scan inclusive\\(a\\)" 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/gomp/scan-4.f90 b/gcc/testsuite/gfortran.dg/gomp/scan-4.f90
new file mode 100644
index 0000000..c9e9d7e
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/scan-4.f90
@@ -0,0 +1,22 @@
+! { dg-do compile }
+! { dg-additional-options "-fdump-tree-original" }
+
+module m
+ integer a, b
+end module m
+
+subroutine f1 (c, d)
+ use m
+ implicit none
+ integer c(*), d(*), i
+ !$omp do simd reduction (inscan, +: a)
+ do i = 1, 64
+ d(i) = a
+ !$omp scan exclusive (a)
+ a = a + c(i)
+ end do
+end
+
+! { dg-final { scan-tree-dump-times "#pragma omp for reduction\\(inscan,\\\+:a\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times "#pragma omp simd linear\\(i:1\\) reduction\\(inscan,\\\+:a\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times "#pragma omp scan exclusive\\(a\\)" 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/gomp/scan-5.f90 b/gcc/testsuite/gfortran.dg/gomp/scan-5.f90
new file mode 100644
index 0000000..a3789a5
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/scan-5.f90
@@ -0,0 +1,18 @@
+! { dg-do compile }
+! { dg-additional-options "-fdump-tree-original" }
+
+integer function foo(a,b, n) result(r)
+ implicit none
+ integer :: a(n), b(n), n, i
+ r = 0
+ !$omp parallel do reduction (inscan, +:r) default(none) firstprivate (a, b)
+ do i = 1, n
+ r = r + a(i)
+ !$omp scan inclusive (r)
+ b(i) = r
+ end do
+end
+
+! { dg-final { scan-tree-dump-times "#pragma omp parallel firstprivate\\(a\\) firstprivate\\(b\\) default\\(none\\)" 1 "original" } }
+! { dg-final { scan-tree-dump-times "#pragma omp for reduction\\(inscan,\\\+:r\\) nowait" 1 "original" } }
+! { dg-final { scan-tree-dump-times "#pragma omp scan inclusive\\(r\\)" 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/gomp/scan-6.f90 b/gcc/testsuite/gfortran.dg/gomp/scan-6.f90
new file mode 100644
index 0000000..35d5869
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/scan-6.f90
@@ -0,0 +1,16 @@
+module m
+ integer a, b
+end module m
+
+subroutine f3 (c, d)
+ use m
+ implicit none
+ integer i, c(64), d(64)
+ !$omp parallel reduction (inscan, +: a) ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" }
+ ! ...
+ !$omp end parallel
+ !$omp sections reduction (inscan, +: a) ! { dg-error "'inscan' REDUCTION clause on construct other than DO, SIMD, DO SIMD, PARALLEL DO, PARALLEL DO SIMD" }
+ !$omp section
+ ! ...
+ !$omp end sections
+end
diff --git a/gcc/testsuite/gfortran.dg/gomp/scan-7.f90 b/gcc/testsuite/gfortran.dg/gomp/scan-7.f90
new file mode 100644
index 0000000..0446c5e
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/scan-7.f90
@@ -0,0 +1,60 @@
+module m
+ integer a, b
+end module m
+
+subroutine f2 (c, d, e, f)
+ use m
+ implicit none
+ integer i, l, c(*), d(*), e(64), f(64)
+ l = 1
+
+ !$omp do reduction (inscan, +: a) linear (l) ! { dg-error "'inscan' 'reduction' clause used together with 'linear' clause for a variable other than loop iterator" }
+ do i = 1, 64
+ block
+ a = a + c(i)
+ l = l + 1
+ end block
+ !$omp scan inclusive (a)
+ d(i) = a
+ end do
+end
+
+subroutine f5 (c, d)
+ use m
+ implicit none
+ integer i, c(64), d(64)
+ !$omp simd reduction (inscan, +: a)
+ do i = 1, 64
+ d(i) = a
+ !$omp scan exclusive (a, b) ! { dg-error "'b' specified in 'exclusive' clause but not in 'inscan' 'reduction' clause on the containing construct" }
+ a = a + c(i)
+ end do
+end
+
+subroutine f6 (c, d)
+ use m
+ implicit none
+ integer i, c(64), d(64)
+ !$omp simd reduction (inscan, +: a, b) ! { dg-error "'b' specified in 'inscan' 'reduction' clause but not in 'scan' directive clause" }
+ do i = 1, 64
+ d(i) = a
+ !$omp scan exclusive (a)
+ a = a + c(i)
+ end do
+end
+
+subroutine f7
+ use m
+ implicit none
+ integer i
+ !$omp simd reduction (inscan, +: a)
+ do i = 1, 64
+ if (i == 27) goto 123 ! { dg-error "invalid branch to/from OpenMP structured block" }
+ ! { dg-warning "is not in the same block as the GOTO statement" "" { target *-*-* } .-1 }
+ !$omp scan exclusive (a)
+ block
+123 a = 0 ! { dg-error "jump to label 'l1'" "" { target c++ } }
+ ! { dg-warning "is not in the same block as the GOTO statement" "" { target *-*-* } .-1 }
+ end block
+ end do
+end
diff --git a/gcc/testsuite/gfortran.dg/gomp/task-detach-1.f90 b/gcc/testsuite/gfortran.dg/gomp/task-detach-1.f90
new file mode 100644
index 0000000..020be13
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/task-detach-1.f90
@@ -0,0 +1,29 @@
+! { dg-do compile }
+! { dg-options "-fopenmp" }
+
+program task_detach_1
+ use iso_c_binding, only: c_intptr_t
+ implicit none
+
+ integer, parameter :: omp_event_handle_kind = c_intptr_t
+ integer (kind=omp_event_handle_kind) :: x, y
+ integer(1) :: z
+
+ !$omp task detach(x) detach(y) ! { dg-error "Failed to match clause at \\\(1\\\)" }
+ !$omp end task ! { dg-error "Unexpected !\\\$OMP END TASK statement at \\\(1\\\)" }
+
+ !$omp task mergeable detach(x) ! { dg-error "'DETACH' clause at \\\(1\\\) must not be used together with 'MERGEABLE' clause" }
+ !$omp end task
+
+ !$omp task detach(x) mergeable ! { dg-error "'DETACH' clause at \\\(1\\\) must not be used together with 'MERGEABLE' clause" }
+ !$omp end task
+
+ !$omp task detach(z) ! { dg-error "'z' at \\\(1\\\) should be of type integer\\\(kind=omp_event_handle_kind\\\)" }
+ !$omp end task ! { dg-error "Unexpected !\\\$OMP END TASK statement at \\\(1\\\)" }
+
+ !$omp task detach (x) firstprivate (x) ! { dg-error "DETACH event handle 'x' in FIRSTPRIVATE clause at \\\(1\\\)" }
+ !$omp end task
+
+ !$omp task detach (x) shared (x) ! { dg-error "DETACH event handle 'x' in SHARED clause at \\\(1\\\)" }
+ !$omp end task
+end program
diff --git a/gcc/testsuite/gfortran.dg/gomp/use_device_ptr-1.f90 b/gcc/testsuite/gfortran.dg/gomp/use_device_ptr-1.f90
new file mode 100644
index 0000000..6f47fdd
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/use_device_ptr-1.f90
@@ -0,0 +1,25 @@
+! { dg-do compile }
+! { dg-additional-options "-fdump-tree-original" }
+
+! PR fortran/98476
+
+use iso_c_binding, only: c_ptr
+implicit none (external, type)
+
+interface
+ subroutine bar(x)
+ import
+ type(c_ptr), value :: x
+ end
+end interface
+
+type(c_ptr) :: x
+
+!$omp target data map(alloc: x)
+!$omp target data use_device_ptr(x)
+ call bar(x)
+!$omp end target data
+!$omp end target data
+end
+
+! { dg-final { scan-tree-dump-times "pragma omp target data use_device_ptr\\(x\\)" 1 "original" } }
diff --git a/gcc/testsuite/gfortran.dg/graphite/graphite.exp b/gcc/testsuite/gfortran.dg/graphite/graphite.exp
index 05e5522..b22ec4a 100644
--- a/gcc/testsuite/gfortran.dg/graphite/graphite.exp
+++ b/gcc/testsuite/gfortran.dg/graphite/graphite.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gfortran.dg/ieee/ieee.exp b/gcc/testsuite/gfortran.dg/ieee/ieee.exp
index f1b76e3..d4f820c 100644
--- a/gcc/testsuite/gfortran.dg/ieee/ieee.exp
+++ b/gcc/testsuite/gfortran.dg/ieee/ieee.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/gfortran.dg/implied_do_3.f90 b/gcc/testsuite/gfortran.dg/implied_do_3.f90
new file mode 100644
index 0000000..8206332
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/implied_do_3.f90
@@ -0,0 +1,14 @@
+! { dg-do compile }
+!
+! Test the fix for PR98458 in which array expressions within the implied-do
+! array constructor caused an ICE in trans-array.c(gfc_conv_array_initializer).
+!
+! Contributed by Xiao Liu <xiao.liu@compiler-dev.com>
+!
+program test
+ implicit none
+ integer :: i
+ integer, parameter :: t(6) = [1,2,3,4,5,6]
+ integer, parameter :: tmp(3,2) = reshape([(t(i:i+1),i=1,3)],[3,2])
+ print *, tmp ! Used to ICE
+end
diff --git a/gcc/testsuite/gfortran.dg/interface_assignment_7.f90 b/gcc/testsuite/gfortran.dg/interface_assignment_7.f90
new file mode 100644
index 0000000..89e15e50
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/interface_assignment_7.f90
@@ -0,0 +1,84 @@
+! { dg-do compile }
+! PR 96843 - this was wrongly rejected.
+! Test case by William Clodius.
+
+module test_shape_mismatch
+! Implements zero based bitsets of size up to HUGE(0_INT32).
+! The current code uses 32 bit integers to store the bits and uses all 32 bits.
+! The code assumes two's complement integers, and treats negative integers as
+! having the sign bit set.
+
+ use, intrinsic :: &
+ iso_fortran_env, only: &
+ bits_kind => int32, &
+ block_kind => int64, &
+ int8, &
+ dp => real64
+
+ implicit none
+
+ private
+
+ integer, parameter :: &
+ block_size = bit_size(0_block_kind), &
+ block_shift = int( ceiling( log( real(block_size, dp) )/log(2._dp) ) )
+
+ public :: bits_kind
+! Public constant
+
+ public :: bitset_t
+! Public type
+
+ public :: &
+ assignment(=)
+
+ type, abstract :: bitset_t
+ private
+ integer(bits_kind) :: num_bits
+
+ end type bitset_t
+
+
+ type, extends(bitset_t) :: bitset_large
+ private
+ integer(block_kind), private, allocatable :: blocks(:)
+
+ end type bitset_large
+
+ interface assign
+
+ pure module subroutine assign_log8_large( self, alogical )
+!! Used to define assignment from an array of type LOG for bitset_t
+ type(bitset_large), intent(out) :: self
+ logical(int8), intent(in) :: alogical(:)
+ end subroutine assign_log8_large
+
+ end interface assign
+
+contains
+
+ pure module subroutine assign_log8_large( self, alogical )
+! Used to define assignment from an array of type LOG for bitset_t
+ type(bitset_large), intent(out) :: self
+ logical(int8), intent(in) :: alogical(:)
+
+ integer(bits_kind) :: blocks
+ integer(bits_kind) :: log_size
+ integer(bits_kind) :: index
+
+ log_size = size( alogical, kind=bits_kind )
+ self % num_bits = log_size
+ if ( log_size == 0 ) then
+ blocks = 0
+
+ else
+ blocks = (log_size-1)/block_size + 1
+
+ end if
+ allocate( self % blocks( blocks ) )
+ self % blocks(:) = 0
+
+ return
+ end subroutine assign_log8_large
+
+end module test_shape_mismatch
diff --git a/gcc/testsuite/gfortran.dg/iso_fortran_binding_uint8_array.f90 b/gcc/testsuite/gfortran.dg/iso_fortran_binding_uint8_array.f90
new file mode 100644
index 0000000..b28bfa7
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/iso_fortran_binding_uint8_array.f90
@@ -0,0 +1,11 @@
+! { dg-do run }
+! { dg-additional-sources iso_fortran_binding_uint8_array_driver.c }
+
+module m
+ use iso_c_binding
+contains
+ subroutine fsub( x ) bind(C, name="fsub")
+ integer(c_int8_t), intent(inout) :: x(:)
+ x = x+1
+ end subroutine
+end module
diff --git a/gcc/testsuite/gfortran.dg/iso_fortran_binding_uint8_array_driver.c b/gcc/testsuite/gfortran.dg/iso_fortran_binding_uint8_array_driver.c
new file mode 100644
index 0000000..79b8a14
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/iso_fortran_binding_uint8_array_driver.c
@@ -0,0 +1,25 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <inttypes.h>
+#include "../../../libgfortran/ISO_Fortran_binding.h"
+
+extern void fsub(CFI_cdesc_t *);
+
+int main(void)
+{
+ int8_t x[] = {1,2,3,4};
+ int N = sizeof(x)/sizeof(x[0]);
+
+ CFI_CDESC_T(1) dat;
+ CFI_index_t ext[1];
+ ext[0] = (CFI_index_t)N;
+ int rc = CFI_establish((CFI_cdesc_t *)&dat, &x, CFI_attribute_other,
+ CFI_type_int8_t, 0, (CFI_rank_t)1, ext);
+ printf("CFI_establish call returned: %d\n", rc);
+
+ fsub((CFI_cdesc_t *)&dat );
+
+ for (int i=0; i<N; i++)
+ printf("%"PRId8"\n", x[i]);
+ return 0;
+}
diff --git a/gcc/testsuite/gfortran.dg/lto/lto.exp b/gcc/testsuite/gfortran.dg/lto/lto.exp
index 32b2d57..5bb7ffd 100644
--- a/gcc/testsuite/gfortran.dg/lto/lto.exp
+++ b/gcc/testsuite/gfortran.dg/lto/lto.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gfortran.dg/module_procedure_5.f90 b/gcc/testsuite/gfortran.dg/module_procedure_5.f90
new file mode 100644
index 0000000..3dafa06
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/module_procedure_5.f90
@@ -0,0 +1,31 @@
+! { dg-do compile }
+!
+! Test the fix for the testcase in comment 23 of PR96320, which used to
+! fail with the message: Variable ‘new_foo’ cannot appear in a variable
+! definition context.
+!
+! Contributed by Damian Rouson <damian@sourceryinstitute.org>
+!
+module foobar
+ implicit none
+
+ type foo
+ integer bar
+ end type
+
+ interface
+ pure module function create() result(new_foo)
+ implicit none
+ type(foo) new_foo
+ end function
+ end interface
+
+contains
+ module procedure create
+ new_foo%bar = 1 ! Error here
+ end procedure
+end module
+
+ use foobar
+ print *, create ()
+end
diff --git a/gcc/testsuite/gfortran.dg/module_procedure_6.f90 b/gcc/testsuite/gfortran.dg/module_procedure_6.f90
new file mode 100644
index 0000000..e642d52
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/module_procedure_6.f90
@@ -0,0 +1,51 @@
+! { dg-do run }
+!
+! Test the fix for the testcase in comment 24 of PR96320, which used to
+! fail with the message: ‘set_user_defined’ must be a module procedure or
+! an external procedure with an explicit interface at (1)
+!
+! Contributed by Damian Rouson <damian@sourceryinstitute.org>
+!
+module hole_interface
+ type hole_t
+ integer :: user_defined
+ real :: hole_diameter
+ contains
+ procedure set_user_defined
+ procedure set_diameter
+ end type
+
+ interface
+ module subroutine set_diameter (this, diameter)
+ class(hole_t) :: this
+ real :: diameter
+ end subroutine
+
+ module subroutine set_user_defined(this, user_defined)
+ class(hole_t) :: this
+ integer :: user_defined
+ end subroutine
+ end interface
+
+contains
+ module procedure set_user_defined
+ this%user_defined = user_defined
+ end procedure
+
+ module procedure set_diameter
+ this%hole_diameter = diameter
+ if (this%user_defined .lt. 0) then
+ call this%set_user_defined (0)
+ end if
+ end procedure
+end module
+
+ use hole_interface ! Error was here
+ type (hole_t) :: ht = hole_t (-1, 0.0)
+ call ht%set_diameter(1.0)
+ if ((ht%user_defined .ne. 0) .and. (ht%hole_diameter .ne. 1.0)) stop 1
+ call ht%set_user_defined (5)
+ if ((ht%user_defined .ne. 5) .and. (ht%hole_diameter .ne. 1.0)) stop 2
+ call ht%set_diameter(2.0)
+ if ((ht%user_defined .ne. 5) .and. (ht%hole_diameter .ne. 2.0)) stop 3
+end
diff --git a/gcc/testsuite/gfortran.dg/pr70070.f90 b/gcc/testsuite/gfortran.dg/pr70070.f90
new file mode 100644
index 0000000..04a6dd5
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr70070.f90
@@ -0,0 +1,8 @@
+! { dg-do compile }
+! PR fortran/70070 - ICE on initializing character data beyond min/max bound
+
+program p
+ character(1) :: a, b
+ data (a(i:i),i=0,0) /1*'#'/ ! { dg-error "Substring start index" }
+ data (b(i:i),i=2,3) /2*'#'/ ! { dg-error "Substring end index" }
+end
diff --git a/gcc/testsuite/gfortran.dg/pr91862.f90 b/gcc/testsuite/gfortran.dg/pr91862.f90
new file mode 100644
index 0000000..17d5cdd
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr91862.f90
@@ -0,0 +1,26 @@
+! { dg-do compile }
+!
+! Check that PR91862 remains fixed by patch for PRs 96100/101.
+!
+! Contributed by Gerhard Steinmetz <>gscfq@t-online.de>
+!
+ call foo
+ call bar
+contains
+
+ subroutine foo
+ integer :: i
+ character(3) :: a(3) = 'abc'
+ character(1) :: b(1)
+ b = [([ (a(1)(i:1), i=1,1) ])]
+ print *, b
+ end subroutine
+
+ subroutine bar
+ integer :: i
+ character(3) :: a(3) = 'abc'
+ character(1) :: b(1)
+ b = [([ (a(1)(1:i), i=1,1) ])]
+ print *, b
+ end subroutine
+end
diff --git a/gcc/testsuite/gfortran.dg/pr93685_1.f90 b/gcc/testsuite/gfortran.dg/pr93685_1.f90
new file mode 100644
index 0000000..34d6e2c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr93685_1.f90
@@ -0,0 +1,20 @@
+! { dg-do run }
+! PR93685 - ICE in gfc_constructor_append_expr, at fortran/constructor.c:135
+
+program p
+ implicit none
+ type t
+ character, pointer :: a
+ end type t
+ type u
+ integer, pointer :: i
+ end type u
+ type(t) :: x
+ type(u) :: y
+ character, target :: c = 'c'
+ integer , target :: i = 10
+ data x%a /c/
+ data y%i /i/
+ if (x% a /= "c") stop 1
+ if (y% i /= 10) stop 2
+end
diff --git a/gcc/testsuite/gfortran.dg/pr93685_2.f90 b/gcc/testsuite/gfortran.dg/pr93685_2.f90
new file mode 100644
index 0000000..a09ce7e
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr93685_2.f90
@@ -0,0 +1,18 @@
+! { dg-do compile }
+! PR93685 - ICE in gfc_constructor_append_expr, at fortran/constructor.c:135
+
+program p
+ implicit none
+ type t
+ character :: a
+ end type t
+ type u
+ integer :: i
+ end type u
+ type(t) :: x
+ type(u) :: y
+ character, target :: c = 'c'
+ integer , target :: i = 10
+ data x%a /c/ ! { dg-error "non-constant initialization expression" }
+ data y%i /i/ ! { dg-error "non-constant initialization expression" }
+end
diff --git a/gcc/testsuite/gfortran.dg/pr97673.f90 b/gcc/testsuite/gfortran.dg/pr97673.f90
new file mode 100644
index 0000000..33b8143
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr97673.f90
@@ -0,0 +1,14 @@
+! { dg-do compile }
+! { dg-options "-O3 -fno-early-inlining --param large-stack-frame=4000" }
+
+subroutine sub3noiso(a, b)
+ use iso_c_binding
+ implicit none
+ character(len=1,kind=c_char) :: a(*), b
+ character(len=1,kind=c_char):: x,z
+ integer(c_int) :: y
+ value :: b
+ print *, a(1:2), b
+entry sub3noisoEntry(x,y,z)
+ x = 'd'
+end subroutine sub3noiso
diff --git a/gcc/testsuite/gfortran.dg/pr98284.f90 b/gcc/testsuite/gfortran.dg/pr98284.f90
new file mode 100644
index 0000000..aa4b95c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr98284.f90
@@ -0,0 +1,12 @@
+! { dg-do compile }
+! PR fortran/98284 - ICE in get_array_index
+
+program p
+ implicit none
+ type t
+ integer, allocatable :: h(:)
+ end type t
+ type(t) :: u
+ integer :: i
+ data (u% h(i),i=1,8) /8*1/ ! { dg-error "cannot have the ALLOCATABLE attribute" }
+end
diff --git a/gcc/testsuite/gfortran.dg/pr98661.f90 b/gcc/testsuite/gfortran.dg/pr98661.f90
new file mode 100644
index 0000000..40ddff0
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr98661.f90
@@ -0,0 +1,19 @@
+! { dg-do compile }
+! PR fortran/98661 - valgrind issues with error recovery
+!
+! Test issues related to former testcase charlen_03.f90
+program p
+ implicit none
+ type t
+ character(:), pointer :: c(n) ! { dg-error "must have a deferred shape" }
+ real, allocatable :: x(n) ! { dg-error "must have a deferred shape" }
+ end type
+end
+
+subroutine s
+! no 'implicit none'
+ type u
+ character(:), pointer :: c(n) ! { dg-error "must have a deferred shape" }
+ real, allocatable :: x(n) ! { dg-error "must have a deferred shape" }
+ end type
+end
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_52.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_52.f90
new file mode 100644
index 0000000..cb7cf70
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_52.f90
@@ -0,0 +1,72 @@
+! { dg-do run }
+!
+! Test the fix for PRs93924 & 93925.
+!
+! Contributed by Martin Stein <mscfd@gmx.net>
+!
+module cs
+
+implicit none
+
+integer, target :: integer_target
+
+abstract interface
+ function classStar_map_ifc(x) result(y)
+ class(*), pointer :: y
+ class(*), target, intent(in) :: x
+ end function classStar_map_ifc
+end interface
+
+contains
+
+ function fun(x) result(y)
+ class(*), pointer :: y
+ class(*), target, intent(in) :: x
+ select type (x)
+ type is (integer)
+ integer_target = x ! Deals with dangling target.
+ y => integer_target
+ class default
+ y => null()
+ end select
+ end function fun
+
+ function apply(f, x) result(y)
+ procedure(classStar_map_ifc) :: f
+ integer, intent(in) :: x
+ integer :: y
+ class(*), pointer :: p
+ y = 0 ! Get rid of 'y' undefined warning
+ p => f (x)
+ select type (p)
+ type is (integer)
+ y = p
+ end select
+ end function apply
+
+ function selector() result(f)
+ procedure(classStar_map_ifc), pointer :: f
+ f => fun
+ end function selector
+
+end module cs
+
+
+program classStar_map
+
+use cs
+implicit none
+
+integer :: x, y
+procedure(classStar_map_ifc), pointer :: f
+
+x = 123654
+f => selector () ! Fixed by second chunk in patch
+y = apply (f, x) ! Fixed by first chunk in patch
+if (x .ne. y) stop 1
+
+x = 2 * x
+y = apply (fun, x) ! PR93925; fixed as above
+if (x .ne. y) stop 2
+
+end program classStar_map
diff --git a/gcc/testsuite/gfortran.dg/prof/prof.exp b/gcc/testsuite/gfortran.dg/prof/prof.exp
index c12ad99..cf01059 100644
--- a/gcc/testsuite/gfortran.dg/prof/prof.exp
+++ b/gcc/testsuite/gfortran.dg/prof/prof.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gfortran.dg/select_rank_5.f90 b/gcc/testsuite/gfortran.dg/select_rank_5.f90
new file mode 100644
index 0000000..55aa9e1
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/select_rank_5.f90
@@ -0,0 +1,44 @@
+! { dg-do run }
+!
+! Test the fixes for PR97723 and PR97694.
+!
+! Contributed by Martin <mscfd@gmx.net>
+!
+module mod
+ implicit none
+ private
+ public cssel
+
+contains
+
+function cssel(x) result(s)
+ character(len=:), allocatable :: s
+ class(*), dimension(..), optional, intent(in) :: x
+ if (present(x)) then
+ select rank (x)
+ rank (0)
+ s = '0' ! PR97723: ‘assign’ at (1) is not a function
+ ! PR97694: ICE in trans-stmt.c(trans_associate_var)
+ rank (1)
+ s = '1' ! PR97723: ‘assign’ at (1) is not a function
+ rank default
+ s = '?' ! PR97723: ‘assign’ at (1) is not a function
+ end select
+ else
+ s = '-'
+ end if
+end function cssel
+
+end module mod
+
+program classstar_rank
+ use mod
+ implicit none
+
+ integer :: x
+ real, dimension(1:3) :: y
+ logical, dimension(1:2,1:2) :: z
+
+ if (any ([cssel(x),cssel(y),cssel(z),cssel()] .ne. ['0','1','?','-'])) stop 1
+
+end program classstar_rank
diff --git a/gcc/testsuite/gfortran.dg/structure_constructor_17.f90 b/gcc/testsuite/gfortran.dg/structure_constructor_17.f90
new file mode 100644
index 0000000..8b8230c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/structure_constructor_17.f90
@@ -0,0 +1,21 @@
+! { dg-do compile }
+!
+! Test the fix for PR97612.
+!
+! Contributed by Martin Stein <mscfd@gmx.net>
+!
+program constructor_allocatable
+ implicit none
+
+ type :: s
+ integer, dimension(:), allocatable :: u
+ end type s
+
+ type :: t
+ type(s), dimension(:), allocatable :: x
+ end type t
+
+ type(t) :: a = t()
+ if (allocated (a%x)) stop 1
+
+end program constructor_allocatable
diff --git a/gcc/testsuite/gfortran.dg/unlimited_polymorphic_32.f03 b/gcc/testsuite/gfortran.dg/unlimited_polymorphic_32.f03
new file mode 100644
index 0000000..23d0540
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/unlimited_polymorphic_32.f03
@@ -0,0 +1,59 @@
+! { dg-do run }
+!
+! Test the fix of the test case referenced in comment 17 of PR83118.
+!
+! Contributed by Damian Rouson <damian@sourceryinstitute.org>
+!
+ implicit none
+ type Wrapper
+ class(*), allocatable :: elements(:)
+ end type
+ type Mytype
+ real(4) :: r = 42.0
+ end type
+
+ call driver
+contains
+ subroutine driver
+ class(*), allocatable :: obj
+ type(Wrapper) w
+ integer(4) :: expected4(2) = [42_4, 43_4]
+ integer(8) :: expected8(3) = [42_8, 43_8, 44_8]
+
+ w = new_wrapper (expected4)
+ obj = w
+ call test (obj, 0)
+ obj = new_wrapper (expected8) ! Used to generate a linker error
+ call test (obj, 10)
+ obj = new_wrapper ([mytype (99.0)])
+ call test (obj, 100)
+ obj = Mytype (42.0) ! Used to generate a linker error
+ call test (obj, 1000)
+ end subroutine
+ function new_wrapper(array) result (res)
+ class(*) :: array(:)
+ type(Wrapper) :: res
+ res%elements = array ! Used to runtime segfault
+ end function
+ subroutine test (arg, idx)
+ class(*) :: arg
+ integer :: idx
+ select type (arg)
+ type is (wrapper)
+ select type (z => arg%elements)
+ type is (integer(4))
+ if (any (z .ne. [42_4, 43_4])) stop 1 + idx
+ type is (integer(8))
+ if (any (z .ne. [42_8, 43_8, 44_8])) stop 1 + idx
+ type is (Mytype)
+ if (abs (z(1)%r - 99.0) .ge. 1e-6) stop 1 + idx
+ class default
+ stop 2 + idx
+ end select
+ type is (Mytype)
+ if (abs (arg%r - 42.0) .ge. 1e-6) stop 1 + idx
+ class default
+ stop 3 + idx
+ end select
+ end subroutine
+end
diff --git a/gcc/testsuite/gfortran.dg/vect/vect.exp b/gcc/testsuite/gfortran.dg/vect/vect.exp
index 1db04a3..f6feae1 100644
--- a/gcc/testsuite/gfortran.dg/vect/vect.exp
+++ b/gcc/testsuite/gfortran.dg/vect/vect.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/compile.exp b/gcc/testsuite/gfortran.fortran-torture/compile/compile.exp
index 6795dff..2117a6c 100644
--- a/gcc/testsuite/gfortran.fortran-torture/compile/compile.exp
+++ b/gcc/testsuite/gfortran.fortran-torture/compile/compile.exp
@@ -1,5 +1,5 @@
# Expect driver script for GCC Regression Tests
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/execute.exp b/gcc/testsuite/gfortran.fortran-torture/execute/execute.exp
index cb045cf..4de1a86 100644
--- a/gcc/testsuite/gfortran.fortran-torture/execute/execute.exp
+++ b/gcc/testsuite/gfortran.fortran-torture/execute/execute.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gnat.dg/asan1.adb b/gcc/testsuite/gnat.dg/asan1.adb
new file mode 100644
index 0000000..a4bc59a
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/asan1.adb
@@ -0,0 +1,15 @@
+-- { dg-do compile }
+-- { dg-additional-sources asan1_pkg.ads }
+-- { dg-options "-fsanitize=address" }
+-- { dg-skip-if "" no_fsanitize_address }
+
+with Asan1_Pkg;
+
+procedure Asan1 is
+ use Asan1_Pkg;
+
+ X, Y : E;
+begin
+ X := C (N);
+ Y := V;
+end Asan1;
diff --git a/gcc/testsuite/gnat.dg/asan1_pkg.ads b/gcc/testsuite/gnat.dg/asan1_pkg.ads
new file mode 100644
index 0000000..fbbc1c5
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/asan1_pkg.ads
@@ -0,0 +1,9 @@
+package Asan1_Pkg is
+ subtype E is Integer;
+ type T is array (1..32) of E;
+
+ function N return T;
+ function C (P : T) return E;
+
+ V : constant E := C (N);
+end Asan1_Pkg;
diff --git a/gcc/testsuite/gnat.dg/debug15.adb b/gcc/testsuite/gnat.dg/debug15.adb
deleted file mode 100644
index 75470e3..0000000
--- a/gcc/testsuite/gnat.dg/debug15.adb
+++ /dev/null
@@ -1,23 +0,0 @@
--- { dg-do compile }
--- { dg-options "-g1" }
-
-procedure Debug15 is
-
- type Shape is abstract tagged record
- S : Integer;
- end record;
-
- type Rectangle is new Shape with record
- R : Integer;
- end record;
-
- X : Integer;
-
- R: Rectangle := (1, 2);
- S: Shape'Class := R;
-
-begin
- X := 12;
-end;
-
--- { dg-final { scan-assembler-not "loc 2" } }
diff --git a/gcc/testsuite/gnat.dg/dg.exp b/gcc/testsuite/gnat.dg/dg.exp
index 7a72577..e9b1389 100644
--- a/gcc/testsuite/gnat.dg/dg.exp
+++ b/gcc/testsuite/gnat.dg/dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gnat.dg/gcov/gcov.exp b/gcc/testsuite/gnat.dg/gcov/gcov.exp
index 734b4ba..e667248 100644
--- a/gcc/testsuite/gnat.dg/gcov/gcov.exp
+++ b/gcc/testsuite/gnat.dg/gcov/gcov.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gnat.dg/interface6.adb b/gcc/testsuite/gnat.dg/interface6.adb
index 04eb1e1..556a0b7 100644
--- a/gcc/testsuite/gnat.dg/interface6.adb
+++ b/gcc/testsuite/gnat.dg/interface6.adb
@@ -35,7 +35,7 @@ procedure Interface6 is
end Test;
procedure Test_Instance1 is new Test (T => Rec_Type); -- { dg-error "actual must implement all interfaces of formal \"T\"" }
- procedure Test_Instance1 is new Test (T => Rec_Type1); -- { dg-error "Actual \"Rec_Type1\" must implement interface \"TI2\"" }
+ procedure Test_Instance1 is new Test (T => Rec_Type1); -- { dg-error "actual \"Rec_Type1\" must implement interface \"TI2\"" }
procedure Test_Instance2 is new Test (T => Rec_Type2);
procedure Test_Instance12 is new Test (T => Rec_Type12);
diff --git a/gcc/testsuite/gnat.dg/modular6.adb b/gcc/testsuite/gnat.dg/modular6.adb
new file mode 100644
index 0000000..f0f1c80
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/modular6.adb
@@ -0,0 +1,15 @@
+-- { dg-do compile }
+
+with Ada.Text_IO; use Ada.Text_IO;
+
+procedure Modular6 is
+ Max : Integer := 0;
+
+ type Modulus is mod 3;
+begin
+ Max := 30;
+
+ for N in 1 .. Max loop
+ Put_Line("N: " & Integer'Image(N) & " Modulus: " & Integer'Image(Modulus'Modulus) & " Mod:" & Modulus'Image(Modulus'Mod(N)));
+ end loop;
+end;
diff --git a/gcc/testsuite/gnat.dg/not_null.adb b/gcc/testsuite/gnat.dg/not_null.adb
index 3cbd86c..8f863d8 100644
--- a/gcc/testsuite/gnat.dg/not_null.adb
+++ b/gcc/testsuite/gnat.dg/not_null.adb
@@ -10,9 +10,9 @@ procedure not_null is
begin
declare
- pragma Warnings (Off, "*null not allowed in null-excluding objects");
+ pragma Warnings (Off, "*""null"" not allowed in null-excluding objects");
package Inst_2 is new GPack (null);
- pragma Warnings (On, "*null not allowed in null-excluding objects");
+ pragma Warnings (On, "*""null"" not allowed in null-excluding objects");
begin
null;
end;
diff --git a/gcc/testsuite/gnat.dg/opt39.adb b/gcc/testsuite/gnat.dg/opt39.adb
index 0a5ef67..f2e983f 100644
--- a/gcc/testsuite/gnat.dg/opt39.adb
+++ b/gcc/testsuite/gnat.dg/opt39.adb
@@ -1,5 +1,6 @@
-- { dg-do compile }
-- { dg-options "-O2 -fno-inline -fdump-tree-optimized" }
+-- { dg-additional-options "-cargs --param=sra-max-scalarization-size-Ospeed=32 -margs" { target powerpc*-*-* } }
procedure Opt39 (I : Integer) is
diff --git a/gcc/testsuite/gnat.dg/protected_func.adb b/gcc/testsuite/gnat.dg/protected_func.adb
index f3eead4..055bf5d 100644
--- a/gcc/testsuite/gnat.dg/protected_func.adb
+++ b/gcc/testsuite/gnat.dg/protected_func.adb
@@ -4,8 +4,8 @@ package body Protected_Func with SPARK_Mode is
protected body Prot_Obj is
function Prot_Func return Integer is
begin
- Comp := Comp + 1; -- { dg-error "protected function cannot modify protected object" }
- Part_Of_Constit := Part_Of_Constit + 1; -- { dg-error "protected function cannot modify protected object" }
+ Comp := Comp + 1; -- { dg-error "protected function cannot modify its protected object" }
+ Part_Of_Constit := Part_Of_Constit + 1; -- { dg-error "protected function cannot modify its protected object" }
return Comp + Part_Of_Constit;
end Prot_Func;
diff --git a/gcc/testsuite/gnat.dg/specs/specs.exp b/gcc/testsuite/gnat.dg/specs/specs.exp
index 2a30cde..e5eb34e 100644
--- a/gcc/testsuite/gnat.dg/specs/specs.exp
+++ b/gcc/testsuite/gnat.dg/specs/specs.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gnat.dg/sso/sso.exp b/gcc/testsuite/gnat.dg/sso/sso.exp
index c1ee836..f60e8ea 100644
--- a/gcc/testsuite/gnat.dg/sso/sso.exp
+++ b/gcc/testsuite/gnat.dg/sso/sso.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/gnat.dg/thunk2.adb b/gcc/testsuite/gnat.dg/thunk2.adb
new file mode 100644
index 0000000..96ed883
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/thunk2.adb
@@ -0,0 +1,11 @@
+-- { dg-do compile }
+-- { dg-options "-O2" }
+
+package body Thunk2 is
+
+ overriding function Element (Self : Ext; Name : String) return Ext is
+ begin
+ return Self;
+ end;
+
+end Thunk2;
diff --git a/gcc/testsuite/gnat.dg/thunk2.ads b/gcc/testsuite/gnat.dg/thunk2.ads
new file mode 100644
index 0000000..05dc45b
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/thunk2.ads
@@ -0,0 +1,12 @@
+with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
+with Thunk2_Pkg; use Thunk2_Pkg;
+
+package Thunk2 is
+
+ type Ext is new Root and I with record
+ S : Unbounded_String;
+ end record;
+
+ overriding function Element (Self : Ext; Name : String) return Ext;
+
+end Thunk2;
diff --git a/gcc/testsuite/gnat.dg/thunk2_pkg.ads b/gcc/testsuite/gnat.dg/thunk2_pkg.ads
new file mode 100644
index 0000000..7579989
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/thunk2_pkg.ads
@@ -0,0 +1,11 @@
+package Thunk2_Pkg is
+
+ type Root is tagged record
+ A : Integer;
+ end record;
+
+ type I is interface;
+
+ function Element (Self : I; Name : String) return I is abstract;
+
+end Thunk2_Pkg;
diff --git a/gcc/testsuite/go.dg/dg.exp b/gcc/testsuite/go.dg/dg.exp
index 209fc98..fdf53e7 100644
--- a/gcc/testsuite/go.dg/dg.exp
+++ b/gcc/testsuite/go.dg/dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/go.go-torture/execute/execute.exp b/gcc/testsuite/go.go-torture/execute/execute.exp
index 718137f..ef3b9df 100644
--- a/gcc/testsuite/go.go-torture/execute/execute.exp
+++ b/gcc/testsuite/go.go-torture/execute/execute.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/go.test/go-test.exp b/gcc/testsuite/go.test/go-test.exp
index d129e1c..f167545 100644
--- a/gcc/testsuite/go.test/go-test.exp
+++ b/gcc/testsuite/go.test/go-test.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# Written by Ian Lance Taylor <iant@google.com>.
# This program is free software; you can redistribute it and/or modify
@@ -101,50 +101,31 @@ proc errchk { test opts } {
set changed ""
while { $changed != $copy_line } {
set changed $copy_line
- regsub "\(// \[^\"\]*\"\[^\"\]*\)\" \"" $copy_line "\\1|" out_line
+ regsub {(// [^"]*"[^"]*)" "} $copy_line {\1|} out_line
set copy_line $out_line
}
- regsub "// \(GCCGO_\)?ERROR \"\(\[^\"\]*\)\" *\(\\*/\)?$" $copy_line "// \{ dg-error \"\\2\" \}\\3" out_line
- if [string match "*dg-error*\\\[*" $out_line] {
- set index [string first "dg-error" $out_line]
- regsub -start $index -all "\\\\\\\[" $out_line "\\\\\\\\\\\[" out_line
- }
- if [string match "*dg-error*\\\]*" $out_line] {
- set index [string first "dg-error" $out_line]
- regsub -start $index -all "\\\\\\\]" $out_line "\\\\\\\\\\\]" out_line
- }
- if [string match "*dg-error*.\**" $out_line] {
- # I worked out the right number of backslashes by
- # experimentation, not analysis.
- regsub -all "\\.\\*" $out_line "\\\\\[ -~\\\\\]*" out_line
- }
- if [string match "*dg-error*\\\[?\\\]*" $out_line] {
- set index [string first "dg-error" $out_line]
- regsub -all "\\\[\(.\)\\\]" $out_line "\\\\\[\\1\\\\\]" out_line
- }
- if [string match "*dg-error*\{*" $out_line] {
- set index [string first "dg-error" $out_line]
- regsub -start $index -all "\(\[^\\\\]\)\{" $out_line "\\1\\\\\[\\\{\\\\\]" out_line
- }
- if [string match "*dg-error*\}*\}" $out_line] {
- set index [string first "dg-error" $out_line]
- regsub -start $index -all "\(\[^\\\\]\)\}\(.\)" $out_line "\\1\\\\\[\\\}\\\\\]\\2" out_line
- }
- if [string match "*dg-error*\\\[^\\\\\]\(*" $out_line] {
- set index [string first "dg-error" $out_line]
- regsub -start $index -all "\\\\\\\(" $out_line "\\\\\[\\\(\\\\\]" out_line
- }
- if [string match "*dg-error*\\\[^\\\\\]\)*\}" $out_line] {
- set index [string first "dg-error" $out_line]
- regsub -start $index -all "\\\\\\\)\(.\)" $out_line "\\\\\[\\\)\\\\\]\\1" out_line
- }
- # Special case for bug332, in which the error message wants to
- # match the file name, which is not what dg-error expects.
- if [string match "*dg-error*bug332*" $out_line] {
- set index [string first "dg-error" $out_line]
- regsub -start $index "bug332" $out_line "undefined type" out_line
+ set index [string first // $copy_line]
+ set eindex [string first ERROR $copy_line]
+ if { $index >= 0 && $eindex > $index } {
+ # We're putting the regexp in curly braces, so replace any
+ # curly braces in the regexp with hex escapes.
+ regsub -start $index -all "\{" $copy_line {\x7b} copy_line
+ regsub -start $index -all "\}" $copy_line {\x7d} copy_line
+
+ # Replace .* with [ -~]* because .* will eat newlines.
+ # We can't easily use (?n) because this regexp will appear
+ # in the middle of a large regexp.
+ regsub -all {\.\*} $copy_line {[ -~]*} copy_line
}
+
+ # Change
+ # // ERROR "string"
+ # to
+ # // { dg-error {string} }
+ # The latter is what go-dg-runtest expects.
+ regsub {// (GCCGO_)?ERROR "([^"]*)"([^"]*)$} $copy_line "// \{ dg-error \{\\2\} \}\\3" out_line
+
puts $fdout $out_line
}
close $fdin
@@ -274,6 +255,53 @@ proc go-set-goarch { } {
setenv GOARCH $goarch
}
+# This be kept in sync with libgo/configure.ac.
+proc go-set-goos { } {
+ global target_triplet
+
+ switch -glob $target_triplet {
+ "*-*-darwin*" {
+ set goos "darwin"
+ }
+ "*-*-freebsd*" {
+ set goos "freebsd"
+ }
+ "*-*-irix6*" {
+ set goos "irix"
+ }
+ "*-*-linux*" {
+ set goos "linux"
+ }
+ "*-*-netbsd*" {
+ set goos "netbsd"
+ }
+ "*-*-openbsd*" {
+ set goos "openbsd"
+ }
+ "*-*-dragonfly*" {
+ set goos "dragonfly"
+ }
+ "*-*-rtems*" {
+ set goos "rtems"
+ }
+ "*-*-solaris2*" {
+ set goos "solaris"
+ }
+ "*-*-aix*" {
+ set goos "aix"
+ }
+ "*-*-gnu*" {
+ set goos "hurd"
+ }
+ default {
+ perror "$target_triplet: unhandled GOOS"
+ return
+ }
+ }
+ verbose -log "Setting GOOS=$goos" 1
+ setenv GOOS $goos
+}
+
# Take a list of files and return a lists of lists, where each list is
# the set of files in the same package.
proc go-find-packages { test name files } {
@@ -310,6 +338,27 @@ proc go-find-packages { test name files } {
return $packages
}
+proc go-gc-match { name } {
+ verbose -log "go-gc-match $name"
+ set idx [string first "," $name]
+ if { $idx >= 0 } {
+ set left [string range $name 0 [expr $idx - 1]]
+ set right [string range $name [expr $idx + 1] end]
+ return [expr [go-gc-match $left] && [go-gc-match $right]]
+ }
+ if { [string index $name 0] == "!" && [string index $name 1] == "!" } {
+ return 0
+ }
+ if { [string index $name 0] == "!" } {
+ return [expr ! [go-gc-match [string range $name 1 end]]]
+ }
+ if { $name == [getenv GOARCH] || $name == [getenv GOOS] || $name == "gccgo" } {
+ return 1
+ }
+
+ return 0
+}
+
proc go-gc-tests { } {
global srcdir subdir
global runtests
@@ -330,8 +379,9 @@ proc go-gc-tests { } {
set options ""
lappend options "additional_flags=$DEFAULT_GOCFLAGS"
- # Set GOARCH for tests that need it.
+ # Set GOARCH and GOOS for tests that need it.
go-set-goarch
+ go-set-goos
# Running all the torture options takes too long and, since the
# frontend ignores the standard options, it doesn't significantly
@@ -451,73 +501,61 @@ proc go-gc-tests { } {
set lines_ok 1
+ set test_line ""
while 1 {
- if { [gets $fd test_line] < 0 } {
- close $fd
- clone_output "$test: could not read first line"
+ if { [gets $fd file_line] < 0 } {
+ if [eof $fd] {
+ break
+ }
+ clone_output "$test: read failed"
unresolved $name
set lines_ok 0
break
}
- if { [ string match "*nacl*exit 0*" $test_line ] \
- || [ string match "*exit 0*nacl*" $test_line ] \
- || [ string match "*Android*exit 0*" $test_line ] \
- || [ string match "*exit 0*Android*" $test_line ] \
- || [ string match "*\"\$GOOS\" == windows*" $test_line ] } {
+ if { [ string match "*nacl*exit 0*" $file_line ] \
+ || [ string match "*exit 0*nacl*" $file_line ] \
+ || [ string match "*Android*exit 0*" $file_line ] \
+ || [ string match "*exit 0*Android*" $file_line ] \
+ || [ string match "*\"\$GOOS\" == windows*" $file_line ] } {
continue
}
- if { [ string match "// +build *" $test_line ] } {
- set matches_pos 0
- set matches_neg 0
- if { [ regexp -line "\[ \][getenv GOARCH]\(\[ \]\|\$\)" $test_line ] } {
- set matches_pos 1
- } elseif { [ regexp -line "\[ \]\![getenv GOARCH]\(\[ \]\|\$\)" $test_line ] } {
- set matches_neg 1
- } elseif { [ regexp -line "\[ \]linux\(\[ \]\|\$\)" $test_line ] } {
- set matches_pos 1
- } elseif { [ regexp -line "\[ \]\!linux\(\[ \]\|\$\)" $test_line ] } {
- set matches_neg 1
- } elseif { [ regexp -line "\[ \]\!windows\(\[ \]\|\$\)" $test_line ] } {
- set matches_pos 1
- } elseif { [ regexp -line "\[ \]windows\(\[ \]\|\$\)" $test_line ] } {
- set matches_neg 1
+ if ![string match "// *" $file_line] {
+ if { $file_line != "" } {
+ break
}
- if { $matches_pos == 1 && $matches_neg == 0 } {
+ continue
+ }
+
+ if { [ string match "// +build *" $file_line ] } {
+ set words [split $file_line]
+ set matches 0
+ for { set idx 2 } { $idx < [llength $words] } { incr idx } {
+ if { [go-gc-match [lindex $words $idx]] } {
+ set matches 1
+ break
+ }
+ }
+ if { $matches == 1 } {
continue
}
- close $fd
unsupported $name
set lines_ok 0
+ break
}
- break
- }
-
- if { $lines_ok == 0 } {
- continue
+ if { $test_line == "" } {
+ set test_line $file_line
+ }
}
- set lineno 1
- set test_line1 $test_line
+ close $fd
- while { [eval "string match \"//*&&\" \${test_line$lineno}"] } {
- set lineno [expr $lineno + 1]
- if { [eval "gets \$fd test_line$lineno"] < 0 } {
- close $fd
- clone_output "$test: could not read line $lineno"
- unresolved $name
- set lines_ok 0
- break
- }
- }
if { $lines_ok == 0 } {
continue
}
- close $fd
-
# runtest_file_p is already run above, and the code below can run
# runtest_file_p again, make sure everything for this test is
# performed if the above runtest_file_p decided this runtest
@@ -636,7 +674,7 @@ proc go-gc-tests { } {
go-execute-xfail $test
} elseif { $test_line == "// errorcheck" } {
errchk $test ""
- } elseif { $test_line == "// errorcheckdir" } {
+ } elseif { $test_line == "// errorcheckdir" || $test_line == "// errorcheckdir -n" } {
set hold_runtests $runtests
set runtests "go-test.exp"
set dir "[file rootname $test].dir"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug13343.go b/gcc/testsuite/go.test/test/fixedbugs/bug13343.go
new file mode 100644
index 0000000..a7febea
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug13343.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var (
+ a, b = f() // ERROR "initialization loop|depends upon itself|depend upon each other"
+ c = b // GCCGO_ERROR "depends upon itself|depend upon each other"
+)
+
+func f() (int, int) {
+ return c, c
+}
+
+func main() {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug19403.go b/gcc/testsuite/go.test/test/fixedbugs/bug19403.go
new file mode 100644
index 0000000..94c0fb4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug19403.go
@@ -0,0 +1,134 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test for golang.org/issue/19403.
+// F15 should not be clobbered by float-to-int conversion on ARM.
+// This test requires enough locals that can be put in registers that the compiler can choose to use F15.
+package main
+
+var count float32 = 16
+var i0 int
+var i1 int
+var i2 int
+var i3 int
+var i4 int
+var i5 int
+var i6 int
+var i7 int
+var i8 int
+var i9 int
+var i10 int
+var i11 int
+var i12 int
+var i13 int
+var i14 int
+var i15 int
+var i16 int
+
+func main() {
+ var f0 float32 = 0.0
+ var f1 float32 = 1.0
+ var f2 float32 = 2.0
+ var f3 float32 = 3.0
+ var f4 float32 = 4.0
+ var f5 float32 = 5.0
+ var f6 float32 = 6.0
+ var f7 float32 = 7.0
+ var f8 float32 = 8.0
+ var f9 float32 = 9.0
+ var f10 float32 = 10.0
+ var f11 float32 = 11.0
+ var f12 float32 = 12.0
+ var f13 float32 = 13.0
+ var f14 float32 = 14.0
+ var f15 float32 = 15.0
+ var f16 float32 = 16.0
+ i0 = int(f0)
+ i1 = int(f1)
+ i2 = int(f2)
+ i3 = int(f3)
+ i4 = int(f4)
+ i5 = int(f5)
+ i6 = int(f6)
+ i7 = int(f7)
+ i8 = int(f8)
+ i9 = int(f9)
+ i10 = int(f10)
+ i11 = int(f11)
+ i12 = int(f12)
+ i13 = int(f13)
+ i14 = int(f14)
+ i15 = int(f15)
+ i16 = int(f16)
+ if f16 != count {
+ panic("fail")
+ }
+ count -= 1
+ if f15 != count {
+ panic("fail")
+ }
+ count -= 1
+ if f14 != count {
+ panic("fail")
+ }
+ count -= 1
+ if f13 != count {
+ panic("fail")
+ }
+ count -= 1
+ if f12 != count {
+ panic("fail")
+ }
+ count -= 1
+ if f11 != count {
+ panic("fail")
+ }
+ count -= 1
+ if f10 != count {
+ panic("fail")
+ }
+ count -= 1
+ if f9 != count {
+ panic("fail")
+ }
+ count -= 1
+ if f8 != count {
+ panic("fail")
+ }
+ count -= 1
+ if f7 != count {
+ panic("fail")
+ }
+ count -= 1
+ if f6 != count {
+ panic("fail")
+ }
+ count -= 1
+ if f5 != count {
+ panic("fail")
+ }
+ count -= 1
+ if f4 != count {
+ panic("fail")
+ }
+ count -= 1
+ if f3 != count {
+ panic("fail")
+ }
+ count -= 1
+ if f2 != count {
+ panic("fail")
+ }
+ count -= 1
+ if f1 != count {
+ panic("fail")
+ }
+ count -= 1
+ if f0 != count {
+ panic("fail")
+ }
+ count -= 1
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug195.go b/gcc/testsuite/go.test/test/fixedbugs/bug195.go
index aef7bd2..94f61ff 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug195.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug195.go
@@ -19,7 +19,7 @@ type I4 interface { // GC_ERROR "invalid recursive type I4\n\tLINE: I4 refers to
}
type I5 interface { // GC_ERROR "invalid recursive type I5\n\tLINE: I5 refers to\n\tLINE+4: I6 refers to\n\tLINE: I5$"
- I6 // GCCGO_ERROR "interface"
+ I6
}
type I6 interface {
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug251.go b/gcc/testsuite/go.test/test/fixedbugs/bug251.go
index 706bb8d..977aa49 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug251.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug251.go
@@ -8,7 +8,7 @@ package main
type I1 interface { // GC_ERROR "invalid recursive type"
m() I2
- I2 // GCCGO_ERROR "loop|interface"
+ I2
}
type I2 interface {
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug302.go b/gcc/testsuite/go.test/test/fixedbugs/bug302.go
index 87f9d4e..a2ab661 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug302.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug302.go
@@ -1,4 +1,4 @@
-// +build !nacl,!js
+// +build !nacl,!js,gc
// run
// Copyright 2010 The Go Authors. All rights reserved.
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug369.dir/main.go b/gcc/testsuite/go.test/test/fixedbugs/bug369.dir/main.go
new file mode 100644
index 0000000..03b53a5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug369.dir/main.go
@@ -0,0 +1,55 @@
+// Copyright 2011 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "flag"
+ "os"
+ "runtime"
+ "testing"
+
+ fast "./fast"
+ slow "./slow"
+)
+
+var buf = make([]byte, 1048576)
+
+func BenchmarkFastNonASCII(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ fast.NonASCII(buf, 0)
+ }
+}
+
+func BenchmarkSlowNonASCII(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ slow.NonASCII(buf, 0)
+ }
+}
+
+func main() {
+ testing.Init()
+ os.Args = []string{os.Args[0], "-test.benchtime=100ms"}
+ flag.Parse()
+
+ rslow := testing.Benchmark(BenchmarkSlowNonASCII)
+ rfast := testing.Benchmark(BenchmarkFastNonASCII)
+ tslow := rslow.NsPerOp()
+ tfast := rfast.NsPerOp()
+
+ // Optimization should be good for at least 2x, but be forgiving.
+ // On the ARM simulator we see closer to 1.5x.
+ speedup := float64(tslow) / float64(tfast)
+ want := 1.8
+ if runtime.GOARCH == "arm" {
+ want = 1.3
+ }
+ if speedup < want {
+ // TODO(rsc): doesn't work on linux-amd64 or darwin-amd64 builders, nor on
+ // a Lenovo x200 (linux-amd64) laptop.
+ // println("fast:", tfast, "slow:", tslow, "speedup:", speedup, "want:", want)
+ // println("not fast enough")
+ // os.Exit(1)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug369.go b/gcc/testsuite/go.test/test/fixedbugs/bug369.go
index 9316f7a..83f638d 100644
--- a/gcc/testsuite/go.test/test/fixedbugs/bug369.go
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug369.go
@@ -1,4 +1,4 @@
-// +build !nacl,!js,!windows
+// +build !nacl,!js,!windows,gc
// run
// Copyright 2011 The Go Authors. All rights reserved.
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug483.go b/gcc/testsuite/go.test/test/fixedbugs/bug483.go
new file mode 100644
index 0000000..8db6425
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug483.go
@@ -0,0 +1,36 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test for a garbage collection bug involving not
+// marking x as having its address taken by &x[0]
+// when x is an array value.
+
+package main
+
+import (
+ "bytes"
+ "fmt"
+ "runtime"
+)
+
+func main() {
+ var x = [4]struct{ x, y interface{} }{
+ {"a", "b"},
+ {"c", "d"},
+ {"e", "f"},
+ {"g", "h"},
+ }
+
+ var buf bytes.Buffer
+ for _, z := range x {
+ runtime.GC()
+ fmt.Fprintf(&buf, "%s %s ", z.x.(string), z.y.(string))
+ }
+
+ if buf.String() != "a b c d e f g h " {
+ println("BUG wrong output\n", buf.String())
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug484.go b/gcc/testsuite/go.test/test/fixedbugs/bug484.go
new file mode 100644
index 0000000..bd4fa51
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug484.go
@@ -0,0 +1,78 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// The liveness code used to say that, in func g, s was live
+// starting at its declaration, because it appears to have its
+// address taken by the closure (different s, but the parser
+// gets slightly confused, a separate bug). The liveness analysis
+// saw s as having its address taken but the register optimizer
+// did not. This mismatch meant that s would be marked live
+// (and therefore initialized) at the call to f, but the register optimizer
+// would optimize away the initialization of s before f, causing the
+// garbage collector to use unused data.
+// The register optimizer has been changed to respect the
+// same "address taken" flag that the liveness analysis uses,
+// even if it cannot see any address being taken in the actual
+// machine code. This is conservative but keeps the two consistent,
+// which is the most important thing.
+
+package main
+
+import "runtime"
+
+//go:noinline
+func f() interface{} {
+ runtime.GC()
+ return nil
+}
+
+//go:noinline
+func g() {
+ var s interface{}
+ _ = func() {
+ s := f()
+ _ = s
+ }
+ s = f()
+ useiface(s)
+ useiface(s)
+}
+
+//go:noinline
+func useiface(x interface{}) {
+}
+
+//go:noinline
+func h() {
+ var x [16]uintptr
+ for i := range x {
+ x[i] = 1
+ }
+
+ useint(x[0])
+ useint(x[1])
+ useint(x[2])
+ useint(x[3])
+}
+
+//go:noinline
+func useint(x uintptr) {
+}
+
+func main() {
+ // scribble non-zero values on stack
+ h()
+ // call function that used to let the garbage collector
+ // see uninitialized stack values; it will see the
+ // nonzero values.
+ g()
+}
+
+func big(x int) {
+ if x >= 0 {
+ big(x - 1)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug485.go b/gcc/testsuite/go.test/test/fixedbugs/bug485.go
new file mode 100644
index 0000000..c99faed
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug485.go
@@ -0,0 +1,39 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Gccgo chose the wrong embedded method when the same type appeared
+// at different levels and the correct choice was not the first
+// appearance of the type in a depth-first search.
+
+package main
+
+type embedded string
+
+func (s embedded) val() string {
+ return string(s)
+}
+
+type A struct {
+ embedded
+}
+
+type B struct {
+ A
+ embedded
+}
+
+func main() {
+ b := &B{
+ A: A{
+ embedded: "a",
+ },
+ embedded: "b",
+ }
+ s := b.val()
+ if s != "b" {
+ panic(s)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug486.go b/gcc/testsuite/go.test/test/fixedbugs/bug486.go
new file mode 100644
index 0000000..9ad23b3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug486.go
@@ -0,0 +1,14 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// The gccgo lexer had a bug handling nested comments.
+// http://gcc.gnu.org/PR61746
+// http://code.google.com/p/gofrontend/issues/detail?id=35
+
+package main
+
+/*// comment
+*/
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug490.go b/gcc/testsuite/go.test/test/fixedbugs/bug490.go
new file mode 100644
index 0000000..387a680
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug490.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// The gccgo compiler used to crash building a comparison between an
+// interface and an empty struct literal.
+
+package p
+
+type S struct{}
+
+func F(v interface{}) bool {
+ return v == S{}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug491.go b/gcc/testsuite/go.test/test/fixedbugs/bug491.go
new file mode 100644
index 0000000..39a3509
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug491.go
@@ -0,0 +1,110 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test order of calls to builtin functions.
+// Discovered during CL 144530045 review.
+
+package main
+
+func main() {
+ // append
+ {
+ x := make([]int, 0)
+ f := func() int { x = make([]int, 2); return 2 }
+ a, b, c := append(x, 1), f(), append(x, 1)
+ if len(a) != 1 || len(c) != 3 {
+ bug()
+ println("append call not ordered:", len(a), b, len(c))
+ }
+ }
+
+ // cap
+ {
+ x := make([]int, 1)
+ f := func() int { x = make([]int, 3); return 2 }
+ a, b, c := cap(x), f(), cap(x)
+ if a != 1 || c != 3 {
+ bug()
+ println("cap call not ordered:", a, b, c)
+ }
+ }
+
+ // complex
+ {
+ x := 1.0
+ f := func() int { x = 3; return 2 }
+ a, b, c := complex(x, 0), f(), complex(x, 0)
+ if real(a) != 1 || real(c) != 3 {
+ bug()
+ println("complex call not ordered:", a, b, c)
+ }
+ }
+
+ // copy
+ {
+ tmp := make([]int, 100)
+ x := make([]int, 1)
+ f := func() int { x = make([]int, 3); return 2 }
+ a, b, c := copy(tmp, x), f(), copy(tmp, x)
+ if a != 1 || c != 3 {
+ bug()
+ println("copy call not ordered:", a, b, c)
+ }
+ }
+
+ // imag
+ {
+ x := 1i
+ f := func() int { x = 3i; return 2 }
+ a, b, c := imag(x), f(), imag(x)
+ if a != 1 || c != 3 {
+ bug()
+ println("imag call not ordered:", a, b, c)
+ }
+ }
+
+ // len
+ {
+ x := make([]int, 1)
+ f := func() int { x = make([]int, 3); return 2 }
+ a, b, c := len(x), f(), len(x)
+ if a != 1 || c != 3 {
+ bug()
+ println("len call not ordered:", a, b, c)
+ }
+ }
+
+ // make
+ {
+ x := 1
+ f := func() int { x = 3; return 2 }
+ a, b, c := make([]int, x), f(), make([]int, x)
+ if len(a) != 1 || len(c) != 3 {
+ bug()
+ println("make call not ordered:", len(a), b, len(c))
+ }
+ }
+
+ // real
+ {
+ x := 1 + 0i
+ f := func() int { x = 3; return 2 }
+ a, b, c := real(x), f(), real(x)
+ if a != 1 || c != 3 {
+ bug()
+ println("real call not ordered:", a, b, c)
+ }
+ }
+}
+
+var bugged = false
+
+func bug() {
+ if !bugged {
+ println("BUG")
+ bugged = true
+ }
+} \ No newline at end of file
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug495.go b/gcc/testsuite/go.test/test/fixedbugs/bug495.go
new file mode 100644
index 0000000..dfc0c9f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug495.go
@@ -0,0 +1,20 @@
+// compile
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Gccgo used to give an incorrect error
+// bug495.go:16:2: error: missing statement after label
+
+package p
+
+func F(i int) {
+ switch i {
+ case 0:
+ goto lab
+ lab:
+ fallthrough
+ case 1:
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug498.go b/gcc/testsuite/go.test/test/fixedbugs/bug498.go
new file mode 100644
index 0000000..91b5c2f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug498.go
@@ -0,0 +1,23 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Gccgo incorrectly rejected an assignment to multiple instances of
+// the same variable.
+
+package main
+
+var a int
+
+func F() {
+ a, a, a = 1, 2, 3
+}
+
+func main() {
+ F()
+ if a != 3 {
+ panic(a)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug510.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/bug510.dir/a.go
new file mode 100644
index 0000000..db1cfef
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug510.dir/a.go
@@ -0,0 +1,13 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+import "reflect"
+
+type A = map[int] bool
+
+func F() interface{} {
+ return reflect.New(reflect.TypeOf((*A)(nil))).Elem().Interface()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug510.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/bug510.dir/b.go
new file mode 100644
index 0000000..56b0201
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug510.dir/b.go
@@ -0,0 +1,14 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "./a"
+
+func main() {
+ _, ok := a.F().(*map[int]bool)
+ if !ok {
+ panic("bad type")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/bug510.go b/gcc/testsuite/go.test/test/fixedbugs/bug510.go
new file mode 100644
index 0000000..8a6da5d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/bug510.go
@@ -0,0 +1,9 @@
+// rundir
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Gccgo confused type descriptors for aliases.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/gcc61204.go b/gcc/testsuite/go.test/test/fixedbugs/gcc61204.go
new file mode 100644
index 0000000..e175f83
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/gcc61204.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// PR61204: Making temporaries for zero-sized types caused an ICE in gccgo.
+// This is a reduction of a program reported by GoSmith.
+
+package main
+
+func main() {
+ type t [0]int
+ var v t
+ v, _ = [0]int{}, 0
+ _ = v
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/gcc61244.go b/gcc/testsuite/go.test/test/fixedbugs/gcc61244.go
new file mode 100644
index 0000000..642bc61
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/gcc61244.go
@@ -0,0 +1,19 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// PR61244: Type descriptors expressions were not traversed, causing an ICE
+// in gccgo when producing the backend representation.
+// This is a reduction of a program reported by GoSmith.
+
+package main
+
+const a = 0
+
+func main() {
+ switch i := (interface{})(a); i.(type) {
+ case [0]string:
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/gcc61246.go b/gcc/testsuite/go.test/test/fixedbugs/gcc61246.go
new file mode 100644
index 0000000..797d6c7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/gcc61246.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// PR61246: Switch conditions could be untyped, causing an ICE when the
+// conditions were lowered into temporaries.
+// This is a reduction of a program reported by GoSmith.
+
+package main
+
+func main() {
+ switch 1 != 1 {
+ default:
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/gcc61248.go b/gcc/testsuite/go.test/test/fixedbugs/gcc61248.go
new file mode 100644
index 0000000..cb59c9f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/gcc61248.go
@@ -0,0 +1,14 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// PR61248: Transformations to recover calls made them fail typechecking in gccgo.
+
+package main
+
+func main() {
+ var f func(int, interface{})
+ go f(0, recover())
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/gcc61253.go b/gcc/testsuite/go.test/test/fixedbugs/gcc61253.go
new file mode 100644
index 0000000..696b26e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/gcc61253.go
@@ -0,0 +1,20 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// PR61253: gccgo incorrectly parsed the
+// `RecvStmt = ExpressionList "=" RecvExpr` production.
+
+package main
+
+func main() {
+ c := make(chan int)
+ v := new(int)
+ b := new(bool)
+ select {
+ case (*v), (*b) = <-c:
+ }
+
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/gcc61254.go b/gcc/testsuite/go.test/test/fixedbugs/gcc61254.go
new file mode 100644
index 0000000..82e666e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/gcc61254.go
@@ -0,0 +1,13 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// PR61254: gccgo failed to compile a slice expression with missing indices.
+
+package main
+
+func main() {
+ [][]int{}[:][0][0]++
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/gcc61255.go b/gcc/testsuite/go.test/test/fixedbugs/gcc61255.go
new file mode 100644
index 0000000..288fb54
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/gcc61255.go
@@ -0,0 +1,13 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// PR61255: gccgo failed to compile IncDec statements on variadic functions.
+
+package main
+
+func main() {
+ append([]byte{}, 0)[0]++
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/gcc61258.go b/gcc/testsuite/go.test/test/fixedbugs/gcc61258.go
new file mode 100644
index 0000000..e4dcb337
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/gcc61258.go
@@ -0,0 +1,13 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// PR61258: gccgo crashed when deleting a zero-sized key from a map.
+
+package main
+
+func main() {
+ delete(make(map[[0]bool]int), [0]bool{})
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/gcc61264.go b/gcc/testsuite/go.test/test/fixedbugs/gcc61264.go
new file mode 100644
index 0000000..a4092f5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/gcc61264.go
@@ -0,0 +1,13 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// PR61264: IncDec statements involving composite literals caused in ICE in gccgo.
+
+package main
+
+func main() {
+ map[int]int{}[0]++
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/gcc61265.go b/gcc/testsuite/go.test/test/fixedbugs/gcc61265.go
new file mode 100644
index 0000000..be79233
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/gcc61265.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// PR61265: The gccgo middle-end failed to represent array composite literals
+// where the elements are zero-sized values.
+// This is a reduction of a program reported by GoSmith.
+
+package p
+
+var a = [1][0]int{B}[0]
+var B = [0]int{}
+var c = [1]struct{}{D}[0]
+var D = struct{}{}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/gcc61273.go b/gcc/testsuite/go.test/test/fixedbugs/gcc61273.go
new file mode 100644
index 0000000..ed78b1e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/gcc61273.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// PR61273: gccgo failed to compile a SendStmt in the PostStmt of a ForClause
+// that involved predefined constants.
+
+package main
+
+func main() {
+ c := make(chan bool, 1)
+ for ; false; c <- false {
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/gcc65755.go b/gcc/testsuite/go.test/test/fixedbugs/gcc65755.go
new file mode 100644
index 0000000..1e5d116
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/gcc65755.go
@@ -0,0 +1,37 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// PR65755: Incorrect type descriptor for type defined within method.
+
+package main
+
+import "reflect"
+
+type S1 struct{}
+
+func (S1) Fix() string {
+ type s struct {
+ f int
+ }
+ return reflect.TypeOf(s{}).Field(0).Name
+}
+
+type S2 struct{}
+
+func (S2) Fix() string {
+ type s struct {
+ g bool
+ }
+ return reflect.TypeOf(s{}).Field(0).Name
+}
+
+func main() {
+ f1 := S1{}.Fix()
+ f2 := S2{}.Fix()
+ if f1 != "f" || f2 != "g" {
+ panic(f1 + f2)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10047.go b/gcc/testsuite/go.test/test/fixedbugs/issue10047.go
new file mode 100644
index 0000000..dcbde48
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10047.go
@@ -0,0 +1,19 @@
+// compile
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 10047: gccgo failed to compile a type switch where the switch variable
+// and the base type of a case share the same identifier.
+
+package main
+
+func main() {
+ type t int
+ var p interface{}
+ switch t := p.(type) {
+ case t:
+ _ = t
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10066.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue10066.dir/a.go
new file mode 100644
index 0000000..8bb3b30
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10066.dir/a.go
@@ -0,0 +1,11 @@
+package a
+
+import "log"
+
+func Do() {
+ Do2()
+}
+
+func Do2() {
+ println(log.Ldate | log.Ltime | log.Lshortfile)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10066.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue10066.dir/b.go
new file mode 100644
index 0000000..46d2f55
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10066.dir/b.go
@@ -0,0 +1,7 @@
+package b
+
+import "./a"
+
+func test() {
+ a.Do()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10066.go b/gcc/testsuite/go.test/test/fixedbugs/issue10066.go
new file mode 100644
index 0000000..3ea552f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10066.go
@@ -0,0 +1,10 @@
+// compiledir
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 10066: constants are printed in the original form
+// in export data. This is the opposite of issue 9076.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10135.go b/gcc/testsuite/go.test/test/fixedbugs/issue10135.go
new file mode 100644
index 0000000..9985e5a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10135.go
@@ -0,0 +1,25 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 10135: append a slice with zero-sized element used
+// to always return a slice with the same data pointer as the
+// old slice, even if it's nil, so this program used to panic
+// with nil pointer dereference because after append, s is a
+// slice with nil data pointer but non-zero len and cap.
+
+package main
+
+type empty struct{}
+
+func main() {
+ var s []empty
+
+ s = append(s, empty{})
+
+ for _, v := range s {
+ _ = v
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10219.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue10219.dir/a.go
new file mode 100644
index 0000000..c61d02b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10219.dir/a.go
@@ -0,0 +1,24 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type m struct {
+ S string
+}
+
+var g = struct {
+ m
+ P string
+}{
+ m{"a"},
+ "",
+}
+
+type S struct{}
+
+func (s *S) M(p string) {
+ r := g
+ r.P = p
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10219.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue10219.dir/b.go
new file mode 100644
index 0000000..09d8911
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10219.dir/b.go
@@ -0,0 +1,11 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "./a"
+
+func F() *a.S {
+ return &a.S{}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10219.dir/c.go b/gcc/testsuite/go.test/test/fixedbugs/issue10219.dir/c.go
new file mode 100644
index 0000000..d331495
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10219.dir/c.go
@@ -0,0 +1,12 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package c
+
+import "./b"
+
+func F() {
+ s := b.F()
+ s.M("c")
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10219.go b/gcc/testsuite/go.test/test/fixedbugs/issue10219.go
new file mode 100644
index 0000000..325818c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10219.go
@@ -0,0 +1,10 @@
+// compiledir
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 10219: failure of inlinable function that uses embedded types
+// in an anonymous struct via :=.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10253.go b/gcc/testsuite/go.test/test/fixedbugs/issue10253.go
new file mode 100644
index 0000000..fafca6c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10253.go
@@ -0,0 +1,26 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 10253: cmd/7g: bad codegen, probably regopt related
+
+package main
+
+func main() {
+ if !eq() {
+ panic("wrong value")
+ }
+}
+
+var text = "abc"
+var s = &str{text}
+
+func eq() bool {
+ return text[0] == s.text[0]
+}
+
+type str struct {
+ text string
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10284.go b/gcc/testsuite/go.test/test/fixedbugs/issue10284.go
new file mode 100644
index 0000000..39028e7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10284.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 10284: gccgo failed to allow converting a user-defined
+// type whose underlying type is uintptr to unsafe.Pointer.
+
+package p
+
+import "unsafe"
+
+type T uintptr
+
+var _ unsafe.Pointer = unsafe.Pointer(T(0))
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10320.go b/gcc/testsuite/go.test/test/fixedbugs/issue10320.go
new file mode 100644
index 0000000..c7e2bab
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10320.go
@@ -0,0 +1,55 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 10320: 7g failed to compile a program because it attempted
+// to use ZR as register. Other programs compiled but failed to
+// execute correctly because they clobbered the g register.
+
+package main
+
+func main() {
+ var x00, x01, x02, x03, x04, x05, x06, x07, x08, x09 int
+ var x10, x11, x12, x13, x14, x15, x16, x17, x18, x19 int
+ var x20, x21, x22, x23, x24, x25, x26, x27, x28, x29 int
+ var x30, x31, x32 int
+
+ _ = x00
+ _ = x01
+ _ = x02
+ _ = x03
+ _ = x04
+ _ = x05
+ _ = x06
+ _ = x07
+ _ = x08
+ _ = x09
+
+ _ = x10
+ _ = x11
+ _ = x12
+ _ = x13
+ _ = x14
+ _ = x15
+ _ = x16
+ _ = x17
+ _ = x18
+ _ = x19
+
+ _ = x20
+ _ = x21
+ _ = x22
+ _ = x23
+ _ = x24
+ _ = x25
+ _ = x26
+ _ = x27
+ _ = x28
+ _ = x29
+
+ _ = x30
+ _ = x31
+ _ = x32
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10332.go b/gcc/testsuite/go.test/test/fixedbugs/issue10332.go
new file mode 100644
index 0000000..096b7a5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10332.go
@@ -0,0 +1,25 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// The PkgPath of unexported fields of types defined in package main was incorrectly ""
+
+package main
+
+import (
+ "fmt"
+ "reflect"
+)
+
+type foo struct {
+ bar int
+}
+
+func main() {
+ pkgpath := reflect.ValueOf(foo{}).Type().Field(0).PkgPath
+ if pkgpath != "main" {
+ fmt.Printf("BUG: incorrect PkgPath: %v", pkgpath)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10353.go b/gcc/testsuite/go.test/test/fixedbugs/issue10353.go
new file mode 100644
index 0000000..87771d4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10353.go
@@ -0,0 +1,49 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 10253: cmd/gc: incorrect escape analysis of closures
+// Partial call x.foo was not promoted to heap.
+
+package main
+
+func main() {
+ c := make(chan bool)
+ // Create a new goroutine to get a default-size stack segment.
+ go func() {
+ x := new(X)
+ clos(x.foo)()
+ c <- true
+ }()
+ <-c
+}
+
+type X int
+
+func (x *X) foo() {
+}
+
+func clos(x func()) func() {
+ f := func() {
+ print("")
+ x() // This statement crashed, because the partial call was allocated on the old stack.
+ }
+ // Grow stack so that partial call x becomes invalid if allocated on stack.
+ growstack(10000)
+ c := make(chan bool)
+ // Spoil the previous stack segment.
+ go func() {
+ c <- true
+ }()
+ <-c
+ return f
+}
+
+func growstack(x int) {
+ if x == 0 {
+ return
+ }
+ growstack(x - 1)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10407.go b/gcc/testsuite/go.test/test/fixedbugs/issue10407.go
new file mode 100644
index 0000000..c6461a3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10407.go
@@ -0,0 +1,16 @@
+// runoutput
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 10407: gccgo failed to remove carriage returns
+// from raw string literals.
+
+package main
+
+import "fmt"
+
+func main() {
+ fmt.Println("package main\nfunc main() { if `a\rb\r\nc` != \"ab\\nc\" { panic(42) }}")
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10441.go b/gcc/testsuite/go.test/test/fixedbugs/issue10441.go
new file mode 100644
index 0000000..9bc4948
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10441.go
@@ -0,0 +1,17 @@
+// build
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func bar() {
+ f := func() {}
+ foo(&f)
+}
+
+//go:noinline
+func foo(f *func()) func() {
+ return *f
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10486.go b/gcc/testsuite/go.test/test/fixedbugs/issue10486.go
new file mode 100644
index 0000000..3b62cb9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10486.go
@@ -0,0 +1,31 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 10486.
+// Check stack walk during div by zero fault,
+// especially on software divide systems.
+
+package main
+
+import "runtime"
+
+var A, B int
+
+func divZero() int {
+ defer func() {
+ if p := recover(); p != nil {
+ var pcs [512]uintptr
+ runtime.Callers(2, pcs[:])
+ runtime.GC()
+ }
+ }()
+ return A / B
+}
+
+func main() {
+ A = 1
+ divZero()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10607.go b/gcc/testsuite/go.test/test/fixedbugs/issue10607.go
new file mode 100644
index 0000000..448a37d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10607.go
@@ -0,0 +1,34 @@
+// +build linux,!ppc64,!riscv64,gc
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that a -B option is passed through when using both internal
+// and external linking mode.
+
+// TODO(jsing): Re-enable on riscv64 when it has support for external
+// linking - see golang.org/issue/36739
+
+package main
+
+import (
+ "fmt"
+ "os"
+ "os/exec"
+ "path/filepath"
+)
+
+func main() {
+ test("internal")
+ test("external")
+}
+
+func test(linkmode string) {
+ out, err := exec.Command("go", "run", "-ldflags", "-B=0x12345678 -linkmode="+linkmode, filepath.Join("fixedbugs", "issue10607a.go")).CombinedOutput()
+ if err != nil {
+ fmt.Printf("BUG: linkmode=%s %v\n%s\n", linkmode, err, out)
+ os.Exit(1)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10607a.go b/gcc/testsuite/go.test/test/fixedbugs/issue10607a.go
new file mode 100644
index 0000000..51399e4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10607a.go
@@ -0,0 +1,81 @@
+// skip
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This is built by issue10607.go with a -B option.
+// Verify that we have one build-id note with the expected value.
+
+package main
+
+import (
+ "bytes"
+ "debug/elf"
+ "fmt"
+ "os"
+)
+
+func main() {
+ f, err := elf.Open("/proc/self/exe")
+ if err != nil {
+ if os.IsNotExist(err) {
+ return
+ }
+ fmt.Fprintln(os.Stderr, "opening /proc/self/exe:", err)
+ os.Exit(1)
+ }
+
+ c := 0
+ fail := false
+ for i, s := range f.Sections {
+ if s.Type != elf.SHT_NOTE {
+ continue
+ }
+
+ d, err := s.Data()
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "reading data of note section %d: %v\n", i, err)
+ continue
+ }
+
+ for len(d) > 0 {
+ namesz := f.ByteOrder.Uint32(d)
+ descsz := f.ByteOrder.Uint32(d[4:])
+ typ := f.ByteOrder.Uint32(d[8:])
+
+ an := (namesz + 3) &^ 3
+ ad := (descsz + 3) &^ 3
+
+ if int(12+an+ad) > len(d) {
+ fmt.Fprintf(os.Stderr, "note section %d too short for header (%d < 12 + align(%d,4) + align(%d,4))\n", i, len(d), namesz, descsz)
+ break
+ }
+
+ // 3 == NT_GNU_BUILD_ID
+ if typ == 3 && namesz == 4 && bytes.Equal(d[12:16], []byte("GNU\000")) {
+ id := string(d[12+an:12+an+descsz])
+ if id == "\x12\x34\x56\x78" {
+ c++
+ } else {
+ fmt.Fprintf(os.Stderr, "wrong build ID data: %q\n", id)
+ fail = true
+ }
+ }
+
+ d = d[12+an+ad:]
+ }
+ }
+
+ if c == 0 {
+ fmt.Fprintln(os.Stderr, "no build-id note")
+ fail = true
+ } else if c > 1 {
+ fmt.Fprintln(os.Stderr, c, "build-id notes")
+ fail = true
+ }
+
+ if fail {
+ os.Exit(1)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10654.go b/gcc/testsuite/go.test/test/fixedbugs/issue10654.go
new file mode 100644
index 0000000..0600a80
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10654.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 10654: Failure to use generated temps
+// for function calls etc. in boolean codegen.
+
+package main
+
+var s string
+
+func main() {
+ if (s == "this") != (s == "that") {
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10700.dir/other.go b/gcc/testsuite/go.test/test/fixedbugs/issue10700.dir/other.go
new file mode 100644
index 0000000..12908b9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10700.dir/other.go
@@ -0,0 +1,10 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package other
+
+type Exported interface {
+ Do()
+ secret()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10700.dir/test.go b/gcc/testsuite/go.test/test/fixedbugs/issue10700.dir/test.go
new file mode 100644
index 0000000..2dfc24a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10700.dir/test.go
@@ -0,0 +1,49 @@
+// errorcheck -0 -m -l
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "./other"
+
+type Imported interface {
+ Do()
+}
+
+type HasAMethod struct {
+ x int
+}
+
+func (me *HasAMethod) Do() {
+ println(me.x)
+}
+
+func InMyCode(x *Imported, y *HasAMethod, z *other.Exported) {
+ x.Do() // ERROR "x\.Do undefined \(type \*Imported is pointer to interface, not interface\)|type that is pointer to interface"
+ x.do() // ERROR "x\.do undefined \(type \*Imported is pointer to interface, not interface\)|type that is pointer to interface"
+ (*x).Do()
+ x.Dont() // ERROR "x\.Dont undefined \(type \*Imported is pointer to interface, not interface\)|type that is pointer to interface"
+ (*x).Dont() // ERROR "\(\*x\)\.Dont undefined \(type Imported has no field or method Dont\)|reference to undefined field or method"
+
+ y.Do()
+ y.do() // ERROR "y\.do undefined \(type \*HasAMethod has no field or method do, but does have Do\)|reference to undefined field or method"
+ (*y).Do()
+ (*y).do() // ERROR "\(\*y\)\.do undefined \(type HasAMethod has no field or method do, but does have Do\)|reference to undefined field or method"
+ y.Dont() // ERROR "y\.Dont undefined \(type \*HasAMethod has no field or method Dont\)|reference to undefined field or method"
+ (*y).Dont() // ERROR "\(\*y\)\.Dont undefined \(type HasAMethod has no field or method Dont\)|reference to undefined field or method"
+
+ z.Do() // ERROR "z\.Do undefined \(type \*other\.Exported is pointer to interface, not interface\)|type that is pointer to interface"
+ z.do() // ERROR "z\.do undefined \(type \*other\.Exported is pointer to interface, not interface\)|type that is pointer to interface"
+ (*z).Do()
+ (*z).do() // ERROR "\(\*z\)\.do undefined \(type other.Exported has no field or method do, but does have Do\)|reference to undefined field or method"
+ z.Dont() // ERROR "z\.Dont undefined \(type \*other\.Exported is pointer to interface, not interface\)|type that is pointer to interface"
+ (*z).Dont() // ERROR "\(\*z\)\.Dont undefined \(type other\.Exported has no field or method Dont\)|reference to undefined field or method"
+ z.secret() // ERROR "z\.secret undefined \(type \*other\.Exported is pointer to interface, not interface\)|type that is pointer to interface"
+ (*z).secret() // ERROR "\(\*z\)\.secret undefined \(cannot refer to unexported field or method secret\)|reference to unexported field or method"
+
+}
+
+func main() {
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10700.go b/gcc/testsuite/go.test/test/fixedbugs/issue10700.go
new file mode 100644
index 0000000..25544ef
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10700.go
@@ -0,0 +1,7 @@
+// errorcheckdir
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10925.go b/gcc/testsuite/go.test/test/fixedbugs/issue10925.go
new file mode 100644
index 0000000..30add82
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10925.go
@@ -0,0 +1,23 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "fmt"
+
+func prototype(xyz []string) {}
+func main() {
+ var got [][]string
+ f := prototype
+ f = func(ss []string) { got = append(got, ss) }
+ for _, s := range []string{"one", "two", "three"} {
+ f([]string{s})
+ }
+ if got[0][0] != "one" || got[1][0] != "two" || got[2][0] != "three" {
+ // Bug's wrong output was [[three] [three] [three]]
+ fmt.Println("Expected [[one] [two] [three]], got", got)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10958.go b/gcc/testsuite/go.test/test/fixedbugs/issue10958.go
new file mode 100644
index 0000000..52487fb
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10958.go
@@ -0,0 +1,95 @@
+// +build !nacl,!js,disabled_see_issue_18589
+// buildrun -t 10 -gcflags=-d=ssa/insert_resched_checks/on,ssa/check/on
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test is disabled because it flakes when run in all.bash
+// on some platforms, but is useful standalone to verify
+// that rescheduling checks are working (and we may wish
+// to investigate the flake, since it suggests that the
+// loop rescheduling check may not work right on those
+// platforms).
+
+// This checks to see that call-free infinite loops do not
+// block garbage collection. IF YOU RUN IT STANDALONE without
+// -gcflags=-d=ssa/insert_resched_checks/on in a not-experimental
+// build, it should hang.
+
+package main
+
+import (
+ "runtime"
+)
+
+var someglobal1 int
+var someglobal2 int
+var someglobal3 int
+
+//go:noinline
+func f() {}
+
+func standinacorner1() {
+ for someglobal1&1 == 0 {
+ someglobal1++
+ someglobal1++
+ }
+}
+
+func standinacorner2(i int) {
+ // contains an irreducible loop containing changes to memory
+ if i != 0 {
+ goto midloop
+ }
+
+loop:
+ if someglobal2&1 != 0 {
+ goto done
+ }
+ someglobal2++
+midloop:
+ someglobal2++
+ goto loop
+
+done:
+ return
+}
+
+func standinacorner3() {
+ for someglobal3&1 == 0 {
+ if someglobal3&2 != 0 {
+ for someglobal3&3 == 2 {
+ someglobal3++
+ someglobal3++
+ someglobal3++
+ someglobal3++
+ }
+ }
+ someglobal3++
+ someglobal3++
+ someglobal3++
+ someglobal3++
+ }
+}
+
+func main() {
+ go standinacorner1()
+ go standinacorner2(0)
+ go standinacorner3()
+ // println("About to stand in a corner1")
+ for someglobal1 == 0 {
+ runtime.Gosched()
+ }
+ // println("About to stand in a corner2")
+ for someglobal2 == 0 {
+ runtime.Gosched()
+ }
+ // println("About to stand in a corner3")
+ for someglobal3 == 0 {
+ runtime.Gosched()
+ }
+ // println("About to GC")
+ runtime.GC()
+ // println("Success")
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10975.go b/gcc/testsuite/go.test/test/fixedbugs/issue10975.go
new file mode 100644
index 0000000..933badf
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10975.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 10975: Returning an invalid interface would cause
+// `internal compiler error: getinarg: not a func`.
+
+package main
+
+type I interface {
+ int // ERROR "interface contains embedded non-interface"
+}
+
+func New() I {
+ return struct{}{}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue10977.go b/gcc/testsuite/go.test/test/fixedbugs/issue10977.go
new file mode 100644
index 0000000..0b18c70
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue10977.go
@@ -0,0 +1,20 @@
+// compile
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type T struct{}
+
+var (
+ t = T{}
+ u = t.New()
+)
+
+func x(T) (int, int) { return 0, 0 }
+
+var _, _ = x(u)
+
+func (T) New() T { return T{} }
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11053.dir/p.go b/gcc/testsuite/go.test/test/fixedbugs/issue11053.dir/p.go
new file mode 100644
index 0000000..81b412a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11053.dir/p.go
@@ -0,0 +1,9 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func Int32(i int32) *int32 {
+ return &i
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11053.dir/p_test.go b/gcc/testsuite/go.test/test/fixedbugs/issue11053.dir/p_test.go
new file mode 100644
index 0000000..542c2a3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11053.dir/p_test.go
@@ -0,0 +1,51 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "p"
+)
+
+type I interface {
+ Add(out *P)
+}
+
+type P struct {
+ V *int32
+}
+
+type T struct{}
+
+var x int32 = 42
+
+func Int32x(i int32) *int32 {
+ return &i
+}
+
+func (T) Add(out *P) {
+ out.V = p.Int32(x) // inlined, p.i.2 moved to heap
+}
+
+var PP P
+var out *P = &PP
+
+func F(s I) interface{} {
+ s.Add(out) // not inlined.
+ return out
+}
+
+var s T
+
+func main() {
+ println("Starting")
+ fmt.Sprint(new(int32))
+ resp := F(s).(*P)
+ println("Before, *resp.V=", *resp.V) // Trashes *resp.V in process of printing.
+ println("After, *resp.V=", *resp.V)
+ if got, want := *resp.V, int32(42); got != want {
+ fmt.Printf("FAIL, got %v, want %v", got, want)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11053.go b/gcc/testsuite/go.test/test/fixedbugs/issue11053.go
new file mode 100644
index 0000000..06005d3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11053.go
@@ -0,0 +1,10 @@
+// rundir
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 11053: Compiler does not run escape analysis on an inlined
+// generated method wrapper.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11053.out b/gcc/testsuite/go.test/test/fixedbugs/issue11053.out
new file mode 100644
index 0000000..a75f73c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11053.out
@@ -0,0 +1,3 @@
+Starting
+Before, *resp.V= 42
+After, *resp.V= 42
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11256.go b/gcc/testsuite/go.test/test/fixedbugs/issue11256.go
new file mode 100644
index 0000000..69fc3e8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11256.go
@@ -0,0 +1,53 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that stack barriers are reset when a goroutine exits without
+// returning.
+
+package main
+
+import (
+ "runtime"
+ "sync/atomic"
+ "time"
+)
+
+func main() {
+ // Let the garbage collector run concurrently.
+ runtime.GOMAXPROCS(2)
+
+ var x [100][]byte
+
+ for i := range x {
+ var done int32
+
+ go func() {
+ // Use enough stack to get stack barriers, but
+ // not so much that we go over _FixedStack.
+ // There's a very narrow window here on most
+ // OSs, so we basically can't do anything (not
+ // even a time.Sleep or a channel).
+ var buf [1024]byte
+ buf[0]++
+ for atomic.LoadInt32(&done) == 0 {
+ runtime.Gosched()
+ }
+ atomic.StoreInt32(&done, 0)
+ // Exit without unwinding stack barriers.
+ runtime.Goexit()
+ }()
+
+ // Generate some garbage.
+ x[i] = make([]byte, 1024*1024)
+
+ // Give GC some time to install stack barriers in the G.
+ time.Sleep(50 * time.Microsecond)
+ atomic.StoreInt32(&done, 1)
+ for atomic.LoadInt32(&done) == 1 {
+ runtime.Gosched()
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11286.go b/gcc/testsuite/go.test/test/fixedbugs/issue11286.go
new file mode 100644
index 0000000..560b7d4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11286.go
@@ -0,0 +1,34 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that pointer bitmaps of types with large scalar tails are
+// correctly repeated when unrolled into the heap bitmap.
+
+package main
+
+import "runtime"
+
+const D = 57
+
+type T struct {
+ a [D]float64
+ b map[string]int
+ c [D]float64
+}
+
+var ts []T
+
+func main() {
+ ts = make([]T, 4)
+ for i := range ts {
+ ts[i].b = make(map[string]int)
+ }
+ ts[3].b["abc"] = 42
+ runtime.GC()
+ if ts[3].b["abc"] != 42 {
+ panic("bad field value")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11326b.go b/gcc/testsuite/go.test/test/fixedbugs/issue11326b.go
new file mode 100644
index 0000000..b5f933b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11326b.go
@@ -0,0 +1,48 @@
+// run
+
+// Does not work with gccgo, which uses a smaller (but still permitted)
+// exponent size.
+// +build !gccgo
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+// Tests for golang.org/issue/11326.
+
+func main() {
+ {
+ const n = 1e646456992
+ const d = 1e646456991
+ x := n / d
+ if x != 10.0 {
+ println("incorrect value:", x)
+ }
+ }
+ {
+ const n = 1e64645699
+ const d = 1e64645698
+ x := n / d
+ if x != 10.0 {
+ println("incorrect value:", x)
+ }
+ }
+ {
+ const n = 1e6464569
+ const d = 1e6464568
+ x := n / d
+ if x != 10.0 {
+ println("incorrect value:", x)
+ }
+ }
+ {
+ const n = 1e646456
+ const d = 1e646455
+ x := n / d
+ if x != 10.0 {
+ println("incorrect value:", x)
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11354.go b/gcc/testsuite/go.test/test/fixedbugs/issue11354.go
new file mode 100644
index 0000000..3980e8f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11354.go
@@ -0,0 +1,15 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+type X int
+
+var foo = map[int]X{}
+
+var bar = map[int][8]X{}
+
+func main() {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11359.go b/gcc/testsuite/go.test/test/fixedbugs/issue11359.go
new file mode 100644
index 0000000..6ffffed
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11359.go
@@ -0,0 +1,11 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// identifiers beginning with non-ASCII digits were incorrectly accepted.
+// issue 11359.
+
+package p
+var Û¶ = 0 // ERROR "identifier cannot begin with digit"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11361.go b/gcc/testsuite/go.test/test/fixedbugs/issue11361.go
new file mode 100644
index 0000000..63dbf05d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11361.go
@@ -0,0 +1,11 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+import "fmt" // GC_ERROR "imported and not used"
+
+const n = fmt // ERROR "fmt without selector|unexpected reference to package"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11362.go b/gcc/testsuite/go.test/test/fixedbugs/issue11362.go
new file mode 100644
index 0000000..964e5fd
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11362.go
@@ -0,0 +1,15 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 11362: prints empty canonical import path
+
+package main
+
+import _ "unicode//utf8" // GC_ERROR "non-canonical import path .unicode//utf8. \(should be .unicode/utf8.\)" "can't find import: .unicode//utf8."
+
+func main() {
+}
+
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11369.go b/gcc/testsuite/go.test/test/fixedbugs/issue11369.go
new file mode 100644
index 0000000..9df37c3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11369.go
@@ -0,0 +1,27 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that the half multiply resulting from a division
+// by a constant generates correct code.
+
+package main
+
+func main() {
+ var _ = 7 / "0"[0] // test case from #11369
+ var _ = 1 / "."[0] // test case from #11358
+ var x = 0 / "0"[0]
+ var y = 48 / "0"[0]
+ var z = 5 * 48 / "0"[0]
+ if x != 0 {
+ panic("expected 0")
+ }
+ if y != 1 {
+ panic("expected 1")
+ }
+ if z != 5 {
+ panic("expected 5")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11370.go b/gcc/testsuite/go.test/test/fixedbugs/issue11370.go
new file mode 100644
index 0000000..30f2904
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11370.go
@@ -0,0 +1,13 @@
+// compile
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 11370: cmd/compile: "0"[0] should not be a constant
+
+package p
+
+func main() {
+ println(-"abc"[1] >> 1)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11371.go b/gcc/testsuite/go.test/test/fixedbugs/issue11371.go
new file mode 100644
index 0000000..8acd18f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11371.go
@@ -0,0 +1,17 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 11371 (cmd/compile: meaningless error message "truncated to
+// integer")
+
+package issue11371
+
+const a int = 1.1 // ERROR "constant 1.1 truncated to integer|floating-point constant truncated to integer"
+const b int = 1e20 // ERROR "overflows int|integer constant overflow"
+const c int = 1 + 1e-70 // ERROR "constant truncated to integer"
+const d int = 1 - 1e-70 // ERROR "constant truncated to integer"
+const e int = 1.00000001 // ERROR "constant truncated to integer"
+const f int = 0.00000001 // ERROR "constant 1e-08 truncated to integer|floating-point constant truncated to integer"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11590.go b/gcc/testsuite/go.test/test/fixedbugs/issue11590.go
new file mode 100644
index 0000000..f2a955f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11590.go
@@ -0,0 +1,11 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+var _ = int8(4) * 300 // ERROR "constant 300 overflows int8" "constant 1200 overflows int8|integer constant overflow"
+var _ = complex64(1) * 1e200 // ERROR "constant 1e\+200 overflows complex64|complex real part overflow"
+var _ = complex128(1) * 1e500 // ERROR "constant 1e\+500 overflows complex128|complex real part overflow"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11610.go b/gcc/testsuite/go.test/test/fixedbugs/issue11610.go
new file mode 100644
index 0000000..7ebfae6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11610.go
@@ -0,0 +1,17 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test an internal compiler error on ? symbol in declaration
+// following an empty import.
+
+package a
+import"" // ERROR "import path is empty"
+var? // ERROR "invalid character U\+003F '\?'|invalid character 0x3f in input file"
+
+var x int // ERROR "unexpected var|expected identifier|expected type"
+
+func main() {
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11614.go b/gcc/testsuite/go.test/test/fixedbugs/issue11614.go
new file mode 100644
index 0000000..de15f98
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11614.go
@@ -0,0 +1,26 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that incorrect expressions involving wrong anonymous interface
+// do not generate panics in Type Stringer.
+// Does not compile.
+
+package main
+
+type I interface {
+ int // ERROR "interface contains embedded non-interface"
+}
+
+func n() {
+ (I)
+}
+
+func m() {
+ (interface{int}) // ERROR "interface contains embedded non-interface" "type interface { int } is not an expression"
+}
+
+func main() {
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11674.go b/gcc/testsuite/go.test/test/fixedbugs/issue11674.go
new file mode 100644
index 0000000..b43032d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11674.go
@@ -0,0 +1,40 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 11674: cmd/compile: does not diagnose constant division by
+// zero
+
+package p
+
+const x complex64 = 0
+const y complex128 = 0
+
+var _ = x / 1e-20
+var _ = x / 1e-50 // GC_ERROR "complex division by zero"
+var _ = x / 1e-1000 // GC_ERROR "complex division by zero"
+var _ = x / 1e-20i
+var _ = x / 1e-50i // GC_ERROR "complex division by zero"
+var _ = x / 1e-1000i // GC_ERROR "complex division by zero"
+
+var _ = x / 1e-45 // smallest positive float32
+
+var _ = x / (1e-20 + 1e-20i)
+var _ = x / (1e-50 + 1e-20i)
+var _ = x / (1e-20 + 1e-50i)
+var _ = x / (1e-50 + 1e-50i) // GC_ERROR "complex division by zero"
+var _ = x / (1e-1000 + 1e-1000i) // GC_ERROR "complex division by zero"
+
+var _ = y / 1e-50
+var _ = y / 1e-1000 // GC_ERROR "complex division by zero"
+var _ = y / 1e-50i
+var _ = y / 1e-1000i // GC_ERROR "complex division by zero"
+
+var _ = y / 5e-324 // smallest positive float64
+
+var _ = y / (1e-50 + 1e-50)
+var _ = y / (1e-1000 + 1e-50i)
+var _ = y / (1e-50 + 1e-1000i)
+var _ = y / (1e-1000 + 1e-1000i) // GC_ERROR "complex division by zero"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11699.go b/gcc/testsuite/go.test/test/fixedbugs/issue11699.go
new file mode 100644
index 0000000..755e9a1f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11699.go
@@ -0,0 +1,12 @@
+// compile
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 11699; used to fail with duplicate _.args_stackmap symbols.
+
+package p
+
+func _()
+func _()
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11750.go b/gcc/testsuite/go.test/test/fixedbugs/issue11750.go
new file mode 100644
index 0000000..d5a2b22
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11750.go
@@ -0,0 +1,20 @@
+// compile
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 11750: mkdotargslice: typecheck failed
+
+package main
+
+func main() {
+ fn := func(names string) {
+
+ }
+ func(names ...string) {
+ for _, name := range names {
+ fn(name)
+ }
+ }("one", "two")
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11771.go b/gcc/testsuite/go.test/test/fixedbugs/issue11771.go
new file mode 100644
index 0000000..c95dd6b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11771.go
@@ -0,0 +1,64 @@
+// +build !nacl,!js,gc
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 11771: Magic comments should ignore carriage returns.
+
+package main
+
+import (
+ "bytes"
+ "fmt"
+ "io/ioutil"
+ "log"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "runtime"
+)
+
+func main() {
+ if runtime.Compiler != "gc" {
+ return
+ }
+
+ dir, err := ioutil.TempDir("", "go-issue11771")
+ if err != nil {
+ log.Fatalf("creating temp dir: %v\n", err)
+ }
+ defer os.RemoveAll(dir)
+
+ // The go:nowritebarrier magic comment is only permitted in
+ // the runtime package. So we confirm that the compilation
+ // fails.
+
+ var buf bytes.Buffer
+ fmt.Fprintln(&buf, `
+package main
+
+func main() {
+}
+`)
+ fmt.Fprintln(&buf, "//go:nowritebarrier\r")
+ fmt.Fprintln(&buf, `
+func x() {
+}
+`)
+
+ if err := ioutil.WriteFile(filepath.Join(dir, "x.go"), buf.Bytes(), 0666); err != nil {
+ log.Fatal(err)
+ }
+
+ cmd := exec.Command("go", "tool", "compile", "x.go")
+ cmd.Dir = dir
+ output, err := cmd.CombinedOutput()
+ if err == nil {
+ log.Fatal("compile succeeded unexpectedly")
+ }
+ if !bytes.Contains(output, []byte("only allowed in runtime")) {
+ log.Fatalf("wrong error message from compiler; got:\n%s\n", output)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11790.go b/gcc/testsuite/go.test/test/fixedbugs/issue11790.go
new file mode 100644
index 0000000..096b297
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11790.go
@@ -0,0 +1,36 @@
+// compile
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 11790: Incorrect error following named pointer dereference on field
+
+package main
+
+import "fmt"
+
+type T0 struct {
+ x int
+}
+
+func (*T0) M0() {
+ fmt.Println("M0")
+}
+
+type T2 struct {
+ *T0
+}
+
+type Q *T2
+
+func main() {
+ // If run, expected output is
+ // 42
+ // M0
+ t0 := T0{42}
+ t2 := T2{&t0}
+ var q Q = &t2
+ fmt.Println(q.x) // Comment out either this line or the next line and the program works
+ (*q).T0.M0()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11945.go b/gcc/testsuite/go.test/test/fixedbugs/issue11945.go
new file mode 100644
index 0000000..510b655
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11945.go
@@ -0,0 +1,71 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "fmt"
+
+// issue 17446
+const (
+ _ = real(0) // from bug report
+ _ = imag(0) // from bug report
+
+ // if the arguments are untyped, the results must be untyped
+ // (and compatible with types that can represent the values)
+ _ int = real(1)
+ _ int = real('a')
+ _ int = real(2.0)
+ _ int = real(3i)
+
+ _ float32 = real(1)
+ _ float32 = real('a')
+ _ float32 = real(2.1)
+ _ float32 = real(3.2i)
+
+ _ float64 = real(1)
+ _ float64 = real('a')
+ _ float64 = real(2.1)
+ _ float64 = real(3.2i)
+
+ _ int = imag(1)
+ _ int = imag('a')
+ _ int = imag(2.1 + 3i)
+ _ int = imag(3i)
+
+ _ float32 = imag(1)
+ _ float32 = imag('a')
+ _ float32 = imag(2.1 + 3.1i)
+ _ float32 = imag(3i)
+
+ _ float64 = imag(1)
+ _ float64 = imag('a')
+ _ float64 = imag(2.1 + 3.1i)
+ _ float64 = imag(3i)
+)
+
+var tests = []struct {
+ code string
+ got, want interface{}
+}{
+ {"real(1)", real(1), 1.0},
+ {"real('a')", real('a'), float64('a')},
+ {"real(2.0)", real(2.0), 2.0},
+ {"real(3.2i)", real(3.2i), 0.0},
+
+ {"imag(1)", imag(1), 0.0},
+ {"imag('a')", imag('a'), 0.0},
+ {"imag(2.1 + 3.1i)", imag(2.1 + 3.1i), 3.1},
+ {"imag(3i)", imag(3i), 3.0},
+}
+
+func main() {
+ // verify compile-time evaluated constant expressions
+ for _, test := range tests {
+ if test.got != test.want {
+ panic(fmt.Sprintf("%s: %v (%T) != %v (%T)", test.code, test.got, test.got, test.want, test.want))
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue11987.go b/gcc/testsuite/go.test/test/fixedbugs/issue11987.go
new file mode 100644
index 0000000..9b665dc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue11987.go
@@ -0,0 +1,23 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 11987. The ppc64 SRADCC instruction was misassembled in a way
+// lost bit 5 of the immediate so v>>32 was assembled as v>>0. SRADCC
+// is only ever inserted by peep so it's hard to be sure when it will
+// be used. This formulation worked when the bug was fixed.
+
+package main
+
+import "fmt"
+
+var v int64 = 0x80000000
+
+func main() {
+ s := fmt.Sprintf("%v", v>>32 == 0)
+ if s != "true" {
+ fmt.Printf("BUG: v>>32 == 0 evaluated as %q\n", s)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue12006.go b/gcc/testsuite/go.test/test/fixedbugs/issue12006.go
new file mode 100644
index 0000000..0a2ef8d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue12006.go
@@ -0,0 +1,174 @@
+// errorcheck -0 -m -l
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test escape analysis through ... parameters.
+
+package foo
+
+func FooN(vals ...*int) (s int) { // ERROR "vals does not escape"
+ for _, v := range vals {
+ s += *v
+ }
+ return s
+}
+
+// Append forces heap allocation and copies entries in vals to heap, therefore they escape to heap.
+func FooNx(x *int, vals ...*int) (s int) { // ERROR "leaking param: x" "leaking param content: vals"
+ vals = append(vals, x)
+ return FooN(vals...)
+}
+
+var sink []*int
+
+func FooNy(x *int, vals ...*int) (s int) { // ERROR "leaking param: x" "leaking param: vals"
+ vals = append(vals, x)
+ sink = vals
+ return FooN(vals...)
+}
+
+func FooNz(vals ...*int) (s int) { // ERROR "leaking param: vals"
+ sink = vals
+ return FooN(vals...)
+}
+
+func TFooN() {
+ for i := 0; i < 1000; i++ {
+ var i, j int
+ FooN(&i, &j) // ERROR "... argument does not escape"
+ }
+}
+
+func TFooNx() {
+ for i := 0; i < 1000; i++ {
+ var i, j, k int // ERROR "moved to heap: i" "moved to heap: j" "moved to heap: k"
+ FooNx(&k, &i, &j) // ERROR "... argument does not escape"
+ }
+}
+
+func TFooNy() {
+ for i := 0; i < 1000; i++ {
+ var i, j, k int // ERROR "moved to heap: i" "moved to heap: j" "moved to heap: k"
+ FooNy(&k, &i, &j) // ERROR "... argument escapes to heap"
+ }
+}
+
+func TFooNz() {
+ for i := 0; i < 1000; i++ {
+ var i, j int // ERROR "moved to heap: i" "moved to heap: j"
+ FooNz(&i, &j) // ERROR "... argument escapes to heap"
+ }
+}
+
+var isink *int32
+
+func FooI(args ...interface{}) { // ERROR "leaking param content: args"
+ for i := 0; i < len(args); i++ {
+ switch x := args[i].(type) {
+ case nil:
+ println("is nil")
+ case int32:
+ println("is int32")
+ case *int32:
+ println("is *int32")
+ isink = x
+ case string:
+ println("is string")
+ }
+ }
+}
+
+func TFooI() {
+ a := int32(1) // ERROR "moved to heap: a"
+ b := "cat"
+ c := &a
+ FooI(a, b, c) // ERROR "a escapes to heap" "b escapes to heap" "... argument does not escape"
+}
+
+func FooJ(args ...interface{}) *int32 { // ERROR "leaking param: args to result ~r1 level=1"
+ for i := 0; i < len(args); i++ {
+ switch x := args[i].(type) {
+ case nil:
+ println("is nil")
+ case int32:
+ println("is int32")
+ case *int32:
+ println("is *int32")
+ return x
+ case string:
+ println("is string")
+ }
+ }
+ return nil
+}
+
+func TFooJ1() {
+ a := int32(1)
+ b := "cat"
+ c := &a
+ FooJ(a, b, c) // ERROR "a does not escape" "b does not escape" "... argument does not escape"
+}
+
+func TFooJ2() {
+ a := int32(1) // ERROR "moved to heap: a"
+ b := "cat"
+ c := &a
+ isink = FooJ(a, b, c) // ERROR "a escapes to heap" "b escapes to heap" "... argument does not escape"
+}
+
+type fakeSlice struct {
+ l int
+ a *[4]interface{}
+}
+
+func FooK(args fakeSlice) *int32 { // ERROR "leaking param: args to result ~r1 level=1"
+ for i := 0; i < args.l; i++ {
+ switch x := (*args.a)[i].(type) {
+ case nil:
+ println("is nil")
+ case int32:
+ println("is int32")
+ case *int32:
+ println("is *int32")
+ return x
+ case string:
+ println("is string")
+ }
+ }
+ return nil
+}
+
+func TFooK2() {
+ a := int32(1) // ERROR "moved to heap: a"
+ b := "cat"
+ c := &a
+ fs := fakeSlice{3, &[4]interface{}{a, b, c, nil}} // ERROR "a escapes to heap" "b escapes to heap" "&\[4\]interface {}{...} does not escape"
+ isink = FooK(fs)
+}
+
+func FooL(args []interface{}) *int32 { // ERROR "leaking param: args to result ~r1 level=1"
+ for i := 0; i < len(args); i++ {
+ switch x := args[i].(type) {
+ case nil:
+ println("is nil")
+ case int32:
+ println("is int32")
+ case *int32:
+ println("is *int32")
+ return x
+ case string:
+ println("is string")
+ }
+ }
+ return nil
+}
+
+func TFooL2() {
+ a := int32(1) // ERROR "moved to heap: a"
+ b := "cat"
+ c := &a
+ s := []interface{}{a, b, c} // ERROR "a escapes to heap" "b escapes to heap" "\[\]interface {}{...} does not escape"
+ isink = FooL(s)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue12108.go b/gcc/testsuite/go.test/test/fixedbugs/issue12108.go
new file mode 100644
index 0000000..c7a7425
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue12108.go
@@ -0,0 +1,37 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// A generated method with a return value large enough to be
+// initialized by duffzero is not a leaf method, which violated
+// assumptions made by cmd/internal/obj/ppc64.
+
+package main
+
+const N = 9 // values > 8 cause (Super).Method to use duffzero
+
+type Base struct {
+}
+
+func (b *Base) Method() (x [N]uintptr) {
+ return
+}
+
+type Super struct {
+ Base
+}
+
+type T interface {
+ Method() [N]uintptr
+}
+
+func f(q T) {
+ q.Method()
+}
+
+func main() {
+ var s Super
+ f(&s)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue12133.go b/gcc/testsuite/go.test/test/fixedbugs/issue12133.go
new file mode 100644
index 0000000..bbf9fb0
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue12133.go
@@ -0,0 +1,26 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 12133. The CX register was getting clobbered
+// because we did not keep track of its allocation correctly.
+
+package main
+
+import "fmt"
+
+func main() {
+ want := uint(48)
+ got := f1(48)
+ if got != want {
+ fmt.Println("got", got, ", wanted", want)
+ panic("bad")
+ }
+}
+
+//go:noinline
+func f1(v1 uint) uint {
+ return v1 >> ((1 >> v1) + (1 >> v1))
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue12226.go b/gcc/testsuite/go.test/test/fixedbugs/issue12226.go
new file mode 100644
index 0000000..2246711
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue12226.go
@@ -0,0 +1,15 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "fmt"
+
+func main() {
+ if []byte("foo")[0] == []byte("b")[0] {
+ fmt.Println("BUG: \"foo\" and \"b\" appear to have the same first byte")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue12347.go b/gcc/testsuite/go.test/test/fixedbugs/issue12347.go
new file mode 100644
index 0000000..fc5678e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue12347.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f_ssa(x int, p *int) {
+ if false {
+ y := x + 5
+ for {
+ *p = y
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue12411.go b/gcc/testsuite/go.test/test/fixedbugs/issue12411.go
new file mode 100644
index 0000000..ff49314
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue12411.go
@@ -0,0 +1,24 @@
+// +build !386
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 12411. Loss of AX during %.
+
+package main
+
+func main() {
+ x := f(4)
+ if x != 0 {
+ println("BUG: x=", x)
+ }
+}
+
+//go:noinline
+func f(x int) int {
+ // AX was live on entry to one of the % code generations,
+ // and the % code generation smashed it.
+ return ((2 * x) % 3) % (2 % ((x << 2) ^ (x % 3)))
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue12413.go b/gcc/testsuite/go.test/test/fixedbugs/issue12413.go
new file mode 100644
index 0000000..a054765
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue12413.go
@@ -0,0 +1,19 @@
+// compile
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 12413: invalid variable name x in type switch: code would fail
+// to compile if the variable used in the short variable declaration was
+// previously declared as a constant.
+
+package main
+
+func main() {
+ const x = 42
+ switch x := interface{}(nil).(type) {
+ default:
+ _ = x
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue12536.go b/gcc/testsuite/go.test/test/fixedbugs/issue12536.go
new file mode 100644
index 0000000..ceeaec4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue12536.go
@@ -0,0 +1,22 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 12536: compiler crashes while checking keys in a map literal for equality
+
+package p
+
+func main() {
+ m1 := map[interface{}]interface{}{
+ nil: 0,
+ true: 1,
+ }
+ m2 := map[interface{}]interface{}{
+ true: 1,
+ nil: 0,
+ }
+ println(len(m1))
+ println(len(m2))
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue12577.go b/gcc/testsuite/go.test/test/fixedbugs/issue12577.go
new file mode 100644
index 0000000..249b4f2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue12577.go
@@ -0,0 +1,66 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 12577: Test that there are no -0 floating-point constants.
+
+package main
+
+import "math"
+
+const (
+ z0 = 0.0
+ z1 = -0.0
+ z2 = -z0
+ z3 = -z2
+)
+
+var (
+ x0 float32 = z0
+ x1 float32 = z1
+ x2 float32 = z2
+ x3 float32 = z3
+
+ y0 float64 = z0
+ y1 float64 = z1
+ y2 float64 = z2
+ y3 float64 = z3
+)
+
+func test32(f float32) {
+ if f != 0 || math.Signbit(float64(f)) {
+ println("BUG: got", f, "want 0.0")
+ return
+ }
+}
+
+func test64(f float64) {
+ if f != 0 || math.Signbit(f) {
+ println("BUG: got", f, "want 0.0")
+ return
+ }
+}
+
+func main() {
+ if f := -x0; f != 0 || !math.Signbit(float64(f)) {
+ println("BUG: got", f, "want -0.0")
+ }
+
+ test32(-0.0)
+ test32(x0)
+ test32(x1)
+ test32(x2)
+ test32(x3)
+
+ if f := -y0; f != 0 || !math.Signbit(f) {
+ println("BUG: got", f, "want -0.0")
+ }
+
+ test64(-0.0)
+ test64(y0)
+ test64(y1)
+ test64(y2)
+ test64(y3)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue12588.go b/gcc/testsuite/go.test/test/fixedbugs/issue12588.go
new file mode 100644
index 0000000..950ef36
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue12588.go
@@ -0,0 +1,88 @@
+// errorcheck -0 -m -l
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Tests escape analysis for range of arrays.
+// Compiles but need not run. Inlining is disabled.
+
+package main
+
+type A struct {
+ b [3]uint64
+}
+
+type B struct {
+ b [3]*uint64
+}
+
+func f(a A) int {
+ for i, x := range &a.b {
+ if x != 0 {
+ return 64*i + int(x)
+ }
+ }
+ return 0
+}
+
+func g(a *A) int { // ERROR "a does not escape"
+ for i, x := range &a.b {
+ if x != 0 {
+ return 64*i + int(x)
+ }
+ }
+ return 0
+}
+
+func h(a *B) *uint64 { // ERROR "leaking param: a to result ~r1 level=1"
+ for i, x := range &a.b {
+ if i == 0 {
+ return x
+ }
+ }
+ return nil
+}
+
+func h2(a *B) *uint64 { // ERROR "leaking param: a to result ~r1 level=1"
+ p := &a.b
+ for i, x := range p {
+ if i == 0 {
+ return x
+ }
+ }
+ return nil
+}
+
+// Seems like below should be level=1, not 0.
+func k(a B) *uint64 { // ERROR "leaking param: a to result ~r1 level=0"
+ for i, x := range &a.b {
+ if i == 0 {
+ return x
+ }
+ }
+ return nil
+}
+
+var sink *uint64
+
+func main() {
+ var a1, a2 A
+ var b1, b2, b3, b4 B
+ var x1, x2, x3, x4 uint64 // ERROR "moved to heap: x1" "moved to heap: x3"
+ b1.b[0] = &x1
+ b2.b[0] = &x2
+ b3.b[0] = &x3
+ b4.b[0] = &x4
+ f(a1)
+ g(&a2)
+ sink = h(&b1)
+ h(&b2)
+ sink = h2(&b1)
+ h2(&b4)
+ x1 = 17
+ println("*sink=", *sink) // Verify that sink addresses x1
+ x3 = 42
+ sink = k(b3)
+ println("*sink=", *sink) // Verify that sink addresses x3
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue12677.dir/p.go b/gcc/testsuite/go.test/test/fixedbugs/issue12677.dir/p.go
new file mode 100644
index 0000000..e395071
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue12677.dir/p.go
@@ -0,0 +1,8 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+func Baz(f int) float64 {
+ return 1 / float64(int(1)<<(uint(f)))
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue12677.dir/q.go b/gcc/testsuite/go.test/test/fixedbugs/issue12677.dir/q.go
new file mode 100644
index 0000000..fd39c8a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue12677.dir/q.go
@@ -0,0 +1,7 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package q
+import "./p"
+func f() { println(p.Baz(2)) }
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue12677.go b/gcc/testsuite/go.test/test/fixedbugs/issue12677.go
new file mode 100644
index 0000000..6ad7161
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue12677.go
@@ -0,0 +1,9 @@
+// compiledir
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 12677: Type loss during export/import of inlined function body.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue12686.go b/gcc/testsuite/go.test/test/fixedbugs/issue12686.go
new file mode 100644
index 0000000..bde4255
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue12686.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// golang.org/issue/12686.
+// interesting because it's a non-constant but ideal value
+// and we used to incorrectly attach a constant Val to the Node.
+
+package p
+
+func f(i uint) uint {
+ x := []uint{1 << i}
+ return x[0]
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue1304.go b/gcc/testsuite/go.test/test/fixedbugs/issue1304.go
new file mode 100644
index 0000000..9e0ca5a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue1304.go
@@ -0,0 +1,23 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var a = 1
+
+func main() {
+ defer func() {
+ recover()
+ if a != 2 {
+ println("BUG a =", a)
+ }
+ }()
+ a = 2
+ b := a - a
+ c := 4
+ a = c / b
+ a = 3
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13160.go b/gcc/testsuite/go.test/test/fixedbugs/issue13160.go
new file mode 100644
index 0000000..c21ecf6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13160.go
@@ -0,0 +1,70 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "runtime"
+)
+
+const N = 100000
+
+func main() {
+ // Allocate more Ps than processors. This raises
+ // the chance that we get interrupted by the OS
+ // in exactly the right (wrong!) place.
+ p := runtime.NumCPU()
+ runtime.GOMAXPROCS(2 * p)
+
+ // Allocate some pointers.
+ ptrs := make([]*int, p)
+ for i := 0; i < p; i++ {
+ ptrs[i] = new(int)
+ }
+
+ // Arena where we read and write pointers like crazy.
+ collider := make([]*int, p)
+
+ done := make(chan struct{}, 2*p)
+
+ // Start writers. They alternately write a pointer
+ // and nil to a slot in the collider.
+ for i := 0; i < p; i++ {
+ i := i
+ go func() {
+ for j := 0; j < N; j++ {
+ // Write a pointer using memmove.
+ copy(collider[i:i+1], ptrs[i:i+1])
+ // Write nil using memclr.
+ // (This is a magic loop that gets lowered to memclr.)
+ r := collider[i : i+1]
+ for k := range r {
+ r[k] = nil
+ }
+ }
+ done <- struct{}{}
+ }()
+ }
+ // Start readers. They read pointers from slots
+ // and make sure they are valid.
+ for i := 0; i < p; i++ {
+ i := i
+ go func() {
+ for j := 0; j < N; j++ {
+ var ptr [1]*int
+ copy(ptr[:], collider[i:i+1])
+ if ptr[0] != nil && ptr[0] != ptrs[i] {
+ panic(fmt.Sprintf("bad pointer read %p!", ptr[0]))
+ }
+ }
+ done <- struct{}{}
+ }()
+ }
+ for i := 0; i < 2*p; i++ {
+ <-done
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13162.go b/gcc/testsuite/go.test/test/fixedbugs/issue13162.go
new file mode 100644
index 0000000..f8b3150
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13162.go
@@ -0,0 +1,82 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Ensure that range loops over a string have the requisite side-effects.
+
+package main
+
+import (
+ "fmt"
+ "os"
+)
+
+func check(n int) {
+ var i int
+ var r rune
+
+ b := make([]byte, n)
+ for i = range b {
+ b[i] = byte(i + 1)
+ }
+ s := string(b)
+
+ // When n == 0, i is untouched by the range loop.
+ // Picking an initial value of -1 for i makes the
+ // "want" calculation below correct in all cases.
+ i = -1
+ for i = range s {
+ b[i] = s[i]
+ }
+ if want := n - 1; i != want {
+ fmt.Printf("index after range with side-effect = %d want %d\n", i, want)
+ os.Exit(1)
+ }
+
+ i = -1
+ r = '\x00'
+ for i, r = range s {
+ b[i] = byte(r)
+ }
+ if want := n - 1; i != want {
+ fmt.Printf("index after range with side-effect = %d want %d\n", i, want)
+ os.Exit(1)
+ }
+ if want := rune(n); r != want {
+ fmt.Printf("rune after range with side-effect = %q want %q\n", r, want)
+ os.Exit(1)
+ }
+
+ i = -1
+ // i is shadowed here, so its value should be unchanged.
+ for i := range s {
+ b[i] = s[i]
+ }
+ if want := -1; i != want {
+ fmt.Printf("index after range without side-effect = %d want %d\n", i, want)
+ os.Exit(1)
+ }
+
+ i = -1
+ r = -1
+ // i and r are shadowed here, so their values should be unchanged.
+ for i, r := range s {
+ b[i] = byte(r)
+ }
+ if want := -1; i != want {
+ fmt.Printf("index after range without side-effect = %d want %d\n", i, want)
+ os.Exit(1)
+ }
+ if want := rune(-1); r != want {
+ fmt.Printf("rune after range without side-effect = %q want %q\n", r, want)
+ os.Exit(1)
+ }
+}
+
+func main() {
+ check(0)
+ check(1)
+ check(15)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13169.go b/gcc/testsuite/go.test/test/fixedbugs/issue13169.go
new file mode 100644
index 0000000..03c52e2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13169.go
@@ -0,0 +1,49 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+type T struct {
+ a, b, c int
+}
+
+func usestack() {
+ usestack1(32)
+}
+func usestack1(d int) byte {
+ if d == 0 {
+ return 0
+ }
+ var b [1024]byte
+ usestack1(d - 1)
+ return b[3]
+}
+
+const n = 100000
+
+func main() {
+ c := make(chan interface{})
+ done := make(chan bool)
+
+ for i := 0; i < 10; i++ {
+ go func() {
+ for j := 0; j < n; j++ {
+ c <- new(T)
+ }
+ done <- true
+ }()
+ go func() {
+ for j := 0; j < n; j++ {
+ _ = (<-c).(*T)
+ usestack()
+ }
+ done <- true
+ }()
+ }
+ for i := 0; i < 20; i++ {
+ <-done
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13171.go b/gcc/testsuite/go.test/test/fixedbugs/issue13171.go
new file mode 100644
index 0000000..addb872
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13171.go
@@ -0,0 +1,34 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+// Make sure the compiler knows that DUFFCOPY clobbers X0
+
+import "fmt"
+
+//go:noinline
+func f(x float64) float64 {
+ // y is allocated to X0
+ y := x + 5
+ // marshals z before y. Marshaling z
+ // calls DUFFCOPY.
+ return g(z, y)
+}
+
+//go:noinline
+func g(b [64]byte, y float64) float64 {
+ return y
+}
+
+var z [64]byte
+
+func main() {
+ got := f(5)
+ if got != 10 {
+ panic(fmt.Sprintf("want 10, got %f", got))
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13248.go b/gcc/testsuite/go.test/test/fixedbugs/issue13248.go
new file mode 100644
index 0000000..e23ba47
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13248.go
@@ -0,0 +1,13 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This program caused an infinite loop with the recursive-descent parser.
+
+package main
+
+func main() {
+ foo( // GCCGO_ERROR "undefined name"
+} // ERROR "unexpected }|expected operand|missing"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13261.go b/gcc/testsuite/go.test/test/fixedbugs/issue13261.go
new file mode 100644
index 0000000..a944f3a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13261.go
@@ -0,0 +1,29 @@
+// compile
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Taking the address of a parenthesized composite literal is permitted.
+
+package main
+
+type T struct{}
+
+func main() {
+ _ = &T{}
+ _ = &(T{})
+ _ = &((T{}))
+
+ _ = &struct{}{}
+ _ = &(struct{}{})
+ _ = &((struct{}{}))
+
+ switch (&T{}) {}
+ switch &(T{}) {}
+ switch &((T{})) {}
+
+ switch &struct{}{} {}
+ switch &(struct{}{}) {}
+ switch &((struct{}{})) {}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13262.go b/gcc/testsuite/go.test/test/fixedbugs/issue13262.go
new file mode 100644
index 0000000..8837c00
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13262.go
@@ -0,0 +1,21 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 13262: cmd/compile: bogus "fallthrough
+// statement out of place" error
+
+package p
+
+func f() int {
+ var a int
+ switch a {
+ case 0:
+ return func() int { return 1 }()
+ fallthrough
+ default:
+ }
+ return 0
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13263.go b/gcc/testsuite/go.test/test/fixedbugs/issue13263.go
new file mode 100644
index 0000000..1933f2b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13263.go
@@ -0,0 +1,15 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+var (
+ x uint
+ y = x
+ z = uintptr(y)
+ a = uint32(y)
+ b = uint64(y)
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13266.go b/gcc/testsuite/go.test/test/fixedbugs/issue13266.go
new file mode 100644
index 0000000..73c9e16
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13266.go
@@ -0,0 +1,10 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Offending character % must not be interpreted as
+// start of format verb when emitting error message.
+
+package% // ERROR "unexpected %|package name must be an identifier|after package clause|expected declaration"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13268.go b/gcc/testsuite/go.test/test/fixedbugs/issue13268.go
new file mode 100644
index 0000000..53a82d5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13268.go
@@ -0,0 +1,43 @@
+// +build gc
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test error message when EOF is encountered in the
+// middle of a BOM.
+//
+// Since the error requires an EOF, we cannot use the
+// errorcheckoutput mechanism.
+
+package main
+
+import (
+ "io/ioutil"
+ "log"
+ "os"
+ "os/exec"
+ "strings"
+)
+
+func main() {
+ // create source
+ f, err := ioutil.TempFile("", "issue13268-")
+ if err != nil {
+ log.Fatalf("could not create source file: %v", err)
+ }
+ f.Write([]byte("package p\n\nfunc \xef\xef")) // if this fails, we will die later
+ f.Close()
+ defer os.Remove(f.Name())
+
+ // compile and test output
+ cmd := exec.Command("go", "tool", "compile", f.Name())
+ out, err := cmd.CombinedOutput()
+ if err == nil {
+ log.Fatalf("expected cmd/compile to fail")
+ }
+ if strings.HasPrefix(string(out), "illegal UTF-8 sequence") {
+ log.Fatalf("error %q not found", out)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13274.go b/gcc/testsuite/go.test/test/fixedbugs/issue13274.go
new file mode 100644
index 0000000..816bd9b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13274.go
@@ -0,0 +1,11 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check that we don't ignore EOF.
+
+package p
+
+var f = func() { // ERROR "unexpected EOF|expected .*}.*" \ No newline at end of file
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13337.go b/gcc/testsuite/go.test/test/fixedbugs/issue13337.go
new file mode 100644
index 0000000..81f984b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13337.go
@@ -0,0 +1,30 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 13337: The Go compiler limited how deeply embedded types
+// were searched for promoted fields and methods.
+
+package s
+
+type S0 struct{ f int }
+func (S0) m() {}
+
+type S1 struct{ S0 }
+type S2 struct{ S1 }
+type S3 struct{ S2 }
+type S4 struct{ S3 }
+type S5 struct{ S4 }
+type S6 struct{ S5 }
+type S7 struct{ S6 }
+type S8 struct{ S7 }
+type S9 struct{ S8 }
+type S10 struct{ S9 }
+type S11 struct{ S10 }
+type S12 struct{ S11 }
+type S13 struct{ S12 }
+
+var _ = S13{}.f
+var _ = S13.m
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13365.go b/gcc/testsuite/go.test/test/fixedbugs/issue13365.go
new file mode 100644
index 0000000..31a663e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13365.go
@@ -0,0 +1,25 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 13365: confusing error message (array vs slice)
+
+package main
+
+var t struct{}
+
+func main() {
+ _ = []int{-1: 0} // ERROR "index must be non\-negative integer constant|index expression is negative"
+ _ = [10]int{-1: 0} // ERROR "index must be non\-negative integer constant|index expression is negative"
+ _ = [...]int{-1: 0} // ERROR "index must be non\-negative integer constant|index expression is negative"
+
+ _ = []int{100: 0}
+ _ = [10]int{100: 0} // ERROR "array index 100 out of bounds|out of range"
+ _ = [...]int{100: 0}
+
+ _ = []int{t} // ERROR "cannot use .* as type int in slice literal|incompatible type"
+ _ = [10]int{t} // ERROR "cannot use .* as type int in array literal|incompatible type"
+ _ = [...]int{t} // ERROR "cannot use .* as type int in array literal|incompatible type"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13415.go b/gcc/testsuite/go.test/test/fixedbugs/issue13415.go
new file mode 100644
index 0000000..4c4655e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13415.go
@@ -0,0 +1,19 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that error message regarding := appears on
+// correct line (and not on the line of the 2nd :=).
+
+package p
+
+func f() {
+ select {
+ case x, x := <-func() chan int { // ERROR "x repeated on left side of :=|redefinition|declared but not used"
+ c := make(chan int)
+ return c
+ }():
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13471.go b/gcc/testsuite/go.test/test/fixedbugs/issue13471.go
new file mode 100644
index 0000000..9069412
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13471.go
@@ -0,0 +1,25 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Tests for golang.org/issue/13471
+
+package main
+
+func main() {
+ const _ int64 = 1e646456992 // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+ const _ int32 = 1e64645699 // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+ const _ int16 = 1e6464569 // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+ const _ int8 = 1e646456 // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+ const _ int = 1e64645 // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+
+ const _ uint64 = 1e646456992 // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+ const _ uint32 = 1e64645699 // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+ const _ uint16 = 1e6464569 // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+ const _ uint8 = 1e646456 // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+ const _ uint = 1e64645 // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+
+ const _ rune = 1e64645 // ERROR "integer too large|floating-point constant truncated to integer|exponent too large"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13480.go b/gcc/testsuite/go.test/test/fixedbugs/issue13480.go
new file mode 100644
index 0000000..cd2f05d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13480.go
@@ -0,0 +1,38 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that comparisons of slice/map/func values against converted nil
+// values are properly rejected.
+
+package p
+
+func bug() {
+ type S []byte
+ type M map[int]int
+ type F func()
+
+ var s S
+ var m M
+ var f F
+
+ _ = s == S(nil) // ERROR "compare.*to nil"
+ _ = S(nil) == s // ERROR "compare.*to nil"
+ switch s {
+ case S(nil): // ERROR "compare.*to nil"
+ }
+
+ _ = m == M(nil) // ERROR "compare.*to nil"
+ _ = M(nil) == m // ERROR "compare.*to nil"
+ switch m {
+ case M(nil): // ERROR "compare.*to nil"
+ }
+
+ _ = f == F(nil) // ERROR "compare.*to nil"
+ _ = F(nil) == f // ERROR "compare.*to nil"
+ switch f {
+ case F(nil): // ERROR "compare.*to nil"
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13485.go b/gcc/testsuite/go.test/test/fixedbugs/issue13485.go
new file mode 100644
index 0000000..a9beea1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13485.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+var (
+ _ [10]int
+ _ [10.0]int
+ _ [float64(10)]int // ERROR "invalid array bound"
+ _ [10 + 0i]int
+ _ [complex(10, 0)]int
+ _ [complex128(complex(10, 0))]int // ERROR "invalid array bound"
+ _ ['a']int
+ _ [rune(65)]int
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13539.go b/gcc/testsuite/go.test/test/fixedbugs/issue13539.go
new file mode 100644
index 0000000..72c3ab0
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13539.go
@@ -0,0 +1,20 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that a label named like a package is recognized
+// as a label rather than a package and that the package
+// remains unused.
+
+package main
+
+import "math" // ERROR "imported and not used"
+
+func main() {
+math:
+ for {
+ break math
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13684.go b/gcc/testsuite/go.test/test/fixedbugs/issue13684.go
new file mode 100644
index 0000000..a1d8856
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13684.go
@@ -0,0 +1,17 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that a label name matching a constant name
+// is permitted.
+
+package main
+
+const labelname = 1
+
+func main() {
+ goto labelname
+labelname:
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13777.dir/burnin.go b/gcc/testsuite/go.test/test/fixedbugs/issue13777.dir/burnin.go
new file mode 100644
index 0000000..5125639
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13777.dir/burnin.go
@@ -0,0 +1,19 @@
+package burnin
+
+type sendCmdFunc func(string)
+
+func sendCommand(c string) {}
+
+func NewSomething() {
+ // This works...
+ // var sendCmd sendCmdFunc
+ // sendCmd = sendCommand
+
+ // So does this...
+ //sendCmd := sendCmdFunc(sendCommand)
+
+ // This fails...
+ sendCmd := sendCommand
+
+ _ = sendCmd
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13777.dir/main.go b/gcc/testsuite/go.test/test/fixedbugs/issue13777.dir/main.go
new file mode 100644
index 0000000..2512b93
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13777.dir/main.go
@@ -0,0 +1,11 @@
+// build
+
+package main
+
+import (
+ x "./burnin"
+)
+
+func main() {
+ x.NewSomething()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13777.go b/gcc/testsuite/go.test/test/fixedbugs/issue13777.go
new file mode 100644
index 0000000..8f83c13
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13777.go
@@ -0,0 +1,7 @@
+// rundir
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13799.go b/gcc/testsuite/go.test/test/fixedbugs/issue13799.go
new file mode 100644
index 0000000..fbdd4c3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13799.go
@@ -0,0 +1,190 @@
+// errorcheck -0 -m -l
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test, using compiler diagnostic flags, that the escape analysis is working.
+// Compiles but does not run. Inlining is disabled.
+// Registerization is disabled too (-N), which should
+// have no effect on escape analysis.
+
+package main
+
+import "fmt"
+
+func main() {
+ // Just run test over and over again. This main func is just for
+ // convenience; if test were the main func, we could also trigger
+ // the panic just by running the program over and over again
+ // (sometimes it takes 1 time, sometimes it takes ~4,000+).
+ for iter := 0; ; iter++ {
+ if iter%50 == 0 {
+ fmt.Println(iter) // ERROR "iter escapes to heap$" "... argument does not escape$"
+ }
+ test1(iter)
+ test2(iter)
+ test3(iter)
+ test4(iter)
+ test5(iter)
+ test6(iter)
+ }
+}
+
+func test1(iter int) {
+
+ const maxI = 500
+ m := make(map[int][]int) // ERROR "make\(map\[int\]\[\]int\) escapes to heap$"
+
+ // The panic seems to be triggered when m is modified inside a
+ // closure that is both recursively called and reassigned to in a
+ // loop.
+
+ // Cause of bug -- escape of closure failed to escape (shared) data structures
+ // of map. Assign to fn declared outside of loop triggers escape of closure.
+ // Heap -> stack pointer eventually causes badness when stack reallocation
+ // occurs.
+
+ var fn func() // ERROR "moved to heap: fn$"
+ for i := 0; i < maxI; i++ { // ERROR "moved to heap: i$"
+ // var fn func() // this makes it work, because fn stays off heap
+ j := 0 // ERROR "moved to heap: j$"
+ fn = func() { // ERROR "func literal escapes to heap$"
+ m[i] = append(m[i], 0)
+ if j < 25 {
+ j++
+ fn()
+ }
+ }
+ fn()
+ }
+
+ if len(m) != maxI {
+ panic(fmt.Sprintf("iter %d: maxI = %d, len(m) = %d", iter, maxI, len(m))) // ERROR "iter escapes to heap$" "len\(m\) escapes to heap$" "maxI escapes to heap$" "... argument does not escape$"
+ }
+}
+
+func test2(iter int) {
+
+ const maxI = 500
+ m := make(map[int][]int) // ERROR "make\(map\[int\]\[\]int\) does not escape$"
+
+ // var fn func()
+ for i := 0; i < maxI; i++ {
+ var fn func() // this makes it work, because fn stays off heap
+ j := 0
+ fn = func() { // ERROR "func literal does not escape$"
+ m[i] = append(m[i], 0)
+ if j < 25 {
+ j++
+ fn()
+ }
+ }
+ fn()
+ }
+
+ if len(m) != maxI {
+ panic(fmt.Sprintf("iter %d: maxI = %d, len(m) = %d", iter, maxI, len(m))) // ERROR "iter escapes to heap$" "len\(m\) escapes to heap$" "maxI escapes to heap$" "... argument does not escape$"
+ }
+}
+
+func test3(iter int) {
+
+ const maxI = 500
+ var x int // ERROR "moved to heap: x$"
+ m := &x
+
+ var fn func() // ERROR "moved to heap: fn$"
+ for i := 0; i < maxI; i++ {
+ // var fn func() // this makes it work, because fn stays off heap
+ j := 0 // ERROR "moved to heap: j$"
+ fn = func() { // ERROR "func literal escapes to heap$"
+ if j < 100 {
+ j++
+ fn()
+ } else {
+ *m = *m + 1
+ }
+ }
+ fn()
+ }
+
+ if *m != maxI {
+ panic(fmt.Sprintf("iter %d: maxI = %d, *m = %d", iter, maxI, *m)) // ERROR "\*m escapes to heap$" "iter escapes to heap$" "maxI escapes to heap$" "... argument does not escape$"
+ }
+}
+
+func test4(iter int) {
+
+ const maxI = 500
+ var x int
+ m := &x
+
+ // var fn func()
+ for i := 0; i < maxI; i++ {
+ var fn func() // this makes it work, because fn stays off heap
+ j := 0
+ fn = func() { // ERROR "func literal does not escape$"
+ if j < 100 {
+ j++
+ fn()
+ } else {
+ *m = *m + 1
+ }
+ }
+ fn()
+ }
+
+ if *m != maxI {
+ panic(fmt.Sprintf("iter %d: maxI = %d, *m = %d", iter, maxI, *m)) // ERROR "\*m escapes to heap$" "iter escapes to heap$" "maxI escapes to heap$" "... argument does not escape$"
+ }
+}
+
+type str struct {
+ m *int
+}
+
+func recur1(j int, s *str) { // ERROR "s does not escape"
+ if j < 100 {
+ j++
+ recur1(j, s)
+ } else {
+ *s.m++
+ }
+}
+
+func test5(iter int) {
+
+ const maxI = 500
+ var x int // ERROR "moved to heap: x$"
+ m := &x
+
+ var fn *str
+ for i := 0; i < maxI; i++ {
+ // var fn *str // this makes it work, because fn stays off heap
+ fn = &str{m} // ERROR "&str{...} escapes to heap"
+ recur1(0, fn)
+ }
+
+ if *m != maxI {
+ panic(fmt.Sprintf("iter %d: maxI = %d, *m = %d", iter, maxI, *m)) // ERROR "\*m escapes to heap$" "iter escapes to heap$" "maxI escapes to heap$" "... argument does not escape$"
+ }
+}
+
+func test6(iter int) {
+
+ const maxI = 500
+ var x int
+ m := &x
+
+ // var fn *str
+ for i := 0; i < maxI; i++ {
+ var fn *str // this makes it work, because fn stays off heap
+ fn = &str{m} // ERROR "&str{...} does not escape"
+ recur1(0, fn)
+ }
+
+ if *m != maxI {
+ panic(fmt.Sprintf("iter %d: maxI = %d, *m = %d", iter, maxI, *m)) // ERROR "\*m escapes to heap$" "iter escapes to heap$" "maxI escapes to heap$" "... argument does not escape$"
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13821.go b/gcc/testsuite/go.test/test/fixedbugs/issue13821.go
new file mode 100644
index 0000000..187e4b4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13821.go
@@ -0,0 +1,15 @@
+// compile
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 13821. Compiler rejected "bool(true)" as not a constant.
+
+package p
+
+const (
+ A = true
+ B = bool(A)
+ C = bool(true)
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue13821b.go b/gcc/testsuite/go.test/test/fixedbugs/issue13821b.go
new file mode 100644
index 0000000..df68e8d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue13821b.go
@@ -0,0 +1,24 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 13821. Additional regress tests.
+
+package p
+
+type B bool
+type B2 bool
+
+var b B
+var b2 B2
+var x1 = b && 1 < 2 // x1 has type B, not ideal bool
+var x2 = 1 < 2 && b // x2 has type B, not ideal bool
+var x3 = b && b2 // ERROR "mismatched types B and B2|incompatible types"
+var x4 = x1 && b2 // ERROR "mismatched types B and B2|incompatible types"
+var x5 = x2 && b2 // ERROR "mismatched types B and B2|incompatible types"
+var x6 = b2 && x1 // ERROR "mismatched types B2 and B|incompatible types"
+var x7 = b2 && x2 // ERROR "mismatched types B2 and B|incompatible types"
+
+var x8 = b && !B2(true) // ERROR "mismatched types B and B2|incompatible types"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14006.go b/gcc/testsuite/go.test/test/fixedbugs/issue14006.go
new file mode 100644
index 0000000..9cad2b4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14006.go
@@ -0,0 +1,67 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Literals that happen to resolve to named constants
+// may be used as label names (see issue 13684). Make
+// sure that other literals don't crash the compiler.
+
+package main
+
+const labelname = 1
+
+func main() {
+ goto labelname
+labelname:
+}
+
+func f() {
+ var x int
+ switch x {
+ case 1:
+ 2: // ERROR "unexpected :|expected .*;.* or .*}.* or newline|value computed is not used"
+ case 2:
+ }
+
+ switch x {
+ case 1:
+ 2: ; // ERROR "unexpected :|expected .*;.* or .*}.* or newline|value computed is not used"
+ case 2:
+ }
+
+ var y string
+ switch y {
+ case "foo":
+ "bar": // ERROR "unexpected :|expected .*;.* or .*}.* or newline|value computed is not used"
+ case "bar":
+ }
+
+ switch y {
+ case "foo":
+ "bar": ; // ERROR "unexpected :|expected .*;.* or .*}.* or newline|value computed is not used"
+ case "bar":
+ }
+
+ var z bool
+ switch {
+ case z:
+ labelname: // ERROR "missing statement after label"
+ case false:
+ }
+}
+
+func g() {
+ var z bool
+ switch {
+ case z:
+ labelname: // ERROR "label labelname defined and not used|previous definition|defined and not used"
+ }
+
+ switch {
+ case z:
+ labelname: ; // ERROR "label labelname already defined at LINE-5|label .*labelname.* already defined"
+ case false:
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14010.go b/gcc/testsuite/go.test/test/fixedbugs/issue14010.go
new file mode 100644
index 0000000..0b23334
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14010.go
@@ -0,0 +1,15 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that built-in types don't get printed with
+// (empty) package qualification.
+
+package main
+
+func main() {
+ true = false // ERROR "cannot assign to true|invalid left hand side"
+ byte = 0 // ERROR "not an expression|invalid left hand side|invalid use of type"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14136.go b/gcc/testsuite/go.test/test/fixedbugs/issue14136.go
new file mode 100644
index 0000000..38308cd
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14136.go
@@ -0,0 +1,19 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that > 10 non-syntax errors on the same line
+// don't lead to early exit. Specifically, here test
+// that we see the initialization error for variable
+// s.
+
+package main
+
+type T struct{}
+
+func main() {
+ t := T{X: 1, X: 1, X: 1, X: 1, X: 1, X: 1, X: 1, X: 1, X: 1, X: 1} // ERROR "unknown field 'X' in struct literal of type T|unknown field .*X.* in .*T.*"
+ var s string = 1 // ERROR "cannot use 1|incompatible type"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14164.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue14164.dir/a.go
new file mode 100644
index 0000000..bf03051
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14164.dir/a.go
@@ -0,0 +1,47 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+// F is an exported function, small enough to be inlined.
+// It defines a local interface with an unexported method
+// f, which will appear with a package-qualified method
+// name in the export data.
+func F(x interface{}) bool {
+ _, ok := x.(interface {
+ f()
+ })
+ return ok
+}
+
+// Like F but with the unexported interface method f
+// defined via an embedded interface t. The compiler
+// always flattens embedded interfaces so there should
+// be no difference between F and G. Alas, currently
+// G is not inlineable (at least via export data), so
+// the issue is moot, here.
+func G(x interface{}) bool {
+ type t0 interface {
+ f()
+ }
+ _, ok := x.(interface {
+ t0
+ })
+ return ok
+}
+
+// Like G but now the embedded interface is declared
+// at package level. This function is inlineable via
+// export data. The export data representation is like
+// for F.
+func H(x interface{}) bool {
+ _, ok := x.(interface {
+ t1
+ })
+ return ok
+}
+
+type t1 interface {
+ f()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14164.dir/main.go b/gcc/testsuite/go.test/test/fixedbugs/issue14164.dir/main.go
new file mode 100644
index 0000000..bcc6a63
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14164.dir/main.go
@@ -0,0 +1,12 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+// Verify that we can import package "a" containing an inlineable
+// function F that declares a local interface with a non-exported
+// method f.
+import _ "./a"
+
+func main() {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14164.go b/gcc/testsuite/go.test/test/fixedbugs/issue14164.go
new file mode 100644
index 0000000..5247599
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14164.go
@@ -0,0 +1,7 @@
+// compiledir
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14331.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue14331.dir/a.go
new file mode 100644
index 0000000..f1e57ef
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14331.dir/a.go
@@ -0,0 +1,14 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+var S struct {
+ Str string `tag`
+}
+
+func F() string {
+ v := S
+ return v.Str
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14331.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue14331.dir/b.go
new file mode 100644
index 0000000..a2280a3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14331.dir/b.go
@@ -0,0 +1,11 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "./a"
+
+func G() string {
+ return a.F()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14331.go b/gcc/testsuite/go.test/test/fixedbugs/issue14331.go
new file mode 100644
index 0000000..b8ee2fb1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14331.go
@@ -0,0 +1,9 @@
+// compiledir
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Inline function misses struct tags.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14405.go b/gcc/testsuite/go.test/test/fixedbugs/issue14405.go
new file mode 100644
index 0000000..94592fd
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14405.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Mention of field with large offset in struct literal causes crash
+package p
+
+type T struct {
+ Slice [1 << 20][]int
+ Ptr *int
+}
+
+func New(p *int) *T {
+ return &T{Ptr: p}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14520.go b/gcc/testsuite/go.test/test/fixedbugs/issue14520.go
new file mode 100644
index 0000000..0b840ff
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14520.go
@@ -0,0 +1,14 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package f
+
+import /* // ERROR "import path" */ `
+bogus`
+
+func f(x int /* // GC_ERROR "unexpected newline"
+
+*/) // GCCGO_ERROR "expected .*\).*|expected declaration"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14553.go b/gcc/testsuite/go.test/test/fixedbugs/issue14553.go
new file mode 100644
index 0000000..d7ebb12
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14553.go
@@ -0,0 +1,45 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This test checks if the compiler's internal constant
+// arithmetic correctly rounds denormal float32 values.
+
+package main
+
+import (
+ "fmt"
+ "math"
+)
+
+func main() {
+ for _, t := range []struct {
+ value float32
+ bits uint32
+ }{
+ {0e+00, 0x00000000},
+ {1e-46, 0x00000000},
+ {0.5e-45, 0x00000000},
+ {0.8e-45, 0x00000001},
+ {1e-45, 0x00000001},
+ {2e-45, 0x00000001},
+ {3e-45, 0x00000002},
+ {4e-45, 0x00000003},
+ {5e-45, 0x00000004},
+ {6e-45, 0x00000004},
+ {7e-45, 0x00000005},
+ {8e-45, 0x00000006},
+ {9e-45, 0x00000006},
+ {1.0e-44, 0x00000007},
+ {1.1e-44, 0x00000008},
+ {1.2e-44, 0x00000009},
+ } {
+ got := math.Float32bits(t.value)
+ want := t.bits
+ if got != want {
+ panic(fmt.Sprintf("bits(%g) = 0x%08x; want 0x%08x", t.value, got, want))
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14591.go b/gcc/testsuite/go.test/test/fixedbugs/issue14591.go
new file mode 100644
index 0000000..626fbbc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14591.go
@@ -0,0 +1,38 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test to make sure we don't think values are dead
+// when they are assigned to a PPARAMOUT slot before
+// the last GC safepoint.
+
+package main
+
+import (
+ "fmt"
+ "runtime"
+)
+
+// When a T is deallocated, T[1] is certain to
+// get clobbered (the runtime writes 0xdeaddeaddeaddead there).
+type T [4]int
+
+func f() (r, s *T) {
+ r = &T{0x30, 0x31, 0x32, 0x33}
+ runtime.GC()
+ s = &T{0x40, 0x41, 0x42, 0x43}
+ runtime.GC()
+ return
+}
+
+func main() {
+ r, s := f()
+ if r[1] != 0x31 {
+ fmt.Printf("bad r[1], want 0x31 got %x\n", r[1])
+ }
+ if s[1] != 0x41 {
+ fmt.Printf("bad s[1], want 0x41 got %x\n", s[1])
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14636.go b/gcc/testsuite/go.test/test/fixedbugs/issue14636.go
new file mode 100644
index 0000000..06fd193
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14636.go
@@ -0,0 +1,43 @@
+// +build !nacl,!js,!android,gc
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "bytes"
+ "log"
+ "os/exec"
+ "strings"
+)
+
+func main() {
+ checkLinkOutput("", "-B argument must start with 0x")
+ checkLinkOutput("0", "-B argument must start with 0x")
+ checkLinkOutput("0x", "usage")
+ checkLinkOutput("0x0", "-B argument must have even number of digits")
+ checkLinkOutput("0x00", "usage")
+ checkLinkOutput("0xYZ", "-B argument contains invalid hex digit")
+ checkLinkOutput("0x"+strings.Repeat("00", 32), "usage")
+ checkLinkOutput("0x"+strings.Repeat("00", 33), "-B option too long (max 32 digits)")
+}
+
+func checkLinkOutput(buildid string, message string) {
+ cmd := exec.Command("go", "tool", "link", "-B", buildid)
+ out, err := cmd.CombinedOutput()
+ if err == nil {
+ log.Fatalf("expected cmd/link to fail")
+ }
+
+ firstLine := string(bytes.SplitN(out, []byte("\n"), 2)[0])
+ if strings.HasPrefix(firstLine, "panic") {
+ log.Fatalf("cmd/link panicked:\n%s", out)
+ }
+
+ if !strings.Contains(firstLine, message) {
+ log.Fatalf("cmd/link output did not include expected message %q: %s", message, firstLine)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14646.go b/gcc/testsuite/go.test/test/fixedbugs/issue14646.go
new file mode 100644
index 0000000..96a6854
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14646.go
@@ -0,0 +1,23 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "runtime"
+
+func main() {
+ var file string
+ var line int
+ func() {
+ defer func() {
+ _, file, line, _ = runtime.Caller(1)
+ }()
+ }() // this is the expected line
+ const EXPECTED = 18
+ if line != EXPECTED {
+ println("Expected line =", EXPECTED, "but got line =", line, "and file =", file)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14651.go b/gcc/testsuite/go.test/test/fixedbugs/issue14651.go
new file mode 100644
index 0000000..4c756e5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14651.go
@@ -0,0 +1,71 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This test checks if the compiler's internal constant
+// arithmetic correctly rounds up floating-point values
+// that become the smallest denormal value.
+//
+// See also related issue 14553 and test issue14553.go.
+
+package main
+
+import (
+ "fmt"
+ "math"
+)
+
+const (
+ p149 = 1.0 / (1 << 149) // 1p-149
+ p500 = 1.0 / (1 << 500) // 1p-500
+ p1074 = p500 * p500 / (1<<74) // 1p-1074
+)
+
+const (
+ m0000p149 = 0x0 / 16.0 * p149 // = 0.0000p-149
+ m1000p149 = 0x8 / 16.0 * p149 // = 0.1000p-149
+ m1001p149 = 0x9 / 16.0 * p149 // = 0.1001p-149
+ m1011p149 = 0xb / 16.0 * p149 // = 0.1011p-149
+ m1100p149 = 0xc / 16.0 * p149 // = 0.1100p-149
+
+ m0000p1074 = 0x0 / 16.0 * p1074 // = 0.0000p-1074
+ m1000p1074 = 0x8 / 16.0 * p1074 // = 0.1000p-1074
+ m1001p1074 = 0x9 / 16.0 * p1074 // = 0.1001p-1074
+ m1011p1074 = 0xb / 16.0 * p1074 // = 0.1011p-1074
+ m1100p1074 = 0xc / 16.0 * p1074 // = 0.1100p-1074
+)
+
+func main() {
+ test32(float32(m0000p149), f32(m0000p149))
+ test32(float32(m1000p149), f32(m1000p149))
+ test32(float32(m1001p149), f32(m1001p149))
+ test32(float32(m1011p149), f32(m1011p149))
+ test32(float32(m1100p149), f32(m1100p149))
+
+ test64(float64(m0000p1074), f64(m0000p1074))
+ test64(float64(m1000p1074), f64(m1000p1074))
+ test64(float64(m1001p1074), f64(m1001p1074))
+ test64(float64(m1011p1074), f64(m1011p1074))
+ test64(float64(m1100p1074), f64(m1100p1074))
+}
+
+func f32(x float64) float32 { return float32(x) }
+func f64(x float64) float64 { return float64(x) }
+
+func test32(a, b float32) {
+ abits := math.Float32bits(a)
+ bbits := math.Float32bits(b)
+ if abits != bbits {
+ panic(fmt.Sprintf("%08x != %08x\n", abits, bbits))
+ }
+}
+
+func test64(a, b float64) {
+ abits := math.Float64bits(a)
+ bbits := math.Float64bits(b)
+ if abits != bbits {
+ panic(fmt.Sprintf("%016x != %016x\n", abits, bbits))
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14652.go b/gcc/testsuite/go.test/test/fixedbugs/issue14652.go
new file mode 100644
index 0000000..d53b412
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14652.go
@@ -0,0 +1,9 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+var x any // ERROR "undefined: any|undefined type .*any.*"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14725.go b/gcc/testsuite/go.test/test/fixedbugs/issue14725.go
new file mode 100644
index 0000000..49f3fbc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14725.go
@@ -0,0 +1,57 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "fmt"
+
+func f1() (x int) {
+ for {
+ defer func() {
+ recover()
+ x = 1
+ }()
+ panic(nil)
+ }
+}
+
+var sink *int
+
+func f2() (x int) {
+ sink = &x
+ defer func() {
+ recover()
+ x = 1
+ }()
+ panic(nil)
+}
+
+func f3(b bool) (x int) {
+ sink = &x
+ defer func() {
+ recover()
+ x = 1
+ }()
+ if b {
+ panic(nil)
+ }
+ return
+}
+
+func main() {
+ if x := f1(); x != 1 {
+ panic(fmt.Sprintf("f1 returned %d, wanted 1", x))
+ }
+ if x := f2(); x != 1 {
+ panic(fmt.Sprintf("f2 returned %d, wanted 1", x))
+ }
+ if x := f3(true); x != 1 {
+ panic(fmt.Sprintf("f3(true) returned %d, wanted 1", x))
+ }
+ if x := f3(false); x != 1 {
+ panic(fmt.Sprintf("f3(false) returned %d, wanted 1", x))
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14729.go b/gcc/testsuite/go.test/test/fixedbugs/issue14729.go
new file mode 100644
index 0000000..9b30fd2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14729.go
@@ -0,0 +1,14 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 14729: structs cannot embed unsafe.Pointer per the spec.
+
+package main
+
+import "unsafe"
+
+type s struct { unsafe.Pointer } // ERROR "embedded type cannot be a pointer|embedded type may not be a pointer"
+type s1 struct { p unsafe.Pointer }
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue14988.go b/gcc/testsuite/go.test/test/fixedbugs/issue14988.go
new file mode 100644
index 0000000..4ddc7e7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue14988.go
@@ -0,0 +1,13 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 14988: defining a map with an invalid forward declaration array
+// key doesn't cause a fatal.
+
+package main
+
+type m map[k]int // ERROR "invalid map key type"
+type k [1]m
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15013.go b/gcc/testsuite/go.test/test/fixedbugs/issue15013.go
new file mode 100644
index 0000000..9e218e6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15013.go
@@ -0,0 +1,24 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// CL 21202 introduced a compiler crash in the handling of a varargs
+// function in the same recursive group as a function that calls it.
+// Nothing in the standard library caught the problem, so adding a test.
+
+package p
+
+func F1(p *int, a ...*int) (int, *int) {
+ if p == nil {
+ return F2(), a[0]
+ }
+ return 0, a[0]
+}
+
+func F2() int {
+ var i0, i1 int
+ a, _ := F1(&i0, &i1)
+ return a
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15039.go b/gcc/testsuite/go.test/test/fixedbugs/issue15039.go
new file mode 100644
index 0000000..85d9e83
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15039.go
@@ -0,0 +1,25 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ const fffd = "\uFFFD"
+
+ // runtime.intstring used to convert int64 to rune without checking
+ // for truncation.
+ u := uint64(0x10001f4a9)
+ big := string(u)
+ if big != fffd {
+ panic("big != bad")
+ }
+
+ // cmd/compile used to require integer constants to fit into an "int".
+ const huge = string(1<<100)
+ if huge != fffd {
+ panic("huge != bad")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15042.go b/gcc/testsuite/go.test/test/fixedbugs/issue15042.go
new file mode 100644
index 0000000..85d5d6c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15042.go
@@ -0,0 +1,27 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Exchanging two struct fields was compiled incorrectly.
+
+package main
+
+type S struct {
+ i int
+}
+
+func F(c bool, s1, s2 S) (int, int) {
+ if c {
+ s1.i, s2.i = s2.i, s1.i
+ }
+ return s1.i, s2.i
+}
+
+func main() {
+ i, j := F(true, S{1}, S{20})
+ if i != 20 || j != 1 {
+ panic(i+j)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15071.dir/exp.go b/gcc/testsuite/go.test/test/fixedbugs/issue15071.dir/exp.go
new file mode 100644
index 0000000..e6041e6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15071.dir/exp.go
@@ -0,0 +1,24 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package exp
+
+func Exported(x int) int {
+ return inlined(x)
+}
+
+func inlined(x int) int {
+ y := 0
+ switch {
+ case x > 0:
+ y += 5
+ return 0 + y
+ case x < 1:
+ y += 6
+ fallthrough
+ default:
+ y += 7
+ return 2 + y
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15071.dir/main.go b/gcc/testsuite/go.test/test/fixedbugs/issue15071.dir/main.go
new file mode 100644
index 0000000..96790da
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15071.dir/main.go
@@ -0,0 +1,14 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "os"
+import "./exp"
+
+func main() {
+ _ = exp.Exported(len(os.Args))
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15071.go b/gcc/testsuite/go.test/test/fixedbugs/issue15071.go
new file mode 100644
index 0000000..af6f134
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15071.go
@@ -0,0 +1,7 @@
+// rundir
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15084.go b/gcc/testsuite/go.test/test/fixedbugs/issue15084.go
new file mode 100644
index 0000000..7eb294e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15084.go
@@ -0,0 +1,30 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package x
+
+type T struct {
+ i int
+ e interface{}
+}
+
+func (t *T) F() bool {
+ if t.i != 0 {
+ return false
+ }
+ _, ok := t.e.(string)
+ return ok
+}
+
+var x int
+
+func g(t *T) {
+ if t.F() || true {
+ if t.F() {
+ x = 0
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15141.go b/gcc/testsuite/go.test/test/fixedbugs/issue15141.go
new file mode 100644
index 0000000..752f530
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15141.go
@@ -0,0 +1,33 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ a := f(1, 99)
+ b := g(0xFFFFFFe, 98)
+ c := h(0xFFFFFFe, 98)
+ println(a[1], b[1], c[1], a[0xFFFFFFe], b[0xFFFFFFe], c[0xFFFFFFe])
+}
+
+//go:noinline
+func f(i, y int) (a [0xFFFFFFF]byte) {
+ a[i] = byte(y)
+ return
+}
+
+//go:noinline
+func g(i, y int) [0xFFFFFFF]byte {
+ var a [0xFFFFFFF]byte
+ a[i] = byte(y)
+ return a
+}
+
+//go:noinline
+func h(i, y int) (a [0xFFFFFFF]byte) {
+ a[i] = byte(y)
+ return a
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15175.go b/gcc/testsuite/go.test/test/fixedbugs/issue15175.go
new file mode 100644
index 0000000..55a8f7d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15175.go
@@ -0,0 +1,66 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure unsigned shift results get sign-extended correctly.
+package main
+
+import "fmt"
+
+func main() {
+ failed := false
+ a6 := uint8(253)
+ if got := a6 >> 0; got != 253 {
+ fmt.Printf("uint8(253)>>0 = %v, wanted 253\n", got)
+ failed = true
+ }
+ if got := f1(0, 2, 1, 0, 0, 1, true); got != 255 {
+ fmt.Printf("f1(...) = %v, wanted 255\n", got)
+ failed = true
+ }
+ if got := f2(1); got != 242 {
+ fmt.Printf("f2(...) = %v, wanted 242\n", got)
+ failed = true
+ }
+ if got := f3(false, 0, 0); got != 254 {
+ fmt.Printf("f3(...) = %v, wanted 254\n", got)
+ failed = true
+ }
+ if failed {
+ panic("bad")
+ }
+}
+
+func f1(a1 uint, a2 int8, a3 int8, a4 int8, a5 uint8, a6 int, a7 bool) uint8 {
+ a5--
+ a4 += (a2 << a1 << 2) | (a4 ^ a4<<(a1&a1)) - a3 // int8
+ a6 -= a6 >> (2 + uint32(a2)>>3) // int
+ a1 += a1 // uint
+ a3 *= a4 << (a1 | a1) << (uint16(3) >> 2 & (1 - 0) & (uint16(1) << a5 << 3)) // int8
+ a7 = a7 || ((a2 == a4) || (a7 && a7) || ((a5 == a5) || (a7 || a7))) // bool
+ return a5 >> a1
+}
+
+func f2(a1 uint8) uint8 {
+ a1--
+ a1--
+ a1 -= a1 + (a1 << 1) - (a1*a1*a1)<<(2-0+(3|3)-1) // uint8
+ v1 := 0 * ((2 * 1) ^ 1) & ((uint(0) >> a1) + (2+0)*(uint(2)+0)) // uint
+ _ = v1
+ return a1 >> (((2 ^ 2) >> (v1 | 2)) + 0)
+}
+
+func f3(a1 bool, a2 uint, a3 int64) uint8 {
+ a3--
+ v1 := 1 & (2 & 1 * (1 ^ 2) & (uint8(3*1) >> 0)) // uint8
+ _ = v1
+ v1 += v1 - (v1 >> a2) + (v1 << (a2 ^ a2) & v1) // uint8
+ v1 *= v1 // uint8
+ a3--
+ v1 += v1 & v1 // uint8
+ v1--
+ v1 = ((v1 << 0) | v1>>0) + v1 // uint8
+ return v1 >> 0
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15252.go b/gcc/testsuite/go.test/test/fixedbugs/issue15252.go
new file mode 100644
index 0000000..370a885
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15252.go
@@ -0,0 +1,32 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This test makes sure that we use all 64 bits of an
+// index, even on 32 bit machines. It also tests that nacl
+// can compile 64 bit indexes loaded from ODOTPTR properly.
+
+package main
+
+type T struct {
+ i int64
+}
+
+func f(t *T) byte {
+ b := [2]byte{3, 4}
+ return b[t.i]
+}
+
+func main() {
+ t := &T{0x100000001}
+ defer func() {
+ r := recover()
+ if r == nil {
+ panic("panic wasn't recoverable")
+ }
+ }()
+ f(t)
+ panic("index didn't panic")
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15277.go b/gcc/testsuite/go.test/test/fixedbugs/issue15277.go
new file mode 100644
index 0000000..af165f7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15277.go
@@ -0,0 +1,40 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+// +build amd64
+
+package main
+
+import "runtime"
+
+type big [10 << 20]byte
+
+func f(x *big, start int64) {
+ if delta := inuse() - start; delta < 9<<20 {
+ println("after alloc: expected delta at least 9MB, got: ", delta)
+ }
+ runtime.KeepAlive(x)
+ x = nil
+ if delta := inuse() - start; delta > 1<<20 {
+ println("after drop: expected delta below 1MB, got: ", delta)
+ }
+ x = new(big)
+ if delta := inuse() - start; delta < 9<<20 {
+ println("second alloc: expected delta at least 9MB, got: ", delta)
+ }
+ runtime.KeepAlive(x)
+}
+
+func main() {
+ x := inuse()
+ f(new(big), x)
+}
+
+func inuse() int64 {
+ runtime.GC()
+ var st runtime.MemStats
+ runtime.ReadMemStats(&st)
+ return int64(st.Alloc)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15303.go b/gcc/testsuite/go.test/test/fixedbugs/issue15303.go
new file mode 100644
index 0000000..c8dfa30
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15303.go
@@ -0,0 +1,24 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Ensure that inlined struct/array comparisons have the right side-effects.
+
+package main
+
+import "os"
+
+func main() {
+ var x int
+ f := func() (r [4]int) {
+ x++
+ return
+ }
+ _ = f() == f()
+ if x != 2 {
+ println("f evaluated ", x, " times, want 2")
+ os.Exit(1)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15329.go b/gcc/testsuite/go.test/test/fixedbugs/issue15329.go
new file mode 100644
index 0000000..30fbf13
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15329.go
@@ -0,0 +1,79 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Previously, cmd/compile would rewrite
+//
+// check(unsafe.Pointer(testMeth(1).Pointer()), unsafe.Pointer(testMeth(2).Pointer()))
+//
+// to
+//
+// var autotmp_1 uintptr = testMeth(1).Pointer()
+// var autotmp_2 uintptr = testMeth(2).Pointer()
+// check(unsafe.Pointer(autotmp_1), unsafe.Pointer(autotmp_2))
+//
+// However, that means autotmp_1 is the only reference to the int
+// variable containing the value "1", but it's not a pointer type,
+// so it was at risk of being garbage collected by the evaluation of
+// testMeth(2).Pointer(), even though package unsafe's documentation
+// says the original code was allowed.
+//
+// Now cmd/compile rewrites it to
+//
+// var autotmp_1 unsafe.Pointer = unsafe.Pointer(testMeth(1).Pointer())
+// var autotmp_2 unsafe.Pointer = unsafe.Pointer(testMeth(2).Pointer())
+// check(autotmp_1, autotmp_2)
+//
+// to ensure the pointed-to variables are visible to the GC.
+
+package main
+
+import (
+ "fmt"
+ "reflect"
+ "runtime"
+ "unsafe"
+)
+
+func main() {
+ // Test all the different ways we can invoke reflect.Value.Pointer.
+
+ // Direct method invocation.
+ check(unsafe.Pointer(testMeth(1).Pointer()), unsafe.Pointer(testMeth(2).Pointer()))
+
+ // Invocation via method expression.
+ check(unsafe.Pointer(reflect.Value.Pointer(testMeth(1))), unsafe.Pointer(reflect.Value.Pointer(testMeth(2))))
+
+ // Invocation via interface.
+ check(unsafe.Pointer(testInter(1).Pointer()), unsafe.Pointer(testInter(2).Pointer()))
+
+ // Invocation via method value.
+ check(unsafe.Pointer(testFunc(1)()), unsafe.Pointer(testFunc(2)()))
+}
+
+func check(p, q unsafe.Pointer) {
+ a, b := *(*int)(p), *(*int)(q)
+ if a != 1 || b != 2 {
+ fmt.Printf("got %v, %v; expected 1, 2\n", a, b)
+ }
+}
+
+func testMeth(x int) reflect.Value {
+ // Force GC to run.
+ runtime.GC()
+ return reflect.ValueOf(&x)
+}
+
+type Pointerer interface {
+ Pointer() uintptr
+}
+
+func testInter(x int) Pointerer {
+ return testMeth(x)
+}
+
+func testFunc(x int) func() uintptr {
+ return testMeth(x).Pointer
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15439.go b/gcc/testsuite/go.test/test/fixedbugs/issue15439.go
new file mode 100644
index 0000000..840a3c0
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15439.go
@@ -0,0 +1,25 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "reflect"
+
+func main() {
+ a := &struct{ x int }{}
+ b := &struct{ x int "" }{}
+
+ ta := reflect.TypeOf(a)
+ tb := reflect.TypeOf(b)
+
+ // Ensure cmd/compile treats absent and empty tags as equivalent.
+ a = b
+
+ // Ensure package reflect treats absent and empty tags as equivalent.
+ if !tb.AssignableTo(ta) {
+ panic("fail")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15470.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue15470.dir/a.go
new file mode 100644
index 0000000..1fcf3ea
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15470.dir/a.go
@@ -0,0 +1,24 @@
+package a
+
+import "io"
+
+type T interface {
+ M0(_ int)
+ M1(x, _ int) // _ (blank) caused crash
+ M2() (x, _ int)
+}
+
+type S struct{}
+
+func (S) M0(_ int) {}
+func (S) M1(x, _ int) {}
+func (S) M2() (x, _ int) { return }
+func (_ S) M3() {}
+
+// Snippet from x/tools/godoc/analysis/analysis.go.
+// Offending code from #5470.
+type Link interface {
+ Start() int
+ End() int
+ Write(w io.Writer, _ int, start bool) // _ (blank) caused crash
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15470.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue15470.dir/b.go
new file mode 100644
index 0000000..863ee9f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15470.dir/b.go
@@ -0,0 +1,3 @@
+package b
+
+import _ "./a" // must not fail
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15470.go b/gcc/testsuite/go.test/test/fixedbugs/issue15470.go
new file mode 100644
index 0000000..22b48fe
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15470.go
@@ -0,0 +1,10 @@
+// compiledir
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 15470: Make sure special-case signatures can
+// be exported and imported w/o problems.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15514.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue15514.dir/a.go
new file mode 100644
index 0000000..663303b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15514.dir/a.go
@@ -0,0 +1,7 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type A struct{ _ int32 }
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15514.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue15514.dir/b.go
new file mode 100644
index 0000000..f0750d3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15514.dir/b.go
@@ -0,0 +1,7 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+func B() (_ struct{ _ int32 }) { return }
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15514.dir/c.go b/gcc/testsuite/go.test/test/fixedbugs/issue15514.dir/c.go
new file mode 100644
index 0000000..dc2ef5b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15514.dir/c.go
@@ -0,0 +1,10 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package c
+
+import "./a"
+import "./b"
+
+var _ a.A = b.B() // ERROR "cannot use b\.B|incompatible type"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15514.go b/gcc/testsuite/go.test/test/fixedbugs/issue15514.go
new file mode 100644
index 0000000..626f7ad
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15514.go
@@ -0,0 +1,7 @@
+// errorcheckdir
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15528.go b/gcc/testsuite/go.test/test/fixedbugs/issue15528.go
new file mode 100644
index 0000000..b1f9dfb
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15528.go
@@ -0,0 +1,131 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "io"
+ "os"
+ "reflect"
+ "unsafe"
+)
+
+type RWS struct{}
+
+func (x *RWS) Read(p []byte) (n int, err error) { return }
+func (x *RWS) Write(p []byte) (n int, err error) { return }
+func (x *RWS) Seek(offset int64, whence int) (n int64, err error) { return }
+func (x *RWS) String() string { return "rws" }
+
+func makeRWS() io.ReadWriteSeeker { return &RWS{} }
+func makeStringer() fmt.Stringer { return &RWS{} }
+
+// Test correct construction of static empty interface values
+var efaces = [...]struct {
+ x interface{}
+ s string
+}{
+ {nil, "<nil> <nil>"},
+ {1, "int 1"},
+ {int(1), "int 1"},
+ {Int(int(2)), "main.Int Int=2"},
+ {int(Int(3)), "int 3"},
+ {[1]int{2}, "[1]int [2]"},
+ {io.Reader(io.ReadWriter(io.ReadWriteSeeker(nil))), "<nil> <nil>"},
+ {io.Reader(io.ReadWriter(io.ReadWriteSeeker(&RWS{}))), "*main.RWS rws"},
+ {makeRWS(), "*main.RWS rws"},
+ {map[string]string{"here": "there"}, "map[string]string map[here:there]"},
+ {chan bool(nil), "chan bool <nil>"},
+ {unsafe.Pointer(uintptr(0)), "unsafe.Pointer <nil>"},
+ {(*byte)(nil), "*uint8 <nil>"},
+ {io.Writer((*os.File)(nil)), "*os.File <nil>"},
+ {(interface{})(io.Writer((*os.File)(nil))), "*os.File <nil>"},
+ {fmt.Stringer(Strunger(((*Int)(nil)))), "*main.Int <nil>"},
+}
+
+type Int int
+
+func (i Int) String() string { return fmt.Sprintf("Int=%d", i) }
+func (i Int) Strung() {}
+
+type Strunger interface {
+ fmt.Stringer
+ Strung()
+}
+
+// Test correct construction of static non-empty interface values
+var ifaces = [...]struct {
+ x fmt.Stringer
+ s string
+}{
+ {nil, "<nil> <nil> %!s(<nil>)"},
+ {Int(3), "main.Int 3 Int=3"},
+ {Int(int(Int(4))), "main.Int 4 Int=4"},
+ {Strunger(Int(5)), "main.Int 5 Int=5"},
+ {makeStringer(), "*main.RWS &main.RWS{} rws"},
+ {fmt.Stringer(nil), "<nil> <nil> %!s(<nil>)"},
+ {(*RWS)(nil), "*main.RWS (*main.RWS)(nil) rws"},
+}
+
+// Test correct handling of direct interface values
+var (
+ one int = 1
+ iptr interface{} = &one
+ clos int
+ f interface{} = func() { clos++ }
+ deep interface{} = [1]struct{ a *[2]byte }{{a: &[2]byte{'z', 'w'}}}
+ ch interface{} = make(chan bool, 1)
+)
+
+func main() {
+ var fail bool
+ for i, test := range efaces {
+ s := fmt.Sprintf("%[1]T %[1]v", test.x)
+ if s != test.s {
+ fmt.Printf("eface(%d)=%q want %q\n", i, s, test.s)
+ fail = true
+ }
+ }
+
+ for i, test := range ifaces {
+ s := fmt.Sprintf("%[1]T %#[1]v %[1]s", test.x)
+ if s != test.s {
+ fmt.Printf("iface(%d)=%q want %q\n", i, s, test.s)
+ fail = true
+ }
+ }
+
+ if got := *(iptr.(*int)); got != 1 {
+ fmt.Printf("bad int ptr %d\n", got)
+ fail = true
+ }
+
+ f.(func())()
+ f.(func())()
+ f.(func())()
+ if clos != 3 {
+ fmt.Printf("bad closure exec %d\n", clos)
+ fail = true
+ }
+
+ if !reflect.DeepEqual(*(deep.([1]struct{ a *[2]byte })[0].a), [2]byte{'z', 'w'}) {
+ fmt.Printf("bad deep directiface\n")
+ fail = true
+ }
+
+ cc := ch.(chan bool)
+ cc <- true
+ if got := <-cc; !got {
+ fmt.Printf("bad chan\n")
+ fail = true
+ }
+
+ if fail {
+ fmt.Println("BUG")
+ os.Exit(1)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15548.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue15548.dir/a.go
new file mode 100644
index 0000000..3c593fc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15548.dir/a.go
@@ -0,0 +1,17 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type I0 interface {
+ I1
+}
+
+type T struct {
+ I1
+}
+
+type I1 interface {
+ M(*T) // removing * makes crash go away
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15548.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue15548.dir/b.go
new file mode 100644
index 0000000..b46f5ad
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15548.dir/b.go
@@ -0,0 +1,9 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "./a"
+
+var X a.T
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15548.dir/c.go b/gcc/testsuite/go.test/test/fixedbugs/issue15548.dir/c.go
new file mode 100644
index 0000000..6d3f3be
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15548.dir/c.go
@@ -0,0 +1,10 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package c
+
+import (
+ _ "./b"
+ _ "./a"
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15548.go b/gcc/testsuite/go.test/test/fixedbugs/issue15548.go
new file mode 100644
index 0000000..4d2844d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15548.go
@@ -0,0 +1,7 @@
+// compiledir
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15550.go b/gcc/testsuite/go.test/test/fixedbugs/issue15550.go
new file mode 100644
index 0000000..f2853fc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15550.go
@@ -0,0 +1,28 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "unsafe"
+
+const (
+ _ = unsafe.Sizeof(func() int {
+ const (
+ _ = 1
+ _
+ _
+ )
+ return 0
+ }())
+
+ y = iota
+)
+
+func main() {
+ if y != 1 {
+ panic(y)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15572.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue15572.dir/a.go
new file mode 100644
index 0000000..1356601
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15572.dir/a.go
@@ -0,0 +1,40 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type T struct {
+}
+
+func F() []T {
+ return []T{T{}}
+}
+
+func Fi() []T {
+ return []T{{}} // element with implicit composite literal type
+}
+
+func Fp() []*T {
+ return []*T{&T{}}
+}
+
+func Fip() []*T {
+ return []*T{{}} // element with implicit composite literal type
+}
+
+func Gp() map[int]*T {
+ return map[int]*T{0: &T{}}
+}
+
+func Gip() map[int]*T {
+ return map[int]*T{0: {}} // element with implicit composite literal type
+}
+
+func Hp() map[*T]int {
+ return map[*T]int{&T{}: 0}
+}
+
+func Hip() map[*T]int {
+ return map[*T]int{{}: 0} // key with implicit composite literal type
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15572.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue15572.dir/b.go
new file mode 100644
index 0000000..355accc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15572.dir/b.go
@@ -0,0 +1,27 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "./a"
+
+func F() {
+ a.F()
+ a.Fi()
+}
+
+func Fp() {
+ a.Fp()
+ a.Fip()
+}
+
+func Gp() {
+ a.Gp()
+ a.Gip()
+}
+
+func Hp() {
+ a.Hp()
+ a.Hip()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15572.go b/gcc/testsuite/go.test/test/fixedbugs/issue15572.go
new file mode 100644
index 0000000..cf77778
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15572.go
@@ -0,0 +1,11 @@
+// compiledir
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that exporting composite literals with implicit
+// types doesn't crash the typechecker when running over
+// inlined function bodies containing such literals.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15585.go b/gcc/testsuite/go.test/test/fixedbugs/issue15585.go
new file mode 100644
index 0000000..79eb13f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15585.go
@@ -0,0 +1,45 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package bug
+
+func example(n int) (rc int) {
+ var cc, ll, pp, rr [27]int
+ for q0 := 0; q0 < n-2; q0++ {
+ for q1 := q0 + 2; q1 < n; q1++ {
+ var c, d, l, p, r int
+ b0 := 1 << uint(q0)
+ b1 := 1 << uint(q1)
+ l = ((b0 << 1) | b1) << 1
+ c = b0 | b1 | (-1 << uint(n))
+ r = ((b0 >> 1) | b1) >> 1
+ E:
+ if c != -1 {
+ p = ^(l | c | r)
+ } else {
+ rc++
+ goto R
+ }
+ L:
+ if p != 0 {
+ lsb := p & -p
+ p &^= lsb
+ ll[d], cc[d], rr[d], pp[d] = l, c, r, p
+ l, c, r = (l|lsb)<<1, c|lsb, (r|lsb)>>1
+ d++
+ goto E
+ }
+ R:
+ d--
+ if d >= 0 {
+ l, c, r, p = ll[d], cc[d], rr[d], pp[d]
+ goto L
+ }
+ }
+ }
+ rc <<= 1
+ return
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15602.go b/gcc/testsuite/go.test/test/fixedbugs/issue15602.go
new file mode 100644
index 0000000..badf813
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15602.go
@@ -0,0 +1,11 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f(i interface{}) {
+ i, _ = i.(error)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15604.go b/gcc/testsuite/go.test/test/fixedbugs/issue15604.go
new file mode 100644
index 0000000..4dc0b0b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15604.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package bug
+
+import "os"
+
+func f(err error) {
+ var ok bool
+ if err, ok = err.(*os.PathError); ok {
+ if err == os.ErrNotExist {
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call.go b/gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call.go
new file mode 100644
index 0000000..41a489c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call.go
@@ -0,0 +1,7 @@
+// +build !amd64,!386
+
+package main
+
+func jump() {
+ target()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call_386.s b/gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call_386.s
new file mode 100644
index 0000000..751084c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call_386.s
@@ -0,0 +1,8 @@
+#include "textflag.h"
+
+DATA ·pointer(SB)/4, $·target(SB)
+GLOBL ·pointer(SB),RODATA,$4
+
+TEXT ·jump(SB),NOSPLIT,$4
+ CALL *·pointer(SB)
+ RET
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call_amd64.s b/gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call_amd64.s
new file mode 100644
index 0000000..09fbe5d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call_amd64.s
@@ -0,0 +1,8 @@
+#include "textflag.h"
+
+DATA ·pointer(SB)/8, $·target(SB)
+GLOBL ·pointer(SB),RODATA,$8
+
+TEXT ·jump(SB),NOSPLIT,$8
+ CALL *·pointer(SB)
+ RET
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call_decl.go b/gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call_decl.go
new file mode 100644
index 0000000..d9c5a4e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/call_decl.go
@@ -0,0 +1,5 @@
+// +build amd64 386
+
+package main
+
+func jump()
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/main.go b/gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/main.go
new file mode 100644
index 0000000..4855e31
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15609.dir/main.go
@@ -0,0 +1,14 @@
+package main
+
+var called bool
+
+func target() {
+ called = true
+}
+
+func main() {
+ jump()
+ if !called {
+ panic("target not called")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15646.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue15646.dir/a.go
new file mode 100644
index 0000000..842f196
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15646.dir/a.go
@@ -0,0 +1,23 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type T struct{}
+
+func (T) m() string {
+ return "m"
+}
+
+func (*T) mp() string {
+ return "mp"
+}
+
+func F() func(T) string {
+ return T.m // method expression
+}
+
+func Fp() func(*T) string {
+ return (*T).mp // method expression
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15646.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue15646.dir/b.go
new file mode 100644
index 0000000..3d011ba
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15646.dir/b.go
@@ -0,0 +1,16 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "./a" // import must succeed
+
+func main() {
+ if a.F()(a.T{}) != "m" {
+ panic(0)
+ }
+ if a.Fp()(nil) != "mp" {
+ panic(1)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15646.go b/gcc/testsuite/go.test/test/fixedbugs/issue15646.go
new file mode 100644
index 0000000..cd4ba9d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15646.go
@@ -0,0 +1,9 @@
+// rundir
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that method expressions are correctly encoded
+// in binary export data and can be imported again.
+package ignore \ No newline at end of file
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15722.go b/gcc/testsuite/go.test/test/fixedbugs/issue15722.go
new file mode 100644
index 0000000..dec5458
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15722.go
@@ -0,0 +1,21 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Checks to make sure that the compiler can catch a specific invalid
+// method type expression. NB: gccgo and gc have slightly different
+// error messages, hence the generic test for 'method' and not something
+// more specific.
+
+package issue15722
+
+type T int
+type P *T
+
+func (T) t() {}
+
+func _(p P) {
+ P.t(p) // ERROR "method"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15733.go b/gcc/testsuite/go.test/test/fixedbugs/issue15733.go
new file mode 100644
index 0000000..8f609e6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15733.go
@@ -0,0 +1,23 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+type S struct {
+ a [1 << 16]byte
+}
+
+func f1() {
+ p := &S{}
+ _ = p
+}
+
+type T [1 << 16]byte
+
+func f2() {
+ p := &T{}
+ _ = p
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15838.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue15838.dir/a.go
new file mode 100644
index 0000000..15b7f1d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15838.dir/a.go
@@ -0,0 +1,61 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+func F1() {
+L:
+ goto L
+}
+
+func F2() {
+L:
+ for {
+ break L
+ }
+}
+
+func F3() {
+L:
+ for {
+ continue L
+ }
+}
+
+func F4() {
+ switch {
+ case true:
+ fallthrough
+ default:
+ }
+}
+
+type T struct{}
+
+func (T) M1() {
+L:
+ goto L
+}
+
+func (T) M2() {
+L:
+ for {
+ break L
+ }
+}
+
+func (T) M3() {
+L:
+ for {
+ continue L
+ }
+}
+
+func (T) M4() {
+ switch {
+ case true:
+ fallthrough
+ default:
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15838.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue15838.dir/b.go
new file mode 100644
index 0000000..9fd6efc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15838.dir/b.go
@@ -0,0 +1,9 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "./a"
+
+type T struct{ a.T }
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15838.go b/gcc/testsuite/go.test/test/fixedbugs/issue15838.go
new file mode 100644
index 0000000..fb1c64d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15838.go
@@ -0,0 +1,12 @@
+// compiledir
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test cases for issue #15838, and related failures.
+// Make sure the importer correctly sets up nodes for
+// label decls, goto, continue, break, and fallthrough
+// statements.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15895.go b/gcc/testsuite/go.test/test/fixedbugs/issue15895.go
new file mode 100644
index 0000000..3ef295c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15895.go
@@ -0,0 +1,27 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// func bad used to fail to compile.
+
+package p
+
+type A [1]int
+
+func bad(x A) {
+ switch x {
+ case A([1]int{1}):
+ case A([1]int{1}):
+ }
+}
+
+func good(x A) {
+ y := A([1]int{1})
+ z := A([1]int{1})
+ switch x {
+ case y:
+ case z:
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15898.go b/gcc/testsuite/go.test/test/fixedbugs/issue15898.go
new file mode 100644
index 0000000..94369f9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15898.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f(e interface{}) {
+ switch e.(type) {
+ case nil, nil: // ERROR "multiple nil cases in type switch|duplicate type in switch"
+ }
+
+ switch e.(type) {
+ case nil:
+ case nil: // ERROR "multiple nil cases in type switch|duplicate type in switch"
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15902.go b/gcc/testsuite/go.test/test/fixedbugs/issue15902.go
new file mode 100644
index 0000000..9511a22
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15902.go
@@ -0,0 +1,27 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This test makes sure we don't use 4-byte unaligned writes
+// to zero memory on architectures that don't support them.
+
+package main
+
+type T struct {
+ a byte
+ b [10]byte
+}
+
+//go:noinline
+func f(t *T) {
+ // t will be aligned, so &t.b won't be.
+ t.b = [10]byte{}
+}
+
+var t T
+
+func main() {
+ f(&t)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15920.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue15920.dir/a.go
new file mode 100644
index 0000000..15f9235
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15920.dir/a.go
@@ -0,0 +1,9 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type Error error
+
+func F() Error { return nil }
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15920.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue15920.dir/b.go
new file mode 100644
index 0000000..0a36c5c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15920.dir/b.go
@@ -0,0 +1,7 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import _ "./a"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15920.go b/gcc/testsuite/go.test/test/fixedbugs/issue15920.go
new file mode 100644
index 0000000..4d2844d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15920.go
@@ -0,0 +1,7 @@
+// compiledir
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15926.go b/gcc/testsuite/go.test/test/fixedbugs/issue15926.go
new file mode 100644
index 0000000..76e25eb
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15926.go
@@ -0,0 +1,20 @@
+// build
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 15926: linker was adding .def to the end of symbols, causing
+// a name collision with a method actually named def.
+
+package main
+
+type S struct{}
+
+func (s S) def() {}
+
+var I = S.def
+
+func main() {
+ I(S{})
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15961.go b/gcc/testsuite/go.test/test/fixedbugs/issue15961.go
new file mode 100644
index 0000000..db3d662
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15961.go
@@ -0,0 +1,21 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package y
+
+type symSet []int
+
+//go:noinline
+func (s symSet) len() (r int) {
+ return 0
+}
+
+func f(m map[int]symSet) {
+ var symSet []int
+ for _, x := range symSet {
+ m[x] = nil
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15988.go b/gcc/testsuite/go.test/test/fixedbugs/issue15988.go
new file mode 100644
index 0000000..2bed2a9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15988.go
@@ -0,0 +1,14 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f(p, q []int) {
+ p = append(q, 5)
+ sink = &p
+}
+
+var sink *[]int
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15992.go b/gcc/testsuite/go.test/test/fixedbugs/issue15992.go
new file mode 100644
index 0000000..cda5527
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15992.go
@@ -0,0 +1,38 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+)
+
+func f(a []byte) ([]byte, []byte) {
+ return a, []byte("abc")
+}
+
+func g(a []byte) ([]byte, string) {
+ return a, "abc"
+}
+
+func h(m map[int]int) (map[int]int, int) {
+ return m, 0
+}
+
+func main() {
+ a := []byte{1, 2, 3}
+ n := copy(f(a))
+ fmt.Println(n, a)
+
+ b := []byte{1, 2, 3}
+ n = copy(g(b))
+ fmt.Println(n, b)
+
+ m := map[int]int{0: 0}
+ fmt.Println(len(m))
+ delete(h(m))
+ fmt.Println(len(m))
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue15992.out b/gcc/testsuite/go.test/test/fixedbugs/issue15992.out
new file mode 100644
index 0000000..e0011e3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue15992.out
@@ -0,0 +1,4 @@
+3 [97 98 99]
+3 [97 98 99]
+1
+0
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16016.go b/gcc/testsuite/go.test/test/fixedbugs/issue16016.go
new file mode 100644
index 0000000..e738e1d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16016.go
@@ -0,0 +1,35 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "time"
+
+type T struct{}
+
+func (*T) Foo(vals []interface{}) {
+ switch v := vals[0].(type) {
+ case string:
+ _ = v
+ }
+}
+
+type R struct{ *T }
+
+type Q interface {
+ Foo([]interface{})
+}
+
+func main() {
+ var q Q = &R{&T{}}
+ for i := 0; i < 10000; i++ {
+ go func() {
+ defer q.Foo([]interface{}{"meow"})
+ time.Sleep(100 * time.Millisecond)
+ }()
+ }
+ time.Sleep(1 * time.Second)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16037_run.go b/gcc/testsuite/go.test/test/fixedbugs/issue16037_run.go
new file mode 100644
index 0000000..68104a9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16037_run.go
@@ -0,0 +1,70 @@
+// +build !nacl,!js,!android,!gccgo
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "bytes"
+ "fmt"
+ "html/template"
+ "io/ioutil"
+ "log"
+ "os"
+ "os/exec"
+ "path/filepath"
+)
+
+var tmpl = template.Must(template.New("main").Parse(`
+package main
+
+type T struct {
+ {{range .Names}}
+ {{.Name}} *string
+ {{end}}
+}
+
+{{range .Names}}
+func (t *T) Get{{.Name}}() string {
+ if t.{{.Name}} == nil {
+ return ""
+ }
+ return *t.{{.Name}}
+}
+{{end}}
+
+func main() {}
+`))
+
+func main() {
+ const n = 5000
+
+ type Name struct{ Name string }
+ var t struct{ Names []Name }
+ for i := 0; i < n; i++ {
+ t.Names = append(t.Names, Name{Name: fmt.Sprintf("H%06X", i)})
+ }
+
+ buf := new(bytes.Buffer)
+ if err := tmpl.Execute(buf, t); err != nil {
+ log.Fatal(err)
+ }
+
+ dir, err := ioutil.TempDir("", "issue16037-")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer os.RemoveAll(dir)
+ path := filepath.Join(dir, "ridiculous_number_of_fields.go")
+ if err := ioutil.WriteFile(path, buf.Bytes(), 0664); err != nil {
+ log.Fatal(err)
+ }
+
+ out, err := exec.Command("go", "build", "-o="+filepath.Join(dir, "out"), path).CombinedOutput()
+ if err != nil {
+ log.Fatalf("build failed: %v\n%s", err, out)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16095.go b/gcc/testsuite/go.test/test/fixedbugs/issue16095.go
new file mode 100644
index 0000000..864b4b7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16095.go
@@ -0,0 +1,104 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "runtime"
+)
+
+var sink *[20]byte
+
+func f() (x [20]byte) {
+ // Initialize x.
+ for i := range x {
+ x[i] = byte(i)
+ }
+
+ // Force x to be allocated on the heap.
+ sink = &x
+ sink = nil
+
+ // Go to deferreturn after the panic below.
+ defer func() {
+ recover()
+ }()
+
+ // This call collects the heap-allocated version of x (oops!)
+ runtime.GC()
+
+ // Allocate that same object again and clobber it.
+ y := new([20]byte)
+ for i := 0; i < 20; i++ {
+ y[i] = 99
+ }
+ // Make sure y is heap allocated.
+ sink = y
+
+ panic(nil)
+
+ // After the recover we reach the deferreturn, which
+ // copies the heap version of x back to the stack.
+ // It gets the pointer to x from a stack slot that was
+ // not marked as live during the call to runtime.GC().
+}
+
+var sinkint int
+
+func g(p *int) (x [20]byte) {
+ // Initialize x.
+ for i := range x {
+ x[i] = byte(i)
+ }
+
+ // Force x to be allocated on the heap.
+ sink = &x
+ sink = nil
+
+ // Go to deferreturn after the panic below.
+ defer func() {
+ recover()
+ }()
+
+ // This call collects the heap-allocated version of x (oops!)
+ runtime.GC()
+
+ // Allocate that same object again and clobber it.
+ y := new([20]byte)
+ for i := 0; i < 20; i++ {
+ y[i] = 99
+ }
+ // Make sure y is heap allocated.
+ sink = y
+
+ // panic with a non-call (with no fallthrough)
+ for {
+ sinkint = *p
+ }
+
+ // After the recover we reach the deferreturn, which
+ // copies the heap version of x back to the stack.
+ // It gets the pointer to x from a stack slot that was
+ // not marked as live during the call to runtime.GC().
+}
+
+func main() {
+ x := f()
+ for i, v := range x {
+ if v != byte(i) {
+ fmt.Printf("%v\n", x)
+ panic("bad f")
+ }
+ }
+ x = g(nil)
+ for i, v := range x {
+ if v != byte(i) {
+ fmt.Printf("%v\n", x)
+ panic("bad g")
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16130.go b/gcc/testsuite/go.test/test/fixedbugs/issue16130.go
new file mode 100644
index 0000000..c4e3ffd
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16130.go
@@ -0,0 +1,43 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that an interface conversion error panics with an "interface
+// conversion" run-time error. It was (incorrectly) panicking with a
+// "nil pointer dereference."
+
+package main
+
+import (
+ "fmt"
+ "runtime"
+ "strings"
+)
+
+type I interface {
+ Get() int
+}
+
+func main() {
+ defer func() {
+ r := recover()
+ if r == nil {
+ panic("expected panic")
+ }
+ re, ok := r.(runtime.Error)
+ if !ok {
+ panic(fmt.Sprintf("got %T, expected runtime.Error", r))
+ }
+ if !strings.Contains(re.Error(), "interface conversion") {
+ panic(fmt.Sprintf("got %q, expected interface conversion error", re.Error()))
+ }
+ }()
+ e := (interface{})(0)
+ if _, ok := e.(I); ok {
+ panic("unexpected interface conversion success")
+ }
+ fmt.Println(e.(I))
+ panic("unexpected interface conversion success")
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/a1.go b/gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/a1.go
new file mode 100644
index 0000000..497cccf
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/a1.go
@@ -0,0 +1,7 @@
+package a
+
+type X string
+
+func NewX() X {
+ return ""
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/a2.go b/gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/a2.go
new file mode 100644
index 0000000..497cccf
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/a2.go
@@ -0,0 +1,7 @@
+package a
+
+type X string
+
+func NewX() X {
+ return ""
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/b.go
new file mode 100644
index 0000000..be1bebf
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/b.go
@@ -0,0 +1,7 @@
+package b
+
+import "./a2"
+
+type T struct {
+ X a.X
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/c.go b/gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/c.go
new file mode 100644
index 0000000..b25fe5a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16133.dir/c.go
@@ -0,0 +1,10 @@
+package p
+
+import (
+ "./a1"
+ "./b"
+)
+
+var _ = b.T{
+ X: a.NewX(), // ERROR `cannot use "a1"\.NewX\(\)`
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16193.go b/gcc/testsuite/go.test/test/fixedbugs/issue16193.go
new file mode 100644
index 0000000..eada62d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16193.go
@@ -0,0 +1,27 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// The compiler used the name "glob" as the function holding a global
+// function literal, colliding with an actual function named "glob".
+
+package main
+
+func glob() {
+ func() {
+ }()
+}
+
+var c1 = func() {
+}
+
+var c2 = func() {
+}
+
+func main() {
+ glob()
+ c1()
+ c2()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16249.go b/gcc/testsuite/go.test/test/fixedbugs/issue16249.go
new file mode 100644
index 0000000..723d5d9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16249.go
@@ -0,0 +1,58 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Liveness calculations were wrong for a result parameter pushed onto
+// the heap in a function that used defer. Program would crash with
+// runtime: bad pointer in frame main.A at 0xc4201e6838: 0x1
+
+package main
+
+import "errors"
+
+var sink interface{}
+
+//go:noinline
+func f(err *error) {
+ if err != nil {
+ sink = err
+ }
+}
+
+//go:noinline
+func A(n, m int64) (res int64, err error) {
+ defer f(&err) // output parameter's address escapes to a defer.
+ if n < 0 {
+ err = errors.New("No negative")
+ return
+ }
+ if n <= 1 {
+ res = n
+ return
+ }
+ res = B(m) // This call to B drizzles a little junk on the stack.
+ res, err = A(n-1, m)
+ res++
+ return
+}
+
+// B does a little bit of recursion dribbling not-zero onto the stack.
+//go:noinline
+func B(n int64) (res int64) {
+ if n <= 1 { // Prefer to leave a 1 on the stack.
+ return n
+ }
+ return 1 + B(n-1)
+}
+
+func main() {
+ x, e := A(0, 0)
+ for j := 0; j < 4; j++ { // j controls amount of B's stack dribble
+ for i := 0; i < 1000; i++ { // try more and more recursion until stack growth occurs in newobject in prologue
+ x, e = A(int64(i), int64(j))
+ }
+ }
+ _, _ = x, e
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16306.go b/gcc/testsuite/go.test/test/fixedbugs/issue16306.go
new file mode 100644
index 0000000..d29a75a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16306.go
@@ -0,0 +1,15 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "unsafe"
+
+var x = unsafe.Pointer(uintptr(0))
+
+func main() {
+ _ = map[unsafe.Pointer]int{unsafe.Pointer(uintptr(0)): 0}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16317.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue16317.dir/a.go
new file mode 100644
index 0000000..3a1b7e0
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16317.dir/a.go
@@ -0,0 +1,11 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+import "unsafe"
+
+func ConstUnsafePointer() unsafe.Pointer {
+ return unsafe.Pointer(uintptr(0))
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16317.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue16317.dir/b.go
new file mode 100644
index 0000000..b813918
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16317.dir/b.go
@@ -0,0 +1,11 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "./a"
+
+func main() {
+ _ = a.ConstUnsafePointer()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16317.go b/gcc/testsuite/go.test/test/fixedbugs/issue16317.go
new file mode 100644
index 0000000..b3376bb
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16317.go
@@ -0,0 +1,10 @@
+// compiledir
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 16317: cmd/compile: internal compiler error:
+// unhandled OCONV INT -> TUNSAFEPTR
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16331.go b/gcc/testsuite/go.test/test/fixedbugs/issue16331.go
new file mode 100644
index 0000000..665e7fc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16331.go
@@ -0,0 +1,48 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Perform tracebackdefers with a deferred reflection method.
+
+package main
+
+import "reflect"
+
+type T struct{}
+
+func (T) M() {
+}
+
+func F(args []reflect.Value) (results []reflect.Value) {
+ return nil
+}
+
+func main() {
+ done := make(chan bool)
+ go func() {
+ // Test reflect.makeFuncStub.
+ t := reflect.TypeOf((func())(nil))
+ f := reflect.MakeFunc(t, F).Interface().(func())
+ defer f()
+ growstack(10000)
+ done <- true
+ }()
+ <-done
+ go func() {
+ // Test reflect.methodValueCall.
+ f := reflect.ValueOf(T{}).Method(0).Interface().(func())
+ defer f()
+ growstack(10000)
+ done <- true
+ }()
+ <-done
+}
+
+func growstack(x int) {
+ if x == 0 {
+ return
+ }
+ growstack(x - 1)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16369.go b/gcc/testsuite/go.test/test/fixedbugs/issue16369.go
new file mode 100644
index 0000000..e97f4a0
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16369.go
@@ -0,0 +1,13 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type T interface {
+ M(interface {
+ T
+ })
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16428.go b/gcc/testsuite/go.test/test/fixedbugs/issue16428.go
new file mode 100644
index 0000000..5696d18
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16428.go
@@ -0,0 +1,12 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+var (
+ b = [...]byte("abc") // ERROR "outside of array literal"
+ s = len(b)
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16439.go b/gcc/testsuite/go.test/test/fixedbugs/issue16439.go
new file mode 100644
index 0000000..704b6b1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16439.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+var a []int = []int{1: 1}
+var b []int = []int{-1: 1} // ERROR "must be non-negative integer constant|index expression is negative"
+
+var c []int = []int{2.0: 2}
+var d []int = []int{-2.0: 2} // ERROR "must be non-negative integer constant|index expression is negative"
+
+var e []int = []int{3 + 0i: 3}
+var f []int = []int{3i: 3} // ERROR "truncated to integer|index expression is not integer constant"
+
+var g []int = []int{"a": 4} // ERROR "must be non-negative integer constant|index expression is not integer constant"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16515.go b/gcc/testsuite/go.test/test/fixedbugs/issue16515.go
new file mode 100644
index 0000000..6b67436
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16515.go
@@ -0,0 +1,53 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 16515: spilled Duff-adjusted address may be invalid
+
+package main
+
+import "runtime"
+
+type T [62]int // DUFFZERO with non-zero adjustment on AMD64
+
+var sink interface{}
+
+//go:noinline
+func zero(x *T) {
+ // Two DUFFZEROs on the same address with a function call in between.
+ // Duff-adjusted address will be spilled and loaded
+
+ *x = T{} // DUFFZERO
+ runtime.GC()
+ (*x)[0] = 1
+ g() // call a function with large frame, trigger a stack move
+ *x = T{} // DUFFZERO again
+}
+
+//go:noinline
+// a function with large frame
+func g() {
+ var x [1000]int
+ _ = x
+}
+
+func main() {
+ var s struct { a T; b [8192-62]int } // allocate 64K, hopefully it's in a new span and a few bytes before it is garbage
+ sink = &s // force heap allocation
+ s.a[0] = 2
+ zero(&s.a)
+ if s.a[0] != 0 {
+ println("s.a[0] =", s.a[0])
+ panic("zeroing failed")
+ }
+
+ var a T // on stack
+ a[0] = 2
+ zero(&a)
+ if a[0] != 0 {
+ println("a[0] =", a[0])
+ panic("zeroing failed")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16616.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue16616.dir/a.go
new file mode 100644
index 0000000..0ffdbbe
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16616.dir/a.go
@@ -0,0 +1,7 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type V struct{ i int }
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16616.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue16616.dir/b.go
new file mode 100644
index 0000000..4f238b9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16616.dir/b.go
@@ -0,0 +1,14 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "./a"
+
+var V struct{ i int }
+
+var U struct {
+ a.V
+ j int
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16616.dir/issue16616.go b/gcc/testsuite/go.test/test/fixedbugs/issue16616.dir/issue16616.go
new file mode 100644
index 0000000..0bfadb8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16616.dir/issue16616.go
@@ -0,0 +1,26 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "reflect"
+
+ _ "./a"
+ "./b"
+)
+
+var V struct{ i int }
+
+func main() {
+ if got := reflect.ValueOf(b.V).Type().Field(0).PkgPath; got != "b" {
+ panic(`PkgPath=` + got + ` for first field of b.V, want "b"`)
+ }
+ if got := reflect.ValueOf(V).Type().Field(0).PkgPath; got != "main" {
+ panic(`PkgPath=` + got + ` for first field of V, want "main"`)
+ }
+ if got := reflect.ValueOf(b.U).Type().Field(0).PkgPath; got != "b" {
+ panic(`PkgPath=` + got + ` for first field of b.U, want "b"`)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16616.go b/gcc/testsuite/go.test/test/fixedbugs/issue16616.go
new file mode 100644
index 0000000..a7d6ac0
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16616.go
@@ -0,0 +1,9 @@
+// compiledir
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Tests that unexported fields of unnamed types have different PkgPath values.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16733.go b/gcc/testsuite/go.test/test/fixedbugs/issue16733.go
new file mode 100644
index 0000000..850b042
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16733.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 16733: don't fold constant factors into a multiply
+// beyond the capacity of a MULQ instruction (32 bits).
+
+package p
+
+func f(n int64) int64 {
+ n *= 1000000
+ n *= 1000000
+ return n
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16741.go b/gcc/testsuite/go.test/test/fixedbugs/issue16741.go
new file mode 100644
index 0000000..9946062
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16741.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure CSE of multi-output opcodes works correctly
+// with select0/1 operations.
+
+package main
+
+func div(d, r int64) int64 {
+ if m := d % r; m > 0 {
+ return d/r + 1
+ }
+ return d / r
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16760.go b/gcc/testsuite/go.test/test/fixedbugs/issue16760.go
new file mode 100644
index 0000000..d0e08b5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16760.go
@@ -0,0 +1,42 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure we don't start marshaling (writing to the stack)
+// arguments until those arguments are evaluated and known
+// not to unconditinally panic. If they unconditionally panic,
+// we write some args but never do the call. That messes up
+// the logic which decides how big the argout section needs to be.
+
+package main
+
+type W interface {
+ Write([]byte)
+}
+
+type F func(W)
+
+func foo(f F) {
+ defer func() {
+ if r := recover(); r != nil {
+ usestack(1000)
+ }
+ }()
+ f(nil)
+}
+
+func main() {
+ foo(func(w W) {
+ var x []string
+ w.Write([]byte(x[5]))
+ })
+}
+
+func usestack(n int) {
+ if n == 0 {
+ return
+ }
+ usestack(n - 1)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16804.go b/gcc/testsuite/go.test/test/fixedbugs/issue16804.go
new file mode 100644
index 0000000..46dd4a3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16804.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 16804: internal error for math.Sqrt as statement
+// rather than expression
+
+package main
+
+import "math"
+
+func sqrt() {
+ math.Sqrt(2.0)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16948.go b/gcc/testsuite/go.test/test/fixedbugs/issue16948.go
new file mode 100644
index 0000000..c986024
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16948.go
@@ -0,0 +1,34 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 16948: make sure intrinsified atomic ops won't
+// confuse the scheduler.
+
+package main
+
+import "sync/atomic"
+
+func main() {
+ f()
+}
+
+var x int32
+
+type T [10]int
+var sink *T
+
+func f() (t T) {
+ atomic.AddInt32(&x, 1)
+ g(42, 42, 42, 42, 42, &t) // use int values that is invalid pointer to smash the stack slot of return value of runtime.newobject
+ return
+}
+
+//go:noinline
+func g(a, b, c, d, e int, p *T) {
+ var t [10000]int // a large stack frame to trigger stack growing
+ _ = t
+ sink = p // force p (in caller) heap allocated
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue16985.go b/gcc/testsuite/go.test/test/fixedbugs/issue16985.go
new file mode 100644
index 0000000..0cb0dae5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue16985.go
@@ -0,0 +1,37 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 16985: intrinsified AMD64 atomic ops should clobber flags
+
+package main
+
+import "sync/atomic"
+
+var count uint32
+
+func main() {
+ buffer := []byte("T")
+ for i := 0; i < len(buffer); {
+ atomic.AddUint32(&count, 1)
+ _ = buffer[i]
+ i++
+ i++
+ }
+
+ for i := 0; i < len(buffer); {
+ atomic.CompareAndSwapUint32(&count, 0, 1)
+ _ = buffer[i]
+ i++
+ i++
+ }
+
+ for i := 0; i < len(buffer); {
+ atomic.SwapUint32(&count, 1)
+ _ = buffer[i]
+ i++
+ i++
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue17005.go b/gcc/testsuite/go.test/test/fixedbugs/issue17005.go
new file mode 100644
index 0000000..e539519
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue17005.go
@@ -0,0 +1,46 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This tickles (a version of) the PPC64 back end to
+// emit a BVS instruction.
+
+package foo
+
+type Flag int
+
+const (
+ Identity Flag = iota - 2 // H is the identity matrix; no rotation is needed.
+ Rescaling // H specifies rescaling.
+)
+
+type DrotmParams struct {
+ Flag
+}
+
+func Drotmg(d1, d2, x1, y1 float64) (p DrotmParams, rd1, rd2, rx1 float64) {
+
+ const (
+ gam = 4.0
+ gamsq = 16.0
+ rgamsq = 5e-8
+ )
+
+ if d1 < 0 {
+ p.Flag = Rescaling
+ return
+ }
+
+ for rd1 <= rgamsq || rd1 >= gamsq {
+ if rd1 <= rgamsq {
+ rd1 *= gam * gam
+ rx1 /= gam
+ } else {
+ rd1 /= gam * gam
+ rx1 *= gam
+ }
+ }
+ return
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue17111.go b/gcc/testsuite/go.test/test/fixedbugs/issue17111.go
new file mode 100644
index 0000000..05284a7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue17111.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+type I int
+
+var (
+ i int
+ x = I(i)
+
+ e interface{} = x
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue17194.go b/gcc/testsuite/go.test/test/fixedbugs/issue17194.go
new file mode 100644
index 0000000..0594e1c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue17194.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package foo
+
+func f(x []interface{}) (err error) {
+ for _, d := range x {
+ _, ok := d.(*int)
+ if ok {
+ return
+ }
+ }
+ return
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue17270.go b/gcc/testsuite/go.test/test/fixedbugs/issue17270.go
new file mode 100644
index 0000000..5c009b5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue17270.go
@@ -0,0 +1,11 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+import "unsafe"
+
+const _ = (unsafe.Sizeof)(0)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue17328.go b/gcc/testsuite/go.test/test/fixedbugs/issue17328.go
new file mode 100644
index 0000000..ef60edb
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue17328.go
@@ -0,0 +1,13 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ i := 0
+ for ; ; i++) { // ERROR "unexpected \), expecting { after for clause|expected .*{.*|expected .*;.*"
+ }
+} // GCCGO_ERROR "expected declaration"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue17381.go b/gcc/testsuite/go.test/test/fixedbugs/issue17381.go
new file mode 100644
index 0000000..be63633
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue17381.go
@@ -0,0 +1,54 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 17381: make sure leave function with non-empty frame
+// saves link register, so that traceback will work.
+
+package main
+
+import (
+ "runtime"
+ "unsafe"
+)
+
+func main() {
+ defer func() {
+ if recover() == nil {
+ panic("did not panic")
+ }
+ pcs := make([]uintptr, 20)
+ n := runtime.Callers(1, pcs)
+ for _, pc := range pcs[:n] {
+ if runtime.FuncForPC(pc).Name() == "main.main" {
+ return
+ }
+ }
+ panic("cannot find main.main in backtrace")
+ }()
+
+ prep()
+ f() // should panic
+}
+
+func funcPC(f interface{}) uintptr {
+ var ptr uintptr
+ return **(**uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&f)) + unsafe.Sizeof(ptr)))
+}
+
+//go:noinline
+func f() {
+ var t [1]int // non-empty frame
+ *(*int)(nil) = t[0]
+}
+
+var p = funcPC(runtime.GC) + 8
+
+//go:noinline
+func prep() {
+ // put some garbage on stack
+ var x = [20]uintptr{p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p}
+ _ = x
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue17551.go b/gcc/testsuite/go.test/test/fixedbugs/issue17551.go
new file mode 100644
index 0000000..b8751ab
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue17551.go
@@ -0,0 +1,21 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 17551: inrange optimization failed to preserve type information.
+
+package main
+
+import "fmt"
+
+func main() {
+ _, x := X()
+ fmt.Printf("x = %v\n", x)
+}
+
+func X() (i int, ok bool) {
+ ii := int(1)
+ return ii, 0 <= ii && ii <= 0x7fffffff
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue17588.go b/gcc/testsuite/go.test/test/fixedbugs/issue17588.go
new file mode 100644
index 0000000..0e3a14e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue17588.go
@@ -0,0 +1,20 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 17588: internal compiler error in typecheckclosure()
+// because in case of Func.Nname.Type == nil, Decldepth
+// is not initialized in typecheckfunc(). This test
+// produces that case.
+
+package p
+
+type F func(b T) // ERROR "T is not a type|expected type"
+
+func T(fn F) {
+ func() {
+ fn(nil) // If Decldepth is not initialized properly, typecheckclosure() Fatals here.
+ }()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue17596.go b/gcc/testsuite/go.test/test/fixedbugs/issue17596.go
new file mode 100644
index 0000000..7398292
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue17596.go
@@ -0,0 +1,19 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package foo
+
+type T interface {
+ foo()
+}
+
+func f() (T, int)
+
+func g(v interface{}) (interface{}, int) {
+ var x int
+ v, x = f()
+ return v, x
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue17631.go b/gcc/testsuite/go.test/test/fixedbugs/issue17631.go
new file mode 100644
index 0000000..b820b2d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue17631.go
@@ -0,0 +1,22 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "time"
+
+func main() {
+ _ = struct {
+ about string
+ before map[string]uint
+ update map[string]int
+ updateTime time.Time
+ expect map[string]int
+ }{
+ about: "this one",
+ updates: map[string]int{"gopher": 10}, // ERROR "unknown field 'updates' in struct literal of type|unknown field .*updates.* in .*unnamed struct.*"
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue17640.go b/gcc/testsuite/go.test/test/fixedbugs/issue17640.go
new file mode 100644
index 0000000..a311521
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue17640.go
@@ -0,0 +1,28 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "fmt"
+
+var results string
+
+type TwoInts struct {
+ x, y int
+}
+
+func f(x int) int { results = results + fmt.Sprintf("_%d", x); return x }
+
+func main() {
+ _ = [19]int{1: f(1), 0: f(0), 2: f(2), 6, 7}
+ _ = [2]int{1: f(4), 0: f(3)}
+ _ = TwoInts{y: f(6), x: f(5)}
+ _ = map[int]int{f(f(9) + 1): f(8), 0: f(7), f(22): -1}
+ if results != "_1_0_2_4_3_6_5_9_10_8_7_22" {
+ fmt.Printf("unexpected: %s\n", results)
+ panic("fail")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue17645.go b/gcc/testsuite/go.test/test/fixedbugs/issue17645.go
new file mode 100644
index 0000000..bb34e4e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue17645.go
@@ -0,0 +1,16 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+type Foo struct {
+ X int
+}
+
+func main() {
+ var s []int
+ var _ string = append(s, Foo{""}) // ERROR "cannot use .. \(type untyped string\) as type int in field value|incompatible type" "cannot use Foo{...} \(type Foo\) as type int in append" "cannot use append\(s\, Foo{...}\) \(type \[\]int\) as type string in assignment"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue17710.go b/gcc/testsuite/go.test/test/fixedbugs/issue17710.go
new file mode 100644
index 0000000..2843458
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue17710.go
@@ -0,0 +1,13 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "runtime"
+
+func f(x interface{}) {
+ runtime.KeepAlive(x)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue17752.go b/gcc/testsuite/go.test/test/fixedbugs/issue17752.go
new file mode 100644
index 0000000..83283ad
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue17752.go
@@ -0,0 +1,20 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func f(m map[string]int) int {
+ return m["a"]
+}
+
+func g(m map[[8]string]int) int {
+ return m[[8]string{"a", "a", "a", "a", "a", "a", "a", "a"}]
+}
+
+func main() {
+ m := map[[8]string]int{}
+ g(m)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue17758.go b/gcc/testsuite/go.test/test/fixedbugs/issue17758.go
new file mode 100644
index 0000000..8e40f9d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue17758.go
@@ -0,0 +1,17 @@
+// errorcheck
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func foo() {
+ _ = func() {}
+}
+
+func foo() { // ERROR "foo redeclared in this block|redefinition of .*foo.*"
+ _ = func() {}
+}
+
+func main() {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue17918.go b/gcc/testsuite/go.test/test/fixedbugs/issue17918.go
new file mode 100644
index 0000000..88ede6f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue17918.go
@@ -0,0 +1,41 @@
+// compile
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 17918: slice out-of-bounds in ssa/cse
+
+package dead
+
+import (
+ "fmt"
+ "time"
+)
+
+var (
+ units = []struct {
+ divisor time.Duration
+ unit rune
+ }{
+ {1000000, 's'},
+ {60, 'm'},
+ {60, 'h'},
+ {24, 'd'},
+ {7, 'w'},
+ }
+)
+
+func foobar(d time.Duration) string {
+ d /= time.Microsecond
+ unit := 'u'
+
+ for _, f := range units {
+ if d%f.divisor != 0 {
+ break
+ }
+ d /= f.divisor
+ unit = f.unit
+ }
+ return fmt.Sprintf("%d%c", d, unit)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18089.go b/gcc/testsuite/go.test/test/fixedbugs/issue18089.go
new file mode 100644
index 0000000..fe5c1d4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18089.go
@@ -0,0 +1,19 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package foo
+
+type T struct {
+ x int
+ _ int
+}
+
+func main() {
+ _ = T{0, 0}
+
+ x := T{1, 1}
+ _ = x
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18092.go b/gcc/testsuite/go.test/test/fixedbugs/issue18092.go
new file mode 100644
index 0000000..a0f7edd
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18092.go
@@ -0,0 +1,15 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func _() {
+ var ch chan bool
+ select {
+ default:
+ case <-ch { // GCCGO_ERROR "expected colon"
+ } // GC_ERROR "expecting :"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18231.go b/gcc/testsuite/go.test/test/fixedbugs/issue18231.go
new file mode 100644
index 0000000..7747304
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18231.go
@@ -0,0 +1,20 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that error message for composite literals with
+// missing type is at the right place.
+
+package p
+
+type T struct {
+ f map[string]string
+}
+
+var _ = T{
+ f: { // ERROR "missing type in composite literal|may only omit types within"
+ "a": "b",
+ },
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18393.go b/gcc/testsuite/go.test/test/fixedbugs/issue18393.go
new file mode 100644
index 0000000..4543927
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18393.go
@@ -0,0 +1,24 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that compiler directives are ignored if they
+// don't start at the beginning of the line.
+
+package p
+
+//line issue18393.go:20
+import 42 // error on line 20
+
+
+/* //line not at start of line: ignored */ //line issue18393.go:30
+var x // error on line 24, not 30
+
+
+// ERROR "import path must be a string"
+
+
+
+// ERROR "syntax error: unexpected newline, expecting type|expected type"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18410.go b/gcc/testsuite/go.test/test/fixedbugs/issue18410.go
new file mode 100644
index 0000000..e9c6f86
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18410.go
@@ -0,0 +1,40 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This checks partially initialized structure literals
+// used to create value.method functions have their
+// non-initialized fields properly zeroed/nil'd
+
+package main
+
+type X struct {
+ A, B, C *int
+}
+
+//go:noinline
+func (t X) Print() {
+ if t.B != nil {
+ panic("t.B must be nil")
+ }
+}
+
+//go:noinline
+func caller(f func()) {
+ f()
+}
+
+//go:noinline
+func test() {
+ var i, j int
+ x := X{A: &i, C: &j}
+ caller(func() { X{A: &i, C: &j}.Print() })
+ caller(X{A: &i, C: &j}.Print)
+ caller(x.Print)
+}
+
+func main() {
+ test()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18419.dir/other.go b/gcc/testsuite/go.test/test/fixedbugs/issue18419.dir/other.go
new file mode 100644
index 0000000..27243d2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18419.dir/other.go
@@ -0,0 +1,11 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package other
+
+type Exported struct {
+ Member int
+}
+
+func (e *Exported) member() int { return 1 }
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18419.dir/test.go b/gcc/testsuite/go.test/test/fixedbugs/issue18419.dir/test.go
new file mode 100644
index 0000000..da9639d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18419.dir/test.go
@@ -0,0 +1,15 @@
+// errorcheck -0 -m -l
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "./other"
+
+func InMyCode(e *other.Exported) {
+ e.member() // ERROR "e\.member undefined .cannot refer to unexported field or method other\.\(\*Exported\)\.member.|unexported field or method"
+}
+
+func main() {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18419.go b/gcc/testsuite/go.test/test/fixedbugs/issue18419.go
new file mode 100644
index 0000000..25544ef
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18419.go
@@ -0,0 +1,7 @@
+// errorcheckdir
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18595.go b/gcc/testsuite/go.test/test/fixedbugs/issue18595.go
new file mode 100644
index 0000000..d6f07b3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18595.go
@@ -0,0 +1,53 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This test makes sure that itabs are unique.
+// More explicitly, we require that only one itab structure exists for the pair of
+// a given compile-time interface type and underlying concrete type.
+// Ensuring this invariant enables fixes for 18492 (improve type switch code).
+
+package main
+
+type I interface {
+ M()
+}
+type J interface {
+ M()
+}
+
+type T struct{}
+
+func (*T) M() {}
+
+func main() {
+ test1()
+ test2()
+}
+
+func test1() {
+ t := new(T)
+ var i1, i2 I
+ var j interface {
+ M()
+ }
+ i1 = t
+ j = t
+ i2 = j
+ if i1 != i2 {
+ panic("interfaces not equal")
+ }
+}
+
+func test2() {
+ t := new(T)
+ i1 := (I)(t)
+ i2 := (I)((interface {
+ M()
+ })((J)(t)))
+ if i1 != i2 {
+ panic("interfaces not equal")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18636.go b/gcc/testsuite/go.test/test/fixedbugs/issue18636.go
new file mode 100644
index 0000000..2704fc4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18636.go
@@ -0,0 +1,27 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "runtime/debug"
+
+type Foo struct {
+ A [1 << 20]byte
+ B string
+}
+
+func run(c chan bool) {
+ f := new(Foo)
+ *f = Foo{B: "hello"}
+ c <- true
+}
+
+func main() {
+ debug.SetMaxStack(1 << 16)
+ c := make(chan bool)
+ go run(c)
+ <-c
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18640.go b/gcc/testsuite/go.test/test/fixedbugs/issue18640.go
new file mode 100644
index 0000000..091bbe5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18640.go
@@ -0,0 +1,46 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type (
+ a = b
+ b struct {
+ *a
+ }
+)
+
+type (
+ c struct {
+ *d
+ }
+ d = c
+)
+
+// The compiler cannot handle these cases. Disabled for now.
+// See issue #25838.
+/*
+type (
+ e = f
+ f = g
+ g = []h
+ h i
+ i = j
+ j = e
+)
+
+type (
+ a1 struct{ *b1 }
+ b1 = c1
+ c1 struct{ *b1 }
+)
+
+type (
+ a2 struct{ b2 }
+ b2 = c2
+ c2 struct{ *b2 }
+)
+*/
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18655.go b/gcc/testsuite/go.test/test/fixedbugs/issue18655.go
new file mode 100644
index 0000000..13762f1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18655.go
@@ -0,0 +1,22 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type T struct{}
+type A = T
+type B = T
+
+func (T) m() {}
+func (T) m() {} // ERROR "redeclared|redefinition"
+func (A) m() {} // ERROR "redeclared|redefinition"
+func (A) m() {} // ERROR "redeclared|redefinition"
+func (B) m() {} // ERROR "redeclared|redefinition"
+func (B) m() {} // ERROR "redeclared|redefinition"
+
+func (*T) m() {} // ERROR "redeclared|redefinition"
+func (*A) m() {} // ERROR "redeclared|redefinition"
+func (*B) m() {} // ERROR "redeclared|redefinition"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18661.go b/gcc/testsuite/go.test/test/fixedbugs/issue18661.go
new file mode 100644
index 0000000..e64a771
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18661.go
@@ -0,0 +1,39 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "os"
+)
+
+var (
+ e interface{}
+ s = struct{ a *int }{}
+ b = e == s
+)
+
+func test(obj interface{}) {
+ if obj != struct{ a *string }{} {
+ }
+}
+
+var x int
+
+func f() [2]string {
+ x++
+ return [2]string{"abc", "def"}
+}
+
+func main() {
+ var e interface{} = [2]string{"abc", "def"}
+ _ = e == f()
+ if x != 1 {
+ fmt.Println("x=", x)
+ os.Exit(1)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18725.go b/gcc/testsuite/go.test/test/fixedbugs/issue18725.go
new file mode 100644
index 0000000..c632dba
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18725.go
@@ -0,0 +1,24 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "os"
+
+func panicWhenNot(cond bool) {
+ if cond {
+ os.Exit(0)
+ } else {
+ panic("nilcheck elim failed")
+ }
+}
+
+func main() {
+ e := (*string)(nil)
+ panicWhenNot(e == e)
+ // Should never reach this line.
+ panicWhenNot(*e == *e)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18808.go b/gcc/testsuite/go.test/test/fixedbugs/issue18808.go
new file mode 100644
index 0000000..c98386e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18808.go
@@ -0,0 +1,63 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+const lim = 0x80000000
+
+//go:noinline
+func eq(x uint32) {
+ if x == lim {
+ return
+ }
+ panic("x == lim returned false")
+}
+
+//go:noinline
+func neq(x uint32) {
+ if x != lim {
+ panic("x != lim returned true")
+ }
+}
+
+//go:noinline
+func gt(x uint32) {
+ if x > lim {
+ return
+ }
+ panic("x > lim returned false")
+}
+
+//go:noinline
+func gte(x uint32) {
+ if x >= lim {
+ return
+ }
+ panic("x >= lim returned false")
+}
+
+//go:noinline
+func lt(x uint32) {
+ if x < lim {
+ panic("x < lim returned true")
+ }
+}
+
+//go:noinline
+func lte(x uint32) {
+ if x <= lim {
+ panic("x <= lim returned true")
+ }
+}
+
+func main() {
+ eq(lim)
+ neq(lim)
+ gt(lim+1)
+ gte(lim+1)
+ lt(lim+1)
+ lte(lim+1)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18906.go b/gcc/testsuite/go.test/test/fixedbugs/issue18906.go
new file mode 100644
index 0000000..544400b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18906.go
@@ -0,0 +1,36 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+//go:noinline
+func f(x int) {
+}
+
+//go:noinline
+func val() int8 {
+ return -1
+}
+
+var (
+ array = [257]int{}
+ slice = array[1:]
+)
+
+func init() {
+ for i := range array {
+ array[i] = i - 1
+ }
+}
+
+func main() {
+ x := val()
+ y := int(uint8(x))
+ f(y) // try and force y to be calculated and spilled
+ if slice[y] != 255 {
+ panic("incorrect value")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18915.go b/gcc/testsuite/go.test/test/fixedbugs/issue18915.go
new file mode 100644
index 0000000..22f97c6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18915.go
@@ -0,0 +1,21 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure error message for invalid conditions
+// or tags are consistent with earlier Go versions.
+
+package p
+
+func _() {
+ if a := 10 { // ERROR "cannot use a := 10 as value|expected .*;|declared but not used"
+ }
+
+ for b := 10 { // ERROR "cannot use b := 10 as value|parse error|declared but not used"
+ }
+
+ switch c := 10 { // ERROR "cannot use c := 10 as value|expected .*;|declared but not used"
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue18994.go b/gcc/testsuite/go.test/test/fixedbugs/issue18994.go
new file mode 100644
index 0000000..aa30713
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue18994.go
@@ -0,0 +1,22 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 18994: SSA didn't handle DOT STRUCTLIT for zero-valued
+// STRUCTLIT.
+
+package main
+
+// large struct - not SSA-able
+type T struct {
+ a, b, c, d, e, f, g, h int
+}
+
+func main() {
+ x := T{}.a
+ if x != 0 {
+ panic("FAIL")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19012.go b/gcc/testsuite/go.test/test/fixedbugs/issue19012.go
new file mode 100644
index 0000000..158618a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19012.go
@@ -0,0 +1,25 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 19012: if we have any unknown type at a call site,
+// we must ensure that we return to the user a suppressed
+// error message saying instead of including <T> in
+// the message.
+
+package main
+
+func f(x int, y uint) {
+ if true {
+ return "a" > 10 // ERROR "^too many arguments to return$|return with value in function with no return|mismatched types"
+ }
+ return "gopher" == true, 10 // ERROR "^too many arguments to return$|return with value in function with no return|mismatched types"
+}
+
+func main() {
+ f(2, 3 < "x", 10) // ERROR "too many arguments|invalid operation|incompatible type"
+
+ f(10, 10, "a") // ERROR "too many arguments"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19028.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue19028.dir/a.go
new file mode 100644
index 0000000..361251d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19028.dir/a.go
@@ -0,0 +1,9 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package reflect
+
+import "reflect"
+
+type Type reflect.Type
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19028.dir/main.go b/gcc/testsuite/go.test/test/fixedbugs/issue19028.dir/main.go
new file mode 100644
index 0000000..e2ee7b8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19028.dir/main.go
@@ -0,0 +1,26 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "reflect"
+ fake "./a" // 2nd package with name "reflect"
+)
+
+type T struct {
+ _ fake.Type
+}
+
+func (T) f() {}
+func (T) G() (_ int) { return }
+func (T) H() (_, _ int) { return }
+
+func main() {
+ var x T
+ typ := reflect.TypeOf(x)
+ for i := 0; i < typ.NumMethod(); i++ {
+ _ = typ.Method(i) // must not crash
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19028.go b/gcc/testsuite/go.test/test/fixedbugs/issue19028.go
new file mode 100644
index 0000000..8d934d2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19028.go
@@ -0,0 +1,13 @@
+// rundir
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This test failed when the compiler didn't use the
+// correct code to identify the type reflect.Method.
+// The failing code relied on Type.String() which had
+// formatting that depended on whether a package (in
+// this case "reflect") was imported more than once.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19040.go b/gcc/testsuite/go.test/test/fixedbugs/issue19040.go
new file mode 100644
index 0000000..67881df
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19040.go
@@ -0,0 +1,36 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check the text of the panic that comes from
+// a nil pointer passed to automatically generated method wrapper.
+
+package main
+
+import "fmt"
+
+type T int
+
+type I interface {
+ F()
+}
+
+func (t T) F() {}
+
+var (
+ t *T
+ i I = t
+)
+
+func main() {
+ defer func() {
+ got := recover().(error).Error()
+ want := "value method main.T.F called using nil *T pointer"
+ if got != want {
+ fmt.Printf("panicwrap error text:\n\t%q\nwant:\n\t%q\n", got, want)
+ }
+ }()
+ i.F()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19056.go b/gcc/testsuite/go.test/test/fixedbugs/issue19056.go
new file mode 100644
index 0000000..d279eaa
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19056.go
@@ -0,0 +1,9 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+var _ = ... . // ERROR "unexpected ...|expected operand|expected .*;"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19078.go b/gcc/testsuite/go.test/test/fixedbugs/issue19078.go
new file mode 100644
index 0000000..b19e874
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19078.go
@@ -0,0 +1,42 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 19078: liveness & zero-initialization of results
+// when there is a defer.
+package main
+
+import "unsafe"
+
+func main() {
+ // Construct an invalid pointer. We do this by
+ // making a pointer which points to the unused space
+ // between the last 48-byte object in a span and the
+ // end of the span (there are 32 unused bytes there).
+ p := new([48]byte) // make a 48-byte object
+ sink = &p // escape it, so it allocates for real
+ u := uintptr(unsafe.Pointer(p)) // get its address
+ u = u >> 13 << 13 // round down to page size
+ u += 1<<13 - 1 // add almost a page
+
+ for i := 0; i < 1000000; i++ {
+ _ = identity(u) // installs u at return slot
+ _ = liveReturnSlot(nil) // incorrectly marks return slot as live
+ }
+}
+
+//go:noinline
+func liveReturnSlot(x *int) *int {
+ defer func() {}() // causes return slot to be marked live
+ sink = &x // causes x to be moved to the heap, triggering allocation
+ return x
+}
+
+//go:noinline
+func identity(x uintptr) uintptr {
+ return x
+}
+
+var sink interface{}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19084.go b/gcc/testsuite/go.test/test/fixedbugs/issue19084.go
new file mode 100644
index 0000000..ba53063
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19084.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 19084: SSA doesn't handle CONVNOP STRUCTLIT
+
+package p
+
+type T struct {
+ a, b, c, d, e, f, g, h int // big, not SSA-able
+}
+
+func f() {
+ _ = T(T{})
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19137.go b/gcc/testsuite/go.test/test/fixedbugs/issue19137.go
new file mode 100644
index 0000000..0539a85
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19137.go
@@ -0,0 +1,51 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 19137: folding address into load/store causes
+// odd offset on ARM64.
+
+package p
+
+type T struct {
+ p *int
+ a [2]byte
+ b [6]byte // not 4-byte aligned
+}
+
+func f(b [6]byte) T {
+ var x [1000]int // a large stack frame
+ _ = x
+ return T{b: b}
+}
+
+// Arg symbol's base address may be not at an aligned offset to
+// SP. Folding arg's address into load/store may cause odd offset.
+func move(a, b [20]byte) [20]byte {
+ var x [1000]int // a large stack frame
+ _ = x
+ return b // b is not 8-byte aligned to SP
+}
+func zero() ([20]byte, [20]byte) {
+ var x [1000]int // a large stack frame
+ _ = x
+ return [20]byte{}, [20]byte{} // the second return value is not 8-byte aligned to SP
+}
+
+// Issue 21992: unaligned offset between 256 and 504 and handled
+// incorrectly.
+type T2 struct {
+ a [257]byte
+ // fields below are not 8-, 4-, 2-byte aligned
+ b [8]byte
+ c [4]byte
+ d [2]byte
+}
+
+func f2(x *T2) {
+ x.b = [8]byte{}
+ x.c = [4]byte{}
+ x.d = [2]byte{}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19182.go b/gcc/testsuite/go.test/test/fixedbugs/issue19182.go
new file mode 100644
index 0000000..e1f3ffb
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19182.go
@@ -0,0 +1,37 @@
+// run
+// +build !js
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "runtime"
+ "sync/atomic"
+ "time"
+)
+
+var a uint64 = 0
+
+func main() {
+ runtime.GOMAXPROCS(2) // With just 1, infinite loop never yields
+
+ go func() {
+ for {
+ atomic.AddUint64(&a, uint64(1))
+ }
+ }()
+
+ time.Sleep(10 * time.Millisecond) // Short sleep is enough in passing case
+ i, val := 0, atomic.LoadUint64(&a)
+ for ; val == 0 && i < 100; val, i = atomic.LoadUint64(&a), i+1 {
+ time.Sleep(100 * time.Millisecond)
+ }
+ if val == 0 {
+ fmt.Printf("Failed to observe atomic increment after %d tries\n", i)
+ }
+
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19201.go b/gcc/testsuite/go.test/test/fixedbugs/issue19201.go
new file mode 100644
index 0000000..e370d55
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19201.go
@@ -0,0 +1,52 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "encoding/binary"
+)
+
+var (
+ ch1 = make(chan int)
+ ch2 = make(chan int)
+
+ bin = []byte("a\000\000\001")
+ want = binary.BigEndian.Uint32(bin)
+
+ c consumer = noopConsumer{}
+)
+
+type msg struct {
+ code uint32
+}
+
+type consumer interface {
+ consume(msg)
+}
+
+type noopConsumer struct{}
+
+func (noopConsumer) consume(msg) {}
+
+func init() {
+ close(ch1)
+}
+
+func main() {
+ var m msg
+ m.code = binary.BigEndian.Uint32(bin)
+
+ select {
+ case <-ch1:
+ c.consume(m)
+ if m.code != want {
+ // can not use m.code here, or it will work
+ panic("BigEndian read failed")
+ }
+ case <-ch2:
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19217.go b/gcc/testsuite/go.test/test/fixedbugs/issue19217.go
new file mode 100644
index 0000000..9679406
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19217.go
@@ -0,0 +1,39 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package foo
+
+import (
+ "encoding/binary"
+)
+
+type DbBuilder struct {
+ arr []int
+}
+
+func (bld *DbBuilder) Finish() error {
+ defer bld.Finish()
+
+ var hash []byte
+ for _, ixw := range bld.arr {
+ for {
+ if ixw != 0 {
+ panic("ixw != 0")
+ }
+ ixw--
+ insertOne:
+ for {
+ for i := 0; i < 1; i++ {
+ if binary.LittleEndian.Uint16(hash[i:]) == 0 {
+ break insertOne
+ }
+ }
+ }
+ }
+ }
+
+ return nil
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19275.go b/gcc/testsuite/go.test/test/fixedbugs/issue19275.go
new file mode 100644
index 0000000..f7e64fc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19275.go
@@ -0,0 +1,72 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+)
+
+type PI struct {
+ Enabled bool
+}
+
+type SI struct {
+ M map[string]*PI
+}
+
+//go:noinline
+func (s *SI) test(name string) (*int, error) {
+ n := new(int)
+ *n = 99
+ if err := addUpdate(n, s.M[name].Enabled, "enabled"); err != nil { // this was miscompiled
+ return nil, fmt.Errorf(" error adding update for enable flag %t : %s",
+ s.M[name].Enabled, err)
+ }
+ return n, nil
+}
+
+//go:noinline
+func addUpdate(n *int, in interface{}, s ...string) error {
+ if *n != 99 {
+ println("FAIL, *n should be 99, not", *n)
+ }
+ return nil
+}
+
+func main1() {
+ s := &SI{make(map[string]*PI)}
+ s.M["dog"] = &PI{}
+ s.test("dog")
+}
+
+//go:noinline
+func g(b *byte, i interface{}) error {
+ if *b != 17 {
+ println("FAIL, *b should be 17, not", *b)
+ }
+ return nil
+}
+
+//go:noinline
+func f(x *byte, m map[string]*bool) {
+ if err := g(x, *m["hello"]); err != nil { // this was miscompiled
+ return
+ }
+}
+
+func main2() {
+ m := make(map[string]*bool)
+ x := false
+ m["hello"] = &x
+ b := byte(17)
+ f(&b, m)
+}
+
+func main() {
+ main2()
+ main1()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19323.go b/gcc/testsuite/go.test/test/fixedbugs/issue19323.go
new file mode 100644
index 0000000..71365e1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19323.go
@@ -0,0 +1,19 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func g() {}
+
+func f() {
+ g()[:] // ERROR "g.. used as value|attempt to slice object that is not"
+}
+
+func g2() ([]byte, []byte) { return nil, nil }
+
+func f2() {
+ g2()[:] // ERROR "multiple-value g2.. in single-value context|attempt to slice object that is not"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19359.go b/gcc/testsuite/go.test/test/fixedbugs/issue19359.go
new file mode 100644
index 0000000..cc3ecc8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19359.go
@@ -0,0 +1,91 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "fmt"
+
+func set(m map[interface{}]interface{}, key interface{}) (err error) {
+ defer func() {
+ if r := recover(); r != nil {
+ err = fmt.Errorf("set failed: %v", r)
+ }
+ }()
+ m[key] = nil
+ return nil
+}
+
+func del(m map[interface{}]interface{}, key interface{}) (err error) {
+ defer func() {
+ if r := recover(); r != nil {
+ err = fmt.Errorf("del failed: %v", r)
+ }
+ }()
+ delete(m, key)
+ return nil
+}
+
+func addInt(m map[interface{}]int, key interface{}) (err error) {
+ defer func() {
+ if r := recover(); r != nil {
+ err = fmt.Errorf("addInt failed: %v", r)
+ }
+ }()
+ m[key] += 2018
+ return nil
+}
+
+func addStr(m map[interface{}]string, key interface{}) (err error) {
+ defer func() {
+ if r := recover(); r != nil {
+ err = fmt.Errorf("addStr failed: %v", r)
+ }
+ }()
+ m[key] += "hello, go"
+ return nil
+}
+
+func appendInt(m map[interface{}][]int, key interface{}) (err error) {
+ defer func() {
+ if r := recover(); r != nil {
+ err = fmt.Errorf("appendInt failed: %v", r)
+ }
+ }()
+ m[key] = append(m[key], 2018)
+ return nil
+}
+
+func appendStr(m map[interface{}][]string, key interface{}) (err error) {
+ defer func() {
+ if r := recover(); r != nil {
+ err = fmt.Errorf("addStr failed: %v", r)
+ }
+ }()
+ m[key] = append(m[key], "hello, go")
+ return nil
+}
+
+func main() {
+ m := make(map[interface{}]interface{})
+ set(m, []int{1, 2, 3})
+ set(m, "abc") // used to throw
+ del(m, []int{1, 2, 3})
+ del(m, "abc") // used to throw
+
+ mi := make(map[interface{}]int)
+ addInt(mi, []int{1, 2, 3})
+ addInt(mi, "abc") // used to throw
+
+ ms := make(map[interface{}]string)
+ addStr(ms, []int{1, 2, 3})
+ addStr(ms, "abc") // used to throw
+
+ mia := make(map[interface{}][]int)
+ appendInt(mia, []int{1, 2, 3})
+
+ msa := make(map[interface{}][]string)
+ appendStr(msa, "abc") // used to throw
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19482.go b/gcc/testsuite/go.test/test/fixedbugs/issue19482.go
new file mode 100644
index 0000000..4c2c19e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19482.go
@@ -0,0 +1,34 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Compiler rejected initialization of structs to composite literals
+// in a non-static setting (e.g. in a function)
+// when the struct contained a field named _.
+
+package p
+
+type T struct {
+ _ string
+}
+
+func ok() {
+ var x = T{"check"}
+ _ = x
+ _ = T{"et"}
+}
+
+var (
+ y = T{"stare"}
+ w = T{_: "look"} // ERROR "invalid field name _ in struct initializer|expected struct field name"
+ _ = T{"page"}
+ _ = T{_: "out"} // ERROR "invalid field name _ in struct initializer|expected struct field name"
+)
+
+func bad() {
+ var z = T{_: "verse"} // ERROR "invalid field name _ in struct initializer|expected struct field name"
+ _ = z
+ _ = T{_: "itinerary"} // ERROR "invalid field name _ in struct initializer|expected struct field name"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19507.dir/div_arm.s b/gcc/testsuite/go.test/test/fixedbugs/issue19507.dir/div_arm.s
new file mode 100644
index 0000000..0bc33e9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19507.dir/div_arm.s
@@ -0,0 +1,12 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+TEXT ·f(SB),0,$0-8
+ MOVW x+0(FP), R1
+ MOVW x+4(FP), R2
+ DIVU R1, R2
+ DIV R1, R2
+ MODU R1, R2
+ MOD R1, R2
+ RET
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19507.dir/main.go b/gcc/testsuite/go.test/test/fixedbugs/issue19507.dir/main.go
new file mode 100644
index 0000000..c115556
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19507.dir/main.go
@@ -0,0 +1,16 @@
+// +build arm
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure we can compile assembly with DIV and MOD in it.
+// They get rewritten to runtime calls on GOARM=5.
+
+package main
+
+func f(x, y uint32)
+
+func main() {
+ f(5, 8)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19507.go b/gcc/testsuite/go.test/test/fixedbugs/issue19507.go
new file mode 100644
index 0000000..543e17e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19507.go
@@ -0,0 +1,8 @@
+// +build arm
+// builddir
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19515.go b/gcc/testsuite/go.test/test/fixedbugs/issue19515.go
new file mode 100644
index 0000000..a1605be
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19515.go
@@ -0,0 +1,51 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 19515: compiler panics on spilling int128 constant.
+
+package x
+
+type VScrollPanel struct {
+ x, y int
+}
+
+type Color struct {
+ R, G, B, A float32
+}
+
+func maxF(a, b float32) float32 {
+ if a > b {
+ return 0
+ }
+ return 1
+}
+
+type TransformMatrix [6]float32
+
+type Paint struct {
+ xform TransformMatrix
+ feather float32
+ innerColor Color
+ outerColor Color
+}
+
+func BoxGradient(x, y, w, h, f float32, iColor, oColor Color) Paint {
+ return Paint{
+ xform: TransformMatrix{9, 0, 0, 0, x, y},
+ feather: maxF(1.0, f),
+ innerColor: iColor,
+ outerColor: oColor,
+ }
+}
+
+func (v *VScrollPanel) Draw() {
+ x := float32(v.x)
+ y := float32(v.y)
+
+ BoxGradient(x+x-2, y-1, 0, 0, 0, Color{}, Color{})
+ BoxGradient(x+y-2, y-1, 0, 0, 0, Color{}, Color{})
+}
+
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19548.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue19548.dir/a.go
new file mode 100644
index 0000000..3b7cd4b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19548.dir/a.go
@@ -0,0 +1,26 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type Mode uint
+
+func (m Mode) String() string { return "mode string" }
+func (m *Mode) Addr() *Mode { return m }
+
+type Stringer interface {
+ String() string
+}
+
+var global Stringer
+var m Mode
+
+func init() {
+ // force compilation of the (*Mode).String() wrapper
+ global = &m
+}
+
+func String() string {
+ return global.String() + Mode(0).String()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19548.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue19548.dir/b.go
new file mode 100644
index 0000000..e5e807f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19548.dir/b.go
@@ -0,0 +1,24 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "./a"
+
+type Value interface {
+ a.Stringer
+ Addr() *a.Mode
+}
+
+var global a.Mode
+
+func f() int {
+ var v Value
+ v = &global
+ return int(v.String()[0])
+}
+
+func main() {
+ f()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19548.go b/gcc/testsuite/go.test/test/fixedbugs/issue19548.go
new file mode 100644
index 0000000..e0e7693
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19548.go
@@ -0,0 +1,9 @@
+// rundir
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that interface wrappers can be compiled successfully
+// in multiple translation units.
+package ignore
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19555.go b/gcc/testsuite/go.test/test/fixedbugs/issue19555.go
new file mode 100644
index 0000000..53b2ebde
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19555.go
@@ -0,0 +1,36 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type NodeLink struct{}
+
+// A role our end of NodeLink is intended to play
+type LinkRole int64
+
+const (
+ LinkServer LinkRole = iota // link created as server
+ LinkClient // link created as client
+
+ // for testing:
+ linkNoRecvSend LinkRole = 1 << 16 // do not spawn serveRecv & serveSend
+ linkFlagsMask LinkRole = (1<<32 - 1) << 16
+)
+
+func NewNodeLink(role LinkRole) *NodeLink {
+ var nextConnId uint32
+ switch role &^ linkFlagsMask {
+ case LinkServer:
+ nextConnId = 0 // all initiated by us connId will be even
+ case LinkClient:
+ nextConnId = 1 // ----//---- odd
+ default:
+ panic("invalid conn role")
+ }
+
+ _ = nextConnId
+ return nil
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19632.go b/gcc/testsuite/go.test/test/fixedbugs/issue19632.go
new file mode 100644
index 0000000..41cb1ff
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19632.go
@@ -0,0 +1,21 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check that we don't crash due to "lost track of variable in
+// liveness" errors against unused variables.
+
+package p
+
+import "strings"
+
+// Minimized test case from github.com/mvdan/sh/syntax.
+func F() {
+ var _ = []string{
+ strings.Repeat("\n\n\t\t \n", 10) +
+ "# " + strings.Repeat("foo bar ", 10) + "\n" +
+ strings.Repeat("longlit_", 10) + "\n",
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19658.go b/gcc/testsuite/go.test/test/fixedbugs/issue19658.go
new file mode 100644
index 0000000..bab409c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19658.go
@@ -0,0 +1,99 @@
+// +build !nacl,!js,!gccgo
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// ensure that panic(x) where x is a numeric type displays a readable number
+package main
+
+import (
+ "bytes"
+ "fmt"
+ "io/ioutil"
+ "log"
+ "os"
+ "os/exec"
+ "path/filepath"
+)
+
+const fn = `
+package main
+
+import "errors"
+type S struct {
+
+}
+func (s S) String() string {
+ return "s-stringer"
+}
+func main() {
+ _ = errors.New
+ panic(%s(%s))
+}
+`
+
+func main() {
+ tempDir, err := ioutil.TempDir("", "")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer os.RemoveAll(tempDir)
+ tmpFile := filepath.Join(tempDir, "tmp.go")
+
+ for _, tc := range []struct {
+ Type string
+ Input string
+ Expect string
+ }{{"", "nil", "panic: nil"},
+ {"errors.New", `"test"`, "panic: test"},
+ {"S", "S{}", "panic: s-stringer"},
+ {"byte", "8", "panic: 8"},
+ {"rune", "8", "panic: 8"},
+ {"int", "8", "panic: 8"},
+ {"int8", "8", "panic: 8"},
+ {"int16", "8", "panic: 8"},
+ {"int32", "8", "panic: 8"},
+ {"int64", "8", "panic: 8"},
+ {"uint", "8", "panic: 8"},
+ {"uint8", "8", "panic: 8"},
+ {"uint16", "8", "panic: 8"},
+ {"uint32", "8", "panic: 8"},
+ {"uint64", "8", "panic: 8"},
+ {"uintptr", "8", "panic: 8"},
+ {"bool", "true", "panic: true"},
+ {"complex64", "8 + 16i", "panic: (+8.000000e+000+1.600000e+001i)"},
+ {"complex128", "8+16i", "panic: (+8.000000e+000+1.600000e+001i)"},
+ {"string", `"test"`, "panic: test"}} {
+
+ b := bytes.Buffer{}
+ fmt.Fprintf(&b, fn, tc.Type, tc.Input)
+
+ err = ioutil.WriteFile(tmpFile, b.Bytes(), 0644)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ cmd := exec.Command("go", "run", tmpFile)
+ var buf bytes.Buffer
+ cmd.Stdout = &buf
+ cmd.Stderr = &buf
+ cmd.Env = os.Environ()
+ cmd.Run() // ignore err as we expect a panic
+
+ out := buf.Bytes()
+ panicIdx := bytes.Index(out, []byte("panic: "))
+ if panicIdx == -1 {
+ log.Fatalf("expected a panic in output for %s, got: %s", tc.Type, out)
+ }
+ eolIdx := bytes.IndexByte(out[panicIdx:], '\n') + panicIdx
+ if panicIdx == -1 {
+ log.Fatalf("expected a newline in output for %s after the panic, got: %s", tc.Type, out)
+ }
+ out = out[0:eolIdx]
+ if string(out) != tc.Expect {
+ log.Fatalf("expected '%s' for panic(%s(%s)), got %s", tc.Expect, tc.Type, tc.Input, out)
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19667.go b/gcc/testsuite/go.test/test/fixedbugs/issue19667.go
new file mode 100644
index 0000000..e33e350
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19667.go
@@ -0,0 +1,13 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure we don't crash when reporting this error.
+
+package p
+
+func f() {
+ if err := http.ListenAndServe( // GCCGO_ERROR "undefined name"
+} // ERROR "unexpected }, expecting expression|expected operand|missing .*\)|expected .*;|expected .*{"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19671.go b/gcc/testsuite/go.test/test/fixedbugs/issue19671.go
new file mode 100644
index 0000000..475c3e0
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19671.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Used to crash when compiling assignments involving [0]T,
+// where T is not SSA-able.
+
+package a
+
+func f() {
+ var i int
+ arr := [0][2]int{}
+ arr[i][0] = 0
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19678.go b/gcc/testsuite/go.test/test/fixedbugs/issue19678.go
new file mode 100644
index 0000000..81ef331
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19678.go
@@ -0,0 +1,21 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Used to crash when compiling functions containing
+// forward refs in dead code.
+
+package p
+
+var f func(int)
+
+func g() {
+l1:
+ i := 0
+ goto l1
+l2:
+ f(i)
+ goto l2
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19679.go b/gcc/testsuite/go.test/test/fixedbugs/issue19679.go
new file mode 100644
index 0000000..636b27f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19679.go
@@ -0,0 +1,38 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Used to crash when a type switch was present in dead code
+// in an inlineable function.
+
+package p
+
+func Then() {
+ var i interface{}
+ if false {
+ switch i.(type) {
+ }
+ }
+}
+
+func Else() {
+ var i interface{}
+ if true {
+ _ = i
+ } else {
+ switch i.(type) {
+ }
+ }
+}
+
+func Switch() {
+ var i interface{}
+ switch 5 {
+ case 3:
+ switch i.(type) {
+ }
+ case 5:
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19696.go b/gcc/testsuite/go.test/test/fixedbugs/issue19696.go
new file mode 100644
index 0000000..4cb2789
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19696.go
@@ -0,0 +1,20 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Used to crash when compiling assignments involving [0]T,
+// where T is not SSA-able.
+
+package p
+
+type s struct {
+ a, b, c, d, e int
+}
+
+func f() {
+ var i int
+ arr := [0]s{}
+ arr[i].a++
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19699b.go b/gcc/testsuite/go.test/test/fixedbugs/issue19699b.go
new file mode 100644
index 0000000..4afc0ca
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19699b.go
@@ -0,0 +1,14 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f() bool {
+ if false {
+ } else {
+ return true
+ }
+} // ERROR "missing return at end of function"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19705.go b/gcc/testsuite/go.test/test/fixedbugs/issue19705.go
new file mode 100644
index 0000000..6157945
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19705.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f1() {
+ f2()
+}
+
+func f2() {
+ if false {
+ _ = func() {}
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19710.go b/gcc/testsuite/go.test/test/fixedbugs/issue19710.go
new file mode 100644
index 0000000..c42ea7c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19710.go
@@ -0,0 +1,25 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 19710: mishandled defer delete(...)
+
+package main
+
+func main() {
+ if n := len(f()); n != 0 {
+ println("got", n, "want 0")
+ panic("bad defer delete")
+ }
+}
+
+func f() map[int]bool {
+ m := map[int]bool{}
+ for i := 0; i < 3; i++ {
+ m[i] = true
+ defer delete(m, i)
+ }
+ return m
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19743.go b/gcc/testsuite/go.test/test/fixedbugs/issue19743.go
new file mode 100644
index 0000000..5089cc6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19743.go
@@ -0,0 +1,31 @@
+// errorcheck -0 -m -l
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package foo
+
+// Escape analysis needs to treat the uintptr-typed reflect.*Header fields as pointers.
+
+import (
+ "reflect"
+ "unsafe"
+)
+
+type immutableBytes []byte
+
+// Bug was failure to leak param b.
+func toString(b immutableBytes) string { // ERROR "leaking param: b$"
+ var s string
+ if len(b) == 0 {
+ return s
+ }
+
+ strHeader := (*reflect.StringHeader)(unsafe.Pointer(&s))
+ strHeader.Data = (*reflect.SliceHeader)(unsafe.Pointer(&b)).Data
+
+ l := len(b)
+ strHeader.Len = l
+ return s
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19764.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue19764.dir/a.go
new file mode 100644
index 0000000..64538e5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19764.dir/a.go
@@ -0,0 +1,15 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type T struct{ _ int }
+func (t T) M() {}
+
+type I interface { M() }
+
+func F() {
+ var t I = &T{}
+ t.M() // call to the wrapper (*T).M
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19764.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue19764.dir/b.go
new file mode 100644
index 0000000..d39f125
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19764.dir/b.go
@@ -0,0 +1,13 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "./a"
+
+func main() {
+ var x a.I = &a.T{}
+ x.M() // call to the wrapper (*T).M
+ a.F() // make sure a.F is not dead, which also calls (*T).M inside package a
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19764.go b/gcc/testsuite/go.test/test/fixedbugs/issue19764.go
new file mode 100644
index 0000000..26fb00b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19764.go
@@ -0,0 +1,10 @@
+// rundir
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 19764: test that the linker's trampoline insertion
+// pass is happy with direct calls to interface wrappers that
+// may be defined in multiple packages.
+package ignore
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19783.go b/gcc/testsuite/go.test/test/fixedbugs/issue19783.go
new file mode 100644
index 0000000..8d6494e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19783.go
@@ -0,0 +1,18 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func Spin() {
+l1:
+ for true {
+ goto l1
+ l2:
+ if true {
+ goto l2
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19799.go b/gcc/testsuite/go.test/test/fixedbugs/issue19799.go
new file mode 100644
index 0000000..cb675d7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19799.go
@@ -0,0 +1,71 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "os"
+ "runtime"
+)
+
+func foo(x int) int {
+ return x + 1
+}
+
+func test() {
+ defer func() {
+ if r := recover(); r != nil {
+ pcs := make([]uintptr, 10)
+ n := runtime.Callers(0, pcs)
+ pcs = pcs[:n]
+ frames := runtime.CallersFrames(pcs)
+ for {
+ f, more := frames.Next()
+ if f.Function == "main.foo" {
+ println("did not expect to see call to foo in stack trace")
+ os.Exit(1)
+ }
+ if !more {
+ break
+ }
+ }
+ }
+ }()
+ var v []int
+ foo(v[0])
+}
+
+func bar(x ...int) int {
+ return x[0] + 1
+}
+
+func testVariadic() {
+ defer func() {
+ if r := recover(); r != nil {
+ pcs := make([]uintptr, 10)
+ n := runtime.Callers(0, pcs)
+ pcs = pcs[:n]
+ frames := runtime.CallersFrames(pcs)
+ for {
+ f, more := frames.Next()
+ if f.Function == "main.bar" {
+ println("did not expect to see call to bar in stack trace")
+ os.Exit(1)
+ }
+ if !more {
+ break
+ }
+ }
+ }
+ }()
+ var v []int
+ bar(v[0])
+}
+
+func main() {
+ test()
+ testVariadic()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19880.go b/gcc/testsuite/go.test/test/fixedbugs/issue19880.go
new file mode 100644
index 0000000..3d83cf3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19880.go
@@ -0,0 +1,20 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type T struct {
+ f [1]int
+}
+
+func a() {
+ _ = T // ERROR "type T is not an expression|invalid use of type"
+}
+
+func b() {
+ var v [len(T{}.f)]int // ok
+ _ = v
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19911.go b/gcc/testsuite/go.test/test/fixedbugs/issue19911.go
new file mode 100644
index 0000000..af7f5981
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19911.go
@@ -0,0 +1,34 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "strings"
+)
+
+type ET struct{}
+
+func (*ET) Error() string { return "err" }
+
+func main() {
+ check("false", fmt.Sprintf("(*ET)(nil) == error(nil): %v", (*ET)(nil) == error(nil)))
+ check("true", fmt.Sprintf("(*ET)(nil) != error(nil): %v", (*ET)(nil) != error(nil)))
+
+ nilET := (*ET)(nil)
+ nilError := error(nil)
+
+ check("false", fmt.Sprintf("nilET == nilError: %v", nilET == nilError))
+ check("true", fmt.Sprintf("nilET != nilError: %v", nilET != nilError))
+}
+
+func check(want, gotfull string) {
+ got := gotfull[strings.Index(gotfull, ": ")+len(": "):]
+ if got != want {
+ panic("want " + want + " got " + got + " from " + gotfull)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue19977.go b/gcc/testsuite/go.test/test/fixedbugs/issue19977.go
new file mode 100644
index 0000000..6e4a9cc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue19977.go
@@ -0,0 +1,16 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 19977: multiple error messages when type switching on an undefined
+
+package foo
+
+func Foo() {
+ switch x := a.(type) { // ERROR "undefined: a|reference to undefined name .*a"
+ default:
+ _ = x
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20029.go b/gcc/testsuite/go.test/test/fixedbugs/issue20029.go
new file mode 100644
index 0000000..db3f8aa
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20029.go
@@ -0,0 +1,32 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 20029: make sure we zero at VARKILLs of
+// ambiguously live variables.
+// The ambiguously live variable here is the hiter
+// for the inner range loop.
+
+package main
+
+import "runtime"
+
+func f(m map[int]int) {
+outer:
+ for i := 0; i < 10; i++ {
+ for k := range m {
+ if k == 5 {
+ continue outer
+ }
+ }
+ runtime.GC()
+ break
+ }
+ runtime.GC()
+}
+func main() {
+ m := map[int]int{1: 2, 2: 3, 3: 4}
+ f(m)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20097.go b/gcc/testsuite/go.test/test/fixedbugs/issue20097.go
new file mode 100644
index 0000000..236a1bd
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20097.go
@@ -0,0 +1,18 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 20097: ensure that we CSE multiple Select ops with
+// the same underlying type
+
+package main
+
+type T int64
+
+func f(x, y int64) (int64, T) {
+ a := x / y
+ b := T(x) / T(y)
+ return a, b
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20145.go b/gcc/testsuite/go.test/test/fixedbugs/issue20145.go
new file mode 100644
index 0000000..67ba5ae
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20145.go
@@ -0,0 +1,14 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 20145: some func types weren't dowidth-ed by the front end,
+// leading to races in the backend.
+
+package p
+
+func f() {
+ _ = (func())(nil)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20185.go b/gcc/testsuite/go.test/test/fixedbugs/issue20185.go
new file mode 100644
index 0000000..9065868
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20185.go
@@ -0,0 +1,25 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 20185: type switching on untyped values (e.g. nil or consts)
+// caused an internal compiler error.
+
+package p
+
+func F() {
+ switch t := nil.(type) { // ERROR "cannot type switch on non-interface value"
+ default:
+ _ = t
+ }
+}
+
+const x = 1
+
+func G() {
+ switch t := x.(type) { // ERROR "cannot type switch on non-interface value|declared but not used"
+ default:
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20227.go b/gcc/testsuite/go.test/test/fixedbugs/issue20227.go
new file mode 100644
index 0000000..f599231
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20227.go
@@ -0,0 +1,16 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 20227: panic while constructing constant "1i/1e-600000000"
+
+package p
+
+var _ = 1 / 1e-600000000i // ERROR "division by zero"
+var _ = 1i / 1e-600000000 // ERROR "division by zero"
+var _ = 1i / 1e-600000000i // ERROR "division by zero"
+
+var _ = 1 / (1e-600000000 + 1e-600000000i) // ERROR "division by zero"
+var _ = 1i / (1e-600000000 + 1e-600000000i) // ERROR "division by zero"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20333.go b/gcc/testsuite/go.test/test/fixedbugs/issue20333.go
new file mode 100644
index 0000000..8202ab3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20333.go
@@ -0,0 +1,15 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 20333: early checkwidth of [...] arrays led to compilation errors.
+
+package main
+
+import "fmt"
+
+func main() {
+ fmt.Println(&[...]string{"abc", "def", "ghi"})
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20335.go b/gcc/testsuite/go.test/test/fixedbugs/issue20335.go
new file mode 100644
index 0000000..185c2f0
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20335.go
@@ -0,0 +1,19 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 20335: don't reorder loads with stores.
+// This test should fail on the ssacheck builder
+// without the fix in the CL that added this file.
+// TODO: check the generated assembly?
+
+package a
+
+import "sync/atomic"
+
+func f(p, q *int32) bool {
+ x := *q
+ return atomic.AddInt32(p, 1) == x
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20415.go b/gcc/testsuite/go.test/test/fixedbugs/issue20415.go
new file mode 100644
index 0000000..9e7649f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20415.go
@@ -0,0 +1,33 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure redeclaration errors report correct position.
+
+package p
+
+// 1
+var f byte
+
+var f interface{} // ERROR "previous declaration at issue20415.go:12|redefinition"
+
+func _(f int) {
+}
+
+// 2
+var g byte
+
+func _(g int) {
+}
+
+var g interface{} // ERROR "previous declaration at issue20415.go:20|redefinition"
+
+// 3
+func _(h int) {
+}
+
+var h byte
+
+var h interface{} // ERROR "previous declaration at issue20415.go:31|redefinition"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20529.go b/gcc/testsuite/go.test/test/fixedbugs/issue20529.go
new file mode 100644
index 0000000..eeaaf37
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20529.go
@@ -0,0 +1,21 @@
+// errorcheck
+
+// +build amd64
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 20529: Large stack frames caused compiler panics.
+// Only tested on amd64 because the test only makes sense
+// on a 64 bit system, and it is platform-agnostic,
+// so testing one suffices.
+
+package p
+
+import "runtime"
+
+func f() { // GC_ERROR "stack frame too large"
+ x := [][]int{1e9: []int{}}
+ runtime.KeepAlive(x)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20530.go b/gcc/testsuite/go.test/test/fixedbugs/issue20530.go
new file mode 100644
index 0000000..51f0bd8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20530.go
@@ -0,0 +1,34 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var a uint8
+
+//go:noinline
+func f() {
+ b := int8(func() int32 { return -1 }())
+ a = uint8(b)
+ if int32(a) != 255 {
+ // Failing case prints 'got 255 expected 255'
+ println("got", a, "expected 255")
+ }
+}
+
+//go:noinline
+func g() {
+ b := int8(func() uint32 { return 0xffffffff }())
+ a = uint8(b)
+ if int32(a) != 255 {
+ // Failing case prints 'got 255 expected 255'
+ println("got", a, "expected 255")
+ }
+}
+
+func main() {
+ f()
+ g()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20602.go b/gcc/testsuite/go.test/test/fixedbugs/issue20602.go
new file mode 100644
index 0000000..d4d513b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20602.go
@@ -0,0 +1,14 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that the correct (not implicitly dereferenced)
+// type is reported in the error message.
+
+package p
+
+var p = &[1]complex128{0}
+var _ = real(p) // ERROR "type \*\[1\]complex128|argument must have complex type"
+var _ = imag(p) // ERROR "type \*\[1\]complex128|argument must have complex type"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20682.dir/p.go b/gcc/testsuite/go.test/test/fixedbugs/issue20682.dir/p.go
new file mode 100644
index 0000000..fc37136
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20682.dir/p.go
@@ -0,0 +1,13 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+import "strings"
+
+type T struct{}
+
+func (T) M() {
+ strings.HasPrefix("", "")
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20682.dir/q.go b/gcc/testsuite/go.test/test/fixedbugs/issue20682.dir/q.go
new file mode 100644
index 0000000..9554569
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20682.dir/q.go
@@ -0,0 +1,13 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package q
+
+import "./p"
+
+type T struct{}
+
+func (T) M() interface{} {
+ return &p.T{}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20682.dir/r.go b/gcc/testsuite/go.test/test/fixedbugs/issue20682.dir/r.go
new file mode 100644
index 0000000..73dfe1b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20682.dir/r.go
@@ -0,0 +1,11 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package r
+
+import "./q"
+
+type T struct {
+ q.T
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20682.go b/gcc/testsuite/go.test/test/fixedbugs/issue20682.go
new file mode 100644
index 0000000..8000a52
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20682.go
@@ -0,0 +1,7 @@
+// compiledir
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20739.go b/gcc/testsuite/go.test/test/fixedbugs/issue20739.go
new file mode 100644
index 0000000..b71a25d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20739.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func F() {
+ var x struct {
+ x *int
+ w [1e9][1e9][1e9][0]*int
+ y *int
+ }
+ println(&x)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20749.go b/gcc/testsuite/go.test/test/fixedbugs/issue20749.go
new file mode 100644
index 0000000..de2d3ad
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20749.go
@@ -0,0 +1,15 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+// Verify that the compiler complains even if the array
+// has length 0.
+var a [0]int
+var _ = a[2:] // ERROR "invalid slice index 2|array index out of bounds"
+
+var b [1]int
+var _ = b[2:] // ERROR "invalid slice index 2|array index out of bounds"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20780.go b/gcc/testsuite/go.test/test/fixedbugs/issue20780.go
new file mode 100644
index 0000000..53c4f61
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20780.go
@@ -0,0 +1,19 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// We have a limit of 1GB for stack frames.
+// Make sure we include the callee args section.
+
+package main
+
+func f() { // GC_ERROR "stack frame too large"
+ var x [800e6]byte
+ g(x)
+ return
+}
+
+//go:noinline
+func g([800e6]byte) {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20811.go b/gcc/testsuite/go.test/test/fixedbugs/issue20811.go
new file mode 100644
index 0000000..96b61ec
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20811.go
@@ -0,0 +1,23 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 20811: slice-in-bound check is lowered incorrectly on
+// amd64p32.
+
+package main
+
+func main() {
+ i := g()
+ _ = "x"[int32(i)]
+ j := g()
+ _ = "x"[:int32(j)]
+}
+
+//go:noinline
+func g() int64 {
+ return 4398046511104
+}
+
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20812.go b/gcc/testsuite/go.test/test/fixedbugs/issue20812.go
new file mode 100644
index 0000000..d0df831
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20812.go
@@ -0,0 +1,15 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f() {
+ _ = int("1") // ERROR "cannot convert|invalid type conversion"
+ _ = bool(0) // ERROR "cannot convert|invalid type conversion"
+ _ = bool("false") // ERROR "cannot convert|invalid type conversion"
+ _ = int(false) // ERROR "cannot convert|invalid type conversion"
+ _ = string(true) // ERROR "cannot convert|invalid type conversion"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue20813.go b/gcc/testsuite/go.test/test/fixedbugs/issue20813.go
new file mode 100644
index 0000000..b147a89
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue20813.go
@@ -0,0 +1,11 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f() {
+ 1 = 2 // ERROR "cannot assign to 1|invalid left hand side"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21048.go b/gcc/testsuite/go.test/test/fixedbugs/issue21048.go
new file mode 100644
index 0000000..e365a5e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21048.go
@@ -0,0 +1,72 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 21048: s390x merged address generation into stores
+// to unaligned global variables. This resulted in an illegal
+// instruction.
+
+package main
+
+type T struct {
+ _ [1]byte
+ a [2]byte // offset: 1
+ _ [3]byte
+ b [2]uint16 // offset: 6
+ _ [2]byte
+ c [2]uint32 // offset: 12
+ _ [2]byte
+ d [2]int16 // offset: 22
+ _ [2]byte
+ e [2]int32 // offset: 28
+}
+
+var Source, Sink T
+
+func newT() T {
+ return T{
+ a: [2]byte{1, 2},
+ b: [2]uint16{1, 2},
+ c: [2]uint32{1, 2},
+ d: [2]int16{1, 2},
+ e: [2]int32{1, 2},
+ }
+}
+
+//go:noinline
+func moves() {
+ Sink.a = Source.a
+ Sink.b = Source.b
+ Sink.c = Source.c
+ Sink.d = Source.d
+ Sink.e = Source.e
+}
+
+//go:noinline
+func loads() *T {
+ t := newT()
+ t.a = Source.a
+ t.b = Source.b
+ t.c = Source.c
+ t.d = Source.d
+ t.e = Source.e
+ return &t
+}
+
+//go:noinline
+func stores() {
+ t := newT()
+ Sink.a = t.a
+ Sink.b = t.b
+ Sink.c = t.c
+ Sink.d = t.d
+ Sink.e = t.e
+}
+
+func main() {
+ moves()
+ loads()
+ stores()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21120.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue21120.dir/a.go
new file mode 100644
index 0000000..f2ee252
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21120.dir/a.go
@@ -0,0 +1,13 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type S struct {
+ x int
+}
+
+func V() interface{} {
+ return S{0}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21120.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue21120.dir/b.go
new file mode 100644
index 0000000..b00bd53
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21120.dir/b.go
@@ -0,0 +1,29 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "reflect"
+
+type X int
+
+func F1() string {
+ type x X
+
+ s := struct {
+ *x
+ }{nil}
+ v := reflect.TypeOf(s)
+ return v.Field(0).PkgPath
+}
+
+func F2() string {
+ type y X
+
+ s := struct {
+ *y
+ }{nil}
+ v := reflect.TypeOf(s)
+ return v.Field(0).PkgPath
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21120.dir/main.go b/gcc/testsuite/go.test/test/fixedbugs/issue21120.dir/main.go
new file mode 100644
index 0000000..1f1ec30
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21120.dir/main.go
@@ -0,0 +1,25 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "os"
+
+ "./a"
+ "./b"
+)
+
+func main() {
+ // Make sure the reflect information for a.S is in the executable.
+ _ = a.V()
+
+ b1 := b.F1()
+ b2 := b.F2()
+ if b1 != b2 {
+ fmt.Printf("%q (from b.F1()) != %q (from b.F2())\n", b1, b2)
+ os.Exit(1)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21120.go b/gcc/testsuite/go.test/test/fixedbugs/issue21120.go
new file mode 100644
index 0000000..ea896ce
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21120.go
@@ -0,0 +1,11 @@
+// rundir
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// The compiler was using an incomplete symbol name for reflect name data,
+// permitting an invalid merge in the linker, producing an incorrect
+// exported flag bit.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21221.go b/gcc/testsuite/go.test/test/fixedbugs/issue21221.go
new file mode 100644
index 0000000..bd5a4b5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21221.go
@@ -0,0 +1,18 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "unsafe"
+
+func main() {
+ if unsafe.Pointer(uintptr(0)) != unsafe.Pointer(nil) {
+ panic("fail")
+ }
+ if (*int)(unsafe.Pointer(uintptr(0))) != (*int)(nil) {
+ panic("fail")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21256.go b/gcc/testsuite/go.test/test/fixedbugs/issue21256.go
new file mode 100644
index 0000000..c845ec5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21256.go
@@ -0,0 +1,9 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var main = func() {} // ERROR "must be func|redefinition"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21273.go b/gcc/testsuite/go.test/test/fixedbugs/issue21273.go
new file mode 100644
index 0000000..77a1aba
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21273.go
@@ -0,0 +1,28 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+type T0 T0 // ERROR "invalid recursive type"
+type _ map[T0]int
+
+type T1 struct{ T1 } // ERROR "invalid recursive type"
+type _ map[T1]int
+
+func f() {
+ type T2 T2 // ERROR "invalid recursive type"
+ type _ map[T2]int
+}
+
+func g() {
+ type T3 struct{ T3 } // ERROR "invalid recursive type"
+ type _ map[T3]int
+}
+
+func h() {
+ type T4 struct{ m map[T4]int } // ERROR "invalid map key"
+ type _ map[T4]int // GC_ERROR "invalid map key"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21317.go b/gcc/testsuite/go.test/test/fixedbugs/issue21317.go
new file mode 100644
index 0000000..32b660c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21317.go
@@ -0,0 +1,56 @@
+// +build !js,gc
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// As of "Mon 6 Nov 2017", run.go doesn't yet have proper
+// column matching so instead match the output manually
+// by exec-ing
+
+package main
+
+import (
+ "fmt"
+ "io/ioutil"
+ "log"
+ "os"
+ "os/exec"
+ "strings"
+)
+
+func main() {
+ f, err := ioutil.TempFile("", "issue21317.go")
+ if err != nil {
+ log.Fatal(err)
+ }
+ fmt.Fprintf(f, `
+package main
+
+import "fmt"
+
+func main() {
+ n, err := fmt.Println(1)
+}
+`)
+ f.Close()
+ defer os.RemoveAll(f.Name())
+
+ // compile and test output
+ cmd := exec.Command("go", "tool", "compile", f.Name())
+ out, err := cmd.CombinedOutput()
+ if err == nil {
+ log.Fatalf("expected cmd/compile to fail")
+ }
+ wantErrs := []string{
+ "7:9: n declared but not used",
+ "7:12: err declared but not used",
+ }
+ outStr := string(out)
+ for _, want := range wantErrs {
+ if !strings.Contains(outStr, want) {
+ log.Fatalf("failed to match %q\noutput: %q", want, outStr)
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21576.go b/gcc/testsuite/go.test/test/fixedbugs/issue21576.go
new file mode 100644
index 0000000..3f9b1ba
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21576.go
@@ -0,0 +1,63 @@
+// run
+
+// +build !nacl,!js,!gccgo
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+//
+// Ensure that deadlock detection can still
+// run even with an import of "_ os/signal".
+
+package main
+
+import (
+ "bytes"
+ "context"
+ "io/ioutil"
+ "log"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "time"
+)
+
+const prog = `
+package main
+
+import _ "os/signal"
+
+func main() {
+ c := make(chan int)
+ c <- 1
+}
+`
+
+func main() {
+ dir, err := ioutil.TempDir("", "21576")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer os.RemoveAll(dir)
+
+ file := filepath.Join(dir, "main.go")
+ if err := ioutil.WriteFile(file, []byte(prog), 0655); err != nil {
+ log.Fatalf("Write error %v", err)
+ }
+
+ // Using a timeout of 1 minute in case other factors might slow
+ // down the start of "go run". See https://golang.org/issue/34836.
+ ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
+ defer cancel()
+
+ cmd := exec.CommandContext(ctx, "go", "run", file)
+ output, err := cmd.CombinedOutput()
+ if err == nil {
+ log.Fatalf("Passed, expected an error")
+ }
+
+ want := []byte("fatal error: all goroutines are asleep - deadlock!")
+ if !bytes.Contains(output, want) {
+ log.Fatalf("Unmatched error message %q:\nin\n%s\nError: %v", want, output, err)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21655.go b/gcc/testsuite/go.test/test/fixedbugs/issue21655.go
new file mode 100644
index 0000000..66d4e3a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21655.go
@@ -0,0 +1,62 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure assembly offsets don't get too large.
+
+// To trigger issue21655, the index offset needs to be small
+// enough to fit into an int32 (to get rewritten to an ADDQconst)
+// but large enough to overflow an int32 after multiplying by the stride.
+
+package main
+
+func f1(a []int64, i int64) int64 {
+ return a[i+1<<30]
+}
+func f2(a []int32, i int64) int32 {
+ return a[i+1<<30]
+}
+func f3(a []int16, i int64) int16 {
+ return a[i+1<<30]
+}
+func f4(a []int8, i int64) int8 {
+ return a[i+1<<31]
+}
+func f5(a []float64, i int64) float64 {
+ return a[i+1<<30]
+}
+func f6(a []float32, i int64) float32 {
+ return a[i+1<<30]
+}
+
+// Note: Before the fix for issue 21655, f{1,2,5,6} made
+// the compiler crash. f3 silently generated the wrong
+// code, using an offset of -1<<31 instead of 1<<31.
+// (This is due to the assembler accepting offsets
+// like 0x80000000 and silently using them as
+// signed 32 bit offsets.)
+// f4 was ok, but testing it can't hurt.
+
+func f7(ss []*string, i int) string {
+ const offset = 3 << 29 // 3<<29 * 4 = 3<<31 = 1<<31 mod 1<<32.
+ if i > offset {
+ return *ss[i-offset]
+ }
+ return ""
+}
+func f8(ss []*string, i int) string {
+ const offset = 3<<29 + 10
+ if i > offset {
+ return *ss[i-offset]
+ }
+ return ""
+}
+func f9(ss []*string, i int) string {
+ const offset = 3<<29 - 10
+ if i > offset {
+ return *ss[i-offset]
+ }
+ return ""
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21770.go b/gcc/testsuite/go.test/test/fixedbugs/issue21770.go
new file mode 100644
index 0000000..2f07d64
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21770.go
@@ -0,0 +1,20 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 21770: gccgo incorrectly accepts "p.f = 0" where p is **struct
+
+package p
+
+type PP **struct{ f int }
+
+func f() {
+ // anonymous type
+ var p **struct{ f int }
+ p.f = 0 // ERROR "field"
+ // named type
+ var p2 PP
+ p2.f = 0 // ERROR "field"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21808.go b/gcc/testsuite/go.test/test/fixedbugs/issue21808.go
new file mode 100644
index 0000000..d146200
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21808.go
@@ -0,0 +1,17 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure println() prints a blank line.
+
+package main
+
+import "fmt"
+
+func main() {
+ fmt.Println("A")
+ println()
+ fmt.Println("B")
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21808.out b/gcc/testsuite/go.test/test/fixedbugs/issue21808.out
new file mode 100644
index 0000000..655da03
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21808.out
@@ -0,0 +1,3 @@
+A
+
+B
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21879.go b/gcc/testsuite/go.test/test/fixedbugs/issue21879.go
new file mode 100644
index 0000000..1029ca0
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21879.go
@@ -0,0 +1,37 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "runtime"
+)
+
+func main() {
+ println(caller().frame.Function)
+
+ // Used to erroneously print "main.call.name" instead of
+ // "main.main".
+ println(caller().name())
+}
+
+func caller() call {
+ var pcs [3]uintptr
+ n := runtime.Callers(1, pcs[:])
+ frames := runtime.CallersFrames(pcs[:n])
+ frame, _ := frames.Next()
+ frame, _ = frames.Next()
+
+ return call{frame: frame}
+}
+
+type call struct {
+ frame runtime.Frame
+}
+
+func (c call) name() string {
+ return c.frame.Function
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21879.out b/gcc/testsuite/go.test/test/fixedbugs/issue21879.out
new file mode 100644
index 0000000..066f1a8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21879.out
@@ -0,0 +1,2 @@
+main.main
+main.main
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21882.go b/gcc/testsuite/go.test/test/fixedbugs/issue21882.go
new file mode 100644
index 0000000..f77e046
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21882.go
@@ -0,0 +1,9 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type T [2]T // ERROR "invalid recursive type"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21887.go b/gcc/testsuite/go.test/test/fixedbugs/issue21887.go
new file mode 100644
index 0000000..73c3f43
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21887.go
@@ -0,0 +1,25 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 21887: println(^uint(0)) fails to compile
+
+package main
+
+import "strconv"
+
+func main() {
+ if strconv.IntSize == 32 {
+ println(^uint(0))
+ } else {
+ println(^uint32(0))
+ }
+
+ if strconv.IntSize == 64 {
+ println(^uint(0))
+ } else {
+ println(^uint64(0))
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21887.out b/gcc/testsuite/go.test/test/fixedbugs/issue21887.out
new file mode 100644
index 0000000..664b67d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21887.out
@@ -0,0 +1,2 @@
+4294967295
+18446744073709551615
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21963.go b/gcc/testsuite/go.test/test/fixedbugs/issue21963.go
new file mode 100644
index 0000000..996bd63
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21963.go
@@ -0,0 +1,27 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "runtime"
+)
+
+//go:noinline
+func f(x []int32, y *int8) int32 {
+ c := int32(int16(*y))
+ runtime.GC()
+ return x[0] * c
+}
+
+func main() {
+ var x = [1]int32{5}
+ var y int8 = -1
+ if got, want := f(x[:], &y), int32(-5); got != want {
+ panic(fmt.Sprintf("wanted %d, got %d", want, got))
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21979.go b/gcc/testsuite/go.test/test/fixedbugs/issue21979.go
new file mode 100644
index 0000000..addf786
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21979.go
@@ -0,0 +1,46 @@
+// errorcheck
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f() {
+ _ = bool("") // ERROR "cannot convert .. \(type untyped string\) to type bool|invalid type conversion"
+ _ = bool(1) // ERROR "cannot convert 1 \(type untyped int\) to type bool|invalid type conversion"
+ _ = bool(1.0) // ERROR "cannot convert 1 \(type untyped float\) to type bool|invalid type conversion"
+ _ = bool(-4 + 2i) // ERROR "cannot convert -4 \+ 2i \(type untyped complex\) to type bool|invalid type conversion"
+
+ _ = string(true) // ERROR "cannot convert true \(type untyped bool\) to type string|invalid type conversion"
+ _ = string(-1)
+ _ = string(1.0) // ERROR "cannot convert 1 \(type untyped float\) to type string|invalid type conversion"
+ _ = string(-4 + 2i) // ERROR "cannot convert -4 \+ 2i \(type untyped complex\) to type string|invalid type conversion"
+
+ _ = int("") // ERROR "cannot convert .. \(type untyped string\) to type int|invalid type conversion"
+ _ = int(true) // ERROR "cannot convert true \(type untyped bool\) to type int|invalid type conversion"
+ _ = int(-1)
+ _ = int(1)
+ _ = int(1.0)
+ _ = int(-4 + 2i) // ERROR "truncated to integer"
+
+ _ = uint("") // ERROR "cannot convert .. \(type untyped string\) to type uint|invalid type conversion"
+ _ = uint(true) // ERROR "cannot convert true \(type untyped bool\) to type uint|invalid type conversion"
+ _ = uint(-1) // ERROR "constant -1 overflows uint|integer constant overflow"
+ _ = uint(1)
+ _ = uint(1.0)
+ _ = uint(-4 + 2i) // ERROR "constant -4 overflows uint" "truncated to integer"
+
+ _ = float64("") // ERROR "cannot convert .. \(type untyped string\) to type float64|invalid type conversion"
+ _ = float64(true) // ERROR "cannot convert true \(type untyped bool\) to type float64|invalid type conversion"
+ _ = float64(-1)
+ _ = float64(1)
+ _ = float64(1.0)
+ _ = float64(-4 + 2i) // ERROR "truncated to"
+
+ _ = complex128("") // ERROR "cannot convert .. \(type untyped string\) to type complex128|invalid type conversion"
+ _ = complex128(true) // ERROR "cannot convert true \(type untyped bool\) to type complex128|invalid type conversion"
+ _ = complex128(-1)
+ _ = complex128(1)
+ _ = complex128(1.0)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue21988.go b/gcc/testsuite/go.test/test/fixedbugs/issue21988.go
new file mode 100644
index 0000000..4dbf06e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue21988.go
@@ -0,0 +1,17 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 21988: panic on switch case with invalid value
+
+package p
+
+const X = Wrong(0) // ERROR "undefined: Wrong|undefined name .*Wrong"
+
+func _() {
+ switch 0 {
+ case X:
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22063.go b/gcc/testsuite/go.test/test/fixedbugs/issue22063.go
new file mode 100644
index 0000000..8d84047
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22063.go
@@ -0,0 +1,17 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 22063: panic on interface switch case with invalid name
+
+package p
+
+const X = Wrong(0) // ERROR "undefined: Wrong|reference to undefined name .*Wrong"
+
+func _() {
+ switch interface{}(nil) {
+ case X:
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22076.go b/gcc/testsuite/go.test/test/fixedbugs/issue22076.go
new file mode 100644
index 0000000..5d628b9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22076.go
@@ -0,0 +1,25 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 22076: Couldn't use ":=" to declare names that refer to
+// dot-imported symbols.
+
+package p
+
+import . "bytes"
+
+var _ Reader // use "bytes" import
+
+func _() {
+ Buffer := 0
+ _ = Buffer
+}
+
+func _() {
+ for Buffer := range []int{} {
+ _ = Buffer
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22083.go b/gcc/testsuite/go.test/test/fixedbugs/issue22083.go
new file mode 100644
index 0000000..a385102
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22083.go
@@ -0,0 +1,41 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// The compiler was panicking on the wrong line number, where
+// the panic was occurring in an inlined call.
+
+package main
+
+import (
+ "runtime/debug"
+ "strings"
+)
+
+type Wrapper struct {
+ a []int
+}
+
+func (w Wrapper) Get(i int) int {
+ return w.a[i]
+}
+
+func main() {
+ defer func() {
+ e := recover()
+ if e == nil {
+ panic("bounds check didn't fail")
+ }
+ stk := string(debug.Stack())
+ if !strings.Contains(stk, "issue22083.go:40") {
+ panic("wrong stack trace: " + stk)
+ }
+ }()
+ foo := Wrapper{a: []int{0, 1, 2}}
+ _ = foo.Get(0)
+ _ = foo.Get(1)
+ _ = foo.Get(2)
+ _ = foo.Get(3) // stack trace should mention this line
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22198.go b/gcc/testsuite/go.test/test/fixedbugs/issue22198.go
new file mode 100644
index 0000000..c874c1c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22198.go
@@ -0,0 +1,18 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package issue22198
+
+func f(a *bool, b bool) {
+ if b {
+ return
+ }
+ c := '\n'
+ if b {
+ c = ' '
+ }
+ *a = c == '\n'
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22200.go b/gcc/testsuite/go.test/test/fixedbugs/issue22200.go
new file mode 100644
index 0000000..37440d9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22200.go
@@ -0,0 +1,20 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f1(x *[1<<30 - 1e6]byte) byte {
+ for _, b := range *x {
+ return b
+ }
+ return 0
+}
+func f2(x *[1<<30 + 1e6]byte) byte { // GC_ERROR "stack frame too large"
+ for _, b := range *x {
+ return b
+ }
+ return 0
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22200b.go b/gcc/testsuite/go.test/test/fixedbugs/issue22200b.go
new file mode 100644
index 0000000..ce20923
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22200b.go
@@ -0,0 +1,28 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !386,!amd64p32,!arm,!mips,!mipsle
+
+package p
+
+func f3(x *[1 << 31]byte) byte { // GC_ERROR "stack frame too large"
+ for _, b := range *x {
+ return b
+ }
+ return 0
+}
+func f4(x *[1 << 32]byte) byte { // GC_ERROR "stack frame too large"
+ for _, b := range *x {
+ return b
+ }
+ return 0
+}
+func f5(x *[1 << 33]byte) byte { // GC_ERROR "stack frame too large"
+ for _, b := range *x {
+ return b
+ }
+ return 0
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22326.go b/gcc/testsuite/go.test/test/fixedbugs/issue22326.go
new file mode 100644
index 0000000..a675655
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22326.go
@@ -0,0 +1,25 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var (
+ _ = d
+ _ = f("_", c, b)
+ a = f("a")
+ b = f("b")
+ c = f("c")
+ d = f("d")
+)
+
+func f(s string, rest ...int) int {
+ print(s)
+ return 0
+}
+
+func main() {
+ println()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22326.out b/gcc/testsuite/go.test/test/fixedbugs/issue22326.out
new file mode 100644
index 0000000..f020438
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22326.out
@@ -0,0 +1 @@
+abc_d
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22327.go b/gcc/testsuite/go.test/test/fixedbugs/issue22327.go
new file mode 100644
index 0000000..7b21d83
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22327.go
@@ -0,0 +1,18 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Using a multi-result function as an argument to
+// append should compile successfully. Previously there
+// was a missing *int -> interface{} conversion that caused
+// the compiler to ICE.
+
+package p
+
+func f() ([]interface{}, *int) {
+ return nil, nil
+}
+
+var _ = append(f())
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22429.go b/gcc/testsuite/go.test/test/fixedbugs/issue22429.go
new file mode 100644
index 0000000..289b434
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22429.go
@@ -0,0 +1,18 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure SSA->assembly pass can handle SP as an index register.
+
+package p
+
+type T struct {
+ a,b,c,d float32
+}
+
+func f(a *[8]T, i,j,k int) float32 {
+ b := *a
+ return b[i].a + b[j].b + b[k].c
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22458.go b/gcc/testsuite/go.test/test/fixedbugs/issue22458.go
new file mode 100644
index 0000000..5c89929
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22458.go
@@ -0,0 +1,26 @@
+// compile
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure KeepAlive introduces a use of the spilled variable.
+
+package main
+
+import "runtime"
+
+type node struct {
+ next *node
+}
+
+var x bool
+
+func main() {
+ var head *node
+ for x {
+ head = &node{head}
+ }
+
+ runtime.KeepAlive(head)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22605.go b/gcc/testsuite/go.test/test/fixedbugs/issue22605.go
new file mode 100644
index 0000000..9e726f3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22605.go
@@ -0,0 +1,26 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// We were picking up a special noalg type from typelinks.
+
+package main
+
+import "reflect"
+
+func f(m map[string]int) int {
+ return m["a"]
+}
+
+func g(m map[[8]string]int) int {
+ t := reflect.ArrayOf(8, reflect.TypeOf(""))
+ a := reflect.New(t).Elem()
+ return m[a.Interface().([8]string)]
+}
+
+func main() {
+ m := map[[8]string]int{}
+ g(m)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22660.go b/gcc/testsuite/go.test/test/fixedbugs/issue22660.go
new file mode 100644
index 0000000..9ce9c4d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22660.go
@@ -0,0 +1,46 @@
+// +build !js,gc
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "bytes"
+ "fmt"
+ "io/ioutil"
+ "log"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "strings"
+)
+
+func main() {
+ f, err := ioutil.TempFile("", "issue22660.go")
+ if err != nil {
+ log.Fatal(err)
+ }
+ f.Close()
+ defer os.Remove(f.Name())
+
+ // path must appear in error messages even if we strip them with -trimpath
+ path := filepath.Join("users", "xxx", "go")
+ var src bytes.Buffer
+ fmt.Fprintf(&src, "//line %s:1\n", filepath.Join(path, "foo.go"))
+
+ if err := ioutil.WriteFile(f.Name(), src.Bytes(), 0660); err != nil {
+ log.Fatal(err)
+ }
+
+ out, err := exec.Command("go", "tool", "compile", fmt.Sprintf("-trimpath=%s", path), f.Name()).CombinedOutput()
+ if err == nil {
+ log.Fatalf("expected compiling %s to fail", f.Name())
+ }
+
+ if !strings.HasPrefix(string(out), path) {
+ log.Fatalf("expected full path (%s) in error message, got:\n%s", path, out)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22683.go b/gcc/testsuite/go.test/test/fixedbugs/issue22683.go
new file mode 100644
index 0000000..47c7f65
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22683.go
@@ -0,0 +1,30 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+)
+
+type foo struct {
+ bar [1]*int
+}
+
+func main() {
+ ch := make(chan foo, 2)
+ var a int
+ var b [1]*int
+ b[0] = &a
+ ch <- foo{bar: b}
+ close(ch)
+
+ for v := range ch {
+ for i := 0; i < 1; i++ {
+ fmt.Println(v.bar[0] != nil)
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22683.out b/gcc/testsuite/go.test/test/fixedbugs/issue22683.out
new file mode 100644
index 0000000..27ba77d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22683.out
@@ -0,0 +1 @@
+true
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22781.go b/gcc/testsuite/go.test/test/fixedbugs/issue22781.go
new file mode 100644
index 0000000..5ad8239
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22781.go
@@ -0,0 +1,29 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "runtime/debug"
+
+type T struct {
+ // >= 16 bytes to avoid tiny alloc.
+ a, b int
+}
+
+func main() {
+ debug.SetGCPercent(1)
+ for i := 0; i < 100000; i++ {
+ m := make(map[*T]struct{}, 0)
+ for j := 0; j < 20; j++ {
+ // During the call to mapassign_fast64, the key argument
+ // was incorrectly treated as a uint64. If the stack was
+ // scanned during that call, the only pointer to k was
+ // missed, leading to *k being collected prematurely.
+ k := new(T)
+ m[k] = struct{}{}
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22794.go b/gcc/testsuite/go.test/test/fixedbugs/issue22794.go
new file mode 100644
index 0000000..2ac31ef
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22794.go
@@ -0,0 +1,20 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+type it struct {
+ Floats bool
+ inner string
+}
+
+func main() {
+ i1 := it{Floats: true}
+ if i1.floats { // ERROR "(type it .* field or method floats, but does have Floats)|undefined field or method"
+ }
+ i2 := &it{floats: false} // ERROR "(but does have Floats)|unknown field|declared but not used"
+ _ = &it{InneR: "foo"} // ERROR "(but does have inner)|unknown field"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22822.go b/gcc/testsuite/go.test/test/fixedbugs/issue22822.go
new file mode 100644
index 0000000..ea53452
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22822.go
@@ -0,0 +1,16 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check that calling a function shadowing a built-in provides a good
+// error message.
+
+package main
+
+func F() {
+ slice := []int{1, 2, 3}
+ len := int(2)
+ println(len(slice)) // ERROR "cannot call non-function len .type int., declared at|expected function"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22881.go b/gcc/testsuite/go.test/test/fixedbugs/issue22881.go
new file mode 100644
index 0000000..645f2d4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22881.go
@@ -0,0 +1,117 @@
+// run
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test to make sure RHS is evaluated before map insert is started.
+// The RHS panics in all of these cases.
+
+package main
+
+import "fmt"
+
+func main() {
+ for i, f := range []func(map[int]int){
+ f0, f1, f2, f3, f4, f5, f6, f7, f8,
+ } {
+ m := map[int]int{}
+ func() { // wrapper to scope the defer.
+ defer func() {
+ recover()
+ }()
+ f(m) // Will panic. Shouldn't modify m.
+ fmt.Printf("RHS didn't panic, case f%d\n", i)
+ }()
+ if len(m) != 0 {
+ fmt.Printf("map insert happened, case f%d\n", i)
+ }
+ }
+
+ // Append slice.
+ for i, f := range []func(map[int][]int){
+ fa0, fa1, fa2, fa3,
+ } {
+ m := map[int][]int{}
+ func() { // wrapper to scope the defer.
+ defer func() {
+ recover()
+ }()
+ f(m) // Will panic. Shouldn't modify m.
+ fmt.Printf("RHS didn't panic, case fa%d\n", i)
+ }()
+ if len(m) != 0 {
+ fmt.Printf("map insert happened, case fa%d\n", i)
+ }
+ }
+}
+
+func f0(m map[int]int) {
+ var p *int
+ m[0] = *p
+}
+
+func f1(m map[int]int) {
+ var p *int
+ m[0] += *p
+}
+
+func f2(m map[int]int) {
+ var p *int
+ sink, m[0] = sink, *p
+}
+
+func f3(m map[int]int) {
+ var p *chan int
+ m[0], sink = <-(*p)
+}
+
+func f4(m map[int]int) {
+ var p *interface{}
+ m[0], sink = (*p).(int)
+}
+
+func f5(m map[int]int) {
+ var p *map[int]int
+ m[0], sink = (*p)[0]
+}
+
+func f6(m map[int]int) {
+ var z int
+ m[0] /= z
+}
+
+func f7(m map[int]int) {
+ var a []int
+ m[0] = a[0]
+}
+
+func f8(m map[int]int) {
+ var z int
+ m[0] %= z
+}
+
+func fa0(m map[int][]int) {
+ var p *int
+ m[0] = append(m[0], *p)
+}
+
+func fa1(m map[int][]int) {
+ var p *int
+ sink, m[0] = !sink, append(m[0], *p)
+}
+
+func fa2(m map[int][]int) {
+ var p *int
+ m[0], _ = append(m[0], 0), *p
+}
+
+func fa3(m map[int][]int) {
+ // OSLICE has similar in-place-reassignment
+ // optimizations as OAPPEND, but we need to make sure
+ // to *not* optimize them, because we can't guarantee
+ // the slice indices are within bounds.
+ m[0] = m[0][:1]
+}
+
+var sink bool
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22904.go b/gcc/testsuite/go.test/test/fixedbugs/issue22904.go
new file mode 100644
index 0000000..02459c6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22904.go
@@ -0,0 +1,19 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 22904: Make sure the compiler emits a proper error message about
+// invalid recursive types rather than crashing.
+
+package p
+
+type a struct{ b } // ERROR "invalid recursive type"
+type b struct{ a } // GCCGO_ERROR "invalid recursive type"
+
+var x interface{}
+
+func f() {
+ x = a{}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22921.go b/gcc/testsuite/go.test/test/fixedbugs/issue22921.go
new file mode 100644
index 0000000..5336ba3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22921.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "bytes"
+
+type _ struct{ bytes.nonexist } // ERROR "unexported|undefined"
+
+type _ interface{ bytes.nonexist } // ERROR "unexported|undefined|expected signature or type name"
+
+func main() {
+ var _ bytes.Buffer
+ var _ bytes.buffer // ERROR "unexported|undefined"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22941.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue22941.dir/a.go
new file mode 100644
index 0000000..7a4ede4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22941.dir/a.go
@@ -0,0 +1,7 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package q
+
+type P int
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22941.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue22941.dir/b.go
new file mode 100644
index 0000000..87d59a6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22941.dir/b.go
@@ -0,0 +1,30 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+import q "./a"
+
+type T struct {
+ X *q.P
+}
+
+func F(in, out *T) {
+ *out = *in
+ if in.X != nil {
+ in, out := &in.X, &out.X
+ if *in == nil {
+ *out = nil
+ } else {
+ *out = new(q.P)
+ **out = **in
+ }
+ }
+ return
+}
+
+//go:noinline
+func G(x, y *T) {
+ F(x, y)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22941.dir/main.go b/gcc/testsuite/go.test/test/fixedbugs/issue22941.dir/main.go
new file mode 100644
index 0000000..84666ad
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22941.dir/main.go
@@ -0,0 +1,15 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import p "./b"
+
+var G int
+
+func main() {
+ if G == 101 {
+ p.G(nil, nil)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22941.go b/gcc/testsuite/go.test/test/fixedbugs/issue22941.go
new file mode 100644
index 0000000..c3732c3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22941.go
@@ -0,0 +1,7 @@
+// rundir
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22962.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue22962.dir/a.go
new file mode 100644
index 0000000..7257d7d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22962.dir/a.go
@@ -0,0 +1,11 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+func F() {
+ if x := 0; false {
+ _ = x
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22962.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue22962.dir/b.go
new file mode 100644
index 0000000..e1568c8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22962.dir/b.go
@@ -0,0 +1,9 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "a"
+
+var V = func() { a.F() }
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue22962.go b/gcc/testsuite/go.test/test/fixedbugs/issue22962.go
new file mode 100644
index 0000000..8000a52
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue22962.go
@@ -0,0 +1,7 @@
+// compiledir
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23093.go b/gcc/testsuite/go.test/test/fixedbugs/issue23093.go
new file mode 100644
index 0000000..7b2865c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23093.go
@@ -0,0 +1,9 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+var f = func() { f() } // ERROR "initialization loop|initialization expression for .*f.* depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23116.go b/gcc/testsuite/go.test/test/fixedbugs/issue23116.go
new file mode 100644
index 0000000..b4b36d4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23116.go
@@ -0,0 +1,15 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f(x interface{}) {
+ switch x.(type) {
+ }
+
+ switch t := x.(type) { // ERROR "declared but not used"
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23179.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue23179.dir/a.go
new file mode 100644
index 0000000..3d2816f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23179.dir/a.go
@@ -0,0 +1,13 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type Large struct {
+ x [256]int
+}
+
+func F(x int, _ int, _ bool, _ Large) int {
+ return x
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23179.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue23179.dir/b.go
new file mode 100644
index 0000000..bec3d15
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23179.dir/b.go
@@ -0,0 +1,11 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "a"
+
+func G(x int) int {
+ return a.F(x, 1, false, a.Large{})
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23179.go b/gcc/testsuite/go.test/test/fixedbugs/issue23179.go
new file mode 100644
index 0000000..8000a52
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23179.go
@@ -0,0 +1,7 @@
+// compiledir
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23298.go b/gcc/testsuite/go.test/test/fixedbugs/issue23298.go
new file mode 100644
index 0000000..be00a8e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23298.go
@@ -0,0 +1,14 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type T string
+
+var (
+ t = T("T")
+ r = []rune(t)
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23305.go b/gcc/testsuite/go.test/test/fixedbugs/issue23305.go
new file mode 100644
index 0000000..28f400c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23305.go
@@ -0,0 +1,28 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func mask1(a, b uint64) uint64 {
+ op1 := int32(a)
+ op2 := int32(b)
+ return uint64(uint32(op1 / op2))
+}
+
+var mask2 = mask1
+
+func main() {
+ res1 := mask1(0x1, 0xfffffffeffffffff)
+ res2 := mask2(0x1, 0xfffffffeffffffff)
+ if res1 != 0xffffffff {
+ println("got", res1, "want", 0xffffffff)
+ panic("FAIL")
+ }
+ if res2 != 0xffffffff {
+ println("got", res2, "want", 0xffffffff)
+ panic("FAIL")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23311.dir/main.go b/gcc/testsuite/go.test/test/fixedbugs/issue23311.dir/main.go
new file mode 100644
index 0000000..fa4cf76
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23311.dir/main.go
@@ -0,0 +1,14 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import _ "unsafe" // for linkname
+
+//go:linkname f runtime.GC
+func f()
+
+func main() {
+ f()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23311.go b/gcc/testsuite/go.test/test/fixedbugs/issue23311.go
new file mode 100644
index 0000000..128cf9d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23311.go
@@ -0,0 +1,7 @@
+// compiledir
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23414.go b/gcc/testsuite/go.test/test/fixedbugs/issue23414.go
new file mode 100644
index 0000000..7ef3d83
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23414.go
@@ -0,0 +1,13 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+var x struct{}
+
+func f() bool {
+ return x == x && x == x
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23504.go b/gcc/testsuite/go.test/test/fixedbugs/issue23504.go
new file mode 100644
index 0000000..77f3184
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23504.go
@@ -0,0 +1,15 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f() {
+ var B bool
+ B2 := (B || B && !B) && !B
+ B3 := B2 || B
+ for (B3 || B2) && !B2 && B {
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23521.go b/gcc/testsuite/go.test/test/fixedbugs/issue23521.go
new file mode 100644
index 0000000..159e032
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23521.go
@@ -0,0 +1,43 @@
+// errorcheck -0 -m
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 23521: improve early DCE for if without explicit else.
+
+package p
+
+//go:noinline
+func nonleaf() {}
+
+const truth = true
+
+func f() int { // ERROR "can inline f"
+ if truth {
+ return 0
+ }
+ // If everything below is removed, as it should,
+ // function f should be inlineable.
+ nonleaf()
+ for {
+ panic("")
+ }
+}
+
+func g() int { // ERROR "can inline g"
+ return f() // ERROR "inlining call to f"
+}
+
+func f2() int { // ERROR "can inline f2"
+ if !truth {
+ nonleaf()
+ } else {
+ return 0
+ }
+ panic("")
+}
+
+func g2() int { // ERROR "can inline g2"
+ return f2() // ERROR "inlining call to f2"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23522.go b/gcc/testsuite/go.test/test/fixedbugs/issue23522.go
new file mode 100644
index 0000000..cace86c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23522.go
@@ -0,0 +1,46 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "math"
+)
+
+type S struct {
+ u int64
+ n int32
+}
+
+func F1(f float64) *S {
+ s := f
+ pf := math.Copysign(f, 1)
+ u := math.Floor(pf)
+ return &S{
+ u: int64(math.Copysign(u, s)),
+ n: int32(math.Copysign((pf-u)*1e9, s)),
+ }
+}
+
+func F2(f float64) *S {
+ s := f
+ f = math.Copysign(f, 1)
+ u := math.Floor(f)
+ return &S{
+ u: int64(math.Copysign(u, s)),
+ n: int32(math.Copysign((f-u)*1e9, s)),
+ }
+}
+
+func main() {
+ s1 := F1(-1)
+ s2 := F2(-1)
+ if *s1 != *s2 {
+ println("F1:", s1.u, s1.n)
+ println("F2:", s2.u, s2.n)
+ panic("different")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23545.go b/gcc/testsuite/go.test/test/fixedbugs/issue23545.go
new file mode 100644
index 0000000..d97f64a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23545.go
@@ -0,0 +1,31 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 23545: gccgo didn't lower array comparison to
+// proper equality function in some case.
+
+package main
+
+func main() {
+ if a := Get(); a != dummyID(1234) {
+ panic("FAIL")
+ }
+}
+
+func dummyID(x int) [Size]interface{} {
+ var out [Size]interface{}
+ out[0] = x
+ return out
+}
+
+const Size = 32
+
+type OutputID [Size]interface{}
+
+//go:noinline
+func Get() OutputID {
+ return dummyID(1234)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23546.go b/gcc/testsuite/go.test/test/fixedbugs/issue23546.go
new file mode 100644
index 0000000..818f0cd
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23546.go
@@ -0,0 +1,22 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 23546: type..eq function not generated when
+// DWARF is disabled.
+
+package main
+
+func main() {
+ use(f() == f())
+}
+
+func f() [2]interface{} {
+ var out [2]interface{}
+ return out
+}
+
+//go:noinline
+func use(bool) {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23586.go b/gcc/testsuite/go.test/test/fixedbugs/issue23586.go
new file mode 100644
index 0000000..c2d4c9f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23586.go
@@ -0,0 +1,24 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that we type-check deferred/go functions even
+// if they are not called (a common error). Specifically,
+// we don't want to see errors such as import or variable
+// declared but not used.
+
+package p
+
+import (
+ "fmt"
+ "math"
+)
+
+func f() {
+ var i int
+ defer func() { fmt.Println() } // ERROR "must be function call"
+ go func() { _ = math.Sin(0) } // ERROR "must be function call"
+ go func() { _ = i} // ERROR "must be function call"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23719.go b/gcc/testsuite/go.test/test/fixedbugs/issue23719.go
new file mode 100644
index 0000000..c97e636
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23719.go
@@ -0,0 +1,42 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ v1 := [2]int32{-1, 88}
+ v2 := [2]int32{-1, 99}
+ if v1 == v2 {
+ panic("bad comparison")
+ }
+
+ w1 := [2]int16{-1, 88}
+ w2 := [2]int16{-1, 99}
+ if w1 == w2 {
+ panic("bad comparison")
+ }
+ x1 := [4]int16{-1, 88, 88, 88}
+ x2 := [4]int16{-1, 99, 99, 99}
+ if x1 == x2 {
+ panic("bad comparison")
+ }
+
+ a1 := [2]int8{-1, 88}
+ a2 := [2]int8{-1, 99}
+ if a1 == a2 {
+ panic("bad comparison")
+ }
+ b1 := [4]int8{-1, 88, 88, 88}
+ b2 := [4]int8{-1, 99, 99, 99}
+ if b1 == b2 {
+ panic("bad comparison")
+ }
+ c1 := [8]int8{-1, 88, 88, 88, 88, 88, 88, 88}
+ c2 := [8]int8{-1, 99, 99, 99, 99, 99, 99, 99}
+ if c1 == c2 {
+ panic("bad comparison")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23732.go b/gcc/testsuite/go.test/test/fixedbugs/issue23732.go
new file mode 100644
index 0000000..db2d182
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23732.go
@@ -0,0 +1,42 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 23732: Give better details about which struct
+// initializer has the wrong number of values.
+
+package main
+
+type Foo struct {
+ A int
+ B int
+ C interface{}
+ Bar
+}
+
+type Bar struct {
+ A string
+}
+
+func main() {
+ _ = Foo{ // GCCGO_ERROR "too few expressions"
+ 1,
+ 2,
+ 3, // GC_ERROR "too few values in Foo{...}"
+ }
+
+ _ = Foo{
+ 1,
+ 2,
+ 3,
+ Bar{"A", "B"}, // ERROR "too many values in Bar{...}|too many expressions"
+ }
+
+ _ = Foo{ // GCCGO_ERROR "too few expressions"
+ 1,
+ 2,
+ Bar{"A", "B"}, // ERROR "too many values in Bar{...}|too many expressions" "too few values in Foo{...}"
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23734.go b/gcc/testsuite/go.test/test/fixedbugs/issue23734.go
new file mode 100644
index 0000000..dd5869b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23734.go
@@ -0,0 +1,32 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ m := map[interface{}]int{}
+ k := []int{}
+
+ mustPanic(func() {
+ _ = m[k]
+ })
+ mustPanic(func() {
+ _, _ = m[k]
+ })
+ mustPanic(func() {
+ delete(m, k)
+ })
+}
+
+func mustPanic(f func()) {
+ defer func() {
+ r := recover()
+ if r == nil {
+ panic("didn't panic")
+ }
+ }()
+ f()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23780.go b/gcc/testsuite/go.test/test/fixedbugs/issue23780.go
new file mode 100644
index 0000000..71fc2d9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23780.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f() {
+ _ = []byte{1 << 30: 1}
+}
+
+func g() {
+ sink = []byte{1 << 30: 1}
+}
+
+var sink []byte
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23781.go b/gcc/testsuite/go.test/test/fixedbugs/issue23781.go
new file mode 100644
index 0000000..5c03cf7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23781.go
@@ -0,0 +1,10 @@
+// +build amd64
+// compile
+
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+var _ = []int{1 << 31: 1} // ok on machines with 64bit int
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23812.go b/gcc/testsuite/go.test/test/fixedbugs/issue23812.go
new file mode 100644
index 0000000..0a40deb
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23812.go
@@ -0,0 +1,34 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "fmt"
+
+func main() {
+ want := int32(0x3edae8)
+ got := foo(1)
+ if want != got {
+ panic(fmt.Sprintf("want %x, got %x", want, got))
+ }
+}
+
+func foo(a int32) int32 {
+ return shr1(int32(shr2(int64(0x14ff6e2207db5d1f), int(a))), 4)
+}
+
+func shr1(n int32, m int) int32 { return n >> uint(m) }
+
+func shr2(n int64, m int) int64 {
+ if m < 0 {
+ m = -m
+ }
+ if m >= 64 {
+ return n
+ }
+
+ return n >> uint(m)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue23823.go b/gcc/testsuite/go.test/test/fixedbugs/issue23823.go
new file mode 100644
index 0000000..067a8f1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue23823.go
@@ -0,0 +1,16 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type I1 = interface {
+ I2
+}
+
+// BAD: type loop should mention I1; see also #41669
+type I2 interface { // GC_ERROR "invalid recursive type I2\n\tLINE: I2 refers to\n\tLINE: I2$"
+ I1 // GCCGO_ERROR "invalid recursive interface"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24120.go b/gcc/testsuite/go.test/test/fixedbugs/issue24120.go
new file mode 100644
index 0000000..6c7d871
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24120.go
@@ -0,0 +1,14 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+var F func(int)
+
+func G() {
+ if F(func() int { return 1 }()); false {
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24173.go b/gcc/testsuite/go.test/test/fixedbugs/issue24173.go
new file mode 100644
index 0000000..4c19e05
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24173.go
@@ -0,0 +1,19 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type arrayAlias = [10]int
+type mapAlias = map[int]int
+type sliceAlias = []int
+type structAlias = struct{}
+
+func Exported() {
+ _ = arrayAlias{}
+ _ = mapAlias{}
+ _ = sliceAlias{}
+ _ = structAlias{}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24187.go b/gcc/testsuite/go.test/test/fixedbugs/issue24187.go
new file mode 100644
index 0000000..45fc9297
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24187.go
@@ -0,0 +1,33 @@
+// +build amd64p32
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "bytes"
+ "fmt"
+ "unsafe"
+)
+
+func main() {
+ b := make([]byte, 128)
+ for i := range b {
+ b[i] = 1
+ }
+ if bytes.IndexByte(b, 0) != -1 {
+ panic("found 0")
+ }
+ for i := range b {
+ b[i] = 0
+ c := b
+ *(*int)(unsafe.Pointer(uintptr(unsafe.Pointer(&c)) + unsafe.Sizeof(uintptr(0)))) = 1<<31 - 1
+ if bytes.IndexByte(c, 0) != i {
+ panic(fmt.Sprintf("missing 0 at %d\n", i))
+ }
+ b[i] = 1
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24419.go b/gcc/testsuite/go.test/test/fixedbugs/issue24419.go
new file mode 100644
index 0000000..73b7783
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24419.go
@@ -0,0 +1,51 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "bytes"
+ "strings"
+)
+
+func growstack(n int) {
+ if n > 0 {
+ growstack(n - 1)
+ }
+}
+
+func main() {
+ c := make(chan struct{})
+ go compare(c)
+ go equal(c)
+ go indexByte(c)
+ go indexByteString(c)
+ <-c
+ <-c
+ <-c
+ <-c
+}
+
+func compare(c chan struct{}) {
+ defer bytes.Compare(nil, nil)
+ growstack(10000)
+ c <- struct{}{}
+}
+func equal(c chan struct{}) {
+ defer bytes.Equal(nil, nil)
+ growstack(10000)
+ c <- struct{}{}
+}
+func indexByte(c chan struct{}) {
+ defer bytes.IndexByte(nil, 0)
+ growstack(10000)
+ c <- struct{}{}
+}
+func indexByteString(c chan struct{}) {
+ defer strings.IndexByte("", 0)
+ growstack(10000)
+ c <- struct{}{}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24449.go b/gcc/testsuite/go.test/test/fixedbugs/issue24449.go
new file mode 100644
index 0000000..b236645
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24449.go
@@ -0,0 +1,62 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "sync/atomic"
+)
+
+var cnt32 int32
+
+//go:noinline
+func test32(a, b []int) bool {
+ // Try to generate flag value, issue atomic
+ // adds and then re-use the flag value to see if
+ // the atomic add has clobbered them.
+ atomic.AddInt32(&cnt32, 1)
+ if len(a) == len(b) {
+ atomic.AddInt32(&cnt32, 2)
+ }
+ atomic.AddInt32(&cnt32, 4)
+ if len(a) >= len(b) {
+ atomic.AddInt32(&cnt32, 8)
+ }
+ if len(a) <= len(b) {
+ atomic.AddInt32(&cnt32, 16)
+ }
+ return atomic.LoadInt32(&cnt32) == 31
+}
+
+var cnt64 int64
+
+//go:noinline
+func test64(a, b []int) bool {
+ // Try to generate flag value, issue atomic
+ // adds and then re-use the flag value to see if
+ // the atomic add has clobbered them.
+ atomic.AddInt64(&cnt64, 1)
+ if len(a) == len(b) {
+ atomic.AddInt64(&cnt64, 2)
+ }
+ atomic.AddInt64(&cnt64, 4)
+ if len(a) >= len(b) {
+ atomic.AddInt64(&cnt64, 8)
+ }
+ if len(a) <= len(b) {
+ atomic.AddInt64(&cnt64, 16)
+ }
+ return atomic.LoadInt64(&cnt64) == 31
+}
+
+func main() {
+ if !test32([]int{}, []int{}) {
+ panic("test32")
+ }
+ if !test64([]int{}, []int{}) {
+ panic("test64")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24470.go b/gcc/testsuite/go.test/test/fixedbugs/issue24470.go
new file mode 100644
index 0000000..d0e5e23
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24470.go
@@ -0,0 +1,15 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that we get "use of .(type) outside type switch"
+// before any other (misleading) errors. Test case from issue.
+
+package p
+
+func f(i interface{}) {
+ if x, ok := i.(type); ok { // ERROR "outside type switch"
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24488.go b/gcc/testsuite/go.test/test/fixedbugs/issue24488.go
new file mode 100644
index 0000000..b3deab4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24488.go
@@ -0,0 +1,38 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "runtime"
+ "strings"
+)
+
+type Func func()
+
+func (f Func) Foo() {
+ if f != nil {
+ f()
+ }
+}
+
+func (f Func) Bar() {
+ if f != nil {
+ f()
+ }
+ buf := make([]byte, 4000)
+ n := runtime.Stack(buf, true)
+ s := string(buf[:n])
+ if strings.Contains(s, "-fm") {
+ panic("wrapper present in stack trace:\n" + s)
+ }
+}
+
+func main() {
+ foo := Func(func() {})
+ foo = foo.Bar
+ foo.Foo()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24503.go b/gcc/testsuite/go.test/test/fixedbugs/issue24503.go
new file mode 100644
index 0000000..933ce70
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24503.go
@@ -0,0 +1,28 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 24503: Handle == and != of addresses taken of symbols consistently.
+
+package main
+
+func test() string {
+ type test struct{}
+ o1 := test{}
+ o2 := test{}
+ if &o1 == &o2 {
+ return "equal"
+ }
+ if &o1 != &o2 {
+ return "unequal"
+ }
+ return "failed"
+}
+
+func main() {
+ if test() == "failed" {
+ panic("expected either 'equal' or 'unequal'")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24547.go b/gcc/testsuite/go.test/test/fixedbugs/issue24547.go
new file mode 100644
index 0000000..47d94a9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24547.go
@@ -0,0 +1,46 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// When computing method sets with shadowed methods, make sure we
+// compute whether a method promotion involved a pointer traversal
+// based on the promoted method, not the shadowed method.
+
+package main
+
+import (
+ "bytes"
+ "fmt"
+)
+
+type mystruct struct {
+ f int
+}
+
+func (t mystruct) String() string {
+ return "FAIL"
+}
+
+func main() {
+ type deep struct {
+ mystruct
+ }
+ s := struct {
+ deep
+ *bytes.Buffer
+ }{
+ deep{},
+ bytes.NewBufferString("ok"),
+ }
+
+ if got := s.String(); got != "ok" {
+ panic(got)
+ }
+
+ var i fmt.Stringer = s
+ if got := i.String(); got != "ok" {
+ panic(got)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24760.go b/gcc/testsuite/go.test/test/fixedbugs/issue24760.go
new file mode 100644
index 0000000..cd6f124
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24760.go
@@ -0,0 +1,12 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+import "unsafe"
+
+var _ = string([]byte(nil))[0]
+var _ = uintptr(unsafe.Pointer(uintptr(1))) << 100
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24763.go b/gcc/testsuite/go.test/test/fixedbugs/issue24763.go
new file mode 100644
index 0000000..623ab48
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24763.go
@@ -0,0 +1,21 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ var s uint
+ var x = interface{}(1<<s + 1<<s) // compiler must not crash here
+ if x.(int) != 2 {
+ panic("x not int or not 2")
+ }
+
+ var y interface{}
+ y = 1<<s + 1 // compiler must not crash here
+ if y.(int) != 2 {
+ panic("y not int or not 2")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24799.go b/gcc/testsuite/go.test/test/fixedbugs/issue24799.go
new file mode 100644
index 0000000..c805c86
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24799.go
@@ -0,0 +1,58 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Loads of 8 byte go.strings cannot use DS relocation
+// in case the alignment is not a multiple of 4.
+
+package main
+
+import (
+ "fmt"
+)
+
+type Level string
+
+// The following are all go.strings. A link time error can
+// occur if an 8 byte load is used to load a go.string that is
+// not aligned to 4 bytes due to the type of relocation that
+// is generated for the instruction. A fix was made to avoid
+// generating an instruction with DS relocation for go.strings
+// since their alignment is not known until link time.
+
+// This problem only affects go.string since other types have
+// correct alignment.
+
+const (
+ LevelBad Level = "badvals"
+ LevelNone Level = "No"
+ LevelMetadata Level = "Metadata"
+ LevelRequest Level = "Request"
+ LevelRequestResponse Level = "RequestResponse"
+)
+
+func ordLevel(l Level) int {
+ switch l {
+ case LevelMetadata:
+ return 1
+ case LevelRequest:
+ return 2
+ case LevelRequestResponse:
+ return 3
+ default:
+ return 0
+ }
+}
+
+//go:noinline
+func test(l Level) {
+ if ordLevel(l) < ordLevel(LevelMetadata) {
+ fmt.Printf("OK\n")
+ }
+}
+
+func main() {
+ test(LevelMetadata)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24801.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue24801.dir/a.go
new file mode 100644
index 0000000..58e6240
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24801.dir/a.go
@@ -0,0 +1,9 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type main int
+
+var X main
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24801.dir/main.go b/gcc/testsuite/go.test/test/fixedbugs/issue24801.dir/main.go
new file mode 100644
index 0000000..5c7db7b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24801.dir/main.go
@@ -0,0 +1,11 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "./a"
+
+func main() {
+ a.X = 1
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24801.go b/gcc/testsuite/go.test/test/fixedbugs/issue24801.go
new file mode 100644
index 0000000..9b05db8e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24801.go
@@ -0,0 +1,5 @@
+// compiledir
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24817.go b/gcc/testsuite/go.test/test/fixedbugs/issue24817.go
new file mode 100644
index 0000000..ba2a138
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24817.go
@@ -0,0 +1,64 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check all ways to compare a non-constant string to the empty string.
+
+package main
+
+import (
+ "fmt"
+ "os"
+)
+
+var (
+ s = "abc"
+ e = ""
+ failed bool
+)
+
+func main() {
+ want(true, "" < s, `"" < s`)
+ want(false, s < "", `s < ""`)
+ want(false, "" < e, `"" < e`)
+ want(false, e < "", `e < ""`)
+
+ want(true, "" <= s, `"" <= s`)
+ want(false, s <= "", `s <= ""`)
+ want(true, "" <= e, `"" <= e`)
+ want(true, e <= "", `e <= ""`)
+
+ want(false, "" > s, `"" > s`)
+ want(true, s > "", `s > ""`)
+ want(false, "" > e, `"" > e`)
+ want(false, e > "", `e > ""`)
+
+ want(false, "" >= s, `"" >= s`)
+ want(true, s >= "", `s >= ""`)
+ want(true, "" >= e, `"" >= e`)
+ want(true, e >= "", `e >= ""`)
+
+ want(false, "" == s, `"" == s`)
+ want(false, s == "", `s == ""`)
+ want(true, "" == e, `"" == e`)
+ want(true, e == "", `e == ""`)
+
+ want(true, "" != s, `"" != s`)
+ want(true, s != "", `s != ""`)
+ want(false, "" != e, `"" != e`)
+ want(false, e != "", `e != ""`)
+
+ if failed {
+ os.Exit(1)
+ }
+}
+
+//go:noinline
+func want(b bool, have bool, msg string) {
+ if b != have {
+ fmt.Println(msg)
+ failed = true
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24937.go b/gcc/testsuite/go.test/test/fixedbugs/issue24937.go
new file mode 100644
index 0000000..7d8460f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24937.go
@@ -0,0 +1,15 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ x := []byte{'a'}
+ switch string(x) {
+ case func() string { x[0] = 'b'; return "b" }():
+ panic("FAIL")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue24939.go b/gcc/testsuite/go.test/test/fixedbugs/issue24939.go
new file mode 100644
index 0000000..0ae6f2b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue24939.go
@@ -0,0 +1,23 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+type T interface {
+ M(P)
+}
+
+type M interface {
+ F() P
+}
+
+type P = interface {
+ // The compiler cannot handle this case. Disabled for now.
+ // See issue #25838.
+ // I() M
+}
+
+func main() {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue25006.go b/gcc/testsuite/go.test/test/fixedbugs/issue25006.go
new file mode 100644
index 0000000..570fdca
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue25006.go
@@ -0,0 +1,30 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func spin() {
+ var i int
+ var b bool
+
+ switch 1 {
+ case 0:
+ i = 1
+ }
+ switch 1 {
+ case i:
+ default:
+ i = 1
+ b = !b && (b && !b) && b
+ }
+ switch false {
+ case false:
+ i = 3 + -i
+ switch 0 {
+ case 1 - i:
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue25101.go b/gcc/testsuite/go.test/test/fixedbugs/issue25101.go
new file mode 100644
index 0000000..4fd6bed
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue25101.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Indexed export format must not crash when writing
+// the anonymous parameter for m.
+
+package p
+
+var x interface {
+ m(int)
+}
+
+var M = x.m
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue25322.go b/gcc/testsuite/go.test/test/fixedbugs/issue25322.go
new file mode 100644
index 0000000..ee4ff53
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue25322.go
@@ -0,0 +1,23 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Missing zero extension when converting a float32
+// to a uint64.
+
+package main
+
+import (
+ "fmt"
+ "math"
+)
+
+func Foo(v float32) {
+ fmt.Printf("%x\n", uint64(math.Float32bits(v)))
+}
+
+func main() {
+ Foo(2.0)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue25322.out b/gcc/testsuite/go.test/test/fixedbugs/issue25322.out
new file mode 100644
index 0000000..52f3f6a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue25322.out
@@ -0,0 +1 @@
+40000000
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue25507.go b/gcc/testsuite/go.test/test/fixedbugs/issue25507.go
new file mode 100644
index 0000000..9143a73
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue25507.go
@@ -0,0 +1,29 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// We have a limit of 1GB for stack frames.
+// Test that we extend that limit to include large argument/return areas.
+// Argument/return areas are part of the parent frame, not the frame itself,
+// so they need to be handled separately.
+
+package main
+
+// >1GB to trigger failure, <2GB to work on 32-bit platforms.
+type large struct {
+ b [1500000000]byte
+}
+
+func (x large) f1() int { // GC_ERROR "stack frame too large"
+ return 5
+}
+
+func f2(x large) int { // GC_ERROR "stack frame too large"
+ return 5
+}
+
+func f3() (x large, i int) { // GC_ERROR "stack frame too large"
+ return
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue25516.go b/gcc/testsuite/go.test/test/fixedbugs/issue25516.go
new file mode 100644
index 0000000..8326ef9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue25516.go
@@ -0,0 +1,26 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure dead write barriers are handled correctly.
+
+package main
+
+func f(p **int) {
+ // The trick here is to eliminate the block containing the write barrier,
+ // but only after the write barrier branches are inserted.
+ // This requires some delicate code.
+ i := 0
+ var b []bool
+ var s string
+ for true {
+ if b[i] {
+ var a []string
+ s = a[len(s)]
+ i = 0
+ }
+ *p = nil
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue25727.go b/gcc/testsuite/go.test/test/fixedbugs/issue25727.go
new file mode 100644
index 0000000..936b9f8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue25727.go
@@ -0,0 +1,21 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "net/http"
+
+var s = http.Server{}
+var _ = s.doneChan // ERROR "s.doneChan undefined .cannot refer to unexported field or method doneChan.$|unexported field or method"
+var _ = s.DoneChan // ERROR "s.DoneChan undefined .type http.Server has no field or method DoneChan.$|undefined field or method"
+var _ = http.Server{tlsConfig: nil} // ERROR "unknown field 'tlsConfig' in struct literal.+ .but does have TLSConfig.$|unknown field .?tlsConfig.? in .?http.Server"
+var _ = http.Server{DoneChan: nil} // ERROR "unknown field 'DoneChan' in struct literal of type http.Server$|unknown field .?DoneChan.? in .?http.Server"
+
+type foo struct {
+ bar int
+}
+
+var _ = &foo{bAr: 10} // ERROR "unknown field 'bAr' in struct literal.+ .but does have bar.$|unknown field .?bAr.? in .?foo"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue25741.go b/gcc/testsuite/go.test/test/fixedbugs/issue25741.go
new file mode 100644
index 0000000..c76e975
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue25741.go
@@ -0,0 +1,14 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var s []int
+
+func main() {
+ i := -1
+ s[i] = 0
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue25776.go b/gcc/testsuite/go.test/test/fixedbugs/issue25776.go
new file mode 100644
index 0000000..e05c0bc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue25776.go
@@ -0,0 +1,99 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+const (
+ Upper = true
+ blas_Upper = 121
+ badTriangle = "bad triangle"
+)
+
+// Triangular represents a triangular matrix. Triangular matrices are always square.
+type Triangular interface {
+ // Triangular returns the number of rows/columns in the matrix and its
+ // orientation.
+ Tryangle() (mmmm int, kynd bool)
+ Triangle() (mmmm int, kynd bool)
+}
+
+// blas64_Triangular represents a triangular matrix using the conventional storage scheme.
+type blas64_Triangular struct {
+ Stride int
+ Uplo int
+}
+
+// TriDense represents an upper or lower triangular matrix in dense storage
+// format.
+type TriDense struct {
+ mat blas64_Triangular
+}
+
+func NewTriDense() *TriDense {
+ return &TriDense{
+ mat: blas64_Triangular{
+ Stride: 3,
+ Uplo: blas_Upper,
+ },
+ }
+}
+
+func (t *TriDense) isUpper() bool {
+ return isUpperUplo(t.mat.Uplo)
+}
+
+func (t *TriDense) triKind() bool {
+ return isUpperUplo(t.mat.Uplo)
+}
+
+func isUpperUplo(u int) bool {
+ switch u {
+ case blas_Upper:
+ return true
+ default:
+ panic(badTriangle)
+ }
+}
+
+func (t *TriDense) IsZero() bool {
+ return t.mat.Stride == 0
+}
+
+//go:noinline
+func (t *TriDense) ScaleTri(f float64, a Triangular) {
+ n, kind := a.Triangle()
+ if kind == false {
+ println("ScaleTri n, kind=", n, ", ", kind, " (FAIL, expected true)")
+ }
+}
+
+//go:noinline
+func (t *TriDense) ScaleTry(f float64, a Triangular) {
+ n, kind := a.Tryangle()
+ if kind == false {
+ println("ScaleTry n, kind=", n, ", ", kind, " (FAIL, expected true)")
+ }
+}
+
+// Triangle failed (before fix)
+func (t *TriDense) Triangle() (nnnn int, kind bool) {
+ return 3, !t.IsZero() && t.triKind()
+}
+
+// Tryangle works -- difference is not-named output parameters.
+func (t *TriDense) Tryangle() (int, bool) {
+ return 3, !t.IsZero() && t.triKind()
+}
+
+func main() {
+ ta := NewTriDense()
+ n, kind := ta.Triangle()
+ if kind == false {
+ println(" main n, kind=", n, ", ", kind, " (FAIL, expected true)")
+ }
+ ta.ScaleTri(1, ta)
+ ta.ScaleTry(1, ta)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue25897a.go b/gcc/testsuite/go.test/test/fixedbugs/issue25897a.go
new file mode 100644
index 0000000..6a724a7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue25897a.go
@@ -0,0 +1,34 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure the runtime can scan args of an unstarted goroutine
+// which starts with a reflect-generated function.
+
+package main
+
+import (
+ "reflect"
+ "runtime"
+)
+
+const N = 100
+
+func main() {
+ runtime.GOMAXPROCS(1)
+ c := make(chan bool, N)
+ for i := 0; i < N; i++ {
+ f := reflect.MakeFunc(reflect.TypeOf(((func(*int))(nil))),
+ func(args []reflect.Value) []reflect.Value {
+ c <- true
+ return nil
+ }).Interface().(func(*int))
+ go f(nil)
+ }
+ runtime.GC()
+ for i := 0; i < N; i++ {
+ <-c
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue25897b.go b/gcc/testsuite/go.test/test/fixedbugs/issue25897b.go
new file mode 100644
index 0000000..09a9673
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue25897b.go
@@ -0,0 +1,38 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure the runtime can scan args of an unstarted goroutine
+// which starts with a reflect-generated function.
+
+package main
+
+import (
+ "reflect"
+ "runtime"
+)
+
+const N = 100
+
+type T struct {
+}
+
+func (t *T) Foo(c chan bool) {
+ c <- true
+}
+
+func main() {
+ t := &T{}
+ runtime.GOMAXPROCS(1)
+ c := make(chan bool, N)
+ for i := 0; i < N; i++ {
+ f := reflect.ValueOf(t).MethodByName("Foo").Interface().(func(chan bool))
+ go f(c)
+ }
+ runtime.GC()
+ for i := 0; i < N; i++ {
+ <-c
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue25958.go b/gcc/testsuite/go.test/test/fixedbugs/issue25958.go
new file mode 100644
index 0000000..90fcee1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue25958.go
@@ -0,0 +1,17 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+// Verify that the "must be receive" error for "case done:" appears
+// on the line of the case clause, not the line of the done declaration.
+
+func f(done chan struct{}) {
+ select {
+ case done: // ERROR "must be receive|expected .*<-.* or .*=" "not used"
+ case (chan struct{})(done): // ERROR "must be receive|expected .*<-.* or .*="
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue25984.dir/p.go b/gcc/testsuite/go.test/test/fixedbugs/issue25984.dir/p.go
new file mode 100644
index 0000000..306d6a4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue25984.dir/p.go
@@ -0,0 +1,15 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type m struct {
+ link *m
+}
+
+var head *m
+
+func F(m *int) bool {
+ return head != nil
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue25984.dir/q.go b/gcc/testsuite/go.test/test/fixedbugs/issue25984.dir/q.go
new file mode 100644
index 0000000..64d2587
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue25984.dir/q.go
@@ -0,0 +1,11 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package q
+
+import "./p"
+
+func G() {
+ p.F(nil)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue25984.go b/gcc/testsuite/go.test/test/fixedbugs/issue25984.go
new file mode 100644
index 0000000..128cf9d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue25984.go
@@ -0,0 +1,7 @@
+// compiledir
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26024.go b/gcc/testsuite/go.test/test/fixedbugs/issue26024.go
new file mode 100644
index 0000000..78877b2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26024.go
@@ -0,0 +1,28 @@
+// compile
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package r
+
+// f compiles into code where no stores remain in the two successors
+// of a write barrier block; i.e., they are empty. Pre-fix, this
+// results in an unexpected input to markUnsafePoints, that expects to
+// see a pair of non-empty plain blocks.
+func f() {
+ var i int
+ var s string
+ for len(s) < len(s) {
+ i++
+ s = "a"
+ }
+ var b bool
+ var sa []string
+ for true {
+ sa = []string{""}
+ for b || i == 0 {
+ }
+ b = !b
+ _ = sa
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26043.go b/gcc/testsuite/go.test/test/fixedbugs/issue26043.go
new file mode 100644
index 0000000..fe32947
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26043.go
@@ -0,0 +1,32 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This program results in a loop inferred to increment
+// j by 0, causing bounds check elimination to attempt
+// something%0, which panics (in the bug).
+
+package q
+
+func f() {
+ var s1 string
+ var b bool
+ if b {
+ b = !b
+ s1 += "a"
+ }
+
+ var s2 string
+ var i, j int
+ if (s1 <= "") || (s2 >= "") {
+ j = len(s1[:6])
+ } else {
+ i = len("b")
+ }
+
+ for j < 0 {
+ j += i
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26097.go b/gcc/testsuite/go.test/test/fixedbugs/issue26097.go
new file mode 100644
index 0000000..eedd6ba
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26097.go
@@ -0,0 +1,47 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+//go:noinline
+func cmovClobberAX64(v1, v2 int64, x1, x2 float64) int64 {
+ r := v1
+ if x1 == x2 {
+ r = v2
+ }
+ return r
+}
+
+//go:noinline
+func cmovClobberAX32(v1, v2 int32, x1, x2 float64) int32 {
+ r := v1
+ if x1 == x2 {
+ r = v2
+ }
+ return r
+}
+
+//go:noinline
+func cmovClobberAX16(v1, v2 int16, x1, x2 float64) int16 {
+ r := v1
+ if x1 == x2 {
+ r = v2
+ }
+ return r
+}
+
+func main() {
+ if cmovClobberAX16(1, 2, 4.0, 5.0) != 1 {
+ panic("CMOVQEQF causes incorrect code")
+ }
+ if cmovClobberAX32(1, 2, 4.0, 5.0) != 1 {
+ panic("CMOVQEQF causes incorrect code")
+ }
+ if cmovClobberAX64(1, 2, 4.0, 5.0) != 1 {
+ panic("CMOVQEQF causes incorrect code")
+ }
+
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26105.go b/gcc/testsuite/go.test/test/fixedbugs/issue26105.go
new file mode 100644
index 0000000..88a5f16
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26105.go
@@ -0,0 +1,25 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Triggers a bug in writebarrier, which inserts one
+// between (first block) OpAddr x and (second block) a VarDef x,
+// which are then in the wrong order and unable to be
+// properly scheduled.
+
+package q
+
+var S interface{}
+
+func F(n int) {
+ fun := func(x int) int {
+ S = 1
+ return n
+ }
+ i := fun(([]int{})[n])
+
+ var fc [2]chan int
+ S = (([1][2]chan int{fc})[i][i])
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26116.go b/gcc/testsuite/go.test/test/fixedbugs/issue26116.go
new file mode 100644
index 0000000..8a63481
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26116.go
@@ -0,0 +1,18 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ s := []int{0, 1, 2}
+ i := 1
+ for i > 0 && s[i] != 2 {
+ i++
+ }
+ if i != 2 {
+ panic("loop didn't run")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26120.go b/gcc/testsuite/go.test/test/fixedbugs/issue26120.go
new file mode 100644
index 0000000..94bf7d9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26120.go
@@ -0,0 +1,23 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 26120: INDEX of 1-element but non-SSAable array
+// is mishandled when building SSA.
+
+package p
+
+type T [1]struct {
+ f []int
+ i, j int
+}
+
+func F() {
+ var v T
+ f := func() T {
+ return v
+ }
+ _ = []int{}[f()[0].i]
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26153.go b/gcc/testsuite/go.test/test/fixedbugs/issue26153.go
new file mode 100644
index 0000000..53f53cf
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26153.go
@@ -0,0 +1,29 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 26153. The write to ps was incorrectly
+// removed by the dead auto elimination pass.
+
+package main
+
+const hello = "hello world"
+
+func main() {
+ var s string
+ mangle(&s)
+ if s != hello {
+ panic("write incorrectly elided")
+ }
+}
+
+//go:noinline
+func mangle(ps *string) {
+ if ps == nil {
+ var s string
+ ps = &s
+ }
+ *ps = hello
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26248.go b/gcc/testsuite/go.test/test/fixedbugs/issue26248.go
new file mode 100644
index 0000000..2f04e48
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26248.go
@@ -0,0 +1,39 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 26248: gccgo miscompiles interface field expression.
+// In G().M where G returns an interface, G() is evaluated twice.
+
+package main
+
+type I interface {
+ M()
+}
+
+type T struct{}
+
+func (T) M() {}
+
+var g = 0
+
+//go:noinline
+func G() I {
+ g++
+ return T{}
+}
+
+//go:noinline
+func Use(interface{}) {}
+
+func main() {
+ x := G().M
+ Use(x)
+
+ if g != 1 {
+ println("want 1, got", g)
+ panic("FAIL")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26341.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue26341.dir/a.go
new file mode 100644
index 0000000..4fd23c7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26341.dir/a.go
@@ -0,0 +1,11 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type k int
+
+func (k) F() {}
+
+type M map[k]int
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26341.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue26341.dir/b.go
new file mode 100644
index 0000000..30b8c25
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26341.dir/b.go
@@ -0,0 +1,13 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "./a"
+
+func f() {
+ for k := range (a.M{}) {
+ k.F()
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26341.go b/gcc/testsuite/go.test/test/fixedbugs/issue26341.go
new file mode 100644
index 0000000..128cf9d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26341.go
@@ -0,0 +1,7 @@
+// compiledir
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26407.go b/gcc/testsuite/go.test/test/fixedbugs/issue26407.go
new file mode 100644
index 0000000..aa8e79c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26407.go
@@ -0,0 +1,58 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 26407: ensure that stack variables which have
+// had their address taken and then used in a comparison,
+// but are otherwise unused, are cleared.
+
+package main
+
+func main() {
+ poison()
+ test()
+}
+
+//go:noinline
+func poison() {
+ // initialise the stack with invalid pointers
+ var large [256]uintptr
+ for i := range large {
+ large[i] = 1
+ }
+ use(large[:])
+}
+
+//go:noinline
+func test() {
+ a := 2
+ x := &a
+ if x != compare(&x) {
+ panic("not possible")
+ }
+}
+
+//go:noinline
+func compare(x **int) *int {
+ var y *int
+ if x == &y {
+ panic("not possible")
+ }
+ // grow the stack to trigger a check for invalid pointers
+ grow()
+ if x == &y {
+ panic("not possible")
+ }
+ return *x
+}
+
+//go:noinline
+func grow() {
+ var large [1 << 16]uintptr
+ use(large[:])
+}
+
+//go:noinline
+func use(_ []uintptr) { }
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26411.go b/gcc/testsuite/go.test/test/fixedbugs/issue26411.go
new file mode 100644
index 0000000..5f40bf2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26411.go
@@ -0,0 +1,92 @@
+// +build !nacl,!js
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Ensure that label redefinition errors print out
+// a column number that matches the start of the current label's
+// definition instead of the label delimiting token ":"
+
+package main
+
+import (
+ "bytes"
+ "fmt"
+ "io/ioutil"
+ "log"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "regexp"
+)
+
+func main() {
+ tmpdir, err := ioutil.TempDir("", "issue26411")
+ if err != nil {
+ log.Fatalf("Failed to create temporary directory: %v", err)
+ }
+ defer os.RemoveAll(tmpdir)
+
+ tests := []struct {
+ code string
+ errors []string
+ }{
+ {
+ code: `
+package main
+
+func main() {
+foo:
+foo:
+}
+`,
+ errors: []string{
+ "^.+:5:1: label foo defined and not used\n",
+ ".+:6:1: label foo already defined at .+:5:1\n$",
+ },
+ },
+ {
+ code: `
+package main
+
+func main() {
+
+ bar:
+ bar:
+bar:
+bar :
+}
+`,
+
+ errors: []string{
+ "^.+:6:13: label bar defined and not used\n",
+ ".+:7:4: label bar already defined at .+:6:13\n",
+ ".+:8:1: label bar already defined at .+:6:13\n",
+ ".+:9:1: label bar already defined at .+:6:13\n$",
+ },
+ },
+ }
+
+ for i, test := range tests {
+ filename := filepath.Join(tmpdir, fmt.Sprintf("%d.go", i))
+ if err := ioutil.WriteFile(filename, []byte(test.code), 0644); err != nil {
+ log.Printf("#%d: failed to create file %s", i, filename)
+ continue
+ }
+ output, _ := exec.Command("go", "tool", "compile", filename).CombinedOutput()
+
+ // remove each matching error from the output
+ for _, err := range test.errors {
+ rx := regexp.MustCompile(err)
+ match := rx.Find(output)
+ output = bytes.Replace(output, match, nil, 1) // remove match (which might be nil) from output
+ }
+
+ // at this point all output should have been consumed
+ if len(output) != 0 {
+ log.Printf("Test case %d has unmatched errors:\n%s", i, output)
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26416.go b/gcc/testsuite/go.test/test/fixedbugs/issue26416.go
new file mode 100644
index 0000000..44a4fc7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26416.go
@@ -0,0 +1,27 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+type t1 struct {
+ t1f1 int
+ t1f2 int
+}
+type t2 struct {
+ t2f1 int
+ t2f2 int
+ *t1
+}
+type t3 struct {
+ t3f1 int
+ *t2
+}
+
+var (
+ _ = t2{t1f1: 600} // ERROR "cannot use promoted field t1.t1f1 in struct literal of type t2|unknown field"
+ _ = t3{t1f2: 800} // ERROR "cannot use promoted field t2.t1.t1f2 in struct literal of type t3|unknown field"
+ _ = t3{t2f1: 900} // ERROR "cannot use promoted field t2.t2f1 in struct literal of type t3|unknown field"
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26438.go b/gcc/testsuite/go.test/test/fixedbugs/issue26438.go
new file mode 100644
index 0000000..d44da21
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26438.go
@@ -0,0 +1,26 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 26438: arm64 backend may use 64-bit TST for
+// "if uint32(a)&uint32(b) == 0", which should be
+// 32-bit TSTW
+
+package main
+
+//go:noinline
+func tstw(a, b uint64) uint64 {
+ if uint32(a)&uint32(b) == 0 {
+ return 100
+ } else {
+ return 200
+ }
+}
+
+func main() {
+ if tstw(0xff00000000, 0xaa00000000) == 200 {
+ panic("impossible")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26495.go b/gcc/testsuite/go.test/test/fixedbugs/issue26495.go
new file mode 100644
index 0000000..11ea360
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26495.go
@@ -0,0 +1,36 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 26495: gccgo produces incorrect order of evaluation
+// for expressions involving &&, || subexpressions.
+
+package main
+
+var i int
+
+func checkorder(order int) {
+ if i != order {
+ panic("FAIL: wrong evaluation order")
+ }
+ i++
+}
+
+func A() bool { checkorder(1); return true }
+func B() bool { checkorder(2); return true }
+func C() bool { checkorder(5); return false }
+func D() bool { panic("FAIL: D should not be called") }
+func E() int { checkorder(3); return 0 }
+func F() int { checkorder(0); return 0 }
+func G(bool) int { checkorder(9); return 0 }
+func H(int, bool, int) int { checkorder(7); return 0 }
+func I(int) bool { checkorder(8); return true }
+func J() int { checkorder(4); return 0 }
+func K() int { checkorder(6); return 0 }
+func L() int { checkorder(10); return 0 }
+
+func main() {
+ _ = F() + G(A() && B() && I(E()+H(J(), C() && D(), K()))) + L()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26616.go b/gcc/testsuite/go.test/test/fixedbugs/issue26616.go
new file mode 100644
index 0000000..87c0293
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26616.go
@@ -0,0 +1,20 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+var x int = three() // ERROR "assignment mismatch: 1 variable but three returns 3 values|multiple-value function call in single-value context"
+
+func f() {
+ var _ int = three() // ERROR "assignment mismatch: 1 variable but three returns 3 values|multiple-value function call in single-value context"
+ var a int = three() // ERROR "assignment mismatch: 1 variable but three returns 3 values|multiple-value function call in single-value context"
+ a = three() // ERROR "assignment mismatch: 1 variable but three returns 3 values|multiple-value function call in single-value context"
+ b := three() // ERROR "assignment mismatch: 1 variable but three returns 3 values|single variable set to multiple-value|multiple-value function call in single-value context"
+
+ _, _ = a, b
+}
+
+func three() (int, int, int)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue26855.go b/gcc/testsuite/go.test/test/fixedbugs/issue26855.go
new file mode 100644
index 0000000..b965635
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue26855.go
@@ -0,0 +1,28 @@
+// errorcheck
+
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that we get the correct (T vs &T) literal specification
+// in the error message.
+
+package p
+
+type S struct {
+ f T
+}
+
+type P struct {
+ f *T
+}
+
+type T struct{}
+
+var _ = S{
+ f: &T{}, // ERROR "cannot use &T{}|incompatible type"
+}
+
+var _ = P{
+ f: T{}, // ERROR "cannot use T{}|incompatible type"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue27143.go b/gcc/testsuite/go.test/test/fixedbugs/issue27143.go
new file mode 100644
index 0000000..009ec9f6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue27143.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 27143: cmd/compile: erroneous application of walkinrange
+// optimization for const over 2**63
+
+package p
+
+var c uint64
+
+var b1 bool = 0x7fffffffffffffff < c && c < 0x8000000000000000
+var b2 bool = c < 0x8000000000000000 && 0x7fffffffffffffff < c
+var b3 bool = 0x8000000000000000 < c && c < 0x8000000000000001
+var b4 bool = c < 0x8000000000000001 && 0x8000000000000000 < c
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue27232.go b/gcc/testsuite/go.test/test/fixedbugs/issue27232.go
new file mode 100644
index 0000000..3a1cc87
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue27232.go
@@ -0,0 +1,19 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type F = func(T)
+
+type T interface {
+ m(F)
+}
+
+type t struct{}
+
+func (t) m(F) {}
+
+var _ T = &t{}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue27267.go b/gcc/testsuite/go.test/test/fixedbugs/issue27267.go
new file mode 100644
index 0000000..ebae44f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue27267.go
@@ -0,0 +1,21 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+// 1st test case from issue
+type F = func(E) // compiles if not type alias or moved below E struct
+type E struct {
+ f F
+}
+
+var x = E{func(E) {}}
+
+// 2nd test case from issue
+type P = *S
+type S struct {
+ p P
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue27278.go b/gcc/testsuite/go.test/test/fixedbugs/issue27278.go
new file mode 100644
index 0000000..73f7c75
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue27278.go
@@ -0,0 +1,63 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 27278: dead auto elim deletes an auto and its
+// initialization, but it is live because of a nil check.
+
+package main
+
+type T struct {
+ _ [3]string
+ T2
+}
+
+func (t *T) M() []string {
+ return t.T2.M()
+}
+
+type T2 struct {
+ T3
+}
+
+func (t *T2) M() []string {
+ return t.T3.M()
+}
+
+type T3 struct {
+ a string
+}
+
+func (t *T3) M() []string {
+ return []string{}
+}
+
+func main() {
+ poison()
+ f()
+}
+
+//go:noinline
+func f() {
+ (&T{}).M()
+ grow(10000)
+}
+
+// grow stack, triggers stack copy
+func grow(n int) {
+ if n == 0 {
+ return
+ }
+ grow(n-1)
+}
+
+// put some junk on stack, which cannot be valid address
+//go:noinline
+func poison() {
+ x := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
+ g = x
+}
+
+var g [10]int
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue27289.go b/gcc/testsuite/go.test/test/fixedbugs/issue27289.go
new file mode 100644
index 0000000..293b9d0
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue27289.go
@@ -0,0 +1,24 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure we don't prove that the bounds check failure branch is unreachable.
+
+package main
+
+//go:noinline
+func f(a []int) {
+ _ = a[len(a)-1]
+}
+
+func main() {
+ defer func() {
+ if err := recover(); err != nil {
+ return
+ }
+ panic("f should panic")
+ }()
+ f(nil)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue27356.go b/gcc/testsuite/go.test/test/fixedbugs/issue27356.go
new file mode 100644
index 0000000..c3e686d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue27356.go
@@ -0,0 +1,19 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 27356: function parameter hiding built-in function results in compiler crash
+
+package p
+
+var a = []int{1,2,3}
+
+func _(len int) {
+ _ = len(a) // ERROR "cannot call non-function|expected function"
+}
+
+var cap = false
+var _ = cap(a) // ERROR "cannot call non-function|expected function"
+
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue27695.go b/gcc/testsuite/go.test/test/fixedbugs/issue27695.go
new file mode 100644
index 0000000..8bd4939
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue27695.go
@@ -0,0 +1,62 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure return values are always scanned, when
+// calling methods (+functions, TODO) with reflect.
+
+package main
+
+import (
+ "reflect"
+ "runtime/debug"
+ "sync"
+)
+
+func main() {
+ debug.SetGCPercent(1) // run GC frequently
+ var wg sync.WaitGroup
+ for i := 0; i < 20; i++ {
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ for i := 0; i < 2000; i++ {
+ _test()
+ }
+ }()
+ }
+ wg.Wait()
+}
+
+type Stt struct {
+ Data interface{}
+}
+
+type My struct {
+ b byte
+}
+
+func (this *My) Run(rawData []byte) (Stt, error) {
+ var data string = "hello"
+ stt := Stt{
+ Data: data,
+ }
+ return stt, nil
+}
+
+func _test() (interface{}, error) {
+ f := reflect.ValueOf(&My{}).MethodByName("Run")
+ if method, ok := f.Interface().(func([]byte) (Stt, error)); ok {
+ s, e := method(nil)
+ // The bug in issue27695 happens here, during the return
+ // from the above call (at the end of reflect.callMethod
+ // when preparing to return). The result value that
+ // is assigned to s was not being scanned if GC happens
+ // to occur there.
+ i := interface{}(s)
+ return i, e
+ }
+ return nil, nil
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue27695b.go b/gcc/testsuite/go.test/test/fixedbugs/issue27695b.go
new file mode 100644
index 0000000..d80acfb
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue27695b.go
@@ -0,0 +1,64 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure return values aren't scanned until they
+// are initialized, when calling functions and methods
+// via reflect.
+
+package main
+
+import (
+ "reflect"
+ "runtime"
+ "unsafe"
+)
+
+var badPtr uintptr
+
+var sink []byte
+
+func init() {
+ // Allocate large enough to use largeAlloc.
+ b := make([]byte, 1<<16-1)
+ sink = b // force heap allocation
+ // Any space between the object and the end of page is invalid to point to.
+ badPtr = uintptr(unsafe.Pointer(&b[len(b)-1])) + 1
+}
+
+func f(d func() *byte) *byte {
+ // Initialize callee args section with a bad pointer.
+ g(badPtr)
+
+ // Then call a function which returns a pointer.
+ // That return slot starts out holding a bad pointer.
+ return d()
+}
+
+//go:noinline
+func g(x uintptr) {
+}
+
+type T struct {
+}
+
+func (t *T) Foo() *byte {
+ runtime.GC()
+ return nil
+}
+
+func main() {
+ // Functions
+ d := reflect.MakeFunc(reflect.TypeOf(func() *byte { return nil }),
+ func(args []reflect.Value) []reflect.Value {
+ runtime.GC()
+ return []reflect.Value{reflect.ValueOf((*byte)(nil))}
+ }).Interface().(func() *byte)
+ f(d)
+
+ // Methods
+ e := reflect.ValueOf(&T{}).Method(0).Interface().(func() *byte)
+ f(e)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue27695c.go b/gcc/testsuite/go.test/test/fixedbugs/issue27695c.go
new file mode 100644
index 0000000..948191c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue27695c.go
@@ -0,0 +1,65 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure return values aren't scanned until they
+// are initialized, when calling functions and methods
+// via reflect.
+
+package main
+
+import (
+ "io"
+ "reflect"
+ "runtime"
+ "unsafe"
+)
+
+var badPtr uintptr
+
+var sink []byte
+
+func init() {
+ // Allocate large enough to use largeAlloc.
+ b := make([]byte, 1<<16-1)
+ sink = b // force heap allocation
+ // Any space between the object and the end of page is invalid to point to.
+ badPtr = uintptr(unsafe.Pointer(&b[len(b)-1])) + 1
+}
+
+func f(d func(error) error) error {
+ // Initialize callee args section with a bad pointer.
+ g(badPtr, badPtr, badPtr, badPtr)
+
+ // Then call a function which returns a pointer.
+ // That return slot starts out holding a bad pointer.
+ return d(io.EOF)
+}
+
+//go:noinline
+func g(x, y, z, w uintptr) {
+}
+
+type T struct {
+}
+
+func (t *T) Foo(e error) error {
+ runtime.GC()
+ return e
+}
+
+func main() {
+ // Functions
+ d := reflect.MakeFunc(reflect.TypeOf(func(e error) error { return e }),
+ func(args []reflect.Value) []reflect.Value {
+ runtime.GC()
+ return args
+ }).Interface().(func(error) error)
+ f(d)
+
+ // Methods
+ x := reflect.ValueOf(&T{}).Method(0).Interface().(func(error) error)
+ f(x)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue27718.go b/gcc/testsuite/go.test/test/fixedbugs/issue27718.go
new file mode 100644
index 0000000..ff616fb
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue27718.go
@@ -0,0 +1,102 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// (-0)+0 should be 0, not -0.
+
+package main
+
+//go:noinline
+func add64(x float64) float64 {
+ return x + 0
+}
+
+func testAdd64() {
+ var zero float64
+ inf := 1.0 / zero
+ negZero := -1 / inf
+ if 1/add64(negZero) != inf {
+ panic("negZero+0 != posZero (64 bit)")
+ }
+}
+
+//go:noinline
+func sub64(x float64) float64 {
+ return x - 0
+}
+
+func testSub64() {
+ var zero float64
+ inf := 1.0 / zero
+ negZero := -1 / inf
+ if 1/sub64(negZero) != -inf {
+ panic("negZero-0 != negZero (64 bit)")
+ }
+}
+
+//go:noinline
+func neg64(x float64) float64 {
+ return -x
+}
+
+func testNeg64() {
+ var zero float64
+ inf := 1.0 / zero
+ negZero := -1 / inf
+ if 1/neg64(negZero) != inf {
+ panic("-negZero != posZero (64 bit)")
+ }
+}
+
+//go:noinline
+func add32(x float32) float32 {
+ return x + 0
+}
+
+func testAdd32() {
+ var zero float32
+ inf := 1.0 / zero
+ negZero := -1 / inf
+ if 1/add32(negZero) != inf {
+ panic("negZero+0 != posZero (32 bit)")
+ }
+}
+
+//go:noinline
+func sub32(x float32) float32 {
+ return x - 0
+}
+
+func testSub32() {
+ var zero float32
+ inf := 1.0 / zero
+ negZero := -1 / inf
+ if 1/sub32(negZero) != -inf {
+ panic("negZero-0 != negZero (32 bit)")
+ }
+}
+
+//go:noinline
+func neg32(x float32) float32 {
+ return -x
+}
+
+func testNeg32() {
+ var zero float32
+ inf := 1.0 / zero
+ negZero := -1 / inf
+ if 1/neg32(negZero) != inf {
+ panic("-negZero != posZero (32 bit)")
+ }
+}
+
+func main() {
+ testAdd64()
+ testSub64()
+ testNeg64()
+ testAdd32()
+ testSub32()
+ testNeg32()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue27829.go b/gcc/testsuite/go.test/test/fixedbugs/issue27829.go
new file mode 100644
index 0000000..9204043
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue27829.go
@@ -0,0 +1,27 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Bad AND/BTR combination rule.
+
+package main
+
+import "fmt"
+
+//go:noinline
+func f(x uint64) uint64 {
+ return (x >> 48) &^ (uint64(0x4000))
+}
+
+func main() {
+ bad := false
+ if got, want := f(^uint64(0)), uint64(0xbfff); got != want {
+ fmt.Printf("got %x, want %x\n", got, want)
+ bad = true
+ }
+ if bad {
+ panic("bad")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Äfoo.go b/gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Äfoo.go
new file mode 100644
index 0000000..8b6a814
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Äfoo.go
@@ -0,0 +1,13 @@
+package Äfoo
+
+var ÄbarV int = 101
+
+func Äbar(x int) int {
+ defer func() { ÄbarV += 3 }()
+ return Äblix(x)
+}
+
+func Äblix(x int) int {
+ defer func() { ÄbarV += 9 }()
+ return ÄbarV + x
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Ämain.go b/gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Ämain.go
new file mode 100644
index 0000000..25d2c71
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Ämain.go
@@ -0,0 +1,13 @@
+package main
+
+import (
+ "fmt"
+
+ "./Äfoo"
+ Äblix "./Äfoo"
+)
+
+func main() {
+ fmt.Printf("Äfoo.Äbar(33) returns %v\n", Äfoo.Äbar(33))
+ fmt.Printf("Äblix.Äbar(33) returns %v\n", Äblix.Äbar(33))
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue27836.go b/gcc/testsuite/go.test/test/fixedbugs/issue27836.go
new file mode 100644
index 0000000..128cf9d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue27836.go
@@ -0,0 +1,7 @@
+// compiledir
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue27938.go b/gcc/testsuite/go.test/test/fixedbugs/issue27938.go
new file mode 100644
index 0000000..ed974e6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue27938.go
@@ -0,0 +1,23 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that we get a single non-confusing error
+// message for embedded fields/interfaces that use
+// a qualified identifier with non-existing package.
+
+package p
+
+type _ struct {
+ F sync.Mutex // ERROR "undefined: sync|expected package"
+}
+
+type _ struct {
+ sync.Mutex // ERROR "undefined: sync|expected package"
+}
+
+type _ interface {
+ sync.Mutex // ERROR "undefined: sync|expected package|expected signature or type name"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue27961.go b/gcc/testsuite/go.test/test/fixedbugs/issue27961.go
new file mode 100644
index 0000000..f8b4f66
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue27961.go
@@ -0,0 +1,35 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 27961: some optimizations generate OffPtr with wrong
+// types, which causes invalid bytecode on Wasm.
+
+package main
+
+import "math"
+
+type Vec2 [2]float64
+
+func main() {
+ var a Vec2
+ a.A().B().C().D()
+}
+
+func (v Vec2) A() Vec2 {
+ return Vec2{v[0], v[0]}
+}
+
+func (v Vec2) B() Vec2 {
+ return Vec2{1.0 / v.D(), 0}
+}
+
+func (v Vec2) C() Vec2 {
+ return Vec2{v[0], v[0]}
+}
+
+func (v Vec2) D() float64 {
+ return math.Sqrt(v[0])
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue28055.go b/gcc/testsuite/go.test/test/fixedbugs/issue28055.go
new file mode 100644
index 0000000..d4889d5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue28055.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure VARDEF can be a top-level statement.
+
+package p
+
+func f() {
+ var s string
+ var as []string
+ switch false && (s+"a"+as[0]+s+as[0]+s == "") {
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue28058.go b/gcc/testsuite/go.test/test/fixedbugs/issue28058.go
new file mode 100644
index 0000000..d8206e7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue28058.go
@@ -0,0 +1,13 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 14988: declaring a map with an invalid key type should not cause a
+// fatal panic.
+
+package main
+
+var x map[func()]int // ERROR "invalid map key type"
+var X map[func()]int // ERROR "invalid map key type"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue28078.go b/gcc/testsuite/go.test/test/fixedbugs/issue28078.go
new file mode 100644
index 0000000..2e4c4b5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue28078.go
@@ -0,0 +1,34 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Non-constant duplicate keys/cases should not be reported
+// as errors by the compiler.
+
+package p
+
+import "unsafe"
+
+func f() {
+ _ = map[uintptr]int{
+ 0: 0,
+ uintptr(unsafe.Pointer(nil)): 0,
+ }
+
+ switch uintptr(0) {
+ case 0:
+ case uintptr(unsafe.Pointer(nil)):
+ }
+
+ switch interface{}(nil) {
+ case nil:
+ case nil:
+ }
+
+ _ = map[interface{}]int{
+ nil: 0,
+ nil: 0,
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue28079a.go b/gcc/testsuite/go.test/test/fixedbugs/issue28079a.go
new file mode 100644
index 0000000..b0631bb
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue28079a.go
@@ -0,0 +1,20 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Non-Go-constant but constant indexes are ok at compile time.
+
+package p
+
+import "unsafe"
+
+func f() {
+ var x [0]int
+ x[uintptr(unsafe.Pointer(nil))] = 0
+}
+func g() {
+ var x [10]int
+ _ = x[3:uintptr(unsafe.Pointer(nil))]
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue28079b.go b/gcc/testsuite/go.test/test/fixedbugs/issue28079b.go
new file mode 100644
index 0000000..d1992e1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue28079b.go
@@ -0,0 +1,17 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Non-Go-constant but constant values aren't ok for array sizes.
+
+package p
+
+import "unsafe"
+
+type T [uintptr(unsafe.Pointer(nil))]int // ERROR "non-constant array bound|array bound is not constant"
+
+func f() {
+ _ = complex(1<<uintptr(unsafe.Pointer(nil)), 0) // GCCGO_ERROR "non-integer type for left operand of shift"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue28079c.go b/gcc/testsuite/go.test/test/fixedbugs/issue28079c.go
new file mode 100644
index 0000000..dfac8d0
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue28079c.go
@@ -0,0 +1,15 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Non-Go-constant but constant values aren't ok for shifts.
+
+package p
+
+import "unsafe"
+
+func f() {
+ _ = complex(1<<uintptr(unsafe.Pointer(nil)), 0) // ERROR "invalid operation: .*shift of type float64.*|non-integer type for left operand of shift"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue28268.go b/gcc/testsuite/go.test/test/fixedbugs/issue28268.go
new file mode 100644
index 0000000..59a4c57
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue28268.go
@@ -0,0 +1,30 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that follow-on errors due to conflicting
+// struct field and method names are suppressed.
+
+package p
+
+type T struct {
+ a, b, c int
+ E
+}
+
+type E struct{}
+
+func (T) b() {} // ERROR "field and method named b|redeclares struct field name"
+func (*T) E() {} // ERROR "field and method named E|redeclares struct field name"
+
+func _() {
+ var x T
+ _ = x.a
+ _ = x.b // no follow-on error here
+ x.b() // no follow-on error here
+ _ = x.c
+ _ = x.E // no follow-on error here
+ x.E() // no follow-on error here
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue28390.go b/gcc/testsuite/go.test/test/fixedbugs/issue28390.go
new file mode 100644
index 0000000..0a4d873
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue28390.go
@@ -0,0 +1,39 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 28390/28430: Function call arguments were not
+// converted correctly under some circumstances.
+
+package main
+
+import "fmt"
+
+type A struct {
+ K int
+ S string
+ M map[string]string
+}
+
+func newA(k int, s string) (a A) {
+ a.K = k
+ a.S = s
+ a.M = make(map[string]string)
+ a.M[s] = s
+ return
+}
+
+func proxy() (x int, a A) {
+ return 1, newA(2, "3")
+}
+
+func consume(x int, a interface{}) {
+ fmt.Println(x)
+ fmt.Println(a) // used to panic here
+}
+
+func main() {
+ consume(proxy())
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue28390.out b/gcc/testsuite/go.test/test/fixedbugs/issue28390.out
new file mode 100644
index 0000000..c923108
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue28390.out
@@ -0,0 +1,2 @@
+1
+{2 3 map[3:3]}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue28430.go b/gcc/testsuite/go.test/test/fixedbugs/issue28430.go
new file mode 100644
index 0000000..b59259a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue28430.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 28390/28430: Function call arguments were not
+// converted correctly under some circumstances.
+
+package main
+
+func g(_ interface{}, e error)
+func h() (int, error)
+
+func f() {
+ g(h())
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue28445.go b/gcc/testsuite/go.test/test/fixedbugs/issue28445.go
new file mode 100644
index 0000000..5726140
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue28445.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+var fp = (**float64)(nil)
+
+func f() {
+ switch fp {
+ case new(*float64):
+ println()
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue28450.go b/gcc/testsuite/go.test/test/fixedbugs/issue28450.go
new file mode 100644
index 0000000..2acfe39
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue28450.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f(a, b, c, d ...int) {} // ERROR "non-final parameter a|only permits one name"
+func g(a ...int, b ...int) {} // ERROR "non-final parameter a|must be last parameter"
+func h(...int, ...int, float32) {} // ERROR "non-final parameter|must be last parameter"
+
+type a func(...float32, ...interface{}) // ERROR "non-final parameter|must be last parameter"
+type b interface {
+ f(...int, ...int) // ERROR "non-final parameter|must be last parameter"
+ g(a ...int, b ...int, c float32) // ERROR "non-final parameter a|must be last parameter"
+ valid(...int)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue28616.go b/gcc/testsuite/go.test/test/fixedbugs/issue28616.go
new file mode 100644
index 0000000..f1ba974
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue28616.go
@@ -0,0 +1,25 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure we don't dead code eliminate a label.
+
+package p
+
+var i int
+
+func f() {
+
+ if true {
+
+ if i == 1 {
+ goto label
+ }
+
+ return
+ }
+
+label:
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue28688.go b/gcc/testsuite/go.test/test/fixedbugs/issue28688.go
new file mode 100644
index 0000000..0d2000e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue28688.go
@@ -0,0 +1,31 @@
+// run -gcflags=-d=softfloat
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+)
+
+// When using soft-float, OMUL might be rewritten to function
+// call so we should ensure it was evaluated first. Stack frame
+// setup for "test" function call should happen after call to runtime.fmul32
+
+var x int32 = 1
+
+func main() {
+ var y float32 = 1.0
+ test(x, y*y)
+}
+
+//go:noinline
+func test(id int32, a float32) {
+
+ if id != x {
+ fmt.Printf("got: %d, want: %d\n", id, x)
+ panic("FAIL")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue28797.go b/gcc/testsuite/go.test/test/fixedbugs/issue28797.go
new file mode 100644
index 0000000..480c105
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue28797.go
@@ -0,0 +1,53 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+)
+
+// test expects f to panic, but not to run out of memory,
+// which is a non-panic fatal error. OOM results from failure
+// to properly check negative limit.
+func test(f func()) {
+ defer func() {
+ r := recover()
+ if r == nil {
+ panic("panic wasn't recoverable")
+ }
+ }()
+ f()
+}
+
+//go:noinline
+func id(x int) int {
+ return x
+}
+
+func main() {
+ test(foo)
+ test(bar)
+}
+
+func foo() {
+ b := make([]byte, 0)
+ b = append(b, 1)
+ id(len(b))
+ id(len(b) - 2)
+ s := string(b[1 : len(b)-2])
+ fmt.Println(s)
+}
+
+func bar() {
+ b := make([]byte, 1)
+ b = append(b, 1)
+ i := id(-1)
+ if i < len(b) { // establish value is not too large.
+ s := string(b[1:i]) // should check for negative also.
+ fmt.Println(s)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29013a.go b/gcc/testsuite/go.test/test/fixedbugs/issue29013a.go
new file mode 100644
index 0000000..efc50df
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29013a.go
@@ -0,0 +1,24 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+type TestSuite struct {
+ Tests []int
+}
+
+var Suites = []TestSuite{
+ Dicts,
+}
+var Dicts = TestSuite{
+ Tests: []int{0},
+}
+
+func main() {
+ if &Dicts.Tests[0] != &Suites[0].Tests[0] {
+ panic("bad")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29013b.go b/gcc/testsuite/go.test/test/fixedbugs/issue29013b.go
new file mode 100644
index 0000000..b8502da
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29013b.go
@@ -0,0 +1,43 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+type TestSuite struct {
+ Tests []Test
+}
+type Test struct {
+ Want interface{}
+}
+type Int struct {
+ i int
+}
+
+func NewInt(v int) Int {
+ return Int{i: v}
+}
+
+var Suites = []TestSuite{
+ Dicts,
+}
+var Dicts = TestSuite{
+ Tests: []Test{
+ {
+ Want: map[Int]bool{NewInt(1): true},
+ },
+ {
+ Want: map[Int]string{
+ NewInt(3): "3",
+ },
+ },
+ },
+}
+
+func main() {
+ if Suites[0].Tests[0].Want.(map[Int]bool)[NewInt(3)] {
+ panic("bad")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29190.go b/gcc/testsuite/go.test/test/fixedbugs/issue29190.go
new file mode 100644
index 0000000..c0c4bb1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29190.go
@@ -0,0 +1,37 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "strings"
+)
+
+type T struct{}
+
+const maxInt = int(^uint(0) >> 1)
+
+func main() {
+ s := make([]T, maxInt)
+ shouldPanic("cap out of range", func() { s = append(s, T{}) })
+ var oneElem = make([]T, 1)
+ shouldPanic("cap out of range", func() { s = append(s, oneElem...) })
+}
+
+func shouldPanic(str string, f func()) {
+ defer func() {
+ err := recover()
+ if err == nil {
+ panic("did not panic")
+ }
+ s := err.(error).Error()
+ if !strings.Contains(s, str) {
+ panic("got panic " + s + ", want " + str)
+ }
+ }()
+
+ f()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29215.go b/gcc/testsuite/go.test/test/fixedbugs/issue29215.go
new file mode 100644
index 0000000..4e8f107
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29215.go
@@ -0,0 +1,35 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func f() {
+ var s string
+ var p, q bool
+ s = "a"
+ for p {
+ p = false == (true != q)
+ s = ""
+ }
+ _ = s == "bbb"
+}
+
+// Another case: load from negative offset of a symbol
+// in dead code (issue 30257).
+func g() {
+ var i int
+ var s string
+
+ if true {
+ s = "a"
+ }
+
+ if f := 0.0; -f < 0 {
+ i = len(s[:4])
+ }
+
+ _ = s[i-1:0] != "bb" && true
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29218.go b/gcc/testsuite/go.test/test/fixedbugs/issue29218.go
new file mode 100644
index 0000000..ac9fed7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29218.go
@@ -0,0 +1,24 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type T struct {
+ b bool
+ string
+}
+
+func f() {
+ var b bool
+ var t T
+ for {
+ switch &t.b {
+ case &b:
+ if b {
+ }
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29220.go b/gcc/testsuite/go.test/test/fixedbugs/issue29220.go
new file mode 100644
index 0000000..bbfe930
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29220.go
@@ -0,0 +1,26 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func ascii(r rune) rune {
+ switch {
+ case 97 <= r && r <= 122:
+ return r - 32
+ case 65 <= r && r <= 90:
+ return r + 32
+ default:
+ return r
+ }
+}
+
+func main() {
+ nomeObjeto := "ABE1FK21"
+ println(string(nomeObjeto[1:4]))
+ println(ascii(rune(nomeObjeto[4])) >= 48 && ascii(rune(nomeObjeto[4])) <= 57)
+ println(string(nomeObjeto[5]))
+ println(string(nomeObjeto[6:10]))
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29264.go b/gcc/testsuite/go.test/test/fixedbugs/issue29264.go
new file mode 100644
index 0000000..3781559
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29264.go
@@ -0,0 +1,22 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that we emit a valid type descriptor for
+// a fairly deeply nested type.
+
+package main
+
+import "fmt"
+import "strings"
+
+func main() {
+ a := [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]int{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{42}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+ got := fmt.Sprint(a)
+ want := strings.Repeat("[", 100) + "42" + strings.Repeat("]", 100)
+ if got != want {
+ fmt.Printf("got %q\nwant %q\n", got, want)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29304.go b/gcc/testsuite/go.test/test/fixedbugs/issue29304.go
new file mode 100644
index 0000000..47bc99f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29304.go
@@ -0,0 +1,19 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that relocation target go.builtin.error.Error
+// is defined and the code links and runs correctly.
+
+package main
+
+import "errors"
+
+func main() {
+ err := errors.New("foo")
+ if error.Error(err) != "foo" {
+ panic("FAILED")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29312.go b/gcc/testsuite/go.test/test/fixedbugs/issue29312.go
new file mode 100644
index 0000000..4293e01
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29312.go
@@ -0,0 +1,70 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This test is not for a fix of 29312 proper, but for the patch that
+// makes sure we at least don't have a security hole because of 29312.
+
+// This code generates lots of types. The binary should contain
+// a runtime.slicetype for each of the following 253 types:
+//
+// []*pwn
+// [][]*pwn
+// ...
+// [][]...[][]*pwn - 249 total "[]"
+// [][]...[][][]*pwn - 250 total "[]"
+// [][]...[][][][]*pwn - 251 total "[]"
+// [][]...[][][][][]*pwn - 252 total "[]"
+// [][]...[][][][][][]*pwn - 253 total "[]"
+//
+// The type names for these types are as follows. Because we truncate
+// the name at depth 250, the last few names are all identical:
+//
+// type.[]*"".pwn
+// type.[][]*"".pwn
+// ...
+// type.[][]...[][]*pwn - 249 total "[]"
+// type.[][]...[][][]*<...> - 250 total "[]"
+// type.[][]...[][][][]<...> - 251 total "[]"
+// type.[][]...[][][][]<...> - 252 total "[]" (but only 251 "[]" in the name)
+// type.[][]...[][][][]<...> - 253 total "[]" (but only 251 "[]" in the name)
+//
+// Because the names of the last 3 types are all identical, the
+// compiler will generate only a single runtime.slicetype data
+// structure for all 3 underlying types. It turns out the compiler
+// generates just the 251-entry one. There aren't any
+// runtime.slicetypes generated for the final two types.
+//
+// The compiler passes type.[]...[]<...> (251 total "[]") to
+// fmt.Sprintf (instead of the correct 253 one). But the data
+// structure at runtime actually has 253 nesting levels. So we end up
+// calling String on something that is of type [][]*pwn instead of
+// something of type *pwn. The way arg passing in Go works, the
+// backing store pointer for the outer slice becomes the "this"
+// pointer of the String method, which points to the inner []*pwn
+// slice. The String method then modifies the length of that inner
+// slice.
+package main
+
+import "fmt"
+
+type pwn struct {
+ a [3]uint
+}
+
+func (this *pwn) String() string {
+ this.a[1] = 7 // update length
+ return ""
+}
+
+func main() {
+ var a pwn
+ s := [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]*pwn{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&a}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} // depth 253
+ fmt.Sprint(s)
+ n := len(s[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]) // depth 252, type []*pwn
+ if n != 1 {
+ panic(fmt.Sprintf("length was changed, want 1 got %d", n))
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29329.go b/gcc/testsuite/go.test/test/fixedbugs/issue29329.go
new file mode 100644
index 0000000..7818bca
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29329.go
@@ -0,0 +1,107 @@
+// +build cgo
+// run -race
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build linux,amd64
+
+package main
+
+import (
+ "fmt"
+)
+
+type LineString []Point
+type Point [2]float64
+
+//go:noinline
+func benchmarkData() LineString {
+ return LineString{{1.0, 2.0}}
+}
+
+func (ls LineString) Clone() LineString {
+ ps := MultiPoint(ls)
+ return LineString(ps.Clone())
+}
+
+type MultiPoint []Point
+
+func (mp MultiPoint) Clone() MultiPoint {
+ if mp == nil {
+ return nil
+ }
+
+ points := make([]Point, len(mp))
+ copy(points, mp)
+
+ return MultiPoint(points)
+}
+
+func F1() {
+ cases := []struct {
+ threshold float64
+ length int
+ }{
+ {0.1, 1118},
+ {0.5, 257},
+ {1.0, 144},
+ {1.5, 95},
+ {2.0, 71},
+ {3.0, 46},
+ {4.0, 39},
+ {5.0, 33},
+ }
+
+ ls := benchmarkData()
+
+ for k := 0; k < 100; k++ {
+ for i, tc := range cases {
+ r := DouglasPeucker(tc.threshold).LineString(ls.Clone())
+ if len(r) == tc.length {
+ fmt.Printf("%d: unexpected\n", i)
+ }
+ }
+ }
+}
+
+// A DouglasPeuckerSimplifier wraps the DouglasPeucker function.
+type DouglasPeuckerSimplifier struct {
+ Threshold float64
+}
+
+// DouglasPeucker creates a new DouglasPeuckerSimplifier.
+func DouglasPeucker(threshold float64) *DouglasPeuckerSimplifier {
+ return &DouglasPeuckerSimplifier{
+ Threshold: threshold,
+ }
+}
+
+func (s *DouglasPeuckerSimplifier) LineString(ls LineString) LineString {
+ return lineString(s, ls)
+}
+
+type simplifier interface {
+ simplify(LineString, bool) (LineString, []int)
+}
+
+func lineString(s simplifier, ls LineString) LineString {
+ return runSimplify(s, ls)
+}
+
+func runSimplify(s simplifier, ls LineString) LineString {
+ if len(ls) <= 2 {
+ return ls
+ }
+ ls, _ = s.simplify(ls, false)
+ return ls
+}
+
+func (s *DouglasPeuckerSimplifier) simplify(ls LineString, wim bool) (LineString, []int) {
+ return nil, nil
+}
+
+func main() {
+ F1()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29350.go b/gcc/testsuite/go.test/test/fixedbugs/issue29350.go
new file mode 100644
index 0000000..9d59f6f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29350.go
@@ -0,0 +1,9 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+var X interface{} = 'x'
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29362.go b/gcc/testsuite/go.test/test/fixedbugs/issue29362.go
new file mode 100644
index 0000000..a8bd607
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29362.go
@@ -0,0 +1,42 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that we don't consider a Go'd function's
+// arguments as pointers when they aren't.
+
+package main
+
+import (
+ "unsafe"
+)
+
+var badPtr uintptr
+
+var sink []byte
+
+func init() {
+ // Allocate large enough to use largeAlloc.
+ b := make([]byte, 1<<16-1)
+ sink = b // force heap allocation
+ // Any space between the object and the end of page is invalid to point to.
+ badPtr = uintptr(unsafe.Pointer(&b[len(b)-1])) + 1
+}
+
+var throttle = make(chan struct{}, 10)
+
+func noPointerArgs(a, b, c, d uintptr) {
+ sink = make([]byte, 4096)
+ <-throttle
+}
+
+func main() {
+ const N = 1000
+ for i := 0; i < N; i++ {
+ throttle <- struct{}{}
+ go noPointerArgs(badPtr, badPtr, badPtr, badPtr)
+ sink = make([]byte, 4096)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29362b.go b/gcc/testsuite/go.test/test/fixedbugs/issue29362b.go
new file mode 100644
index 0000000..d1e3b47
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29362b.go
@@ -0,0 +1,53 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that we don't consider a Go'd function's
+// arguments as pointers when they aren't.
+
+package main
+
+import (
+ "unsafe"
+)
+
+var badPtr uintptr
+
+var sink []byte
+
+func init() {
+ // Allocate large enough to use largeAlloc.
+ b := make([]byte, 1<<16-1)
+ sink = b // force heap allocation
+ // Any space between the object and the end of page is invalid to point to.
+ badPtr = uintptr(unsafe.Pointer(&b[len(b)-1])) + 1
+}
+
+var throttle = make(chan struct{}, 10)
+
+// There are 2 arg bitmaps for this function, each with 2 bits.
+// In the first, p and q are both live, so that bitmap is 11.
+// In the second, only p is live, so that bitmap is 10.
+// Bitmaps are byte aligned, so if the first bitmap is interpreted as
+// extending across the entire argument area, we incorrectly concatenate
+// the bitmaps and end up using 110000001. That bad bitmap causes a6
+// to be considered a pointer.
+func noPointerArgs(p, q *byte, a0, a1, a2, a3, a4, a5, a6 uintptr) {
+ sink = make([]byte, 4096)
+ sinkptr = q
+ <-throttle
+ sinkptr = p
+}
+
+var sinkptr *byte
+
+func main() {
+ const N = 1000
+ for i := 0; i < N; i++ {
+ throttle <- struct{}{}
+ go noPointerArgs(nil, nil, badPtr, badPtr, badPtr, badPtr, badPtr, badPtr, badPtr)
+ sink = make([]byte, 4096)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29389.go b/gcc/testsuite/go.test/test/fixedbugs/issue29389.go
new file mode 100644
index 0000000..43859fd
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29389.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure we can correctly compile method expressions
+// where the method is implicitly declared.
+
+package main
+
+import "io"
+
+func main() {
+ err := io.EOF
+ _ = err.Error
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29402.go b/gcc/testsuite/go.test/test/fixedbugs/issue29402.go
new file mode 100644
index 0000000..8a1f959
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29402.go
@@ -0,0 +1,23 @@
+// run
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 29402: wrong optimization of comparison of
+// constant and shift on MIPS.
+
+package main
+
+//go:noinline
+func F(s []int) bool {
+ half := len(s) / 2
+ return half >= 0
+}
+
+func main() {
+ b := F([]int{1, 2, 3, 4})
+ if !b {
+ panic("FAIL")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29562.go b/gcc/testsuite/go.test/test/fixedbugs/issue29562.go
new file mode 100644
index 0000000..cbcd77d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29562.go
@@ -0,0 +1,26 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Triggers a double walk of the (inlined) switch in il
+
+package p
+
+func il(s string) string {
+ switch len(s) {
+ case 0:
+ return "zero"
+ case 1:
+ return "one"
+ }
+ return s
+}
+
+func f() {
+ var s string
+ var as []string
+ switch false && (s+"a"+as[0]+il(s)+as[0]+s == "") {
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29610.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue29610.dir/a.go
new file mode 100644
index 0000000..ccbe451
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29610.dir/a.go
@@ -0,0 +1,15 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type I interface {
+ M(init bool)
+}
+
+var V I
+
+func init() {
+ V = nil
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29610.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue29610.dir/b.go
new file mode 100644
index 0000000..c2016de
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29610.dir/b.go
@@ -0,0 +1,17 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "./a"
+
+type S struct {
+ a.I
+}
+
+var V a.I
+
+func init() {
+ V = S{}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29610.dir/main.go b/gcc/testsuite/go.test/test/fixedbugs/issue29610.dir/main.go
new file mode 100644
index 0000000..29437bf
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29610.dir/main.go
@@ -0,0 +1,11 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "./b"
+
+var v b.S
+
+func main() {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29610.go b/gcc/testsuite/go.test/test/fixedbugs/issue29610.go
new file mode 100644
index 0000000..8d49ba6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29610.go
@@ -0,0 +1,13 @@
+// rundir
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 29610: Symbol import and initialization order caused function
+// symbols to be recorded as non-function symbols.
+
+// This uses rundir not because we actually want to run the final
+// binary, but because we need to at least link it.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29735.go b/gcc/testsuite/go.test/test/fixedbugs/issue29735.go
new file mode 100644
index 0000000..7a0381d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29735.go
@@ -0,0 +1,33 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure FuncForPC won't panic when given a pc which
+// lies between two functions.
+
+package main
+
+import (
+ "runtime"
+)
+
+func main() {
+ var stack [1]uintptr
+ runtime.Callers(1, stack[:])
+ f() // inlined function, to give main some inlining info
+ for i := uintptr(0); true; i++ {
+ f := runtime.FuncForPC(stack[0] + i)
+ if f.Name() != "main.main" && f.Name() != "main.f" {
+ // Reached next function successfully.
+ break
+ }
+ }
+}
+
+func f() {
+ sink = 0 // one instruction which can't be removed
+}
+
+var sink int
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29855.go b/gcc/testsuite/go.test/test/fixedbugs/issue29855.go
new file mode 100644
index 0000000..402093c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29855.go
@@ -0,0 +1,17 @@
+// errorcheck
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+type T struct {
+ GlobalName string
+}
+
+var t = T{Name: "foo"} // ERROR "unknown field 'Name' in struct literal of type T|unknown field .*Name.* in .*T"
+
+func (t T) Name() string {
+ return t.GlobalName
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29870.go b/gcc/testsuite/go.test/test/fixedbugs/issue29870.go
new file mode 100644
index 0000000..b79860c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29870.go
@@ -0,0 +1,15 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure we can compile "_" functions without crashing.
+
+package main
+
+import "log"
+
+func _() {
+ log.Println("%2F")
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29870b.go b/gcc/testsuite/go.test/test/fixedbugs/issue29870b.go
new file mode 100644
index 0000000..0a83489
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29870b.go
@@ -0,0 +1,14 @@
+// errorcheck
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure we're compiling "_" functions at least enough
+// to get to an error which is generated during walk.
+
+package main
+
+func _() {
+ x := 7 // ERROR ".*x.* declared but not used"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue29943.go b/gcc/testsuite/go.test/test/fixedbugs/issue29943.go
new file mode 100644
index 0000000..ff47de5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue29943.go
@@ -0,0 +1,28 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code was miscompiled on ppc64le due to incorrect zero-extension
+// that was CSE'd.
+
+package main
+
+//go:noinline
+func g(i uint64) uint64 {
+ return uint64(uint32(i))
+}
+
+var sink uint64
+
+func main() {
+ for i := uint64(0); i < 1; i++ {
+ i32 := int32(i - 1)
+ sink = uint64((uint32(i32) << 1) ^ uint32((i32 >> 31)))
+ x := g(uint64(i32))
+ if x != uint64(uint32(i32)) {
+ panic(x)
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30041.go b/gcc/testsuite/go.test/test/fixedbugs/issue30041.go
new file mode 100644
index 0000000..7d8a169
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30041.go
@@ -0,0 +1,63 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 30041: copying results of a reflect-generated
+// call on stack should not have write barrier.
+
+package main
+
+import (
+ "reflect"
+ "runtime"
+ "unsafe"
+)
+
+var badPtr uintptr
+
+var sink []byte
+
+func init() {
+ // Allocate large enough to use largeAlloc.
+ b := make([]byte, 1<<16-1)
+ sink = b // force heap allocation
+ // Any space between the object and the end of page is invalid to point to.
+ badPtr = uintptr(unsafe.Pointer(&b[len(b)-1])) + 1
+}
+
+type ft func() *int
+
+var fn ft
+
+func rf([]reflect.Value) []reflect.Value {
+ a := reflect.ValueOf((*int)(nil))
+ return []reflect.Value{a}
+}
+
+const N = 1000
+
+func main() {
+ fn = reflect.MakeFunc(reflect.TypeOf(fn), rf).Interface().(ft)
+
+ // Keep running GC so the write barrier is on.
+ go func() {
+ for i := 0; i < N; i++ {
+ runtime.GC()
+ }
+ }()
+
+ var x [10]uintptr
+ for i := range x {
+ x[i] = badPtr
+ }
+ for i := 0; i < N; i++ {
+ runtime.Gosched()
+ use(x) // prepare bad pointers on stack
+ fn()
+ }
+}
+
+//go:noinline
+func use([10]uintptr) {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30061.go b/gcc/testsuite/go.test/test/fixedbugs/issue30061.go
new file mode 100644
index 0000000..5092b01
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30061.go
@@ -0,0 +1,20 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure we can linkname to memmove with an unsafe.Pointer argument.
+
+package p
+
+import "unsafe"
+
+//go:linkname memmove runtime.memmove
+func memmove(to, from unsafe.Pointer, n uintptr)
+
+var V1, V2 int
+
+func F() {
+ memmove(unsafe.Pointer(&V1), unsafe.Pointer(&V2), unsafe.Sizeof(int(0)))
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30085.go b/gcc/testsuite/go.test/test/fixedbugs/issue30085.go
new file mode 100644
index 0000000..d2ac4cf
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30085.go
@@ -0,0 +1,12 @@
+// errorcheck
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ var c, d = 1, 2, 3 // ERROR "assignment mismatch: 2 variables but 3 values|wrong number of initializations"
+ var e, f, g = 1, 2 // ERROR "assignment mismatch: 3 variables but 2 values|wrong number of initializations"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30087.go b/gcc/testsuite/go.test/test/fixedbugs/issue30087.go
new file mode 100644
index 0000000..3ad9c8c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30087.go
@@ -0,0 +1,14 @@
+// errorcheck
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ var a, b = 1 // ERROR "assignment mismatch: 2 variables but 1 values|wrong number of initializations"
+ _ = 1, 2 // ERROR "assignment mismatch: 1 variables but 2 values|number of variables does not match"
+ c, d := 1 // ERROR "assignment mismatch: 2 variables but 1 values|wrong number of initializations"
+ e, f := 1, 2, 3 // ERROR "assignment mismatch: 2 variables but 3 values|wrong number of initializations"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30243.go b/gcc/testsuite/go.test/test/fixedbugs/issue30243.go
new file mode 100644
index 0000000..51fd204
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30243.go
@@ -0,0 +1,27 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Compile-time constants, even if they cannot be represented
+// accurately, should remain the same in operations that don't
+// affect their values.
+
+package main
+
+import "fmt"
+
+func main() {
+ const x = 0.01
+ const xi = 0.01i
+ const xc = complex(0, x)
+
+ if imag(xi) != x {
+ fmt.Printf("FAILED: %g != %g\n", imag(xi), x)
+ }
+
+ if xi != complex(0, x) {
+ fmt.Printf("FAILED: %g != %g\n", xi, complex(0, x))
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30430.go b/gcc/testsuite/go.test/test/fixedbugs/issue30430.go
new file mode 100644
index 0000000..6c27b82
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30430.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 30430: isGoConst returned true for non-const variables,
+// resulting in ICE.
+
+package p
+
+func f() {
+ var s string
+ _ = map[string]string{s: ""}
+}
+
+const s = ""
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30476.go b/gcc/testsuite/go.test/test/fixedbugs/issue30476.go
new file mode 100644
index 0000000..a2147ec
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30476.go
@@ -0,0 +1,30 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 30476: KeepAlive didn't keep stack object alive.
+
+package main
+
+import "runtime"
+
+func main() {
+ x := new([10]int)
+ runtime.SetFinalizer(x, func(*[10]int) { panic("FAIL: finalizer runs") })
+ p := &T{x, 0}
+ use(p)
+ runtime.GC()
+ runtime.GC()
+ runtime.GC()
+ runtime.KeepAlive(p)
+}
+
+type T struct {
+ x *[10]int
+ y int
+}
+
+//go:noinline
+func use(*T) {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30566a.go b/gcc/testsuite/go.test/test/fixedbugs/issue30566a.go
new file mode 100644
index 0000000..5d736cc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30566a.go
@@ -0,0 +1,23 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "fmt"
+
+//go:noinline
+func ident(s string) string { return s }
+
+func returnSecond(x bool, s string) string { return s }
+
+func identWrapper(s string) string { return ident(s) }
+
+func main() {
+ got := returnSecond((false || identWrapper("bad") != ""), ident("good"))
+ if got != "good" {
+ panic(fmt.Sprintf("wanted \"good\", got \"%s\"", got))
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30566b.go b/gcc/testsuite/go.test/test/fixedbugs/issue30566b.go
new file mode 100644
index 0000000..92e0644
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30566b.go
@@ -0,0 +1,27 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "bytes"
+ "fmt"
+)
+
+func main() {
+ _, _ = false || g(1), g(2)
+ if !bytes.Equal(x, []byte{1, 2}) {
+ panic(fmt.Sprintf("wanted [1,2], got %v", x))
+ }
+}
+
+var x []byte
+
+//go:noinline
+func g(b byte) bool {
+ x = append(x, b)
+ return false
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30606.go b/gcc/testsuite/go.test/test/fixedbugs/issue30606.go
new file mode 100644
index 0000000..bc31982
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30606.go
@@ -0,0 +1,20 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "reflect"
+
+func main() {}
+
+func typ(x interface{}) reflect.Type { return reflect.ValueOf(x).Type() }
+
+var x = reflect.New(reflect.StructOf([]reflect.StructField{
+ {Name: "F5", Type: reflect.StructOf([]reflect.StructField{
+ {Name: "F4", Type: reflect.ArrayOf(5462,
+ reflect.SliceOf(typ(uint64(0))))},
+ })},
+}))
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30606b.go b/gcc/testsuite/go.test/test/fixedbugs/issue30606b.go
new file mode 100644
index 0000000..2ce2804
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30606b.go
@@ -0,0 +1,51 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "reflect"
+
+func main() {}
+
+func typ(x interface{}) reflect.Type { return reflect.ValueOf(x).Type() }
+
+var byteType = typ((byte)(0))
+var ptrType = typ((*byte)(nil))
+
+// Arrays of pointers. There are two size thresholds.
+// Bit masks are chunked in groups of 120 pointers.
+// Array types with >16384 pointers have a GC program instead of a bitmask.
+var smallPtrType = reflect.ArrayOf(100, ptrType)
+var mediumPtrType = reflect.ArrayOf(1000, ptrType)
+var bigPtrType = reflect.ArrayOf(16385, ptrType)
+
+var x0 = reflect.New(reflect.StructOf([]reflect.StructField{
+ {Name: "F1", Type: byteType},
+ {Name: "F2", Type: bigPtrType},
+}))
+var x1 = reflect.New(reflect.StructOf([]reflect.StructField{
+ {Name: "F1", Type: smallPtrType},
+ {Name: "F2", Type: bigPtrType},
+}))
+var x2 = reflect.New(reflect.StructOf([]reflect.StructField{
+ {Name: "F1", Type: mediumPtrType},
+ {Name: "F2", Type: bigPtrType},
+}))
+var x3 = reflect.New(reflect.StructOf([]reflect.StructField{
+ {Name: "F1", Type: ptrType},
+ {Name: "F2", Type: byteType},
+ {Name: "F3", Type: bigPtrType},
+}))
+var x4 = reflect.New(reflect.StructOf([]reflect.StructField{
+ {Name: "F1", Type: ptrType},
+ {Name: "F2", Type: smallPtrType},
+ {Name: "F3", Type: bigPtrType},
+}))
+var x5 = reflect.New(reflect.StructOf([]reflect.StructField{
+ {Name: "F1", Type: ptrType},
+ {Name: "F2", Type: mediumPtrType},
+ {Name: "F3", Type: bigPtrType},
+}))
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30679.go b/gcc/testsuite/go.test/test/fixedbugs/issue30679.go
new file mode 100644
index 0000000..4d0df18
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30679.go
@@ -0,0 +1,18 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ var f float64
+ var p, q *float64
+
+ p = &f
+ if *q > 0 {
+ p = q
+ }
+ _ = *p
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30709.go b/gcc/testsuite/go.test/test/fixedbugs/issue30709.go
new file mode 100644
index 0000000..4952454
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30709.go
@@ -0,0 +1,33 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check closure in const declaration group can be compiled
+// and set correct value
+
+package main
+
+import "unsafe"
+
+const (
+ x = unsafe.Sizeof(func() {})
+ y
+)
+
+func main() {
+ const (
+ z = unsafe.Sizeof(func() {})
+ t
+ )
+
+ // x and y must be equal
+ println(x == y)
+ // size must be greater than zero
+ println(y > 0)
+
+ // Same logic as x, y above
+ println(z == t)
+ println(t > 0)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30709.out b/gcc/testsuite/go.test/test/fixedbugs/issue30709.out
new file mode 100644
index 0000000..1140ff5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30709.out
@@ -0,0 +1,4 @@
+true
+true
+true
+true
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30862.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue30862.dir/a.go
new file mode 100644
index 0000000..c23f4de
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30862.dir/a.go
@@ -0,0 +1,15 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+var pl int
+
+type NoitfStruct struct {
+ F int
+ G int
+}
+
+//go:nointerface
+func (t *NoitfStruct) NoInterfaceMethod() {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30862.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue30862.dir/b.go
new file mode 100644
index 0000000..3e501bb
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30862.dir/b.go
@@ -0,0 +1,29 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "./a"
+
+type EmbedImported struct {
+ a.NoitfStruct
+}
+
+func Test() []string {
+ bad := []string{}
+ x := interface{}(new(a.NoitfStruct))
+ if _, ok := x.(interface {
+ NoInterfaceMethod()
+ }); ok {
+ bad = append(bad, "fail 1")
+ }
+
+ x = interface{}(new(EmbedImported))
+ if _, ok := x.(interface {
+ NoInterfaceMethod()
+ }); ok {
+ bad = append(bad, "fail 2")
+ }
+ return bad
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30862.dir/main.go b/gcc/testsuite/go.test/test/fixedbugs/issue30862.dir/main.go
new file mode 100644
index 0000000..80db0e1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30862.dir/main.go
@@ -0,0 +1,28 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "os"
+
+ "./b"
+)
+
+// Test case for issue 30862.
+
+// Be aware that unless GOEXPERIMENT=fieldtrack is set when building
+// the compiler, this test will fail if executed with a regular GC
+// compiler.
+
+func main() {
+ bad := b.Test()
+ if len(bad) > 0 {
+ for _, s := range bad {
+ fmt.Fprintf(os.Stderr, "test failed: %s\n", s)
+ }
+ os.Exit(1)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30862.go b/gcc/testsuite/go.test/test/fixedbugs/issue30862.go
new file mode 100644
index 0000000..ba122cc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30862.go
@@ -0,0 +1,14 @@
+// rundir
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test case for issue 30862. This test as written will
+// fail for the main 'gc' compiler unless GOEXPERIMENT=fieldtrack
+// is set when building it, whereas gccgo has field tracking
+// enabled by default (hence the build tag below).
+
+// +build gccgo
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30898.go b/gcc/testsuite/go.test/test/fixedbugs/issue30898.go
new file mode 100644
index 0000000..b6376d3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30898.go
@@ -0,0 +1,19 @@
+// errorcheck -0 -m
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test escape analysis for functions with variadic arguments
+
+package foo
+
+func debugf(format string, args ...interface{}) { // ERROR "can inline debugf" "format does not escape" "args does not escape"
+ // Dummy implementation for non-debug build.
+ // A non-empty implementation would be enabled with a build tag.
+}
+
+func bar() { // ERROR "can inline bar"
+ value := 10
+ debugf("value is %d", value) // ERROR "inlining call to debugf" "value does not escape" "\[\]interface {}{...} does not escape"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30907.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue30907.dir/a.go
new file mode 100644
index 0000000..e1a5c0c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30907.dir/a.go
@@ -0,0 +1,19 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type UUID string
+
+func New() UUID {
+ return Must(NewRandom())
+}
+
+func NewRandom() (UUID, error) {
+ return "", nil
+}
+
+func Must(uuid UUID, err error) UUID {
+ return uuid
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30907.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue30907.dir/b.go
new file mode 100644
index 0000000..f4f5fc4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30907.dir/b.go
@@ -0,0 +1,11 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+import "./a"
+
+func F() {
+ a.New()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30907.go b/gcc/testsuite/go.test/test/fixedbugs/issue30907.go
new file mode 100644
index 0000000..973ae1d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30907.go
@@ -0,0 +1,7 @@
+// compiledir
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30956.go b/gcc/testsuite/go.test/test/fixedbugs/issue30956.go
new file mode 100644
index 0000000..021e6c5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30956.go
@@ -0,0 +1,32 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for compile generated static data for literal
+// composite struct
+
+package main
+
+import "fmt"
+
+type X struct {
+ V interface{}
+
+ a int
+ b int
+ c int
+}
+
+func pr(x X) {
+ fmt.Println(x.V)
+}
+
+func main() {
+ pr(X{
+ V: struct {
+ A int
+ }{42},
+ })
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30956.out b/gcc/testsuite/go.test/test/fixedbugs/issue30956.out
new file mode 100644
index 0000000..04f25e8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30956.out
@@ -0,0 +1 @@
+{42}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue30977.go b/gcc/testsuite/go.test/test/fixedbugs/issue30977.go
new file mode 100644
index 0000000..2ca040d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue30977.go
@@ -0,0 +1,52 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 30977: write barrier call clobbers volatile
+// value when there are multiple uses of the value.
+
+package main
+
+import "runtime"
+
+type T struct {
+ a, b, c, d, e string
+}
+
+//go:noinline
+func g() T {
+ return T{"a", "b", "c", "d", "e"}
+}
+
+//go:noinline
+func f() {
+ // The compiler optimizes this to direct copying
+ // the call result to both globals, with write
+ // barriers. The first write barrier call clobbers
+ // the result of g on stack.
+ X = g()
+ Y = X
+}
+
+var X, Y T
+
+const N = 1000
+
+func main() {
+ // Keep GC running so the write barrier is on.
+ go func() {
+ for {
+ runtime.GC()
+ }
+ }()
+
+ for i := 0; i < N; i++ {
+ runtime.Gosched()
+ f()
+ if X != Y {
+ panic("FAIL")
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31010.go b/gcc/testsuite/go.test/test/fixedbugs/issue31010.go
new file mode 100644
index 0000000..836e85f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31010.go
@@ -0,0 +1,24 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+var (
+ x int
+ xs []int
+)
+
+func a([]int) (int, error)
+
+func b() (int, error) {
+ return a(append(xs, x))
+}
+
+func c(int, error) (int, error)
+
+func d() (int, error) {
+ return c(b())
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31060.go b/gcc/testsuite/go.test/test/fixedbugs/issue31060.go
new file mode 100644
index 0000000..a1ba705
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31060.go
@@ -0,0 +1,30 @@
+// errorcheck
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+const (
+ f = 1.0
+ c = 1.0i
+
+ _ = ^f // ERROR "invalid operation|expected integer"
+ _ = ^c // ERROR "invalid operation|expected integer"
+
+ _ = f % f // ERROR "invalid operation|expected integer"
+ _ = c % c // ERROR "invalid operation|expected integer"
+
+ _ = f & f // ERROR "invalid operation|expected integer"
+ _ = c & c // ERROR "invalid operation|expected integer"
+
+ _ = f | f // ERROR "invalid operation|expected integer"
+ _ = c | c // ERROR "invalid operation|expected integer"
+
+ _ = f ^ f // ERROR "invalid operation|expected integer"
+ _ = c ^ c // ERROR "invalid operation|expected integer"
+
+ _ = f &^ f // ERROR "invalid operation|expected integer"
+ _ = c &^ c // ERROR "invalid operation|expected integer"
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/a.go
new file mode 100644
index 0000000..fa43150
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/a.go
@@ -0,0 +1,13 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+import "fmt"
+
+type IndexController struct{}
+
+func (this *IndexController) Index(m *string) {
+ fmt.Println(m)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/b.go
new file mode 100644
index 0000000..9bfc0ff
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/b.go
@@ -0,0 +1,13 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "fmt"
+
+type IndexController struct{}
+
+func (this *IndexController) Index(m *string) {
+ fmt.Println(m)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/c.go b/gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/c.go
new file mode 100644
index 0000000..928c8ee
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/c.go
@@ -0,0 +1,26 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package c
+
+import (
+ "a"
+ "b"
+)
+
+type HandlerFunc func(*string)
+
+func RouterInit() {
+ //home API
+ homeIndex := &a.IndexController{}
+ GET("/home/index/index", homeIndex.Index)
+ //admin API
+ adminIndex := &b.IndexController{}
+ GET("/admin/index/index", adminIndex.Index)
+ return
+}
+
+func GET(path string, handlers ...HandlerFunc) {
+ return
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/main.go b/gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/main.go
new file mode 100644
index 0000000..25a7548
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31252.dir/main.go
@@ -0,0 +1,11 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "c"
+
+func main() {
+ c.RouterInit()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31252.go b/gcc/testsuite/go.test/test/fixedbugs/issue31252.go
new file mode 100644
index 0000000..973ae1d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31252.go
@@ -0,0 +1,7 @@
+// compiledir
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31412a.go b/gcc/testsuite/go.test/test/fixedbugs/issue31412a.go
new file mode 100644
index 0000000..75021c6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31412a.go
@@ -0,0 +1,32 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This code was incorrectly flagged as erroneous by gccgo.
+
+package main
+
+type Name string
+
+type EFunc func(int) int
+
+func Register(f EFunc, names ...Name) int {
+ return f(len(names))
+}
+
+const (
+ B Name = "B"
+)
+
+func RegisterIt() {
+ n := B + "Duck"
+ d := B + "Goose"
+ f := func(x int) int { return x + 9 }
+ Register(f, n, d)
+}
+
+func main() {
+ RegisterIt()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31412b.go b/gcc/testsuite/go.test/test/fixedbugs/issue31412b.go
new file mode 100644
index 0000000..6c4ec00
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31412b.go
@@ -0,0 +1,20 @@
+// errorcheck
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This code was incorrectly accepted by gccgo.
+
+package main
+
+type N string
+type M string
+
+const B N = "B"
+const C M = "C"
+
+func main() {
+ q := B + C // ERROR "mismatched types|incompatible types"
+ println(q)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31419.go b/gcc/testsuite/go.test/test/fixedbugs/issue31419.go
new file mode 100644
index 0000000..233111a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31419.go
@@ -0,0 +1,58 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 31419: race in getitab when two goroutines try
+// to do the same failed interface conversion.
+
+package main
+
+type T int
+
+func (t T) M() {}
+
+type I interface {
+ M()
+ M2()
+}
+
+var t T
+var e interface{} = &t
+var ok = false
+var ch = make(chan int)
+
+func main() {
+ _, ok = e.(I) // populate itab cache with a false result
+
+ go f() // get itab in a loop
+
+ var i I
+ for k := 0; k < 10000; k++ {
+ i, ok = e.(I) // read the cached itab
+ if ok {
+ println("iteration", k, "i =", i, "&t =", &t)
+ panic("conversion succeeded")
+ }
+ }
+ <-ch
+}
+
+func f() {
+ for i := 0; i < 10000; i++ {
+ f1()
+ }
+ ch <- 1
+}
+
+func f1() {
+ defer func() {
+ err := recover()
+ if err == nil {
+ panic("did not panic")
+ }
+ }()
+ i := e.(I) // triggers itab.init, for getting the panic string
+ _ = i
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31573.go b/gcc/testsuite/go.test/test/fixedbugs/issue31573.go
new file mode 100644
index 0000000..005910e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31573.go
@@ -0,0 +1,49 @@
+// errorcheck -0 -m
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f(...*int) {} // ERROR "can inline f$"
+
+func g() {
+ defer f()
+ defer f(new(int)) // ERROR "... argument does not escape$" "new\(int\) does not escape$"
+ defer f(new(int), new(int)) // ERROR "... argument does not escape$" "new\(int\) does not escape$"
+
+ defer f(nil...)
+ defer f([]*int{}...) // ERROR "\[\]\*int{} does not escape$"
+ defer f([]*int{new(int)}...) // ERROR "\[\]\*int{...} does not escape$" "new\(int\) does not escape$"
+ defer f([]*int{new(int), new(int)}...) // ERROR "\[\]\*int{...} does not escape$" "new\(int\) does not escape$"
+
+ go f()
+ go f(new(int)) // ERROR "... argument escapes to heap$" "new\(int\) escapes to heap$"
+ go f(new(int), new(int)) // ERROR "... argument escapes to heap$" "new\(int\) escapes to heap$"
+
+ go f(nil...)
+ go f([]*int{}...) // ERROR "\[\]\*int{} escapes to heap$"
+ go f([]*int{new(int)}...) // ERROR "\[\]\*int{...} escapes to heap$" "new\(int\) escapes to heap$"
+ go f([]*int{new(int), new(int)}...) // ERROR "\[\]\*int{...} escapes to heap$" "new\(int\) escapes to heap$"
+
+ for {
+ defer f()
+ defer f(new(int)) // ERROR "... argument escapes to heap$" "new\(int\) escapes to heap$"
+ defer f(new(int), new(int)) // ERROR "... argument escapes to heap$" "new\(int\) escapes to heap$"
+
+ defer f(nil...)
+ defer f([]*int{}...) // ERROR "\[\]\*int{} escapes to heap$"
+ defer f([]*int{new(int)}...) // ERROR "\[\]\*int{...} escapes to heap$" "new\(int\) escapes to heap$"
+ defer f([]*int{new(int), new(int)}...) // ERROR "\[\]\*int{...} escapes to heap$" "new\(int\) escapes to heap$"
+
+ go f()
+ go f(new(int)) // ERROR "... argument escapes to heap$" "new\(int\) escapes to heap$"
+ go f(new(int), new(int)) // ERROR "... argument escapes to heap$" "new\(int\) escapes to heap$"
+
+ go f(nil...)
+ go f([]*int{}...) // ERROR "\[\]\*int{} escapes to heap$"
+ go f([]*int{new(int)}...) // ERROR "\[\]\*int{...} escapes to heap$" "new\(int\) escapes to heap$"
+ go f([]*int{new(int), new(int)}...) // ERROR "\[\]\*int{...} escapes to heap$" "new\(int\) escapes to heap$"
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31637.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue31637.dir/a.go
new file mode 100644
index 0000000..71f3926
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31637.dir/a.go
@@ -0,0 +1,15 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type dO struct {
+ x int
+}
+
+type EDO struct{}
+
+func (EDO) Apply(*dO) {}
+
+var X EDO
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31637.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue31637.dir/b.go
new file mode 100644
index 0000000..ce83b00
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31637.dir/b.go
@@ -0,0 +1,19 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "./a"
+
+type No struct {
+ a.EDO
+}
+
+func X() No {
+ return No{}
+}
+
+func main() {
+ X()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31637.go b/gcc/testsuite/go.test/test/fixedbugs/issue31637.go
new file mode 100644
index 0000000..dcfb4a7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31637.go
@@ -0,0 +1,11 @@
+// compiledir
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This directory contains a pair of packages that triggered
+// a compiler crash in gollvm (problem in handling an inlinable
+// method with unnamed parameter). See issue 31637 for details.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31777.go b/gcc/testsuite/go.test/test/fixedbugs/issue31777.go
new file mode 100644
index 0000000..839e242
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31777.go
@@ -0,0 +1,24 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Compile with static map literal.
+
+package p
+
+type i interface {
+ j()
+}
+
+type s struct{}
+
+func (s) j() {}
+
+type foo map[string]i
+
+var f = foo{
+ "1": s{},
+ "2": s{},
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31782.go b/gcc/testsuite/go.test/test/fixedbugs/issue31782.go
new file mode 100644
index 0000000..a42001e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31782.go
@@ -0,0 +1,24 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check static composite literal reports wrong for struct
+// field.
+
+package main
+
+type one struct {
+ i interface{}
+}
+
+type two struct {
+ i interface{}
+ s []string
+}
+
+func main() {
+ o := one{i: two{i: 42}.i}
+ println(o.i.(int))
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31782.out b/gcc/testsuite/go.test/test/fixedbugs/issue31782.out
new file mode 100644
index 0000000..d81cc07
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31782.out
@@ -0,0 +1 @@
+42
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue31987.go b/gcc/testsuite/go.test/test/fixedbugs/issue31987.go
new file mode 100644
index 0000000..372289b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue31987.go
@@ -0,0 +1,22 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "fmt"
+
+type container struct {
+ Value string
+}
+
+func main() {
+ s := []container{
+ 7: {Value: "string value"},
+ }
+ if s[7].Value != "string value" {
+ panic(fmt.Errorf("wanted \"string value\", got \"%s\"", s[7].Value))
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32175.go b/gcc/testsuite/go.test/test/fixedbugs/issue32175.go
new file mode 100644
index 0000000..a677351
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32175.go
@@ -0,0 +1,22 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+// This used to print 0, because x was incorrectly captured by value.
+
+func f() (x int) {
+ defer func() func() {
+ return func() {
+ println(x)
+ }
+ }()()
+ return 42
+}
+
+func main() {
+ f()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32175.out b/gcc/testsuite/go.test/test/fixedbugs/issue32175.out
new file mode 100644
index 0000000..d81cc07
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32175.out
@@ -0,0 +1 @@
+42
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32288.go b/gcc/testsuite/go.test/test/fixedbugs/issue32288.go
new file mode 100644
index 0000000..91c930c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32288.go
@@ -0,0 +1,48 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+type T struct {
+ s [1]string
+ pad [16]uintptr
+}
+
+//go:noinline
+func f(t *int, p *int) []T {
+ var res []T
+ for {
+ var e *T
+ res = append(res, *e)
+ }
+}
+
+func main() {
+ defer func() {
+ useStack(100) // force a stack copy
+ // We're expecting a panic.
+ // The bug in this issue causes a throw, which this recover() will not squash.
+ recover()
+ }()
+ junk() // fill the stack with invalid pointers
+ f(nil, nil)
+}
+
+func useStack(n int) {
+ if n == 0 {
+ return
+ }
+ useStack(n - 1)
+}
+
+//go:noinline
+func junk() uintptr {
+ var a [128]uintptr // 1k of bad pointers on the stack
+ for i := range a {
+ a[i] = 0xaa
+ }
+ return a[12]
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32347.go b/gcc/testsuite/go.test/test/fixedbugs/issue32347.go
new file mode 100644
index 0000000..91c038a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32347.go
@@ -0,0 +1,18 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 32347: gccgo compiler crashes with int-to-string conversion
+// with large integer constant operand.
+
+package p
+
+const (
+ X1 = string(128049)
+ X2 = string(-1)
+ X3 = string(1<<48)
+)
+
+var S1, S2, S3 = X1, X2, X3
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32454.go b/gcc/testsuite/go.test/test/fixedbugs/issue32454.go
new file mode 100644
index 0000000..70895c9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32454.go
@@ -0,0 +1,23 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type T struct {
+ s string
+ f float64
+}
+
+func f() {
+ var f float64
+ var st T
+ for {
+ switch &st.f {
+ case &f:
+ f = 1
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32560.go b/gcc/testsuite/go.test/test/fixedbugs/issue32560.go
new file mode 100644
index 0000000..c6f72b6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32560.go
@@ -0,0 +1,51 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Values smaller than 64-bits were mistakenly always proven to be
+// non-negative.
+//
+// The tests here are marked go:noinline to ensure they're
+// independently optimized by SSA.
+
+package main
+
+var x int32 = -1
+
+//go:noinline
+func a() {
+ if x != -1 {
+ panic(1)
+ }
+ if x > 0 || x != -1 {
+ panic(2)
+ }
+}
+
+//go:noinline
+func b() {
+ if x != -1 {
+ panic(3)
+ }
+ if x > 0 {
+ panic(4)
+ }
+}
+
+//go:noinline
+func c() {
+ if x > 0 || x != -1 {
+ panic(5)
+ }
+ if x > 0 || x != -1 {
+ panic(6)
+ }
+}
+
+func main() {
+ a()
+ b()
+ c()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32595.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue32595.dir/a.go
new file mode 100644
index 0000000..8342dd5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32595.dir/a.go
@@ -0,0 +1,9 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+func A() {
+ defer func() {}()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32595.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue32595.dir/b.go
new file mode 100644
index 0000000..9a13a57
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32595.dir/b.go
@@ -0,0 +1,15 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "reflect"
+
+func B() {
+ t1 := reflect.TypeOf([0]byte{})
+ t2 := reflect.TypeOf(new([0]byte)).Elem()
+ if t1 != t2 {
+ panic("[0]byte types do not match")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32595.dir/main.go b/gcc/testsuite/go.test/test/fixedbugs/issue32595.dir/main.go
new file mode 100644
index 0000000..20472cd
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32595.dir/main.go
@@ -0,0 +1,15 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "a"
+ "b"
+)
+
+func main() {
+ a.A()
+ b.B()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32595.go b/gcc/testsuite/go.test/test/fixedbugs/issue32595.go
new file mode 100644
index 0000000..af6f134
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32595.go
@@ -0,0 +1,7 @@
+// rundir
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32680.go b/gcc/testsuite/go.test/test/fixedbugs/issue32680.go
new file mode 100644
index 0000000..27cba6b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32680.go
@@ -0,0 +1,23 @@
+// run -gcflags=-d=ssa/check/on
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// As of 2019-06, bug affects/ed amd64 and s390x.
+
+package main
+
+var foo = []byte{105, 57, 172, 152}
+
+func main() {
+ for i := 0; i < len(foo); i += 4 {
+ // Requires inlining and non-constant i
+ // Note the bug/fix also apply to different widths, but was unable to reproduce for those.
+ println(readLittleEndian32_2(foo[i], foo[i+1], foo[i+2], foo[i+3]))
+ }
+}
+
+func readLittleEndian32_2(a, b, c, d byte) uint32 {
+ return uint32(a) | (uint32(b) << 8) | (uint32(c) << 16) | (uint32(d) << 24)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32680.out b/gcc/testsuite/go.test/test/fixedbugs/issue32680.out
new file mode 100644
index 0000000..4d60a97
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32680.out
@@ -0,0 +1 @@
+2561423721
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32680b.go b/gcc/testsuite/go.test/test/fixedbugs/issue32680b.go
new file mode 100644
index 0000000..61e5317
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32680b.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func hashBytesRaw(b0, b1, b2, b3, b7 byte) uint64 {
+ return (uint64(b0) | uint64(b1)<<8 | uint64(b2)<<16 | uint64(b3)<<24)
+}
+
+func doStuff(data []byte) uint64 {
+ return hashBytesRaw(data[0], data[1], data[2], data[3], data[7])
+
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32723.go b/gcc/testsuite/go.test/test/fixedbugs/issue32723.go
new file mode 100644
index 0000000..850334d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32723.go
@@ -0,0 +1,22 @@
+// errorcheck
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Complex literal comparison
+
+package p
+
+const x = 1i
+const y = 1i < 2i // ERROR "invalid operation: .*not defined on untyped complex|non-ordered type"
+const z = x < 2i // ERROR "invalid operation: .*not defined on untyped complex|non-ordered type"
+
+func f() {
+ _ = 1i < 2i // ERROR "invalid operation: .*not defined on untyped complex|non-ordered type"
+ _ = 1i < 2 // ERROR "invalid operation: .*not defined on untyped complex|non-ordered type"
+ _ = 1 < 2i // ERROR "invalid operation: .*not defined on untyped complex|non-ordered type"
+
+ c := 1i
+ _ = c < 2i // ERROR "invalid operation: .*not defined on complex128|non-ordered type"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32778.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue32778.dir/a.go
new file mode 100644
index 0000000..1e6ac01
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32778.dir/a.go
@@ -0,0 +1,18 @@
+// Copyright 2019 The Go Authors. All rights reserved. Use of this
+// source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+
+package a
+
+import "strings"
+
+type Name string
+
+type FullName string
+
+func (n FullName) Name() Name {
+ if i := strings.LastIndexByte(string(n), '.'); i >= 0 {
+ return Name(n[i+1:])
+ }
+ return Name(n)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32778.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue32778.dir/b.go
new file mode 100644
index 0000000..a0ee398
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32778.dir/b.go
@@ -0,0 +1,11 @@
+// Copyright 2019 The Go Authors. All rights reserved. Use of this
+// source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+
+package b
+
+import "./a"
+
+func Expo(fn a.FullName) a.Name {
+ return fn.Name()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32778.go b/gcc/testsuite/go.test/test/fixedbugs/issue32778.go
new file mode 100644
index 0000000..83456d4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32778.go
@@ -0,0 +1,11 @@
+// compiledir
+
+// Copyright 2019 The Go Authors. All rights reserved. Use of this
+// source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+
+// This directory contains a pair of packages that triggers a compiler
+// crash in gccgo (problem with tracking indirectly referenced
+// packages during exporting). See issue 32778 for details.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue32959.go b/gcc/testsuite/go.test/test/fixedbugs/issue32959.go
new file mode 100644
index 0000000..a0dc789
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue32959.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test escape analysis with shifting constant
+
+package main
+
+import "unsafe"
+
+func main() {
+ var l uint64
+ var p unsafe.Pointer
+ _ = unsafe.Pointer(uintptr(p) + (uintptr(l) >> 1))
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33020a.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue33020a.dir/a.go
new file mode 100644
index 0000000..9176498
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33020a.dir/a.go
@@ -0,0 +1,13 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type FArg func(args []string) error
+
+type Command struct {
+ Name string
+ Arg1 FArg
+ Arg2 func(args []string) error
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33020a.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue33020a.dir/b.go
new file mode 100644
index 0000000..5b0f9d8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33020a.dir/b.go
@@ -0,0 +1,14 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "./a"
+
+var Cmd = &a.Command{
+ Name: "test",
+}
+
+func main() {
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33020a.go b/gcc/testsuite/go.test/test/fixedbugs/issue33020a.go
new file mode 100644
index 0000000..cfe010e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33020a.go
@@ -0,0 +1,9 @@
+// compiledir
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 33020: gollvm assert in Llvm_backend::materializeComposite
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33275.go b/gcc/testsuite/go.test/test/fixedbugs/issue33275.go
new file mode 100644
index 0000000..f2ec24d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33275.go
@@ -0,0 +1,34 @@
+// skip
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "time"
+)
+
+func main() {
+ // Make a big map.
+ m := map[int]int{}
+ for i := 0; i < 100000; i++ {
+ m[i] = i
+ }
+ c := make(chan string)
+ go func() {
+ // Print the map.
+ s := fmt.Sprintln(m)
+ c <- s
+ }()
+ go func() {
+ time.Sleep(1 * time.Millisecond)
+ // Add an extra item to the map while iterating.
+ m[-1] = -1
+ c <- ""
+ }()
+ <-c
+ <-c
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33275_run.go b/gcc/testsuite/go.test/test/fixedbugs/issue33275_run.go
new file mode 100644
index 0000000..ed03dcc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33275_run.go
@@ -0,0 +1,25 @@
+// +build !nacl,!js,!gccgo
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure we don't get an index out of bounds error
+// while trying to print a map that is concurrently modified.
+// The runtime might complain (throw) if it detects the modification,
+// so we have to run the test as a subprocess.
+
+package main
+
+import (
+ "os/exec"
+ "strings"
+)
+
+func main() {
+ out, _ := exec.Command("go", "run", "fixedbugs/issue33275.go").CombinedOutput()
+ if strings.Contains(string(out), "index out of range") {
+ panic(`go run issue33275.go reported "index out of range"`)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33308.go b/gcc/testsuite/go.test/test/fixedbugs/issue33308.go
new file mode 100644
index 0000000..5821099
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33308.go
@@ -0,0 +1,12 @@
+// errorcheck
+
+// Copyright 2020 The Go Authors. All rights reserved. Use of this
+// source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+
+// Test that the compiler does not crash on a []byte conversion of an
+// untyped expression.
+package p
+
+var v uint
+var x = []byte((1 << v) + 1) // ERROR "cannot convert|non-integer type for left operand of shift"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33355.go b/gcc/testsuite/go.test/test/fixedbugs/issue33355.go
new file mode 100644
index 0000000..c4b1e2e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33355.go
@@ -0,0 +1,147 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This code failed on arm64 in the register allocator.
+// See issue 33355.
+
+package server
+
+import (
+ "bytes"
+ "sync"
+)
+
+type client struct {
+ junk [4]int
+ mu sync.Mutex
+ srv *Server
+ gw *gateway
+ msgb [100]byte
+}
+
+type gateway struct {
+ cfg *gatewayCfg
+ outsim *sync.Map
+}
+
+type gatewayCfg struct {
+ replyPfx []byte
+}
+
+type Account struct {
+ Name string
+}
+
+type Server struct {
+ gateway *srvGateway
+}
+
+type srvGateway struct {
+ outo []*client
+}
+
+type subscription struct {
+ queue []byte
+ client *client
+}
+
+type outsie struct {
+ ni map[string]struct{}
+ sl *Sublist
+ qsubs int
+}
+
+type Sublist struct {
+}
+
+type SublistResult struct {
+ psubs []*subscription
+ qsubs [][]*subscription
+}
+
+var subPool = &sync.Pool{}
+
+func (c *client) sendMsgToGateways(acc *Account, msg, subject, reply []byte, qgroups [][]byte) {
+ var gws []*client
+ gw := c.srv.gateway
+ for i := 0; i < len(gw.outo); i++ {
+ gws = append(gws, gw.outo[i])
+ }
+ var (
+ subj = string(subject)
+ queuesa = [512]byte{}
+ queues = queuesa[:0]
+ mreply []byte
+ dstPfx []byte
+ checkReply = len(reply) > 0
+ )
+
+ sub := subPool.Get().(*subscription)
+
+ if subjectStartsWithGatewayReplyPrefix(subject) {
+ dstPfx = subject[:8]
+ }
+ for i := 0; i < len(gws); i++ {
+ gwc := gws[i]
+ if dstPfx != nil {
+ gwc.mu.Lock()
+ ok := bytes.Equal(dstPfx, gwc.gw.cfg.replyPfx)
+ gwc.mu.Unlock()
+ if !ok {
+ continue
+ }
+ } else {
+ qr := gwc.gatewayInterest(acc.Name, subj)
+ queues = queuesa[:0]
+ for i := 0; i < len(qr.qsubs); i++ {
+ qsubs := qr.qsubs[i]
+ queue := qsubs[0].queue
+ add := true
+ for _, qn := range qgroups {
+ if bytes.Equal(queue, qn) {
+ add = false
+ break
+ }
+ }
+ if add {
+ qgroups = append(qgroups, queue)
+ }
+ }
+ if len(queues) == 0 {
+ continue
+ }
+ }
+ if checkReply {
+ checkReply = false
+ mreply = reply
+ }
+ mh := c.msgb[:10]
+ mh = append(mh, subject...)
+ if len(queues) > 0 {
+ mh = append(mh, mreply...)
+ mh = append(mh, queues...)
+ }
+ sub.client = gwc
+ }
+ subPool.Put(sub)
+}
+
+func subjectStartsWithGatewayReplyPrefix(subj []byte) bool {
+ return len(subj) > 8 && string(subj[:4]) == "foob"
+}
+
+func (c *client) gatewayInterest(acc, subj string) *SublistResult {
+ ei, _ := c.gw.outsim.Load(acc)
+ var r *SublistResult
+ e := ei.(*outsie)
+ r = e.sl.Match(subj)
+ return r
+}
+
+func (s *Sublist) Match(subject string) *SublistResult {
+ return nil
+}
+
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33386.go b/gcc/testsuite/go.test/test/fixedbugs/issue33386.go
new file mode 100644
index 0000000..7b2f565
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33386.go
@@ -0,0 +1,29 @@
+// errorcheck
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that we don't get spurious follow-on errors
+// after a missing expression. Specifically, the parser
+// shouldn't skip over closing parentheses of any kind.
+
+package p
+
+func _() {
+ go func() { // no error here about goroutine
+ send <- // GCCGO_ERROR "undefined name"
+ }() // ERROR "expecting expression|expected operand"
+}
+
+func _() {
+ defer func() { // no error here about deferred function
+ 1 + // GCCGO_ERROR "value computed is not used"
+ }() // ERROR "expecting expression|expected operand"
+}
+
+func _() {
+ _ = (1 +) // ERROR "expecting expression|expected operand"
+ _ = a[2 +] // ERROR "expecting expression|expected operand|undefined name"
+ _ = []int{1, 2, 3 + } // ERROR "expecting expression|expected operand"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33438.go b/gcc/testsuite/go.test/test/fixedbugs/issue33438.go
new file mode 100644
index 0000000..e4206d7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33438.go
@@ -0,0 +1,19 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type hasPtrs struct {
+ x [2]*int
+ // Note: array size needs to be >1 to force this type to be not SSAable.
+ // The bug triggers only for OpMove, which is only used for unSSAable types.
+}
+
+func main() {
+ var x *hasPtrs // Can be local, global, or arg; nil or non-nil.
+ var y *hasPtrs = nil // Must initialize to nil.
+ *x = *y
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33460.go b/gcc/testsuite/go.test/test/fixedbugs/issue33460.go
new file mode 100644
index 0000000..d90b0a4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33460.go
@@ -0,0 +1,37 @@
+// errorcheck
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+const (
+ zero = iota
+ one
+ two
+ three
+)
+
+const iii int = 0x3
+
+func f(v int) {
+ switch v {
+ case zero, one:
+ case two, one: // ERROR "previous case at LINE-1|duplicate case in switch"
+
+ case three:
+ case 3: // ERROR "previous case at LINE-1|duplicate case in switch"
+ case iii: // ERROR "previous case at LINE-2|duplicate case in switch"
+ }
+}
+
+const b = "b"
+
+var _ = map[string]int{
+ "a": 0,
+ b: 1,
+ "a": 2, // ERROR "previous key at LINE-2|duplicate key in map literal"
+ "b": 3, // GC_ERROR "previous key at LINE-2"
+ "b": 4, // GC_ERROR "previous key at LINE-3"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33555.go b/gcc/testsuite/go.test/test/fixedbugs/issue33555.go
new file mode 100644
index 0000000..c1fcd2a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33555.go
@@ -0,0 +1,81 @@
+// +build !nacl,!js,!gccgo
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that the linker permits long call sequences.
+package main
+
+import (
+ "bytes"
+ "fmt"
+ "io/ioutil"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "strconv"
+)
+
+const start = `
+package main
+
+func main() {
+ println(f0() + 1)
+}
+`
+
+const fn = `
+//go:noinline
+func f%d() int {
+ return f%d() + 1
+}`
+
+const fnlast = `
+//go:noinline
+func f%d() int {
+ return 0
+}
+`
+
+const count = 400
+
+func main() {
+ if err := test(); err != nil {
+ fmt.Fprintln(os.Stderr, err)
+ os.Exit(1)
+ }
+}
+
+func test() error {
+ var buf bytes.Buffer
+ buf.WriteString(start)
+ for i := 0; i < count; i++ {
+ fmt.Fprintf(&buf, fn, i, i + 1)
+ }
+ fmt.Fprintf(&buf, fnlast, count)
+
+ dir, err := ioutil.TempDir("", "issue33555")
+ if err != nil {
+ return err
+ }
+ defer os.RemoveAll(dir)
+
+ fn := filepath.Join(dir, "x.go")
+ if err := ioutil.WriteFile(fn, buf.Bytes(), 0644); err != nil {
+ return err
+ }
+
+ out, err := exec.Command("go", "run", fn).CombinedOutput()
+ if err != nil {
+ return err
+ }
+
+ want := strconv.Itoa(count + 1)
+ if got := string(bytes.TrimSpace(out)); got != want {
+ return fmt.Errorf("got %q want %q", got, want)
+ }
+
+ return nil
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33724.go b/gcc/testsuite/go.test/test/fixedbugs/issue33724.go
new file mode 100644
index 0000000..a4ecddc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33724.go
@@ -0,0 +1,45 @@
+// run
+package main
+
+import (
+ "fmt"
+ "runtime/debug"
+ "strings"
+)
+
+type Inner struct {
+ Err int
+}
+
+func (i *Inner) NotExpectedInStackTrace() int {
+ if i == nil {
+ return 86
+ }
+ return 17 + i.Err
+}
+
+type Outer struct {
+ Inner
+}
+
+func ExpectedInStackTrace() {
+ var o *Outer
+ println(o.NotExpectedInStackTrace())
+}
+
+func main() {
+ defer func() {
+ if r := recover(); r != nil {
+ stacktrace := string(debug.Stack())
+ if strings.Contains(stacktrace, "NotExpectedInStackTrace") {
+ fmt.Println("FAIL, stacktrace contains NotExpectedInStackTrace")
+ }
+ if !strings.Contains(stacktrace, "ExpectedInStackTrace") {
+ fmt.Println("FAIL, stacktrace does not contain ExpectedInStackTrace")
+ }
+ } else {
+ fmt.Println("FAIL, should have panicked but did not")
+ }
+ }()
+ ExpectedInStackTrace()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33866.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue33866.dir/a.go
new file mode 100644
index 0000000..9c782c5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33866.dir/a.go
@@ -0,0 +1,18 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type Builder struct {
+ x int
+}
+
+func (tb Builder) Build() (out struct {
+ x interface{}
+ s string
+}) {
+ out.x = nil
+ out.s = "hello!"
+ return
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33866.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue33866.dir/b.go
new file mode 100644
index 0000000..aa2a322
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33866.dir/b.go
@@ -0,0 +1,15 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "./a"
+
+type (
+ ABuilder = a.Builder
+)
+
+func Bfunc() ABuilder {
+ return ABuilder{}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33866.go b/gcc/testsuite/go.test/test/fixedbugs/issue33866.go
new file mode 100644
index 0000000..220c732
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33866.go
@@ -0,0 +1,9 @@
+// compiledir
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 33866: assert in gccgo during compilation
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue33903.go b/gcc/testsuite/go.test/test/fixedbugs/issue33903.go
new file mode 100644
index 0000000..de03282
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue33903.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check that the shortcircuit pass correctly handles infinite loops.
+
+package p
+
+func f() {
+ var p, q bool
+ for {
+ p = p && q
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue34123.go b/gcc/testsuite/go.test/test/fixedbugs/issue34123.go
new file mode 100644
index 0000000..f50cd02
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue34123.go
@@ -0,0 +1,43 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure that the line number is reported correctly
+// for faulting instructions.
+
+package main
+
+import (
+ "fmt"
+ "runtime"
+)
+
+var x byte
+var p *byte
+
+//go:noinline
+func f() {
+ q := p
+ x = 11 // line 23
+ *q = 12 // line 24
+}
+func main() {
+ defer func() {
+ recover()
+ var pcs [10]uintptr
+ n := runtime.Callers(1, pcs[:])
+ frames := runtime.CallersFrames(pcs[:n])
+ for {
+ f, more := frames.Next()
+ if f.Function == "main.f" && f.Line != 24 {
+ panic(fmt.Errorf("expected line 24, got line %d", f.Line))
+ }
+ if !more {
+ break
+ }
+ }
+ }()
+ f()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue34395.go b/gcc/testsuite/go.test/test/fixedbugs/issue34395.go
new file mode 100644
index 0000000..eb5a855
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue34395.go
@@ -0,0 +1,17 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that a binary with a large data section can load. This failed on wasm.
+
+package main
+
+var test = [100 * 1024 * 1024]byte{42}
+
+func main() {
+ if test[0] != 42 {
+ panic("bad")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue34520.go b/gcc/testsuite/go.test/test/fixedbugs/issue34520.go
new file mode 100644
index 0000000..d92d4cc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue34520.go
@@ -0,0 +1,12 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f() {
+ for true {
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue34968.go b/gcc/testsuite/go.test/test/fixedbugs/issue34968.go
new file mode 100644
index 0000000..6b1dbd1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue34968.go
@@ -0,0 +1,15 @@
+// +build cgo
+// run -gcflags=all=-d=checkptr
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+// #include <stdlib.h>
+import "C"
+
+func main() {
+ C.malloc(100)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue35027.go b/gcc/testsuite/go.test/test/fixedbugs/issue35027.go
new file mode 100644
index 0000000..d4b0be5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue35027.go
@@ -0,0 +1,23 @@
+// run -gcflags=-d=checkptr
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "reflect"
+ "unsafe"
+)
+
+var s []int
+
+func main() {
+ s = []int{42}
+ h := (*reflect.SliceHeader)(unsafe.Pointer(&s))
+ x := *(*int)(unsafe.Pointer(h.Data))
+ if x != 42 {
+ panic(x)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue35073.go b/gcc/testsuite/go.test/test/fixedbugs/issue35073.go
new file mode 100644
index 0000000..dc8ce3a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue35073.go
@@ -0,0 +1,23 @@
+// run -gcflags=-d=checkptr
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that reflect.Value.UnsafeAddr/Pointer is handled
+// correctly by -d=checkptr
+
+package main
+
+import (
+ "reflect"
+ "unsafe"
+)
+
+func main() {
+ n := 10
+ m := make(map[string]string)
+
+ _ = unsafe.Pointer(reflect.ValueOf(&n).Elem().UnsafeAddr())
+ _ = unsafe.Pointer(reflect.ValueOf(&m).Elem().Pointer())
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue35157.go b/gcc/testsuite/go.test/test/fixedbugs/issue35157.go
new file mode 100644
index 0000000..c9c4899
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue35157.go
@@ -0,0 +1,20 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f() {
+ var i int
+ var b *bool
+ var s0, s1, s2 string
+
+ if *b {
+ s2 = s2[:1]
+ i = 1
+ }
+ s1 = s1[i:-i+i] + s1[-i+i:i+2]
+ s1 = s0[i:-i]
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue35291.go b/gcc/testsuite/go.test/test/fixedbugs/issue35291.go
new file mode 100644
index 0000000..5d8381c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue35291.go
@@ -0,0 +1,14 @@
+// errorcheck
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check error message for duplicated index in slice literal
+
+package p
+
+var s = []string{
+ 1: "dup",
+ 1: "dup", // ERROR "duplicate index in slice literal: 1|duplicate value for index 1"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue35576.go b/gcc/testsuite/go.test/test/fixedbugs/issue35576.go
new file mode 100644
index 0000000..8228555
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue35576.go
@@ -0,0 +1,16 @@
+// run
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check print/println(f()) is allowed where f() is multi-value.
+
+package main
+
+func f() (int16, float64, string) { return -42, 42.0, "x" }
+
+func main() {
+ print(f())
+ println(f())
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue35576.out b/gcc/testsuite/go.test/test/fixedbugs/issue35576.out
new file mode 100644
index 0000000..2aefe3e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue35576.out
@@ -0,0 +1 @@
+-42+4.200000e+001x-42 +4.200000e+001 x
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue35586.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue35586.dir/a.go
new file mode 100644
index 0000000..f509b25
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue35586.dir/a.go
@@ -0,0 +1,9 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+func D(_ string, _ int) (uint64, string) {
+ return 101, "bad"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue35586.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue35586.dir/b.go
new file mode 100644
index 0000000..e8b674f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue35586.dir/b.go
@@ -0,0 +1,11 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "a"
+
+func F(addr string) (uint64, string) {
+ return a.D(addr, 32)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue35586.go b/gcc/testsuite/go.test/test/fixedbugs/issue35586.go
new file mode 100644
index 0000000..0d522b1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue35586.go
@@ -0,0 +1,11 @@
+// compiledir
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 35586: gollvm compiler crash building docker-ce; the problem
+// involves inlining a function that has multiple no-name ("_") parameters.
+//
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue35652.go b/gcc/testsuite/go.test/test/fixedbugs/issue35652.go
new file mode 100644
index 0000000..178a84d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue35652.go
@@ -0,0 +1,28 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func e() {
+ for true {
+ if true {
+ continue
+ }
+ }
+}
+
+func g() {}
+
+func f() {
+ i := 0
+ if true {
+ i++
+ }
+ for true {
+ continue
+ g()
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue36085.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue36085.dir/a.go
new file mode 100644
index 0000000..07cabcd
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue36085.dir/a.go
@@ -0,0 +1,3 @@
+package a
+
+type W = map[int32]interface{}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue36085.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue36085.dir/b.go
new file mode 100644
index 0000000..c5ee269
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue36085.dir/b.go
@@ -0,0 +1,8 @@
+package main
+
+import "a"
+
+var w a.W
+var X interface{} = &w
+
+func main() {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue36085.go b/gcc/testsuite/go.test/test/fixedbugs/issue36085.go
new file mode 100644
index 0000000..69d4490
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue36085.go
@@ -0,0 +1,11 @@
+// compiledir
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 36085: gccgo compiler did not generate type descriptor
+// for pointer to type alias defined in another package, causing
+// linking error.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue36259.go b/gcc/testsuite/go.test/test/fixedbugs/issue36259.go
new file mode 100644
index 0000000..246eb35
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue36259.go
@@ -0,0 +1,28 @@
+// compile
+
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func rotate(s []int, m int) {
+ l := len(s)
+ m = m % l
+ buf := make([]int, m)
+
+ copy(buf, s)
+ copy(s, s[m:])
+ copy(s[l-m:], buf)
+}
+
+func main() {
+ a0 := [...]int{1,2,3,4,5}
+ println(a0[0])
+
+ rotate(a0[:], 1)
+ println(a0[0])
+
+ rotate(a0[:], -3)
+ println(a0[0])
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue36437.go b/gcc/testsuite/go.test/test/fixedbugs/issue36437.go
new file mode 100644
index 0000000..c7a11d2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue36437.go
@@ -0,0 +1,49 @@
+// run
+
+// +build !nacl,!js,gc
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Tests that when non-existent files are passed to the
+// compiler, such as in:
+// go tool compile foo
+// we don't print the beginning position:
+// foo:0: open foo: no such file or directory
+// but instead omit it and print out:
+// open foo: no such file or directory
+
+package main
+
+import (
+ "fmt"
+ "io/ioutil"
+ "os"
+ "os/exec"
+ "regexp"
+)
+
+func main() {
+ tmpDir, err := ioutil.TempDir("", "issue36437")
+ if err != nil {
+ panic(err)
+ }
+ defer os.RemoveAll(tmpDir)
+
+ msgOrErr := func(msg []byte, err error) string {
+ if len(msg) == 0 && err != nil {
+ return err.Error()
+ }
+ return string(msg)
+ }
+
+ filename := "non-existent.go"
+ output, err := exec.Command("go", "tool", "compile", filename).CombinedOutput()
+ got := msgOrErr(output, err)
+
+ regFilenamePos := regexp.MustCompile(filename + ":\\d+")
+ if regFilenamePos.MatchString(got) {
+ fmt.Printf("Error message must not contain filename:pos, but got:\n%q\n", got)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue36516.go b/gcc/testsuite/go.test/test/fixedbugs/issue36516.go
new file mode 100644
index 0000000..d4e28b6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue36516.go
@@ -0,0 +1,27 @@
+// +build cgo,linux,amd64
+// run -race
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "testing"
+ "unsafe"
+)
+
+var buf [2]byte
+var x unsafe.Pointer = unsafe.Pointer(&buf[0])
+
+func main() {
+ n := testing.AllocsPerRun(1000, func() {
+ x = unsafe.Pointer(uintptr(x) + 1)
+ x = unsafe.Pointer(uintptr(x) - 1)
+ })
+ if n > 0 {
+ panic(fmt.Sprintf("too many allocations; want 0 got %f", n))
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue36705.go b/gcc/testsuite/go.test/test/fixedbugs/issue36705.go
new file mode 100644
index 0000000..83e4136
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue36705.go
@@ -0,0 +1,27 @@
+// +build cgo
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+// #include <stdlib.h>
+// #include <unistd.h>
+import "C"
+
+import "os"
+
+func main() {
+ os.Setenv("FOO", "bar")
+ s := C.GoString(C.getenv(C.CString("FOO")))
+ if s != "bar" {
+ panic("bad setenv, environment variable only has value \"" + s + "\"")
+ }
+ os.Unsetenv("FOO")
+ s = C.GoString(C.getenv(C.CString("FOO")))
+ if s != "" {
+ panic("bad unsetenv, environment variable still has value \"" + s + "\"")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue37246.go b/gcc/testsuite/go.test/test/fixedbugs/issue37246.go
new file mode 100644
index 0000000..fe476da
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue37246.go
@@ -0,0 +1,23 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ var n, a, b int64
+ for i := int64(2); i < 10; i++ {
+ for j := i; j < 10; j++ {
+ if ((n % (i * j)) == 0) && (j > 1 && (n/(i*j)) == 1) {
+ a, b = i, 0
+ a = n / (i * j)
+ }
+ }
+ }
+
+ if a != b && a != n {
+ println("yes")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue37716.go b/gcc/testsuite/go.test/test/fixedbugs/issue37716.go
new file mode 100644
index 0000000..42d66dff
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue37716.go
@@ -0,0 +1,32 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "reflect"
+
+// complicated enough to require a compile-generated hash function
+type K struct {
+ a, b int32 // these get merged by the compiler into a single field, something typehash doesn't do
+ c float64
+}
+
+func main() {
+ k := K{a: 1, b: 2, c: 3}
+
+ // Make a reflect map.
+ m := reflect.MakeMap(reflect.MapOf(reflect.TypeOf(K{}), reflect.TypeOf(true)))
+ m.SetMapIndex(reflect.ValueOf(k), reflect.ValueOf(true))
+
+ // The binary must not contain the type map[K]bool anywhere, or reflect.MapOf
+ // will use that type instead of making a new one. So use an equivalent named type.
+ type M map[K]bool
+ var x M
+ reflect.ValueOf(&x).Elem().Set(m)
+ if !x[k] {
+ panic("key not found")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue37753.go b/gcc/testsuite/go.test/test/fixedbugs/issue37753.go
new file mode 100644
index 0000000..ac311e3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue37753.go
@@ -0,0 +1,18 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+//go:noinline
+func f(a, b uint) int {
+ return int(a-b) / 8
+}
+
+func main() {
+ if x := f(1, 2); x != 0 {
+ panic(x)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue37975.go b/gcc/testsuite/go.test/test/fixedbugs/issue37975.go
new file mode 100644
index 0000000..a4e8f1f1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue37975.go
@@ -0,0 +1,54 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure runtime.panicmakeslice* are called.
+
+package main
+
+import "strings"
+
+func main() {
+ // Test typechecking passes if len is valid
+ // but cap is out of range for len's type.
+ var x byte
+ _ = make([]int, x, 300)
+
+ capOutOfRange := func() {
+ i := 2
+ s := make([]int, i, 1)
+ s[0] = 1
+ }
+ lenOutOfRange := func() {
+ i := -1
+ s := make([]int, i, 3)
+ s[0] = 1
+ }
+
+ tests := []struct {
+ f func()
+ panicStr string
+ }{
+ {capOutOfRange, "cap out of range"},
+ {lenOutOfRange, "len out of range"},
+ }
+
+ for _, tc := range tests {
+ shouldPanic(tc.panicStr, tc.f)
+ }
+
+}
+
+func shouldPanic(str string, f func()) {
+ defer func() {
+ err := recover()
+ runtimeErr := err.(error).Error()
+ if !strings.Contains(runtimeErr, str) {
+ panic("got panic " + runtimeErr + ", want " + str)
+ }
+ }()
+
+ f()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue38093.go b/gcc/testsuite/go.test/test/fixedbugs/issue38093.go
new file mode 100644
index 0000000..db92664
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue38093.go
@@ -0,0 +1,49 @@
+// +build js
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test race condition between timers and wasm calls that led to memory corruption.
+
+package main
+
+import (
+ "os"
+ "syscall/js"
+ "time"
+)
+
+func main() {
+ ch1 := make(chan struct{})
+
+ go func() {
+ for {
+ time.Sleep(5 * time.Millisecond)
+ ch1 <- struct{}{}
+ }
+ }()
+ go func() {
+ for {
+ time.Sleep(8 * time.Millisecond)
+ ch1 <- struct{}{}
+ }
+ }()
+ go func() {
+ time.Sleep(2 * time.Second)
+ os.Exit(0)
+ }()
+
+ for range ch1 {
+ ch2 := make(chan struct{}, 1)
+ f := js.FuncOf(func(this js.Value, args []js.Value) interface{} {
+ ch2 <- struct{}{}
+ return nil
+ })
+ defer f.Release()
+ fn := js.Global().Get("Function").New("cb", "cb();")
+ fn.Invoke(f)
+ <-ch2
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue38117.go b/gcc/testsuite/go.test/test/fixedbugs/issue38117.go
new file mode 100644
index 0000000..11edef7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue38117.go
@@ -0,0 +1,17 @@
+// errorcheck
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// cmd/compile erroneously rejected conversions of constant values
+// between int/float and complex types.
+
+package p
+
+const (
+ _ = int(complex64(int(0)))
+ _ = float64(complex128(float64(0)))
+
+ _ = int8(complex128(1000)) // ERROR "overflow"
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue38356.go b/gcc/testsuite/go.test/test/fixedbugs/issue38356.go
new file mode 100644
index 0000000..a1c7f46
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue38356.go
@@ -0,0 +1,54 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure floating point operations that generate flags
+// are scheduled correctly on s390x.
+
+package p
+
+func f1(x, y float64, z int) float64 {
+ a := x + y // generate flags
+ if z == 0 { // create basic block that does not clobber flags
+ return a
+ }
+ if a > 0 { // use flags in different basic block
+ return y
+ }
+ return x
+}
+
+func f2(x, y float64, z int) float64 {
+ a := x - y // generate flags
+ if z == 0 { // create basic block that does not clobber flags
+ return a
+ }
+ if a > 0 { // use flags in different basic block
+ return y
+ }
+ return x
+}
+
+func f3(x, y float32, z int) float32 {
+ a := x + y // generate flags
+ if z == 0 { // create basic block that does not clobber flags
+ return a
+ }
+ if a > 0 { // use flags in different basic block
+ return y
+ }
+ return x
+}
+
+func f4(x, y float32, z int) float32 {
+ a := x - y // generate flags
+ if z == 0 { // create basic block that does not clobber flags
+ return a
+ }
+ if a > 0 { // use flags in different basic block
+ return y
+ }
+ return x
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue38359.go b/gcc/testsuite/go.test/test/fixedbugs/issue38359.go
new file mode 100644
index 0000000..a7550c7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue38359.go
@@ -0,0 +1,19 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure NaN-NaN compiles correctly.
+
+package p
+
+func f() {
+ var st struct {
+ f float64
+ _, _ string
+ }
+
+ f := 1e308
+ st.f = 2*f - 2*f
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue38690.go b/gcc/testsuite/go.test/test/fixedbugs/issue38690.go
new file mode 100644
index 0000000..af8688d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue38690.go
@@ -0,0 +1,65 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure that literal value can be passed to struct
+// blank field of array/struct type, see issue #38690.
+
+package main
+
+type A1 = [0]int
+type A2 = [1]int
+
+type S1 struct{}
+
+type S2 struct {
+ x int
+}
+
+type S3 = struct{}
+
+type S4 = struct{ x int }
+
+type S struct {
+ x int
+ _ [0]int
+ _ [1]int
+ _ A1
+ _ A2
+ _ S1
+ _ S2
+ _ S3
+ _ S4
+ _ [1]S4
+}
+
+var s = S{1, [0]int{}, [1]int{1}, A1{}, A2{1}, S1{}, S2{1}, S3{}, S4{1}, [1]S4{}}
+
+func main() {
+ f1()
+ mustPanic(f2)
+ mustPanic(f3)
+}
+
+func f1() {
+ _ = S{1, [0]int{}, [1]int{1}, A1{}, A2{1}, S1{}, S2{1}, S3{}, S4{1}, [1]S4{}}
+}
+
+func f2() {
+ _ = S{1, [0]int{}, [1]int{1}, A1{}, A2{1}, S1{}, S2{1}, S3{}, func() S4 { panic("") }(), [1]S4{}}
+}
+
+func f3() {
+ _ = S{1, [0]int{}, [1]int{1}, A1{}, A2{1}, S1{}, S2{1}, S3{}, S4{1}, func() [1]S4 { panic("") }()}
+}
+
+func mustPanic(f func()) {
+ defer func() {
+ if recover() == nil {
+ panic("expected panic, got nil")
+ }
+ }()
+ f()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue38745.go b/gcc/testsuite/go.test/test/fixedbugs/issue38745.go
new file mode 100644
index 0000000..7d4283b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue38745.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type t struct{ x int }
+
+func f1() {
+ t{}.M() // ERROR "t{}.M undefined \(type t has no field or method M\)|undefined field or method .*M"
+ t{x: 1}.M() // ERROR "t{...}.M undefined \(type t has no field or method M\)|undefined field or method .*M"
+}
+
+func f2() (*t, error) {
+ return t{}.M() // ERROR "t{}.M undefined \(type t has no field or method M\)|undefined field or method .*M|not enough arguments"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue38746.go b/gcc/testsuite/go.test/test/fixedbugs/issue38746.go
new file mode 100644
index 0000000..c670349
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue38746.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var g *uint64
+
+func main() {
+ var v uint64
+ g = &v
+ v &^= (1 << 31)
+ v |= 1 << 63
+ v &^= (1 << 63)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue38905.go b/gcc/testsuite/go.test/test/fixedbugs/issue38905.go
new file mode 100644
index 0000000..6f411b8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue38905.go
@@ -0,0 +1,18 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Make sure that literal value can be passed to struct
+// blank field with expressions where candiscard(value)
+// returns false, see #38905.
+
+package p
+
+type t struct{ _ u }
+type u [10]struct{ f int }
+
+func f(x int) t { return t{u{{1 / x}, {1 % x}}} }
+func g(p *int) t { return t{u{{*p}}} }
+func h(s []int) t { return t{u{{s[0]}}} }
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue38916.go b/gcc/testsuite/go.test/test/fixedbugs/issue38916.go
new file mode 100644
index 0000000..fb2ee34
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue38916.go
@@ -0,0 +1,14 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f(b bool, c complex128) func(complex128) complex128 {
+ return func(p complex128) complex128 {
+ b = (p+1i == 0) && b
+ return (p + 2i) * (p + 3i - c)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue39292.go b/gcc/testsuite/go.test/test/fixedbugs/issue39292.go
new file mode 100644
index 0000000..7dac2e5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue39292.go
@@ -0,0 +1,29 @@
+// errorcheck -0 -m -l
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type t [20000]*int
+
+func (t) f() {
+}
+
+func x() {
+ x := t{}.f // ERROR "t{}.f escapes to heap"
+ x()
+}
+
+func y() {
+ var i int // ERROR "moved to heap: i"
+ y := (&t{&i}).f // ERROR "\(&t{...}\).f escapes to heap" "&t{...} escapes to heap"
+ y()
+}
+
+func z() {
+ var i int // ERROR "moved to heap: i"
+ z := t{&i}.f // ERROR "t{...}.f escapes to heap"
+ z()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue39459.go b/gcc/testsuite/go.test/test/fixedbugs/issue39459.go
new file mode 100644
index 0000000..de78a17
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue39459.go
@@ -0,0 +1,22 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type T struct { // big enough to be an unSSAable type
+ a, b, c, d, e, f int
+}
+
+func f(x interface{}, p *int) {
+ _ = *p // trigger nil check here, removing it from below
+ switch x := x.(type) {
+ case *T:
+ // Zero twice, so one of them will be removed by the deadstore pass
+ *x = T{}
+ *p = 0 // store op to prevent Zero ops from being optimized by the earlier opt pass rewrite rules
+ *x = T{}
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue39505.go b/gcc/testsuite/go.test/test/fixedbugs/issue39505.go
new file mode 100644
index 0000000..711b562
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue39505.go
@@ -0,0 +1,31 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f() {
+ if len([]int{})-1 < len([]int{}) {
+ }
+
+ var st struct {
+ i int
+ }
+ g := func() string {
+ return ""
+ }
+ h := func(string) string {
+ return g() + g()
+ }
+ s, i := "", 0
+
+ st.i = len(s)
+ i = len(h(s[i+0:i+1])) + len(s[len(s)+1:i+1])
+ s = s[(len(s[i+1:len(s)+1])+1):len(h(""))+1] + (s[i+1 : len([]int{})+i])
+ i = 1 + len([]int{len([]string{s[i+len([]int{}) : len(s)+i]})})
+
+ var ch chan int
+ ch <- len(h("")) - len(s)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue39505b.go b/gcc/testsuite/go.test/test/fixedbugs/issue39505b.go
new file mode 100644
index 0000000..ecf1ab6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue39505b.go
@@ -0,0 +1,183 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ ff := []func(){lt_f1, lt_f2, lt_f3, lt_f4, lt_f5, lt_f6, lt_f7, lt_f8, lt_f9,
+ gt_f1, gt_f2, gt_f3, le_f1, le_f2, le_f3, ge_f1, ge_f2, ge_f3}
+
+ for _, f := range ff {
+ f()
+ }
+}
+
+func lt_f1() {
+ const c = 1
+ var a = 0
+ var v *int = &a
+ if *v-c < len([]int{}) {
+ } else {
+ panic("bad")
+ }
+}
+
+func lt_f2() {
+ const c = 10
+ var a = 0
+ var v *int = &a
+ if *v+c < len([]int{}) {
+ panic("bad")
+ }
+}
+
+func lt_f3() {
+ const c = -10
+ var a = 0
+ var v *int = &a
+ if *v|0xff+c < len([]int{}) {
+ panic("bad")
+ }
+}
+
+func lt_f4() {
+ const c = 10
+ var a = 0
+ var v *int = &a
+ if *v|0x0f+c < len([]int{}) {
+ panic("bad")
+ }
+}
+
+func lt_f5() {
+ const c int32 = 1
+ var a int32 = 0
+ var v *int32 = &a
+ if *v-c < int32(len([]int32{})) {
+ } else {
+ panic("bad")
+ }
+}
+
+func lt_f6() {
+ const c int32 = 10
+ var a int32 = 0
+ var v *int32 = &a
+ if *v+c < int32(len([]int32{})) {
+ panic("bad")
+ }
+}
+
+func lt_f7() {
+ const c int32 = -10
+ var a int32 = 0
+ var v *int32 = &a
+ if *v|0xff+c < int32(len([]int{})) {
+ panic("bad")
+ }
+}
+
+func lt_f8() {
+ const c int32 = 10
+ var a int32 = 0
+ var v *int32 = &a
+ if *v|0x0f+c < int32(len([]int{})) {
+ panic("bad")
+ }
+}
+
+func lt_f9() {
+ const c int32 = -10
+ var a int32 = 0
+ var v *int32 = &a
+ if *v|0x0a+c < int32(len([]int{})) {
+ panic("bad")
+ }
+}
+
+func gt_f1() {
+ const c = 1
+ var a = 0
+ var v *int = &a
+ if len([]int{}) > *v-c {
+ } else {
+ panic("bad")
+ }
+}
+
+func gt_f2() {
+ const c = 10
+ var a = 0
+ var v *int = &a
+ if len([]int{}) > *v|0x0f+c {
+ panic("bad")
+ }
+}
+
+func gt_f3() {
+ const c int32 = 10
+ var a int32 = 0
+ var v *int32 = &a
+ if int32(len([]int{})) > *v|0x0f+c {
+ panic("bad")
+ }
+}
+
+func le_f1() {
+ const c = -10
+ var a = 0
+ var v *int = &a
+ if *v|0xff+c <= len([]int{}) {
+ panic("bad")
+ }
+}
+
+func le_f2() {
+ const c = 0xf
+ var a = 0
+ var v *int = &a
+ if *v|0xf-c <= len([]int{}) {
+ } else {
+ panic("bad")
+ }
+}
+
+func le_f3() {
+ const c int32 = -10
+ var a int32 = 0
+ var v *int32 = &a
+ if *v|0xff+c <= int32(len([]int{})) {
+ panic("bad")
+ }
+}
+
+func ge_f1() {
+ const c = -10
+ var a = 0
+ var v *int = &a
+ if len([]int{}) >= *v|0xff+c {
+ panic("bad")
+ }
+}
+
+func ge_f2() {
+ const c int32 = 10
+ var a int32 = 0
+ var v *int32 = &a
+ if int32(len([]int{})) >= *v|0x0f+c {
+ panic("bad")
+ }
+}
+
+func ge_f3() {
+ const c = -10
+ var a = 0
+ var v *int = &a
+ if len([]int{}) >= *v|0x0a+c {
+ } else {
+ panic("bad")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue39541.go b/gcc/testsuite/go.test/test/fixedbugs/issue39541.go
new file mode 100644
index 0000000..fba5291
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue39541.go
@@ -0,0 +1,33 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "reflect"
+
+func sub(args []reflect.Value) []reflect.Value {
+ type A struct {
+ s int
+ t int
+ }
+ return []reflect.Value{reflect.ValueOf(A{1, 2})}
+}
+
+func main() {
+ f := reflect.MakeFunc(reflect.TypeOf((func() interface{})(nil)), sub).Interface().(func() interface{})
+ c := make(chan bool, 100)
+ for i := 0; i < 100; i++ {
+ go func() {
+ for j := 0; j < 10000; j++ {
+ f()
+ }
+ c <- true
+ }()
+ }
+ for i := 0; i < 100; i++ {
+ <-c
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue39651.go b/gcc/testsuite/go.test/test/fixedbugs/issue39651.go
new file mode 100644
index 0000000..256a34d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue39651.go
@@ -0,0 +1,26 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that float -> integer conversion doesn't clobber
+// flags.
+
+package main
+
+//go:noinline
+func f(x, y float64, a, b *bool, r *int64) {
+ *a = x < y // set flags
+ *r = int64(x) // clobber flags
+ *b = x == y // use flags
+}
+
+func main() {
+ var a, b bool
+ var r int64
+ f(1, 1, &a, &b, &r)
+ if a || !b {
+ panic("comparison incorrect")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue40367.go b/gcc/testsuite/go.test/test/fixedbugs/issue40367.go
new file mode 100644
index 0000000..0dc5ad7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue40367.go
@@ -0,0 +1,41 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func case1() {
+ rates := []int32{1,2,3,4,5,6}
+ var sink [6]int
+ j := len(sink)
+ for star, _ := range rates {
+ if star+1 < 1 {
+ panic("")
+ }
+ j--
+ sink[j] = j
+ }
+}
+
+func case2() {
+ i := 0
+ var sink [3]int
+ j := len(sink)
+top:
+ j--
+ sink[j] = j
+ if i < 2 {
+ i++
+ if i < 1 {
+ return
+ }
+ goto top
+ }
+}
+
+func main() {
+ case1()
+ case2()
+} \ No newline at end of file
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue40629.go b/gcc/testsuite/go.test/test/fixedbugs/issue40629.go
new file mode 100644
index 0000000..c6ef408
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue40629.go
@@ -0,0 +1,69 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "fmt"
+
+const N = 40
+
+func main() {
+ var x [N]int // stack-allocated memory
+ for i := range x {
+ x[i] = 0x999
+ }
+
+ // This defer checks to see if x is uncorrupted.
+ defer func(p *[N]int) {
+ recover()
+ for i := range p {
+ if p[i] != 0x999 {
+ for j := range p {
+ fmt.Printf("p[%d]=0x%x\n", j, p[j])
+ }
+ panic("corrupted stack variable")
+ }
+ }
+ }(&x)
+
+ // This defer starts a new goroutine, which will (hopefully)
+ // overwrite x on the garbage stack.
+ defer func() {
+ c := make(chan bool)
+ go func() {
+ useStack(1000)
+ c <- true
+ }()
+ <-c
+
+ }()
+
+ // This defer causes a stack copy.
+ // The old stack is now garbage.
+ defer func() {
+ useStack(1000)
+ }()
+
+ // Trigger a segfault.
+ *g = 0
+
+ // Make the return statement unreachable.
+ // That makes the stack map at the deferreturn call empty.
+ // In particular, the argument to the first defer is not
+ // marked as a pointer, so it doesn't get adjusted
+ // during the stack copy.
+ for {
+ }
+}
+
+var g *int64
+
+func useStack(n int) {
+ if n == 0 {
+ return
+ }
+ useStack(n - 1)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue40746.go b/gcc/testsuite/go.test/test/fixedbugs/issue40746.go
new file mode 100644
index 0000000..235282f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue40746.go
@@ -0,0 +1,19 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f(x byte, b bool) byte {
+ var c byte
+ if b {
+ c = 1
+ }
+
+ if int8(c) < 0 {
+ x++
+ }
+ return x
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue40917.go b/gcc/testsuite/go.test/test/fixedbugs/issue40917.go
new file mode 100644
index 0000000..2128be5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue40917.go
@@ -0,0 +1,23 @@
+// run -gcflags=-d=checkptr
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "unsafe"
+
+func main() {
+ var x [2]uint64
+ a := unsafe.Pointer(&x[1])
+
+ b := a
+ b = unsafe.Pointer(uintptr(b) + 2)
+ b = unsafe.Pointer(uintptr(b) - 1)
+ b = unsafe.Pointer(uintptr(b) &^ 1)
+
+ if a != b {
+ panic("pointer arithmetic failed")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue40954.go b/gcc/testsuite/go.test/test/fixedbugs/issue40954.go
new file mode 100644
index 0000000..53e9ccf
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue40954.go
@@ -0,0 +1,35 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "unsafe"
+)
+
+//go:notinheap
+type S struct{ x int }
+
+func main() {
+ var i int
+ p := (*S)(unsafe.Pointer(uintptr(unsafe.Pointer(&i))))
+ v := uintptr(unsafe.Pointer(p))
+ // p is a pointer to a go:notinheap type. Like some C libraries,
+ // we stored an integer in that pointer. That integer just happens
+ // to be the address of i.
+ // v is also the address of i.
+ // p has a base type which is marked go:notinheap, so it
+ // should not be adjusted when the stack is copied.
+ recurse(100, p, v)
+}
+func recurse(n int, p *S, v uintptr) {
+ if n > 0 {
+ recurse(n-1, p, v)
+ }
+ if uintptr(unsafe.Pointer(p)) != v {
+ panic("adjusted notinheap pointer")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue41247.go b/gcc/testsuite/go.test/test/fixedbugs/issue41247.go
new file mode 100644
index 0000000..c5e495b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue41247.go
@@ -0,0 +1,11 @@
+// errorcheck
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f() [2]int {
+ return [...]int{2: 0} // ERROR "cannot use \[\.\.\.\]int{...} \(type \[3\]int\)|incompatible type"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue41440.go b/gcc/testsuite/go.test/test/fixedbugs/issue41440.go
new file mode 100644
index 0000000..0d911f0
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue41440.go
@@ -0,0 +1,14 @@
+// errorcheck
+
+// Copyright 2020 The Go Authors. All rights reserved. Use of this
+// source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+
+package p
+
+func f(...int) {}
+
+func g() {
+ var x []int
+ f(x, x...) // ERROR "have \(\[\]int, \.\.\.int\)|too many arguments"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue41500.go b/gcc/testsuite/go.test/test/fixedbugs/issue41500.go
new file mode 100644
index 0000000..82dca34
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue41500.go
@@ -0,0 +1,20 @@
+// errorcheck
+
+// Copyright 2020 The Go Authors. All rights reserved. Use of this
+// source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+
+package p
+
+type s struct {
+ slice []int
+}
+
+func f() {
+ var x *s
+
+ _ = x == nil || len(x.slice) // ERROR "invalid operation: .+ \(operator \|\| not defined on int\)|incompatible types"
+ _ = len(x.slice) || x == nil // ERROR "invalid operation: .+ \(operator \|\| not defined on int\)|incompatible types"
+ _ = x == nil && len(x.slice) // ERROR "invalid operation: .+ \(operator && not defined on int\)|incompatible types"
+ _ = len(x.slice) && x == nil // ERROR "invalid operation: .+ \(operator && not defined on int\)|incompatible types"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue41575.go b/gcc/testsuite/go.test/test/fixedbugs/issue41575.go
new file mode 100644
index 0000000..4568730
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue41575.go
@@ -0,0 +1,36 @@
+// errorcheck
+
+// Copyright 2020 The Go Authors. All rights reserved. Use of this
+// source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+
+package p
+
+type T1 struct { // ERROR "invalid recursive type T1\n\tLINE: T1 refers to\n\tLINE+4: T2 refers to\n\tLINE: T1$|invalid recursive type"
+ f2 T2
+}
+
+type T2 struct { // GCCGO_ERROR "invalid recursive type"
+ f1 T1
+}
+
+type a b // GCCGO_ERROR "invalid recursive type"
+type b c // ERROR "invalid recursive type b\n\tLINE: b refers to\n\tLINE+1: c refers to\n\tLINE: b$|invalid recursive type"
+type c b // GCCGO_ERROR "invalid recursive type"
+
+type d e
+type e f
+type f f // ERROR "invalid recursive type f\n\tLINE: f refers to\n\tLINE: f$|invalid recursive type"
+
+type g struct { // ERROR "invalid recursive type g\n\tLINE: g refers to\n\tLINE: g$|invalid recursive type"
+ h struct {
+ g
+ }
+}
+
+type w x
+type x y // ERROR "invalid recursive type x\n\tLINE: x refers to\n\tLINE+1: y refers to\n\tLINE+2: z refers to\n\tLINE: x$|invalid recursive type"
+type y struct{ z } // GCCGO_ERROR "invalid recursive type"
+type z [10]x
+
+type w2 w // refer to the type loop again
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue41680.go b/gcc/testsuite/go.test/test/fixedbugs/issue41680.go
new file mode 100644
index 0000000..9dfeb7d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue41680.go
@@ -0,0 +1,21 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func F(s string) bool {
+ const m = 16
+ const n = 1e5
+ _ = make([]int, n)
+ return len(s) < n*m
+}
+
+func G() {
+ const n = 1e5
+ _ = make([]int, n)
+ f := n
+ var _ float64 = f
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue41736.go b/gcc/testsuite/go.test/test/fixedbugs/issue41736.go
new file mode 100644
index 0000000..36f127f4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue41736.go
@@ -0,0 +1,105 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type I struct {
+ x int64
+}
+
+type F struct {
+ x float64
+}
+
+type C struct {
+ x *complex128
+}
+
+type D struct {
+ x complex64
+}
+
+type A [1]*complex128
+
+//go:noinline
+func (i I) X() C {
+ cx := complex(0, float64(i.x))
+ return C{&cx}
+}
+
+//go:noinline
+func (f F) X() C {
+ cx := complex(f.x, 0)
+ return C{&cx}
+}
+
+//go:noinline
+func (c C) X() C {
+ cx := complex(imag(*c.x), real(*c.x))
+ return C{&cx}
+}
+
+//go:noinline
+func (d D) X() C {
+ cx := complex(float64(imag(d.x)), -float64(real(d.x)))
+ return C{&cx}
+}
+
+//go:noinline
+func (a A) X() C {
+ cx := complex(-float64(imag(*a[0])), float64(real(*a[0])))
+ return C{&cx}
+}
+
+//go:noinline
+func (i I) id() I {
+ return i
+}
+
+//go:noinline
+func (f F) id() F {
+ return f
+}
+
+//go:noinline
+func (c C) id() C {
+ return c
+}
+
+//go:noinline
+func (d D) id() D {
+ return d
+}
+
+//go:noinline
+func (a A) id() A {
+ return a
+}
+
+type T interface {
+ X() C
+}
+
+func G(x []T) []T {
+ var y []T
+ for _, a := range x {
+ var v T
+ switch u := a.(type) {
+ case I:
+ v = u.id()
+ case F:
+ v = u.id()
+ case C:
+ v = u.id()
+ case D:
+ v = u.id()
+ case A:
+ v = u.id()
+ }
+ y = append(y, v)
+ }
+ return y
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue41780.go b/gcc/testsuite/go.test/test/fixedbugs/issue41780.go
new file mode 100644
index 0000000..632c144
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue41780.go
@@ -0,0 +1,39 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Checks that conversion of CMP(x,-y) -> CMN(x,y) is only applied in correct context.
+
+package main
+
+type decimal struct {
+ d [8]byte // digits, big-endian representation
+ dp int // decimal point
+}
+
+var powtab = []int{1, 3, 6, 9, 13, 16, 19, 23, 26}
+
+//go:noinline
+func foo(d *decimal) int {
+ exp := int(d.d[1])
+ if d.dp < 0 || d.dp == 0 && d.d[0] < '5' {
+ var n int
+ if -d.dp >= len(powtab) {
+ n = 27
+ } else {
+ n = powtab[-d.dp] // incorrect CMP -> CMN substitution causes indexing panic.
+ }
+ exp += n
+ }
+ return exp
+}
+
+func main() {
+ var d decimal
+ d.d[0] = '1'
+ if foo(&d) != 1 {
+ println("FAILURE (though not the one this test was written to catch)")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue41872.go b/gcc/testsuite/go.test/test/fixedbugs/issue41872.go
new file mode 100644
index 0000000..837d61a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue41872.go
@@ -0,0 +1,26 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved. Use of this
+// source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+
+package main
+
+//go:noinline
+func f8(x int32) bool {
+ return byte(x&0xc0) == 64
+}
+
+//go:noinline
+func f16(x int32) bool {
+ return uint16(x&0x8040) == 64
+}
+
+func main() {
+ if !f8(64) {
+ panic("wanted true, got false")
+ }
+ if !f16(64) {
+ panic("wanted true, got false")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue42032.go b/gcc/testsuite/go.test/test/fixedbugs/issue42032.go
new file mode 100644
index 0000000..c456b1d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue42032.go
@@ -0,0 +1,27 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved. Use of this
+// source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+
+package main
+
+//go:notinheap
+type NIH struct {
+}
+
+type T struct {
+ x *NIH
+ p *int
+}
+
+var y NIH
+var z int
+
+func main() {
+ a := []T{{&y, &z}}
+ a = append(a, T{&y, &z})
+ if a[1].x == nil {
+ panic("pointer not written")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue42058a.go b/gcc/testsuite/go.test/test/fixedbugs/issue42058a.go
new file mode 100644
index 0000000..722f86e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue42058a.go
@@ -0,0 +1,13 @@
+// errorcheck
+
+// Copyright 2020 The Go Authors. All rights reserved. Use of this
+// source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+
+package p
+
+var c chan [2 << 16]byte // GC_ERROR "channel element type too large"
+
+type T [1 << 17]byte
+
+var x chan T // GC_ERROR "channel element type too large"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue42058b.go b/gcc/testsuite/go.test/test/fixedbugs/issue42058b.go
new file mode 100644
index 0000000..71a280f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue42058b.go
@@ -0,0 +1,13 @@
+// errorcheck
+
+// Copyright 2020 The Go Authors. All rights reserved. Use of this
+// source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+
+package p
+
+var c chan [2 << 16]byte // GC_ERROR "channel element type too large"
+
+func f() {
+ _ = 42
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue42075.go b/gcc/testsuite/go.test/test/fixedbugs/issue42075.go
new file mode 100644
index 0000000..af85fb2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue42075.go
@@ -0,0 +1,16 @@
+// errorcheck
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+import "unsafe"
+
+type T struct { // ERROR "recursive type"
+ x int
+ p unsafe.Pointer
+
+ f T
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue42076.go b/gcc/testsuite/go.test/test/fixedbugs/issue42076.go
new file mode 100644
index 0000000..3e95481
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue42076.go
@@ -0,0 +1,21 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved. Use of this
+// source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+
+package main
+
+import "reflect"
+
+//go:notinheap
+type NIH struct {
+}
+
+var x, y NIH
+
+func main() {
+ if reflect.DeepEqual(&x, &y) != true {
+ panic("should report true")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue4215.go b/gcc/testsuite/go.test/test/fixedbugs/issue4215.go
new file mode 100644
index 0000000..be9fc74
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue4215.go
@@ -0,0 +1,53 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func foo() (int, int) {
+ return 2.3 // ERROR "not enough arguments to return\n\thave \(number\)\n\twant \(int, int\)|not enough arguments to return"
+}
+
+func foo2() {
+ return int(2), 2 // ERROR "too many arguments to return\n\thave \(int, number\)\n\twant \(\)|return with value in function with no return type"
+}
+
+func foo3(v int) (a, b, c, d int) {
+ if v >= 0 {
+ return 1 // ERROR "not enough arguments to return\n\thave \(number\)\n\twant \(int, int, int, int\)|not enough arguments to return"
+ }
+ return 2, 3 // ERROR "not enough arguments to return\n\thave \(number, number\)\n\twant \(int, int, int, int\)|not enough arguments to return"
+}
+
+func foo4(name string) (string, int) {
+ switch name {
+ case "cow":
+ return "moo" // ERROR "not enough arguments to return\n\thave \(string\)\n\twant \(string, int\)|not enough arguments to return"
+ case "dog":
+ return "dog", 10, true // ERROR "too many arguments to return\n\thave \(string, number, bool\)\n\twant \(string, int\)|too many values in return statement"
+ case "fish":
+ return "" // ERROR "not enough arguments to return\n\thave \(string\)\n\twant \(string, int\)|not enough arguments to return"
+ default:
+ return "lizard", 10
+ }
+}
+
+type S int
+type T string
+type U float64
+
+func foo5() (S, T, U) {
+ if false {
+ return "" // ERROR "not enough arguments to return\n\thave \(string\)\n\twant \(S, T, U\)|not enough arguments to return"
+ } else {
+ ptr := new(T)
+ return ptr // ERROR "not enough arguments to return\n\thave \(\*T\)\n\twant \(S, T, U\)|not enough arguments to return"
+ }
+ return new(S), 12.34, 1 + 0i, 'r', true // ERROR "too many arguments to return\n\thave \(\*S, number, number, number, bool\)\n\twant \(S, T, U\)|too many values in return statement"
+}
+
+func foo6() (T, string) {
+ return "T", true, true // ERROR "too many arguments to return\n\thave \(string, bool, bool\)\n\twant \(T, string\)|too many values in return statement"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue42568.go b/gcc/testsuite/go.test/test/fixedbugs/issue42568.go
new file mode 100644
index 0000000..834fdc5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue42568.go
@@ -0,0 +1,25 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Ensure that late expansion correctly handles an OpIData with type interface{}
+
+package p
+
+type S struct{}
+
+func (S) M() {}
+
+type I interface {
+ M()
+}
+
+func f(i I) {
+ o := i.(interface{})
+ if _, ok := i.(*S); ok {
+ o = nil
+ }
+ println(o)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue42587.go b/gcc/testsuite/go.test/test/fixedbugs/issue42587.go
new file mode 100644
index 0000000..d10ba97
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue42587.go
@@ -0,0 +1,15 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved. Use of this
+// source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+
+package p
+
+func f() {
+ var i, j int
+ _ = func() {
+ i = 32
+ j = j>>i | len([]int{})
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue42703.go b/gcc/testsuite/go.test/test/fixedbugs/issue42703.go
new file mode 100644
index 0000000..15f7a91
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue42703.go
@@ -0,0 +1,19 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var ok [2]bool
+
+func main() {
+ f()()
+ if !ok[0] || !ok[1] {
+ panic("FAIL")
+ }
+}
+
+func f() func() { ok[0] = true; return g }
+func g() { ok[1] = true }
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue42727.go b/gcc/testsuite/go.test/test/fixedbugs/issue42727.go
new file mode 100644
index 0000000..4008170
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue42727.go
@@ -0,0 +1,23 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Ensure that late expansion correctly handles an OpLoad with type interface{}
+
+package p
+
+type iface interface {
+ m()
+}
+
+type it interface{}
+
+type makeIface func() iface
+
+func f() {
+ var im makeIface
+ e := im().(it)
+ _ = &e
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue42784.go b/gcc/testsuite/go.test/test/fixedbugs/issue42784.go
new file mode 100644
index 0000000..e2b06e9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue42784.go
@@ -0,0 +1,26 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Ensure that late expansion correctly set OpLoad argument type interface{}
+
+package p
+
+type iface interface {
+ m()
+}
+
+type it interface{}
+
+type makeIface func() iface
+
+func f() {
+ var im makeIface
+ e := im().(it)
+ g(e)
+}
+
+//go:noinline
+func g(i it) {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue42876.go b/gcc/testsuite/go.test/test/fixedbugs/issue42876.go
new file mode 100644
index 0000000..67cf491
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue42876.go
@@ -0,0 +1,18 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var x = [4]int32{-0x7fffffff, 0x7fffffff, 2, 4}
+
+func main() {
+ if x[0] > x[1] {
+ panic("fail 1")
+ }
+ if x[2]&x[3] < 0 {
+ panic("fail 2") // Fails here
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue43099.go b/gcc/testsuite/go.test/test/fixedbugs/issue43099.go
new file mode 100644
index 0000000..16f18e5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue43099.go
@@ -0,0 +1,34 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check to make sure we don't try to constant fold a divide by zero.
+// This is a tricky test, as we need a value that's not recognized as 0
+// until lowering (otherwise it gets handled in a different path).
+
+package p
+
+func f() {
+ var i int
+ var s string
+ for i > 0 {
+ _ = s[0]
+ i++
+ }
+
+ var c chan int
+ c <- 1 % i
+}
+
+func f32() uint32 {
+ s := "\x00\x00\x00\x00"
+ c := uint32(s[0]) | uint32(s[1])<<8 | uint32(s[2])<<16 | uint32(s[3])<<24
+ return 1 / c
+}
+func f64() uint64 {
+ s := "\x00\x00\x00\x00\x00\x00\x00\x00"
+ c := uint64(s[0]) | uint64(s[1])<<8 | uint64(s[2])<<16 | uint64(s[3])<<24 | uint64(s[4])<<32 | uint64(s[5])<<40 | uint64(s[6])<<48 | uint64(s[7])<<56
+ return 1 / c
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue43111.go b/gcc/testsuite/go.test/test/fixedbugs/issue43111.go
new file mode 100644
index 0000000..76d7beb
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue43111.go
@@ -0,0 +1,70 @@
+// run
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var ch chan int
+var x int
+
+func f() int {
+ close(ch)
+ ch = nil
+ return 0
+}
+
+func g() int {
+ ch = nil
+ x = 0
+ return 0
+}
+
+func main() {
+ var nilch chan int
+ var v int
+ var ok bool
+ _, _ = v, ok
+
+ ch = make(chan int)
+ select {
+ case <-ch:
+ case nilch <- f():
+ }
+
+ ch = make(chan int)
+ select {
+ case v = <-ch:
+ case nilch <- f():
+ }
+
+ ch = make(chan int)
+ select {
+ case v := <-ch: _ = v
+ case nilch <- f():
+ }
+
+ ch = make(chan int)
+ select {
+ case v, ok = <-ch:
+ case nilch <- f():
+ }
+
+ ch = make(chan int)
+ select {
+ case v, ok := <-ch: _, _ = v, ok
+ case nilch <- f():
+ }
+
+ ch1 := make(chan int, 1)
+ ch = ch1
+ x = 42
+ select {
+ case ch <- x:
+ case nilch <- g():
+ }
+ if got := <-ch1; got != 42 {
+ panic(got)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue43112.go b/gcc/testsuite/go.test/test/fixedbugs/issue43112.go
new file mode 100644
index 0000000..e36627a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue43112.go
@@ -0,0 +1,41 @@
+// compile
+
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type Symbol interface{}
+
+type Value interface {
+ String() string
+}
+
+type Object interface {
+ String() string
+}
+
+type Scope struct {
+ outer *Scope
+ elems map[string]Object
+}
+
+func (s *Scope) findouter(name string) (*Scope, Object) {
+ return s.outer.findouter(name)
+}
+
+func (s *Scope) Resolve(name string) (sym Symbol) {
+ if _, obj := s.findouter(name); obj != nil {
+ sym = obj.(Symbol)
+ }
+ return
+}
+
+type ScopeName struct {
+ scope *Scope
+}
+
+func (n *ScopeName) Get(name string) (Value, error) {
+ return n.scope.Resolve(name).(Value), nil
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue4365.go b/gcc/testsuite/go.test/test/fixedbugs/issue4365.go
new file mode 100644
index 0000000..09ff1bf
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue4365.go
@@ -0,0 +1,27 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that fields hide promoted methods.
+// https://golang.org/issue/4365
+
+package main
+
+type T interface {
+ M()
+}
+
+type M struct{}
+
+func (M) M() {}
+
+type Foo struct {
+ M
+}
+
+func main() {
+ var v T = Foo{} // ERROR "has no methods|not a method|cannot use"
+ _ = v
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue5373.go b/gcc/testsuite/go.test/test/fixedbugs/issue5373.go
new file mode 100644
index 0000000..8aee9a2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue5373.go
@@ -0,0 +1,71 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Ensure that zeroing range loops have the requisite side-effects.
+
+package main
+
+import (
+ "fmt"
+ "os"
+)
+
+func check(n int) {
+ // When n == 0, i is untouched by the range loop.
+ // Picking an initial value of -1 for i makes the
+ // "want" calculation below correct in all cases.
+ i := -1
+ s := make([]byte, n)
+ for i = range s {
+ s[i] = 0
+ }
+ if want := n - 1; i != want {
+ fmt.Printf("index after range with side-effect = %d want %d\n", i, want)
+ os.Exit(1)
+ }
+
+ i = n + 1
+ // i is shadowed here, so its value should be unchanged.
+ for i := range s {
+ s[i] = 0
+ }
+ if want := n + 1; i != want {
+ fmt.Printf("index after range without side-effect = %d want %d\n", i, want)
+ os.Exit(1)
+ }
+
+ // Index variable whose evaluation has side-effects
+ var x int
+ f := func() int {
+ x++
+ return 0
+ }
+ var a [1]int
+ for a[f()] = range s {
+ s[a[f()]] = 0
+ }
+ if want := n * 2; x != want {
+ fmt.Printf("index function calls = %d want %d\n", x, want)
+ os.Exit(1)
+ }
+
+ // Range expression whose evaluation has side-effects
+ x = 0
+ b := [1][]byte{s}
+ for i := range b[f()] {
+ b[f()][i] = 0
+ }
+ if want := n + 1; x != n+1 {
+ fmt.Printf("range expr function calls = %d want %d\n", x, want)
+ os.Exit(1)
+ }
+}
+
+func main() {
+ check(0)
+ check(1)
+ check(15)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue5793.go b/gcc/testsuite/go.test/test/fixedbugs/issue5793.go
new file mode 100644
index 0000000..8104155
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue5793.go
@@ -0,0 +1,36 @@
+// run
+
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 5793: calling 2-arg builtin with multiple-result f() call expression gives
+// spurious error.
+
+package main
+
+func complexArgs() (float64, float64) {
+ return 5, 7
+}
+
+func appendArgs() ([]string, string) {
+ return []string{"foo"}, "bar"
+}
+
+func appendMultiArgs() ([]byte, byte, byte) {
+ return []byte{'a', 'b'}, '1', '2'
+}
+
+func main() {
+ if c := complex(complexArgs()); c != 5+7i {
+ panic(c)
+ }
+
+ if s := append(appendArgs()); len(s) != 2 || s[0] != "foo" || s[1] != "bar" {
+ panic(s)
+ }
+
+ if b := append(appendMultiArgs()); len(b) != 4 || b[0] != 'a' || b[1] != 'b' || b[2] != '1' || b[3] != '2' {
+ panic(b)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6295.dir/p0.go b/gcc/testsuite/go.test/test/fixedbugs/issue6295.dir/p0.go
new file mode 100644
index 0000000..d4d4da7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6295.dir/p0.go
@@ -0,0 +1,13 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p0
+
+type T0 interface {
+ m0()
+}
+
+type S0 struct{}
+
+func (S0) m0() {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6295.dir/p1.go b/gcc/testsuite/go.test/test/fixedbugs/issue6295.dir/p1.go
new file mode 100644
index 0000000..26efae7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6295.dir/p1.go
@@ -0,0 +1,26 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p1
+
+import "./p0"
+
+type T1 interface {
+ p0.T0
+ m1()
+}
+
+type S1 struct {
+ p0.S0
+}
+
+func (S1) m1() {}
+
+func NewT0() p0.T0 {
+ return S1{}
+}
+
+func NewT1() T1 {
+ return S1{}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6295.dir/p2.go b/gcc/testsuite/go.test/test/fixedbugs/issue6295.dir/p2.go
new file mode 100644
index 0000000..f5b6ffd
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6295.dir/p2.go
@@ -0,0 +1,19 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "./p0"
+ "./p1"
+)
+
+var (
+ _ p0.T0 = p0.S0{}
+ _ p0.T0 = p1.S1{}
+ _ p0.T0 = p1.NewT0()
+ _ p0.T0 = p1.NewT1() // same as p1.S1{}
+)
+
+func main() {}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6295.go b/gcc/testsuite/go.test/test/fixedbugs/issue6295.go
new file mode 100644
index 0000000..b8da212
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6295.go
@@ -0,0 +1,10 @@
+// compiledir
+
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 6295: qualified name of unexported methods
+// is corrupted during import.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6402.go b/gcc/testsuite/go.test/test/fixedbugs/issue6402.go
new file mode 100644
index 0000000..ecde9ae
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6402.go
@@ -0,0 +1,13 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 6402: spurious 'use of untyped nil' error
+
+package p
+
+func f() uintptr {
+ return nil // ERROR "cannot use nil as type uintptr in return argument|incompatible type"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6403.go b/gcc/testsuite/go.test/test/fixedbugs/issue6403.go
new file mode 100644
index 0000000..809efef
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6403.go
@@ -0,0 +1,14 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 6403: fix spurious 'const initializer is not a constant' error
+
+package p
+
+import "syscall"
+
+const A int = syscall.X // ERROR "undefined: syscall.X|undefined identifier .*syscall.X"
+const B int = voidpkg.X // ERROR "undefined: voidpkg|undefined name .*voidpkg"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6406.go b/gcc/testsuite/go.test/test/fixedbugs/issue6406.go
new file mode 100644
index 0000000..5491193
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6406.go
@@ -0,0 +1,12 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ s = "bob" // ERROR "undefined.*s"
+ _ = s // ERROR "undefined.*s"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703a.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703a.go
new file mode 100644
index 0000000..38c5956
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703a.go
@@ -0,0 +1,16 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in a function value.
+
+package funcvalue
+
+func fx() int {
+ _ = x
+ return 0
+}
+
+var x = fx // ERROR "initialization loop|depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703b.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703b.go
new file mode 100644
index 0000000..35438c3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703b.go
@@ -0,0 +1,16 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in a function call.
+
+package funccall
+
+func fx() int {
+ _ = x
+ return 0
+}
+
+var x = fx() // ERROR "initialization loop|depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703c.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703c.go
new file mode 100644
index 0000000..ade40e3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703c.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in a method expression.
+
+package methexpr
+
+type T int
+
+func (T) m() int {
+ _ = x
+ return 0
+}
+
+var x = T.m // ERROR "initialization loop|depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703d.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703d.go
new file mode 100644
index 0000000..dd48163
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703d.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in a method expression call.
+
+package methexprcall
+
+type T int
+
+func (T) m() int {
+ _ = x
+ return 0
+}
+
+var x = T.m(0) // ERROR "initialization loop|depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703e.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703e.go
new file mode 100644
index 0000000..d362d6e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703e.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in the method value of a value literal.
+
+package litmethvalue
+
+type T int
+
+func (T) m() int {
+ _ = x
+ return 0
+}
+
+var x = T(0).m // ERROR "initialization loop|depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703f.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703f.go
new file mode 100644
index 0000000..0b49026
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703f.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in the method call of a value literal.
+
+package litmethcall
+
+type T int
+
+func (T) m() int {
+ _ = x
+ return 0
+}
+
+var x = T(0).m() // ERROR "initialization loop|depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703g.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703g.go
new file mode 100644
index 0000000..05ec740
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703g.go
@@ -0,0 +1,20 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in an embedded method expression.
+
+package embedmethexpr
+
+type T int
+
+func (T) m() int {
+ _ = x
+ return 0
+}
+
+type E struct{ T }
+
+var x = E.m // ERROR "initialization loop|depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703h.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703h.go
new file mode 100644
index 0000000..f6b69e1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703h.go
@@ -0,0 +1,20 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles when calling an embedded method expression.
+
+package embedmethexprcall
+
+type T int
+
+func (T) m() int {
+ _ = x
+ return 0
+}
+
+type E struct{ T }
+
+var x = E.m(E{0}) // ERROR "initialization loop|depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703i.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703i.go
new file mode 100644
index 0000000..fb580a2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703i.go
@@ -0,0 +1,20 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in an embedded struct literal's method value.
+
+package embedlitmethvalue
+
+type T int
+
+func (T) m() int {
+ _ = x
+ return 0
+}
+
+type E struct{ T }
+
+var x = E{}.m // ERROR "initialization loop|depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703j.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703j.go
new file mode 100644
index 0000000..b4c079f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703j.go
@@ -0,0 +1,20 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in an embedded struct literal's method call.
+
+package embedlitmethcall
+
+type T int
+
+func (T) m() int {
+ _ = x
+ return 0
+}
+
+type E struct{ T }
+
+var x = E{}.m() // ERROR "initialization loop|depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703k.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703k.go
new file mode 100644
index 0000000..6f606e2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703k.go
@@ -0,0 +1,21 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in a method value.
+
+package methvalue
+
+type T int
+
+func (T) m() int {
+ _ = x
+ return 0
+}
+
+var (
+ t T
+ x = t.m // ERROR "initialization loop|depends upon itself"
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703l.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703l.go
new file mode 100644
index 0000000..684c225
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703l.go
@@ -0,0 +1,21 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in a method call.
+
+package methcall
+
+type T int
+
+func (T) m() int {
+ _ = x
+ return 0
+}
+
+var (
+ t T
+ x = t.m() // ERROR "initialization loop|depends upon itself"
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703m.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703m.go
new file mode 100644
index 0000000..7d1b604
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703m.go
@@ -0,0 +1,25 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in the method value of a value returned from a function call.
+
+package funcmethvalue
+
+type T int
+
+func (T) m() int {
+ _ = x
+ return 0
+}
+
+func f() T {
+ return T(0)
+}
+
+var (
+ t T
+ x = f().m // ERROR "initialization loop|depends upon itself"
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703n.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703n.go
new file mode 100644
index 0000000..22646af
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703n.go
@@ -0,0 +1,25 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in the method call of a value returned from a function call.
+
+package funcmethcall
+
+type T int
+
+func (T) m() int {
+ _ = x
+ return 0
+}
+
+func f() T {
+ return T(0)
+}
+
+var (
+ t T
+ x = f().m() // ERROR "initialization loop|depends upon itself"
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703o.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703o.go
new file mode 100644
index 0000000..a11fdfd
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703o.go
@@ -0,0 +1,23 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in an embedded struct's method value.
+
+package embedmethvalue
+
+type T int
+
+func (T) m() int {
+ _ = x
+ return 0
+}
+
+type E struct{ T }
+
+var (
+ e E
+ x = e.m // ERROR "initialization loop|depends upon itself"
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703p.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703p.go
new file mode 100644
index 0000000..3ac7a63
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703p.go
@@ -0,0 +1,23 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in an embedded struct's method call.
+
+package embedmethcall
+
+type T int
+
+func (T) m() int {
+ _ = x
+ return 0
+}
+
+type E struct{ T }
+
+var (
+ e E
+ x = e.m() // ERROR "initialization loop|depends upon itself"
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703q.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703q.go
new file mode 100644
index 0000000..b087c15
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703q.go
@@ -0,0 +1,28 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in the method value of an embedded struct returned
+// from a function call.
+
+package funcembedmethvalue
+
+type T int
+
+func (T) m() int {
+ _ = x
+ return 0
+}
+
+func g() E {
+ return E{0}
+}
+
+type E struct{ T }
+
+var (
+ e E
+ x = g().m // ERROR "initialization loop|depends upon itself"
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703r.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703r.go
new file mode 100644
index 0000000..de514f1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703r.go
@@ -0,0 +1,28 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in the method call of an embedded struct returned
+// from a function call.
+
+package funcembedmethcall
+
+type T int
+
+func (T) m() int {
+ _ = x
+ return 0
+}
+
+func g() E {
+ return E{0}
+}
+
+type E struct{ T }
+
+var (
+ e E
+ x = g().m() // ERROR "initialization loop|depends upon itself"
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703s.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703s.go
new file mode 100644
index 0000000..cd3c5b3
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703s.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in a pointer method expression.
+
+package ptrmethexpr
+
+type T int
+
+func (*T) pm() int {
+ _ = x
+ return 0
+}
+
+var x = (*T).pm // ERROR "initialization loop|depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703t.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703t.go
new file mode 100644
index 0000000..62de37c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703t.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in the call of a pointer method expression.
+
+package ptrmethexprcall
+
+type T int
+
+func (*T) pm() int {
+ _ = x
+ return 0
+}
+
+var x = (*T).pm(nil) // ERROR "initialization loop|depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703u.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703u.go
new file mode 100644
index 0000000..961a000
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703u.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in a pointer literal's method value.
+
+package ptrlitmethvalue
+
+type T int
+
+func (*T) pm() int {
+ _ = x
+ return 0
+}
+
+var x = (*T)(nil).pm // ERROR "initialization loop|depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703v.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703v.go
new file mode 100644
index 0000000..2409911
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703v.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in a pointer literal's method call.
+
+package ptrlitmethcall
+
+type T int
+
+func (*T) pm() int {
+ _ = x
+ return 0
+}
+
+var x = (*T)(nil).pm() // ERROR "initialization loop|depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703w.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703w.go
new file mode 100644
index 0000000..b7b3d91
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703w.go
@@ -0,0 +1,21 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in a pointer value's method value.
+
+package ptrmethvalue
+
+type T int
+
+func (*T) pm() int {
+ _ = x
+ return 0
+}
+
+var (
+ p *T
+ x = p.pm // ERROR "initialization loop|depends upon itself"
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703x.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703x.go
new file mode 100644
index 0000000..48daf03
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703x.go
@@ -0,0 +1,21 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in a pointer value's method call.
+
+package ptrmethcall
+
+type T int
+
+func (*T) pm() int {
+ _ = x
+ return 0
+}
+
+var (
+ p *T
+ x = p.pm() // ERROR "initialization loop|depends upon itself"
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703y.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703y.go
new file mode 100644
index 0000000..278dfcd
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703y.go
@@ -0,0 +1,23 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in the method value of a pointer value returned
+// from a function call.
+
+package funcptrmethvalue
+
+type T int
+
+func (*T) pm() int {
+ _ = x
+ return 0
+}
+
+func pf() *T {
+ return nil
+}
+
+var x = pf().pm // ERROR "initialization loop|depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6703z.go b/gcc/testsuite/go.test/test/fixedbugs/issue6703z.go
new file mode 100644
index 0000000..f81a3a8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6703z.go
@@ -0,0 +1,23 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for cycles in the method call of a pointer value returned
+// from a function call.
+
+package funcptrmethcall
+
+type T int
+
+func (*T) pm() int {
+ _ = x
+ return 0
+}
+
+func pf() *T {
+ return nil
+}
+
+var x = pf().pm() // ERROR "initialization loop|depends upon itself"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6772.go b/gcc/testsuite/go.test/test/fixedbugs/issue6772.go
new file mode 100644
index 0000000..5bd15ba
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6772.go
@@ -0,0 +1,21 @@
+// errorcheck
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f1() {
+ for a, a := range []int{1, 2, 3} { // ERROR "a.* repeated on left side of :="
+ println(a)
+ }
+}
+
+func f2() {
+ var a int
+ for a, a := range []int{1, 2, 3} { // ERROR "a.* repeated on left side of :="
+ println(a)
+ }
+ println(a)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6847.go b/gcc/testsuite/go.test/test/fixedbugs/issue6847.go
new file mode 100644
index 0000000..da300bc
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6847.go
@@ -0,0 +1,85 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 6847: select clauses involving implicit conversion
+// of channels trigger a spurious typechecking error during walk.
+
+package p
+
+type I1 interface {
+ String()
+}
+type I2 interface {
+ String()
+}
+
+func F() {
+ var (
+ cr <-chan int
+ cs chan<- int
+ c chan int
+
+ ccr chan (<-chan int)
+ ccs chan chan<- int
+ cc chan chan int
+
+ ok bool
+ )
+ // Send cases.
+ select {
+ case ccr <- cr:
+ case ccr <- c:
+ }
+ select {
+ case ccs <- cs:
+ case ccs <- c:
+ }
+ select {
+ case ccr <- c:
+ default:
+ }
+ // Receive cases.
+ select {
+ case cr = <-cc:
+ case cs = <-cc:
+ case c = <-cc:
+ }
+ select {
+ case cr = <-cc:
+ default:
+ }
+ select {
+ case cr, ok = <-cc:
+ case cs, ok = <-cc:
+ case c = <-cc:
+ }
+ // Interfaces.
+ var (
+ c1 chan I1
+ c2 chan I2
+ x1 I1
+ x2 I2
+ )
+ select {
+ case c1 <- x1:
+ case c1 <- x2:
+ case c2 <- x1:
+ case c2 <- x2:
+ }
+ select {
+ case x1 = <-c1:
+ case x1 = <-c2:
+ case x2 = <-c1:
+ case x2 = <-c2:
+ }
+ select {
+ case x1, ok = <-c1:
+ case x1, ok = <-c2:
+ case x2, ok = <-c1:
+ case x2, ok = <-c2:
+ }
+ _ = ok
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6866.go b/gcc/testsuite/go.test/test/fixedbugs/issue6866.go
new file mode 100644
index 0000000..1080b27
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6866.go
@@ -0,0 +1,80 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// WARNING: GENERATED FILE - DO NOT MODIFY MANUALLY!
+// (To generate, in go/types directory: go test -run=Hilbert -H=2 -out="h2.src")
+
+// This program tests arbitrary precision constant arithmetic
+// by generating the constant elements of a Hilbert matrix H,
+// its inverse I, and the product P = H*I. The product should
+// be the identity matrix.
+package main
+
+func main() {
+ if !ok {
+ print()
+ return
+ }
+}
+
+// Hilbert matrix, n = 2
+const (
+ h0_0, h0_1 = 1.0 / (iota + 1), 1.0 / (iota + 2)
+ h1_0, h1_1
+)
+
+// Inverse Hilbert matrix
+const (
+ i0_0 = +1 * b2_1 * b2_1 * b0_0 * b0_0
+ i0_1 = -2 * b2_0 * b3_1 * b1_0 * b1_0
+
+ i1_0 = -2 * b3_1 * b2_0 * b1_1 * b1_1
+ i1_1 = +3 * b3_0 * b3_0 * b2_1 * b2_1
+)
+
+// Product matrix
+const (
+ p0_0 = h0_0*i0_0 + h0_1*i1_0
+ p0_1 = h0_0*i0_1 + h0_1*i1_1
+
+ p1_0 = h1_0*i0_0 + h1_1*i1_0
+ p1_1 = h1_0*i0_1 + h1_1*i1_1
+)
+
+// Verify that product is identity matrix
+const ok = p0_0 == 1 && p0_1 == 0 &&
+ p1_0 == 0 && p1_1 == 1 &&
+ true
+
+func print() {
+ println(p0_0, p0_1)
+ println(p1_0, p1_1)
+}
+
+// Binomials
+const (
+ b0_0 = f0 / (f0 * f0)
+
+ b1_0 = f1 / (f0 * f1)
+ b1_1 = f1 / (f1 * f0)
+
+ b2_0 = f2 / (f0 * f2)
+ b2_1 = f2 / (f1 * f1)
+ b2_2 = f2 / (f2 * f0)
+
+ b3_0 = f3 / (f0 * f3)
+ b3_1 = f3 / (f1 * f2)
+ b3_2 = f3 / (f2 * f1)
+ b3_3 = f3 / (f3 * f0)
+)
+
+// Factorials
+const (
+ f0 = 1
+ f1 = 1
+ f2 = f1 * 2
+ f3 = f2 * 3
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6889.go b/gcc/testsuite/go.test/test/fixedbugs/issue6889.go
new file mode 100644
index 0000000..efd8b76
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6889.go
@@ -0,0 +1,111 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 6889: confusing error message: ovf in mpaddxx
+
+package main
+
+const (
+ f1 = 1
+ f2 = f1 * 2
+ f3 = f2 * 3
+ f4 = f3 * 4
+ f5 = f4 * 5
+ f6 = f5 * 6
+ f7 = f6 * 7
+ f8 = f7 * 8
+ f9 = f8 * 9
+ f10 = f9 * 10
+ f11 = f10 * 11
+ f12 = f11 * 12
+ f13 = f12 * 13
+ f14 = f13 * 14
+ f15 = f14 * 15
+ f16 = f15 * 16
+ f17 = f16 * 17
+ f18 = f17 * 18
+ f19 = f18 * 19
+ f20 = f19 * 20
+ f21 = f20 * 21
+ f22 = f21 * 22
+ f23 = f22 * 23
+ f24 = f23 * 24
+ f25 = f24 * 25
+ f26 = f25 * 26
+ f27 = f26 * 27
+ f28 = f27 * 28
+ f29 = f28 * 29
+ f30 = f29 * 30
+ f31 = f30 * 31
+ f32 = f31 * 32
+ f33 = f32 * 33
+ f34 = f33 * 34
+ f35 = f34 * 35
+ f36 = f35 * 36
+ f37 = f36 * 37
+ f38 = f37 * 38
+ f39 = f38 * 39
+ f40 = f39 * 40
+ f41 = f40 * 41
+ f42 = f41 * 42
+ f43 = f42 * 43
+ f44 = f43 * 44
+ f45 = f44 * 45
+ f46 = f45 * 46
+ f47 = f46 * 47
+ f48 = f47 * 48
+ f49 = f48 * 49
+ f50 = f49 * 50
+ f51 = f50 * 51
+ f52 = f51 * 52
+ f53 = f52 * 53
+ f54 = f53 * 54
+ f55 = f54 * 55
+ f56 = f55 * 56
+ f57 = f56 * 57
+ f58 = f57 * 58
+ f59 = f58 * 59
+ f60 = f59 * 60
+ f61 = f60 * 61
+ f62 = f61 * 62
+ f63 = f62 * 63
+ f64 = f63 * 64
+ f65 = f64 * 65
+ f66 = f65 * 66
+ f67 = f66 * 67
+ f68 = f67 * 68
+ f69 = f68 * 69
+ f70 = f69 * 70
+ f71 = f70 * 71
+ f72 = f71 * 72
+ f73 = f72 * 73
+ f74 = f73 * 74
+ f75 = f74 * 75
+ f76 = f75 * 76
+ f77 = f76 * 77
+ f78 = f77 * 78
+ f79 = f78 * 79
+ f80 = f79 * 80
+ f81 = f80 * 81
+ f82 = f81 * 82
+ f83 = f82 * 83
+ f84 = f83 * 84
+ f85 = f84 * 85
+ f86 = f85 * 86
+ f87 = f86 * 87
+ f88 = f87 * 88
+ f89 = f88 * 89
+ f90 = f89 * 90
+ f91 = f90 * 91
+ f92 = f91 * 92
+ f93 = f92 * 93
+ f94 = f93 * 94
+ f95 = f94 * 95
+ f96 = f95 * 96
+ f97 = f96 * 97
+ f98 = f97 * 98
+ f99 = f98 * 99 // GC_ERROR "overflow"
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6902.go b/gcc/testsuite/go.test/test/fixedbugs/issue6902.go
new file mode 100644
index 0000000..5c2c545
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6902.go
@@ -0,0 +1,21 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 6902: confusing printing of large floating point constants
+
+package main
+
+import (
+ "os"
+)
+
+var x = -1e-10000
+
+func main() {
+ if x != 0 {
+ os.Exit(1)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue6964.go b/gcc/testsuite/go.test/test/fixedbugs/issue6964.go
new file mode 100644
index 0000000..36a3c5b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue6964.go
@@ -0,0 +1,11 @@
+// errorcheck
+
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ _ = string(-4 + 2i + 2) // ERROR "-4 \+ 2i|invalid type conversion"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7023.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue7023.dir/a.go
new file mode 100644
index 0000000..cdb5432
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7023.dir/a.go
@@ -0,0 +1,10 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+func Foo() {
+ goto bar
+bar:
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7023.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue7023.dir/b.go
new file mode 100644
index 0000000..c6fe40d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7023.dir/b.go
@@ -0,0 +1,11 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import (
+ "./a"
+)
+
+var f = a.Foo
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7023.go b/gcc/testsuite/go.test/test/fixedbugs/issue7023.go
new file mode 100644
index 0000000..f18c611
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7023.go
@@ -0,0 +1,10 @@
+// compiledir
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7023: corrupted export data when an inlined function
+// contains a goto.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7044.go b/gcc/testsuite/go.test/test/fixedbugs/issue7044.go
new file mode 100644
index 0000000..00c78c8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7044.go
@@ -0,0 +1,43 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7044: bad AMOVFD and AMOVDF assembly generation on
+// arm for registers above 7.
+
+package main
+
+import (
+ "fmt"
+ "reflect"
+)
+
+func f() [16]float32 {
+ f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15 :=
+ float32(1), float32(1), float32(1), float32(1), float32(1), float32(1), float32(1), float32(1), float32(1), float32(1), float32(1), float32(1), float32(1), float32(1), float32(1), float32(1)
+ // Use all 16 registers to do float32 --> float64 conversion.
+ d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15 :=
+ float64(f0), float64(f1), float64(f2), float64(f3), float64(f4), float64(f5), float64(f6), float64(f7), float64(f8), float64(f9), float64(f10), float64(f11), float64(f12), float64(f13), float64(f14), float64(f15)
+ // Use all 16 registers to do float64 --> float32 conversion.
+ g0, g1, g2, g3, g4, g5, g6, g7, g8, g9, g10, g11, g12, g13, g14, g15 :=
+ float32(d0), float32(d1), float32(d2), float32(d3), float32(d4), float32(d5), float32(d6), float32(d7), float32(d8), float32(d9), float32(d10), float32(d11), float32(d12), float32(d13), float32(d14), float32(d15)
+ // Force another conversion, so that the previous conversion doesn't
+ // get optimized away into constructing the returned array. With current
+ // optimizations, constructing the returned array uses only
+ // a single register.
+ e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15 :=
+ float64(g0), float64(g1), float64(g2), float64(g3), float64(g4), float64(g5), float64(g6), float64(g7), float64(g8), float64(g9), float64(g10), float64(g11), float64(g12), float64(g13), float64(g14), float64(g15)
+ return [16]float32{
+ float32(e0), float32(e1), float32(e2), float32(e3), float32(e4), float32(e5), float32(e6), float32(e7), float32(e8), float32(e9), float32(e10), float32(e11), float32(e12), float32(e13), float32(e14), float32(e15),
+ }
+}
+
+func main() {
+ want := [16]float32{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
+ got := f()
+ if !reflect.DeepEqual(got, want) {
+ fmt.Printf("f() = %#v; want %#v\n", got, want)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7050.go b/gcc/testsuite/go.test/test/fixedbugs/issue7050.go
new file mode 100644
index 0000000..be7a118
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7050.go
@@ -0,0 +1,19 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "os"
+)
+
+func main() {
+ _, err := os.Stdout.Write(nil)
+ if err != nil {
+ fmt.Printf("BUG: os.Stdout.Write(nil) = %v\n", err)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7083.go b/gcc/testsuite/go.test/test/fixedbugs/issue7083.go
new file mode 100644
index 0000000..79bfd3b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7083.go
@@ -0,0 +1,22 @@
+// run
+
+package main
+
+import "runtime/debug"
+
+func f(m map[int]*string, i int) {
+ s := ""
+ m[i] = &s
+}
+
+func main() {
+ debug.SetGCPercent(0)
+ m := map[int]*string{}
+ for i := 0; i < 40; i++ {
+ f(m, i)
+ if len(*m[i]) != 0 {
+ println("bad length", i, m[i], len(*m[i]))
+ panic("bad length")
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7129.go b/gcc/testsuite/go.test/test/fixedbugs/issue7129.go
new file mode 100644
index 0000000..2765200
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7129.go
@@ -0,0 +1,21 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7129: inconsistent "wrong arg type" error for multivalued g in f(g())
+
+package main
+
+func f(int) {}
+
+func g() bool { return true }
+
+func h(int, int) {}
+
+func main() {
+ f(g()) // ERROR "in argument to f|incompatible type"
+ f(true) // ERROR "in argument to f|incompatible type"
+ h(true, true) // ERROR "in argument to h|incompatible type"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7150.go b/gcc/testsuite/go.test/test/fixedbugs/issue7150.go
new file mode 100644
index 0000000..7cddf48
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7150.go
@@ -0,0 +1,17 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 7150: array index out of bounds error off by one
+
+package main
+
+func main() {
+ _ = [0]int{-1: 50} // ERROR "index must be non-negative integer constant|index expression is negative"
+ _ = [0]int{0: 0} // ERROR "index 0 out of bounds \[0:0\]|out of range"
+ _ = [0]int{5: 25} // ERROR "index 5 out of bounds \[0:0\]|out of range"
+ _ = [10]int{2: 10, 15: 30} // ERROR "index 15 out of bounds \[0:10\]|out of range"
+ _ = [10]int{5: 5, 1: 1, 12: 12} // ERROR "index 12 out of bounds \[0:10\]|out of range"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7153.go b/gcc/testsuite/go.test/test/fixedbugs/issue7153.go
new file mode 100644
index 0000000..e8b95d5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7153.go
@@ -0,0 +1,11 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7153: array invalid index error duplicated on successive bad values
+
+package p
+
+var _ = []int{a: true, true} // ERROR "undefined: a" "cannot use true \(type untyped bool\) as type int in slice literal|undefined name .*a|incompatible type"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7223.go b/gcc/testsuite/go.test/test/fixedbugs/issue7223.go
new file mode 100644
index 0000000..0ec3476
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7223.go
@@ -0,0 +1,20 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var bits1 uint = 10
+const bits2 uint = 10
+
+func main() {
+ _ = make([]byte, 1<<bits1)
+ _ = make([]byte, 1<<bits2)
+ _ = make([]byte, nil) // ERROR "non-integer.*len"
+ _ = make([]byte, nil, 2) // ERROR "non-integer.*len"
+ _ = make([]byte, 1, nil) // ERROR "non-integer.*cap"
+ _ = make([]byte, true) // ERROR "non-integer.*len"
+ _ = make([]byte, "abc") // ERROR "non-integer.*len"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7272.go b/gcc/testsuite/go.test/test/fixedbugs/issue7272.go
new file mode 100644
index 0000000..b10a8bf
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7272.go
@@ -0,0 +1,48 @@
+// compile
+
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7272: test builtin functions in statement context and in
+// go/defer functions.
+
+package p
+
+func F() {
+ var a []int
+ var c chan int
+ var m map[int]int
+
+ close(c)
+ copy(a, a)
+ delete(m, 0)
+ panic(0)
+ print("foo")
+ println("bar")
+ recover()
+
+ (close(c))
+ (copy(a, a))
+ (delete(m, 0))
+ (panic(0))
+ (print("foo"))
+ (println("bar"))
+ (recover())
+
+ go close(c)
+ go copy(a, a)
+ go delete(m, 0)
+ go panic(0)
+ go print("foo")
+ go println("bar")
+ go recover()
+
+ defer close(c)
+ defer copy(a, a)
+ defer delete(m, 0)
+ defer panic(0)
+ defer print("foo")
+ defer println("bar")
+ defer recover()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7310.go b/gcc/testsuite/go.test/test/fixedbugs/issue7310.go
new file mode 100644
index 0000000..ba50e42
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7310.go
@@ -0,0 +1,15 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Internal compiler crash used to stop errors during second copy.
+
+package main
+
+func main() {
+ _ = copy(nil, []int{}) // ERROR "use of untyped nil|left argument must be a slice"
+ _ = copy([]int{}, nil) // ERROR "use of untyped nil|second argument must be slice or string"
+ _ = 1 + true // ERROR "mismatched types untyped int and untyped bool|incompatible types"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7316.go b/gcc/testsuite/go.test/test/fixedbugs/issue7316.go
new file mode 100644
index 0000000..0734641
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7316.go
@@ -0,0 +1,37 @@
+// runoutput
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7316
+// This test exercises all types of numeric conversions, which was one
+// of the sources of etype mismatch during register allocation in 8g.
+
+package main
+
+import "fmt"
+
+const tpl = `
+func init() {
+ var i %s
+ j := %s(i)
+ _ = %s(j)
+}
+`
+
+func main() {
+ fmt.Println("package main")
+ ntypes := []string{
+ "byte", "rune", "uintptr",
+ "float32", "float64",
+ "int", "int8", "int16", "int32", "int64",
+ "uint", "uint8", "uint16", "uint32", "uint64",
+ }
+ for i, from := range ntypes {
+ for _, to := range ntypes[i:] {
+ fmt.Printf(tpl, from, to, from)
+ }
+ }
+ fmt.Println("func main() {}")
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7346.go b/gcc/testsuite/go.test/test/fixedbugs/issue7346.go
new file mode 100644
index 0000000..21fab2d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7346.go
@@ -0,0 +1,14 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 7346 : internal error "doasm" error due to checknil
+// of a nil literal.
+
+package main
+
+func main() {
+ _ = *(*int)(nil)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7366.go b/gcc/testsuite/go.test/test/fixedbugs/issue7366.go
new file mode 100644
index 0000000..a6b786f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7366.go
@@ -0,0 +1,21 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 7366: generates a temporary with ideal type
+// during comparison of small structs.
+
+package main
+
+type T struct {
+ data [10]byte
+}
+
+func main() {
+ var a T
+ var b T
+ if a == b {
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7405.go b/gcc/testsuite/go.test/test/fixedbugs/issue7405.go
new file mode 100644
index 0000000..52e1176
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7405.go
@@ -0,0 +1,51 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7405: the equality function for struct with many
+// embedded fields became more complex after fixing issue 7366,
+// leading to out of registers on 386.
+
+package p
+
+type T1 struct {
+ T2
+ T3
+ T4
+}
+
+type T2 struct {
+ Conn
+}
+
+type T3 struct {
+ PacketConn
+}
+
+type T4 struct {
+ PacketConn
+ T5
+}
+
+type T5 struct {
+ x int
+ T6
+}
+
+type T6 struct {
+ y, z int
+}
+
+type Conn interface {
+ A()
+}
+
+type PacketConn interface {
+ B()
+}
+
+func F(a, b T1) bool {
+ return a == b
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7419.go b/gcc/testsuite/go.test/test/fixedbugs/issue7419.go
new file mode 100644
index 0000000..39b454c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7419.go
@@ -0,0 +1,25 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7419: odd behavior for float constants underflowing to 0
+
+package main
+
+import (
+ "os"
+)
+
+var x = 1e-779137
+var y = 1e-779138
+
+func main() {
+ if x != 0 {
+ os.Exit(1)
+ }
+ if y != 0 {
+ os.Exit(2)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7538a.go b/gcc/testsuite/go.test/test/fixedbugs/issue7538a.go
new file mode 100644
index 0000000..b170150
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7538a.go
@@ -0,0 +1,15 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7538: blank (_) labels handled incorrectly
+
+package p
+
+func f() {
+_:
+_:
+ goto _ // ERROR "not defined|undefined label"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7538b.go b/gcc/testsuite/go.test/test/fixedbugs/issue7538b.go
new file mode 100644
index 0000000..28cef5d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7538b.go
@@ -0,0 +1,13 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7538: blank (_) labels handled incorrectly
+
+package p
+
+func f() {
+_:
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7547.go b/gcc/testsuite/go.test/test/fixedbugs/issue7547.go
new file mode 100644
index 0000000..f75a330
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7547.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func f() map[string]interface{} {
+ var p *map[string]map[string]interface{}
+ _ = p
+ return nil
+}
+
+func main() {
+ f()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7550.go b/gcc/testsuite/go.test/test/fixedbugs/issue7550.go
new file mode 100644
index 0000000..0c4cf93
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7550.go
@@ -0,0 +1,27 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func shouldPanic(f func()) {
+ defer func() {
+ if recover() == nil {
+ panic("not panicking")
+ }
+ }()
+ f()
+}
+
+func f() {
+ length := int(^uint(0) >> 1)
+ a := make([]struct{}, length)
+ b := make([]struct{}, length)
+ _ = append(a, b...)
+}
+
+func main() {
+ shouldPanic(f)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7590.go b/gcc/testsuite/go.test/test/fixedbugs/issue7590.go
new file mode 100644
index 0000000..607a3ae
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7590.go
@@ -0,0 +1,21 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7590: gccgo incorrectly traverses nested composite literals.
+
+package p
+
+type S struct {
+ F int
+}
+
+var M = map[string]S{
+ "a": { F: 1 },
+}
+
+var P = M["a"]
+
+var F = P.F
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7648.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue7648.dir/a.go
new file mode 100644
index 0000000..c76aaa6
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7648.dir/a.go
@@ -0,0 +1,11 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+const (
+ sinPi4 = 0.70710678118654752440084436210484903928483593768847
+ A = complex(sinPi4, -sinPi4)
+)
+
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7648.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue7648.dir/b.go
new file mode 100644
index 0000000..b9223ed
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7648.dir/b.go
@@ -0,0 +1,11 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "a"
+
+func f() {
+ println(a.A)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7648.go b/gcc/testsuite/go.test/test/fixedbugs/issue7648.go
new file mode 100644
index 0000000..b391c4a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7648.go
@@ -0,0 +1,9 @@
+// compiledir
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7648: spurious "bad negated constant" for complex constants.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7740.go b/gcc/testsuite/go.test/test/fixedbugs/issue7740.go
new file mode 100644
index 0000000..8f1afe8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7740.go
@@ -0,0 +1,35 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This test computes the precision of the compiler's internal multiprecision floats.
+
+package main
+
+import (
+ "fmt"
+ "math"
+ "runtime"
+)
+
+const ulp = (1.0 + (2.0 / 3.0)) - (5.0 / 3.0)
+
+func main() {
+ // adjust precision depending on compiler
+ var prec float64
+ switch runtime.Compiler {
+ case "gc":
+ prec = 512
+ case "gccgo":
+ prec = 256
+ default:
+ // unknown compiler
+ return
+ }
+ p := 1 - math.Log(math.Abs(ulp))/math.Log(2)
+ if math.Abs(p-prec) > 1e-10 {
+ fmt.Printf("BUG: got %g; want %g\n", p, prec)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7742.go b/gcc/testsuite/go.test/test/fixedbugs/issue7742.go
new file mode 100644
index 0000000..dc167c2
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7742.go
@@ -0,0 +1,18 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7742: cannot use &autotmp_0001 (type *map[string]string) as type *string in function argument
+
+package main
+
+var (
+ m map[string]string
+ v string
+)
+
+func main() {
+ m[v], _ = v, v
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7746.go b/gcc/testsuite/go.test/test/fixedbugs/issue7746.go
new file mode 100644
index 0000000..7454962
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7746.go
@@ -0,0 +1,133 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+const (
+ c0 = 1 << 100
+ c1 = c0 * c0
+ c2 = c1 * c1
+ c3 = c2 * c2 // GC_ERROR "overflow"
+ c4 = c3 * c3
+ c5 = c4 * c4
+ c6 = c5 * c5
+ c7 = c6 * c6
+ c8 = c7 * c7
+ c9 = c8 * c8
+ c10 = c9 * c9
+ c11 = c10 * c10
+ c12 = c11 * c11
+ c13 = c12 * c12
+ c14 = c13 * c13 // GCCGO_ERROR "overflow"
+ c15 = c14 * c14
+ c16 = c15 * c15
+ c17 = c16 * c16
+ c18 = c17 * c17
+ c19 = c18 * c18
+ c20 = c19 * c19
+ c21 = c20 * c20
+ c22 = c21 * c21
+ c23 = c22 * c22
+ c24 = c23 * c23
+ c25 = c24 * c24
+ c26 = c25 * c25
+ c27 = c26 * c26
+ c28 = c27 * c27
+ c29 = c28 * c28
+ c30 = c29 * c29
+ c31 = c30 * c30
+ c32 = c31 * c31
+ c33 = c32 * c32
+ c34 = c33 * c33
+ c35 = c34 * c34
+ c36 = c35 * c35
+ c37 = c36 * c36
+ c38 = c37 * c37
+ c39 = c38 * c38
+ c40 = c39 * c39
+ c41 = c40 * c40
+ c42 = c41 * c41
+ c43 = c42 * c42
+ c44 = c43 * c43
+ c45 = c44 * c44
+ c46 = c45 * c45
+ c47 = c46 * c46
+ c48 = c47 * c47
+ c49 = c48 * c48
+ c50 = c49 * c49
+ c51 = c50 * c50
+ c52 = c51 * c51
+ c53 = c52 * c52
+ c54 = c53 * c53
+ c55 = c54 * c54
+ c56 = c55 * c55
+ c57 = c56 * c56
+ c58 = c57 * c57
+ c59 = c58 * c58
+ c60 = c59 * c59
+ c61 = c60 * c60
+ c62 = c61 * c61
+ c63 = c62 * c62
+ c64 = c63 * c63
+ c65 = c64 * c64
+ c66 = c65 * c65
+ c67 = c66 * c66
+ c68 = c67 * c67
+ c69 = c68 * c68
+ c70 = c69 * c69
+ c71 = c70 * c70
+ c72 = c71 * c71
+ c73 = c72 * c72
+ c74 = c73 * c73
+ c75 = c74 * c74
+ c76 = c75 * c75
+ c77 = c76 * c76
+ c78 = c77 * c77
+ c79 = c78 * c78
+ c80 = c79 * c79
+ c81 = c80 * c80
+ c82 = c81 * c81
+ c83 = c82 * c82
+ c84 = c83 * c83
+ c85 = c84 * c84
+ c86 = c85 * c85
+ c87 = c86 * c86
+ c88 = c87 * c87
+ c89 = c88 * c88
+ c90 = c89 * c89
+ c91 = c90 * c90
+ c92 = c91 * c91
+ c93 = c92 * c92
+ c94 = c93 * c93
+ c95 = c94 * c94
+ c96 = c95 * c95
+ c97 = c96 * c96
+ c98 = c97 * c97
+ c99 = c98 * c98
+ c100 = c99 * c99
+)
+
+func main() {
+ println(c1 / c1)
+ println(c2 / c2)
+ println(c3 / c3)
+ println(c4 / c4)
+ println(c5 / c5)
+ println(c6 / c6)
+ println(c7 / c7)
+ println(c8 / c8)
+ println(c9 / c9)
+ println(c10 / c10)
+ println(c20 / c20)
+ println(c30 / c30)
+ println(c40 / c40)
+ println(c50 / c50)
+ println(c60 / c60)
+ println(c70 / c70)
+ println(c80 / c80)
+ println(c90 / c90)
+ println(c100 / c100)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7760.go b/gcc/testsuite/go.test/test/fixedbugs/issue7760.go
new file mode 100644
index 0000000..7e1d035
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7760.go
@@ -0,0 +1,25 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that pointers can't be used as constants.
+
+package main
+
+import "unsafe"
+
+type myPointer unsafe.Pointer
+
+const _ = unsafe.Pointer(uintptr(1)) // ERROR "is not (a )?constant|invalid constant type"
+const _ = myPointer(uintptr(1)) // ERROR "is not (a )?constant|invalid constant type"
+
+const _ = (*int)(unsafe.Pointer(uintptr(1))) // ERROR "is not (a )?constant|invalid constant type"
+const _ = (*int)(myPointer(uintptr(1))) // ERROR "is not (a )?constant|invalid constant type"
+
+const _ = uintptr(unsafe.Pointer(uintptr(1))) // ERROR "is not (a )?constant|expression is not constant"
+const _ = uintptr(myPointer(uintptr(1))) // ERROR "is not (a )?constant|expression is no constant"
+
+const _ = []byte("") // ERROR "is not (a )?constant|invalid constant type"
+const _ = []rune("") // ERROR "is not (a )?constant|invalid constant type"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7794.go b/gcc/testsuite/go.test/test/fixedbugs/issue7794.go
new file mode 100644
index 0000000..f31de94
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7794.go
@@ -0,0 +1,12 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ var a [10]int
+ const ca = len(a)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7863.go b/gcc/testsuite/go.test/test/fixedbugs/issue7863.go
new file mode 100644
index 0000000..da2ed05
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7863.go
@@ -0,0 +1,60 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+)
+
+type Foo int64
+
+func (f *Foo) F() int64 {
+ return int64(*f)
+}
+
+type Bar int64
+
+func (b Bar) F() int64 {
+ return int64(b)
+}
+
+type Baz int32
+
+func (b Baz) F() int64 {
+ return int64(b)
+}
+
+func main() {
+ foo := Foo(123)
+ f := foo.F
+ if foo.F() != f() {
+ bug()
+ fmt.Println("foo.F", foo.F(), f())
+ }
+ bar := Bar(123)
+ f = bar.F
+ if bar.F() != f() {
+ bug()
+ fmt.Println("bar.F", bar.F(), f()) // duh!
+ }
+
+ baz := Baz(123)
+ f = baz.F
+ if baz.F() != f() {
+ bug()
+ fmt.Println("baz.F", baz.F(), f())
+ }
+}
+
+var bugged bool
+
+func bug() {
+ if !bugged {
+ bugged = true
+ fmt.Println("BUG")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7867.go b/gcc/testsuite/go.test/test/fixedbugs/issue7867.go
new file mode 100644
index 0000000..166506e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7867.go
@@ -0,0 +1,43 @@
+// runoutput
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7867.
+
+package main
+
+import "fmt"
+
+const tpl = `
+func Test%d(t %s) {
+ _ = t
+ _ = t
+}
+`
+
+func main() {
+ fmt.Println("package main")
+ types := []string{
+ // These types always passed
+ "bool", "int", "rune",
+ "*int", "uintptr",
+ "float32", "float64",
+ "chan struct{}",
+ "map[string]struct{}",
+ "func()", "func(string)error",
+
+ // These types caused compilation failures
+ "complex64", "complex128",
+ "struct{}", "struct{n int}", "struct{e error}", "struct{m map[string]string}",
+ "string",
+ "[4]byte",
+ "[]byte",
+ "interface{}", "error",
+ }
+ for i, typ := range types {
+ fmt.Printf(tpl, i, typ)
+ }
+ fmt.Println("func main() {}")
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7884.go b/gcc/testsuite/go.test/test/fixedbugs/issue7884.go
new file mode 100644
index 0000000..ab7a858
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7884.go
@@ -0,0 +1,15 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "fmt"
+
+func main() {
+ var ii interface{} = 5
+ zz, err := ii.(interface{})
+ fmt.Println(zz, err)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7921.go b/gcc/testsuite/go.test/test/fixedbugs/issue7921.go
new file mode 100644
index 0000000..5dce557
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7921.go
@@ -0,0 +1,57 @@
+// +build !gcflags_noopt
+// errorcheck -0 -m
+
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package foo
+
+import "bytes"
+
+// In order to get desired results, we need a combination of
+// both escape analysis and inlining.
+
+func bufferNotEscape() string {
+ // b itself does not escape, only its buf field will be
+ // copied during String() call, but object "handle" itself
+ // can be stack-allocated.
+ var b bytes.Buffer
+ b.WriteString("123")
+ b.Write([]byte{'4'}) // ERROR "\[\]byte{...} does not escape$"
+ return b.String() // ERROR "inlining call to bytes.\(\*Buffer\).String$" "string\(bytes.b.buf\[bytes.b.off:\]\) escapes to heap$"
+}
+
+func bufferNoEscape2(xs []string) int { // ERROR "xs does not escape$"
+ b := bytes.NewBuffer(make([]byte, 0, 64)) // ERROR "&bytes.Buffer{...} does not escape$" "make\(\[\]byte, 0, 64\) does not escape$" "inlining call to bytes.NewBuffer$"
+ for _, x := range xs {
+ b.WriteString(x)
+ }
+ return b.Len() // ERROR "inlining call to bytes.\(\*Buffer\).Len$"
+}
+
+func bufferNoEscape3(xs []string) string { // ERROR "xs does not escape$"
+ b := bytes.NewBuffer(make([]byte, 0, 64)) // ERROR "&bytes.Buffer{...} does not escape$" "make\(\[\]byte, 0, 64\) does not escape$" "inlining call to bytes.NewBuffer$"
+ for _, x := range xs {
+ b.WriteString(x)
+ b.WriteByte(',')
+ }
+ return b.String() // ERROR "inlining call to bytes.\(\*Buffer\).String$" "string\(bytes.b.buf\[bytes.b.off:\]\) escapes to heap$"
+}
+
+func bufferNoEscape4() []byte {
+ var b bytes.Buffer
+ b.Grow(64) // ERROR "bufferNoEscape4 ignoring self-assignment in bytes.b.buf = bytes.b.buf\[:bytes.m·3\]$" "inlining call to bytes.\(\*Buffer\).Grow$"
+ useBuffer(&b)
+ return b.Bytes() // ERROR "inlining call to bytes.\(\*Buffer\).Bytes$"
+}
+
+func bufferNoEscape5() { // ERROR "can inline bufferNoEscape5$"
+ b := bytes.NewBuffer(make([]byte, 0, 128)) // ERROR "&bytes.Buffer{...} does not escape$" "make\(\[\]byte, 0, 128\) does not escape$" "inlining call to bytes.NewBuffer$"
+ useBuffer(b)
+}
+
+//go:noinline
+func useBuffer(b *bytes.Buffer) { // ERROR "b does not escape$"
+ b.WriteString("1234")
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7944.go b/gcc/testsuite/go.test/test/fixedbugs/issue7944.go
new file mode 100644
index 0000000..960065b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7944.go
@@ -0,0 +1,40 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7944:
+// Liveness bitmaps said b was live at call to g,
+// but no one told the register optimizer.
+
+package main
+
+import "runtime"
+
+func f(b []byte) {
+ for len(b) > 0 {
+ n := len(b)
+ n = f1(n)
+ f2(b[n:])
+ b = b[n:]
+ }
+ g()
+}
+
+func f1(n int) int {
+ runtime.GC()
+ return n
+}
+
+func f2(b []byte) {
+ runtime.GC()
+}
+
+func g() {
+ runtime.GC()
+}
+
+func main() {
+ f(make([]byte, 100))
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7995.go b/gcc/testsuite/go.test/test/fixedbugs/issue7995.go
new file mode 100644
index 0000000..af77a6d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7995.go
@@ -0,0 +1,25 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7995: globals not flushed quickly enough.
+
+package main
+
+import "fmt"
+
+var (
+ p = 1
+ q = &p
+)
+
+func main() {
+ p = 50
+ *q = 100
+ s := fmt.Sprintln(p, *q)
+ if s != "100 100\n" {
+ println("BUG:", s)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7995b.dir/x1.go b/gcc/testsuite/go.test/test/fixedbugs/issue7995b.dir/x1.go
new file mode 100644
index 0000000..bafecf5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7995b.dir/x1.go
@@ -0,0 +1,12 @@
+package x1
+
+import "fmt"
+
+var P int
+
+//go:noinline
+func F(x *int) string {
+ P = 50
+ *x = 100
+ return fmt.Sprintln(P, *x)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7995b.dir/x2.go b/gcc/testsuite/go.test/test/fixedbugs/issue7995b.dir/x2.go
new file mode 100644
index 0000000..eea23ea
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7995b.dir/x2.go
@@ -0,0 +1,10 @@
+package main
+
+import "./x1"
+
+func main() {
+ s := x1.F(&x1.P)
+ if s != "100 100\n" {
+ println("BUG:", s)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7995b.go b/gcc/testsuite/go.test/test/fixedbugs/issue7995b.go
new file mode 100644
index 0000000..2f57371
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7995b.go
@@ -0,0 +1,9 @@
+// rundir
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 7995: globals not flushed quickly enough.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7996.go b/gcc/testsuite/go.test/test/fixedbugs/issue7996.go
new file mode 100644
index 0000000..1ee6fc7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7996.go
@@ -0,0 +1,14 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// /tmp/x.go:5: illegal constant expression: bool == interface {}
+
+package p
+
+var m = map[interface{}]struct{}{
+ nil: {},
+ true: {},
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7997.go b/gcc/testsuite/go.test/test/fixedbugs/issue7997.go
new file mode 100644
index 0000000..a342189
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7997.go
@@ -0,0 +1,53 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// /tmp/x.go:3: internal error: f &p (type *int) recorded as live on entry
+
+package p
+
+func f(ch chan int) *int {
+ select {
+ case p1x := <-ch:
+ return &p1x
+ default:
+ // ok
+ }
+ select {
+ case p1 := <-ch:
+ return &p1
+ default:
+ // ok
+ }
+ select {
+ case p2 := <-ch:
+ return &p2
+ case p3 := <-ch:
+ return &p3
+ default:
+ // ok
+ }
+ select {
+ case p4, ok := <-ch:
+ if ok {
+ return &p4
+ }
+ default:
+ // ok
+ }
+ select {
+ case p5, ok := <-ch:
+ if ok {
+ return &p5
+ }
+ case p6, ok := <-ch:
+ if !ok {
+ return &p6
+ }
+ default:
+ // ok
+ }
+ return nil
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue7998.go b/gcc/testsuite/go.test/test/fixedbugs/issue7998.go
new file mode 100644
index 0000000..8da39e8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue7998.go
@@ -0,0 +1,23 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// /tmp/x.go:5: cannot use _ as value
+
+package p
+
+func f(ch chan int) bool {
+ select {
+ case _, ok := <-ch:
+ return ok
+ }
+ _, ok := <-ch
+ _ = ok
+ select {
+ case _, _ = <-ch:
+ return true
+ }
+ return false
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8004.go b/gcc/testsuite/go.test/test/fixedbugs/issue8004.go
new file mode 100644
index 0000000..548ee1c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8004.go
@@ -0,0 +1,59 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "reflect"
+ "runtime"
+ "unsafe"
+)
+
+func main() {
+ test1()
+ test2()
+}
+
+func test1() {
+ var all []interface{}
+ for i := 0; i < 100; i++ {
+ p := new([]int)
+ *p = append(*p, 1, 2, 3, 4)
+ h := (*reflect.SliceHeader)(unsafe.Pointer(p))
+ all = append(all, h, p)
+ }
+ runtime.GC()
+ for i := 0; i < 100; i++ {
+ p := *all[2*i+1].(*[]int)
+ if p[0] != 1 || p[1] != 2 || p[2] != 3 || p[3] != 4 {
+ println("BUG test1: bad slice at index", i, p[0], p[1], p[2], p[3])
+ return
+ }
+ }
+}
+
+type T struct {
+ H *reflect.SliceHeader
+ P *[]int
+}
+
+func test2() {
+ var all []T
+ for i := 0; i < 100; i++ {
+ p := new([]int)
+ *p = append(*p, 1, 2, 3, 4)
+ h := (*reflect.SliceHeader)(unsafe.Pointer(p))
+ all = append(all, T{H: h}, T{P: p})
+ }
+ runtime.GC()
+ for i := 0; i < 100; i++ {
+ p := *all[2*i+1].P
+ if p[0] != 1 || p[1] != 2 || p[2] != 3 || p[3] != 4 {
+ println("BUG test2: bad slice at index", i, p[0], p[1], p[2], p[3])
+ return
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8011.go b/gcc/testsuite/go.test/test/fixedbugs/issue8011.go
new file mode 100644
index 0000000..57af2a9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8011.go
@@ -0,0 +1,18 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ c := make(chan chan int, 1)
+ c1 := make(chan int, 1)
+ c1 <- 42
+ c <- c1
+ x := <-<-c
+ if x != 42 {
+ println("BUG:", x, "!= 42")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8017.go b/gcc/testsuite/go.test/test/fixedbugs/issue8017.go
new file mode 100644
index 0000000..9afcdf0
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8017.go
@@ -0,0 +1,26 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issues 8017 and 8058: walk modifies nodes generated
+// by slicelit and causes an internal error afterwards
+// when gen_as_init parses it back.
+
+package main
+
+func F() {
+ var ch chan int
+ select {
+ case <-ch:
+ case <-make(chan int, len([2][]int{([][]int{})[len(ch)], []int{}})):
+ }
+}
+
+func G() {
+ select {
+ case <-([1][]chan int{[]chan int{}})[0][0]:
+ default:
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8028.go b/gcc/testsuite/go.test/test/fixedbugs/issue8028.go
new file mode 100644
index 0000000..9f2649a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8028.go
@@ -0,0 +1,27 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8028. Used to fail in -race mode with "non-orig name" error.
+
+package p
+
+var (
+ t2 = T{F, "s1"}
+ t1 = T{F, "s2"}
+
+ tt = [...]T{t1, t2}
+)
+
+type I interface{}
+
+type T struct {
+ F func() I
+ S string
+}
+
+type E struct{}
+
+func F() I { return new(E) }
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8036.go b/gcc/testsuite/go.test/test/fixedbugs/issue8036.go
new file mode 100644
index 0000000..82ba7f7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8036.go
@@ -0,0 +1,45 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8036. Stores necessary for stack scan being eliminated as redundant by optimizer.
+
+package main
+
+import "runtime"
+
+type T struct {
+ X *int
+ Y *int
+ Z *int
+}
+
+type TI [3]uintptr
+
+//go:noinline
+func G() (t TI) {
+ t[0] = 1
+ t[1] = 2
+ t[2] = 3
+ return
+}
+
+//go:noinline
+func F() (t T) {
+ t.X = newint()
+ t.Y = t.X
+ t.Z = t.Y
+ return
+}
+
+func newint() *int {
+ runtime.GC()
+ return nil
+}
+
+func main() {
+ G() // leave non-pointers where F's return values go
+ F()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8039.go b/gcc/testsuite/go.test/test/fixedbugs/issue8039.go
new file mode 100644
index 0000000..ee00c60
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8039.go
@@ -0,0 +1,23 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 8039. defer copy(x, <-c) did not rewrite <-c properly.
+
+package main
+
+func f(s []int) {
+ c := make(chan []int, 1)
+ c <- []int{1}
+ defer copy(s, <-c)
+}
+
+func main() {
+ x := make([]int, 1)
+ f(x)
+ if x[0] != 1 {
+ println("BUG", x[0])
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8047.go b/gcc/testsuite/go.test/test/fixedbugs/issue8047.go
new file mode 100644
index 0000000..5ac4a0e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8047.go
@@ -0,0 +1,29 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8047. Stack copier shouldn't crash if there
+// is a nil defer.
+
+package main
+
+func stackit(n int) {
+ if n == 0 {
+ return
+ }
+ stackit(n - 1)
+}
+
+func main() {
+ defer func() {
+ // catch & ignore panic from nil defer below
+ err := recover()
+ if err == nil {
+ panic("defer of nil func didn't panic")
+ }
+ }()
+ defer ((func())(nil))()
+ stackit(1000)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8047b.go b/gcc/testsuite/go.test/test/fixedbugs/issue8047b.go
new file mode 100644
index 0000000..5eaf9c5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8047b.go
@@ -0,0 +1,26 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8047. Defer setup during panic shouldn't crash for nil defer.
+
+package main
+
+func main() {
+ defer func() {
+ // This recover recovers the panic caused by the nil defer func
+ // g(). The original panic(1) was already aborted/replaced by this
+ // new panic, so when this recover is done, the program completes
+ // normally.
+ recover()
+ }()
+ f()
+}
+
+func f() {
+ var g func()
+ defer g()
+ panic(1)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8048.go b/gcc/testsuite/go.test/test/fixedbugs/issue8048.go
new file mode 100644
index 0000000..577f606
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8048.go
@@ -0,0 +1,107 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8048. Incorrect handling of liveness when walking stack
+// containing faulting frame.
+
+package main
+
+import "runtime"
+
+func main() {
+ test1()
+ test2()
+ test3()
+}
+
+func test1() {
+ // test1f will panic without its own defer.
+ // The runtime.GC checks that we can walk the stack
+ // at that point and not get confused.
+ // The recover lets test1 exit normally.
+ defer func() {
+ runtime.GC()
+ recover()
+ }()
+ test1f()
+}
+
+func test1f() {
+ // Because b == false, the if does not execute,
+ // so x == nil, so the println(*x) faults reading
+ // from nil. The compiler will lay out the code
+ // so that the if body occurs above the *x,
+ // so if the liveness info at the *x is used, it will
+ // find the liveness at the call to runtime.GC.
+ // It will think y is live, but y is uninitialized,
+ // and the runtime will crash detecting a bad slice.
+ // The runtime should see that there are no defers
+ // corresponding to this panicked frame and ignore
+ // the frame entirely.
+ var x *int
+ var b bool
+ if b {
+ y := make([]int, 1)
+ runtime.GC()
+ x = &y[0]
+ }
+ println(*x)
+}
+
+func test2() {
+ // Same as test1, but the fault happens in the function with the defer.
+ // The runtime should see the defer and garbage collect the frame
+ // as if the PC were immediately after the defer statement.
+ defer func() {
+ runtime.GC()
+ recover()
+ }()
+ var x *int
+ var b bool
+ if b {
+ y := make([]int, 1)
+ runtime.GC()
+ x = &y[0]
+ }
+ println(*x)
+}
+
+func test3() {
+ // Like test1 but avoid array index, which does not
+ // move to end of function on ARM.
+ defer func() {
+ runtime.GC()
+ recover()
+ }()
+ test3setup()
+ test3f()
+}
+
+func test3setup() {
+ var x uintptr
+ var b bool
+ b = true
+ if b {
+ y := uintptr(123)
+ runtime.GC()
+ x = y
+ }
+ runtime.GC()
+ globl = x
+}
+
+var globl uintptr
+
+func test3f() {
+ var x *int
+ var b bool
+ if b {
+ y := new(int)
+ runtime.GC()
+ x = y
+ }
+ println(*x)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8060.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue8060.dir/a.go
new file mode 100644
index 0000000..22ba69e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8060.dir/a.go
@@ -0,0 +1,7 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+var A = []*[2][1]float64{}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8060.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue8060.dir/b.go
new file mode 100644
index 0000000..85fb6ec
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8060.dir/b.go
@@ -0,0 +1,13 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package b
+
+import "a"
+
+var X = a.A
+
+func b() {
+ _ = [3][1]float64{}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8060.go b/gcc/testsuite/go.test/test/fixedbugs/issue8060.go
new file mode 100644
index 0000000..ec52659
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8060.go
@@ -0,0 +1,9 @@
+// compiledir
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8060: internal compiler error.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8073.go b/gcc/testsuite/go.test/test/fixedbugs/issue8073.go
new file mode 100644
index 0000000..d47481c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8073.go
@@ -0,0 +1,15 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 8073.
+// was "internal compiler error: overflow: float64 integer constant"
+
+package main
+
+func main() {
+ var x int
+ _ = float64(x * 0)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8074.go b/gcc/testsuite/go.test/test/fixedbugs/issue8074.go
new file mode 100644
index 0000000..604a4f9
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8074.go
@@ -0,0 +1,16 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 8074.
+// was "cannot take the address of 1"
+
+package main
+
+func main() {
+ a := make([]byte, 10)
+ m := make(map[float64][]byte)
+ go copy(a, m[1.0])
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8076.go b/gcc/testsuite/go.test/test/fixedbugs/issue8076.go
new file mode 100644
index 0000000..543ccc1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8076.go
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8076. nilwalkfwd walked forward forever
+// on the instruction loop following the dereference.
+
+package main
+
+func main() {
+ _ = *(*int)(nil)
+L:
+ _ = 0
+ goto L
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8079.go b/gcc/testsuite/go.test/test/fixedbugs/issue8079.go
new file mode 100644
index 0000000..994999b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8079.go
@@ -0,0 +1,11 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8079: gccgo crashes when compiling interface with blank type name.
+
+package p
+
+type _ interface{}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8132.go b/gcc/testsuite/go.test/test/fixedbugs/issue8132.go
new file mode 100644
index 0000000..b28a84c
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8132.go
@@ -0,0 +1,32 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 8132. stack walk handling of panic stack was confused
+// about what was legal.
+
+package main
+
+import "runtime"
+
+var p *int
+
+func main() {
+ func() {
+ defer func() {
+ runtime.GC()
+ recover()
+ }()
+ var x [8192]byte
+ func(x [8192]byte) {
+ defer func() {
+ if err := recover(); err != nil {
+ println(*p)
+ }
+ }()
+ println(*p)
+ }(x)
+ }()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8139.go b/gcc/testsuite/go.test/test/fixedbugs/issue8139.go
new file mode 100644
index 0000000..6e5607d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8139.go
@@ -0,0 +1,50 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8139. The x.(T) assertions used to write 1 (unexpected)
+// return byte for the 0-byte return value T.
+
+package main
+
+import "fmt"
+
+type T struct{}
+
+func (T) M() {}
+
+type M interface {
+ M()
+}
+
+var e interface{} = T{}
+var i M = T{}
+var b bool
+
+func f1() int {
+ if b {
+ return f1() // convince inliner not to inline
+ }
+ z := 0x11223344
+ _ = e.(T)
+ return z
+}
+
+func f2() int {
+ if b {
+ return f1() // convince inliner not to inline
+ }
+ z := 0x11223344
+ _ = i.(T)
+ return z
+}
+
+func main() {
+ x := f1()
+ y := f2()
+ if x != 0x11223344 || y != 0x11223344 {
+ fmt.Printf("BUG: x=%#x y=%#x, want 0x11223344 for both\n", x, y)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8154.go b/gcc/testsuite/go.test/test/fixedbugs/issue8154.go
new file mode 100644
index 0000000..3ffad34
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8154.go
@@ -0,0 +1,14 @@
+// compile
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8154: cmd/5g: ICE in walkexpr walk.c
+
+package main
+
+func main() {
+ c := make(chan int)
+ _ = [1][]func(){[]func(){func() { <-c }}}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8155.go b/gcc/testsuite/go.test/test/fixedbugs/issue8155.go
new file mode 100644
index 0000000..56a6738
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8155.go
@@ -0,0 +1,48 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8155.
+// Alignment of stack prologue zeroing was wrong on 64-bit Native Client
+// (because of 32-bit pointers).
+
+package main
+
+import "runtime"
+
+func bad(b bool) uintptr {
+ var p **int
+ var x1 uintptr
+ x1 = 1
+ if b {
+ var x [11]*int
+ p = &x[0]
+ }
+ if b {
+ var x [1]*int
+ p = &x[0]
+ }
+ runtime.GC()
+ if p != nil {
+ x1 = uintptr(**p)
+ }
+ return x1
+}
+
+func poison() uintptr {
+ runtime.GC()
+ var x [20]uintptr
+ var s uintptr
+ for i := range x {
+ x[i] = uintptr(i+1)
+ s += x[i]
+ }
+ return s
+}
+
+func main() {
+ poison()
+ bad(false)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8158.go b/gcc/testsuite/go.test/test/fixedbugs/issue8158.go
new file mode 100644
index 0000000..150b338
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8158.go
@@ -0,0 +1,41 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "runtime"
+ "time"
+)
+
+func main() {
+ c := make(chan bool, 1)
+ go f1(c)
+ <-c
+ time.Sleep(10 * time.Millisecond)
+ go f2(c)
+ <-c
+}
+
+func f1(done chan bool) {
+ defer func() {
+ recover()
+ done <- true
+ runtime.Goexit() // left stack-allocated Panic struct on gp->panic stack
+ }()
+ panic("p")
+}
+
+func f2(done chan bool) {
+ defer func() {
+ recover()
+ done <- true
+ runtime.Goexit()
+ }()
+ time.Sleep(10 * time.Millisecond) // overwrote Panic struct with Timer struct
+ runtime.GC() // walked gp->panic list, found mangled Panic struct, crashed
+ panic("p")
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8183.go b/gcc/testsuite/go.test/test/fixedbugs/issue8183.go
new file mode 100644
index 0000000..caac667
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8183.go
@@ -0,0 +1,23 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Tests correct reporting of line numbers for errors involving iota,
+// Issue #8183.
+package foo
+
+const (
+ ok = byte(iota + 253)
+ bad
+ barn
+ bard // ERROR "constant 256 overflows byte|integer constant overflow"
+)
+
+const (
+ c = len([1 - iota]int{})
+ d
+ e // ERROR "array bound must be non-negative|negative array bound"
+ f // ERROR "array bound must be non-negative|negative array bound"
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8280.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue8280.dir/a.go
new file mode 100644
index 0000000..588536e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8280.dir/a.go
@@ -0,0 +1,3 @@
+package a
+
+var Bar = func() (_ int) { return 0 }
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8280.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue8280.dir/b.go
new file mode 100644
index 0000000..c46c554
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8280.dir/b.go
@@ -0,0 +1,5 @@
+package b
+
+import "./a"
+
+var foo = a.Bar
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8280.go b/gcc/testsuite/go.test/test/fixedbugs/issue8280.go
new file mode 100644
index 0000000..91256c8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8280.go
@@ -0,0 +1,9 @@
+// compiledir
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8280: cannot import package exporting a func var returning a result named _
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8311.go b/gcc/testsuite/go.test/test/fixedbugs/issue8311.go
new file mode 100644
index 0000000..b5fd5da
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8311.go
@@ -0,0 +1,16 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 8311.
+// error for x++ should say x++ not x += 1
+
+package p
+
+func f() {
+ var x []byte
+ x++ // ERROR "invalid operation: x[+][+]|non-numeric type"
+
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8325.go b/gcc/testsuite/go.test/test/fixedbugs/issue8325.go
new file mode 100644
index 0000000..6b0fc25
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8325.go
@@ -0,0 +1,31 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8325: corrupted byte operations during optimization
+// pass.
+
+package main
+
+const alphanum = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+
+func main() {
+ var bytes = []byte{10, 20, 30, 40, 50}
+
+ for i, b := range bytes {
+ bytes[i] = alphanum[b%byte(len(alphanum))]
+ }
+
+ for _, b := range bytes {
+ switch {
+ case '0' <= b && b <= '9',
+ 'A' <= b && b <= 'Z':
+ default:
+ println("found a bad character", string(b))
+ panic("BUG")
+ }
+
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8336.go b/gcc/testsuite/go.test/test/fixedbugs/issue8336.go
new file mode 100644
index 0000000..419fdf1
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8336.go
@@ -0,0 +1,29 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8336. Order of evaluation of receive channels in select.
+
+package main
+
+type X struct {
+ c chan int
+}
+
+func main() {
+ defer func() {
+ recover()
+ }()
+ var x *X
+ select {
+ case <-x.c: // should fault and panic before foo is called
+ case <-foo():
+ }
+}
+
+func foo() chan int {
+ println("BUG: foo must not be called")
+ return make(chan int)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8347.go b/gcc/testsuite/go.test/test/fixedbugs/issue8347.go
new file mode 100644
index 0000000..6394a95
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8347.go
@@ -0,0 +1,27 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ c := make(chan bool, 1)
+ ok := true
+ for i := 0; i < 12; i++ {
+ select {
+ case _, ok = <-c:
+ if i < 10 && !ok {
+ panic("BUG")
+ }
+ default:
+ }
+ if i < 10 && !ok {
+ panic("BUG")
+ }
+ if i >= 10 && ok {
+ close(c)
+ }
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8385.go b/gcc/testsuite/go.test/test/fixedbugs/issue8385.go
new file mode 100644
index 0000000..f3d395e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8385.go
@@ -0,0 +1,42 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8385: provide a more descriptive error when a method expression
+// is called without a receiver.
+
+package main
+
+type Fooer interface {
+ Foo(i, j int)
+}
+
+func f(x int) {
+}
+
+type I interface {
+ M(int)
+}
+type T struct{}
+
+func (t T) M(x int) {
+}
+
+func g() func(int)
+
+func main() {
+ Fooer.Foo(5, 6) // ERROR "not enough arguments in call to method expression Fooer.Foo|incompatible type|not enough arguments"
+
+ var i I
+ var t *T
+
+ g()() // ERROR "not enough arguments in call to g\(\)|not enough arguments"
+ f() // ERROR "not enough arguments in call to f|not enough arguments"
+ i.M() // ERROR "not enough arguments in call to i\.M|not enough arguments"
+ I.M() // ERROR "not enough arguments in call to method expression I\.M|not enough arguments"
+ t.M() // ERROR "not enough arguments in call to t\.M|not enough arguments"
+ T.M() // ERROR "not enough arguments in call to method expression T\.M|not enough arguments"
+ (*T).M() // ERROR "not enough arguments in call to method expression \(\*T\)\.M|not enough arguments"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8438.go b/gcc/testsuite/go.test/test/fixedbugs/issue8438.go
new file mode 100644
index 0000000..f433e36
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8438.go
@@ -0,0 +1,17 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check that we don't print duplicate errors for string ->
+// array-literal conversion
+
+package main
+
+func main() {
+ _ = []byte{"foo"} // ERROR "cannot use|incompatible type"
+ _ = []int{"foo"} // ERROR "cannot use|incompatible type"
+ _ = []rune{"foo"} // ERROR "cannot use|incompatible type"
+ _ = []string{"foo"} // OK
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8440.go b/gcc/testsuite/go.test/test/fixedbugs/issue8440.go
new file mode 100644
index 0000000..e9c5b54
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8440.go
@@ -0,0 +1,11 @@
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ n.foo = 6 // ERROR "undefined: n in n.foo|undefined name .*n"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8475.go b/gcc/testsuite/go.test/test/fixedbugs/issue8475.go
new file mode 100644
index 0000000..5b22067
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8475.go
@@ -0,0 +1,25 @@
+// build
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8745: comma-ok assignments should produce untyped bool as 2nd result.
+
+package main
+
+type mybool bool
+
+func main() {
+ var ok mybool
+ _ = ok
+
+ var i interface{}
+ _, ok = i.(int)
+
+ var m map[int]int
+ _, ok = m[0]
+
+ var c chan int
+ _, ok = <-c
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8501.go b/gcc/testsuite/go.test/test/fixedbugs/issue8501.go
new file mode 100644
index 0000000..90ba096
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8501.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+type T struct {
+ f float64
+}
+
+var t T
+
+func F() {
+ _ = complex(1.0) // ERROR "invalid operation|not enough arguments"
+ _ = complex(t.f) // ERROR "invalid operation|not enough arguments"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8613.go b/gcc/testsuite/go.test/test/fixedbugs/issue8613.go
new file mode 100644
index 0000000..ffa75a4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8613.go
@@ -0,0 +1,38 @@
+// run
+
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var out int
+var zero int
+
+func main() {
+ wantPanic("test1", func() {
+ out = 1 / zero
+ })
+ wantPanic("test2", func() {
+ _ = 1 / zero
+ })
+ wantPanic("test3", func() {
+ v := 0
+ _ = 1 / v
+ })
+ wantPanic("test4", func() { divby(0) })
+}
+
+func wantPanic(test string, fn func()) {
+ defer func() {
+ if e := recover(); e == nil {
+ panic(test + ": expected panic")
+ }
+ }()
+ fn()
+}
+
+//go:noinline
+func divby(v int) {
+ _ = 1 / v
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8620.go b/gcc/testsuite/go.test/test/fixedbugs/issue8620.go
new file mode 100644
index 0000000..4754604
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8620.go
@@ -0,0 +1,30 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8620. Used to fail with -race.
+
+package main
+
+func min(a, b int) int {
+ if a < b {
+ return a
+ }
+ return b
+}
+
+func test(s1, s2 []struct{}) {
+ n := min(len(s1), len(s2))
+ if copy(s1, s2) != n {
+ panic("bad copy result")
+ }
+}
+
+func main() {
+ var b [100]struct{}
+ test(b[:], b[:])
+ test(b[1:], b[:])
+ test(b[:], b[2:])
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8745.go b/gcc/testsuite/go.test/test/fixedbugs/issue8745.go
new file mode 100644
index 0000000..fee2ca7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8745.go
@@ -0,0 +1,13 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check that the error says s[2] is a byte, not a uint8.
+
+package p
+
+func f(s string) {
+ var _ float64 = s[2] // ERROR "cannot use.*type byte.*as type float64"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8761.go b/gcc/testsuite/go.test/test/fixedbugs/issue8761.go
new file mode 100644
index 0000000..7f458f7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8761.go
@@ -0,0 +1,26 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// issue 8761
+// used to confuse code generator into using temporary before initialization.
+// caused 'variable live at entry' error in liveness analysis.
+
+package p
+
+func _() {
+ type C chan int
+ _ = [1][]C{[]C{make(chan int)}}
+}
+
+func _() {
+ type C interface{}
+ _ = [1][]C{[]C{recover()}}
+}
+
+func _() {
+ type C *int
+ _ = [1][]C{[]C{new(int)}}
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8836.go b/gcc/testsuite/go.test/test/fixedbugs/issue8836.go
new file mode 100644
index 0000000..039b9c7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8836.go
@@ -0,0 +1,24 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Checking that line number is correct in error message.
+
+package main
+
+type Cint int
+
+func foobar(*Cint, Cint, Cint, *Cint)
+
+func main() {
+ a := Cint(1)
+
+ foobar(
+ &a,
+ 0,
+ 0,
+ 42, // ERROR ".*"
+ )
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8947.go b/gcc/testsuite/go.test/test/fixedbugs/issue8947.go
new file mode 100644
index 0000000..703207d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8947.go
@@ -0,0 +1,53 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Some uses of zeroed constants in non-assignment
+// expressions broke with our more aggressive zeroing
+// of assignments (internal compiler errors).
+
+package main
+
+func f1() {
+ type T [2]int
+ p := T{0, 1}
+ switch p {
+ case T{0, 0}:
+ panic("wrong1")
+ case T{0, 1}:
+ // ok
+ default:
+ panic("wrong2")
+ }
+
+ if p == (T{0, 0}) {
+ panic("wrong3")
+ } else if p == (T{0, 1}) {
+ // ok
+ } else {
+ panic("wrong4")
+ }
+}
+
+type T struct {
+ V int
+}
+
+var X = T{}.V
+
+func f2() {
+ var x = T{}.V
+ if x != 0 {
+ panic("wrongx")
+ }
+ if X != 0 {
+ panic("wrongX")
+ }
+}
+
+func main() {
+ f1()
+ f2()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue8961.go b/gcc/testsuite/go.test/test/fixedbugs/issue8961.go
new file mode 100644
index 0000000..22b0f04
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue8961.go
@@ -0,0 +1,20 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 8961. Empty composite literals to small globals were not filled in
+package main
+
+type small struct { a int }
+var foo small
+
+func main() {
+ foo.a = 1
+ foo = small{}
+ if foo.a != 0 {
+ println("expected foo.a to be 0, was", foo.a)
+ panic("composite literal not filled in")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9006.go b/gcc/testsuite/go.test/test/fixedbugs/issue9006.go
new file mode 100644
index 0000000..a61574b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9006.go
@@ -0,0 +1,37 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+type T1 struct {
+ X int
+}
+
+func NewT1(x int) T1 { return T1{x} }
+
+type T2 int
+
+func NewT2(x int) T2 { return T2(x) }
+
+func main() {
+ switch (T1{}) {
+ case NewT1(1):
+ panic("bad1")
+ case NewT1(0):
+ // ok
+ default:
+ panic("bad2")
+ }
+
+ switch T2(0) {
+ case NewT2(2):
+ panic("bad3")
+ case NewT2(0):
+ // ok
+ default:
+ panic("bad4")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9017.go b/gcc/testsuite/go.test/test/fixedbugs/issue9017.go
new file mode 100644
index 0000000..5659785
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9017.go
@@ -0,0 +1,57 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 9017: Method selector shouldn't automatically dereference a named pointer type.
+
+package main
+
+type T struct{ x int }
+
+func (T) mT() {}
+
+type S struct {
+ T
+}
+
+func (S) mS() {}
+
+type P *S
+
+type I interface {
+ mT()
+}
+
+func main() {
+ var s S
+ s.T.mT()
+ s.mT() // == s.T.mT()
+
+ var i I
+ _ = i
+ i = s.T
+ i = s
+
+ var ps = &s
+ ps.mS()
+ ps.T.mT()
+ ps.mT() // == ps.T.mT()
+
+ i = ps.T
+ i = ps
+
+ var p P = ps
+ (*p).mS()
+ p.mS() // ERROR "undefined"
+
+ i = *p
+ i = p // ERROR "cannot use|incompatible types"
+
+ p.T.mT()
+ p.mT() // ERROR "undefined"
+
+ i = p.T
+ i = p // ERROR "cannot use|incompatible types"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9036.go b/gcc/testsuite/go.test/test/fixedbugs/issue9036.go
new file mode 100644
index 0000000..e3d394f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9036.go
@@ -0,0 +1,31 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Expects to see error messages on 'p' exponents
+// for non-hexadecimal floats.
+
+package main
+
+import "fmt"
+
+const (
+ x1 = 1.1 // float
+ x2 = 1e10 // float
+ x3 = 0x1e10 // integer (e is a hex digit)
+)
+
+const x4 = 0x1p10 // valid hexadecimal float
+const x5 = 1p10 // ERROR "'p' exponent requires hexadecimal mantissa|invalid prefix"
+const x6 = 0P0 // ERROR "'P' exponent requires hexadecimal mantissa|invalid prefix"
+
+func main() {
+ fmt.Printf("%g %T\n", x1, x1)
+ fmt.Printf("%g %T\n", x2, x2)
+ fmt.Printf("%g %T\n", x3, x3)
+ fmt.Printf("%g %T\n", x4, x4)
+ fmt.Printf("%g %T\n", x5, x5)
+ fmt.Printf("%g %T\n", x6, x6)
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9076.go b/gcc/testsuite/go.test/test/fixedbugs/issue9076.go
new file mode 100644
index 0000000..1613d5e
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9076.go
@@ -0,0 +1,15 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 9076: cmd/gc shows computed values in error messages instead of original expression.
+
+package main
+
+import "unsafe"
+
+const Hundred = 100
+var _ int32 = 100/unsafe.Sizeof(int(0)) + 1 // ERROR "100 \/ unsafe.Sizeof\(int\(0\)\) \+ 1|incompatible type"
+var _ int32 = Hundred/unsafe.Sizeof(int(0)) + 1 // ERROR "Hundred \/ unsafe.Sizeof\(int\(0\)\) \+ 1|incompatible type"
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9083.go b/gcc/testsuite/go.test/test/fixedbugs/issue9083.go
new file mode 100644
index 0000000..d4762f8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9083.go
@@ -0,0 +1,23 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 9083: map/chan error messages show non-explicit capacity.
+
+package main
+
+// untyped constant
+const zero = 0
+
+func main() {
+ var x int
+ x = make(map[int]int) // ERROR "cannot use make\(map\[int\]int\)|incompatible"
+ x = make(map[int]int, 0) // ERROR "cannot use make\(map\[int\]int, 0\)|incompatible"
+ x = make(map[int]int, zero) // ERROR "cannot use make\(map\[int\]int, zero\)|incompatible"
+ x = make(chan int) // ERROR "cannot use make\(chan int\)|incompatible"
+ x = make(chan int, 0) // ERROR "cannot use make\(chan int, 0\)|incompatible"
+ x = make(chan int, zero) // ERROR "cannot use make\(chan int, zero\)|incompatible"
+ _ = x
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9110.go b/gcc/testsuite/go.test/test/fixedbugs/issue9110.go
new file mode 100644
index 0000000..086be77
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9110.go
@@ -0,0 +1,91 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Scenario that used to leak arbitrarily many SudoG structs.
+// See golang.org/issue/9110.
+
+package main
+
+import (
+ "runtime"
+ "runtime/debug"
+ "sync"
+ "time"
+)
+
+func main() {
+ runtime.GOMAXPROCS(1)
+ debug.SetGCPercent(1000000) // only GC when we ask for GC
+
+ var stats, stats1, stats2 runtime.MemStats
+
+ release := func() {}
+ for i := 0; i < 20; i++ {
+ if i == 10 {
+ // Should be warmed up by now.
+ runtime.ReadMemStats(&stats1)
+ }
+
+ c := make(chan int)
+ for i := 0; i < 10; i++ {
+ go func() {
+ select {
+ case <-c:
+ case <-c:
+ case <-c:
+ }
+ }()
+ }
+ time.Sleep(1 * time.Millisecond)
+ release()
+
+ close(c) // let select put its sudog's into the cache
+ time.Sleep(1 * time.Millisecond)
+
+ // pick up top sudog
+ var cond1 sync.Cond
+ var mu1 sync.Mutex
+ cond1.L = &mu1
+ go func() {
+ mu1.Lock()
+ cond1.Wait()
+ mu1.Unlock()
+ }()
+ time.Sleep(1 * time.Millisecond)
+
+ // pick up next sudog
+ var cond2 sync.Cond
+ var mu2 sync.Mutex
+ cond2.L = &mu2
+ go func() {
+ mu2.Lock()
+ cond2.Wait()
+ mu2.Unlock()
+ }()
+ time.Sleep(1 * time.Millisecond)
+
+ // put top sudog back
+ cond1.Broadcast()
+ time.Sleep(1 * time.Millisecond)
+
+ // drop cache on floor
+ runtime.GC()
+
+ // release cond2 after select has gotten to run
+ release = func() {
+ cond2.Broadcast()
+ time.Sleep(1 * time.Millisecond)
+ }
+ }
+
+ runtime.GC()
+
+ runtime.ReadMemStats(&stats2)
+
+ if int(stats2.HeapObjects)-int(stats1.HeapObjects) > 20 { // normally at most 1 or 2; was 300 with leak
+ print("BUG: object leak: ", stats.HeapObjects, " -> ", stats1.HeapObjects, " -> ", stats2.HeapObjects, "\n")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9321.go b/gcc/testsuite/go.test/test/fixedbugs/issue9321.go
new file mode 100644
index 0000000..2b2807a
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9321.go
@@ -0,0 +1,37 @@
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "bytes"
+ "runtime"
+ "runtime/pprof"
+ "sync"
+)
+
+func test() {
+ var wg sync.WaitGroup
+ wg.Add(2)
+ test := func() {
+ for i := 0; i < 10; i++ {
+ buf := &bytes.Buffer{}
+ pprof.Lookup("goroutine").WriteTo(buf, 2)
+ }
+ wg.Done()
+ }
+
+ go test()
+ go test()
+ wg.Wait()
+}
+
+func main() {
+ runtime.GOMAXPROCS(4)
+ for i := 0; i < 10; i++ {
+ test()
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9355.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue9355.dir/a.go
new file mode 100644
index 0000000..84500c8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9355.dir/a.go
@@ -0,0 +1,16 @@
+package main
+
+var x struct {
+ a, b, c int64
+ d struct{ p, q, r int32 }
+ e [8]byte
+ f [4]struct{ p, q, r int32 }
+}
+
+var y = &x.b
+var z = &x.d.q
+
+var b [10]byte
+var c = &b[5]
+
+var w = &x.f[3].r
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9355.go b/gcc/testsuite/go.test/test/fixedbugs/issue9355.go
new file mode 100644
index 0000000..319a2a90d
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9355.go
@@ -0,0 +1,63 @@
+// +build !js,gc
+// run
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "io/ioutil"
+ "os"
+ "os/exec"
+ "path/filepath"
+ "regexp"
+)
+
+func main() {
+ err := os.Chdir(filepath.Join("fixedbugs", "issue9355.dir"))
+ check(err)
+
+ f, err := ioutil.TempFile("", "issue9355-*.o")
+ if err != nil {
+ fmt.Println(err)
+ os.Exit(1)
+ }
+ f.Close()
+
+ out := run("go", "tool", "compile", "-o", f.Name(), "-S", "a.go")
+ os.Remove(f.Name())
+
+ // 6g/8g print the offset as dec, but 5g/9g print the offset as hex.
+ patterns := []string{
+ `rel 0\+\d t=1 \"\"\.x\+8\r?\n`, // y = &x.b
+ `rel 0\+\d t=1 \"\"\.x\+(28|1c)\r?\n`, // z = &x.d.q
+ `rel 0\+\d t=1 \"\"\.b\+5\r?\n`, // c = &b[5]
+ `rel 0\+\d t=1 \"\"\.x\+(88|58)\r?\n`, // w = &x.f[3].r
+ }
+ for _, p := range patterns {
+ if ok, err := regexp.Match(p, out); !ok || err != nil {
+ println(string(out))
+ panic("can't find pattern " + p)
+ }
+ }
+}
+
+func run(cmd string, args ...string) []byte {
+ out, err := exec.Command(cmd, args...).CombinedOutput()
+ if err != nil {
+ fmt.Println(string(out))
+ fmt.Println(err)
+ os.Exit(1)
+ }
+ return out
+}
+
+func check(err error) {
+ if err != nil {
+ fmt.Println("BUG:", err)
+ os.Exit(1)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9370.go b/gcc/testsuite/go.test/test/fixedbugs/issue9370.go
new file mode 100644
index 0000000..6cc8d5b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9370.go
@@ -0,0 +1,127 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Verify that concrete/interface comparisons are
+// typechecked correctly by the compiler.
+
+package main
+
+type I interface {
+ Method()
+}
+
+type C int
+
+func (C) Method() {}
+
+type G func()
+
+func (G) Method() {}
+
+var (
+ e interface{}
+ i I
+ c C
+ n int
+ f func()
+ g G
+)
+
+var (
+ _ = e == c
+ _ = e != c
+ _ = e >= c // ERROR "invalid operation.*not defined|invalid comparison"
+ _ = c == e
+ _ = c != e
+ _ = c >= e // ERROR "invalid operation.*not defined|invalid comparison"
+
+ _ = i == c
+ _ = i != c
+ _ = i >= c // ERROR "invalid operation.*not defined|invalid comparison"
+ _ = c == i
+ _ = c != i
+ _ = c >= i // ERROR "invalid operation.*not defined|invalid comparison"
+
+ _ = e == n
+ _ = e != n
+ _ = e >= n // ERROR "invalid operation.*not defined|invalid comparison"
+ _ = n == e
+ _ = n != e
+ _ = n >= e // ERROR "invalid operation.*not defined|invalid comparison"
+
+ // i and n are not assignable to each other
+ _ = i == n // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = i != n // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = i >= n // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = n == i // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = n != i // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = n >= i // ERROR "invalid operation.*mismatched types|incompatible types"
+
+ _ = e == 1
+ _ = e != 1
+ _ = e >= 1 // ERROR "invalid operation.*not defined|invalid comparison"
+ _ = 1 == e
+ _ = 1 != e
+ _ = 1 >= e // ERROR "invalid operation.*not defined|invalid comparison"
+
+ _ = i == 1 // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = i != 1 // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = i >= 1 // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = 1 == i // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = 1 != i // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = 1 >= i // ERROR "invalid operation.*mismatched types|incompatible types"
+
+ _ = e == f // ERROR "invalid operation.*not defined|invalid operation"
+ _ = e != f // ERROR "invalid operation.*not defined|invalid operation"
+ _ = e >= f // ERROR "invalid operation.*not defined|invalid comparison"
+ _ = f == e // ERROR "invalid operation.*not defined|invalid operation"
+ _ = f != e // ERROR "invalid operation.*not defined|invalid operation"
+ _ = f >= e // ERROR "invalid operation.*not defined|invalid comparison"
+
+ _ = i == f // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = i != f // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = i >= f // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = f == i // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = f != i // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = f >= i // ERROR "invalid operation.*mismatched types|incompatible types"
+
+ _ = e == g // ERROR "invalid operation.*not defined|invalid operation"
+ _ = e != g // ERROR "invalid operation.*not defined|invalid operation"
+ _ = e >= g // ERROR "invalid operation.*not defined|invalid comparison"
+ _ = g == e // ERROR "invalid operation.*not defined|invalid operation"
+ _ = g != e // ERROR "invalid operation.*not defined|invalid operation"
+ _ = g >= e // ERROR "invalid operation.*not defined|invalid comparison"
+
+ _ = i == g // ERROR "invalid operation.*not defined|invalid operation"
+ _ = i != g // ERROR "invalid operation.*not defined|invalid operation"
+ _ = i >= g // ERROR "invalid operation.*not defined|invalid comparison"
+ _ = g == i // ERROR "invalid operation.*not defined|invalid operation"
+ _ = g != i // ERROR "invalid operation.*not defined|invalid operation"
+ _ = g >= i // ERROR "invalid operation.*not defined|invalid comparison"
+
+ _ = _ == e // ERROR "cannot use .*_.* as value"
+ _ = _ == i // ERROR "cannot use .*_.* as value"
+ _ = _ == c // ERROR "cannot use .*_.* as value"
+ _ = _ == n // ERROR "cannot use .*_.* as value"
+ _ = _ == f // ERROR "cannot use .*_.* as value"
+ _ = _ == g // ERROR "cannot use .*_.* as value"
+
+ _ = e == _ // ERROR "cannot use .*_.* as value"
+ _ = i == _ // ERROR "cannot use .*_.* as value"
+ _ = c == _ // ERROR "cannot use .*_.* as value"
+ _ = n == _ // ERROR "cannot use .*_.* as value"
+ _ = f == _ // ERROR "cannot use .*_.* as value"
+ _ = g == _ // ERROR "cannot use .*_.* as value"
+
+ _ = _ == _ // ERROR "cannot use .*_.* as value"
+
+ _ = e ^ c // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = c ^ e // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = 1 ^ e // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = e ^ 1 // ERROR "invalid operation.*mismatched types|incompatible types"
+ _ = 1 ^ c
+ _ = c ^ 1
+)
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9432.go b/gcc/testsuite/go.test/test/fixedbugs/issue9432.go
new file mode 100644
index 0000000..e8946a5
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9432.go
@@ -0,0 +1,15 @@
+// errorcheck
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// gc used to recurse infinitely when dowidth is applied
+// to a broken recursive type again.
+// See golang.org/issue/9432.
+package p
+
+type foo struct { // ERROR "invalid recursive type"
+ bar foo
+ blah foo
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9521.go b/gcc/testsuite/go.test/test/fixedbugs/issue9521.go
new file mode 100644
index 0000000..1ad40bd
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9521.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test that an incorrect use of the blank identifier is caught.
+// Does not compile.
+
+package main
+
+func f() (_, _ []int) { return }
+func g() (x []int, y float64) { return }
+
+func main() {
+ _ = append(f()) // ERROR "cannot use \[\]int value as type int in append|incompatible type"
+ _ = append(g()) // ERROR "cannot use float64 value as type int in append|incompatible type"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9537.dir/a.go b/gcc/testsuite/go.test/test/fixedbugs/issue9537.dir/a.go
new file mode 100644
index 0000000..818c9eb
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9537.dir/a.go
@@ -0,0 +1,25 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package a
+
+type X struct {
+ T [32]byte
+}
+
+func (x *X) Get() []byte {
+ t := x.T
+ return t[:]
+}
+
+func (x *X) RetPtr(i int) *int {
+ i++
+ return &i
+}
+
+func (x *X) RetRPtr(i int) (r1 int, r2 *int) {
+ r1 = i + 1
+ r2 = &r1
+ return
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9537.dir/b.go b/gcc/testsuite/go.test/test/fixedbugs/issue9537.dir/b.go
new file mode 100644
index 0000000..52e64c8
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9537.dir/b.go
@@ -0,0 +1,43 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "bytes"
+
+ "./a"
+)
+
+type X struct {
+ *a.X
+}
+
+type Intf interface {
+ Get() []byte
+ RetPtr(int) *int
+ RetRPtr(int) (int, *int)
+}
+
+func main() {
+ x := &a.X{T: [32]byte{1, 2, 3, 4}}
+ var ix Intf = X{x}
+ t1 := ix.Get()
+ t2 := x.Get()
+ if !bytes.Equal(t1, t2) {
+ panic(t1)
+ }
+
+ p1 := ix.RetPtr(5)
+ p2 := x.RetPtr(7)
+ if *p1 != 6 || *p2 != 8 {
+ panic(*p1)
+ }
+
+ r1, r2 := ix.RetRPtr(10)
+ r3, r4 := x.RetRPtr(13)
+ if r1 != 11 || *r2 != 11 || r3 != 14 || *r4 != 14 {
+ panic("bad RetRPtr")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9537.go b/gcc/testsuite/go.test/test/fixedbugs/issue9537.go
new file mode 100644
index 0000000..ac2d41b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9537.go
@@ -0,0 +1,10 @@
+// rundir
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 9537: Compiler does not run escape analysis on an inlined
+// generated method wrapper.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9604.go b/gcc/testsuite/go.test/test/fixedbugs/issue9604.go
new file mode 100644
index 0000000..cd9e9e4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9604.go
@@ -0,0 +1,29 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var x uint16 = 0xffff
+var y uint16 = 0xfffe
+var a uint16 = 0x7000
+var b uint16 = 0x9000
+
+func main() {
+ // Make sure we truncate to smaller-width types after evaluating expressions.
+ // This is a problem for arm where there is no 16-bit comparison op.
+ if ^x != 0 {
+ panic("^uint16(0xffff) != 0")
+ }
+ if ^y != 1 {
+ panic("^uint16(0xfffe) != 1")
+ }
+ if -x != 1 {
+ panic("-uint16(0xffff) != 1")
+ }
+ if a+b != 0 {
+ panic("0x7000+0x9000 != 0")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9604b.go b/gcc/testsuite/go.test/test/fixedbugs/issue9604b.go
new file mode 100644
index 0000000..d32116b
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9604b.go
@@ -0,0 +1,180 @@
+// runoutput
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// terribly slow on wasm
+// +build !wasm
+
+package main
+
+import (
+ "fmt"
+ "math/big"
+ "unsafe"
+)
+
+var one = big.NewInt(1)
+
+type _type struct {
+ name string
+ bits uint
+ signed bool
+}
+
+// testvalues returns a list of all test values for this type.
+func (t *_type) testvalues() []*big.Int {
+ var a []*big.Int
+
+ a = append(a, big.NewInt(0))
+ a = append(a, big.NewInt(1))
+ a = append(a, big.NewInt(2))
+ if t.signed {
+ a = append(a, big.NewInt(-1))
+ a = append(a, big.NewInt(-2))
+ r := big.NewInt(1)
+ a = append(a, r.Lsh(r, t.bits-1).Sub(r, big.NewInt(1)))
+ r = big.NewInt(1)
+ a = append(a, r.Lsh(r, t.bits-1).Sub(r, big.NewInt(2)))
+ r = big.NewInt(1)
+ a = append(a, r.Lsh(r, t.bits-1).Neg(r))
+ r = big.NewInt(1)
+ a = append(a, r.Lsh(r, t.bits-1).Neg(r).Add(r, big.NewInt(1)))
+ } else {
+ r := big.NewInt(1)
+ a = append(a, r.Lsh(r, t.bits).Sub(r, big.NewInt(1)))
+ r = big.NewInt(1)
+ a = append(a, r.Lsh(r, t.bits).Sub(r, big.NewInt(2)))
+ }
+ return a
+}
+
+// trunc truncates a value to the range of the given type.
+func (t *_type) trunc(x *big.Int) *big.Int {
+ r := new(big.Int)
+ m := new(big.Int)
+ m.Lsh(one, t.bits)
+ m.Sub(m, one)
+ r.And(x, m)
+ if t.signed && r.Bit(int(t.bits)-1) == 1 {
+ m.Neg(one)
+ m.Lsh(m, t.bits)
+ r.Or(r, m)
+ }
+ return r
+}
+
+var types = []_type{
+ _type{"byte", 8, false},
+ _type{"int8", 8, true},
+ _type{"uint8", 8, false},
+ _type{"rune", 32, true},
+ _type{"int16", 16, true},
+ _type{"uint16", 16, false},
+ _type{"int32", 32, true},
+ _type{"uint32", 32, false},
+ _type{"int64", 64, true},
+ _type{"uint64", 64, false},
+ _type{"int", 8 * uint(unsafe.Sizeof(int(0))), true},
+ _type{"uint", 8 * uint(unsafe.Sizeof(uint(0))), false},
+ _type{"uintptr", 8 * uint(unsafe.Sizeof((*byte)(nil))), false},
+}
+
+type binop struct {
+ name string
+ eval func(x, y *big.Int) *big.Int
+}
+
+var binops = []binop{
+ binop{"+", func(x, y *big.Int) *big.Int { return new(big.Int).Add(x, y) }},
+ binop{"-", func(x, y *big.Int) *big.Int { return new(big.Int).Sub(x, y) }},
+ binop{"*", func(x, y *big.Int) *big.Int { return new(big.Int).Mul(x, y) }},
+ binop{"/", func(x, y *big.Int) *big.Int { return new(big.Int).Quo(x, y) }},
+ binop{"%", func(x, y *big.Int) *big.Int { return new(big.Int).Rem(x, y) }},
+ binop{"&", func(x, y *big.Int) *big.Int { return new(big.Int).And(x, y) }},
+ binop{"|", func(x, y *big.Int) *big.Int { return new(big.Int).Or(x, y) }},
+ binop{"^", func(x, y *big.Int) *big.Int { return new(big.Int).Xor(x, y) }},
+ binop{"&^", func(x, y *big.Int) *big.Int { return new(big.Int).AndNot(x, y) }},
+}
+
+type unop struct {
+ name string
+ eval func(x *big.Int) *big.Int
+}
+
+var unops = []unop{
+ unop{"+", func(x *big.Int) *big.Int { return new(big.Int).Set(x) }},
+ unop{"-", func(x *big.Int) *big.Int { return new(big.Int).Neg(x) }},
+ unop{"^", func(x *big.Int) *big.Int { return new(big.Int).Not(x) }},
+}
+
+type shiftop struct {
+ name string
+ eval func(x *big.Int, i uint) *big.Int
+}
+
+var shiftops = []shiftop{
+ shiftop{"<<", func(x *big.Int, i uint) *big.Int { return new(big.Int).Lsh(x, i) }},
+ shiftop{">>", func(x *big.Int, i uint) *big.Int { return new(big.Int).Rsh(x, i) }},
+}
+
+// valname returns the name of n as can be used as part of a variable name.
+func valname(n *big.Int) string {
+ s := fmt.Sprintf("%d", n)
+ if s[0] == '-' {
+ s = "neg" + s[1:]
+ }
+ return s
+}
+
+func main() {
+ fmt.Println("package main")
+
+ // We make variables to hold all the different values we'd like to use.
+ // We use global variables to prevent any constant folding.
+ for _, t := range types {
+ for _, n := range t.testvalues() {
+ fmt.Printf("var %s_%s %s = %d\n", t.name, valname(n), t.name, n)
+ }
+ }
+
+ fmt.Println("func main() {")
+
+ for _, t := range types {
+ // test binary ops
+ for _, op := range binops {
+ for _, x := range t.testvalues() {
+ for _, y := range t.testvalues() {
+ if (op.name == "/" || op.name == "%") && y.Sign() == 0 {
+ continue
+ }
+ r := t.trunc(op.eval(x, y))
+ eqn := fmt.Sprintf("%s_%s %s %s_%s != %d", t.name, valname(x), op.name, t.name, valname(y), r)
+ fmt.Printf("\tif %s { println(\"bad: %s\") }\n", eqn, eqn)
+ }
+ }
+ }
+ // test unary ops
+ for _, op := range unops {
+ for _, x := range t.testvalues() {
+ r := t.trunc(op.eval(x))
+ eqn := fmt.Sprintf("%s %s_%s != %d", op.name, t.name, valname(x), r)
+ fmt.Printf("\tif %s { println(\"bad: %s\") }\n", eqn, eqn)
+ }
+ }
+ // test shifts
+ for _, op := range shiftops {
+ for _, x := range t.testvalues() {
+
+ for _, i := range []uint{0, 1, t.bits - 2, t.bits - 1, t.bits, t.bits + 1} {
+ r := t.trunc(op.eval(x, i))
+ eqn := fmt.Sprintf("%s_%s %s %d != %d", t.name, valname(x), op.name, i, r)
+ fmt.Printf("\tif %s { println(\"bad: %s\") }\n", eqn, eqn)
+ }
+ }
+ }
+ }
+
+ fmt.Println("}")
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9608.dir/issue9608.go b/gcc/testsuite/go.test/test/fixedbugs/issue9608.dir/issue9608.go
new file mode 100644
index 0000000..ca82ded
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9608.dir/issue9608.go
@@ -0,0 +1,82 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func fail() // unimplemented, to test dead code elimination
+
+// Test dead code elimination in if statements
+func init() {
+ if false {
+ fail()
+ }
+ if 0 == 1 {
+ fail()
+ }
+}
+
+// Test dead code elimination in ordinary switch statements
+func init() {
+ const x = 0
+ switch x {
+ case 1:
+ fail()
+ }
+
+ switch 1 {
+ case x:
+ fail()
+ }
+
+ switch {
+ case false:
+ fail()
+ }
+
+ const a = "a"
+ switch a {
+ case "b":
+ fail()
+ }
+
+ const snowman = '☃'
+ switch snowman {
+ case '☀':
+ fail()
+ }
+
+ const zero = float64(0.0)
+ const one = float64(1.0)
+ switch one {
+ case -1.0:
+ fail()
+ case zero:
+ fail()
+ }
+
+ switch 1.0i {
+ case 1:
+ fail()
+ case -1i:
+ fail()
+ }
+
+ const no = false
+ switch no {
+ case true:
+ fail()
+ }
+
+ // Test dead code elimination in large ranges.
+ switch 5 {
+ case 3, 4, 5, 6, 7:
+ case 0, 1, 2:
+ fail()
+ default:
+ fail()
+ }
+}
+
+func main() {
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9608.go b/gcc/testsuite/go.test/test/fixedbugs/issue9608.go
new file mode 100644
index 0000000..92592d7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9608.go
@@ -0,0 +1,14 @@
+// rundir
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 9608: dead code elimination in switch statements.
+
+// This has to be done as a package rather than as a file,
+// because run.go runs files with 'go run', which passes the
+// -complete flag to compiler, causing it to complain about
+// the intentionally unimplemented function fail.
+
+package ignored
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9634.go b/gcc/testsuite/go.test/test/fixedbugs/issue9634.go
new file mode 100644
index 0000000..2d5aae4
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9634.go
@@ -0,0 +1,18 @@
+// errorcheck
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 9634: Structs are incorrectly unpacked when passed as an argument
+// to append.
+
+package main
+
+func main() {
+ s := struct{
+ t []int
+ u int
+ }{}
+ _ = append(s, 0) // ERROR "must be a slice|must be slice"
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9691.go b/gcc/testsuite/go.test/test/fixedbugs/issue9691.go
new file mode 100644
index 0000000..39c3dfa
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9691.go
@@ -0,0 +1,21 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func main() {
+ s := "foo"
+ b := []byte(s)
+ m := make(map[string]int)
+ // Test that map index can be used in range
+ // and that slicebytetostringtmp is not used in this context.
+ for m[string(b)] = range s {
+ }
+ b[0] = 'b'
+ if m["foo"] != 2 {
+ panic("bad")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9731.go b/gcc/testsuite/go.test/test/fixedbugs/issue9731.go
new file mode 100644
index 0000000..9237d65
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9731.go
@@ -0,0 +1,21 @@
+// compile
+
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package p
+
+func f(x interface{}) {
+ switch x := x.(type) {
+ case int:
+ func() {
+ _ = x
+ }()
+ case map[int]int:
+ func() {
+ for range x {
+ }
+ }()
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9738.go b/gcc/testsuite/go.test/test/fixedbugs/issue9738.go
new file mode 100644
index 0000000..85319d7
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9738.go
@@ -0,0 +1,20 @@
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func F() (x int) {
+ defer func() {
+ if x != 42 {
+ println("BUG: x =", x)
+ }
+ }()
+ return 42
+}
+
+func main() {
+ F()
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9862.go b/gcc/testsuite/go.test/test/fixedbugs/issue9862.go
new file mode 100644
index 0000000..3572512
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9862.go
@@ -0,0 +1,15 @@
+// skip
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var a [1<<31 - 1024]byte
+
+func main() {
+ if a[0] != 0 {
+ panic("bad array")
+ }
+}
diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue9862_run.go b/gcc/testsuite/go.test/test/fixedbugs/issue9862_run.go
new file mode 100644
index 0000000..c956c7f
--- /dev/null
+++ b/gcc/testsuite/go.test/test/fixedbugs/issue9862_run.go
@@ -0,0 +1,27 @@
+// +build !nacl,!js,gc
+// run
+
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Check for compile or link error.
+
+package main
+
+import (
+ "os/exec"
+ "strings"
+)
+
+func main() {
+ out, err := exec.Command("go", "run", "fixedbugs/issue9862.go").CombinedOutput()
+ outstr := string(out)
+ if err == nil {
+ println("go run issue9862.go succeeded, should have failed\n", outstr)
+ return
+ }
+ if !strings.Contains(outstr, "symbol too large") {
+ println("go run issue9862.go gave unexpected error; want symbol too large:\n", outstr)
+ }
+}
diff --git a/gcc/testsuite/go.test/test/run.go b/gcc/testsuite/go.test/test/run.go
index 4abf32d..db3e9f6 100644
--- a/gcc/testsuite/go.test/test/run.go
+++ b/gcc/testsuite/go.test/test/run.go
@@ -438,7 +438,7 @@ func (ctxt *context) match(name string) bool {
}
}
- if name == ctxt.GOOS || name == ctxt.GOARCH {
+ if name == ctxt.GOOS || name == ctxt.GOARCH || name == "gc" {
return true
}
diff --git a/gcc/testsuite/lib/asan-dg.exp b/gcc/testsuite/lib/asan-dg.exp
index 8f96751..e926dc3 100644
--- a/gcc/testsuite/lib/asan-dg.exp
+++ b/gcc/testsuite/lib/asan-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/atomic-dg.exp b/gcc/testsuite/lib/atomic-dg.exp
index e9a30af..cc19d27 100644
--- a/gcc/testsuite/lib/atomic-dg.exp
+++ b/gcc/testsuite/lib/atomic-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/brig-dg.exp b/gcc/testsuite/lib/brig-dg.exp
index 0be3289..41c55f9 100644
--- a/gcc/testsuite/lib/brig-dg.exp
+++ b/gcc/testsuite/lib/brig-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/brig.exp b/gcc/testsuite/lib/brig.exp
index de47f13..d82cd88 100644
--- a/gcc/testsuite/lib/brig.exp
+++ b/gcc/testsuite/lib/brig.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/c-compat.exp b/gcc/testsuite/lib/c-compat.exp
index 2b67317..5403091 100644
--- a/gcc/testsuite/lib/c-compat.exp
+++ b/gcc/testsuite/lib/c-compat.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/c-torture.exp b/gcc/testsuite/lib/c-torture.exp
index c6aafa63..e56f98f 100644
--- a/gcc/testsuite/lib/c-torture.exp
+++ b/gcc/testsuite/lib/c-torture.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1992-2020 Free Software Foundation, Inc.
+# Copyright (C) 1992-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/clearcap.exp b/gcc/testsuite/lib/clearcap.exp
index e3fc46d..ff6dba3 100644
--- a/gcc/testsuite/lib/clearcap.exp
+++ b/gcc/testsuite/lib/clearcap.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/compat.exp b/gcc/testsuite/lib/compat.exp
index 5cb4ff8..b7b7466 100644
--- a/gcc/testsuite/lib/compat.exp
+++ b/gcc/testsuite/lib/compat.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/copy-file.exp b/gcc/testsuite/lib/copy-file.exp
index 4e2a2fc..e983986 100644
--- a/gcc/testsuite/lib/copy-file.exp
+++ b/gcc/testsuite/lib/copy-file.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/dejapatches.exp b/gcc/testsuite/lib/dejapatches.exp
index f19c697..bfb6487 100644
--- a/gcc/testsuite/lib/dejapatches.exp
+++ b/gcc/testsuite/lib/dejapatches.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/dg-pch.exp b/gcc/testsuite/lib/dg-pch.exp
index 732771f..1f60fde 100644
--- a/gcc/testsuite/lib/dg-pch.exp
+++ b/gcc/testsuite/lib/dg-pch.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/file-format.exp b/gcc/testsuite/lib/file-format.exp
index fdb17e7..6ef4c13 100644
--- a/gcc/testsuite/lib/file-format.exp
+++ b/gcc/testsuite/lib/file-format.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/fortran-modules.exp b/gcc/testsuite/lib/fortran-modules.exp
index a54debb..234d1c9 100644
--- a/gcc/testsuite/lib/fortran-modules.exp
+++ b/gcc/testsuite/lib/fortran-modules.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/fortran-torture.exp b/gcc/testsuite/lib/fortran-torture.exp
index 6bff13b..d6759aa 100644
--- a/gcc/testsuite/lib/fortran-torture.exp
+++ b/gcc/testsuite/lib/fortran-torture.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/g++-dg.exp b/gcc/testsuite/lib/g++-dg.exp
index 115c394..c360770 100644
--- a/gcc/testsuite/lib/g++-dg.exp
+++ b/gcc/testsuite/lib/g++-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/g++.exp b/gcc/testsuite/lib/g++.exp
index 0e10176..eea7900 100644
--- a/gcc/testsuite/lib/g++.exp
+++ b/gcc/testsuite/lib/g++.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1992-2020 Free Software Foundation, Inc.
+# Copyright (C) 1992-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/gcc-defs.exp b/gcc/testsuite/lib/gcc-defs.exp
index 380a18b..a36b30d 100644
--- a/gcc/testsuite/lib/gcc-defs.exp
+++ b/gcc/testsuite/lib/gcc-defs.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp
index 700529a..e48a184 100644
--- a/gcc/testsuite/lib/gcc-dg.exp
+++ b/gcc/testsuite/lib/gcc-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/gcc-gdb-test.exp b/gcc/testsuite/lib/gcc-gdb-test.exp
index 343b16b..b3cdbb9 100644
--- a/gcc/testsuite/lib/gcc-gdb-test.exp
+++ b/gcc/testsuite/lib/gcc-gdb-test.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/gcc-simulate-thread.exp b/gcc/testsuite/lib/gcc-simulate-thread.exp
index cef9444..6af2df9 100644
--- a/gcc/testsuite/lib/gcc-simulate-thread.exp
+++ b/gcc/testsuite/lib/gcc-simulate-thread.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2020 Free Software Foundation, Inc.
+# Copyright (C) 2011-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/gcc.exp b/gcc/testsuite/lib/gcc.exp
index 16935b8..dda4d0e 100644
--- a/gcc/testsuite/lib/gcc.exp
+++ b/gcc/testsuite/lib/gcc.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1992-2020 Free Software Foundation, Inc.
+# Copyright (C) 1992-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/gcov.exp b/gcc/testsuite/lib/gcov.exp
index 9276aea..f330965 100644
--- a/gcc/testsuite/lib/gcov.exp
+++ b/gcc/testsuite/lib/gcov.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -247,6 +247,68 @@ proc verify-calls { testname testcase file } {
return $failed
}
+proc gcov-pytest-format-line { args } {
+ global subdir
+
+ set testcase [lindex $args 0]
+ set pytest_script [lindex $args 1]
+ set output_line [lindex $args 2]
+
+ set index [string first "::" $output_line]
+ set test_output [string range $output_line [expr $index + 2] [string length $output_line]]
+
+ return "$subdir/$testcase ${pytest_script}::${test_output}"
+}
+
+# Call by dg-final to run gcov --json-format which produces a JSON file
+# that is later analysed by a pytest Python script.
+# We pass filename of a test via GCOV_PATH environment variable.
+
+proc run-gcov-pytest { args } {
+ global GCOV
+ global srcdir subdir
+ # Extract the test file name from the arguments.
+ set testcase [lindex $args 0]
+
+ verbose "Running $GCOV $testcase in $srcdir/$subdir" 2
+ set testcase [remote_download host $testcase]
+ set result [remote_exec host $GCOV "$testcase -i"]
+
+ set pytest_cmd "python3 -m pytest --color=no -rap -s --tb=no"
+ set result [remote_exec host "$pytest_cmd --version"]
+ set status [lindex $result 0]
+ if { $status != 0 } then {
+ unsupported "$subdir/$testcase run-gcov-pytest python3 pytest missing"
+ return
+ }
+
+ set pytest_script [lindex $args 1]
+ setenv GCOV_PATH $testcase
+ verbose "pytest_script: $srcdir $subdir $pytest_script" 2
+ spawn -noecho python3 -m pytest --color=no -rap -s --tb=no $srcdir/$subdir/$pytest_script
+
+ set prefix "\[^\r\n\]*"
+ expect {
+ -re "FAILED($prefix)\[^\r\n\]+\r\n" {
+ set output [gcov-pytest-format-line $testcase $pytest_script $expect_out(1,string)]
+ fail $output
+ exp_continue
+ }
+ -re "ERROR($prefix)\[^\r\n\]+\r\n" {
+ set output [gcov-pytest-format-line $testcase $pytest_script $expect_out(1,string)]
+ fail $output
+ exp_continue
+ }
+ -re "PASSED($prefix)\[^\r\n\]+\r\n" {
+ set output [gcov-pytest-format-line $testcase $pytest_script $expect_out(1,string)]
+ pass $output
+ exp_continue
+ }
+ }
+
+ clean-gcov $testcase
+}
+
# Called by dg-final to run gcov and analyze the results.
#
# ARGS consists of the optional strings "branches" and/or "calls",
diff --git a/gcc/testsuite/lib/gdc-dg.exp b/gcc/testsuite/lib/gdc-dg.exp
index a65b1af..953f8d8 100644
--- a/gcc/testsuite/lib/gdc-dg.exp
+++ b/gcc/testsuite/lib/gdc-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/gdc-utils.exp b/gcc/testsuite/lib/gdc-utils.exp
index b1f90b8..6d4a15e 100644
--- a/gcc/testsuite/lib/gdc-utils.exp
+++ b/gcc/testsuite/lib/gdc-utils.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/gdc.exp b/gcc/testsuite/lib/gdc.exp
index 3912d9c..3dd3e67 100644
--- a/gcc/testsuite/lib/gdc.exp
+++ b/gcc/testsuite/lib/gdc.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2020 Free Software Foundation, Inc.
+# Copyright (C) 2012-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/gfortran-dg.exp b/gcc/testsuite/lib/gfortran-dg.exp
index 21388fb..e390112 100644
--- a/gcc/testsuite/lib/gfortran-dg.exp
+++ b/gcc/testsuite/lib/gfortran-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/gfortran.exp b/gcc/testsuite/lib/gfortran.exp
index fe99111..1e7da11 100644
--- a/gcc/testsuite/lib/gfortran.exp
+++ b/gcc/testsuite/lib/gfortran.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/gnat-dg.exp b/gcc/testsuite/lib/gnat-dg.exp
index 709fc5e..7e5bc488 100644
--- a/gcc/testsuite/lib/gnat-dg.exp
+++ b/gcc/testsuite/lib/gnat-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/gnat.exp b/gcc/testsuite/lib/gnat.exp
index 3c97050..b33911e 100644
--- a/gcc/testsuite/lib/gnat.exp
+++ b/gcc/testsuite/lib/gnat.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/go-dg.exp b/gcc/testsuite/lib/go-dg.exp
index 49b00b6..95e9c27 100644
--- a/gcc/testsuite/lib/go-dg.exp
+++ b/gcc/testsuite/lib/go-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/go-torture.exp b/gcc/testsuite/lib/go-torture.exp
index f9f99c3..28247a1 100644
--- a/gcc/testsuite/lib/go-torture.exp
+++ b/gcc/testsuite/lib/go-torture.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/go.exp b/gcc/testsuite/lib/go.exp
index 4b1a4a5..7b0cf34 100644
--- a/gcc/testsuite/lib/go.exp
+++ b/gcc/testsuite/lib/go.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/hwasan-dg.exp b/gcc/testsuite/lib/hwasan-dg.exp
index bd2a011..2b98aa4 100644
--- a/gcc/testsuite/lib/hwasan-dg.exp
+++ b/gcc/testsuite/lib/hwasan-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/lto.exp b/gcc/testsuite/lib/lto.exp
index b2fa7ec..94a81ff 100644
--- a/gcc/testsuite/lib/lto.exp
+++ b/gcc/testsuite/lib/lto.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/mike-g++.exp b/gcc/testsuite/lib/mike-g++.exp
index 2903358..7dda88d 100644
--- a/gcc/testsuite/lib/mike-g++.exp
+++ b/gcc/testsuite/lib/mike-g++.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1988-2020 Free Software Foundation, Inc.
+# Copyright (C) 1988-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/mike-gcc.exp b/gcc/testsuite/lib/mike-gcc.exp
index 2d5d8b45..ea13b69 100644
--- a/gcc/testsuite/lib/mike-gcc.exp
+++ b/gcc/testsuite/lib/mike-gcc.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1988-2020 Free Software Foundation, Inc.
+# Copyright (C) 1988-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/multiline.exp b/gcc/testsuite/lib/multiline.exp
index 627ad68..0e151b6 100644
--- a/gcc/testsuite/lib/multiline.exp
+++ b/gcc/testsuite/lib/multiline.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2020 Free Software Foundation, Inc.
+# Copyright (C) 2015-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/obj-c++-dg.exp b/gcc/testsuite/lib/obj-c++-dg.exp
index edadb6e..bf40c62 100644
--- a/gcc/testsuite/lib/obj-c++-dg.exp
+++ b/gcc/testsuite/lib/obj-c++-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/obj-c++.exp b/gcc/testsuite/lib/obj-c++.exp
index 063afe3..2ba252d 100644
--- a/gcc/testsuite/lib/obj-c++.exp
+++ b/gcc/testsuite/lib/obj-c++.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/objc-dg.exp b/gcc/testsuite/lib/objc-dg.exp
index 12ea9a9..0d8aba1 100644
--- a/gcc/testsuite/lib/objc-dg.exp
+++ b/gcc/testsuite/lib/objc-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/objc-torture.exp b/gcc/testsuite/lib/objc-torture.exp
index 9aa5792..6e9a039 100644
--- a/gcc/testsuite/lib/objc-torture.exp
+++ b/gcc/testsuite/lib/objc-torture.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1992-2020 Free Software Foundation, Inc.
+# Copyright (C) 1992-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/objc.exp b/gcc/testsuite/lib/objc.exp
index acdeb5b..e8f52d8 100644
--- a/gcc/testsuite/lib/objc.exp
+++ b/gcc/testsuite/lib/objc.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1992-2020 Free Software Foundation, Inc.
+# Copyright (C) 1992-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/options.exp b/gcc/testsuite/lib/options.exp
index 7700144..0c77012 100644
--- a/gcc/testsuite/lib/options.exp
+++ b/gcc/testsuite/lib/options.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/plugin-support.exp b/gcc/testsuite/lib/plugin-support.exp
index b37db3c..6d65190 100644
--- a/gcc/testsuite/lib/plugin-support.exp
+++ b/gcc/testsuite/lib/plugin-support.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/profopt.exp b/gcc/testsuite/lib/profopt.exp
index 98e1a0e..9997eb3 100644
--- a/gcc/testsuite/lib/profopt.exp
+++ b/gcc/testsuite/lib/profopt.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/prune.exp b/gcc/testsuite/lib/prune.exp
index 06904f9..a349c8a 100644
--- a/gcc/testsuite/lib/prune.exp
+++ b/gcc/testsuite/lib/prune.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/scanasm.exp b/gcc/testsuite/lib/scanasm.exp
index 43b7649..65e3118 100644
--- a/gcc/testsuite/lib/scanasm.exp
+++ b/gcc/testsuite/lib/scanasm.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2000-2020 Free Software Foundation, Inc.
+# Copyright (C) 2000-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -173,14 +173,8 @@ proc scan-assembler-symbol-section { args } {
set testcase [testname-for-summary]
set filename [lindex $testcase 0]
set output_file "[file rootname [file tail $filename]].s"
- set symbol_pattern [lindex $args 0]
- set expected_section_pattern [lindex $args 1]
dg-scan-symbol-section \
- "scan-assembler-symbol-section" \
- $testcase \
- $output_file \
- $symbol_pattern \
- $expected_section_pattern
+ "scan-assembler-symbol-section" $testcase $output_file $args
}
# Check that symbols are emitted in the desired section.
@@ -227,22 +221,44 @@ proc scan-assembler-symbol-section { args } {
proc scan-symbol-section { args } {
set testcase [testname-for-summary]
set output_file [lindex $args 0]
- set symbol_pattern [lindex $args 1]
- set expected_section_pattern [lindex $args 2]
dg-scan-symbol-section \
- "scan-symbol-section" \
- $testcase \
- $output_file \
- $symbol_pattern \
- $expected_section_pattern
+ "scan-symbol-section" $testcase $output_file $args
}
-# Check that symbols are emitted in the desired section.
+# Check that symbols are emitted in the desired section. The ORIG_ARGS is
+# the list of arguments provided by dg-final to scan-symbol-section or
+# scan-assembler-symbol-section. The first element in ORIG_ARGS is the
+# regular expression to look for in the file. The second element, if
+# present, is a DejaGNU target selector.
#
-# Avoid calling this function directly. In tests, use scan-symbol-section,
+# Avoid calling this function directly. In tests, use scan-symbol-section,
# scan-assembler-symbol-section, or scan-lto-assembler-symbol-section instead.
-proc dg-scan-symbol-section { name testcase output_file symbol_pattern expected_section_pattern } {
+proc dg-scan-symbol-section { name testcase output_file orig_args } {
+ if { [llength $orig_args] < 2 } {
+ error "$name: too few arguments"
+ return
+ }
+ if { [llength $orig_args] > 4 } {
+ error "$name: too many arguments"
+ return
+ }
+ switch $name {
+ "scan-symbol-section" { set arg_incr 1 }
+ default { set arg_incr 0 }
+ }
+ if { [llength $orig_args] >= 3 } {
+ switch [dg-process-target [lindex $orig_args [expr 2 + $arg_incr]]] {
+ "S" { }
+ "N" { return }
+ "F" { setup_xfail "*-*-*" }
+ "P" { }
+ }
+ }
+
+ set symbol_pattern [lindex $orig_args [expr 0 + $arg_incr]]
+ set expected_section_pattern [lindex $orig_args [expr 1 + $arg_incr]]
+
set printable_symbol_pattern [make_pattern_printable $symbol_pattern]
set printable_expected_section_pattern [make_pattern_printable $expected_section_pattern]
@@ -303,7 +319,7 @@ proc dg-scan-symbol-section { name testcase output_file symbol_pattern expected_
proc parse_section_of_symbols { filename result } {
upvar $result up_result
- set section_pattern {^\s*(?:(\.section|\.csect)\s+(.*)|(\.const|\.data|\.text)\s*)$}
+ set section_pattern {^\s*(?:(?:\.section|\.csect)\s+(.*)|(\.const|\.data|\.text)\s*)$}
set label_pattern {^(\S+):$}
set fd [open $filename r]
@@ -314,9 +330,11 @@ proc parse_section_of_symbols { filename result } {
} elseif { [regexp -- $section_pattern $line dummy section_directive_arguments full_section_directive] } {
if { $full_section_directive eq "" } {
# Example: .section .text,"ax",progbits
+ # Example: .section ".text",#alloc,#execinstr,#progbits
# Example: .section __TEXT,__text
set arguments [split $section_directive_arguments ","]
set current_section [string trim [lindex $arguments 0]]
+ set current_section [string trim $current_section {"}]
set arg_1 [string trim [lindex $arguments 1]]
if { [regexp {^_} $arg_1] } {
# The second argument looks like a Mach-O section name.
diff --git a/gcc/testsuite/lib/scandump.exp b/gcc/testsuite/lib/scandump.exp
index 1cf1559..616e164 100644
--- a/gcc/testsuite/lib/scandump.exp
+++ b/gcc/testsuite/lib/scandump.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2000-2020 Free Software Foundation, Inc.
+# Copyright (C) 2000-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/scanipa.exp b/gcc/testsuite/lib/scanipa.exp
index 51bd3fb..2cc4b8f 100644
--- a/gcc/testsuite/lib/scanipa.exp
+++ b/gcc/testsuite/lib/scanipa.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2000-2020 Free Software Foundation, Inc.
+# Copyright (C) 2000-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/scanlang.exp b/gcc/testsuite/lib/scanlang.exp
index b85ec68..f9759f0 100644
--- a/gcc/testsuite/lib/scanlang.exp
+++ b/gcc/testsuite/lib/scanlang.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2000-2020 Free Software Foundation, Inc.
+# Copyright (C) 2000-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/scanltranstree.exp b/gcc/testsuite/lib/scanltranstree.exp
index 6d35bef..62417c4 100644
--- a/gcc/testsuite/lib/scanltranstree.exp
+++ b/gcc/testsuite/lib/scanltranstree.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2000-2020 Free Software Foundation, Inc.
+# Copyright (C) 2000-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/scanoffload.exp b/gcc/testsuite/lib/scanoffload.exp
index 9071769..6a58707 100644
--- a/gcc/testsuite/lib/scanoffload.exp
+++ b/gcc/testsuite/lib/scanoffload.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2020-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/scanoffloadrtl.exp b/gcc/testsuite/lib/scanoffloadrtl.exp
index be457f7..0288769 100644
--- a/gcc/testsuite/lib/scanoffloadrtl.exp
+++ b/gcc/testsuite/lib/scanoffloadrtl.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/scanoffloadtree.exp b/gcc/testsuite/lib/scanoffloadtree.exp
index e51085c..093a3ab 100644
--- a/gcc/testsuite/lib/scanoffloadtree.exp
+++ b/gcc/testsuite/lib/scanoffloadtree.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/scanrtl.exp b/gcc/testsuite/lib/scanrtl.exp
index fae0f26..4867d9a 100644
--- a/gcc/testsuite/lib/scanrtl.exp
+++ b/gcc/testsuite/lib/scanrtl.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/scantree.exp b/gcc/testsuite/lib/scantree.exp
index d77fb1e..c79100f 100644
--- a/gcc/testsuite/lib/scantree.exp
+++ b/gcc/testsuite/lib/scantree.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2000-2020 Free Software Foundation, Inc.
+# Copyright (C) 2000-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/scanwpaipa.exp b/gcc/testsuite/lib/scanwpaipa.exp
index c0706ff..991c4d5 100644
--- a/gcc/testsuite/lib/scanwpaipa.exp
+++ b/gcc/testsuite/lib/scanwpaipa.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2020 Free Software Foundation, Inc.
+# Copyright (C) 2018-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/target-libpath.exp b/gcc/testsuite/lib/target-libpath.exp
index 9882a4e..4f68cd3 100644
--- a/gcc/testsuite/lib/target-libpath.exp
+++ b/gcc/testsuite/lib/target-libpath.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/target-supports-dg.exp b/gcc/testsuite/lib/target-supports-dg.exp
index 4a03eaa..c014abc 100644
--- a/gcc/testsuite/lib/target-supports-dg.exp
+++ b/gcc/testsuite/lib/target-supports-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 89c4f67..af46c77 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -326,6 +326,12 @@ proc check_weak_available { } {
return 0
}
+ # VxWorks hardly supports it (vx7 RTPs only)
+
+ if { [istarget *-*-vxworks*] } {
+ return 0
+ }
+
# ELF and ECOFF support it. a.out does with gas/gld but may also with
# other linkers, so we should try it
@@ -654,7 +660,7 @@ proc check_profiling_available { test_what } {
return 0
}
global srcdir
- set status [remote_exec host "$srcdir/../config/i386/gcc-auto-profile" "true -v >/dev/null"]
+ set status [remote_exec host "$srcdir/../config/i386/gcc-auto-profile" "-m8 true -v >/dev/null"]
if { [lindex $status 0] != 0 } {
verbose "autofdo not supported because perf does not work"
return 0
@@ -2606,6 +2612,11 @@ proc check_function_available { function } {
# Returns true iff "fork" is available on the target system.
proc check_fork_available {} {
+ if { [istarget *-*-vxworks*] } {
+ # VxWorks doesn't have fork but our way to test can't
+ # tell as we're doing partial links for kernel modules.
+ return 0
+ }
return [check_function_available "fork"]
}
@@ -3367,7 +3378,116 @@ proc check_effective_target_vect_int { } {
}}]
}
-# Return 1 if the target supports signed int->float conversion
+# Return 1 if the target supports hardware vectorization of complex additions of
+# byte, 0 otherwise.
+#
+# This won't change for different subtargets so cache the result.
+
+proc check_effective_target_vect_complex_add_byte { } {
+ return [check_cached_effective_target_indexed vect_complex_add_byte {
+ expr {
+ ([check_effective_target_aarch64_sve2]
+ && [check_effective_target_aarch64_little_endian])
+ || ([check_effective_target_arm_v8_1m_mve_fp_ok]
+ && [check_effective_target_arm_little_endian])
+ }}]
+}
+
+# Return 1 if the target supports hardware vectorization of complex additions of
+# short, 0 otherwise.
+#
+# This won't change for different subtargets so cache the result.
+
+proc check_effective_target_vect_complex_add_short { } {
+ return [check_cached_effective_target_indexed vect_complex_add_short {
+ expr {
+ ([check_effective_target_aarch64_sve2]
+ && [check_effective_target_aarch64_little_endian])
+ || ([check_effective_target_arm_v8_1m_mve_fp_ok]
+ && [check_effective_target_arm_little_endian])
+ }}]
+}
+
+# Return 1 if the target supports hardware vectorization of complex additions of
+# int, 0 otherwise.
+#
+# This won't change for different subtargets so cache the result.
+
+proc check_effective_target_vect_complex_add_int { } {
+ return [check_cached_effective_target_indexed vect_complex_add_int {
+ expr {
+ ([check_effective_target_aarch64_sve2]
+ && [check_effective_target_aarch64_little_endian])
+ || ([check_effective_target_arm_v8_1m_mve_fp_ok]
+ && [check_effective_target_arm_little_endian])
+ }}]
+}
+
+# Return 1 if the target supports hardware vectorization of complex additions of
+# long, 0 otherwise.
+#
+# This won't change for different subtargets so cache the result.
+
+proc check_effective_target_vect_complex_add_long { } {
+ return [check_cached_effective_target_indexed vect_complex_add_long {
+ expr {
+ ([check_effective_target_aarch64_sve2]
+ && [check_effective_target_aarch64_little_endian])
+ || ([check_effective_target_arm_v8_1m_mve_fp_ok]
+ && [check_effective_target_arm_little_endian])
+ }}]
+}
+
+# Return 1 if the target supports hardware vectorization of complex additions of
+# half, 0 otherwise.
+#
+# This won't change for different subtargets so cache the result.
+
+proc check_effective_target_vect_complex_add_half { } {
+ return [check_cached_effective_target_indexed vect_complex_add_half {
+ expr {
+ ([check_effective_target_arm_v8_3a_fp16_complex_neon_ok]
+ && ([check_effective_target_aarch64_little_endian]
+ || [check_effective_target_arm_little_endian]))
+ || ([check_effective_target_aarch64_sve2]
+ && [check_effective_target_aarch64_little_endian])
+ || ([check_effective_target_arm_v8_1m_mve_fp_ok]
+ && [check_effective_target_arm_little_endian])
+ }}]
+}
+
+# Return 1 if the target supports hardware vectorization of complex additions of
+# float, 0 otherwise.
+#
+# This won't change for different subtargets so cache the result.
+
+proc check_effective_target_vect_complex_add_float { } {
+ return [check_cached_effective_target_indexed vect_complex_add_float {
+ expr {
+ ([check_effective_target_arm_v8_3a_complex_neon_ok]
+ && ([check_effective_target_aarch64_little_endian]
+ || [check_effective_target_arm_little_endian]))
+ || ([check_effective_target_aarch64_sve2]
+ && [check_effective_target_aarch64_little_endian])
+ || ([check_effective_target_arm_v8_1m_mve_fp_ok]
+ && [check_effective_target_arm_little_endian])
+ }}]
+}
+
+# Return 1 if the target supports hardware vectorization of complex additions of
+# double, 0 otherwise.
+#
+# This won't change for different subtargets so cache the result.
+
+proc check_effective_target_vect_complex_add_double { } {
+ return [check_cached_effective_target_indexed vect_complex_add_double {
+ expr {
+ ([check_effective_target_aarch64_sve2]
+ && [check_effective_target_aarch64_little_endian])
+ }}]
+}
+
+# Return 1 if the target supports signed int->float conversion
#
proc check_effective_target_vect_intfloat_cvt { } {
@@ -4247,6 +4367,10 @@ proc add_options_for_aarch64_sve { flags } {
# set et_arm_neon_fp16_flags to the best options to add.
proc check_effective_target_arm_fp16_alternative_ok_nocache { } {
+ if { [istarget *-*-vxworks7*] } {
+ # Not supported by the target system.
+ return 0
+ }
global et_arm_neon_fp16_flags
set et_arm_neon_fp16_flags ""
if { [check_effective_target_arm32] } {
@@ -5658,8 +5782,8 @@ proc check_effective_target_arm_hf_eabi { } {
}]
}
-# Return 1 if this is an ARM target that uses the soft float ABI
-# with no floating-point instructions at all (e.g. -mfloat-abi=soft).
+# Return 1 if this is an ARM target uses emulated floating point
+# operations.
proc check_effective_target_arm_softfloat { } {
return [check_no_compiler_messages arm_softfloat object {
@@ -9186,6 +9310,11 @@ proc check_effective_target_gld { } {
# (LTO) support.
proc check_effective_target_lto { } {
+ if { [istarget *-*-vxworks*] } {
+ # No LTO on VxWorks, with kernel modules
+ # built with partial links
+ return 0
+ }
if { [istarget nvptx-*-*]
|| [istarget amdgcn-*-*] } {
return 0;
@@ -9374,7 +9503,10 @@ proc check_effective_target_c++2a_only { } {
return 0
}
proc check_effective_target_c++2a { } {
- return [check_effective_target_c++2a_only]
+ if [check_effective_target_c++2a_only] {
+ return 1
+ }
+ return [check_effective_target_c++23]
}
proc check_effective_target_c++20_only { } {
@@ -9384,6 +9516,29 @@ proc check_effective_target_c++20_only { } {
proc check_effective_target_c++20 { } {
return [check_effective_target_c++2a]
}
+proc check_effective_target_c++20_down { } {
+ if ![check_effective_target_c++] {
+ return 0
+ }
+ return [expr ![check_effective_target_c++23] ]
+}
+
+proc check_effective_target_c++23_only { } {
+ global cxx_default
+ if ![check_effective_target_c++] {
+ return 0
+ }
+ if [check-flags { { } { } { -std=c++23 -std=gnu++23 -std=c++2b -std=gnu++2b } }] {
+ return 1
+ }
+ if { $cxx_default == "c++23" && [check-flags { { } { } { } { -std=* } }] } {
+ return 1
+ }
+ return 0
+}
+proc check_effective_target_c++23 { } {
+ return [check_effective_target_c++23_only]
+}
# Check for C++ Concepts support, i.e. -fconcepts flag.
proc check_effective_target_concepts { } {
@@ -9405,6 +9560,11 @@ proc check_effective_target_run_expensive_tests { } {
# Returns 1 if "mempcpy" is available on the target system.
proc check_effective_target_mempcpy {} {
+ if { [istarget *-*-vxworks*] } {
+ # VxWorks doesn't have mempcpy but our way to test fails
+ # to detect as we're doing partial links for kernel modules.
+ return 0
+ }
return [check_function_available "mempcpy"]
}
@@ -9601,7 +9761,7 @@ proc check_effective_target_aarch64_tiny { } {
# various architecture extensions via the .arch_extension pseudo-op.
foreach { aarch64_ext } { "fp" "simd" "crypto" "crc" "lse" "dotprod" "sve"
- "i8mm" "f32mm" "f64mm" "bf16" "sb" } {
+ "i8mm" "f32mm" "f64mm" "bf16" "sb" "sve2" } {
eval [string map [list FUNC $aarch64_ext] {
proc check_effective_target_aarch64_asm_FUNC_ok { } {
if { [istarget aarch64*-*-*] } {
@@ -10386,13 +10546,13 @@ proc check_effective_target_arm_v8_3a_complex_neon_ok_nocache { } {
# need to be added to the -march option.
foreach flags {"" "-mfloat-abi=softfp -mfpu=auto" "-mfloat-abi=hard -mfpu=auto"} {
if { [check_no_compiler_messages_nocache \
- arm_v8_3a_complex_neon_ok object {
+ arm_v8_3a_complex_neon_ok assembly {
#if !defined (__ARM_FEATURE_COMPLEX)
#error "__ARM_FEATURE_COMPLEX not defined"
#endif
} "$flags -march=armv8.3-a"] } {
set et_arm_v8_3a_complex_neon_flags "$flags -march=armv8.3-a"
- return 1
+ return 1;
}
}
@@ -10412,13 +10572,57 @@ proc add_options_for_arm_v8_3a_complex_neon { flags } {
return "$flags $et_arm_v8_3a_complex_neon_flags"
}
+# Return 1 if the target supports ARMv8.3 Adv.SIMD + FP16 Complex instructions
+# instructions, 0 otherwise. The test is valid for ARM and for AArch64.
+# Record the command line options needed.
+
+proc check_effective_target_arm_v8_3a_fp16_complex_neon_ok_nocache { } {
+ global et_arm_v8_3a_fp16_complex_neon_flags
+ set et_arm_v8_3a_fp16_complex_neon_flags ""
+
+ if { ![istarget arm*-*-*] && ![istarget aarch64*-*-*] } {
+ return 0;
+ }
+
+ # Iterate through sets of options to find the compiler flags that
+ # need to be added to the -march option.
+ foreach flags {"" "-mfloat-abi=softfp -mfpu=auto" "-mfloat-abi=hard -mfpu=auto"} {
+ if { [check_no_compiler_messages_nocache \
+ arm_v8_3a_fp16_complex_neon_ok assembly {
+ #if !defined (__ARM_FEATURE_COMPLEX)
+ #error "__ARM_FEATURE_COMPLEX not defined"
+ #endif
+ } "$flags -march=armv8.3-a+fp16"] } {
+ set et_arm_v8_3a_fp16_complex_neon_flags \
+ "$flags -march=armv8.3-a+fp16"
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+proc check_effective_target_arm_v8_3a_fp16_complex_neon_ok { } {
+ return [check_cached_effective_target arm_v8_3a_fp16_complex_neon_ok \
+ check_effective_target_arm_v8_3a_fp16_complex_neon_ok_nocache]
+}
+
+proc add_options_for_arm_v8_3a_fp16_complex_neon { flags } {
+ if { ! [check_effective_target_arm_v8_3a_fp16_complex_neon_ok] } {
+ return "$flags"
+ }
+ global et_arm_v8_3a_fp16_complex_neon_flags
+ return "$flags $et_arm_v8_3a_fp16_complex_neon_flags"
+}
+
+
# Return 1 if the target supports executing AdvSIMD instructions from ARMv8.3
# with the complex instruction extension, 0 otherwise. The test is valid for
# ARM and for AArch64.
proc check_effective_target_arm_v8_3a_complex_neon_hw { } {
if { ![check_effective_target_arm_v8_3a_complex_neon_ok] } {
- return 0;
+ return 1;
}
return [check_runtime arm_v8_3a_complex_neon_hw_available {
#include "arm_neon.h"
@@ -10443,7 +10647,7 @@ proc check_effective_target_arm_v8_3a_complex_neon_hw { } {
: /* No clobbers. */);
#endif
- return (results[0] == 8 && results[1] == 24) ? 1 : 0;
+ return (results[0] == 8 && results[1] == 24) ? 0 : 1;
}
} [add_options_for_arm_v8_3a_complex_neon ""]]
}
@@ -10480,7 +10684,20 @@ proc check_effective_target_arm_v8_1_lob_ok { } {
}
}
-# Return 1 is this is an ARM target where -mthumb causes Thumb-2 to be
+# Return 1 if this is an ARM target where Thumb-2 is used without
+# options added by the test and the target does not support executing
+# the Armv8.1-M Mainline Low Overhead Loop, 0 otherwise. The test is
+# valid for ARM.
+
+proc check_effective_target_arm_thumb2_no_arm_v8_1_lob { } {
+ if { [check_effective_target_arm_thumb2]
+ && ![check_effective_target_arm_v8_1_lob_ok] } {
+ return 1
+ }
+ return 0
+}
+
+# Return 1 if this is an ARM target where -mthumb causes Thumb-2 to be
# used and the target does not support executing the Armv8.1-M
# Mainline Low Overhead Loop, 0 otherwise. The test is valid for ARM.
@@ -10591,6 +10808,11 @@ proc check_effective_target_msp430_large {} {
} ""]
}
+# Return 1 if GCC was configured with --with-tune=cortex-a76
+proc check_effective_target_tune_cortex_a76 { } {
+ return [check_configured_with "with-tune=cortex-a76"]
+}
+
# Return 1 if the target has an efficient means to encode large initializers
# in the assembly.
@@ -10682,7 +10904,7 @@ proc check_effective_target_R_flag_in_section { } {
set f [open $src "w"]
puts $f "#include \"../../auto-host.h\""
- puts $f "#if HAVE_GAS_SHF_GNU_RETAIN == 0"
+ puts $f "#if HAVE_GAS_SHF_GNU_RETAIN == 0 || HAVE_INITFINI_ARRAY_SUPPORT == 0"
puts $f "# error Assembler does not support 'R' flag in .section directive."
puts $f "#endif"
close $f
diff --git a/gcc/testsuite/lib/target-utils.exp b/gcc/testsuite/lib/target-utils.exp
index 18ccacd..37aa01e 100644
--- a/gcc/testsuite/lib/target-utils.exp
+++ b/gcc/testsuite/lib/target-utils.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/timeout-dg.exp b/gcc/testsuite/lib/timeout-dg.exp
index 228204b..500f090 100644
--- a/gcc/testsuite/lib/timeout-dg.exp
+++ b/gcc/testsuite/lib/timeout-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/timeout.exp b/gcc/testsuite/lib/timeout.exp
index 856c2e3..76cec94 100644
--- a/gcc/testsuite/lib/timeout.exp
+++ b/gcc/testsuite/lib/timeout.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/torture-options.exp b/gcc/testsuite/lib/torture-options.exp
index 4d7cb0c..a7884ef 100644
--- a/gcc/testsuite/lib/torture-options.exp
+++ b/gcc/testsuite/lib/torture-options.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/tsan-dg.exp b/gcc/testsuite/lib/tsan-dg.exp
index 6dcfd0a..838c951 100644
--- a/gcc/testsuite/lib/tsan-dg.exp
+++ b/gcc/testsuite/lib/tsan-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/ubsan-dg.exp b/gcc/testsuite/lib/ubsan-dg.exp
index 31740e0..850429a 100644
--- a/gcc/testsuite/lib/ubsan-dg.exp
+++ b/gcc/testsuite/lib/ubsan-dg.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2013-2020 Free Software Foundation, Inc.
+# Copyright (C) 2013-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/lib/wrapper.exp b/gcc/testsuite/lib/wrapper.exp
index 3170ad5..8bc3e72 100644
--- a/gcc/testsuite/lib/wrapper.exp
+++ b/gcc/testsuite/lib/wrapper.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/obj-c++.dg/attributes/attributes.exp b/gcc/testsuite/obj-c++.dg/attributes/attributes.exp
index 06e7d0a..f847cd0 100644
--- a/gcc/testsuite/obj-c++.dg/attributes/attributes.exp
+++ b/gcc/testsuite/obj-c++.dg/attributes/attributes.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/obj-c++.dg/dg.exp b/gcc/testsuite/obj-c++.dg/dg.exp
index 7b2a1d0..ca0c0ed 100644
--- a/gcc/testsuite/obj-c++.dg/dg.exp
+++ b/gcc/testsuite/obj-c++.dg/dg.exp
@@ -1,5 +1,5 @@
# GCC Objective-C++ testsuite that uses the `dg.exp' driver.
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/obj-c++.dg/lto/lto.exp b/gcc/testsuite/obj-c++.dg/lto/lto.exp
index 936872a..22f2f7a 100644
--- a/gcc/testsuite/obj-c++.dg/lto/lto.exp
+++ b/gcc/testsuite/obj-c++.dg/lto/lto.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/obj-c++.dg/plugin/plugin.exp b/gcc/testsuite/obj-c++.dg/plugin/plugin.exp
index 962c77f..2170816 100644
--- a/gcc/testsuite/obj-c++.dg/plugin/plugin.exp
+++ b/gcc/testsuite/obj-c++.dg/plugin/plugin.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/obj-c++.dg/property/property-neg-6.mm b/gcc/testsuite/obj-c++.dg/property/property-neg-6.mm
index 1db6f0b..c4a22eb 100644
--- a/gcc/testsuite/obj-c++.dg/property/property-neg-6.mm
+++ b/gcc/testsuite/obj-c++.dg/property/property-neg-6.mm
@@ -6,4 +6,4 @@
int iVar;
}
@property int FooBar /* { dg-error "expected ';' at end of input" } */
- /* { dg-error "-:expected '@end' at end of input" "" { target *-*-* } .+1 } */
+ /* { dg-error "expected '@end' at end of input" "" { target *-*-* } .-1 } */
diff --git a/gcc/testsuite/obj-c++.dg/property/property.exp b/gcc/testsuite/obj-c++.dg/property/property.exp
index 31e683c..7cb9258 100644
--- a/gcc/testsuite/obj-c++.dg/property/property.exp
+++ b/gcc/testsuite/obj-c++.dg/property/property.exp
@@ -1,5 +1,5 @@
# GCC Objective-C++ testsuite that uses the `dg.exp' driver.
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/obj-c++.dg/strings/strings.exp b/gcc/testsuite/obj-c++.dg/strings/strings.exp
index 0243f24..2d2384f 100644
--- a/gcc/testsuite/obj-c++.dg/strings/strings.exp
+++ b/gcc/testsuite/obj-c++.dg/strings/strings.exp
@@ -1,6 +1,6 @@
# String tests that only need to run at default optimization.
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/obj-c++.dg/syntax-error-10.mm b/gcc/testsuite/obj-c++.dg/syntax-error-10.mm
index 6fcf96f..f8e0c50 100644
--- a/gcc/testsuite/obj-c++.dg/syntax-error-10.mm
+++ b/gcc/testsuite/obj-c++.dg/syntax-error-10.mm
@@ -1,2 +1,2 @@
@interface
-/* { dg-error "-:expected identifier" "" { target *-*-* } .+1 } */
+/* { dg-error "expected identifier" "" { target *-*-* } .-1 } */
diff --git a/gcc/testsuite/obj-c++.dg/syntax-error-8.mm b/gcc/testsuite/obj-c++.dg/syntax-error-8.mm
index f7cfe0e..c13303f 100644
--- a/gcc/testsuite/obj-c++.dg/syntax-error-8.mm
+++ b/gcc/testsuite/obj-c++.dg/syntax-error-8.mm
@@ -1 +1 @@
-@interface A /* { dg-error "-:expected ..end." "" { target *-*-* } .+1 } */
+@interface A /* { dg-error "expected ..end." "" { target *-*-* } .-1 } */
diff --git a/gcc/testsuite/obj-c++.dg/syntax-error-9.mm b/gcc/testsuite/obj-c++.dg/syntax-error-9.mm
index ad8837c..e1f8bd1 100644
--- a/gcc/testsuite/obj-c++.dg/syntax-error-9.mm
+++ b/gcc/testsuite/obj-c++.dg/syntax-error-9.mm
@@ -1,4 +1,4 @@
// { dg-additional-options "-Wno-objc-root-class" }
@implementation SaturnDoc /* { dg-warning "cannot find interface declaration" } */
- read: (void*)aStream ggg /* { dg-error "expected .:. at end of input" } */
-/* { dg-error "-:expected ..*. at end of input" "" { target *-*-* } .+1 } */
+/* { dg-error "expected ..*. at end of input" "" { target *-*-* } .-1 } */
diff --git a/gcc/testsuite/obj-c++.dg/torture/strings/strings.exp b/gcc/testsuite/obj-c++.dg/torture/strings/strings.exp
index 6181c30..6dc1718 100644
--- a/gcc/testsuite/obj-c++.dg/torture/strings/strings.exp
+++ b/gcc/testsuite/obj-c++.dg/torture/strings/strings.exp
@@ -1,6 +1,6 @@
# String tests that should be run at all optimization levels.
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.m b/gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.m
index 96717e3..0c0a26c 100644
--- a/gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.m
+++ b/gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.m
@@ -1,5 +1,5 @@
/* Very simple root class for writing testcases.
- Copyright (C) 2011-2020 Free Software Foundation, Inc.
+ Copyright (C) 2011-2021 Free Software Foundation, Inc.
Contributed by Nicola Pero
This file is part of GCC.
diff --git a/gcc/testsuite/objc.dg/attributes/attributes.exp b/gcc/testsuite/objc.dg/attributes/attributes.exp
index 6ed8a31..28503d8 100644
--- a/gcc/testsuite/objc.dg/attributes/attributes.exp
+++ b/gcc/testsuite/objc.dg/attributes/attributes.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/objc.dg/dg.exp b/gcc/testsuite/objc.dg/dg.exp
index bd686c9..51d94785 100644
--- a/gcc/testsuite/objc.dg/dg.exp
+++ b/gcc/testsuite/objc.dg/dg.exp
@@ -1,5 +1,5 @@
# GCC Objective-C testsuite that uses the `dg.exp' driver.
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp b/gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp
index a695ac3..8017e2f 100644
--- a/gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp
+++ b/gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp
@@ -1,5 +1,5 @@
# GCC Objective-C testsuite that uses the `dg.exp' driver.
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/objc.dg/lto/lto.exp b/gcc/testsuite/objc.dg/lto/lto.exp
index 8a362d6..8363258 100644
--- a/gcc/testsuite/objc.dg/lto/lto.exp
+++ b/gcc/testsuite/objc.dg/lto/lto.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/objc.dg/pch/pch.exp b/gcc/testsuite/objc.dg/pch/pch.exp
index 54c3e42..194be21 100644
--- a/gcc/testsuite/objc.dg/pch/pch.exp
+++ b/gcc/testsuite/objc.dg/pch/pch.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/objc.dg/plugin/plugin.exp b/gcc/testsuite/objc.dg/plugin/plugin.exp
index 2cb5918..b4f0d41 100644
--- a/gcc/testsuite/objc.dg/plugin/plugin.exp
+++ b/gcc/testsuite/objc.dg/plugin/plugin.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/objc.dg/property/property.exp b/gcc/testsuite/objc.dg/property/property.exp
index 1c203db..b3108f9 100644
--- a/gcc/testsuite/objc.dg/property/property.exp
+++ b/gcc/testsuite/objc.dg/property/property.exp
@@ -1,5 +1,5 @@
# GCC Objective-C testsuite that uses the `dg.exp' driver.
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/objc.dg/special/special.exp b/gcc/testsuite/objc.dg/special/special.exp
index f561d38..600f577 100644
--- a/gcc/testsuite/objc.dg/special/special.exp
+++ b/gcc/testsuite/objc.dg/special/special.exp
@@ -1,5 +1,5 @@
# GCC Objective-C testsuite that uses the `dg.exp' driver.
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/objc.dg/strings/strings.exp b/gcc/testsuite/objc.dg/strings/strings.exp
index 6042d3c..f4cea1c 100644
--- a/gcc/testsuite/objc.dg/strings/strings.exp
+++ b/gcc/testsuite/objc.dg/strings/strings.exp
@@ -1,6 +1,6 @@
# String tests that only need to run at default optimization.
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
diff --git a/gcc/testsuite/objc.dg/torture/strings/strings.exp b/gcc/testsuite/objc.dg/torture/strings/strings.exp
index 3e2b3b0..7411383 100644
--- a/gcc/testsuite/objc.dg/torture/strings/strings.exp
+++ b/gcc/testsuite/objc.dg/torture/strings/strings.exp
@@ -1,6 +1,6 @@
# String tests that should be run at all optimization levels.
-# Copyright (C) 2010-2020 Free Software Foundation, Inc.
+# Copyright (C) 2010-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/objc/compile/compile.exp b/gcc/testsuite/objc/compile/compile.exp
index fb0e1c8..a3f35f0 100644
--- a/gcc/testsuite/objc/compile/compile.exp
+++ b/gcc/testsuite/objc/compile/compile.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2020 Free Software Foundation, Inc.
+# Copyright (C) 1991-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/objc/execute/exceptions/exceptions.exp b/gcc/testsuite/objc/execute/exceptions/exceptions.exp
index f32f67b..9708690 100644
--- a/gcc/testsuite/objc/execute/exceptions/exceptions.exp
+++ b/gcc/testsuite/objc/execute/exceptions/exceptions.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2020 Free Software Foundation, Inc.
+# Copyright (C) 1991-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/objc/execute/execute.exp b/gcc/testsuite/objc/execute/execute.exp
index 9246a93..db93329 100644
--- a/gcc/testsuite/objc/execute/execute.exp
+++ b/gcc/testsuite/objc/execute/execute.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2020 Free Software Foundation, Inc.
+# Copyright (C) 1991-2021 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/gcc/testsuite/substr_10.f90 b/gcc/testsuite/substr_10.f90
new file mode 100644
index 0000000..918ca8a
--- /dev/null
+++ b/gcc/testsuite/substr_10.f90
@@ -0,0 +1,11 @@
+! { dg-do compile }
+! PR93340 - test error handling of substring simplification
+
+subroutine p
+ integer,parameter :: k = len ('a'(:0))
+ integer,parameter :: m = len ('a'(0:)) ! { dg-error "Substring start index" }
+ call foo ('bcd'(-8:-9))
+ call foo ('bcd'(-9:-8)) ! { dg-error "Substring start index" }
+ call foo ('bcd'(:12)) ! { dg-error "Substring end index" }
+ call foo ('bcd'(-12:)) ! { dg-error "Substring start index" }
+end
diff --git a/gcc/testsuite/substr_9.f90 b/gcc/testsuite/substr_9.f90
new file mode 100644
index 0000000..73152d6
--- /dev/null
+++ b/gcc/testsuite/substr_9.f90
@@ -0,0 +1,28 @@
+! { dg-do run }
+! { dg-options "-std=gnu -fdump-tree-original" }
+! PR93340 - issues with substrings in initializers
+
+program p
+ implicit none
+ integer, parameter :: m = 1
+ character b(2) /'a', 'b' (1:1)/
+ character c(2) /'a', 'bc' (1:1)/
+ character d(2) /'a', 'bxyz'(m:m)/
+ character e(2)
+ character f(2)
+ data e /'a', 'bxyz'( :1)/
+ data f /'a', 'xyzb'(4:4)/
+ character :: g(2) = [ 'a', 'b' (1:1) ]
+ character :: h(2) = [ 'a', 'bc'(1:1) ]
+ character :: k(2) = [ 'a', 'bc'(m:1) ]
+ if (b(2) /= "b") stop 1
+ if (c(2) /= "b") stop 2
+ if (d(2) /= "b") stop 3
+ if (e(2) /= "b") stop 4
+ if (f(2) /= "b") stop 5
+ if (g(2) /= "b") stop 6
+ if (h(2) /= "b") stop 7
+ if (k(2) /= "b") stop 8
+end
+
+! { dg-final { scan-tree-dump-times "xyz" 0 "original" } }