aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog465
-rw-r--r--gcc/testsuite/c-c++-common/dwarf2/pr83550.c10
-rw-r--r--gcc/testsuite/c-c++-common/pr83059.c10
-rw-r--r--gcc/testsuite/c-c++-common/torture/pr83553.c29
-rw-r--r--gcc/testsuite/g++.dg/asan/pr82792.C32
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr80259.C13
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr83556.C28
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/constexpr-83116.C18
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp10.C3
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp3.C25
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp30.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp31.C18
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp32.C32
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp33.C21
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/decomp34.C11
-rw-r--r--gcc/testsuite/g++.dg/ext/constexpr-pr82781.C12
-rw-r--r--gcc/testsuite/g++.dg/ipa/pr82801.C20
-rw-r--r--gcc/testsuite/g++.dg/lto/pr82027_0.C73
-rw-r--r--gcc/testsuite/g++.dg/opt/pr83084.C16
-rw-r--r--gcc/testsuite/g++.dg/opt/pr83608.C28
-rw-r--r--gcc/testsuite/g++.dg/opt/pr83609.C28
-rw-r--r--gcc/testsuite/g++.dg/pr82128.C20
-rw-r--r--gcc/testsuite/g++.dg/template/pr79650.C20
-rw-r--r--gcc/testsuite/g++.dg/torture/pr82060.C32
-rw-r--r--gcc/testsuite/g++.dg/torture/pr82902.C21
-rw-r--r--gcc/testsuite/g++.dg/torture/pr83471.C21
-rw-r--r--gcc/testsuite/g++.dg/torture/pr83713.C12
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/pr83523.C25
-rw-r--r--gcc/testsuite/g++.dg/ubsan/pr81212.C16
-rw-r--r--gcc/testsuite/g++.dg/warn/pr81675.C15
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr81553.c10
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr83448.c15
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20180112-1.c32
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr83269.c14
-rw-r--r--gcc/testsuite/gcc.dg/asan/pr82545.c17
-rw-r--r--gcc/testsuite/gcc.dg/builtin-object-size-18.c15
-rw-r--r--gcc/testsuite/gcc.dg/ipa/pr82808.c27
-rw-r--r--gcc/testsuite/gcc.dg/opts-8.c6
-rw-r--r--gcc/testsuite/gcc.dg/pr80747.c18
-rw-r--r--gcc/testsuite/gcc.dg/pr82765.c5
-rw-r--r--gcc/testsuite/gcc.dg/pr82975.c20
-rw-r--r--gcc/testsuite/gcc.dg/pr83198.c18
-rw-r--r--gcc/testsuite/gcc.dg/pr83512.c16
-rw-r--r--gcc/testsuite/gcc.dg/pr83521.c10
-rw-r--r--gcc/testsuite/gcc.dg/pr83609.c29
-rw-r--r--gcc/testsuite/gcc.dg/pr83623.c12
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr60092.c1
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr82102.c21
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr82402.c20
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr82697.c23
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-warn-4.c46
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr82726.c26
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr83198.c23
-rw-r--r--gcc/testsuite/gcc.dg/ubsan/pr83014.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr80631-1.c76
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr80631-2.c73
-rw-r--r--gcc/testsuite/gcc.target/alpha/pr83628-1.c19
-rw-r--r--gcc/testsuite/gcc.target/alpha/pr83628-2.c29
-rw-r--r--gcc/testsuite/gcc.target/alpha/pr83628-3.c29
-rw-r--r--gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/avx2-pr80631.c23
-rw-r--r--gcc/testsuite/gcc.target/i386/pr80583.c13
-rw-r--r--gcc/testsuite/gcc.target/i386/pr80819-1.c13
-rw-r--r--gcc/testsuite/gcc.target/i386/pr80819-2.c13
-rw-r--r--gcc/testsuite/gcc.target/i386/pr81906.c37
-rw-r--r--gcc/testsuite/gcc.target/i386/pr82941-1.c14
-rw-r--r--gcc/testsuite/gcc.target/i386/pr82941-2.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/pr82942-1.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/pr82942-2.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/pr82990-1.c14
-rw-r--r--gcc/testsuite/gcc.target/i386/pr82990-2.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/pr82990-3.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/pr82990-4.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/pr82990-5.c14
-rw-r--r--gcc/testsuite/gcc.target/i386/pr82990-6.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/pr82990-7.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/pr83467-1.c18
-rw-r--r--gcc/testsuite/gcc.target/i386/pr83467-2.c13
-rw-r--r--gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c1
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr77687.c20
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr80101-1.c22
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr80210-2.c11
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr81959.c25
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr83677.c166
-rw-r--r--gcc/testsuite/gcc.target/riscv/riscv.exp41
-rw-r--r--gcc/testsuite/gcc.target/riscv/save-restore-1.c25
-rw-r--r--gcc/testsuite/gfortran.dg/allocate_with_typespec_7.f9014
-rw-r--r--gcc/testsuite/gfortran.dg/array_constructor_type_22.f0329
-rw-r--r--gcc/testsuite/gfortran.dg/class_result_5.f9038
-rw-r--r--gcc/testsuite/gfortran.dg/class_result_6.f9024
-rw-r--r--gcc/testsuite/gfortran.dg/deferred_character_18.f9029
-rw-r--r--gcc/testsuite/gfortran.dg/fmt_e.f9010
-rw-r--r--gcc/testsuite/gfortran.dg/interface_40.f908
-rw-r--r--gcc/testsuite/gfortran.dg/internal_readwrite_4.f9030
-rw-r--r--gcc/testsuite/gfortran.dg/namelist_95.f9023
-rw-r--r--gcc/testsuite/gfortran.dg/pr78686.f9011
-rw-r--r--gcc/testsuite/gfortran.dg/pr82253.f9040
-rw-r--r--gcc/testsuite/gfortran.dg/simplify_cshift_1.f904
-rw-r--r--gcc/testsuite/gfortran.dg/transfer_simplify_11.f908
-rw-r--r--gcc/testsuite/gnat.dg/alignment13.adb21
-rw-r--r--gcc/testsuite/lib/target-supports.exp4
101 files changed, 2552 insertions, 20 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f895762eff7..e4ea2377fbe 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,460 @@
+2018-01-14 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ Backport from trunk
+ PR libgfortran/83811
+ * gfortran.dg/fmt_e.f90: New test.
+
+2018-01-14 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ Backport from mainline
+ 2018-01-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ PR target/83677
+ * gcc.target/powerpc/pr83677.c: New file.
+
+2018-01-14 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2018-01-12 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/83628
+ * gcc.target/alpha/pr83628-3.c: New test.
+
+2018-01-13 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ Backport from mainline
+ PR fortran/78814
+ * gfortran.dg/interface_40.f90: New testcase.
+
+2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.c-torture/execute/20180112-1.c: New test.
+
+2018-01-10 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ Backport from trunk
+ PR fortran/82367
+ * gfortran.dg/deferred_character_18.f90: New test.
+
+2018-01-10 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ Backport from trunk
+ PR fortran/83093
+ * gfortran.dg/allocate_with_typespec_7.f90: New test.
+
+2018-01-10 Steven G. Kargl <kargl@kgcc.gnu.org>
+
+ Backport r254555 from trunk
+ PR Fortran/82841
+ * gfortran.dg/transfer_simplify_11.f90: New test.
+
+2018-01-09 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2018-01-08 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/83713
+ * g++.dg/torture/pr83713.C: New testcase.
+
+2018-01-08 Jim Wilson <jimw@sifive.com>
+
+ Backport from mainline
+ 2018-01-08 Chih-Mao Chen <pkmx.tw@gmail.com>
+ Monk Chiang <sh.chiang04@gmail.com>
+
+ * gcc.target/riscv/save-restore-1.c: New.
+
+ 2017-11-29 Jim Wilson <jimw@sifive.com>
+
+ * gcc.target/riscv/riscv.exp: New.
+
+2018-01-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ Backport from mainline
+ 2017-12-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/82975
+ * gcc.dg/pr82975.c: New test.
+
+2018-01-04 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/83628
+ * gcc.target/alpha/pr83628-1.c: New test.
+ * gcc.target/alpha/pr83628-2.c: Ditto.
+
+2018-01-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/83556
+ * g++.dg/cpp0x/pr83556.C: New test.
+
+2018-01-02 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/83650
+ * gfortran.dg/simplify_cshift_1.f90: Correct condition.
+
+2018-01-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/83608
+ * g++.dg/opt/pr83608.C: New test.
+
+ PR middle-end/83609
+ * gcc.dg/pr83609.c: New test.
+ * g++.dg/opt/pr83609.C: New test.
+
+ PR middle-end/83623
+ * gcc.dg/pr83623.c: New test.
+
+2017-12-28 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR Fortran/83548
+ * gfortran.dg/array_constructor_type_22.f03: New test.
+
+2017-12-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/83553
+ * c-c++-common/torture/pr83553.c: New test.
+
+2017-12-22 Martin Jambor <mjambor@suse.cz>
+
+ PR lto/82027
+ * g++.dg/lto/pr82027_0.C: New test.
+
+2017-12-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/83550
+ * c-c++-common/dwarf2/pr83550.c: New test.
+
+ Backported from mainline
+ 2017-12-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/83448
+ * gcc.c-torture/compile/pr83448.c: New test.
+ * gcc.dg/tree-ssa/builtin-snprintf-warn-4.c: New test.
+
+ PR rtl-optimization/80747
+ PR rtl-optimization/83512
+ * gcc.dg/pr80747.c: New test.
+ * gcc.dg/pr83512.c: New test.
+
+ PR tree-optimization/83523
+ * g++.dg/tree-ssa/pr83523.C: New test.
+
+ PR tree-optimization/83521
+ * gcc.dg/pr83521.c: New test.
+
+ 2017-12-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR ipa/82801
+ PR ipa/83346
+ * g++.dg/ipa/pr82801.C: New test.
+
+2017-12-21 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/83467
+ * gcc.target/i386/pr83467-1.c: New test.
+ * gcc.target/i386/pr83467-2.c: Ditto.
+
+2017-12-21 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
+ PR fortran/83436
+ * gfortran.dg/internal_readwrite_4.f90: New test.
+
+2017-12-19 Bin Cheng <bin.cheng@arm.com>
+
+ Backport from mainline
+ 2017-11-15 Bin Cheng <bin.cheng@arm.com>
+
+ PR tree-optimization/82726
+ * gcc.dg/tree-ssa/pr82726.c: New test.
+
+2017-12-19 H.J. Lu <hongjiu.lu@intel.com>
+
+ Backported from mainline
+ 2017-12-19 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR middle-end/83471
+ * g++.dg/torture/pr83471.C: New test.
+
+2017-12-16 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
+ 2017-12-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/83205
+ * g++.dg/cpp1z/decomp3.C: Adjust for structured binding count
+ mismatch diagnostics split into error and warning with plural
+ forms.
+ * g++.dg/cpp1z/decomp10.C: Likewise.
+ * g++.dg/cpp1z/decomp32.C: New test.
+
+ PR c++/81197
+ * g++.dg/cpp1z/decomp34.C: New test.
+
+2017-12-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/83217
+ * g++.dg/cpp1z/decomp33.C: New test.
+
+ PR tree-optimization/83269
+ * gcc.c-torture/execute/pr83269.c: New test.
+
+ PR tree-optimization/80631
+ * gcc.target/i386/avx2-pr80631.c: New test.
+
+ Backported from mainline
+ 2017-12-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/83198
+ * gcc.dg/pr83198.c: New test.
+ * gcc.dg/tree-ssa/pr83198.c: New test.
+
+ PR c++/79650
+ * g++.dg/template/pr79650.C: New test.
+
+ 2017-12-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/80631
+ * gcc.dg/vect/pr80631-1.c: New test.
+ * gcc.dg/vect/pr80631-2.c: New test.
+
+ 2017-12-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/81906
+ * gcc.target/i386/pr81906.c: New test.
+
+ 2017-12-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/80259
+ * g++.dg/cpp0x/pr80259.C: New test.
+
+ 2017-12-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/81212
+ * g++.dg/ubsan/pr81212.C: New test.
+
+ 2017-12-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/78643
+ PR target/80583
+ * gcc.target/i386/pr80583.c: New test.
+
+ 2017-11-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/80819
+ * gcc.target/i386/pr80819-1.c: New test.
+ * gcc.target/i386/pr80819-2.c: New test.
+
+ 2017-11-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/81888
+ * g++.dg/cpp1z/decomp30.C: Add a test for structured binding with
+ = {} and = { a, a } initializers.
+ * g++.dg/cpp1z/decomp31.C: New test.
+
+ PR c++/81675
+ * g++.dg/warn/pr81675.C: New test.
+
+ 2017-11-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/81553
+ * gcc.c-torture/compile/pr81553.c: New test.
+
+ 2017-11-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR sanitizer/83014
+ * gcc.dg/ubsan/pr83014.c: New test.
+
+ * gcc.dg/builtin-object-size-18.c: New test.
+
+ 2017-11-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/82253
+ * gfortran.dg/pr82253.f90: New test.
+
+ 2017-11-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/83084
+ * g++.dg/opt/pr83084.C: New test.
+
+ 2017-11-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/82880
+ * gcc.dg/opts-8.c: New test.
+
+ PR c++/83059
+ * c-c++-common/pr83059.c: New test.
+
+ 2017-11-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/82781
+ * g++.dg/ext/constexpr-pr82781.C: New test.
+
+2017-12-15 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ PR tree-optimization/82060
+ * g++.dg/torture/pr82060.C: New testcase.
+
+2017-12-15 Sudakshina Das <sudi.das@arm.com>
+
+ * gcc.target/arm/armv8_2-fp16-move-2.c: Remove dg-add-options.
+
+2017-12-15 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2017-09-05 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/82102
+ * gcc.dg/torture/pr82102.c: New testcase.
+
+ 2017-09-13 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/82128
+ * g++.dg/pr82128.C: New testcase.
+
+2017-12-15 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2017-11-24 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/82402
+ * gcc.dg/torture/pr82402.c: New testcase.
+
+ 2017-10-24 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/82697
+ * gcc.dg/torture/pr82697.c: New testcase.
+
+ 2017-11-02 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/82765
+ * gcc.dg/pr82765.c: New testcase.
+
+ 2017-11-09 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/82902
+ * g++.dg/torture/pr82902.C: New testcase.
+
+2017-12-14 Peter Bergner <bergner@vnet.ibm.com>
+
+ Backport from mainline
+ 2017-10-02 Peter Bergner <bergner@vnet.ibm.com>
+
+ PR target/80210
+ * gcc.target/powerpc/pr80210-2.c: New test.
+
+2017-12-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/alignment13.adb: New test.
+
+2017-12-13 Peter Bergner <bergner@vnet.ibm.com>
+
+ Backport from mainline
+ 2017-12-13 Peter Bergner <bergner@vnet.ibm.com>
+
+ * gcc.target/powerpc/cpu-builtin-1.c (htm-no-suspend): Add test.
+
+2017-12-11 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ Back port from trunk
+ 2017-12-01 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/81959
+ * gcc.target/powerpc/pr81959.c: New test.
+
+2017-12-11 Sudakshina Das <sudi.das@arm.com>
+
+ Backported from trunk
+ 2017-12-01 Sudakshina Das <sudi.das@arm.com>
+
+ * gcc.target/arm/armv8_2-fp16-move-2.c: New test.
+
+2017-12-07 Kelvin Nilsen <kelvin@gcc.gnu.org>
+
+ Backport from trunk
+ 2017-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
+
+ PR target/80101
+ * gcc.target/powerpc/pr80101-1.c: New test.
+
+2017-12-04 Sebastian Peryt <sebastian.peryt@intel.com>
+ H.J. Lu <hongjiu.lu@intel.com>
+
+ Backported from trunk
+ PR target/82941
+ PR target/82942
+ PR target/82990
+ * gcc.target/i386/pr82941-1.c: New test.
+ * gcc.target/i386/pr82941-2.c: Likewise.
+ * gcc.target/i386/pr82942-1.c: Likewise.
+ * gcc.target/i386/pr82942-2.c: Likewise.
+ * gcc.target/i386/pr82990-1.c: Likewise.
+ * gcc.target/i386/pr82990-2.c: Likewise.
+ * gcc.target/i386/pr82990-3.c: Likewise.
+ * gcc.target/i386/pr82990-4.c: Likewise.
+ * gcc.target/i386/pr82990-5.c: Likewise.
+ * gcc.target/i386/pr82990-6.c: Likewise.
+ * gcc.target/i386/pr82990-7.c: Likewise.
+
+2017-12-03 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ Backported from trunk
+ PR fortran/83191
+ * gfortran.dg/namelist_95.f90: New test.
+
+2017-11-29 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/82808
+ * gcc.dg/ipa/pr82808.c: New test.
+
+2017-11-23 Paul Thomas <pault@gcc.gnu.org>
+
+ Backported from trunk
+ PR fortran/79072
+ * gfortran.dg/class_result_5.f90: New test.
+ * gfortran.dg/class_result_6.f90: New test.
+
+2017-11-21 Paul Thomas <pault@gcc.gnu.org>
+
+ Backported from trunk fix for PR82586
+ PR fortran/78686
+ * gfortran.dg/pr78686.f90: New test.
+
+2017-11-21 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-11-08 Martin Liska <mliska@suse.cz>
+
+ PR sanitizer/82792
+ * g++.dg/asan/pr82792.C: New test.
+
+2017-11-21 Martin Liska <mliska@suse.cz>
+
+ Backport from mainline
+ 2017-10-18 Martin Liska <mliska@suse.cz>
+
+ PR sanitizer/82545
+ * gcc.dg/asan/pr82545.c: New test.
+
+2017-11-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ Backport from mainline
+ 2017-11-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * lib/target-supports.exp (check_effective_target_pie): Adapt
+ comment for Solaris 12 renaming.
+
+ * gcc.dg/torture/pr60092.c: Remove *-*-solaris2.11* dg-xfail-run-if.
+
+2017-11-20 Segher Boessenkool <segher@kernel.crashing.org>
+
+ Backport from mainline
+ 2017-09-20 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR target/77687
+ * gcc.target/powerpc/pr77687.c: New testcase.
+
2017-11-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/82985
@@ -140,8 +597,8 @@
2017-10-24 Qing Zhao <qing.zhao@oracle.com>
Wilco Dijkstra <wilco.dijkstra@arm.com>
- PR middle-end/80295
- * gcc.target/aarch64/pr80295.c: New test.
+ PR middle-end/80295
+ * gcc.target/aarch64/pr80295.c: New test.
2017-10-21 Paul Thomas <pault@gcc.gnu.org>
@@ -843,8 +1300,8 @@
2017-06-21 Marc Glisse <marc.glisse@inria.fr>
- * gcc.dg/tree-ssa/addadd.c: Un-XFAIL.
- * gcc.dg/tree-ssa/addadd-2.c: New file.
+ * gcc.dg/tree-ssa/addadd.c: Un-XFAIL.
+ * gcc.dg/tree-ssa/addadd-2.c: New file.
2016-07-25 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
diff --git a/gcc/testsuite/c-c++-common/dwarf2/pr83550.c b/gcc/testsuite/c-c++-common/dwarf2/pr83550.c
new file mode 100644
index 00000000000..1d77e9530cd
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/dwarf2/pr83550.c
@@ -0,0 +1,10 @@
+/* PR debug/83550 */
+/* { dg-do compile } */
+/* { dg-options "-gdwarf -dA -fno-merge-debug-strings" } */
+
+struct my_struct;
+extern struct my_struct s;
+struct my_struct { int a, b; };
+struct my_struct q;
+
+/* { dg-final { scan-assembler "DW_TAG_structure_type\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\"my_struct\[^\\r\\n\]*DW_AT_name(\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*DW_AT_)*\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\[^0-9a-fA-FxX](0x)?7\[^0-9a-fA-FxX]\[^\\r\\n\]*DW_AT_decl_line" } } */
diff --git a/gcc/testsuite/c-c++-common/pr83059.c b/gcc/testsuite/c-c++-common/pr83059.c
new file mode 100644
index 00000000000..9a6ff5e0db2
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/pr83059.c
@@ -0,0 +1,10 @@
+/* PR c++/83059 */
+/* { dg-do compile } */
+
+void
+foo (int *p, int *q, int *r)
+{
+ __atomic_compare_exchange (p, q, r, 0, 0, -1); /* { dg-warning "invalid memory model argument 6" } */
+ /* { dg-warning "\[uU]nknown architecture specifi" "" { target *-*-* } .-1 } */
+ /* { dg-warning "failure memory model cannot be stronger than success memory model" "" { target *-*-* } .-2 } */
+}
diff --git a/gcc/testsuite/c-c++-common/torture/pr83553.c b/gcc/testsuite/c-c++-common/torture/pr83553.c
new file mode 100644
index 00000000000..c12b79b9e77
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/torture/pr83553.c
@@ -0,0 +1,29 @@
+/* PR c++/83553 */
+/* { dg-do run } */
+
+int a[3];
+
+int
+foo (int n)
+{
+ switch (n)
+ {
+ case 0:
+ for (n = 7, a[0]++; 0; a[2] = a[1] + 1)
+ {
+ case 2:
+ a[1] = a[0] + 1;
+ }
+ }
+ return n;
+}
+
+int
+main ()
+{
+ if (foo (0) != 7 || a[0] != 1 || a[1] || a[2])
+ __builtin_abort ();
+ if (foo (2) != 2 || a[0] != 1 || a[1] != 2 || a[2] != 3)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/asan/pr82792.C b/gcc/testsuite/g++.dg/asan/pr82792.C
new file mode 100644
index 00000000000..99f1c35328c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/asan/pr82792.C
@@ -0,0 +1,32 @@
+/* PR sanitizer/82792 */
+/* { dg-do compile } */
+/* { dg-options "-fsanitize=address" } */
+
+extern int
+test (int i, int j)
+{
+ long c;
+ (c) = 1;
+ switch (i)
+ {
+ case 1:
+ if (j)
+ {
+ c = 1;
+ }
+ goto default_case;
+ case 2:
+ {
+ if (j)
+ {
+ c = 0;
+ }
+ }
+ __attribute ((fallthrough));
+ default_case:
+ default:
+ c = 0;
+ break;
+ }
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr80259.C b/gcc/testsuite/g++.dg/cpp0x/pr80259.C
new file mode 100644
index 00000000000..9d2a109bcf3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/pr80259.C
@@ -0,0 +1,13 @@
+// PR c++/80259
+// { dg-do compile { target c++11 } }
+
+void foo () {} // { dg-message "previously defined here" }
+void bar ();
+
+struct A
+{
+ friend void foo () = delete; // { dg-error "redefinition of" }
+ friend void bar () = delete; // { dg-message "previously defined here" }
+};
+
+void bar () {} // { dg-error "redefinition of" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr83556.C b/gcc/testsuite/g++.dg/cpp0x/pr83556.C
new file mode 100644
index 00000000000..bab06a5b943
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/pr83556.C
@@ -0,0 +1,28 @@
+// PR c++/83556
+// { dg-do run { target c++11 } }
+
+int
+foo ()
+{
+ return 1;
+}
+
+struct A
+{
+ int a = foo ();
+ int b = 1;
+ int c = a ? 1 * b : 2 * b;
+};
+
+struct B
+{
+ A d {};
+};
+
+int
+main ()
+{
+ B e {};
+ if (e.d.c != 1)
+ __builtin_abort ();
+}
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-83116.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-83116.C
new file mode 100644
index 00000000000..18d79e2e1cc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-83116.C
@@ -0,0 +1,18 @@
+// PR c++/83116
+// { dg-do run { target c++14 } }
+// { dg-options "-O2" }
+
+struct S {
+ constexpr S () : s(0) { foo (); }
+ constexpr int foo () { return s; }
+ int s;
+};
+
+int
+main ()
+{
+ static S var;
+ var.s = 5;
+ if (var.s != 5 || var.foo () != 5)
+ __builtin_abort ();
+}
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp10.C b/gcc/testsuite/g++.dg/cpp1z/decomp10.C
index c2bcb93c1d7..f27cbfbc0d9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp10.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp10.C
@@ -11,7 +11,8 @@ void f1() { auto [ x ] = a1; } // { dg-error "is not an integral constant expres
struct A2 { int i,j; } a2;
template<> struct std::tuple_size<A2> { enum { value = 5 }; };
-void f2() { auto [ x ] = a2; } // { dg-error "decomposes into 5" }
+void f2() { auto [ x ] = a2; } // { dg-error "only 1 name provided" }
+ // { dg-message "decomposes into 5" "" { target *-*-* } .-1 }
struct A3 { int i,j; } a3;
template<> struct std::tuple_size<A3> { enum { value = 1 }; };
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp3.C b/gcc/testsuite/g++.dg/cpp1z/decomp3.C
index a739d3ace37..416a22b79f0 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp3.C
@@ -51,16 +51,21 @@ int arr[4];
void
test3 (A &b, B c)
{
- auto [ d, e, f ] = arr; // { dg-error "only 3 names provided while 'int .4.' decomposes into 4 elements" }
- // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
- auto & [ g, h, i, j, k ] = arr; // { dg-error "5 names provided while 'int .4.' decomposes into 4 elements" }
- // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
- auto [ l, m ] = b; // { dg-error "only 2 names provided while 'A' decomposes into 3 elements" }
- // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
- auto & [ n, o, p, q ] = b; // { dg-error "4 names provided while 'A' decomposes into 3 elements" }
- // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+ auto [ d, e, f ] = arr; // { dg-error "only 3 names provided" }
+ // { dg-message "while 'int .4.' decomposes into 4 elements" "" { target *-*-* } .-1 }
+ // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-2 }
+ auto & [ g, h, i, j, k ] = arr; // { dg-error "5 names provided" }
+ // { dg-message "while 'int .4.' decomposes into 4 elements" "" { target *-*-* } .-1 }
+ // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-2 }
+ auto [ l, m ] = b; // { dg-error "only 2 names provided" }
+ // { dg-message "while 'A' decomposes into 3 elements" "" { target *-*-* } .-1 }
+ // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-2 }
+ auto & [ n, o, p, q ] = b; // { dg-error "4 names provided" }
+ // { dg-message "while 'A' decomposes into 3 elements" "" { target *-*-* } .-1 }
+ // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-2 }
auto [] { c }; // { dg-error "empty decomposition declaration" }
// { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
- auto [ r, s ] = c; // { dg-error "2 names provided while 'B' decomposes into 1 elements" }
- // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
+ auto [ r, s ] = c; // { dg-error "2 names provided" }
+ // { dg-message "while 'B' decomposes into 1 element" "" { target *-*-* } .-1 }
+ // { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-2 }
}
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp30.C b/gcc/testsuite/g++.dg/cpp1z/decomp30.C
index 23115ad1082..cca15ed126b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp30.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp30.C
@@ -10,3 +10,5 @@ auto [j, k] { a, a }; // { dg-error "invalid initializer for structured binding
auto [l, m] = { a }; // { dg-error "deducing from brace-enclosed initializer list requires" }
auto [n, o] {}; // { dg-error "invalid initializer for structured binding declaration" }
auto [p, q] (); // { dg-error "invalid initializer for structured binding declaration" }
+auto [r, s] = {}; // { dg-error "deducing from brace-enclosed initializer list requires" }
+auto [t, u] = { a, a }; // { dg-error "deducing from brace-enclosed initializer list requires" }
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp31.C b/gcc/testsuite/g++.dg/cpp1z/decomp31.C
new file mode 100644
index 00000000000..04b2516dada
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp31.C
@@ -0,0 +1,18 @@
+// PR c++/81888
+// { dg-do compile { target c++1z } }
+
+struct S {
+ bool s = true;
+};
+
+auto [a] = S{};
+
+template <class T>
+bool
+foo () noexcept
+{
+ auto [c] = T{};
+ return c;
+}
+
+const bool b = foo<S> ();
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp32.C b/gcc/testsuite/g++.dg/cpp1z/decomp32.C
new file mode 100644
index 00000000000..c4ea130d551
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp32.C
@@ -0,0 +1,32 @@
+// PR c++/83205
+// { dg-do compile { target c++11 } }
+// { dg-options "" }
+
+struct A { int i; };
+struct B { int i; };
+namespace std {
+ template <typename T> struct tuple_size;
+ template <> struct tuple_size<A> {
+ static constexpr int value = -1;
+ };
+#ifdef __SIZEOF_INT128__
+ template <> struct tuple_size<B> {
+ static constexpr unsigned __int128 value = -1;
+ };
+#endif
+}
+
+auto [a] = A{}; // { dg-error "1 name provided" }
+ // { dg-message "while 'A' decomposes into -1 elements" "" { target *-*-* } .-1 }
+ // { dg-warning "decomposition declaration only available with" "" { target c++14_down } .-2 }
+#ifdef __SIZEOF_INT128__
+auto [b] = B{}; // { dg-error "1 name provided" "" { target int128 } }
+ // { dg-message "while 'B' decomposes into \[0-9xa-fXA-F]* elements" "" { target int128 } .-1 }
+ // { dg-warning "decomposition declaration only available with" "" { target { c++14_down && int128 } } .-2 }
+auto [c, d] = B{}; // { dg-error "2 names provided" "" { target int128 } }
+ // { dg-message "while 'B' decomposes into \[0-9xa-fXA-F]* elements" "" { target int128 } .-1 }
+ // { dg-warning "decomposition declaration only available with" "" { target { c++14_down && int128 } } .-2 }
+#endif
+auto [e, f, g] = A{}; // { dg-error "3 names provided" }
+ // { dg-message "while 'A' decomposes into -1 elements" "" { target *-*-* } .-1 }
+ // { dg-warning "decomposition declaration only available with" "" { target c++14_down } .-2 }
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp33.C b/gcc/testsuite/g++.dg/cpp1z/decomp33.C
new file mode 100644
index 00000000000..9c5914a1d13
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp33.C
@@ -0,0 +1,21 @@
+// PR c++/83217
+// { dg-do compile { target c++11 } }
+// { dg-options "" }
+
+template <typename T>
+struct S
+{
+ T a;
+};
+
+void
+foo (S<int> *b)
+{
+ auto & [c] = *b; // { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
+}
+
+void
+bar (S<char> *d)
+{
+ auto [e] = *d; // { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
+}
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp34.C b/gcc/testsuite/g++.dg/cpp1z/decomp34.C
new file mode 100644
index 00000000000..e8cda7954b7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp34.C
@@ -0,0 +1,11 @@
+// PR c++/81197
+// { dg-do compile { target c++11 } }
+// { dg-options "" }
+
+struct X { int a; };
+struct Y { int b, c, d; };
+auto&& [t] = X{}; // { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
+namespace A { namespace B { auto&& [u, v, ww] = Y{}; } } // { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
+
+// { dg-final { scan-assembler "_ZGRDC1tE0" } }
+// { dg-final { scan-assembler "_ZGRN1A1BDC1u1v2wwEE1" } }
diff --git a/gcc/testsuite/g++.dg/ext/constexpr-pr82781.C b/gcc/testsuite/g++.dg/ext/constexpr-pr82781.C
new file mode 100644
index 00000000000..eee0159351c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/constexpr-pr82781.C
@@ -0,0 +1,12 @@
+// PR c++/82781
+// { dg-do compile { target c++11 } }
+
+typedef int V __attribute__ ((vector_size (16)));
+constexpr V b1 = { 0, 1, 10, 20 };
+constexpr V b2 = { 0, 2, 10, 0 };
+constexpr V b3 = b1 == b2;
+
+static_assert (b3[0] == -1, "");
+static_assert (b3[1] == 0, "");
+static_assert (b3[2] == -1, "");
+static_assert (b3[3] == 0, "");
diff --git a/gcc/testsuite/g++.dg/ipa/pr82801.C b/gcc/testsuite/g++.dg/ipa/pr82801.C
new file mode 100644
index 00000000000..d0c2756e47a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ipa/pr82801.C
@@ -0,0 +1,20 @@
+// PR ipa/82801
+// { dg-do compile }
+// { dg-options "-O2 -Wno-attributes" }
+
+template<int>
+struct A { A () {} };
+struct B { double foo () const; };
+
+__attribute__((always_inline, flatten))
+double B::foo () const
+{
+ A<1> v;
+ return 0.0;
+}
+
+int
+main ()
+{
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/lto/pr82027_0.C b/gcc/testsuite/g++.dg/lto/pr82027_0.C
new file mode 100644
index 00000000000..70cc776b2db
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lto/pr82027_0.C
@@ -0,0 +1,73 @@
+// { dg-lto-do run }
+// { dg-lto-options { { -O3 -flto } } }
+
+class Position
+{
+ public:
+ Position( void ) {}
+ virtual ~Position() {}
+
+ virtual void calcPercent( const char *name,int pos,int size ) {}
+};
+
+
+class Looper
+{
+ public:
+ Looper( Position *cc,int size )
+ : m_cc(cc), m_size(size) {}
+ virtual ~Looper() {}
+
+ void loop( void )
+ {
+ for( int pos=0; pos<m_size; pos++ )
+ {
+ m_cc->calcPercent( "",pos,m_size );
+ }
+ }
+
+ private:
+ Position *m_cc;
+ int m_size;
+};
+
+
+class EmptyClass
+{
+ public:
+ EmptyClass( void ) {}
+ virtual ~EmptyClass() {}
+};
+
+
+class Combined : public EmptyClass, public Position
+{
+ public:
+ Combined( void ) : m_percent(0) {}
+ ~Combined() {}
+
+ void calcPercent( const char *name,int pos,int size )
+ {
+ int percent = 100*pos/size;
+ if( percent!=m_percent )
+ m_percent = percent;
+ }
+
+ private:
+ int m_percent;
+};
+
+
+
+int main( int argc,char **argv )
+{
+ Combined *comb = new Combined();
+ Looper *looper = new Looper( comb,argc );
+
+ looper->loop();
+
+ delete comb;
+ delete looper;
+
+ return( 0 );
+}
diff --git a/gcc/testsuite/g++.dg/opt/pr83084.C b/gcc/testsuite/g++.dg/opt/pr83084.C
new file mode 100644
index 00000000000..d21e30878ec
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr83084.C
@@ -0,0 +1,16 @@
+// PR debug/83084
+// { dg-do compile }
+// { dg-options "-O2 -fcompare-debug -Wno-return-type" }
+
+enum E { F };
+template <E = F> struct A {
+ bool foo ();
+ int b;
+};
+template <> bool A<>::foo () {
+ int a;
+ do
+ if (a)
+ return false;
+ while (__atomic_compare_exchange_n (&b, &a, 0, 1, 4, 0));
+}
diff --git a/gcc/testsuite/g++.dg/opt/pr83608.C b/gcc/testsuite/g++.dg/opt/pr83608.C
new file mode 100644
index 00000000000..555e5877e75
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr83608.C
@@ -0,0 +1,28 @@
+// PR middle-end/83608
+// { dg-do compile }
+// { dg-options "-O2" }
+
+template <typename> class B;
+template <> struct B<float>
+{
+ float foo () { return __real__ b; }
+ _Complex double b;
+};
+
+void bar (int);
+
+template <class T>
+void
+baz ()
+{
+ B<T> h;
+ T *a = (T *) &h;
+ a[0] = a[1] = 6;
+ h.foo () ? void () : bar (7);
+}
+
+int
+main ()
+{
+ baz<float> ();
+}
diff --git a/gcc/testsuite/g++.dg/opt/pr83609.C b/gcc/testsuite/g++.dg/opt/pr83609.C
new file mode 100644
index 00000000000..a43d2916d9d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr83609.C
@@ -0,0 +1,28 @@
+// PR middle-end/83609
+// { dg-do compile }
+// { dg-options "-O2 -fno-tree-forwprop" }
+
+template <typename> class B;
+template <> struct B<float>
+{
+ float foo () { return __real__ b; }
+ _Complex float b;
+};
+
+void bar (int);
+
+template <class T>
+void
+baz ()
+{
+ B<T> h;
+ T *a = (T *) &h;
+ a[0] = a[1] = 6;
+ h.foo () ? void () : bar (7);
+}
+
+int
+main ()
+{
+ baz<float> ();
+}
diff --git a/gcc/testsuite/g++.dg/pr82128.C b/gcc/testsuite/g++.dg/pr82128.C
new file mode 100644
index 00000000000..98bb27adf9d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr82128.C
@@ -0,0 +1,20 @@
+// { dg-do compile }
+// { dg-options "-O3 -fno-tree-forwprop" }
+
+class A {
+ virtual unsigned long m_fn1() const;
+ virtual int &m_fn2(unsigned long) const;
+};
+class C : A {
+public:
+ int &m_fn2(unsigned long) const;
+ unsigned long m_fn1() const;
+};
+class B {
+ void m_fn3(const A &, const int &, const C &, int &) const;
+};
+void B::m_fn3(const A &, const int &, const C &, int &) const {
+ C &a(a);
+ for (long b = 0; a.m_fn1(); b++)
+ a.m_fn2(0);
+}
diff --git a/gcc/testsuite/g++.dg/template/pr79650.C b/gcc/testsuite/g++.dg/template/pr79650.C
new file mode 100644
index 00000000000..72c78140942
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/pr79650.C
@@ -0,0 +1,20 @@
+// PR c++/79650
+// { dg-do compile { target c++11 } }
+// { dg-options "" }
+
+typedef __INTPTR_TYPE__ intptr_t;
+template<intptr_t> struct A {};
+
+void
+foo ()
+{
+ static int a, b;
+lab1:
+lab2:
+ A<(intptr_t)&&lab1 - (__INTPTR_TYPE__)&&lab2> c; // { dg-error "not a constant integer" }
+ A<(intptr_t)&&lab1 - (__INTPTR_TYPE__)&&lab1> d;
+ A<(intptr_t)&a - (intptr_t)&b> e; // { dg-error "is not a constant expression" }
+ A<(intptr_t)&a - (intptr_t)&a> f;
+ A<(intptr_t)sizeof(a) + (intptr_t)&a> g; // { dg-error "not a constant integer" }
+ A<(intptr_t)&a> h; // { dg-error "conversion from pointer type" }
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr82060.C b/gcc/testsuite/g++.dg/torture/pr82060.C
new file mode 100644
index 00000000000..3cea930ae05
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr82060.C
@@ -0,0 +1,32 @@
+// { dg-do compile }
+
+struct A
+{
+ char a[1]; // must be char array
+};
+
+struct B
+{
+ A& a() { return ma; } // must be accessed through a getter
+ A ma;
+};
+
+struct C
+{
+ B& b() { return mb; } // must be accessed through a getter
+ B mb;
+};
+
+struct D
+{
+ virtual A getA() = 0; // must be virtual
+};
+
+void
+foo(D& d) // The D object must not be created locally
+ // (so that getA implementation is not known at compile time?)
+{
+ C c;
+ for (;;) // must be in a loop
+ c.b().a() = d.getA();
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr82902.C b/gcc/testsuite/g++.dg/torture/pr82902.C
new file mode 100644
index 00000000000..cc2ce271d4c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr82902.C
@@ -0,0 +1,21 @@
+// { dg-do compile }
+
+typedef struct el_t {
+ el_t *next;
+ int elem[];
+} EL;
+el_t a, c;
+void *b;
+void *fn1() {
+ if (b)
+ return a.elem;
+ return c.elem;
+}
+typedef struct {
+ int x;
+} EV_T;
+EV_T *d;
+void fn2() {
+ EV_T *e = (EV_T *)fn1();
+ d[0] = *e;
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr83471.C b/gcc/testsuite/g++.dg/torture/pr83471.C
new file mode 100644
index 00000000000..b9687265d77
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr83471.C
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+
+class a {
+public:
+ void *operator new(__SIZE_TYPE__, int);
+};
+class b : public a {
+public:
+ b();
+ virtual void c() {}
+ void m_fn2();
+};
+int d;
+void e() {
+ long f;
+ b *g;
+ (f);
+ g = new (d) b;
+ g->c();
+ g->m_fn2();
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr83713.C b/gcc/testsuite/g++.dg/torture/pr83713.C
new file mode 100644
index 00000000000..ca6af04406d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr83713.C
@@ -0,0 +1,12 @@
+// { dg-do compile }
+
+class a
+{
+ char b;
+ void c ();
+};
+void
+a::c ()
+{
+ &b + ((long long) &b & 0);
+}
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr83523.C b/gcc/testsuite/g++.dg/tree-ssa/pr83523.C
new file mode 100644
index 00000000000..d9adf90f0b5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr83523.C
@@ -0,0 +1,25 @@
+// PR tree-optimization/83523
+// { dg-do compile }
+// { dg-options "-O2 -fexceptions -fnon-call-exceptions -ftrapv" }
+
+#ifdef __SIZEOF_INT128__
+typedef __int128 T;
+typedef long long int U;
+#else
+typedef long long int T;
+typedef int U;
+#endif
+
+struct S { S (); ~S (); };
+void bar ();
+
+T
+foo (U x, U y)
+{
+ T z = x;
+ S s;
+ bar ();
+ z *= y;
+ bar ();
+ return z;
+}
diff --git a/gcc/testsuite/g++.dg/ubsan/pr81212.C b/gcc/testsuite/g++.dg/ubsan/pr81212.C
new file mode 100644
index 00000000000..ce92a07dceb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ubsan/pr81212.C
@@ -0,0 +1,16 @@
+// PR c++/81212
+// { dg-do compile }
+// { dg-options "-Wreturn-type -fsanitize=return" }
+
+struct S
+{
+ S (void *);
+ void *s;
+};
+
+S
+foo (bool x, void *y)
+{
+ if (x)
+ return S (y);
+} // { dg-warning "control reaches end of non-void function" }
diff --git a/gcc/testsuite/g++.dg/warn/pr81675.C b/gcc/testsuite/g++.dg/warn/pr81675.C
new file mode 100644
index 00000000000..24a7a3b0677
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/pr81675.C
@@ -0,0 +1,15 @@
+// PR c++/81675
+// { dg-do compile }
+// { dg-options "-Wall" }
+
+struct S
+{
+ ~S () __attribute__((noreturn));
+ int a;
+};
+
+int
+foo ()
+{
+ false ? 5 : S ().a;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr81553.c b/gcc/testsuite/gcc.c-torture/compile/pr81553.c
new file mode 100644
index 00000000000..ae33b169824
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr81553.c
@@ -0,0 +1,10 @@
+/* PR rtl-optimization/81553 */
+
+int a, b, c, d;
+
+void
+foo (void)
+{
+ d = 1 >> c >> 1;
+ b = ~(209883449764912897ULL & d) << (0 >= a) | ~d;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr83448.c b/gcc/testsuite/gcc.c-torture/compile/pr83448.c
new file mode 100644
index 00000000000..9f0d9aca4eb
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr83448.c
@@ -0,0 +1,15 @@
+/* PR c/83448 */
+
+char *a;
+int b;
+
+void
+foo (void)
+{
+ for (;;)
+ {
+ if (b < 0)
+ foo ();
+ __builtin_snprintf (a, b, "%*s", b, "");
+ }
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/20180112-1.c b/gcc/testsuite/gcc.c-torture/execute/20180112-1.c
new file mode 100644
index 00000000000..6752661ecb6
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20180112-1.c
@@ -0,0 +1,32 @@
+/* PR rtl-optimization/83565 */
+/* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */
+
+extern void abort (void);
+
+typedef unsigned int u32;
+
+u32 bug (u32 * result) __attribute__((noinline));
+u32 bug (u32 * result)
+{
+ volatile u32 ss = 0xFFFFffff;
+ volatile u32 d = 0xEEEEeeee;
+ u32 tt = d & 0x00800000;
+ u32 r = tt << 8;
+
+ r = (r >> 31) | (r << 1);
+
+ u32 u = r^ss;
+ u32 off = u >> 1;
+
+ *result = tt;
+ return off;
+}
+
+int main(void)
+{
+ u32 l;
+ u32 off = bug(&l);
+ if (off != 0x7fffffff)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr83269.c b/gcc/testsuite/gcc.c-torture/execute/pr83269.c
new file mode 100644
index 00000000000..37fc5d14db7
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr83269.c
@@ -0,0 +1,14 @@
+/* PR tree-optimization/83269 */
+
+int
+main ()
+{
+#if __SIZEOF_INT__ == 4 && __SIZEOF_LONG_LONG__ > 4 && __CHAR_BIT__ == 8
+ volatile unsigned char a = 1;
+ long long b = 0x80000000L;
+ int c = -((int)(-b) - (-0x7fffffff * a));
+ if (c != 1)
+ __builtin_abort ();
+#endif
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/asan/pr82545.c b/gcc/testsuite/gcc.dg/asan/pr82545.c
new file mode 100644
index 00000000000..8870db3653f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/asan/pr82545.c
@@ -0,0 +1,17 @@
+/* PR sanitizer/82545. */
+/* { dg-do compile } */
+
+extern void c(int);
+extern void d(void);
+
+void *buf[5];
+
+void a(void) {
+ {
+ int b;
+ &b;
+ __builtin_setjmp(buf);
+ c(b);
+ }
+ d();
+}
diff --git a/gcc/testsuite/gcc.dg/builtin-object-size-18.c b/gcc/testsuite/gcc.dg/builtin-object-size-18.c
new file mode 100644
index 00000000000..e065393282a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/builtin-object-size-18.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* __stpncpy_chk could return buf up to buf + 64, so
+ the minimum object size might be far smaller than 64. */
+/* { dg-final { scan-tree-dump-not "return 64;" "optimized" } } */
+
+typedef __SIZE_TYPE__ size_t;
+
+size_t
+foo (const char *p, size_t s, size_t t)
+{
+ char buf[64];
+ char *q = __builtin___stpncpy_chk (buf, p, s, t);
+ return __builtin_object_size (q, 2);
+}
diff --git a/gcc/testsuite/gcc.dg/ipa/pr82808.c b/gcc/testsuite/gcc.dg/ipa/pr82808.c
new file mode 100644
index 00000000000..9c95d0b6ed7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/pr82808.c
@@ -0,0 +1,27 @@
+/* { dg-options "-O2" } */
+/* { dg-do run } */
+
+static void __attribute__((noinline))
+foo (double *a, double x)
+{
+ *a = x;
+}
+
+static double __attribute__((noinline))
+f_c1 (int m, double *a)
+{
+ foo (a, m);
+ return *a;
+}
+
+int
+main (){
+ double data;
+ double ret = 0 ;
+
+ if ((ret = f_c1 (2, &data)) != 2)
+ {
+ __builtin_abort ();
+ }
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/opts-8.c b/gcc/testsuite/gcc.dg/opts-8.c
new file mode 100644
index 00000000000..7837197ed43
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/opts-8.c
@@ -0,0 +1,6 @@
+/* PR target/82880 */
+/* Test we don't ICE or hang. */
+/* { dg-do compile } */
+/* { dg-options "--help=target --help=optimizers" } */
+/* { dg-allow-blank-lines-in-output 1 } */
+/* { dg-prune-output ".*" } */
diff --git a/gcc/testsuite/gcc.dg/pr80747.c b/gcc/testsuite/gcc.dg/pr80747.c
new file mode 100644
index 00000000000..ea9dd3c3033
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr80747.c
@@ -0,0 +1,18 @@
+/* PR rtl-optimization/80747 */
+/* { dg-do compile } */
+/* { dg-options "-fprofile-use -freorder-blocks-and-partition -O1 -foptimize-sibling-calls" } */
+
+int
+foo (int a)
+{
+ int r;
+ if (a & 1)
+ r = foo (a - 1);
+ else if (a)
+ r = foo (a - 2);
+ else
+ return 0;
+ if (r)
+ r = r;
+ return r;
+}
diff --git a/gcc/testsuite/gcc.dg/pr82765.c b/gcc/testsuite/gcc.dg/pr82765.c
new file mode 100644
index 00000000000..dde0aeba7ef
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr82765.c
@@ -0,0 +1,5 @@
+/* { dg-do compile } */
+/* { dg-options "-Os -w" } */
+
+int a[1][1];
+int main() { int *b[] = {a, a[1820408606019012862278468], a, a, a}; }
diff --git a/gcc/testsuite/gcc.dg/pr82975.c b/gcc/testsuite/gcc.dg/pr82975.c
new file mode 100644
index 00000000000..422ba6c6855
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr82975.c
@@ -0,0 +1,20 @@
+/* PR target/82975. */
+/* { dg-do compile } */
+/* { dg-options "-fno-sched-pressure -O2" } */
+/* { dg-additional-options "-mtune=cortex-a57" { target arm*-*-* aarch64*-*-* } } */
+
+typedef __SIZE_TYPE__ size_t;
+
+struct S1
+{
+ char pad1;
+ char val;
+ short pad2;
+};
+
+extern char t[256];
+
+void foo (struct S1 a, size_t i)
+{
+ t[i] = a.val;
+}
diff --git a/gcc/testsuite/gcc.dg/pr83198.c b/gcc/testsuite/gcc.dg/pr83198.c
new file mode 100644
index 00000000000..856f2be07d5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr83198.c
@@ -0,0 +1,18 @@
+/* PR tree-optimization/83198 */
+/* { dg-do compile } */
+/* { dg-options "-Wall -Wno-format" } */
+
+int
+foo (char *d[6], int x)
+{
+ int r = 0;
+ r += __builtin_sprintf (d[0], "%f", x);
+ r += __builtin_sprintf (d[1], "%a", x);
+ r += __builtin_sprintf (d[2], "%f", "foo");
+ r += __builtin_sprintf (d[3], "%a", "bar");
+#ifdef __SIZEOF_FLOAT128__
+ r += __builtin_sprintf (d[4], "%a", 1.0Q);
+ r += __builtin_sprintf (d[5], "%Lf", 1.0Q);
+#endif
+ return r;
+}
diff --git a/gcc/testsuite/gcc.dg/pr83512.c b/gcc/testsuite/gcc.dg/pr83512.c
new file mode 100644
index 00000000000..d86e57befc7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr83512.c
@@ -0,0 +1,16 @@
+/* PR rtl-optimization/83512 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -freorder-blocks-algorithm=simple" } */
+
+int a;
+
+void
+foo (int *x)
+{
+ for (;;)
+ {
+ for (*x = 0; *x < 1; *x++)
+ ;
+ ++a;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/pr83521.c b/gcc/testsuite/gcc.dg/pr83521.c
new file mode 100644
index 00000000000..fc7ca04d1b4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr83521.c
@@ -0,0 +1,10 @@
+/* PR tree-optimization/83521 */
+/* { dg-do compile } */
+/* { dg-options "-O1 -fno-tree-forwprop" } */
+
+int
+foo (unsigned int x, int y)
+{
+ int *z = (int *)&x;
+ return (y == 0) ? y : *z;
+}
diff --git a/gcc/testsuite/gcc.dg/pr83609.c b/gcc/testsuite/gcc.dg/pr83609.c
new file mode 100644
index 00000000000..eac11fca936
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr83609.c
@@ -0,0 +1,29 @@
+/* PR middle-end/83609 */
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-tree-forwprop -fno-tree-ccp -fno-tree-fre -fno-tree-pre -fno-code-hoisting" } */
+
+#if __SIZEOF_LONG_LONG__ == 2 * __SIZEOF_FLOAT__
+_Complex float
+foo (void)
+{
+ _Complex float c;
+ *((unsigned long long *)&c) = 0x123456789abcdef0ULL;
+ return c;
+}
+
+int
+main ()
+{
+ union { _Complex float c; unsigned long long l; } u;
+ u.c = foo ();
+ if (u.l != 0x123456789abcdef0ULL)
+ __builtin_abort ();
+ return 0;
+}
+#else
+int
+main ()
+{
+ return 0;
+}
+#endif
diff --git a/gcc/testsuite/gcc.dg/pr83623.c b/gcc/testsuite/gcc.dg/pr83623.c
new file mode 100644
index 00000000000..5d62c04f542
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr83623.c
@@ -0,0 +1,12 @@
+/* PR middle-end/83623 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+/* { dg-additional-options "-mmovbe" { target i?86-*-* x86_64-*-* } } */
+
+unsigned short __attribute__ ((__vector_size__ (16))) x;
+
+void
+foo (void)
+{
+ x = x << 8 | x >> 8;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr60092.c b/gcc/testsuite/gcc.dg/torture/pr60092.c
index d66e3f2444e..7c6cabb509a 100644
--- a/gcc/testsuite/gcc.dg/torture/pr60092.c
+++ b/gcc/testsuite/gcc.dg/torture/pr60092.c
@@ -4,7 +4,6 @@
/* { dg-skip-if "No undefined weak" { nvptx-*-* } { "*" } { "" } } */
/* { dg-additional-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } } */
/* { dg-additional-options "-Wl,-flat_namespace" { target *-*-darwin[89]* } } */
-/* { dg-xfail-run-if "posix_memalign modifies first arg on error" { *-*-solaris2.11* } { "-O0" } } */
typedef __SIZE_TYPE__ size_t;
extern int posix_memalign(void **memptr, size_t alignment, size_t size) __attribute__((weak));
diff --git a/gcc/testsuite/gcc.dg/torture/pr82102.c b/gcc/testsuite/gcc.dg/torture/pr82102.c
new file mode 100644
index 00000000000..393f8bf9590
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr82102.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+
+void *a, *b;
+struct pt3_i2cbuf {
+ int num_cmds;
+} c;
+void *memcpy(void *, void *, __SIZE_TYPE__);
+void put_stop();
+void translate(struct pt3_i2cbuf *p1, int p2)
+{
+ p1->num_cmds = 0;
+ if (p2)
+ put_stop();
+}
+void pt3_i2c_master_xfer(int p1)
+{
+ translate(&c, p1);
+ memcpy(a, b, c.num_cmds);
+ for (; p1;)
+ ;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr82402.c b/gcc/testsuite/gcc.dg/torture/pr82402.c
new file mode 100644
index 00000000000..cf90d5c6faf
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr82402.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+
+typedef int jmp_buf[1];
+
+extern void exit(int) __attribute__((__noreturn__));
+extern int setjmpx(jmp_buf) __attribute__((__returns_twice__));
+
+jmp_buf jbAnagram;
+int a[6];
+int d;
+int b () { exit (1); }
+int c () { b (); }
+int e ()
+{
+ int f = 0;
+ for (; f < 6; f++)
+ a[f] = d;
+ c ();
+ setjmpx (jbAnagram);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr82697.c b/gcc/testsuite/gcc.dg/torture/pr82697.c
new file mode 100644
index 00000000000..57da8a264b9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr82697.c
@@ -0,0 +1,23 @@
+/* { dg-do run } */
+
+__attribute__((noinline,noclone))
+void test(int *pi, long *pl, int f)
+{
+ *pl = 0;
+
+ *pi = 1;
+
+ if (f)
+ *pl = 2;
+}
+
+int main()
+{
+ void *p = __builtin_malloc(sizeof (long));
+
+ test(p, p, 0);
+
+ if (*(int *)p != 1)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-warn-4.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-warn-4.c
new file mode 100644
index 00000000000..e6abf24c672
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-warn-4.c
@@ -0,0 +1,46 @@
+/* PR c/83448 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -Wformat-truncation -fdiagnostics-show-caret" } */
+
+extern int snprintf (char *, __SIZE_TYPE__, const char *, ...);
+
+void
+foo (char *a, char *b, char *c, int d, int e)
+{
+ snprintf (a, 7, "abc\\\123 efg");
+ /* { dg-warning "directive output truncated writing 9 bytes into a region of size 7" "" { target *-*-* } .-1 }
+ { dg-message ".snprintf. output 10 bytes into a destination of size 7" "note" { target *-*-* } .-2 }
+ { dg-begin-multiline-output "" }
+ snprintf (a, 7, "abc\\\123 efg");
+ ~~~~~~~~~~~^~
+ { dg-end-multiline-output "" }
+ { dg-begin-multiline-output "note" }
+ snprintf (a, 7, "abc\\\123 efg");
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ { dg-end-multiline-output "" } */
+ d &= 63;
+ d += 10;
+ snprintf (b, 7, "a%dbcdefg", d);
+ /* { dg-warning "'bcdefg' directive output truncated writing 6 bytes into a region of size 4" "" { target *-*-* } .-1 }
+ { dg-message ".snprintf. output 10 bytes into a destination of size 7" "note" { target *-*-* } .-2 }
+ { dg-begin-multiline-output "" }
+ snprintf (b, 7, "a%dbcdefg", d);
+ ~~~~^~
+ { dg-end-multiline-output "" }
+ { dg-begin-multiline-output "note" }
+ snprintf (b, 7, "a%dbcdefg", d);
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ { dg-end-multiline-output "" } */
+ e &= 127;
+ snprintf (c, 7, "a%dbcdefgh", e);
+ /* { dg-warning "'bcdefgh' directive output truncated writing 7 bytes into a region of size between 3 and 5" "" { target *-*-* } .-1 }
+ { dg-message ".snprintf. output between 10 and 12 bytes into a destination of size 7" "note" { target *-*-* } .-2 }
+ { dg-begin-multiline-output "" }
+ snprintf (c, 7, "a%dbcdefgh", e);
+ ~~~~~^~
+ { dg-end-multiline-output "" }
+ { dg-begin-multiline-output "note" }
+ snprintf (c, 7, "a%dbcdefgh", e);
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ { dg-end-multiline-output "" } */
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr82726.c b/gcc/testsuite/gcc.dg/tree-ssa/pr82726.c
new file mode 100644
index 00000000000..22bc59dacc8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr82726.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 --param tree-reassoc-width=4" } */
+/* { dg-additional-options "-mavx2" { target { x86_64-*-* i?86-*-* } } } */
+
+#define N 40
+#define M 128
+unsigned int in[N+M];
+unsigned short out[N];
+
+/* Outer-loop vectorization. */
+
+void
+foo (){
+ int i,j;
+ unsigned int diff;
+
+ for (i = 0; i < N; i++) {
+ diff = 0;
+ for (j = 0; j < M; j+=8) {
+ diff += in[j+i];
+ }
+ out[i]=(unsigned short)diff;
+ }
+
+ return;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr83198.c b/gcc/testsuite/gcc.dg/tree-ssa/pr83198.c
new file mode 100644
index 00000000000..f9dba2acc68
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr83198.c
@@ -0,0 +1,23 @@
+/* PR tree-optimization/83198 */
+/* { dg-do compile { target __float128 } } */
+/* { dg-options "-O2 -fprintf-return-value -Wno-format -fdump-tree-optimized" } */
+/* { dg-add-options __float128 } */
+
+void bar (void);
+void link_error (void);
+
+void
+foo (char *x)
+{
+ int a = __builtin_sprintf (x, "%f", 1.0Q);
+ if (a < 8)
+ link_error ();
+ if (a > 13)
+ bar ();
+ if (a > 322)
+ link_error ();
+}
+
+/* Verify we don't optimize return value to [8, 13]. */
+/* { dg-final { scan-tree-dump-not "link_error \\(\\);" "optimized" } } */
+/* { dg-final { scan-tree-dump "bar \\(\\);" "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/ubsan/pr83014.c b/gcc/testsuite/gcc.dg/ubsan/pr83014.c
new file mode 100644
index 00000000000..de626043cc6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ubsan/pr83014.c
@@ -0,0 +1,12 @@
+/* PR sanitizer/83014 */
+/* { dg-do compile } */
+/* { dg-options "-fsanitize=undefined" } */
+
+int
+foo (void)
+{
+ int data[5];
+ data[0] = 0;
+ data[5] = 0;
+ return data[0];
+}
diff --git a/gcc/testsuite/gcc.dg/vect/pr80631-1.c b/gcc/testsuite/gcc.dg/vect/pr80631-1.c
new file mode 100644
index 00000000000..fc81245935a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr80631-1.c
@@ -0,0 +1,76 @@
+/* PR tree-optimization/80631 */
+/* { dg-do run } */
+
+#include "tree-vect.h"
+
+int v[8] = { 77, 1, 79, 3, 4, 3, 6, 7 };
+
+__attribute__((noinline, noclone)) void
+f1 (void)
+{
+ int k, r = -1;
+ for (k = 0; k < 8; k++)
+ if (v[k] == 77)
+ r = k;
+ if (r != 0)
+ abort ();
+}
+
+__attribute__((noinline, noclone)) void
+f2 (void)
+{
+ int k, r = 4;
+ for (k = 0; k < 8; k++)
+ if (v[k] == 79)
+ r = k;
+ if (r != 2)
+ abort ();
+}
+
+__attribute__((noinline, noclone)) void
+f3 (void)
+{
+ int k, r = -17;
+ for (k = 0; k < 8; k++)
+ if (v[k] == 78)
+ r = k;
+ if (r != -17)
+ abort ();
+}
+
+__attribute__((noinline, noclone)) void
+f4 (void)
+{
+ int k, r = 7;
+ for (k = 0; k < 8; k++)
+ if (v[k] == 78)
+ r = k;
+ if (r != 7)
+ abort ();
+}
+
+__attribute__((noinline, noclone)) void
+f5 (void)
+{
+ int k, r = -1;
+ for (k = 0; k < 8; k++)
+ if (v[k] == 3)
+ r = k;
+ if (r != 5)
+ abort ();
+}
+
+int
+main ()
+{
+ check_vect ();
+ f1 ();
+ f2 ();
+ f3 ();
+ f4 ();
+ f5 ();
+ return 0;
+}
+
+/* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 5 "vect" { xfail { ! vect_max_reduc } } } } */
+/* { dg-final { scan-tree-dump-times "condition expression based on integer induction." 10 "vect" { xfail { ! vect_max_reduc } } } } */
diff --git a/gcc/testsuite/gcc.dg/vect/pr80631-2.c b/gcc/testsuite/gcc.dg/vect/pr80631-2.c
new file mode 100644
index 00000000000..60f4cf0c194
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr80631-2.c
@@ -0,0 +1,73 @@
+/* PR tree-optimization/80631 */
+/* { dg-do run } */
+
+#include "tree-vect.h"
+
+int v[8] = { 77, 1, 79, 3, 4, 3, 6, 7 };
+
+__attribute__((noinline, noclone)) void
+f1 (void)
+{
+ int k, r = -1;
+ for (k = 7; k >= 0; k--)
+ if (v[k] == 77)
+ r = k;
+ if (r != 0)
+ abort ();
+}
+
+__attribute__((noinline, noclone)) void
+f2 (void)
+{
+ int k, r = 4;
+ for (k = 7; k >= 0; k--)
+ if (v[k] == 79)
+ r = k;
+ if (r != 2)
+ abort ();
+}
+
+__attribute__((noinline, noclone)) void
+f3 (void)
+{
+ int k, r = -17;
+ for (k = 7; k >= 0; k--)
+ if (v[k] == 78)
+ r = k;
+ if (r != -17)
+ abort ();
+}
+
+__attribute__((noinline, noclone)) void
+f4 (void)
+{
+ int k, r = 7;
+ for (k = 7; k >= 0; k--)
+ if (v[k] == 78)
+ r = k;
+ if (r != 7)
+ abort ();
+}
+
+__attribute__((noinline, noclone)) void
+f5 (void)
+{
+ int k, r = -1;
+ for (k = 7; k >= 0; k--)
+ if (v[k] == 3)
+ r = k;
+ if (r != 3)
+ abort ();
+}
+
+int
+main ()
+{
+ check_vect ();
+ f1 ();
+ f2 ();
+ f3 ();
+ f4 ();
+ f5 ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/alpha/pr83628-1.c b/gcc/testsuite/gcc.target/alpha/pr83628-1.c
new file mode 100644
index 00000000000..a4a32d98969
--- /dev/null
+++ b/gcc/testsuite/gcc.target/alpha/pr83628-1.c
@@ -0,0 +1,19 @@
+/* PR target/83628 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+typedef __SIZE_TYPE__ size_t;
+
+int
+get_int (int *p, size_t idx)
+{
+ return p[idx];
+}
+
+long
+get_long (long *p, size_t idx)
+{
+ return p[idx];
+}
+
+/* { dg-final { scan-assembler-not "\[ \t\]add\[ql\]" } } */
diff --git a/gcc/testsuite/gcc.target/alpha/pr83628-2.c b/gcc/testsuite/gcc.target/alpha/pr83628-2.c
new file mode 100644
index 00000000000..2f02181d28b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/alpha/pr83628-2.c
@@ -0,0 +1,29 @@
+/* PR target/83628 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+int
+s4l (int a, int b)
+{
+ return a * 4 + b;
+}
+
+int
+s8l (int a, int b)
+{
+ return a * 8 + b;
+}
+
+long
+s4q (long a, long b)
+{
+ return a * 4 + b;
+}
+
+long
+s8q (long a, long b)
+{
+ return a * 8 + b;
+}
+
+/* { dg-final { scan-assembler-not "\[ \t\]add\[ql\]" } } */
diff --git a/gcc/testsuite/gcc.target/alpha/pr83628-3.c b/gcc/testsuite/gcc.target/alpha/pr83628-3.c
new file mode 100644
index 00000000000..5bec89f8047
--- /dev/null
+++ b/gcc/testsuite/gcc.target/alpha/pr83628-3.c
@@ -0,0 +1,29 @@
+/* PR target/83628 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+int
+s4l (int a, int b)
+{
+ return a * 4 - b;
+}
+
+int
+s8l (int a, int b)
+{
+ return a * 8 - b;
+}
+
+long
+s4q (long a, long b)
+{
+ return a * 4 - b;
+}
+
+long
+s8q (long a, long b)
+{
+ return a * 8 - b;
+}
+
+/* { dg-final { scan-assembler-not "\[ \t\]sub\[ql\]" } } */
diff --git a/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c b/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c
new file mode 100644
index 00000000000..09adddfd57c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_v8_2a_fp16_scalar_ok } */
+/* { dg-options "-O2 -mfpu=fp-armv8 -march=armv8.2-a+fp16 -marm -mfloat-abi=hard" } */
+
+__fp16
+test_select (__fp16 a, __fp16 b, __fp16 c)
+{
+ return (a < b) ? b : c;
+}
+/* { dg-final { scan-assembler "bpl" } } */
diff --git a/gcc/testsuite/gcc.target/i386/avx2-pr80631.c b/gcc/testsuite/gcc.target/i386/avx2-pr80631.c
new file mode 100644
index 00000000000..5af1b0feb2c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx2-pr80631.c
@@ -0,0 +1,23 @@
+/* PR tree-optimization/80631 */
+/* { dg-do run } */
+/* { dg-options "-O2 -ftree-vectorize -mavx2 -fno-vect-cost-model" } */
+/* { dg-require-effective-target avx2 } */
+
+#include "avx2-check.h"
+
+#define N 8
+
+static void
+avx2_test (void)
+{
+ int v[N], k;
+ for(k = 0; k < N; k++)
+ v[k] = k;
+ v[0] = 77;
+ int found_index = -1;
+ for (k = 0; k < N; k++)
+ if (v[k] == 77)
+ found_index = k;
+ if (found_index != 0)
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr80583.c b/gcc/testsuite/gcc.target/i386/pr80583.c
new file mode 100644
index 00000000000..6fe3212b65c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr80583.c
@@ -0,0 +1,13 @@
+/* PR target/80583 */
+/* { dg-do compile } */
+/* { dg-options "-O0 -mno-avx" } */
+
+typedef int V __attribute__((__vector_size__(32)));
+struct S { V a; };
+
+V __attribute__((target ("avx")))
+foo (struct S *b)
+{
+ V x = b->a;
+ return x;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr80819-1.c b/gcc/testsuite/gcc.target/i386/pr80819-1.c
new file mode 100644
index 00000000000..f06c3628e02
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr80819-1.c
@@ -0,0 +1,13 @@
+/* PR target/80819 */
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-O2 -msse4 -mno-avx -mtune=haswell -masm=att" } */
+
+typedef unsigned long long V __attribute__((vector_size (16)));
+
+V
+foo (unsigned long long x, unsigned long long y)
+{
+ return (V) { x, y };
+}
+
+/* { dg-final { scan-assembler-not "movq\[ \t]*%rsi, \[-0-9]*\\(" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr80819-2.c b/gcc/testsuite/gcc.target/i386/pr80819-2.c
new file mode 100644
index 00000000000..7571e8160cb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr80819-2.c
@@ -0,0 +1,13 @@
+/* PR target/80819 */
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-O2 -msse4 -mno-avx -mtune=generic -masm=att" } */
+
+typedef unsigned long long V __attribute__((vector_size (16)));
+
+V
+foo (unsigned long long x, unsigned long long y)
+{
+ return (V) { x, y };
+}
+
+/* { dg-final { scan-assembler-not "movq\[ \t]*%rsi, \[-0-9]*\\(" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr81906.c b/gcc/testsuite/gcc.target/i386/pr81906.c
new file mode 100644
index 00000000000..6c71bec41c0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr81906.c
@@ -0,0 +1,37 @@
+/* PR target/81906 */
+/* { dg-do run { target *-*-linux* *-*-gnu* } }
+/* { dg-options "-O2 -frounding-math" } */
+
+#include <fenv.h>
+
+int
+main ()
+{
+ #define N 12
+ double a[N] = { 2.0, 2.25, 2.5, 2.75, 3.5, -2.0, -2.25, -2.5, -2.75, -3.5, 0x2.0p53, -0x2.0p53 };
+ double b[N], c[N], d[N], e[N];
+ double be[N] = { 2.0, 2.0, 2.0, 3.0, 4.0, -2.0, -2.0, -2.0, -3.0, -4.0, 0x2.0p53, -0x2.0p53 };
+ double ce[N] = { 2.0, 2.0, 2.0, 2.0, 3.0, -2.0, -3.0, -3.0, -3.0, -4.0, 0x2.0p53, -0x2.0p53 };
+ double de[N] = { 2.0, 3.0, 3.0, 3.0, 4.0, -2.0, -2.0, -2.0, -2.0, -3.0, 0x2.0p53, -0x2.0p53 };
+ double ee[N] = { 2.0, 2.0, 2.0, 2.0, 3.0, -2.0, -2.0, -2.0, -2.0, -3.0, 0x2.0p53, -0x2.0p53 };
+ asm volatile ("" : : "g" (a), "g" (be), "g" (ce), "g" (de), "g" (ee) : "memory");
+
+ int i;
+ fesetround (FE_TONEAREST);
+ for (i = 0; i < N; ++i)
+ b[i] = __builtin_rint (a[i]);
+ fesetround (FE_DOWNWARD);
+ for (i = 0; i < N; ++i)
+ c[i] = __builtin_rint (a[i]);
+ fesetround (FE_UPWARD);
+ for (i = 0; i < N; ++i)
+ d[i] = __builtin_rint (a[i]);
+ fesetround (FE_TOWARDZERO);
+ for (i = 0; i < N; ++i)
+ e[i] = __builtin_rint (a[i]);
+ fesetround (FE_TONEAREST);
+ for (i = 0; i < N; ++i)
+ if (b[i] != be[i] || c[i] != ce[i] || d[i] != de[i] || e[i] != ee[i])
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr82941-1.c b/gcc/testsuite/gcc.target/i386/pr82941-1.c
new file mode 100644
index 00000000000..d7e530d5116
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr82941-1.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=skylake-avx512" } */
+
+#include <immintrin.h>
+
+extern __m512d y, z;
+
+void
+pr82941 ()
+{
+ z = y;
+}
+
+/* { dg-final { scan-assembler-times "vzeroupper" 1 } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr82941-2.c b/gcc/testsuite/gcc.target/i386/pr82941-2.c
new file mode 100644
index 00000000000..db2f8589ab6
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr82941-2.c
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=knl" } */
+
+#include "pr82941-1.c"
+
+/* { dg-final { scan-assembler-not "vzeroupper" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr82942-1.c b/gcc/testsuite/gcc.target/i386/pr82942-1.c
new file mode 100644
index 00000000000..9cdf81a9d60
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr82942-1.c
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-mavx512f -mno-avx512er -O2" } */
+
+#include "pr82941-1.c"
+
+/* { dg-final { scan-assembler-times "vzeroupper" 1 } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr82942-2.c b/gcc/testsuite/gcc.target/i386/pr82942-2.c
new file mode 100644
index 00000000000..ddb4e689659
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr82942-2.c
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-mavx512f -mavx512er -mtune=knl -O2" } */
+
+#include "pr82941-1.c"
+
+/* { dg-final { scan-assembler-not "vzeroupper" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr82990-1.c b/gcc/testsuite/gcc.target/i386/pr82990-1.c
new file mode 100644
index 00000000000..ff1d6d40eb2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr82990-1.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=knl -mvzeroupper" } */
+
+#include <immintrin.h>
+
+extern __m512d y, z;
+
+void
+pr82941 ()
+{
+ z = y;
+}
+
+/* { dg-final { scan-assembler-times "vzeroupper" 1 } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr82990-2.c b/gcc/testsuite/gcc.target/i386/pr82990-2.c
new file mode 100644
index 00000000000..0d3cb2333dd
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr82990-2.c
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=skylake-avx512 -mno-vzeroupper" } */
+
+#include "pr82941-1.c"
+
+/* { dg-final { scan-assembler-not "vzeroupper" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr82990-3.c b/gcc/testsuite/gcc.target/i386/pr82990-3.c
new file mode 100644
index 00000000000..201fa98d8d4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr82990-3.c
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-mavx512f -mavx512er -mvzeroupper -O2" } */
+
+#include "pr82941-1.c"
+
+/* { dg-final { scan-assembler-times "vzeroupper" 1 } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr82990-4.c b/gcc/testsuite/gcc.target/i386/pr82990-4.c
new file mode 100644
index 00000000000..09f161c7291
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr82990-4.c
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-mavx512f -mno-avx512er -mno-vzeroupper -O2" } */
+
+#include "pr82941-1.c"
+
+/* { dg-final { scan-assembler-not "vzeroupper" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr82990-5.c b/gcc/testsuite/gcc.target/i386/pr82990-5.c
new file mode 100644
index 00000000000..9932bdc5375
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr82990-5.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mavx512f -mtune=generic" } */
+
+#include <immintrin.h>
+
+extern __m512d y, z;
+
+void
+pr82941 ()
+{
+ z = y;
+}
+
+/* { dg-final { scan-assembler-times "vzeroupper" 1 } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr82990-6.c b/gcc/testsuite/gcc.target/i386/pr82990-6.c
new file mode 100644
index 00000000000..063a61c111d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr82990-6.c
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=skylake-avx512 -mtune=knl" } */
+
+#include "pr82941-1.c"
+
+/* { dg-final { scan-assembler-not "vzeroupper" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr82990-7.c b/gcc/testsuite/gcc.target/i386/pr82990-7.c
new file mode 100644
index 00000000000..dedde8b854b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr82990-7.c
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=skylake-avx512 -mtune=generic -mtune-ctrl=^emit_vzeroupper" } */
+
+#include "pr82941-1.c"
+
+/* { dg-final { scan-assembler-not "vzeroupper" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr83467-1.c b/gcc/testsuite/gcc.target/i386/pr83467-1.c
new file mode 100644
index 00000000000..b5cf17edec2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr83467-1.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -flive-range-shrinkage -m8bit-idiv" } */
+/* { dg-require-effective-target int128 } */
+
+unsigned a;
+
+__int128
+b (unsigned c, short d, int e, long f, unsigned __int128 g, char h,
+ int i, __int128 j)
+{
+ j %= 5;
+ c *= i;
+ e = e >> (g & 31);
+ h &= e /= d;
+ g <<= 0 <= 0;
+ g &= h < j;
+ return c + d + f + g + h + i + a + j;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr83467-2.c b/gcc/testsuite/gcc.target/i386/pr83467-2.c
new file mode 100644
index 00000000000..1b424fec2cb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr83467-2.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -flive-range-shrinkage" } */
+/* { dg-require-effective-target int128 } */
+
+int
+a (int b, short c, int d, long e, __int128 f, short g, long h, __int128 i)
+{
+ d <<= f & 31;
+ f >>= 127;
+ g *= d > c;
+ f >>= g;
+ return b + e + f + h + i;
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c b/gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c
index 8a1f7c86013..928131b52ce 100644
--- a/gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c
@@ -73,6 +73,7 @@ use_cpu_supports_builtins (unsigned int *p)
p[37] = __builtin_cpu_supports ("vsx");
p[38] = __builtin_cpu_supports ("darn");
p[39] = __builtin_cpu_supports ("scv");
+ p[40] = __builtin_cpu_supports ("htm-no-suspend");
#else
p[0] = 0;
#endif
diff --git a/gcc/testsuite/gcc.target/powerpc/pr77687.c b/gcc/testsuite/gcc.target/powerpc/pr77687.c
new file mode 100644
index 00000000000..95b27ae99e4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr77687.c
@@ -0,0 +1,20 @@
+/* { dg-options "-std=gnu99 -O2" } */
+/* { dg-final { scan-assembler-not {\mmr r?1,r?11\M.*11.*\mblr\M} } } */
+
+/* PR77687: We used to do stack accesses (via r11) after restoring r1. */
+
+void g(int, char *);
+const char * dum = "hello";
+
+void f(int x)
+{
+ char big[200000];
+ start:
+ g(x, big);
+ g(x, big);
+ register void *p asm("r11") = &&start;
+ asm("" : : "r"(p));
+ asm("" : : :"r28");
+ asm("" : : :"r29");
+ asm("" : : :"r30");
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/pr80101-1.c b/gcc/testsuite/gcc.target/powerpc/pr80101-1.c
new file mode 100644
index 00000000000..45011d54ac2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr80101-1.c
@@ -0,0 +1,22 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power6" } } */
+/* { dg-require-effective-target dfp_hw } */
+/* { dg-options "-mcpu=power6 -mno-sched-epilog -Ofast" } */
+
+/* Prior to resolving PR 80101, this test case resulted in an internal
+ compiler error. The role of this test program is to assure that
+ dejagnu's "test for excess errors" does not find any. */
+
+int b;
+
+void e ();
+
+int c ()
+{
+ struct
+ {
+ int a[b];
+ } d;
+ if (d.a[0])
+ e ();
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/pr80210-2.c b/gcc/testsuite/gcc.target/powerpc/pr80210-2.c
new file mode 100644
index 00000000000..455f7d6e31f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr80210-2.c
@@ -0,0 +1,11 @@
+/* Test for ICE arising from GCC target pragma. */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+#pragma GCC target "no-powerpc-gpopt"
+double
+foo (double a)
+{
+ return __builtin_sqrt (a);
+}
+/* { dg-final { scan-assembler-not "fsqrt" } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/pr81959.c b/gcc/testsuite/gcc.target/powerpc/pr81959.c
new file mode 100644
index 00000000000..c4cc3733841
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr81959.c
@@ -0,0 +1,25 @@
+/* { dg-do compile { target { powerpc64*-*-* && lp64 } } } */
+/* { dg-require-effective-target powerpc_p9vector_ok } */
+/* { dg-options "-mpower9-vector -O2 -mfloat128" } */
+
+/* PR 81959, the compiler raised on unrecognizable insn message in converting
+ int to __float128, where the int had a PRE_INC in the address. */
+
+#ifndef ARRAY_SIZE
+#define ARRAY_SIZE 1024
+#endif
+
+void
+convert_int_to_float128 (__float128 * __restrict__ p,
+ int * __restrict__ q)
+{
+ unsigned long i;
+
+ for (i = 0; i < ARRAY_SIZE; i++)
+ p[i] = (__float128)q[i];
+}
+
+/* { dg-final { scan-assembler {\mlfiwax\M|\mlxsiwax\M} } } */
+/* { dg-final { scan-assembler {\mxscvsdqp\M} } } */
+/* { dg-final { scan-assembler-not {\mmtvsrd\M} } } */
+/* { dg-final { scan-assembler-not {\mmtvsrw[sz]\M} } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/pr83677.c b/gcc/testsuite/gcc.target/powerpc/pr83677.c
new file mode 100644
index 00000000000..a1a760df811
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr83677.c
@@ -0,0 +1,166 @@
+/* { dg-do run { target { powerpc*-*-* && { lp64 && p9vector_hw } } } } */
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
+/* { dg-options "-mcpu=power9 -O2 " } */
+
+/* PR83677: This test case used to fail due to mis-generation of the
+ xxpermr instruction. It requires inlining to create enough register
+ pressure that we generate xxpermr rather than vpermr. */
+
+#include <altivec.h>
+
+void v_expand_u8(vector unsigned char* a, vector unsigned short* b0, vector unsigned short* b1)
+{
+ *b0 = (vector unsigned short)vec_mergeh(*a, vec_splats((unsigned char)0));
+ *b1 = (vector unsigned short)vec_mergel(*a, vec_splats((unsigned char)0));
+}
+
+void v_expand_u16(vector unsigned short* a, vector unsigned int* b0, vector unsigned int* b1)
+{
+ *b0 = (vector unsigned int)vec_mergeh(*a, vec_splats((unsigned short)0));
+ *b1 = (vector unsigned int)vec_mergel(*a, vec_splats((unsigned short)0));
+}
+
+void v_load_deinterleave_u8(unsigned char *ptr, vector unsigned char* a, vector unsigned char* b, vector unsigned char* c)
+{
+ vector unsigned char v1 = vec_xl( 0, ptr);
+ vector unsigned char v2 = vec_xl(16, ptr);
+ vector unsigned char v3 = vec_xl(32, ptr);
+
+ static const vector unsigned char a12_perm = {0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 0, 0, 0, 0, 0};
+ static const vector unsigned char a123_perm = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 17, 20, 23, 26, 29};
+ *a = vec_perm(vec_perm(v1, v2, a12_perm), v3, a123_perm);
+
+ static const vector unsigned char b12_perm = {1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 0, 0, 0, 0, 0};
+ static const vector unsigned char b123_perm = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 18, 21, 24, 27, 30};
+ *b = vec_perm(vec_perm(v1, v2, b12_perm), v3, b123_perm);
+
+ static const vector unsigned char c12_perm = {2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 0, 0, 0, 0, 0, 0};
+ static const vector unsigned char c123_perm = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 19, 22, 25, 28, 31};
+ *c = vec_perm(vec_perm(v1, v2, c12_perm), v3, c123_perm);
+}
+
+void v_load_deinterleave_f32(float *ptr, vector float* a, vector float* b, vector float* c)
+{
+ vector float v1 = vec_xl( 0, ptr);
+ vector float v2 = vec_xl(16, ptr);
+ vector float v3 = vec_xl(32, ptr);
+
+ static const vector unsigned char flp = {0, 1, 2, 3, 12, 13, 14, 15, 16, 17, 18, 19, 28, 29, 30, 31};
+ *a = vec_perm(v1, vec_sld(v3, v2, 8), flp);
+
+ static const vector unsigned char flp2 = {28, 29, 30, 31, 0, 1, 2, 3, 12, 13, 14, 15, 16, 17, 18, 19};
+ *b = vec_perm(v2, vec_sld(v1, v3, 8), flp2);
+
+ *c = vec_perm(vec_sld(v2, v1, 8), v3, flp);
+}
+
+void v_store_interleave_f32(float *ptr, vector float a, vector float b, vector float c)
+{
+ vector float hbc = vec_mergeh(b, c);
+
+ static const vector unsigned char ahbc = {0, 1, 2, 3, 16, 17, 18, 19, 20, 21, 22, 23, 4, 5, 6, 7};
+ vec_xst(vec_perm(a, hbc, ahbc), 0, ptr);
+
+ vector float lab = vec_mergel(a, b);
+ vec_xst(vec_sld(lab, hbc, 8), 16, ptr);
+
+ static const vector unsigned char clab = {8, 9, 10, 11, 24, 25, 26, 27, 28, 29, 30, 31, 12, 13, 14, 15};
+ vec_xst(vec_perm(c, lab, clab), 32, ptr);
+}
+
+vector float v_cvt_f32(vector unsigned int a)
+{
+ return (vector float)vec_ctf(a, 0);
+}
+
+void acc_simd_(const unsigned char* src, float* dst, const unsigned char* mask, int len)
+{
+ int x = 0;
+ const int cVectorWidth = 16;
+
+ for ( ; x <= len - cVectorWidth; x += cVectorWidth)
+ {
+ vector unsigned char v_mask = vec_xl(0, mask + x);
+ v_mask = (vector unsigned char)vec_cmpeq(vec_splats((unsigned char)0), v_mask);
+ v_mask = (vector unsigned char)vec_nor(v_mask, v_mask);
+ vector unsigned char v_src0, v_src1, v_src2;
+ v_load_deinterleave_u8((unsigned char *)(src + (x * 3)), &v_src0, &v_src1, &v_src2);
+ v_src0 = v_src0 & v_mask;
+ v_src1 = v_src1 & v_mask;
+ v_src2 = v_src2 & v_mask;
+
+ /* expand 16 uchar to 4 vectors which contains 4 uint */
+ vector unsigned short v_src00, v_src01, v_src10, v_src11, v_src20, v_src21;
+ v_expand_u8(&v_src0, &v_src00, &v_src01);
+ v_expand_u8(&v_src1, &v_src10, &v_src11);
+ v_expand_u8(&v_src2, &v_src20, &v_src21);
+ vector unsigned int v_src000, v_src001, v_src010, v_src011;
+ vector unsigned int v_src100, v_src101, v_src110, v_src111;
+ vector unsigned int v_src200, v_src201, v_src210, v_src211;
+ v_expand_u16(&v_src00, &v_src000, &v_src001);
+ v_expand_u16(&v_src01, &v_src010, &v_src011);
+ v_expand_u16(&v_src10, &v_src100, &v_src101);
+ v_expand_u16(&v_src11, &v_src110, &v_src111);
+ v_expand_u16(&v_src20, &v_src200, &v_src201);
+ v_expand_u16(&v_src21, &v_src210, &v_src211);
+
+ vector float v_dst000, v_dst001, v_dst010, v_dst011;
+ vector float v_dst100, v_dst101, v_dst110, v_dst111;
+ vector float v_dst200, v_dst201, v_dst210, v_dst211;
+ v_load_deinterleave_f32(dst + (x * 3), &v_dst000, &v_dst100, &v_dst200);
+ v_load_deinterleave_f32(dst + ((x + 4) * 3), &v_dst001, &v_dst101, &v_dst201);
+ v_load_deinterleave_f32(dst + ((x + 8) * 3), &v_dst010, &v_dst110, &v_dst210);
+ v_load_deinterleave_f32(dst + ((x + 12) * 3), &v_dst011, &v_dst111, &v_dst211);
+
+ v_store_interleave_f32(dst + (x * 3), vec_add(v_dst000, v_cvt_f32(v_src000)), vec_add(v_dst100, v_cvt_f32(v_src100)), vec_add(v_dst200, v_cvt_f32(v_src200)));
+ v_store_interleave_f32(dst + ((x + 4) * 3), vec_add(v_dst001, v_cvt_f32(v_src001)), vec_add(v_dst101, v_cvt_f32(v_src101)), vec_add(v_dst201, v_cvt_f32(v_src201)));
+ v_store_interleave_f32(dst + ((x + 8) * 3), vec_add(v_dst010, v_cvt_f32(v_src010)), vec_add(v_dst110, v_cvt_f32(v_src110)), vec_add(v_dst210, v_cvt_f32(v_src210)));
+ v_store_interleave_f32(dst + ((x + 12) * 3), vec_add(v_dst011, v_cvt_f32(v_src011)), vec_add(v_dst111, v_cvt_f32(v_src111)), vec_add(v_dst211, v_cvt_f32(v_src211)));
+ }
+ return;
+}
+
+void acc_(const unsigned char* src, float* dst, const unsigned char* mask, int len)
+{
+ int x = 0;
+ src += (x * 3);
+ dst += (x * 3);
+ for( ; x < len; x++, src += 3, dst += 3 )
+ {
+ if( mask[x] ) /* if mask, R/G/B dst[] += src[] */
+ {
+ for( int k = 0; k < 3; k++ )
+ {
+ dst[k] += src[k];
+ }
+ }
+ }
+ return;
+}
+
+#define N 16
+
+int main(int argc, char *argv[])
+{
+ unsigned char __attribute__ ((aligned (16) )) mask[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1};
+ unsigned char __attribute__ ((aligned (16) )) src[3*N];
+ float __attribute__ ((aligned (16) )) dst[3*N];
+ float __attribute__ ((aligned (16) )) exp[3*N];
+
+ int i;
+
+ /* initialize src and dst */
+ for (i=0; i<3*N; i++) src[i] = (unsigned char)(i*3);
+ for (i=0; i<3*N; i++) {dst[i] = i * 1.0f; exp[i] = dst[i];}
+
+ acc_(src, exp, mask, N);
+ acc_simd_(src, dst, mask, N);
+
+ for (i=0; i<N; i++)
+ {
+ if ((dst[3*i] != exp[3*i]) || (dst[3*i+1] != exp[3*i+1]) || (dst[3*i+2] != exp[3*i+2]))
+ __builtin_abort ();
+ }
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/riscv/riscv.exp b/gcc/testsuite/gcc.target/riscv/riscv.exp
new file mode 100644
index 00000000000..6a141964d22
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/riscv.exp
@@ -0,0 +1,41 @@
+# Copyright (C) 2017-2018 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 a RISC-V target.
+if ![istarget riscv*-*-*] 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/*.\[cS\]]] \
+ "" $DEFAULT_CFLAGS
+
+# All done.
+dg-finish
diff --git a/gcc/testsuite/gcc.target/riscv/save-restore-1.c b/gcc/testsuite/gcc.target/riscv/save-restore-1.c
new file mode 100644
index 00000000000..35b08b96760
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/save-restore-1.c
@@ -0,0 +1,25 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -msave-restore -fomit-frame-pointer" } */
+
+#include <stdlib.h>
+
+__attribute__((noinline)) int g(void) { return 42; }
+
+__attribute__((noinline)) int f(void) {
+ asm volatile ("li s0, 0x87654321" ::: "s0");
+ return g();
+}
+
+int main(void) {
+ asm volatile ("li s0, 0x12345678" ::: "s0");
+
+ f();
+
+ long s0;
+ asm volatile ("mv %0, s0" : "=r"(s0));
+
+ if (s0 == 0x12345678)
+ exit (0);
+ else
+ abort();
+}
diff --git a/gcc/testsuite/gfortran.dg/allocate_with_typespec_7.f90 b/gcc/testsuite/gfortran.dg/allocate_with_typespec_7.f90
new file mode 100644
index 00000000000..feb6c8c16cf
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/allocate_with_typespec_7.f90
@@ -0,0 +1,14 @@
+! { dg-do compile }
+! PR Fortran/83093
+! Contributed by Gerhard Steinmetz <gscfq at t-online dot de>
+program p
+ integer, parameter :: n(2) = [1,2]
+ real :: x = 2
+ character(:), allocatable :: z, zz, zzz
+ character(:), allocatable :: y, yy
+ allocate (character(a) :: z) ! { dg-error "Scalar INTEGER expression" }
+ allocate (character(x) :: zz) ! { dg-error "Scalar INTEGER expression" }
+ allocate (character((1.0)) :: z) ! { dg-error "Scalar INTEGER expression" }
+ allocate (character(y) :: y) ! { dg-error "Scalar INTEGER expression" }
+ allocate (character(n(1:2)) :: y)! { dg-error "Scalar INTEGER expression" }
+end
diff --git a/gcc/testsuite/gfortran.dg/array_constructor_type_22.f03 b/gcc/testsuite/gfortran.dg/array_constructor_type_22.f03
new file mode 100644
index 00000000000..75130df7ec1
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/array_constructor_type_22.f03
@@ -0,0 +1,29 @@
+! { dg-do compile }
+! PR Fortran/83548
+program foo
+
+ implicit none
+
+ logical, parameter :: t = .true., f = .false.
+ logical, parameter :: a1(2) = [t, f]
+ logical(kind=1), parameter :: a2(2) = [logical(kind=1) :: t, f]
+ logical(kind=4), parameter :: a3(2) = [logical(kind=4) :: t, f]
+ logical(kind=1), parameter :: a4(2) = [logical(t, 1), logical(f, 1)]
+ logical(kind=4), parameter :: a5(2) = [logical(t, 4), logical(f, 4)]
+ logical(kind=1) b(2)
+ logical(kind=4) c(2)
+
+ real, parameter :: x = 1, y = 2
+ real, parameter :: r1(2) = [x, y]
+ real(kind=4), parameter :: r2(2) = [real(kind=4) :: x, y]
+ real(kind=8), parameter :: r3(2) = [real(kind=8) :: x, y]
+ real(kind=4), parameter :: r4(2) = [real(x, 4), real(y, 4)]
+ real(kind=8), parameter :: r5(2) = [real(x, 8), real(y, 8)]
+ real(kind=4) p(2)
+ real(kind=8) q(2)
+
+ p = [real(kind=4) :: x, y]
+ q = [real(kind=8) :: x, y]
+ if (any(p .ne. r2)) call abort
+ if (any(q .ne. r3)) call aborts
+end program foo
diff --git a/gcc/testsuite/gfortran.dg/class_result_5.f90 b/gcc/testsuite/gfortran.dg/class_result_5.f90
new file mode 100644
index 00000000000..c557ed37180
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/class_result_5.f90
@@ -0,0 +1,38 @@
+! { dg-do run }
+!
+! Test the fix for PR79072. The original problem was that an ICE
+! would occur in the select type construct. On fixing that, it was
+! found that the string length was not being transferred in the
+! pointer assignment in the main program.
+!
+! Contributed by Neil Carlson <neil.n.carlson@gmail.com>
+!
+function foo(string)
+ class(*), pointer :: foo
+ character(3), target :: string
+ foo => string
+ select type (foo)
+ type is (character(*))
+ if (foo .ne. 'foo') call abort
+ foo = 'bar'
+ end select
+end function
+
+ interface
+ function foo(string)
+ class(*), pointer :: foo
+ character(3), target :: string
+ end function
+ end interface
+
+ class(*), pointer :: res
+ character(3), target :: string = 'foo'
+
+ res => foo (string)
+
+ select type (res)
+ type is (character(*))
+ if (res .ne. 'bar') call abort
+ end select
+ if (string .ne. 'bar') call abort
+end
diff --git a/gcc/testsuite/gfortran.dg/class_result_6.f90 b/gcc/testsuite/gfortran.dg/class_result_6.f90
new file mode 100644
index 00000000000..44e17a22025
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/class_result_6.f90
@@ -0,0 +1,24 @@
+! { dg-do run }
+!
+! Test the fix for PR79072 comment #12. A description of the problem
+! is to be found in class_result_5.f90.
+!
+! Contributed by Neil Carlson <neil.n.carlson@gmail.com>
+!
+ character(3), target :: a = 'foo'
+ class(*), pointer :: b
+ b => ptr()
+ select type (b)
+ type is (character(*))
+ if (a .ne. "bar") call abort
+ end select
+contains
+ function ptr()
+ class(*), pointer :: ptr
+ ptr => a
+ select type (ptr)
+ type is (character(*))
+ ptr = "bar"
+ end select
+ end function
+end
diff --git a/gcc/testsuite/gfortran.dg/deferred_character_18.f90 b/gcc/testsuite/gfortran.dg/deferred_character_18.f90
new file mode 100644
index 00000000000..1b1457fa293
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/deferred_character_18.f90
@@ -0,0 +1,29 @@
+! { dg-do compile }
+! PR Fortran/82367
+! Contributed by Walter Spector <w6ws at earthlink dot net>
+module cls_allocmod
+ implicit none
+
+contains
+
+ subroutine cls_alloc (n, str)
+ integer, intent(in) :: n
+ character(*), allocatable, intent(out) :: str
+! Note: Star ^ should have been a colon (:)
+
+ allocate (character(n)::str)
+
+ end subroutine
+
+end module
+
+program cls
+ use cls_allocmod
+ implicit none
+
+ character(:), allocatable :: s
+
+ call cls_alloc(42, s) ! { dg-error "allocatable or pointer dummy argument" }
+ print *, 'string len =', len(s)
+
+end program
diff --git a/gcc/testsuite/gfortran.dg/fmt_e.f90 b/gcc/testsuite/gfortran.dg/fmt_e.f90
new file mode 100644
index 00000000000..a85506b0929
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/fmt_e.f90
@@ -0,0 +1,10 @@
+! { dg-do run }
+! PR83811 fortran 'e' format broken for single digit exponents
+program test
+ character(25) :: s
+ write(s, '(1pe5.0e1)') 1.e-4
+ if (s.ne."1.E-4") call abort
+ write(s, '(e5.1e1)') 1.e12
+ if (s.ne."*****") call abort
+end
+
diff --git a/gcc/testsuite/gfortran.dg/interface_40.f90 b/gcc/testsuite/gfortran.dg/interface_40.f90
new file mode 100644
index 00000000000..085c6b30f39
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/interface_40.f90
@@ -0,0 +1,8 @@
+! { dg-do compile }
+! PR fortran/78814
+! Code contributed by Gerhard Steinmetz
+program p
+ class(*) :: x ! { dg-error " must be dummy, allocatable or pointer" }
+ print *, f(x)
+end
+
diff --git a/gcc/testsuite/gfortran.dg/internal_readwrite_4.f90 b/gcc/testsuite/gfortran.dg/internal_readwrite_4.f90
new file mode 100644
index 00000000000..cd2e684a456
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/internal_readwrite_4.f90
@@ -0,0 +1,30 @@
+! { dg-do run }
+! PR 83436 - this used to cause an error.
+! Original test case by Daan van Vugt.
+module mod_random_seed
+ implicit none
+contains
+ !> Read an int from /dev/urandom
+ subroutine read_urandom_int(seed, ierr)
+ implicit none
+ integer, intent(out) :: seed
+ integer, intent(out) :: ierr
+ integer :: un
+ character(len=80) :: restart_file
+ write(restart_file,'(A,A)') 'jorek', '_restart.h5'
+
+ open(newunit=un, file="/dev/urandom", access="stream", &
+ form="unformatted", action="read", status="old", iostat=ierr)
+ if (ierr == 0) then
+ read(un) seed
+ close(un)
+ end if
+ end subroutine read_urandom_int
+end module mod_random_seed
+
+program test_random_seed
+ use mod_random_seed
+ implicit none
+ integer :: seed, ierr
+ call read_urandom_int(seed, ierr)
+end program test_random_seed
diff --git a/gcc/testsuite/gfortran.dg/namelist_95.f90 b/gcc/testsuite/gfortran.dg/namelist_95.f90
new file mode 100644
index 00000000000..59566480865
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/namelist_95.f90
@@ -0,0 +1,23 @@
+! { dg-do run }
+! PR83191 Writing a namelist with repeated complex
+
+program test
+
+implicit none
+
+integer, parameter :: UNIT = 1
+character(len=8), parameter :: FILE = "namelist"
+
+complex, dimension(3) :: a = (/ (0.0, 0.0), (0.0, 0.0), (3.0, 4.0) /)
+
+namelist /complex_namelist/ a
+
+open(UNIT, file=FILE)
+write(UNIT, nml=complex_namelist)
+close(UNIT)
+
+open(UNIT, file=FILE)
+read(UNIT, nml=complex_namelist)
+close(UNIT, status="delete")
+if (any(a.ne.(/ (0.0, 0.0), (0.0, 0.0), (3.0, 4.0) /))) call abort
+end program test
diff --git a/gcc/testsuite/gfortran.dg/pr78686.f90 b/gcc/testsuite/gfortran.dg/pr78686.f90
new file mode 100644
index 00000000000..b17fe4192c8
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr78686.f90
@@ -0,0 +1,11 @@
+! { dg-do compile }
+!
+! Test the fix for PR78686, which used to ICE.
+!
+! Contributed by Gerhard Steinmetz <gerhard.steinmetz.fortran@t-online.de>
+!
+program p
+ type t
+ character :: c(1) = [t()] ! { dg-error "is being used before it is defined" }
+ end type
+end
diff --git a/gcc/testsuite/gfortran.dg/pr82253.f90 b/gcc/testsuite/gfortran.dg/pr82253.f90
new file mode 100644
index 00000000000..4dc681012a0
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr82253.f90
@@ -0,0 +1,40 @@
+! PR middle-end/82253
+! { dg-do compile { target fortran_real_16 } }
+! { dg-options "-Og" }
+
+module pr82253
+ implicit none
+ private
+ public :: static_type
+ type, public :: T
+ procedure(), nopass, pointer :: testProc => null()
+ end type
+ type, public :: S
+ complex(kind=16), pointer :: ptr
+ end type
+ type(T), target :: type_complex32
+ interface static_type
+ module procedure foo
+ end interface
+ interface
+ subroutine bar (testProc)
+ procedure(), optional :: testProc
+ end subroutine
+ end interface
+ contains
+ function foo (self) result(res)
+ complex(kind=16) :: self
+ type(T), pointer :: res
+ call bar (testProc = baz)
+ end function
+ subroutine baz (buffer, status)
+ character(len=*) :: buffer
+ integer(kind=4) :: status
+ complex(kind=16), target :: obj
+ type(S) :: self
+ integer(kind=1), parameter :: zero(storage_size(obj)/8) = 0
+ obj = transfer (zero, obj)
+ self%ptr => obj
+ write (buffer, *, iostat=status) self%ptr, '#'
+ end subroutine
+end module pr82253
diff --git a/gcc/testsuite/gfortran.dg/simplify_cshift_1.f90 b/gcc/testsuite/gfortran.dg/simplify_cshift_1.f90
index dbe67f4c8e9..3eb5adb49c8 100644
--- a/gcc/testsuite/gfortran.dg/simplify_cshift_1.f90
+++ b/gcc/testsuite/gfortran.dg/simplify_cshift_1.f90
@@ -23,12 +23,12 @@ program foo
v = cshift(c, 2)
if (any(b /= v)) call abort
- ! Special cases shift = 0, size(a), 1-size(a)
+ ! Special cases shift = 0, size(a), size(a)
b = cshift([1, 2, 3, 4, 5], 0)
if (any(b /= a)) call abort
b = cshift([1, 2, 3, 4, 5], size(a))
if (any(b /= a)) call abort
- b = cshift([1, 2, 3, 4, 5], 1-size(a))
+ b = cshift([1, 2, 3, 4, 5], -size(a))
if (any(b /= a)) call abort
! simplification of array arg.
diff --git a/gcc/testsuite/gfortran.dg/transfer_simplify_11.f90 b/gcc/testsuite/gfortran.dg/transfer_simplify_11.f90
new file mode 100644
index 00000000000..ce7a4ad5e56
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/transfer_simplify_11.f90
@@ -0,0 +1,8 @@
+! { dg-do run }
+! PR Fortran/82841
+!
+ integer, parameter :: N = 2
+ character(len=1) :: chr(N)
+ chr = transfer(repeat("x",ncopies=N),[character(len=1) ::], N)
+ if (chr(1) /= 'x' .and. chr(2) /= 'x') call abort
+end
diff --git a/gcc/testsuite/gnat.dg/alignment13.adb b/gcc/testsuite/gnat.dg/alignment13.adb
new file mode 100644
index 00000000000..dd0b25425f0
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/alignment13.adb
@@ -0,0 +1,21 @@
+-- { dg-do run }
+-- { dg-options "-gnatws" }
+
+procedure Alignment13 is
+
+ type Rec is record
+ I1 : aliased Short_Integer;
+ I2 : Integer;
+ end record;
+
+ for Rec use record
+ I1 at 0 range 0 .. 15;
+ end record;
+
+ R : Rec;
+
+begin
+ if R.I2'Bit_Position /= 32 then
+ raise Program_Error;
+ end if;
+end;
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index bac9b5383f6..677230c1406 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -1136,8 +1136,8 @@ proc check_effective_target_pie { } {
return 1;
}
if { [istarget *-*-solaris2.1\[1-9\]*] } {
- # Full PIE support was added in Solaris 11.x and Solaris 12, but gcc
- # errors out if missing, so check for that.
+ # Full PIE support was added in Solaris 11.3, but gcc errors out
+ # if missing, so check for that.
return [check_no_compiler_messages pie executable {
int main (void) { return 0; }
} "-pie -fpie"]