aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8/gcc/testsuite
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2013-08-05 15:18:29 -0700
committerBen Cheng <bccheng@google.com>2013-08-05 16:03:48 -0700
commit32fce3edda831e36ee484406c39dffbe0230f257 (patch)
tree733b1b5398304b260a4ee3d5d9b17da5038c5486 /gcc-4.8/gcc/testsuite
parente85b9ca2afe8edbb9fa99c6ce2cc4e52dce18c21 (diff)
downloadtoolchain_gcc-32fce3edda831e36ee484406c39dffbe0230f257.tar.gz
toolchain_gcc-32fce3edda831e36ee484406c39dffbe0230f257.tar.bz2
toolchain_gcc-32fce3edda831e36ee484406c39dffbe0230f257.zip
[4.8] Merge GCC 4.8.1
Change-Id: Ic8a60b7563f5172440fd40788605163a0cca6e30
Diffstat (limited to 'gcc-4.8/gcc/testsuite')
-rw-r--r--gcc-4.8/gcc/testsuite/ChangeLog668
-rw-r--r--gcc-4.8/gcc/testsuite/ChangeLog-201260
-rw-r--r--gcc-4.8/gcc/testsuite/c-c++-common/Wsequence-point-1.c17
-rw-r--r--gcc-4.8/gcc/testsuite/c-c++-common/gomp/pr56883.c57
-rw-r--r--gcc-4.8/gcc/testsuite/c-c++-common/pr56607.c29
-rw-r--r--gcc-4.8/gcc/testsuite/c-c++-common/vector-scalar-2.c14
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/alias-decl-34.C23
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/alias-decl-35.C9
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/auto38.C8
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr8.C54
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C9
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/constexpr-reinterpret1.C39
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype-call1.C32
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype-call3.C132
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype49.C10
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype52.C18
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype53.C11
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/defaulted42.C10
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/enum24.C57
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/enum25.C18
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/gen-attrs-4.C10
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/gen-attrs-54.C14
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/initlist68.C20
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/initlist69.C29
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/initlist70.C27
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv8.C15
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg4.C8
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh3.C14
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable2.C23
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi3.C9
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-sfinae1.C55
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this13.C20
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this14.C49
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this15.C12
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this16.C28
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this9.C19
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/noexcept03.C2
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/range-for23.C8
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/range-for24.C15
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/range-for25.C30
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual-mangle1.C37
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual1.C30
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual10.C13
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual11.C10
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual12.C22
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual13.C29
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual2.C75
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual3.C29
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual4.C14
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual5.C13
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual6.C15
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual7.C19
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual8.C13
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual9.C14
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/sfinae44.C26
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/sfinae45.C35
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/trailing8.C25
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/trailing9.C12
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/traits1.C133
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/variadic-explicit2.C14
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/cpp0x/variadic142.C63
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/debug/pr56819.C27
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/ext/desig5.C7
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/ext/desig6.C17
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/ipa/devirt-c-7.C1
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-1.C2
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-2.C2
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-3.C2
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-4.C2
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-5.C2
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-7.C2
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-8.C2
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-9.C2
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/opt/pr56999.C188
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/parse/ref-qual1.C29
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/template/array26.C40
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/template/arrow2.C12
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/template/arrow3.C38
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/template/arrow4.C19
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/template/crash106.C2
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/template/crash112.C4
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/template/crash84.C7
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/template/dependent-args1.C2
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/template/overload13.C16
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/template/sfinae-dr657.C22
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/torture/pr56694.C31
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/torture/pr56768.C41
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/torture/pr56817.C38
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/torture/pr56837.C20
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/warn/Wdiv-by-zero-2.C34
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/warn/anonymous-namespace-4.C12
-rw-r--r--gcc-4.8/gcc/testsuite/g++.dg/warn/anonymous-namespace-4.h14
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.c-torture/compile/pr56745.c15
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.c-torture/compile/pr56984.c9
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp3
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr33992.c2
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr56837.c21
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr56866.c45
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr56899.c47
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr56962.c30
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57130.c21
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57131.c19
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57281.c25
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57321.c24
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57344-1.c32
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57344-2.c32
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57344-3.c28
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57344-4.c28
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/autopar/pr57103.c19
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/autopar/pr57185.c29
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/const-1.c2
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/ipa/pr56988.c38
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/ipa/pr57347.c27
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/ipa/pure-const-1.c2
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/noreturn-8.c2
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/pr48186.c5
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/pr55702.c9
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/pr56847.c12
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/pr56890-1.c15
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/pr56890-2.c19
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/pr56990.c10
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/pr56992.c18
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/pr57104.c12
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/pr57149.c50
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/pr57184.c13
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/pr57300.c21
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/strlenopt-23.c15
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/torture/builtin-logb-1.c32
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/torture/pr55964-2.c21
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/torture/pr56407.c48
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/torture/pr56501.c27
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57083.c15
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57214.c25
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57251.c12
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57303.c33
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57330.c11
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57341.c22
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c2
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c2
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/reassoc-27.c11
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/stdarg-6.c1
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/uninit-pred-5_a.c3
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/uninit-pred-5_b.c3
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/vect/pr56918.c31
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.dg/vect/pr56920.c21
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/asm-adder-clobber-lr.c23
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/asm-adder-no-clobber-lr.c23
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/movk.c31
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-1.c15
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-2.c15
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-3.c15
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-4.c16
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-5.c15
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-6.c15
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-7.c15
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-8.c16
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-d.c2
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-f.c2
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-d.c3
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-f.c3
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-d.c3
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-f.c3
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm.x14
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/arm/neon-vcond-gt.c17
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/arm/neon-vcond-ltgt.c18
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/arm/neon-vcond-unordered.c19
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/arm/pr56732-1.c20
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c2
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-2.c2
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/i386/mmx-1.c1
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/i386/pr44578.c31
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/i386/pr56560.c19
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/i386/pr56866.c16
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/i386/pr56903.c18
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/i386/pr57003.c54
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/i386/pr57018.c31
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/i386/pr57046.c77
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/i386/pr57091.c8
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/i386/pr57097.c29
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/i386/pr57098.c10
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/i386/pr57106.c15
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/i386/pr57264.c18
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/powerpc/pr56605.c13
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/powerpc/pr57150.c23
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/sh/pr57108.c19
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_40.f902
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_44.f9012
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_45.f9015
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_46.f9015
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_47.f9024
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/do_1.f903
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/eof_5.f9021
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/fmt_cache_3.f9080
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/namelist_77.f9049
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/namelist_78.f9034
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/namelist_79.f9043
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/namelist_80.f9027
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/namelist_81.f9043
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/proc_ptr_41.f9037
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/proc_ptr_42.f9036
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/select_type_33.f0343
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/size_kind_2.f9017
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/size_kind_3.f9011
-rw-r--r--gcc-4.8/gcc/testsuite/gfortran.dg/transfer_check_4.f9044
-rw-r--r--gcc-4.8/gcc/testsuite/gnat.dg/specs/array3.ads18
-rw-r--r--gcc-4.8/gcc/testsuite/gnat.dg/specs/last_bit.ads19
206 files changed, 5168 insertions, 93 deletions
diff --git a/gcc-4.8/gcc/testsuite/ChangeLog b/gcc-4.8/gcc/testsuite/ChangeLog
index 7054de647..cc15c702d 100644
--- a/gcc-4.8/gcc/testsuite/ChangeLog
+++ b/gcc-4.8/gcc/testsuite/ChangeLog
@@ -1,3 +1,652 @@
+2013-05-31 Release Manager
+
+ * GCC 4.8.1 released.
+
+2013-05-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/specs/last_bit.ads: New test.
+
+2013-05-24 Greta Yorsh <Greta.Yorsh@arm.com>
+
+ Backport from mainline
+ 2013-05-02 Greta Yorsh <Greta.Yorsh@arm.com>
+
+ PR target/56732
+ * gcc.target/arm/pr56732-1.c: New test.
+
+2013-05-24 Alexander Ivchenko <alexander.ivchenko@intel.com>
+
+ PR tree-ssa/57385
+ * gcc.dg/tree-ssa/pr57385.c: New test.
+
+2013-05-23 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/57347
+ * gcc.dg/ipa/pr57347.c: New test.
+
+2013-05-23 Richard Biener <rguenther@suse.de>
+
+ PR rtl-optimization/57341
+ * gcc.dg/torture/pr57341.c: New testcase.
+
+2013-05-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/57344
+ * gcc.c-torture/execute/pr57344-1.c: New test.
+ * gcc.c-torture/execute/pr57344-2.c: New test.
+ * gcc.c-torture/execute/pr57344-3.c: New test.
+ * gcc.c-torture/execute/pr57344-4.c: New test.
+
+2013-05-22 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2013-05-21 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/57330
+ * gcc.dg/torture/pr57330.c: New testcase.
+
+ 2013-05-21 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/57303
+ * gcc.dg/torture/pr57303.c: New testcase.
+
+2013-05-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/57321
+ * gcc.c-torture/execute/pr57321.c: New test.
+
+2013-05-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/57281
+ PR rtl-optimization/57300
+ * gcc.dg/pr57300.c: New test.
+ * gcc.c-torture/execute/pr57281.c: New test.
+
+2013-05-16 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/56782 - Regression with empty pack expansions
+ * g++.dg/cpp0x/variadic142.C: New test file.
+
+2013-05-14 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/57274
+ * c-c++-common/Wsequence-point-1.c: New test.
+
+ PR middle-end/57251
+ * gcc.dg/torture/pr57251.c: New test.
+
+2013-05-13 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/57264
+ * gcc.target/i386/pr57264.c: New test.
+
+2013-05-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/57230
+ * gcc.dg/strlenopt-23.c: New test.
+
+2013-05-10 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/57214
+ * gcc.dg/torture/pr57214.c: New testcase.
+
+2013-05-09 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/56988
+ * gcc.dg/ipa/pr56988.c: New test.
+
+2013-05-08 Marc Glisse <marc.glisse@inria.fr>
+
+ * c-c++-common/vector-scalar-2.c: New testcase.
+
+2013-05-07 Tobias Burnus <burnus@net-b.de>
+
+ Backport from mainline
+ 2013-05-02 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/57142
+ * gfortran.dg/size_kind_2.f90: New.
+ * gfortran.dg/size_kind_3.f90: New.
+
+2013-05-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/57149
+ * gcc.dg/pr57149.c: New test.
+
+ PR debug/57184
+ * gcc.dg/pr57184.c: New test.
+
+2013-05-07 Richard Biener <rguenther@suse.de>
+
+ Backport from mainline
+ 2013-05-06 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/57185
+ * gcc.dg/autopar/pr57185.c: New testcase.
+
+ 2013-04-19 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/57000
+ * gcc.dg/tree-ssa/reassoc-27.c: New testcase.
+
+2013-05-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/specs/array3.ads: New test.
+
+2013-05-06 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ Backport from trunk
+ 2013-05-03 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/57150
+ * gcc.target/powerpc/pr57150.c: New file.
+
+2013-05-06 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2013-05-06 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/57106
+ * gcc.target/i386/pr57106.c: New test.
+
+2013-05-06 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/57183
+ * g++.dg/cpp0x/auto38.C: New.
+
+2013-05-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56205
+ * gcc.dg/tree-ssa/stdarg-6.c: Add cleanup-tree-dump "stdarg".
+
+2013-05-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/57130
+ * gcc.c-torture/execute/pr57130.c: New test.
+
+2013-05-03 Marek Polacek <polacek@redhat.com>
+
+ Backport from mainline
+ 2013-04-25 Marek Polacek <polacek@redhat.com>
+
+ PR tree-optimization/57066
+ * gcc.dg/torture/builtin-logb-1.c: Adjust testcase.
+
+2013-05-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/57131
+ * gcc.c-torture/execute/pr57131.c: New test.
+
+2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
+
+ Backport from mainline
+ PR target/57091
+ * gcc.target/i386/pr57091.c: New test.
+
+2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
+
+ Backport from mainline
+ 2013-04-29 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/57097
+ * gcc.target/i386/pr57097.c: New test.
+
+2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
+
+ Backport from mainline
+ 2013-04-24 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimizations/57046
+ * gcc.target/i386/pr57046.c: New test.
+
+2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
+
+ Backport from mainline
+ 2013-04-22 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/57018
+ * gcc.target/i386/pr57018.c: New test.
+
+2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
+
+ Backport from mainline
+ 2013-04-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/56999
+ * g++.dg/opt/pr56999.C: New test.
+
+2013-05-02 Vladimir Makarov <vmakarov@redhat.com>
+
+ Backport from mainline
+ 2013-04-19 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/56847
+ * gcc.dg/pr56847.c: New test.
+
+2013-05-02 Ian Bolton <ian.bolton@arm.com>
+
+ Backport from mainline (fix to botched commit)
+ 2013-04-04 Tejas Belagod <tejas.belagod@arm.com>
+
+ * gcc.target/aarch64/inc/asm-adder-clobber-lr.c: Remove duplication.
+ * gcc.target/aarch64/inc/asm-adder-no-clobber-lr.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-1.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-2.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-3.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-4.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-5.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-6.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-7.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-8.c: Likewise.
+
+ Backport from mainline
+ 2013-03-28 Ian Bolton <ian.bolton@arm.com>
+
+ * gcc.target/aarch64/inc/asm-adder-clobber-lr.c: New test.
+ * gcc.target/aarch64/inc/asm-adder-no-clobber-lr.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-1.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-2.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-3.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-4.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-5.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-6.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-7.c: Likewise.
+ * gcc.target/aarch64/test-framepointer-8.c: Likewise.
+
+2013-05-01 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/57092
+ * g++.dg/cpp0x/decltype53.C: New.
+
+2013-04-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/57104
+ * gcc.dg/pr57104.c: New test.
+
+2013-04-30 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2013-04-29 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/44578
+ * gcc.target/i386/pr44578.c: New test.
+
+ Backport from mainline
+ 2013-04-29 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/57098
+ * gcc.target/i386/pr57098.c: New test.
+
+2013-04-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56450
+ * g++.dg/cpp0x/decltype52.C: New.
+
+2013-04-29 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/57103
+ * gcc.dg/autopar/pr57103.c: New testcase.
+
+2013-04-29 Christian Bruel <christian.bruel@st.com>
+
+ PR target/57108
+ * gcc.target/sh/pr57108.c: New test.
+
+2013-04-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/57083
+ * gcc.dg/torture/pr57083.c: New test.
+
+2013-04-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ Backport from trunk:
+
+ PR fortran/51825
+ * gfortran.dg/namelist_77.f90: New test.
+ * gfortran.dg/namelist_78.f90: New test.
+
+2013-04-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/56786
+ * gfortran.dg/namelist_81.f90: New test.
+
+2013-04-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ Backport from trunk:
+
+ PR fortran/52512
+ * gfortran.dg/namelist_79.f90: New test.
+
+2013-04-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/56866
+ * gcc.c-torture/execute/pr56866.c: New test.
+ * gcc.target/i386/pr56866.c: New test.
+
+2013-04-26 Janus Weil <janus@gcc.gnu.org>
+
+ Backports from trunk:
+
+ PR fortran/56968
+ * gfortran.dg/proc_ptr_41.f90: New.
+
+ PR fortran/56814
+ * gfortran.dg/proc_ptr_42.f90: New.
+
+ PR fortran/53685
+ PR fortran/57022
+ * gfortran.dg/transfer_check_4.f90: New.
+
+2013-04-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/57003
+ * gcc.target/i386/pr57003.c: New test.
+
+2013-04-25 Ian Bolton <ian.bolton@arm.com>
+
+ Backported from mainline.
+ 2013-03-22 Ian Bolton <ian.bolton@arm.com>
+
+ * gcc.target/aarch64/movk.c: New test.
+
+2013-04-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56970
+ * g++.dg/cpp0x/sfinae45.C: New.
+
+2013-04-23 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ Backported from mainline.
+ PR rtl-optimization/56605
+ * gcc.target/powerpc/pr56605.c: New.
+
+2013-04-22 Marek Polacek <polacek@redhat.com>
+
+ Backport from mainline
+ 2013-04-22 Marek Polacek <polacek@redhat.com>
+
+ PR sanitizer/56990
+ * gcc.dg/pr56990.c: New test.
+
+2013-04-22 Thomas Koenig <tkoenig@gcc.gnu.org>
+ Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/56872
+ * gfortran.dg/array_constructor_45.f90: New test.
+ * gfortran.dg/array_constructor_46.f90: New test.
+ * gfortran.dg/array_constructor_47.f90: New test.
+ * gfortran.dg/array_constructor_40.f90: Adjust number of
+ while loops.
+
+2013-04-18 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/56816
+ * gfortran.dg/select_type_33.f03: New test.
+
+2013-04-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56984
+ * gcc.c-torture/compile/pr56984.c: New test.
+
+ PR rtl-optimization/56992
+ * gcc.dg/pr56992.c: New test.
+
+2013-04-16 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2013-04-16 Uros Bizjak <ubizjak@gmail.com>
+
+ * g++.dg/ipa/devirt-c-7.C: Require nonpic effective target.
+ * gcc.c-torture/execute/pr33992.x: Remove.
+ * gcc.c-torture/execute/pr33992.c (foo): Declare as static.
+ * gcc.dg/uninit-pred-5_a.c (foo): Ditto.
+ * gcc.dg/uninit-pred-5_b.c (foo): Ditto.
+
+ Backport from mainline
+ 2013-03-27 Alexander Ivchenko <alexander.ivchenko@intel.com>
+
+ * g++.dg/ipa/ivinline-1.C: Add target nonpic.
+ * g++.dg/ipa/ivinline-2.C: Likewise.
+ * g++.dg/ipa/ivinline-3.C: Likewise.
+ * g++.dg/ipa/ivinline-4.C: Likewise.
+ * g++.dg/ipa/ivinline-5.C: Likewise.
+ * g++.dg/ipa/ivinline-7.C: Likewise.
+ * g++.dg/ipa/ivinline-8.C: Likewise.
+ * g++.dg/ipa/ivinline-9.C: Likewise.
+ * g++.dg/cpp0x/noexcept03.C: Likewise.
+ * gcc.dg/const-1.c: Likewise.
+ * gcc.dg/ipa/pure-const-1.c: Likewise.
+ * gcc.dg/noreturn-8.c: Likewise.
+ * gcc.target/i386/mmx-1.c: Likewise.
+ * gcc.dg/tree-ssa/ipa-split-5.c: Likewise.
+ * gcc.dg/tree-ssa/loadpre6.c: Likewise.
+ * gcc.c-torture/execute/pr33992.x: New file.
+
+2013-04-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56962
+ * gcc.c-torture/execute/pr56962.c: New test.
+
+2013-04-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/pr56890-1.c: New test.
+ * gcc.dg/pr56890-2.c: Likewise.
+
+2013-04-12 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR target/56903
+ * gcc.target/i386/pr56903.c: New test.
+
+2013-04-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56918
+ PR tree-optimization/56920
+ * gcc.dg/vect/pr56918.c: New test.
+ * gcc.dg/vect/pr56920.c: New test.
+
+2013-04-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/56895
+ * g++.dg/template/arrow4.C: New test.
+
+2013-04-11 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56913
+ * g++.dg/cpp0x/sfinae44.C: New.
+
+2013-04-11 James Greenhalgh <james.greenhalgh@arm.com>
+
+ Backported from mainline.
+ 2013-04-11 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * gcc.target/aarch64/vect-fcm.x: Add check for zero forms of
+ inverse operands.
+ * gcc.target/aarch64/vect-fcm-eq-d.c: Check that new zero form
+ loop is vectorized.
+ * gcc.target/aarch64/vect-fcm-eq-f.c: Likewise.
+ * gcc.target/aarch64/vect-fcm-ge-d.c: Check that new zero form
+ loop is vectorized and that the correct instruction is generated.
+ * gcc.target/aarch64/vect-fcm-ge-f.c: Likewise.
+ * gcc.target/aarch64/vect-fcm-gt-d.c: Likewise.
+ * gcc.target/aarch64/vect-fcm-gt-f.c: Likewise.
+
+2013-04-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/56899
+ * gcc.c-torture/execute/pr56899.c: New test.
+
+2013-04-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/56895
+ * g++.dg/template/arrow3.C: New test.
+
+ Backported from mainline
+ 2013-04-09 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/56883
+ * c-c++-common/gomp/pr56883.c: New test.
+
+2013-04-08 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/56782
+ Backport from trunk.
+ * gfortran.dg/array_constructor_44.f90: New test.
+
+2013-04-08 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.c-torture/execute/pr56837.c: New test.
+
+2013-04-04 Marek Polacek <polacek@redhat.com>
+
+ Backport from mainline:
+ 2013-04-04 Marek Polacek <polacek@redhat.com>
+
+ PR tree-optimization/48186
+ * gcc.dg/pr48186.c: New test.
+
+2013-04-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ Backport from mainline:
+ 2013-03-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/56720
+ * gcc.target/arm/neon-vcond-gt.c: New test.
+ * gcc.target/arm/neon-vcond-ltgt.c: Likewise.
+ * gcc.target/arm/neon-vcond-unordered.c: Likewise.
+
+2013-04-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56837
+ * g++.dg/torture/pr56837.C: New testcase.
+
+2013-04-03 Marek Polacek <polacek@redhat.com>
+
+ Backport from mainline:
+ 2013-04-03 Marek Polacek <polacek@redhat.com>
+
+ PR sanitizer/55702
+ * gcc.dg/pr55702.c: New test.
+
+2013-04-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/56819
+ * g++.dg/debug/pr56819.C: New test.
+
+2013-04-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56817
+ * g++.dg/torture/pr56817.C: New testcase.
+
+2013-04-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/55964
+ * gcc.dg/torture/pr55964-2.c: New testcase.
+
+2013-04-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56501
+ * gcc.dg/torture/pr56501.c: New testcase.
+
+2013-04-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/56407
+ * gcc.dg/torture/pr56407.c: New testcase.
+
+2013-04-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/56745
+ * gcc.c-torture/compile/pr56745.c: New test.
+
+2013-04-02 Tobias Burnus <burnus@net-b.de>
+
+ Backport from mainline:
+ 2013-03-28 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/56735
+ * gfortran.dg/namelist_80.f90: New.
+
+2013-04-02 Tobias Burnus <burnus@net-b.de>
+
+ Backport from mainline:
+ 2013-03-29 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/56737
+ * testsuite/gfortran.dg/fmt_cache_3.f90: New.
+
+2013-04-02 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/56768
+ * g++.dg/torture/pr56768.C: New testcase.
+
+2013-04-01 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/55951
+ * g++.dg/ext/desig5.C: New.
+
+2013-03-29 Kirill Yukhin <kirill.yukhin@intel.com>
+
+ * gcc.target/i386/avx2-vbroadcastsi128-1.c: Fix intrinsic name.
+ * gcc.target/i386/avx2-vbroadcastsi128-1.c: Ditto.
+
+2013-03-28 Tejas Belagod <tejas.belagod@arm.com>
+
+ PR middle-end/56694
+ * g++.dg/torture/pr56694.C: Fix test case to build on bare-metal
+ targets.
+
+2013-03-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56722
+ * g++.dg/cpp0x/range-for23.C: New.
+
+2013-03-25 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/56694
+ * g++.dg/torture/pr56694.C: New testcase.
+
+2013-03-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ Backport from mainline:
+ 2013-03-20 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR fortran/54932
+ * gfortran.dg/do_1.f90: Don't xfail.
+
+2013-03-24 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/56696
+ * gfortran.dg/eof_5.f90: New.
+
+2013-03-22 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * gcc.c-torture/execute/builtins/builtins.exp: Sort targets
+ alphabetically.
+
+2013-03-22 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56582
+ * g++.dg/cpp0x/constexpr-array5.C: New.
+
+2013-03-22 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/56560
+ * gcc.target/i386/pr56560.c: New file.
+
+2013-03-22 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ PR testsuite/55994
+ * gcc.c-torture/execute/builtins/builtins.exp: Add
+ -Wl,--allow-multiple-definition for RTEMS targets.
+
+2013-03-22 Jakub Jelinek <jakub@redhat.com>
+
+ Backported from mainline
+ 2013-03-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/56607
+ * g++.dg/warn/Wdiv-by-zero-2.C: New test.
+ * c-c++-common/pr56607.c: New test.
+
2013-03-22 Release Manager
* GCC 4.8.0 released.
@@ -14,8 +663,8 @@
2013-03-15 Tobias Burnus <burnus@net-b.de>
- PR fortran/56615
- * gfortran.dg/transfer_intrinsic_5.f90: New.
+ PR fortran/56615
+ * gfortran.dg/transfer_intrinsic_5.f90: New.
2013-03-15 Kai Tietz <ktietz@redhat.com>
@@ -181,8 +830,7 @@
2013-03-06 Kai Tietz <ktietz@redhat.com>
- * gcc.dg/lto/20090914-2_0.c: Skip for mingw and cygwin
- targets.
+ * gcc.dg/lto/20090914-2_0.c: Skip for mingw and cygwin targets.
* gcc.dg/lto/20091013-1_1.c: Set x64-mingw as xfail.
* gcc.dg/lto/20091013-1_2.c: Likewise.
* gcc.dg/pr31490.c: Adjust for LLP64 targets.
@@ -644,8 +1292,10 @@
Avoid instrumenting duplicated memory access in the same basic block
* c-c++-common/asan/no-redundant-instrumentation-1.c: New test.
- * testsuite/c-c++-common/asan/no-redundant-instrumentation-2.c: Likewise.
- * testsuite/c-c++-common/asan/no-redundant-instrumentation-3.c: Likewise.
+ * testsuite/c-c++-common/asan/no-redundant-instrumentation-2.c:
+ Likewise.
+ * testsuite/c-c++-common/asan/no-redundant-instrumentation-3.c:
+ Likewise.
* testsuite/c-c++-common/asan/inc.c: Likewise.
2013-02-12 Vladimir Makarov <vmakarov@redhat.com>
@@ -657,8 +1307,7 @@
Tobias Burnus <burnus@net-b.de>
PR testsuite/56082
- * gfortran.dg/bind_c_bool_1.f90 (sub): Change kind=4
- to kind=2.
+ * gfortran.dg/bind_c_bool_1.f90 (sub): Change kind=4 to kind=2.
2013-02-12 Richard Biener <rguenther@suse.de>
@@ -865,7 +1514,8 @@
2013-02-06 Janus Weil <janus@gcc.gnu.org>
PR fortran/55978
- * gfortran.dg/class_optional_2.f90: Uncomment some cases which work now.
+ * gfortran.dg/class_optional_2.f90: Uncomment some cases
+ which work now.
2013-02-06 Jakub Jelinek <jakub@redhat.com>
diff --git a/gcc-4.8/gcc/testsuite/ChangeLog-2012 b/gcc-4.8/gcc/testsuite/ChangeLog-2012
index 6687189a2..90e08399a 100644
--- a/gcc-4.8/gcc/testsuite/ChangeLog-2012
+++ b/gcc-4.8/gcc/testsuite/ChangeLog-2012
@@ -1396,12 +1396,12 @@
* gcc.target/powerpc/ppc-pow.c: Allow dot symbols in branch.
* gcc.target/powerpc/tfmode_off.c: Skip on AIX.
-2012-11-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
+2012-11-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c/53063
* gcc.dg/warn-nsstring.c: Use -Wformat explicitly.
-2012-11-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
+2012-11-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c/51294
* c-c++-common/pr51294.c: New.
@@ -1782,7 +1782,7 @@
PR middle-end/55116
* gcc.target/i386/pr55116.c: New file.
-2012-10-29 Manuel López-Ibáñez <manu@gcc.gnu.org>
+2012-10-29 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c/53066
* gcc.dg/Wshadow-4.c: New.
@@ -2211,7 +2211,7 @@
* gcc.dg/webizer.c (main): Add missing exit call.
-2012-10-21 Thomas König <tkoenig@gcc.gnu.org>
+2012-10-21 Thomas König <tkoenig@gcc.gnu.org>
PR fortran/54465
* gfortran.dg/wextra_1.f: New test.
@@ -2294,7 +2294,7 @@
* gcc.dg/tree-ssa/ldist-17.c: Block cunroll to make testcase still
valid.
-2012-10-16 Manuel López-Ibáñez <manu@gcc.gnu.org>
+2012-10-16 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c/53063
PR c/40989
@@ -3100,7 +3100,7 @@
* go.test/go-test.exp: Update for latest version of Go testsuite.
-2012-09-29 Thomas König <tkoenig@gcc.gnu.org>
+2012-09-29 Thomas König <tkoenig@gcc.gnu.org>
PR fortran/52724
* gfortran.dg/internal_readwrite_3.f90: New test.
@@ -3605,7 +3605,7 @@
* g++.dg/torture/builtin-location.C: New testcase.
2012-09-13 Paolo Carlini <paolo.carlini@oracle.com>
- Manuel López-Ibáñez <manu@gcc.gnu.org>
+ Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c++/53210
* g++.dg/warn/Wuninitialized-self.C: New.
@@ -4466,7 +4466,7 @@
PR fortran/54301
* gfortran.dg/warn_target_lifetime_1.f90: New.
-2012-08-19 Thomas König <tkoenig@gcc.gnu.org>
+2012-08-19 Thomas König <tkoenig@gcc.gnu.org>
PR fortran/54298
* gfortran.dg/real_compare_1.f90: New test case.
@@ -4921,7 +4921,7 @@
* gcc.dg/tree-ssa/pta-ptrarith-1.c: Likewise.
* gcc.dg/tree-ssa/pta-ptrarith-2.c: Likewise.
-2012-08-01 Thomas König <tkoenig@gcc.gnu.org>
+2012-08-01 Thomas König <tkoenig@gcc.gnu.org>
PR fortran/54033
* gfortran.dg/include_6.f90: New test case.
@@ -5394,7 +5394,7 @@
* g++.dg/parse/access8.C: Adjust.
* g++.dg/template/sfinae6_neg.C: Adjust.
-2012-07-16 Thomas König <tkoenig@gcc.gnu.org>
+2012-07-16 Thomas König <tkoenig@gcc.gnu.org>
PR fortran/53824
* gfortran.dg/coarray_allocate_1.f90: New test.
@@ -6425,12 +6425,12 @@
PR middle-end/53535
* gcc.dg/pr46647.c: xfail for cris-* and crisv32-*.
-2012-06-07 Thomas König <tkoenig@gcc.gnu.org>
+2012-06-07 Thomas König <tkoenig@gcc.gnu.org>
PR fortran/52861
* gfortran.dg/string_assign_2.f90: New test case.
-2012-06-07 Thomas König <tkoenig@gcc.gnu.org>
+2012-06-07 Thomas König <tkoenig@gcc.gnu.org>
PR fortran/52861
* gfortran.dg/string_assign_1.f90: New test case.
@@ -6446,7 +6446,7 @@
* gfortran.dg/gomp/appendix-a/a.35.6.f90: Likewise.
* c-c++-common/gomp/pr53580.c: New test.
-2012-06-07 Fabien Chêne <fabien@gcc.gnu.org>
+2012-06-07 Fabien Chêne <fabien@gcc.gnu.org>
PR c++/51214
* g++.dg/cpp0x/forw_enum11.C: New.
@@ -6474,7 +6474,7 @@
* gfortran.dg/vect/pr32380.f: Adjust number of expected vectorized
loops.
-2012-06-06 Fabien Chêne <fabien@gcc.gnu.org>
+2012-06-06 Fabien Chêne <fabien@gcc.gnu.org>
PR c++/52841
* g++.dg/cpp0x/pr52841.C: New testcase.
@@ -7262,7 +7262,7 @@
* gnat.dg/discr36.ad[sb]: New test.
* gnat.dg/discr36_pkg.ad[sb]: New helper.
-2012-05-05 Manuel López-Ibáñez <manu@gcc.gnu.org>
+2012-05-05 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c/43772
* c-c++-common/pr43772.c: New.
@@ -7324,7 +7324,7 @@
* gcc.target/ia64/pr48496.c: New test.
* gcc.target/ia64/pr52657.c: Likewise.
-2012-05-04 Manuel López-Ibáñez <manu@gcc.gnu.org>
+2012-05-04 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c/51712
* c-c++-common/pr51712.c: New.
@@ -7567,7 +7567,7 @@
* gnat.dg/warn6.ad[sb]: New test.
-2012-04-29 Manuel López-Ibáñez <manu@gcc.gnu.org>
+2012-04-29 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR 53149
* gcc.dg/20011021-1.c: Adjust testcase.
@@ -7675,7 +7675,7 @@
PR c/52880
* gcc.dg/pr52880.c: New test.
-2012-04-25 Manuel López-Ibáñez <manu@gcc.gnu.org>
+2012-04-25 Manuel López-Ibáñez <manu@gcc.gnu.org>
* gcc.dg/m-un-2.c: Update.
* gcc.dg/20011021-1.c: Update.
@@ -7758,7 +7758,7 @@
PR fortran/53051
* gfortran.dg/read_float_4.f90: New.
-2012-04-21 Manuel López-Ibáñez <manu@gcc.gnu.org>
+2012-04-21 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR 35441
* c-c++-common/pr35441.C: New.
@@ -7793,7 +7793,7 @@
* gcc.dg/pr52283.c: New test.
-2012-04-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
+2012-04-19 Manuel López-Ibáñez <manu@gcc.gnu.org>
* gcc.dg/pr37985.c: New test.
@@ -8041,12 +8041,12 @@
* gcc/target/sh/pr50751-6.c: New.
* gcc/target/sh/pr50751-7.c: New.
-2012-04-11 Fabien Chêne <fabien@gcc.gnu.org>
+2012-04-11 Fabien Chêne <fabien@gcc.gnu.org>
PR c++/52465
* g++.dg/lookup/using52.C: New.
-2012-04-11 Manuel López-Ibáñez <manu@gcc.gnu.org>
+2012-04-11 Manuel López-Ibáñez <manu@gcc.gnu.org>
* lib/prune.exp (TEST_ALWAYS_FLAGS): If undefined, set to empty.
@@ -8142,7 +8142,7 @@
* gcc.dg/builtin-bswap-5.c: Likewise.
* gcc.target/i386/builtin-bswap-4.c: New test.
-2012-04-11 Manuel López-Ibáñez <manu@gcc.gnu.org>
+2012-04-11 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR 24985
* lib/prune.exp: Add -fno-diagnostics-show-caret.
@@ -8251,7 +8251,7 @@
PR fortran/52751
* gfortran.dg/public_private_module_2.f90: New.
-2012-04-08 Manuel López-Ibáñez <manu@gcc.gnu.org>
+2012-04-08 Manuel López-Ibáñez <manu@gcc.gnu.org>
* g++.dg/warn/Wstrict-aliasing-float-ref-int-obj.C: Add labels to
directives.
@@ -9486,7 +9486,7 @@
PR c++/52248
* g++.dg/ext/timevar1.C: New.
-2012-02-16 Fabien Chêne <fabien@gcc.gnu.org>
+2012-02-16 Fabien Chêne <fabien@gcc.gnu.org>
PR c++/52126
* g++.dg/template/using21.C: New.
@@ -9821,7 +9821,7 @@
PR fortran/51514
* gfortran.dg/class_to_type_2.f90: New.
-2012-02-06 Thomas König <tkoenig@gcc.gnu.org>
+2012-02-06 Thomas König <tkoenig@gcc.gnu.org>
PR fortran/32373
* gfortran.dg/vect/vect-8.f90: Use vect_double effective target.
@@ -9847,12 +9847,12 @@
* gcc.dg/pr48374.c: Actually add the test I forgot
in the 2012-01-25 commit.
-2012-02-05 Thomas König <tkoenig@gcc.gnu.org>
+2012-02-05 Thomas König <tkoenig@gcc.gnu.org>
PR fortran/32373
* gfortran.dg/vect/vect-8.f90: New test case.
-2012-02-05 Thomas König <tkoenig@gcc.gnu.org>
+2012-02-05 Thomas König <tkoenig@gcc.gnu.org>
PR fortran/48847
* gfortran.dg/warn_unused_dummy_argument_3.f90: New test.
@@ -9944,7 +9944,7 @@
PR tree-optimization/52073
* gcc.c-torture/compile/pr52073.c: New test.
-2012-02-01 Thomas König <tkoenig@gcc.gnu.org>
+2012-02-01 Thomas König <tkoenig@gcc.gnu.org>
PR fortran/51958
* gfortran.dg/function_optimize_10.f90: New test.
@@ -11127,7 +11127,7 @@
* g++.dg/cpp0x/constexpr-delegating2.C: Add missing piece.
-2012-01-01 Fabien Chêne <fabien@gcc.gnu.org>
+2012-01-01 Fabien Chêne <fabien@gcc.gnu.org>
* g++.old-deja/g++.brendan/crash25.C: Adjust.
* g++.old-deja/g++.brendan/crash56.C: Likewise.
diff --git a/gcc-4.8/gcc/testsuite/c-c++-common/Wsequence-point-1.c b/gcc-4.8/gcc/testsuite/c-c++-common/Wsequence-point-1.c
new file mode 100644
index 000000000..60dd55bbb
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/c-c++-common/Wsequence-point-1.c
@@ -0,0 +1,17 @@
+/* PR c++/57274 */
+/* { dg-do compile } */
+/* { dg-options "-Wsequence-point" } */
+
+void foo (int, int);
+
+void
+bar (int *x)
+{
+ foo (*x++, sizeof (*x)); /* { dg-bogus "may be undefined" } */
+}
+
+void
+baz (int *x)
+{
+ foo (*x, sizeof (*x++) + sizeof (*x++)); /* { dg-bogus "may be undefined" } */
+}
diff --git a/gcc-4.8/gcc/testsuite/c-c++-common/gomp/pr56883.c b/gcc-4.8/gcc/testsuite/c-c++-common/gomp/pr56883.c
new file mode 100644
index 000000000..443906d86
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/c-c++-common/gomp/pr56883.c
@@ -0,0 +1,57 @@
+/* PR middle-end/56883 */
+/* { dg-do compile }
+/* { dg-options "-O2 -fopenmp" } */
+
+void
+f1 (int ***x)
+{
+ int i, j, k;
+#pragma omp parallel for
+ for (i = 0; i < 10; ++i)
+ {
+ #pragma omp parallel shared(j)
+ #pragma omp for
+ for (j = 0; j < 10; ++j)
+ {
+ #pragma omp parallel for
+ for (k = 0; k < 10; ++k)
+ x[i][j][k] = k;
+ }
+ }
+}
+
+void
+f2 (int ***x)
+{
+ int i, j, k;
+#pragma omp parallel for schedule(static,1)
+ for (i = 0; i < 10; ++i)
+ {
+ #pragma omp parallel shared(j)
+ #pragma omp for schedule(static,1)
+ for (j = 0; j < 10; ++j)
+ {
+ #pragma omp parallel for schedule(static,1)
+ for (k = 0; k < 10; ++k)
+ x[i][j][k] = k;
+ }
+ }
+}
+
+void
+f3 (int ***x)
+{
+ int i, j, k;
+#pragma omp parallel for schedule(runtime)
+ for (i = 0; i < 10; ++i)
+ {
+ #pragma omp parallel shared(j)
+ #pragma omp for schedule(runtime)
+ for (j = 0; j < 10; ++j)
+ {
+ #pragma omp parallel for schedule(runtime)
+ for (k = 0; k < 10; ++k)
+ x[i][j][k] = k;
+ }
+ }
+}
diff --git a/gcc-4.8/gcc/testsuite/c-c++-common/pr56607.c b/gcc-4.8/gcc/testsuite/c-c++-common/pr56607.c
new file mode 100644
index 000000000..d7faa8115
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/c-c++-common/pr56607.c
@@ -0,0 +1,29 @@
+/* PR c++/56607 */
+/* { dg-do compile { target { { lp64 || ilp32 } || llp64 } } } */
+/* { dg-options "-O2 -Wdiv-by-zero" } */
+
+int
+f1 (void)
+{
+ return 1 / (sizeof (char) - 1); /* { dg-warning "division by zero" } */
+}
+
+int
+f2 (void)
+{
+ const int x = sizeof (char) - 1;
+ return 1 / x; /* { dg-warning "division by zero" "" { target c++ } } */
+}
+
+int
+f3 (void)
+{
+ return 1 / (sizeof (int) / 3 - 1); /* { dg-warning "division by zero" } */
+}
+
+int
+f4 (void)
+{
+ const int x = sizeof (int) / 3 - 1;
+ return 1 / x; /* { dg-warning "division by zero" "" { target c++ } } */
+}
diff --git a/gcc-4.8/gcc/testsuite/c-c++-common/vector-scalar-2.c b/gcc-4.8/gcc/testsuite/c-c++-common/vector-scalar-2.c
new file mode 100644
index 000000000..f624c4c75
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/c-c++-common/vector-scalar-2.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-fdump-tree-gimple" } */
+
+typedef int veci __attribute__ ((vector_size (4 * sizeof (int))));
+
+int c;
+
+void f (veci *a)
+{
+ *a = *a + ++c;
+}
+
+/* { dg-final { scan-tree-dump-times " \\\+ 1" 1 "gimple" } } */
+/* { dg-final { cleanup-tree-dump "gimple" } } */
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/alias-decl-34.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/alias-decl-34.C
new file mode 100644
index 000000000..4306ab703
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/alias-decl-34.C
@@ -0,0 +1,23 @@
+// PR c++/57222
+// { dg-require-effective-target c++11 }
+
+template <template <typename T> class Templ>
+using Bool = Templ<bool>;
+
+template <typename T>
+class Foo {
+private:
+public:
+ template<template<typename U> class Templ>
+ void method(Bool<Templ> boolTempl);
+};
+
+template <typename T>
+template <template <typename U> class Templ>
+void Foo<T>::method(Bool<Templ> boolTempl) {
+}
+
+int main() {
+ Foo<char> foo;
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/alias-decl-35.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/alias-decl-35.C
new file mode 100644
index 000000000..f412b302d
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/alias-decl-35.C
@@ -0,0 +1,9 @@
+// PR c++/57279
+// { dg-require-effective-target c++11 }
+
+typedef void fc1() const; // OK
+typedef void frr1() &&; // OK
+typedef void fcr1() const &;
+using fc2 = void() const; // #4
+using frr2 = void() &&; // OK
+using fcr2 = void() const &; // #6
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/auto38.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/auto38.C
new file mode 100644
index 000000000..070a39b9e
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/auto38.C
@@ -0,0 +1,8 @@
+// PR c++/57183
+// { dg-do compile { target c++11 } }
+// { dg-options "-Wunused-variable" }
+
+constexpr float PI_0 = 3.1415926F;
+constexpr auto PI_1 = 3.1415926F;
+const float PI_2 = 3.1415926F;
+const auto PI_3 = 3.1415926F;
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr8.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr8.C
new file mode 100644
index 000000000..ee425ea1a
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr8.C
@@ -0,0 +1,54 @@
+// PR c++/57047
+// { dg-require-effective-target c++11 }
+
+template <typename>
+struct A;
+template <typename T>
+struct A <T &>
+{
+ typedef T type;
+};
+template <typename T>
+constexpr T && foo (typename A <T>::type & __t) noexcept
+{
+ return static_cast <T &&>(__t);
+}
+template <class T1, class T2>
+struct B
+{
+ T1 t1;
+ T2 t2;
+ template <class U>
+ constexpr B (U && __x, const T2 & __y) : t1 (foo <U> (__x)), t2 (__y) {}
+};
+static inline constexpr bool
+fn1 (const char c)
+{
+ return ('0' <= c) && (c <= '9');
+}
+static inline constexpr bool
+fn2 (const char c)
+{
+ return (('A' <= c) && (c <= 'Z')) || (('a' <= c) && (c <= 'z'));
+}
+static constexpr bool
+fn3 (const char *const x)
+{
+ return (x[1] == '\0' && x[0] == ']') ? true : (!fn1 (x[0])) ? false : fn3 (&x[1]);
+}
+static constexpr bool
+fn4 (const char *const x)
+{
+ return (x[0] == '\0') ? fn3 (&x[1]) : fn4 (&x[1]);
+}
+static inline constexpr bool
+fn5 (const char *const x)
+{
+ return fn2 (x[0]) ? fn4 (x) : false;
+}
+struct C final
+{
+ constexpr C (const char *const t1) : c (fn5 (t1) ? 199 : 69) {}
+ unsigned c;
+};
+B <C, C> p ("a", "b");
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C
new file mode 100644
index 000000000..4605b4be9
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C
@@ -0,0 +1,9 @@
+// PR c++/56582
+// { dg-do compile { target c++11 } }
+
+// Reliable ICE
+constexpr int n[3] = {};
+constexpr int k = n[-1]; // { dg-error "negative" }
+
+// Some random byte
+constexpr char c = "foo"[-1000]; // { dg-error "negative" }
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/constexpr-reinterpret1.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/constexpr-reinterpret1.C
new file mode 100644
index 000000000..30bbc18a1
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/constexpr-reinterpret1.C
@@ -0,0 +1,39 @@
+// PR c++/56728
+// { dg-require-effective-target c++11 }
+
+// { dg-prune-output "error" }
+
+class B {
+public:
+ static B instance;
+ class Inner
+ {
+ public:
+ class Wuzi
+ {
+ unsigned int m;
+ } m_Class[3];
+ unsigned m_Int[4];
+ };
+
+ constexpr static Inner & getInner()
+ {
+ /* I am surprised this is considered a constexpr */
+ return *((Inner *)4);
+ }
+};
+
+B B::instance;
+
+class A
+{
+public:
+ constexpr A(B &bridge, B::Inner &bridge2, unsigned char index)
+ : m_Bridge(bridge), m_Wuz(bridge2.m_Class[index])
+ {}
+
+ B &m_Bridge;
+ B::Inner::Wuzi &m_Wuz;
+};
+A works{B::instance, B::getInner(), 3};
+A crashnkill[1]{{B::instance, B::getInner(), 3}};
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype-call1.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype-call1.C
new file mode 100644
index 000000000..2616bb090
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype-call1.C
@@ -0,0 +1,32 @@
+// PR c++/52748
+// N3276
+// { dg-do compile { target c++11 } }
+
+struct A; // { dg-error "forward declaration" }
+A f();
+
+decltype(f()) g1(); // OK
+decltype(((f()))) g2b(); // OK
+decltype(42,f()) g3(); // OK
+decltype(42,45,f()) g3b(); // OK
+decltype(42,45,(f())) g3c(); // OK
+decltype(42,((45,(f())))) g3c(); // OK
+
+decltype(f(),42) g4(); // { dg-error "" }
+decltype(45,f(),42) g4b(); // { dg-error "" }
+
+class B
+{
+ ~B(); // { dg-error "private" }
+public:
+ int i;
+ void operator[](int);
+};
+B h();
+
+void i(const B&);
+
+decltype(h()) g5a(); // OK
+decltype(h().i) g5(); // { dg-error "" }
+decltype(h()[0]) g6(); // { dg-error "" }
+decltype(i(h())) g7(); // { dg-error "" }
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype-call3.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype-call3.C
new file mode 100644
index 000000000..27797a2fa
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype-call3.C
@@ -0,0 +1,132 @@
+// Testcase for N3276 and operator overloading
+// { dg-require-effective-target c++11 }
+
+struct A;
+struct B {
+ A operator()(int);
+ A operator[](int);
+ A operator=(int);
+ A operator+=(int);
+ A operator-=(int);
+ A operator*=(int);
+ A operator/=(int);
+ A operator^=(int);
+ A operator&=(int);
+ A operator|=(int);
+ A operator<<=(int);
+ A operator>>=(int);
+};
+
+A operator-(B);
+A operator+(B);
+A operator*(B);
+A operator&(B);
+A operator!(B);
+A operator~(B);
+A operator++(B);
+A operator--(B);
+
+A operator+(B,B);
+A operator-(B,B);
+A operator*(B,B);
+A operator/(B,B);
+A operator%(B,B);
+A operator^(B,B);
+A operator&(B,B);
+A operator|(B,B);
+A operator<(B,B);
+A operator>(B,B);
+A operator,(B,B);
+A operator<<(B,B);
+A operator>>(B,B);
+A operator==(B,B);
+A operator->*(B,B);
+
+#define TRY(E) static_cast<decltype(E)*>(0)
+
+template <class B>
+void f()
+{
+ B b;
+ TRY(b(0));
+ TRY(b[0]);
+ TRY(b=0);
+ TRY(b+=0);
+ TRY(b-=0);
+ TRY(b*=0);
+ TRY(b/=0);
+ TRY(b^=0);
+ TRY(b&=0);
+ TRY(b|=0);
+ TRY(b<<=0);
+ TRY(b>>=0);
+
+ TRY(-b);
+ TRY(+b);
+ TRY(*b);
+ TRY(&b);
+ TRY(!b);
+ TRY(~b);
+ TRY(++b);
+ TRY(--b);
+
+ TRY(b+b);
+ TRY(b-b);
+ TRY(b*b);
+ TRY(b/b);
+ TRY(b%b);
+ TRY(b^b);
+ TRY(b&b);
+ TRY(b|b);
+ TRY(b>b);
+ TRY(b<b);
+ TRY((b,b));
+ TRY(b<<b);
+ TRY(b>>b);
+ TRY(b==b);
+ TRY(b->*b);
+}
+
+int main()
+{
+ B b;
+ TRY(b(0));
+ TRY(b[0]);
+ TRY(b=0);
+ TRY(b+=0);
+ TRY(b-=0);
+ TRY(b*=0);
+ TRY(b/=0);
+ TRY(b^=0);
+ TRY(b&=0);
+ TRY(b|=0);
+ TRY(b<<=0);
+ TRY(b>>=0);
+
+ TRY(-b);
+ TRY(+b);
+ TRY(*b);
+ TRY(&b);
+ TRY(!b);
+ TRY(~b);
+ TRY(++b);
+ TRY(--b);
+
+ TRY(b+b);
+ TRY(b-b);
+ TRY(b*b);
+ TRY(b/b);
+ TRY(b%b);
+ TRY(b^b);
+ TRY(b&b);
+ TRY(b|b);
+ TRY(b>b);
+ TRY(b<b);
+ TRY((b,b));
+ TRY(b<<b);
+ TRY(b>>b);
+ TRY(b==b);
+ TRY(b->*b);
+
+ f<B>();
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype49.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype49.C
new file mode 100644
index 000000000..c3174982f
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype49.C
@@ -0,0 +1,10 @@
+// PR c++/45282
+// { dg-require-effective-target c++11 }
+
+struct A { int i; };
+int A::*ipm = &A::i;
+
+template <class T, class U> class assert_same_type;
+template <class T> class assert_same_type<T,T> { };
+
+assert_same_type<decltype(A().*ipm),int> x2;
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype52.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype52.C
new file mode 100644
index 000000000..e6b5a4caf
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype52.C
@@ -0,0 +1,18 @@
+// PR c++/56450
+// { dg-do compile { target c++11 } }
+
+template<typename T>
+T&& declval();
+
+template<typename, typename>
+struct is_same
+{ static constexpr bool value = false; };
+
+template<typename T>
+struct is_same<T, T>
+{ static constexpr bool value = true; };
+
+struct A { static const int dummy = 0; };
+
+static_assert(is_same<decltype(declval<A>().dummy), const int>::value, "");
+static_assert(!is_same<decltype(declval<A>().dummy), const int&>::value, "");
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype53.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype53.C
new file mode 100644
index 000000000..4580e97b7
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/decltype53.C
@@ -0,0 +1,11 @@
+// PR c++/57092
+// { dg-do compile { target c++11 } }
+
+template <void (*F)(int)>
+class B {
+ decltype(F) v;
+};
+
+void foo(int) {}
+
+B<foo> o;
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/defaulted42.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/defaulted42.C
new file mode 100644
index 000000000..1ac25a90b
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/defaulted42.C
@@ -0,0 +1,10 @@
+// DR 941
+// { dg-require-effective-target c++11 }
+
+template <class T> T f(T) = delete;
+template<> int f(int) { return 42; }
+
+int main()
+{
+ f(42);
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/enum24.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/enum24.C
new file mode 100644
index 000000000..dd6678e1e
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/enum24.C
@@ -0,0 +1,57 @@
+// PR c++/56749
+// { dg-require-effective-target c++11 }
+
+enum normal_enum
+{
+ not_scoped1,
+ not_scoped2
+};
+
+enum class scoped_enum
+{
+ scoped1,
+ scoped2
+};
+
+template <normal_enum N=not_scoped1>
+class A
+{
+public:
+ template <typename T>
+ void fun ()
+ {
+ }
+};
+
+template <scoped_enum N=scoped_enum::scoped1>
+class B
+{
+public:
+ template <typename T>
+ void fun ()
+ {
+ }
+};
+
+
+template <typename T>
+void tfun ()
+{
+ A<> a;
+ a.fun<char>(); //<------------ THIS IS FINE
+
+ B<> b_defaulted;
+ B<scoped_enum::scoped1> b_explicited;
+
+ b_defaulted.fun<char>(); //<------------ UNEXPECTED: THIS FAILS
+ b_defaulted.template fun<char>(); //<------------ THIS IS FINE
+
+ b_explicited.fun<char>(); //<------------ UNEXPECTED: THIS FAILS
+ b_explicited.template fun<char>();//<------------ THIS IS FINE
+}
+
+int main(int argc, char const *argv[])
+{
+ tfun<int>();
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/enum25.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/enum25.C
new file mode 100644
index 000000000..cb2cf8f53
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/enum25.C
@@ -0,0 +1,18 @@
+// PR c++/56793
+// { dg-require-effective-target c++11 }
+
+struct A
+{
+ enum struct B {X, Y} b;
+} a;
+
+enum struct D {X,Y};
+struct C { } c;
+
+int main ()
+{
+ if (a.b == a.B::Y)
+ a.b = A::B::X;
+
+ c.D::Y; // { dg-error "not a member" }
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/gen-attrs-4.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/gen-attrs-4.C
index bad33d6e8..dff46b4af 100644
--- a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/gen-attrs-4.C
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/gen-attrs-4.C
@@ -3,17 +3,17 @@
// Test for syntax support of various attribute permutations.
int
-[[gnu::noreturn]] // { dg-warning "ignored" }
+[[noreturn]] // { dg-warning "ignored" }
one
[[gnu::unused]]
(void);
-int one_third [[gnu::noreturn]] [[gnu::unused]] (void);
+int one_third [[noreturn]] [[gnu::unused]] (void);
int [[gnu::unused]] one_half(); // { dg-warning "ignored" }
static
-[[gnu::noreturn]] // { dg-warning "ignored" }
+[[noreturn]] // { dg-warning "ignored" }
void two [[gnu::unused]] (void) {}
@@ -21,10 +21,10 @@ void two [[gnu::unused]] (void) {}
[[gnu::unused]]
int
five(void)
-[[gnu::noreturn]] // { dg-warning "ignored" }
+[[noreturn]] // { dg-warning "ignored" }
{}
-[[gnu::noreturn]]
+[[noreturn]]
void
six (void)
;
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/gen-attrs-54.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/gen-attrs-54.C
new file mode 100644
index 000000000..45aa8e475
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/gen-attrs-54.C
@@ -0,0 +1,14 @@
+// PR c++/56859
+// { dg-require-effective-target c++11 }
+
+template<unsigned size, unsigned alignment>
+struct aligned_storage
+{
+ using type = struct { alignas(alignment) unsigned char data[size]; };
+};
+
+#define SA(X) static_assert((X),#X)
+SA(alignof(aligned_storage<8,1>::type) == 1);
+SA(alignof(aligned_storage<8,2>::type) == 2);
+SA(alignof(aligned_storage<8,4>::type) == 4);
+SA(alignof(aligned_storage<8,8>::type) == 8);
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/initlist68.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/initlist68.C
new file mode 100644
index 000000000..7cfe1a34b
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/initlist68.C
@@ -0,0 +1,20 @@
+// PR c++/56772
+// { dg-require-effective-target c++11 }
+
+typedef __SIZE_TYPE__ size_t;
+void* operator new[](size_t, void *p) { return p; }
+template <typename T = size_t>
+void f ()
+{
+ size_t coord [2][2];
+ new (&coord) size_t [2][2]
+ {
+ {0,0},
+ {0,0},
+ };
+}
+
+int main ()
+{
+ f<>();
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/initlist69.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/initlist69.C
new file mode 100644
index 000000000..5d59dfeaa
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/initlist69.C
@@ -0,0 +1,29 @@
+// PR c++/50261
+// { dg-require-effective-target c++11 }
+
+template <typename T>
+struct ca {
+ T elem[1];
+
+ ca(const T (&s)[1]): elem{{s}} { } // { dg-error "braces" }
+ ca(const T (&s)[1],int): elem({{s}}) { } // { dg-error "paren|invalid" }
+ ca(const T (&s)[1],char): elem(s) { } // { dg-error "array" }
+ ca(const T (&s)[1],double): elem{s} { } // { dg-error "invalid" }
+
+ ca(const T &v): elem{{v}} { } // { dg-error "braces" }
+ ca(const T &v,int): elem{{{v}}} { } // { dg-error "braces" }
+ ca(const T &v,char): elem{v} { } // OK
+ ca(const T &v,double): elem({v}) { } // { dg-error "paren" }
+};
+
+int main() {
+ int a[1] = {0};
+ ca<int> d(a);
+ ca<int> d1(a,1);
+ ca<int> d2(a,'2');
+ ca<int> d3(a,3.0);
+ ca<int> e(a[0]);
+ ca<int> e1(a[0],1);
+ ca<int> e2(a[0],'2');
+ ca<int> e3(a[0],3.0);
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/initlist70.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/initlist70.C
new file mode 100644
index 000000000..f215b9d79
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/initlist70.C
@@ -0,0 +1,27 @@
+// PR c++/57196
+// { dg-require-effective-target c++11 }
+
+#include <initializer_list>
+
+template<class T>
+struct set {
+ set() = default;
+ set(std::initializer_list<T>){}
+};
+
+struct string {
+ string(const char*){}
+ ~string(){}
+};
+
+typedef decltype(sizeof(0)) size_t;
+
+template <size_t> struct EqHelper { };
+
+int IsNullLiteralHelper(...);
+
+void Fn() {
+ EqHelper<sizeof IsNullLiteralHelper(set<int>{1})> eq1; // ok
+ EqHelper<sizeof IsNullLiteralHelper(set<string>())> eq2; // ok
+ EqHelper<sizeof IsNullLiteralHelper(set<string>{"foo"})> eq3; // error
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv8.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv8.C
new file mode 100644
index 000000000..abe272a8b
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv8.C
@@ -0,0 +1,15 @@
+// PR c++/56447
+// { dg-do compile { target c++11 } }
+
+template <class T>
+void f()
+{
+ int i;
+ // This lambda should not have a conversion op, since it captures i
+ int (*p)() = [=]{ return i; }; // { dg-error "cannot convert" }
+}
+
+int main()
+{
+ f<int>();
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg4.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg4.C
new file mode 100644
index 000000000..221795459
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg4.C
@@ -0,0 +1,8 @@
+// PR c++/54764
+// { dg-require-effective-target c++11 }
+
+template<class T = void>
+struct c
+{
+ int (*f)(int) = [](int i){return i + i;};
+};
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh3.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh3.C
new file mode 100644
index 000000000..10dc6e36d
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh3.C
@@ -0,0 +1,14 @@
+// PR c++/56388
+// { dg-require-effective-target c++11 }
+
+int main()
+{
+ bool /*const*/ condition = false;
+
+ [&]{
+ try{}
+ catch(...){
+ if(condition){}
+ }
+ }();
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable2.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable2.C
new file mode 100644
index 000000000..c54ff5c84
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable2.C
@@ -0,0 +1,23 @@
+// PR c++/55532
+// { dg-do compile { target c++11 } }
+
+struct Foo {
+ void doit() {
+ }
+};
+
+template<typename T>
+void oops(Foo &foo, const T &) {
+ auto fun = [&] () mutable {
+ foo.doit();
+ };
+ auto fun2 = [=]() {
+ fun(); // { dg-error "" }
+ };
+ fun2();
+}
+
+int main() {
+ Foo foo;
+ oops(foo, 1);
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi3.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi3.C
new file mode 100644
index 000000000..da7e0bfed
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi3.C
@@ -0,0 +1,9 @@
+// PR c++/55972
+// { dg-do compile { target c++11 } }
+
+class C
+{
+ void f();
+ int j = 10;
+ int i = [this]() { return this->j; }();
+};
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-sfinae1.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-sfinae1.C
new file mode 100644
index 000000000..973f8a780
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-sfinae1.C
@@ -0,0 +1,55 @@
+// PR c++/56039
+// { dg-do compile { target c++11 } }
+
+template <bool> struct BoolSink { typedef void type; };
+
+template <typename T, typename U>
+struct AddRvalueReferenceImpl { typedef T type; };
+
+template <typename T>
+struct AddRvalueReferenceImpl<T, typename BoolSink<false &&
+ [] {
+ extern T &&tref;
+ }>::type> { // { dg-error "lambda" }
+ typedef T &&type;
+};
+
+template <typename T>
+struct AddRvalueReference : AddRvalueReferenceImpl<T, void> { };
+
+namespace ImplHelpers {
+ template <typename T>
+ typename AddRvalueReference<T>::type create(void) { }
+}
+
+template <typename T, typename U, typename ...Args>
+struct IsConstructibleImpl { enum { value = 0 }; };
+
+template <typename T, typename ...Args>
+struct IsConstructibleImpl<T, typename BoolSink<false &&
+ [] {
+ T t( ::ImplHelpers::create<Args>() ...);
+ }>::type, Args ...> { // { dg-error "lambda" }
+ enum { value = 1 };
+};
+
+template <typename T, typename ...Args>
+struct IsConstructible : IsConstructibleImpl<T, void, Args ...> { };
+
+struct DestroyMe {
+ ~DestroyMe() = delete;
+};
+
+static_assert(+IsConstructible<int>::value, "error");
+static_assert(!IsConstructible<void>::value, "error");
+static_assert(+IsConstructible<int [1]>::value, "error");
+static_assert(!IsConstructible<DestroyMe>::value, "error");
+static_assert(!IsConstructible<int *, char *>::value, "error");
+
+static_assert(+IsConstructible<int &&, int>::value, "error");
+static_assert(!IsConstructible<int &&, int &>::value, "error");
+static_assert(+IsConstructible<int &&, int &&>::value, "error");
+
+// { dg-prune-output "expected" }
+// { dg-prune-output "does not name a class" }
+// { dg-prune-output "static assertion" }
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this13.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this13.C
new file mode 100644
index 000000000..090d0a13e
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this13.C
@@ -0,0 +1,20 @@
+// PR c++/52374
+// { dg-do compile { target c++11 } }
+
+struct B
+{
+ int get() const { return 42; }
+};
+
+template<typename X>
+struct D
+ : public X
+{
+ int get() const { return [this]() -> int { return X::get(); }(); }
+};
+
+int main()
+{
+ D<B> d;
+ d.get();
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this14.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this14.C
new file mode 100644
index 000000000..9834bfdb3
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this14.C
@@ -0,0 +1,49 @@
+// PR c++/52014
+// { dg-require-effective-target c++11 }
+
+template <class Iterator, class Func>
+void for_each(const Iterator first, const Iterator last, Func func)
+{
+ for (Iterator it = first; it != last; ++it) {
+ func(*it);
+ }
+}
+
+template <class T>
+struct helper
+{
+ typedef typename T::size_type type;
+};
+
+template <class T>
+struct helper<T&>
+{
+ typedef typename T::size_type type;
+};
+
+template <class T>
+struct helper<T*>
+{
+ typedef typename T::size_type type;
+};
+
+struct bar
+{
+ struct foo
+ {
+ typedef int size_type;
+ } foo_;
+
+ void test()
+ {
+ int arr[] = { 1, 2, 3 };
+ for_each(arr, arr + 3, [&](helper<foo>::type i) {
+ for_each(arr, arr + 3, [&](helper<decltype(foo_)>::type j) { });
+ });
+ }
+};
+
+int main()
+{
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this15.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this15.C
new file mode 100644
index 000000000..d44bec949
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this15.C
@@ -0,0 +1,12 @@
+// PR c++/56692
+// { dg-require-effective-target c++11 }
+
+struct Class {
+ void f () { }
+ static void f (int) { }
+};
+
+int main ()
+{
+ []{ Class::f(0); };
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this16.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this16.C
new file mode 100644
index 000000000..736d5f50e
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this16.C
@@ -0,0 +1,28 @@
+// PR c++/56699
+// { dg-require-effective-target c++11 }
+
+struct A
+{
+ int a;
+};
+
+struct T
+{
+ int x;
+
+ T() : x([]{
+ sizeof(::A::a);
+ return 0;
+ }())
+ {}
+};
+
+struct B
+{
+ int a;
+};
+
+void f()
+{
+ []{sizeof(B::a);};
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this9.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this9.C
new file mode 100644
index 000000000..07ddd0863
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this9.C
@@ -0,0 +1,19 @@
+// PR c++/54277
+// { dg-do compile { target c++11 } }
+
+struct Used
+{
+ void foo() { }
+};
+
+template <typename>
+struct S
+{
+ Used x;
+
+ void bar()
+ {
+ auto f = [this] { x.foo(); };
+ f();
+ }
+};
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/noexcept03.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/noexcept03.C
index 54e04f3d0..41c442e90 100644
--- a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/noexcept03.C
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/noexcept03.C
@@ -1,6 +1,6 @@
// Runtime test for noexcept-specification.
// { dg-options "-std=c++0x -Wnoexcept" }
-// { dg-do run }
+// { dg-do run { target nonpic } }
#include <exception>
#include <cstdlib>
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/range-for23.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/range-for23.C
new file mode 100644
index 000000000..849682c02
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/range-for23.C
@@ -0,0 +1,8 @@
+// PR c++/56722
+// { dg-do compile { target c++11 } }
+
+int main()
+{
+ for (const auto& i, 21) // { dg-error "has no initializer|expected" }
+ i;
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/range-for24.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/range-for24.C
new file mode 100644
index 000000000..b4a5b185b
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/range-for24.C
@@ -0,0 +1,15 @@
+// PR c++/56794
+// { dg-require-effective-target c++11 }
+
+template<int... values>
+static void Colors()
+{
+ static const int colors[] = { values... };
+
+ for(auto c: colors) { }
+}
+
+int main()
+{
+ Colors<0,1,2> ();
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/range-for25.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/range-for25.C
new file mode 100644
index 000000000..8ba9f652d
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/range-for25.C
@@ -0,0 +1,30 @@
+// PR c++/57243
+// { dg-require-effective-target c++11 }
+
+struct snarf
+{
+ template <class T>
+ void get() {}
+};
+
+template <class T>
+struct container
+{
+ snarf * begin() { return nullptr; }
+ snarf * end() { return nullptr; }
+};
+
+template <class T>
+void foo()
+{
+ container<int> arr;
+
+ for( auto i : arr )
+ i.get<int>();
+}
+
+int main()
+{
+ return 0;
+}
+
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual-mangle1.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual-mangle1.C
new file mode 100644
index 000000000..c6ef0792b
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual-mangle1.C
@@ -0,0 +1,37 @@
+// PR c++/56821
+// { dg-require-effective-target c++11 }
+
+struct A {
+ // { dg-final { scan-assembler "_ZNR1A1fEv" } }
+ void f() & {}
+ // { dg-final { scan-assembler "_ZNO1A1gEv" } }
+ void g() && {}
+ // { dg-final { scan-assembler "_ZNKR1A1hEv" } }
+ void h() const & {}
+};
+
+// { dg-final { scan-assembler "_Z1jM1AFvvRE" } }
+void j(void (A::*)() &) { }
+// { dg-final { scan-assembler "_Z1kM1AFvvOE" } }
+void k(void (A::*)() &&) { }
+// { dg-final { scan-assembler "_Z1lM1AKFvvRE" } }
+void l(void (A::*)() const &) { }
+
+// { dg-final { scan-assembler "_Z1mIFvvOEEvM1AT_" } }
+// { dg-final { scan-assembler "_Z1mIFvvREEvM1AT_" } }
+// { dg-final { scan-assembler "_Z1mIKFvvREEvM1AT_" } }
+template <typename T>
+void m(T A::*) {}
+
+// { dg-final { scan-assembler "_Z1nIM1AFvvOEEvT_" } }
+// { dg-final { scan-assembler "_Z1nIM1AFvvREEvT_" } }
+// { dg-final { scan-assembler "_Z1nIM1AKFvvREEvT_" } }
+template <typename T>
+void n(T) {}
+
+int main()
+{
+ j(&A::f); k(&A::g); l(&A::h);
+ m(&A::f); m(&A::g); m(&A::h);
+ n(&A::f); n(&A::g); n(&A::h);
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual1.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual1.C
new file mode 100644
index 000000000..7fa826c3d
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual1.C
@@ -0,0 +1,30 @@
+// { dg-require-effective-target c++11 }
+
+template <class,class> struct ST;
+template <class T> struct ST<T,T> {};
+
+struct A
+{
+ int f() &;
+ char f() &&;
+};
+
+template <class T> struct B
+{
+ int f() &;
+ char f() &&;
+};
+
+int main()
+{
+ A a;
+ a.f();
+ A().f();
+ ST<decltype(a.f()), int>();
+ ST<decltype(A().f()), char>();
+ B<int> b;
+ b.f();
+ B<int>().f();
+ ST<decltype(b.f()), int>();
+ ST<decltype(B<int>().f()), char>();
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual10.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual10.C
new file mode 100644
index 000000000..1b6c54fd4
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual10.C
@@ -0,0 +1,13 @@
+// PR c++/57252
+// { dg-require-effective-target c++11 }
+
+struct foo {
+ void bar() & {}
+ void bar() && {}
+};
+
+int main()
+{
+ auto p = &foo::bar; // { dg-error "" }
+ (foo{}.*p)();
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual11.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual11.C
new file mode 100644
index 000000000..15dd049f2
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual11.C
@@ -0,0 +1,10 @@
+// PR c++/57253
+// { dg-require-effective-target c++11 }
+
+template<typename T> struct foo;
+
+template<> struct foo<void()&> {};
+template<> struct foo<void()> {};
+
+int main()
+{}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual12.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual12.C
new file mode 100644
index 000000000..b0a16fe94
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual12.C
@@ -0,0 +1,22 @@
+// PR c++/57254
+// { dg-require-effective-target c++11 }
+
+struct foo {
+ template<typename T>
+ void bar(T) &;
+
+ template<typename T>
+ void bar(T) &&;
+};
+
+template<typename T>
+void foo::bar(T) & {}
+
+template<typename T>
+void foo::bar(T) && {}
+
+int main()
+{
+ foo f;
+ f.bar(0);
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual13.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual13.C
new file mode 100644
index 000000000..84d3b0f2d
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual13.C
@@ -0,0 +1,29 @@
+// PR c++/57388
+// { dg-require-effective-target c++11 }
+
+template<class> struct A
+{
+ static constexpr bool value = false;
+};
+
+template<class Res, class... Args>
+struct A<Res(Args...)>
+{
+ static constexpr bool value = true;
+};
+
+template<class Res, class... Args>
+struct A<Res(Args...) const &>
+{
+ static constexpr bool value = true;
+};
+
+template<class Res, class... Args>
+struct A<Res(Args...) const &&>
+{
+ static constexpr bool value = true;
+};
+
+static_assert(A<void()>::value, "Ouch");
+static_assert(A<void() const &>::value, ""); // #1
+static_assert(A<void() const &&>::value, ""); // #2
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual2.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual2.C
new file mode 100644
index 000000000..fa09ab48a
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual2.C
@@ -0,0 +1,75 @@
+// In a .* expression whose object expression is an rvalue, the program is
+// ill-formed if the second operand is a pointer to member function with
+// ref-qualifier &. In a .* expression whose object expression is an
+// lvalue, the program is ill-formed if the second operand is a pointer to
+// member function with ref-qualifier &&.
+
+// { dg-require-effective-target c++11 }
+
+struct A {
+ void f() &;
+ void g() &&;
+ void h();
+};
+
+void one()
+{
+ A a;
+
+ void (A::*p)() & = &A::f;
+ (a.*p)();
+ (A().*p)(); // { dg-error "" }
+
+ p = &A::g; // { dg-error "" }
+ p = &A::h; // { dg-error "" }
+
+ void (A::*p2)() && = &A::g;
+ (A().*p2)();
+ (a.*p2)(); // { dg-error "" }
+ p2 = &A::f; // { dg-error "" }
+ p2 = &A::h; // { dg-error "" }
+
+ void (A::*p3)() = &A::h;
+ (a.*p3)();
+ (A().*p3)();
+ p3 = &A::f; // { dg-error "" }
+ p3 = &A::g; // { dg-error "" }
+}
+
+template <class T>
+struct B {
+ void f() &;
+ void g() &&;
+ void h();
+};
+
+template <class T>
+void two()
+{
+ B<T> a;
+
+ void (B<T>::*p)() & = &B<T>::f;
+ (a.*p)();
+ (B<T>().*p)(); // { dg-error "" }
+
+ p = &B<T>::g; // { dg-error "" }
+ p = &B<T>::h; // { dg-error "" }
+
+ void (B<T>::*p2)() && = &B<T>::g;
+ (B<T>().*p2)();
+ (a.*p2)(); // { dg-error "" }
+ p2 = &B<T>::f; // { dg-error "" }
+ p2 = &B<T>::h; // { dg-error "" }
+
+ void (B<T>::*p3)() = &B<T>::h;
+ (a.*p3)();
+ (B<T>().*p3)();
+ p3 = &B<T>::f; // { dg-error "" }
+ p3 = &B<T>::g; // { dg-error "" }
+}
+
+int main()
+{
+ one();
+ two<int>();
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual3.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual3.C
new file mode 100644
index 000000000..1b2119632
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual3.C
@@ -0,0 +1,29 @@
+// An explicitly defaulted function can have a ref-qualifier.
+
+// { dg-require-effective-target c++11 }
+
+struct A {
+ A& operator=(const A&) & = default;
+};
+
+template<class T>
+struct B {
+ B& operator=(const B&) & = default;
+};
+
+template<class T>
+void f()
+{
+ B<T> b;
+ b = B<T>();
+ B<T>() = b; // { dg-error "" }
+}
+
+int main()
+{
+ A a;
+ a = A();
+ A() = a; // { dg-error "" }
+
+ f<int>();
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual4.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual4.C
new file mode 100644
index 000000000..5a0ee162f
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual4.C
@@ -0,0 +1,14 @@
+// 12.1: A constructor shall not be declared with a ref-qualifier.
+// 12.4: A destructor shall not be declared with a ref-qualifier.
+
+// { dg-require-effective-target c++11 }
+
+struct A {
+ A() & = default; // { dg-error "constructor" }
+ ~A() & = default; // { dg-error "destructor" }
+};
+
+int main()
+{
+ A a;
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual5.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual5.C
new file mode 100644
index 000000000..e3d26e5a7
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual5.C
@@ -0,0 +1,13 @@
+// 13.1: ...cannot be overloaded if any of them, but not all, have a
+// ref-qualifier.
+
+// { dg-require-effective-target c++11 }
+
+class Y {
+ void h() &;
+ void h() const &; // OK
+ void h() &&; // OK, all declarations have a ref-qualifier
+ void i() &; // { dg-message "" }
+ void i() const; // { dg-error "" } prior declaration of i
+ // has a ref-qualifier
+};
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual6.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual6.C
new file mode 100644
index 000000000..02e3f6e68
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual6.C
@@ -0,0 +1,15 @@
+// Binding an rvalue to && beats binding it to const& (13.3.3.2).
+
+// { dg-require-effective-target c++11 }
+
+struct A
+{
+ int operator+(int) &&;
+};
+
+void operator+ (const A&, int);
+
+int main()
+{
+ return A() + 42;
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual7.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual7.C
new file mode 100644
index 000000000..2430665db
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual7.C
@@ -0,0 +1,19 @@
+// typedef test
+// { dg-require-effective-target c++11 }
+
+typedef void F() &;
+
+F f; // { dg-error "" }
+F* p; // { dg-error "" }
+extern F& r; // { dg-error "" }
+
+struct A {
+ F f;
+};
+
+int main()
+{
+ A a;
+ a.f();
+ A().f(); // { dg-error "" }
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual8.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual8.C
new file mode 100644
index 000000000..b4c972b3c
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual8.C
@@ -0,0 +1,13 @@
+// { dg-require-effective-target c++11 }
+
+struct A
+{
+ virtual void f() & = 0;
+};
+
+struct B: A
+{
+ void f(); // doesn't override
+};
+
+B b; // { dg-error "abstract" }
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual9.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual9.C
new file mode 100644
index 000000000..cdb8d6856
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/ref-qual9.C
@@ -0,0 +1,14 @@
+// PR c++/57064
+// { dg-require-effective-target c++11 }
+
+template <class T> T&& move(T& t);
+
+struct A {
+ void p() &;
+ int p() &&;
+};
+
+void g(A &&a)
+{
+ int i = move(a).p();
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/sfinae44.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/sfinae44.C
new file mode 100644
index 000000000..bbcae6226
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/sfinae44.C
@@ -0,0 +1,26 @@
+// PR c++/56913
+// { dg-do compile { target c++11 } }
+
+template<typename T>
+T &&declval();
+
+template<typename T, typename U,
+ typename = decltype((declval<T>().*declval<U>())())>
+constexpr bool test(int)
+{
+ return true;
+}
+
+template<typename T, typename U>
+constexpr bool test(...)
+{
+ return false;
+}
+
+struct S
+{};
+
+static_assert(!test<S, void (S::*)() &>(0), "");
+static_assert(test<S, void (S::*)() &&>(0), "");
+static_assert(test<S &, void (S::*)() &>(0), "");
+static_assert(!test<S &, void (S::*)() &&>(0), "");
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/sfinae45.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/sfinae45.C
new file mode 100644
index 000000000..bd375145f
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/sfinae45.C
@@ -0,0 +1,35 @@
+// PR c++/56970
+// { dg-do compile { target c++11 } }
+
+template <typename T>
+struct has
+{
+ template <typename>
+ constexpr static int test(...) {
+ return 0;
+ }
+
+ template <typename C>
+ constexpr static int test(decltype(sizeof(C::x))) { // Doesn't compile.
+ return 1; // Is a member variable.
+ }
+
+ template <typename C, int c = sizeof(decltype(((C*)nullptr)->x()))>
+ constexpr static int test(int) {
+ return 2; // Is a member function.
+ }
+
+ static const int value = test<T>(0);
+};
+
+struct foo {
+ int x;
+};
+
+struct bar {
+ int x();
+};
+
+static_assert(has<int>::value == 0, "");
+static_assert(has<foo>::value == 1, "");
+static_assert(has<bar>::value == 2, "");
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/trailing8.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/trailing8.C
new file mode 100644
index 000000000..304845e66
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/trailing8.C
@@ -0,0 +1,25 @@
+// PR c++/54359
+// { dg-require-effective-target c++11 }
+
+int& ref(int& x) { return x; }
+const int& ref(const int& x) { return x; }
+
+class A {
+ int x;
+ int f() const;
+ auto test1() const -> decltype(this);
+ auto test2() const -> decltype(ref(x));
+ auto test3() const -> decltype(f());
+};
+
+auto A::test1() const -> decltype(this) {
+ return this;
+}
+
+auto A::test2() const -> decltype(ref(x)) {
+ return ref(x);
+}
+
+auto A::test3() const -> decltype(f()) {
+ return f();
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/trailing9.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/trailing9.C
new file mode 100644
index 000000000..d7895b38e
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/trailing9.C
@@ -0,0 +1,12 @@
+// PR c++/56646
+// { dg-require-effective-target c++11 }
+
+struct A {
+ void f();
+};
+
+void A::f() {
+ struct B {
+ auto g() -> void { }
+ };
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/traits1.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/traits1.C
new file mode 100644
index 000000000..9085b71a3
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/traits1.C
@@ -0,0 +1,133 @@
+// PR c++/57016
+// { dg-require-effective-target c++11 }
+
+template < typename _Tp, _Tp __v > struct integral_constant
+{
+ static constexpr _Tp value = __v;
+};
+template < bool, typename, typename > struct conditional;
+template < typename ... >struct __and_;
+template
+ <
+ typename
+ _B1,
+ typename
+ _B2 > struct __and_ <_B1, _B2 >:conditional < _B1::value, _B2, _B1 >::type
+{};
+template < typename _Pp > struct __not_:integral_constant < bool, _Pp::value >
+{};
+template < typename > struct add_rvalue_reference;
+template
+ < typename _Tp > typename add_rvalue_reference < _Tp >::type declval ();
+template < bool, typename _Iftrue, typename > struct conditional
+{
+ typedef _Iftrue type;
+};
+template < class, class > struct pair;
+template < typename > class allocator;
+template < typename, typename, typename > struct binary_function;
+template < typename _Tp > struct equal_to:binary_function < _Tp, _Tp, bool >
+{};
+template < typename > struct hash;
+template < >struct hash <int >
+{};
+template
+ <
+ typename,
+ typename,
+ typename,
+ typename, typename, typename, typename, typename > struct _Hashtable_base;
+template
+ <
+ typename,
+ typename
+ > struct __is_noexcept_hash:integral_constant < bool, noexcept ((declval)) >
+{}
+;
+struct _Identity;
+template < bool, bool _Constant_iterators, bool > struct _Hashtable_traits
+ ;
+struct _Mod_range_hashing;
+struct _Default_ranged_hash;
+struct _Prime_rehash_policy;
+template
+ <
+ typename
+ _Tp,
+ typename
+ _Hash
+ >
+ using
+ __cache_default
+ =
+ __not_
+ <
+ __and_
+ <
+ integral_constant
+ < bool, __is_final (_Hash) >, __is_noexcept_hash < _Tp, _Hash > >>;
+template < typename _Key, typename _Value, typename, typename _ExtractKey, typename _Equal, typename _H1, typename _H2, typename, typename _RehashPolicy, typename _Traits > class _Hashtable:
+_Hashtable_base
+ < _Key, _Value, _ExtractKey, _Equal, _H1, _H2, _RehashPolicy, _Traits >
+{}
+;
+template
+ <
+ bool
+ _Cache > using __uset_traits = _Hashtable_traits < _Cache, true, true >;
+template
+ <
+ typename
+ _Value,
+ typename
+ _Hash
+ =
+ hash
+ <
+ _Value
+ >,
+ typename
+ _Pred
+ =
+ equal_to
+ <
+ _Value
+ >,
+ typename
+ _Alloc
+ =
+ allocator
+ <
+ _Value
+ >,
+ typename
+ _Tr
+ =
+ __uset_traits
+ <
+ __cache_default
+ <
+ _Value,
+ _Hash
+ >::value
+ >
+ >
+ using
+ __uset_hashtable
+ =
+ _Hashtable
+ <
+ _Value,
+ _Value,
+ _Alloc,
+ _Identity,
+ _Pred,
+ _Hash,
+ _Mod_range_hashing, _Default_ranged_hash, _Prime_rehash_policy, _Tr >;
+template < class _Value, class = hash < _Value > >class unordered_set
+{
+ typedef __uset_hashtable < _Value > iterator;
+ template < typename > pair < iterator, bool > emplace ();
+}
+;
+template class unordered_set < int >;
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/variadic-explicit2.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/variadic-explicit2.C
new file mode 100644
index 000000000..4a8074529
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/variadic-explicit2.C
@@ -0,0 +1,14 @@
+// PR c++/56774
+// { dg-require-effective-target c++11 }
+
+template <class ... Args>
+struct mytype {};
+
+template <class T, class ... Args>
+void something( mytype<T, Args...> )
+{ }
+
+int main()
+{
+ something<int, char, bool>( mytype<int, char, bool>() );
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/variadic142.C b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/variadic142.C
new file mode 100644
index 000000000..7737b4cac
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/cpp0x/variadic142.C
@@ -0,0 +1,63 @@
+// PR c++/56782
+// { dg-options -std=c++0x }
+
+template<class T>
+T&& declval();
+
+struct is_convertible_impl {
+ template<class T>
+ static void sink(T);
+
+ template<class T, class U, class = decltype(sink<U>(declval<T>()))>
+ static auto test(int) -> char;
+
+ template<class, class>
+ static auto test(...) -> char(&)[2];
+};
+
+template<class T, class U>
+struct is_convertible : is_convertible_impl
+{
+ static const bool value = sizeof(test<T, U>(0)) == 1;
+};
+
+template<bool, class>
+struct enable_if {};
+
+template<class T>
+struct enable_if<true, T> { typedef T type; };
+
+template<bool, class If, class Else>
+struct conditional { typedef If type; };
+
+template<class If, class Else>
+struct conditional<false, If, Else> { typedef Else type; };
+
+template<class...>
+struct and_;
+
+template<>
+struct and_<>
+{
+ static const bool value = true;
+};
+
+template<class P>
+struct and_<P> : P
+{
+};
+
+template<class P1, class P2>
+struct and_<P1, P2> : conditional<P1::value, P2, P1>::type
+{
+};
+
+template<class... T>
+struct Tuple {
+ template<class... U,
+ class = typename enable_if<and_<is_convertible<U, T>... >::value, int>::type
+ >
+ Tuple(U&&...){}
+};
+
+static_assert(is_convertible<Tuple<>, Tuple<>>::value, "Ouch"); //#1
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/debug/pr56819.C b/gcc-4.8/gcc/testsuite/g++.dg/debug/pr56819.C
new file mode 100644
index 000000000..62926be2f
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/debug/pr56819.C
@@ -0,0 +1,27 @@
+// PR debug/56819
+// { dg-do compile }
+// { dg-options "-fcompare-debug" }
+
+template <typename>
+struct A
+{
+ template <typename>
+ struct B;
+};
+
+template <typename>
+struct C
+{
+ typedef int I;
+};
+
+template <typename T>
+class D
+{
+ typedef A <void> E;
+ typedef typename T::template B <E> F;
+ typedef typename C <F>::I I;
+ A <I> foo () { return A<I> (); }
+};
+
+template class D <A <void> >;
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/ext/desig5.C b/gcc-4.8/gcc/testsuite/g++.dg/ext/desig5.C
new file mode 100644
index 000000000..48cce3183
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/ext/desig5.C
@@ -0,0 +1,7 @@
+// PR c++/55951
+
+enum { A };
+
+static const char *a[] = {
+ [A] = "a"
+};
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/ext/desig6.C b/gcc-4.8/gcc/testsuite/g++.dg/ext/desig6.C
new file mode 100644
index 000000000..ccdafa50d
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/ext/desig6.C
@@ -0,0 +1,17 @@
+// PR c++/57041
+// { dg-options "-std=gnu++11" }
+
+template<typename T>
+union u {
+ T a;
+ char b;
+};
+
+template<typename T>
+u<T> make_u(T t) {
+ return { .a = t };
+}
+
+int main() {
+ return make_u<int>(1).a;
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/ipa/devirt-c-7.C b/gcc-4.8/gcc/testsuite/g++.dg/ipa/devirt-c-7.C
index 89d04328c..2e76cbe40 100644
--- a/gcc-4.8/gcc/testsuite/g++.dg/ipa/devirt-c-7.C
+++ b/gcc-4.8/gcc/testsuite/g++.dg/ipa/devirt-c-7.C
@@ -1,6 +1,7 @@
/* Verify that ipa-cp will not get confused by placement new constructing an
object within another one when looking for dynamic type change . */
/* { dg-do run } */
+/* { dg-require-effective-target nonpic } */
/* { dg-options "-O3 -Wno-attributes" } */
extern "C" void abort (void);
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-1.C b/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-1.C
index fc63e6085..bc4dfea5c 100644
--- a/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-1.C
+++ b/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-1.C
@@ -1,6 +1,6 @@
/* Verify that simple virtual calls are inlined even without early
inlining. */
-/* { dg-do run } */
+/* { dg-do run { target nonpic } } */
/* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fno-ipa-cp" } */
extern "C" void abort (void);
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-2.C b/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-2.C
index f99330361..001cff204 100644
--- a/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-2.C
+++ b/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-2.C
@@ -1,6 +1,6 @@
/* Verify that simple virtual calls using this pointer are inlined
even without early inlining.. */
-/* { dg-do run } */
+/* { dg-do run { target nonpic } } */
/* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fno-ipa-cp" } */
extern "C" void abort (void);
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-3.C b/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-3.C
index d9a47f860..637a6aecc 100644
--- a/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-3.C
+++ b/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-3.C
@@ -1,6 +1,6 @@
/* Verify that simple virtual calls on an object refrence are inlined
even without early inlining. */
-/* { dg-do run } */
+/* { dg-do run { target nonpic } } */
/* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fno-ipa-cp" } */
extern "C" void abort (void);
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-4.C b/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-4.C
index 93cbe0c7d..f5b8f8e5d 100644
--- a/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-4.C
+++ b/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-4.C
@@ -1,7 +1,7 @@
/* Verify that simple virtual calls are inlined even without early
inlining, even when a typecast to an ancestor is involved along the
way. */
-/* { dg-do run } */
+/* { dg-do run { target nonpic } } */
/* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fno-ipa-cp" } */
extern "C" void abort (void);
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-5.C b/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-5.C
index 91e8f4e3e..d78173d69 100644
--- a/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-5.C
+++ b/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-5.C
@@ -1,6 +1,6 @@
/* Verify that virtual call inlining does not pick a wrong method when
there is a user defined ancestor in an object. */
-/* { dg-do run } */
+/* { dg-do run { target nonpic } } */
/* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fno-ipa-cp" } */
extern "C" void abort (void);
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-7.C b/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-7.C
index 2630dffa9..9d725a508 100644
--- a/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-7.C
+++ b/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-7.C
@@ -1,7 +1,7 @@
/* Verify that simple virtual calls are inlined even without early
inlining, even when a typecast to an ancestor is involved along the
way and that ancestor is not the first one with virtual functions. */
-/* { dg-do run } */
+/* { dg-do run { target nonpic } } */
/* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fno-ipa-cp" } */
extern "C" void abort (void);
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-8.C b/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-8.C
index 3bdf4c15b..eebfc6af1 100644
--- a/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-8.C
+++ b/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-8.C
@@ -1,6 +1,6 @@
/* Verify that virtual calls are inlined (ithout early inlining) even
when their caller is itself indirectly inlined. */
-/* { dg-do run } */
+/* { dg-do run { target nonpic } } */
/* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fno-ipa-cp" } */
extern "C" void abort (void);
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-9.C b/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-9.C
index 4ff07a9bb..586c3af30 100644
--- a/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-9.C
+++ b/gcc-4.8/gcc/testsuite/g++.dg/ipa/ivinline-9.C
@@ -2,7 +2,7 @@
inlining, even when a typecast to an ancestor is involved along the
way and that ancestor itself has an ancestor wich is not the
primary base class. */
-/* { dg-do run } */
+/* { dg-do run { target nonpic } } */
/* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fno-ipa-cp" } */
extern "C" void abort (void);
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/opt/pr56999.C b/gcc-4.8/gcc/testsuite/g++.dg/opt/pr56999.C
new file mode 100644
index 000000000..6db2f270e
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/opt/pr56999.C
@@ -0,0 +1,188 @@
+// PR rtl-optimization/56999
+// { dg-do run }
+// { dg-options "-O2" }
+// { dg-additional-options "-fpic" { target fpic } }
+// { dg-additional-options "-march=i686 -mtune=atom" { target ia32 } }
+// { dg-require-visibility "" }
+
+extern "C" void abort (void);
+extern "C" void exit (int);
+volatile bool do_exit = true;
+struct JSScript;
+struct JITScript { int i; };
+#pragma GCC visibility push(hidden)
+typedef struct JSCompartment JSCompartment;
+typedef struct JSContext JSContext;
+namespace js
+{
+ struct ContextFriendFields
+ {
+ JSCompartment *compartment;
+ };
+ struct TempAllocPolicy
+ {
+ };
+ template <class T>
+ struct Vector
+ {
+ T *mBegin;
+ T *begin () { return mBegin; }
+ T & operator[] (unsigned i) { return begin ()[i]; }
+ template <class U>
+ __attribute__((noinline, noclone))
+ bool append (U) { asm volatile ("" : : : "memory"); if (do_exit) abort (); return false; }
+ };
+ namespace types
+ {
+ struct TypeCompartment;
+ }
+ namespace mjit
+ {
+ }
+ namespace ion
+ {
+ struct IonScript;
+ }
+ namespace types
+ {
+ struct CompilerOutput
+ {
+ enum Kind { MethodJIT, ParallelIon };
+ JSScript *script;
+ unsigned kindInt : 2;
+ bool constructing : 1;
+ bool barriers : 1;
+ bool pendingRecompilation : 1;
+ Kind kind () const { return static_cast <Kind> (kindInt); }
+ bool isValid () const;
+ };
+ struct RecompileInfo
+ {
+ unsigned outputIndex;
+ CompilerOutput *compilerOutput (TypeCompartment & types) const;
+ CompilerOutput *compilerOutput (JSContext *cx) const;
+ };
+ struct TypeCompartment
+ {
+ Vector <CompilerOutput> *constrainedOutputs;
+ Vector <RecompileInfo> *pendingRecompiles;
+ void addPendingRecompile (JSContext *cx, const RecompileInfo & info);
+ };
+ }
+}
+struct JSScript
+{
+ struct JITScriptHandle
+ {
+ static volatile JITScript *UNJITTABLE __attribute__((visibility ("default")));
+ JITScript *value;
+ bool isValid () { return value != UNJITTABLE; }
+ JITScript *getValid () { return value; }
+ };
+ struct JITScriptSet
+ {
+ JITScriptHandle jitHandleNormal, jitHandleNormalBarriered;
+ JITScriptHandle jitHandleCtor, jitHandleCtorBarriered;
+ JITScriptHandle jitNull1, jitNull2;
+ };
+ JITScriptSet *mJITInfo;
+ void *ion;
+ JITScriptHandle *jitHandle (bool constructing, bool barriers)
+ {
+ return constructing ? (barriers ? &mJITInfo->jitHandleCtorBarriered
+ : &mJITInfo->jitHandleCtor)
+ : (barriers ? &mJITInfo->jitHandleNormalBarriered
+ : &mJITInfo->jitHandleNormal);
+ }
+ JITScript *getJIT (bool constructing, bool barriers)
+ {
+ JITScriptHandle *jith = jitHandle (constructing, barriers);
+ return jith->isValid () ? jith->getValid () : __null;
+ }
+};
+struct JSContext : js::ContextFriendFields
+{
+};
+namespace js
+{
+ __attribute__((noinline, noclone))
+ void CancelOffThreadIonCompile (JSCompartment *, JSScript *)
+ {
+ if (do_exit)
+ exit (0);
+ }
+}
+struct JSCompartment
+{
+ js::types::TypeCompartment types;
+};
+namespace js
+{
+ namespace types
+ {
+ inline bool CompilerOutput::isValid () const
+ {
+ if (!script)
+ return false;
+ switch (kind ())
+ {
+ case MethodJIT:
+ {
+ JITScript *jit = script->getJIT (constructing, barriers);
+ if (!jit)
+ return false;
+ }
+ case ParallelIon:
+ return true;
+ }
+ return false;
+ }
+ inline CompilerOutput *RecompileInfo::compilerOutput (TypeCompartment & types) const
+ {
+ return &(*types.constrainedOutputs)[outputIndex];
+ }
+ inline CompilerOutput *RecompileInfo::compilerOutput (JSContext *cx) const
+ {
+ return compilerOutput (cx->compartment->types);
+ }
+ }
+}
+using namespace js::types;
+__attribute__((noinline, noclone)) void
+TypeCompartment::addPendingRecompile (JSContext *cx, const RecompileInfo & info)
+{
+ CompilerOutput *co = info.compilerOutput (cx);
+ if (co->pendingRecompilation)
+ if (co->isValid ())
+ CancelOffThreadIonCompile (cx->compartment, co->script);
+ if (co->isValid ())
+ pendingRecompiles->append (info);
+}
+volatile JITScript *JSScript::JITScriptHandle::UNJITTABLE;
+int
+main ()
+{
+ JSContext cx;
+ JSCompartment com;
+ RecompileInfo info;
+ cx.compartment = &com;
+ info.outputIndex = 0;
+ js::Vector<CompilerOutput> v;
+ JITScript js;
+ JSScript::JITScriptSet set;
+ __builtin_memset (&set, 0, sizeof set);
+ set.jitHandleCtor.value = &js;
+ JSScript s;
+ s.mJITInfo = &set;
+ CompilerOutput co;
+ co.kindInt = 0;
+ co.constructing = true;
+ co.barriers = false;
+ co.pendingRecompilation = true;
+ co.script = &s;
+ v.mBegin = &co;
+ com.types.constrainedOutputs = &v;
+ com.types.pendingRecompiles = __null;
+ com.types.addPendingRecompile (&cx, info);
+ abort ();
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/parse/ref-qual1.C b/gcc-4.8/gcc/testsuite/g++.dg/parse/ref-qual1.C
new file mode 100644
index 000000000..e3f60c09c
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/parse/ref-qual1.C
@@ -0,0 +1,29 @@
+// PR c++/57068
+
+enum Enums {
+ Enum1 = 0x00000000,
+ Enum2 = 0x00000001
+};
+
+class Flags {
+public:
+ Flags() : i(0) {}
+ Flags(int i): i(i) {}
+ Flags operator&(Enums f) { return Flags(Enums(i & f)); }
+
+ operator bool() { return i; }
+private:
+ int i;
+};
+
+Flags windowState()
+{
+ return Flags();
+}
+
+int main()
+{
+ if (bool(windowState() & Enum1) == true)
+ return 1;
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/template/array26.C b/gcc-4.8/gcc/testsuite/g++.dg/template/array26.C
new file mode 100644
index 000000000..669207169
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/template/array26.C
@@ -0,0 +1,40 @@
+// PR c++/57325
+
+class valarray { int _M_data; };
+template < typename > struct SimpleJet { valarray partials; };
+
+template < class C > struct scoped_ptr_impl
+{
+ scoped_ptr_impl (C *):data_ () { }
+ struct Data
+ {
+ C ptr;
+ };
+ Data data_;
+};
+
+template < class, class = int >struct scoped_ptr;
+template < class C, class D > struct scoped_ptr <C[], D >
+{
+ scoped_ptr ():impl_ (0) { }
+ scoped_ptr_impl < C > impl_;
+};
+
+template < typename JetsT > void
+TestJets (JetsT *)
+{
+ typedef typename JetsT::JetType JetT;
+ scoped_ptr < JetT[] > a;
+}
+
+template < typename T > struct SimpleJets
+{
+ typedef SimpleJet < T > JetType;
+ scoped_ptr < SimpleJet < T >[] > vars_;
+};
+
+void fn ()
+{
+ SimpleJets < double >b;
+ TestJets (&b);
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/template/arrow2.C b/gcc-4.8/gcc/testsuite/g++.dg/template/arrow2.C
new file mode 100644
index 000000000..8ec9e01d0
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/template/arrow2.C
@@ -0,0 +1,12 @@
+// PR c++/56639
+
+struct A {
+ int i;
+ static A* f();
+};
+
+struct B {
+ void g() {
+ int (A::f()->i);
+ }
+};
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/template/arrow3.C b/gcc-4.8/gcc/testsuite/g++.dg/template/arrow3.C
new file mode 100644
index 000000000..b2029ba48
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/template/arrow3.C
@@ -0,0 +1,38 @@
+// PR c++/56895
+// { dg-do compile }
+
+extern struct A { bool foo (); A bar (); } *a;
+
+template <int>
+int
+baz1 ()
+{
+ return 2 << (a->bar().foo() ? 1 : 0);
+}
+
+template <int>
+int
+baz2 ()
+{
+ return 2 >> (a->bar().foo() ? 1 : 0);
+}
+
+template <int>
+int
+baz3 ()
+{
+ return 10 / (a->bar().foo() ? 1 : 2);
+}
+
+template <int>
+int
+baz4 ()
+{
+ return 10 % (a->bar().foo() ? 1 : 0);
+}
+
+int
+test ()
+{
+ return baz1<0> () + baz2<0> () + baz3<0> () + baz4<0> ();
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/template/arrow4.C b/gcc-4.8/gcc/testsuite/g++.dg/template/arrow4.C
new file mode 100644
index 000000000..89e782219
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/template/arrow4.C
@@ -0,0 +1,19 @@
+// PR c++/56895
+// { dg-do compile }
+
+void fn (int *);
+void fn (int);
+extern struct A { bool foo (); A bar (); } *a;
+
+template <int>
+void
+baz ()
+{
+ fn (a->bar().foo() ? 1 : 0);
+}
+
+void
+test ()
+{
+ baz<0> ();
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/template/crash106.C b/gcc-4.8/gcc/testsuite/g++.dg/template/crash106.C
index c2d117e03..ebd47bcff 100644
--- a/gcc-4.8/gcc/testsuite/g++.dg/template/crash106.C
+++ b/gcc-4.8/gcc/testsuite/g++.dg/template/crash106.C
@@ -10,3 +10,5 @@ struct A
template<T N = 0, void (A::*)() = &A::foo<N> > struct B {}; // { dg-error "type|declared" }
B<> b; // { dg-error "type|declaration" }
+
+// { dg-prune-output "could not convert" }
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/template/crash112.C b/gcc-4.8/gcc/testsuite/g++.dg/template/crash112.C
index 919c887fd..ff35764c7 100644
--- a/gcc-4.8/gcc/testsuite/g++.dg/template/crash112.C
+++ b/gcc-4.8/gcc/testsuite/g++.dg/template/crash112.C
@@ -5,7 +5,7 @@ struct A
template<typename> void foo() {}
};
-template<void (A::*)()> struct B {}; // { dg-error "declaration" }
+template<void (A::*)()> struct B {};
template<int> struct C
{
@@ -13,3 +13,5 @@ template<int> struct C
};
C<0> c;
+
+// { dg-prune-output "could not convert" }
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/template/crash84.C b/gcc-4.8/gcc/testsuite/g++.dg/template/crash84.C
index c42f85ce5..103e90a70 100644
--- a/gcc-4.8/gcc/testsuite/g++.dg/template/crash84.C
+++ b/gcc-4.8/gcc/testsuite/g++.dg/template/crash84.C
@@ -5,7 +5,7 @@
template<typename T> struct a
{
template <template <typename> class C, typename X, C<X>* =0>
- struct b // { dg-error "class C' is not a template|is not a valid type" }
+ struct b
{
};
};
@@ -13,7 +13,8 @@ template<typename T> struct a
void
foo ()
{
- a<int> v; // { dg-message "required from here" }
+ a<int> a1; // OK
+ a<int>::b<a,int> b1; // { dg-error "template argument" }
}
-
+// { dg-prune-output "invalid type in declaration" }
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/template/dependent-args1.C b/gcc-4.8/gcc/testsuite/g++.dg/template/dependent-args1.C
index 0b197cf55..a540e55f4 100644
--- a/gcc-4.8/gcc/testsuite/g++.dg/template/dependent-args1.C
+++ b/gcc-4.8/gcc/testsuite/g++.dg/template/dependent-args1.C
@@ -9,3 +9,5 @@ struct A
template<int N, void (A::*)() = &A::foo<N> > struct B {};
B<int> b; // { dg-error "type/value mismatch|expected a constant|invalid type" }
+
+// { dg-prune-output "could not convert" }
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/template/overload13.C b/gcc-4.8/gcc/testsuite/g++.dg/template/overload13.C
new file mode 100644
index 000000000..d41ccd01a
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/template/overload13.C
@@ -0,0 +1,16 @@
+// PR c++/56998
+
+class Secret;
+char IsNullLiteralHelper(Secret* p);
+char (&IsNullLiteralHelper(...))[2];
+
+struct C
+{
+ int val() { return 42; }
+};
+
+template <typename T>
+unsigned f()
+{
+ return sizeof(IsNullLiteralHelper(C().val()));
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/template/sfinae-dr657.C b/gcc-4.8/gcc/testsuite/g++.dg/template/sfinae-dr657.C
new file mode 100644
index 000000000..b78b5a919
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/template/sfinae-dr657.C
@@ -0,0 +1,22 @@
+// DR 657
+// Test that a return or parameter type with abstract class type causes a
+// deduction failure.
+
+struct A
+{
+ A();
+ A(int);
+ virtual void f() = 0;
+};
+
+template<class T> T declval();
+template<class T> int declval(...);
+
+template<class T> void arg(T);
+template<class T> int arg(...);
+
+int main()
+{
+ int i = declval<A>();
+ i = arg<A>(1);
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/torture/pr56694.C b/gcc-4.8/gcc/testsuite/g++.dg/torture/pr56694.C
new file mode 100644
index 000000000..d3de05101
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/torture/pr56694.C
@@ -0,0 +1,31 @@
+// { dg-do compile }
+// { dg-options "-fopenmp" }
+// { dg-require-effective-target fopenmp }
+
+class GException {
+public:
+ class vector_mismatch {
+ public:
+ vector_mismatch(int size1, int size2);
+ };
+};
+class GVector{
+public:
+ GVector& operator+=(const GVector& v);
+ int m_num;
+ double* m_data;
+};
+inline GVector& GVector::operator+= (const GVector& v)
+{
+ if (m_num != v.m_num)
+ throw GException::vector_mismatch(m_num, v.m_num);
+ for (int i = 0; i < m_num; ++i) m_data[i] += v.m_data[i];
+};
+void eval(GVector* m_gradient, GVector* vect_cpy_grad, int n)
+{
+#pragma omp sections
+ {
+ for (int i = 0; i < n; ++i)
+ *m_gradient += vect_cpy_grad[i];
+ }
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/torture/pr56768.C b/gcc-4.8/gcc/testsuite/g++.dg/torture/pr56768.C
new file mode 100644
index 000000000..db504c500
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/torture/pr56768.C
@@ -0,0 +1,41 @@
+// { dg-do compile }
+// { dg-options "-std=c++0x" }
+
+struct Iter
+{
+ int& operator* ();
+ void operator++ ();
+};
+
+bool operator!= (Iter &, Iter &) { }
+
+struct Container
+{
+ Iter begin () const;
+ Iter end () const;
+};
+
+struct J
+{
+ virtual J *mutable_child ();
+};
+
+struct M
+{
+ M (const Container &);
+ J ns_;
+};
+namespace
+{
+ J MakeNamespace (const Container &src)
+ {
+ J a;
+ J *b = 0;
+ for (const int &c: src)
+ b = b ? b->mutable_child () : &a;
+ return a;
+ }
+}
+M::M (const Container &ns):ns_ (MakeNamespace (ns))
+{
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/torture/pr56817.C b/gcc-4.8/gcc/testsuite/g++.dg/torture/pr56817.C
new file mode 100644
index 000000000..35fc6f74f
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/torture/pr56817.C
@@ -0,0 +1,38 @@
+// { dg-do compile }
+// { dg-options "--param max-unroll-times=32" }
+
+struct A {};
+A **q;
+struct B
+{
+ A **j;
+ B () { j = q; }
+ A *& operator[] (unsigned long x) { return j[x]; }
+};
+struct C
+{
+ C (int r) : v (), s (r) {}
+ A *& operator () (int i, int j) { return v[i * s + j]; }
+ B v;
+ int s;
+};
+struct D
+{
+ D ()
+ {
+ unsigned h = 2;
+ for (int i = 0; i < 1; ++i, h *= 2)
+ {
+ C w (h);
+ for (unsigned j = 0; j < h; ++j)
+ for (unsigned k = 0; k < h; ++k)
+ w (j, k) = new A;
+ }
+ }
+};
+void
+foo ()
+{
+ for (int i = 0; i < 3; i++)
+ A (), A (), D ();
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/torture/pr56837.C b/gcc-4.8/gcc/testsuite/g++.dg/torture/pr56837.C
new file mode 100644
index 000000000..d00712280
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/torture/pr56837.C
@@ -0,0 +1,20 @@
+// { dg-do run }
+// { dg-options "-ftree-loop-distribute-patterns" }
+
+extern "C" void abort (void);
+extern "C" int memcmp (const void *, const void *, __SIZE_TYPE__);
+
+bool b1[8];
+bool b2[8] = { true, true, true, true, true, true, true, true };
+
+int main()
+{
+ unsigned int i;
+ for(i=0 ; i < 8; i++)
+ b1[i] = true;
+
+ if (memcmp (b1, b2, 8) != 0)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/warn/Wdiv-by-zero-2.C b/gcc-4.8/gcc/testsuite/g++.dg/warn/Wdiv-by-zero-2.C
new file mode 100644
index 000000000..d7e226ce0
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/warn/Wdiv-by-zero-2.C
@@ -0,0 +1,34 @@
+// PR c++/56607
+// { dg-do compile { target { { lp64 || ilp32 } || llp64 } } }
+// { dg-options "-O2 -Wdiv-by-zero -std=c++11" }
+
+constexpr int sc () { return sizeof (char); }
+constexpr int si () { return sizeof (int); }
+constexpr int zc () { return sc () - 1; }
+constexpr int zi (int d) { return si () / d - 1; }
+
+int
+f1 (void)
+{
+ return 1 / zc (); // { dg-warning "division by zero" }
+}
+
+int
+f2 (void)
+{
+ constexpr int x = zc ();
+ return 1 / x; // { dg-warning "division by zero" }
+}
+
+int
+f3 (void)
+{
+ return 1 / zi (3); // { dg-warning "division by zero" }
+}
+
+int
+f4 (void)
+{
+ constexpr int x = zi (3);
+ return 1 / x; // { dg-warning "division by zero" }
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/warn/anonymous-namespace-4.C b/gcc-4.8/gcc/testsuite/g++.dg/warn/anonymous-namespace-4.C
new file mode 100644
index 000000000..7d1e89edf
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/warn/anonymous-namespace-4.C
@@ -0,0 +1,12 @@
+// PR c++/57137
+
+#include "anonymous-namespace-4.h"
+
+namespace
+{
+ class NonCloneable;
+ void fn1 ()
+ {
+ is_function_impl < NonCloneable > i;
+ }
+}
diff --git a/gcc-4.8/gcc/testsuite/g++.dg/warn/anonymous-namespace-4.h b/gcc-4.8/gcc/testsuite/g++.dg/warn/anonymous-namespace-4.h
new file mode 100644
index 000000000..e0b7d68c1
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/g++.dg/warn/anonymous-namespace-4.h
@@ -0,0 +1,14 @@
+template < typename T > struct integral_c {
+ static const T value = 0;
+};
+struct is_reference:integral_c < bool > { };
+template < class > struct is_function_ptr_helper { };
+template < bool > struct is_function_chooser;
+
+template <> struct is_function_chooser <0 >
+{
+ template < typename T > struct result_:is_function_ptr_helper < T * > { };
+};
+
+template < typename T > struct is_function_impl:is_function_chooser <
+ is_reference::value >::result_ < T > { };
diff --git a/gcc-4.8/gcc/testsuite/gcc.c-torture/compile/pr56745.c b/gcc-4.8/gcc/testsuite/gcc.c-torture/compile/pr56745.c
new file mode 100644
index 000000000..ee9ba051f
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.c-torture/compile/pr56745.c
@@ -0,0 +1,15 @@
+/* PR rtl-optimization/56745 */
+
+unsigned char a[6];
+
+void
+foo ()
+{
+ int i;
+ for (i = 5; i >= 0; i++)
+ {
+ if (++a[i] != 0)
+ break;
+ ++a[i];
+ }
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.c-torture/compile/pr56984.c b/gcc-4.8/gcc/testsuite/gcc.c-torture/compile/pr56984.c
new file mode 100644
index 000000000..bd00bee88
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.c-torture/compile/pr56984.c
@@ -0,0 +1,9 @@
+/* PR tree-optimization/56984 */
+
+int
+foo (int x)
+{
+ if ((x >> 31) < -1)
+ x++;
+ return x;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
index 45cfaddba..d157fe392 100644
--- a/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
+++ b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
@@ -43,7 +43,8 @@ if [istarget "powerpc-*-darwin*"] {
}
if { [istarget *-*-eabi*]
|| [istarget *-*-elf]
- || [istarget *-*-mingw*] } {
+ || [istarget *-*-mingw*]
+ || [istarget *-*-rtems*] } {
lappend additional_flags "-Wl,--allow-multiple-definition"
}
diff --git a/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr33992.c b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr33992.c
index 743361061..92b80e51b 100644
--- a/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr33992.c
+++ b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr33992.c
@@ -7,7 +7,7 @@ bar (unsigned long long i)
abort ();
}
-void __attribute__((always_inline))
+static void __attribute__((always_inline))
foo (unsigned long long *r)
{
int i;
diff --git a/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr56837.c b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr56837.c
new file mode 100644
index 000000000..a6ce2af71
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr56837.c
@@ -0,0 +1,21 @@
+extern void abort (void);
+_Complex int a[1024];
+
+__attribute__((noinline, noclone)) void
+foo (void)
+{
+ int i;
+ for (i = 0; i < 1024; i++)
+ a[i] = -1;
+}
+
+int
+main ()
+{
+ int i;
+ foo ();
+ for (i = 0; i < 1024; i++)
+ if (a[i] != -1)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr56866.c b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr56866.c
new file mode 100644
index 000000000..260b8ff18
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr56866.c
@@ -0,0 +1,45 @@
+/* PR target/56866 */
+
+int
+main ()
+{
+#if __CHAR_BIT__ == 8 && __SIZEOF_LONG_LONG__ == 8 && __SIZEOF_INT__ == 4 && __SIZEOF_SHORT__ == 2
+ unsigned long long wq[256], rq[256];
+ unsigned int wi[256], ri[256];
+ unsigned short ws[256], rs[256];
+ unsigned char wc[256], rc[256];
+ int t;
+
+ __builtin_memset (wq, 0, sizeof wq);
+ __builtin_memset (wi, 0, sizeof wi);
+ __builtin_memset (ws, 0, sizeof ws);
+ __builtin_memset (wc, 0, sizeof wc);
+ wq[0] = 0x0123456789abcdefULL;
+ wi[0] = 0x01234567;
+ ws[0] = 0x4567;
+ wc[0] = 0x73;
+
+ asm volatile ("" : : "g" (wq), "g" (wi), "g" (ws), "g" (wc) : "memory");
+
+ for (t = 0; t < 256; ++t)
+ rq[t] = (wq[t] >> 8) | (wq[t] << (sizeof (wq[0]) * __CHAR_BIT__ - 8));
+ for (t = 0; t < 256; ++t)
+ ri[t] = (wi[t] >> 8) | (wi[t] << (sizeof (wi[0]) * __CHAR_BIT__ - 8));
+ for (t = 0; t < 256; ++t)
+ rs[t] = (ws[t] >> 9) | (ws[t] << (sizeof (ws[0]) * __CHAR_BIT__ - 9));
+ for (t = 0; t < 256; ++t)
+ rc[t] = (wc[t] >> 5) | (wc[t] << (sizeof (wc[0]) * __CHAR_BIT__ - 5));
+
+ asm volatile ("" : : "g" (rq), "g" (ri), "g" (rs), "g" (rc) : "memory");
+
+ if (rq[0] != 0xef0123456789abcdULL || rq[1])
+ __builtin_abort ();
+ if (ri[0] != 0x67012345 || ri[1])
+ __builtin_abort ();
+ if (rs[0] != 0xb3a2 || rs[1])
+ __builtin_abort ();
+ if (rc[0] != 0x9b || rc[1])
+ __builtin_abort ();
+#endif
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr56899.c b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr56899.c
new file mode 100644
index 000000000..9adf9af00
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr56899.c
@@ -0,0 +1,47 @@
+/* PR tree-optimization/56899 */
+
+#if __SIZEOF_INT__ == 4 && __CHAR_BIT__ == 8
+__attribute__((noinline, noclone)) void
+f1 (int v)
+{
+ int x = -214748365 * (v - 1);
+ if (x != -1932735285)
+ __builtin_abort ();
+}
+
+__attribute__((noinline, noclone)) void
+f2 (int v)
+{
+ int x = 214748365 * (v + 1);
+ if (x != -1932735285)
+ __builtin_abort ();
+}
+
+__attribute__((noinline, noclone)) void
+f3 (unsigned int v)
+{
+ unsigned int x = -214748365U * (v - 1);
+ if (x != -1932735285U)
+ __builtin_abort ();
+}
+
+__attribute__((noinline, noclone)) void
+f4 (unsigned int v)
+{
+ unsigned int x = 214748365U * (v + 1);
+ if (x != -1932735285U)
+ __builtin_abort ();
+}
+#endif
+
+int
+main ()
+{
+#if __SIZEOF_INT__ == 4 && __CHAR_BIT__ == 8
+ f1 (10);
+ f2 (-10);
+ f3 (10);
+ f4 (-10U);
+#endif
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr56962.c b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr56962.c
new file mode 100644
index 000000000..7c6da48b3
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr56962.c
@@ -0,0 +1,30 @@
+/* PR tree-optimization/56962 */
+
+extern void abort (void);
+long long v[144];
+
+__attribute__((noinline, noclone)) void
+bar (long long *x)
+{
+ if (x != &v[29])
+ abort ();
+}
+
+__attribute__((noinline, noclone)) void
+foo (long long *x, long y, long z)
+{
+ long long a, b, c;
+ a = x[z * 4 + y * 3];
+ b = x[z * 5 + y * 3];
+ c = x[z * 5 + y * 4];
+ x[y * 4] = a;
+ bar (&x[z * 5 + y]);
+ x[z * 5 + y * 5] = b + c;
+}
+
+int
+main ()
+{
+ foo (v, 24, 1);
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57130.c b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57130.c
new file mode 100644
index 000000000..611320325
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57130.c
@@ -0,0 +1,21 @@
+/* PR rtl-optimization/57130 */
+
+struct S { int a, b, c, d; } s[2] = { { 6, 8, -8, -5 }, { 0, 2, -1, 2 } };
+
+__attribute__((noinline, noclone)) void
+foo (struct S r)
+{
+ static int cnt;
+ if (__builtin_memcmp (&r, &s[cnt++], sizeof r) != 0)
+ __builtin_abort ();
+}
+
+int
+main ()
+{
+ struct S r = { 6, 8, -8, -5 };
+ foo (r);
+ r = (struct S) { 0, 2, -1, 2 };
+ foo (r);
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57131.c b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57131.c
new file mode 100644
index 000000000..f2c41a16b
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57131.c
@@ -0,0 +1,19 @@
+/* PR rtl-optimization/57131 */
+
+extern void abort (void);
+
+int
+main ()
+{
+ volatile int x1 = 0;
+ volatile long long x2 = 0;
+ volatile int x3 = 0;
+ volatile int x4 = 1;
+ volatile int x5 = 1;
+ volatile long long x6 = 1;
+ long long t = ((x1 * (x2 << x3)) / (x4 * x5)) + x6;
+
+ if (t != 1)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57281.c b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57281.c
new file mode 100644
index 000000000..db3db10d9
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57281.c
@@ -0,0 +1,25 @@
+/* PR rtl-optimization/57281 */
+
+int a = 1, b, d, *e = &d;
+long long c, *g = &c;
+volatile long long f;
+
+int
+foo (int h)
+{
+ int j = *g = b;
+ return h == 0 ? j : 0;
+}
+
+int
+main ()
+{
+ int h = a;
+ for (; b != -20; b--)
+ {
+ (int) f;
+ *e = 0;
+ *e = foo (h);
+ }
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57321.c b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57321.c
new file mode 100644
index 000000000..79b3d4d17
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57321.c
@@ -0,0 +1,24 @@
+/* PR tree-optimization/57321 */
+
+int a = 1, *b, **c;
+
+static int
+foo (int *p)
+{
+ if (*p == a)
+ {
+ int *i[7][5] = { { 0 } };
+ int **j[1][1];
+ j[0][0] = &i[0][0];
+ *b = &p != c;
+ }
+ return 0;
+}
+
+int
+main ()
+{
+ int i = 0;
+ foo (&i);
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57344-1.c b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57344-1.c
new file mode 100644
index 000000000..66893269e
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57344-1.c
@@ -0,0 +1,32 @@
+/* PR middle-end/57344 */
+
+struct __attribute__((packed)) S
+{
+ int a : 11;
+#if __SIZEOF_INT__ * __CHAR_BIT__ >= 32
+ int b : 22;
+#else
+ int b : 13;
+#endif
+ char c;
+ int : 0;
+} s[2];
+int i;
+
+__attribute__((noinline, noclone)) void
+foo (int x)
+{
+ if (x != -3161)
+ __builtin_abort ();
+ asm volatile ("" : : : "memory");
+}
+
+int
+main ()
+{
+ struct S t = { 0, -3161L };
+ s[1] = t;
+ for (; i < 1; i++)
+ foo (s[1].b);
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57344-2.c b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57344-2.c
new file mode 100644
index 000000000..9bf60cab8
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57344-2.c
@@ -0,0 +1,32 @@
+/* PR middle-end/57344 */
+
+struct __attribute__((packed)) S
+{
+ int a : 27;
+#if __SIZEOF_INT__ * __CHAR_BIT__ >= 32
+ int b : 22;
+#else
+ int b : 13;
+#endif
+ char c;
+ int : 0;
+} s[2];
+int i;
+
+__attribute__((noinline, noclone)) void
+foo (int x)
+{
+ if (x != -3161)
+ __builtin_abort ();
+ asm volatile ("" : : : "memory");
+}
+
+int
+main ()
+{
+ struct S t = { 0, -3161L };
+ s[1] = t;
+ for (; i < 1; i++)
+ foo (s[1].b);
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57344-3.c b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57344-3.c
new file mode 100644
index 000000000..f9daea6d3
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57344-3.c
@@ -0,0 +1,28 @@
+/* PR middle-end/57344 */
+
+struct __attribute__((packed)) S
+{
+ long long int a : 43;
+ long long int b : 22;
+ char c;
+ long long int : 0;
+} s[2];
+int i;
+
+__attribute__((noinline, noclone)) void
+foo (long long int x)
+{
+ if (x != -3161LL)
+ __builtin_abort ();
+ asm volatile ("" : : : "memory");
+}
+
+int
+main ()
+{
+ struct S t = { 0, -3161LL };
+ s[1] = t;
+ for (; i < 1; i++)
+ foo (s[1].b);
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57344-4.c b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57344-4.c
new file mode 100644
index 000000000..0b2bf1524
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.c-torture/execute/pr57344-4.c
@@ -0,0 +1,28 @@
+/* PR middle-end/57344 */
+
+struct __attribute__((packed)) S
+{
+ long long int a : 59;
+ long long int b : 54;
+ char c;
+ long long int : 0;
+} s[2];
+int i;
+
+__attribute__((noinline, noclone)) void
+foo (long long int x)
+{
+ if (x != -1220975898975746LL)
+ __builtin_abort ();
+ asm volatile ("" : : : "memory");
+}
+
+int
+main ()
+{
+ struct S t = { 0, -1220975898975746LL };
+ s[1] = t;
+ for (; i < 1; i++)
+ foo (s[1].b);
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/autopar/pr57103.c b/gcc-4.8/gcc/testsuite/gcc.dg/autopar/pr57103.c
new file mode 100644
index 000000000..fa7067607
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/autopar/pr57103.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O -ftree-parallelize-loops=4" } */
+
+int d[1024];
+
+static inline int foo (void)
+{
+ int s = 0;
+ int i = 0;
+ for (; i < 1024; i++)
+ s += d[i];
+ return s;
+}
+
+void bar (void)
+{
+ if (foo ())
+ __builtin_abort ();
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/autopar/pr57185.c b/gcc-4.8/gcc/testsuite/gcc.dg/autopar/pr57185.c
new file mode 100644
index 000000000..b4657576d
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/autopar/pr57185.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -ftree-parallelize-loops=2 -fipa-pta" } */
+
+int a, b;
+int *d;
+void f(void)
+{
+ int c;
+ b %= 1;
+
+ if(1 - (b < 1))
+ {
+ int *q = 0;
+
+ if(a)
+ {
+ c = 0;
+lbl:
+ for(*d; *d; ++*d)
+ if(c ? : a ? : (c = 1) ? : 0)
+ *q &= 1;
+ return;
+ }
+
+ q = (int *)1;
+ }
+ goto lbl;
+}
+
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/const-1.c b/gcc-4.8/gcc/testsuite/gcc.dg/const-1.c
index 2a532f896..a5b2b1677 100644
--- a/gcc-4.8/gcc/testsuite/gcc.dg/const-1.c
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/const-1.c
@@ -1,4 +1,4 @@
-/* { dg-do compile } */
+/* { dg-do compile { target nonpic } } */
/* { dg-options "-O2 -Wsuggest-attribute=const" } */
extern int extern_const(int a) __attribute__ ((const));
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/ipa/pr56988.c b/gcc-4.8/gcc/testsuite/gcc.dg/ipa/pr56988.c
new file mode 100644
index 000000000..ab20159b8
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/ipa/pr56988.c
@@ -0,0 +1,38 @@
+/* { dg-do run } */
+/* { dg-options "-O3" } */
+/* { dg-add-options bind_pic_locally } */
+
+struct S
+{
+ int a, b, c;
+};
+
+volatile int g;
+
+static void __attribute__ ((noinline, noclone))
+bar (struct S **p)
+{
+ g = 5;
+};
+
+static void __attribute__ ((noinline))
+foo (struct S *p)
+{
+ int i = p->a;
+ if (i != 1)
+ __builtin_abort ();
+ bar (&p);
+}
+
+int
+main (int argc, char *argv[])
+{
+ struct S s;
+ s.a = 1;
+ s.b = 64;
+ s.c = 32;
+ foo (&s);
+
+ return 0;
+}
+
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/ipa/pr57347.c b/gcc-4.8/gcc/testsuite/gcc.dg/ipa/pr57347.c
new file mode 100644
index 000000000..731b4868e
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/ipa/pr57347.c
@@ -0,0 +1,27 @@
+/* { dg-do run } */
+/* { dg-options "-O3" } */
+
+struct S1 { int f0; int f1 : 10; int f2 : 13; };
+int i;
+int *j = &i;
+
+static void
+foo (struct S1 s)
+{
+ int *p;
+ int l[88];
+ int **pp = &p;
+ *pp = &l[1];
+ l[0] = 1;
+ *j = 1 && s.f2;
+}
+
+int
+main ()
+{
+ struct S1 s = { 0, 0, 1 };
+ foo (s);
+ if (i != 1)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/ipa/pure-const-1.c b/gcc-4.8/gcc/testsuite/gcc.dg/ipa/pure-const-1.c
index 51837ea9b..f76dd87d4 100644
--- a/gcc-4.8/gcc/testsuite/gcc.dg/ipa/pure-const-1.c
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/ipa/pure-const-1.c
@@ -1,4 +1,4 @@
-/* { dg-do compile } */
+/* { dg-do compile { target nonpic } } */
/* { dg-options "-O3 -fdump-tree-local-pure-const1 -fdump-ipa-pure-const -fdump-tree-optimized -fno-early-inlining" } */
void abort (void);
int error_code;
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/noreturn-8.c b/gcc-4.8/gcc/testsuite/gcc.dg/noreturn-8.c
index 50765da37..1e75633c8 100644
--- a/gcc-4.8/gcc/testsuite/gcc.dg/noreturn-8.c
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/noreturn-8.c
@@ -1,4 +1,4 @@
-/* { dg-do run } */
+/* { dg-do run { target nonpic } } */
/* { dg-options "-O2" } */
void exit (int);
void noreturn_autodetection_failed ();
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/pr48186.c b/gcc-4.8/gcc/testsuite/gcc.dg/pr48186.c
new file mode 100644
index 000000000..5635f930d
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/pr48186.c
@@ -0,0 +1,5 @@
+/* PR tree-optimization/48186 */
+/* { dg-do compile } */
+/* { dg-options "-O --param hot-bb-frequency-fraction=0" } */
+
+void foo (void) { }
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/pr55702.c b/gcc-4.8/gcc/testsuite/gcc.dg/pr55702.c
new file mode 100644
index 000000000..8770a3758
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/pr55702.c
@@ -0,0 +1,9 @@
+/* PR sanitizer/55702 */
+/* { dg-do compile { target { x86_64-*-linux* && lp64 } } } */
+/* { dg-options "-fsanitize=thread" } */
+
+void
+foo ()
+{
+ __builtin_return (0);
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/pr56847.c b/gcc-4.8/gcc/testsuite/gcc.dg/pr56847.c
new file mode 100644
index 000000000..b94aae1d8
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/pr56847.c
@@ -0,0 +1,12 @@
+/* PR rtl-optimization/56847 */
+/* { dg-do compile { target pie } } */
+/* { dg-options "-O2 -fpie" } */
+
+struct S { long int a, b; } e;
+__thread struct S s;
+
+void
+foo (void)
+{
+ s = e;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/pr56890-1.c b/gcc-4.8/gcc/testsuite/gcc.dg/pr56890-1.c
new file mode 100644
index 000000000..93b2134e5
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/pr56890-1.c
@@ -0,0 +1,15 @@
+/* PR target/56890 */
+/* Reported by Rainer Jung <rainer.jung@kippdata.de> */
+
+/* { dg-do assemble } */
+/* { dg-options "-O2" } */
+
+unsigned int buggy(unsigned int min, unsigned int max)
+{
+ if (max < 16384) {
+ unsigned short num16 = 0;
+ num16 = min + (long) ((double) (max - min + 1.0) * (num16 / (65535 + 1.0)));
+ return num16;
+ }
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/pr56890-2.c b/gcc-4.8/gcc/testsuite/gcc.dg/pr56890-2.c
new file mode 100644
index 000000000..474327e9d
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/pr56890-2.c
@@ -0,0 +1,19 @@
+/* PR target/56890 */
+/* Reported by Rainer Jung <rainer.jung@kippdata.de> */
+
+/* { dg-do assemble } */
+/* { dg-options "-O" } */
+
+unsigned int buggy(unsigned int min, unsigned int max)
+{
+ unsigned int number;
+ if (max < 16384) {
+ unsigned short num16;
+ num16 = min + (long) ((double) (max - min + 1.0) * (num16 / (65535 + 1.0)));
+ return num16;
+ }
+ else {
+ (number) = min + (long) ((double) (max - min + 1.0) * (number / (4294967295U + 1.0)));
+ }
+ return number;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/pr56990.c b/gcc-4.8/gcc/testsuite/gcc.dg/pr56990.c
new file mode 100644
index 000000000..ecb6acef6
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/pr56990.c
@@ -0,0 +1,10 @@
+/* PR sanitizer/56990 */
+/* { dg-do compile { target { x86_64-*-linux* && lp64 } } } */
+/* { dg-options "-fsanitize=thread" } */
+
+struct S{};
+
+void foo(struct S *p)
+{
+ *p = (struct S){};
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/pr56992.c b/gcc-4.8/gcc/testsuite/gcc.dg/pr56992.c
new file mode 100644
index 000000000..e945a18ca
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/pr56992.c
@@ -0,0 +1,18 @@
+/* PR rtl-optimization/56992 */
+/* { dg-do compile } */
+/* { dg-options "-Og -g" } */
+
+inline int
+foo (const char *x)
+{
+ return __builtin_strlen (x);
+}
+
+int
+bar (const char *x, unsigned int *y)
+{
+ unsigned int l = foo (x);
+ if (l > 15)
+ l = 15;
+ *y = l;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/pr57104.c b/gcc-4.8/gcc/testsuite/gcc.dg/pr57104.c
new file mode 100644
index 000000000..3a7013bea
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/pr57104.c
@@ -0,0 +1,12 @@
+/* PR tree-optimization/57104 */
+/* { dg-do compile { target { x86_64-*-linux* && lp64 } } } */
+/* { dg-options "-fsanitize=thread" } */
+
+register int r asm ("r14");
+int v;
+
+int
+foo (void)
+{
+ return r + v;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/pr57149.c b/gcc-4.8/gcc/testsuite/gcc.dg/pr57149.c
new file mode 100644
index 000000000..ab4d5e408
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/pr57149.c
@@ -0,0 +1,50 @@
+/* PR tree-optimization/57149 */
+/* { dg-do compile } */
+/* { dg-options "-Os -Wuninitialized" } */
+
+struct A { struct A *a, *b; };
+struct D { struct A e; };
+struct E { unsigned char f; struct { struct A e; } g; };
+struct F { struct E i[32]; };
+
+extern int fn0 (void);
+extern int fn1 (struct E *, struct D *);
+
+static inline __attribute__ ((always_inline)) int
+fn2 (const struct A *x)
+{
+ return x->a == x;
+}
+
+static int
+fn3 (struct E *x)
+{
+ struct D *l, *m;
+ int retval = retval;
+ if (fn2 (&x->g.e))
+ return 0;
+ for (l = (struct D *) x->g.e.a, m = (struct D *) l->e.a;
+ &l->e != &x->g.e;
+ l = m, m = (struct D *) m->e.a)
+ retval = fn1 (x, l);
+ return retval;
+}
+
+void
+fn4 (struct F *x, unsigned k)
+{
+ unsigned i;
+ for (i = 0; i < k; i++)
+ {
+ struct E *y = &x->i[i];
+ int err = -22;
+ err = fn3 (y);
+ if (y->f == 0)
+ {
+ if (err > 0)
+ err = fn0 ();
+ if (err < 0) /* { dg-bogus "may be used uninitialized in this function" } */
+ fn0 ();
+ }
+ }
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/pr57184.c b/gcc-4.8/gcc/testsuite/gcc.dg/pr57184.c
new file mode 100644
index 000000000..319d3fd53
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/pr57184.c
@@ -0,0 +1,13 @@
+/* PR debug/57184 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -g" } */
+
+struct S {};
+void bar (struct S *const);
+static struct S *const c = &(struct S) {};
+
+void
+foo (void)
+{
+ bar (c);
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/pr57300.c b/gcc-4.8/gcc/testsuite/gcc.dg/pr57300.c
new file mode 100644
index 000000000..13a272de5
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/pr57300.c
@@ -0,0 +1,21 @@
+/* PR rtl-optimization/57300 */
+/* { dg-do run } */
+/* { dg-options "-O3" } */
+/* { dg-additional-options "-msse2" { target sse2_runtime } } */
+
+extern void abort (void);
+int a, b, d[10];
+long long c;
+
+int
+main ()
+{
+ int e;
+ for (e = 0; e < 10; e++)
+ d[e] = 1;
+ if (d[0])
+ c = a = (b == 0 || 1 % b);
+ if (a != 1)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/strlenopt-23.c b/gcc-4.8/gcc/testsuite/gcc.dg/strlenopt-23.c
new file mode 100644
index 000000000..75dab2ae0
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/strlenopt-23.c
@@ -0,0 +1,15 @@
+/* PR tree-optimization/57230 */
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+#include "strlenopt.h"
+
+int
+main ()
+{
+ char p[] = "hello world";
+ p[0] = (char) (strlen (p) - 1);
+ if (strlen (p) != 11)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/torture/builtin-logb-1.c b/gcc-4.8/gcc/testsuite/gcc.dg/torture/builtin-logb-1.c
index 387ed2f75..d759d1c6c 100644
--- a/gcc-4.8/gcc/testsuite/gcc.dg/torture/builtin-logb-1.c
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/torture/builtin-logb-1.c
@@ -48,25 +48,25 @@ extern void link_error(int);
/* Test if FUNCRES(FUNC(NEG FUNCARG(ARGARG))) is false. Check the
sign as well. */
#ifndef __SPU__
-#define TESTIT3(FUNC,NEG,FUNCARG,ARGARG,FUNCRES) do { \
+#define TESTIT3(FUNC,NEG,FUNCARG,ARGARG,FUNCRES,NEG2) do { \
if (!__builtin_##FUNCRES##f(__builtin_##FUNC(NEG __builtin_##FUNCARG##f(ARGARG))) \
- || CKSGN_F(__builtin_##FUNC##f(NEG __builtin_##FUNCARG##f(ARGARG)), NEG __builtin_##FUNCARG##f(ARGARG))) \
+ || CKSGN_F(__builtin_##FUNC##f(NEG __builtin_##FUNCARG##f(ARGARG)), NEG2 __builtin_##FUNCARG##f(ARGARG))) \
link_error(__LINE__); \
if (!__builtin_##FUNCRES(__builtin_##FUNC(NEG __builtin_##FUNCARG(ARGARG))) \
- || CKSGN(__builtin_##FUNC(NEG __builtin_##FUNCARG(ARGARG)), NEG __builtin_##FUNCARG(ARGARG))) \
+ || CKSGN(__builtin_##FUNC(NEG __builtin_##FUNCARG(ARGARG)), NEG2 __builtin_##FUNCARG(ARGARG))) \
link_error(__LINE__); \
if (!__builtin_##FUNCRES##l(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG))) \
- || CKSGN_L(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG)), NEG __builtin_##FUNCARG##l(ARGARG))) \
+ || CKSGN_L(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG)), NEG2 __builtin_##FUNCARG##l(ARGARG))) \
link_error(__LINE__); \
} while (0)
#else
-#define TESTIT3(FUNC,NEG,FUNCARG,ARGARG,FUNCRES) do { \
+#define TESTIT3(FUNC,NEG,FUNCARG,ARGARG,FUNCRES,NEG2) do { \
/* SPU single-precision floating point format does not support Inf or Nan. */ \
if (!__builtin_##FUNCRES(__builtin_##FUNC(NEG __builtin_##FUNCARG(ARGARG))) \
- || CKSGN(__builtin_##FUNC(NEG __builtin_##FUNCARG(ARGARG)), NEG __builtin_##FUNCARG(ARGARG))) \
+ || CKSGN(__builtin_##FUNC(NEG __builtin_##FUNCARG(ARGARG)), NEG2 __builtin_##FUNCARG(ARGARG))) \
link_error(__LINE__); \
if (!__builtin_##FUNCRES##l(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG))) \
- || CKSGN_L(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG)), NEG __builtin_##FUNCARG##l(ARGARG))) \
+ || CKSGN_L(__builtin_##FUNC##l(NEG __builtin_##FUNCARG##l(ARGARG)), NEG2 __builtin_##FUNCARG##l(ARGARG))) \
link_error(__LINE__); \
} while (0)
#endif
@@ -173,15 +173,15 @@ foo(void)
/* Test for f(+-Inf) -> +-Inf and f(+-NaN) -> +-NaN, regardless of
the radix. */
- TESTIT3 (logb, ,inf, , isinf);
- TESTIT3 (logb, - ,inf, , isinf);
- TESTIT3 (logb, ,nan, "", isnan);
- TESTIT3 (logb, - ,nan, "", isnan);
-
- TESTIT3 (significand, ,inf, , isinf);
- TESTIT3 (significand, - ,inf, , isinf);
- TESTIT3 (significand, ,nan, "", isnan);
- TESTIT3 (significand, - ,nan, "", isnan);
+ TESTIT3 (logb, ,inf, , isinf, );
+ TESTIT3 (logb, - ,inf, , isinf, );
+ TESTIT3 (logb, ,nan, "", isnan, );
+ TESTIT3 (logb, - ,nan, "", isnan, -);
+
+ TESTIT3 (significand, ,inf, , isinf, );
+ TESTIT3 (significand, - ,inf, , isinf, -);
+ TESTIT3 (significand, ,nan, "", isnan, );
+ TESTIT3 (significand, - ,nan, "", isnan, -);
}
int main()
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr55964-2.c b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr55964-2.c
new file mode 100644
index 000000000..a3bd09d5b
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr55964-2.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-ftree-loop-distribution -funswitch-loops" } */
+
+struct test_struct {
+ int a, b[10], c[10], d[10];
+};
+
+extern struct test_struct* new_struct;
+
+void testfunc(struct test_struct* old_struct)
+{
+ int i;
+ for (i = 0; i < 10; ++i)
+ {
+ new_struct->b[i] = old_struct ? old_struct->b[i] : -1;
+ new_struct->c[i] = old_struct ? old_struct->c[i] : 0;
+ new_struct->d[i] = old_struct ? old_struct->d[i] : 0;
+ }
+ if (old_struct)
+ old_struct->a++;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr56407.c b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr56407.c
new file mode 100644
index 000000000..f26fd23f7
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr56407.c
@@ -0,0 +1,48 @@
+/* { dg-do run } */
+
+extern void abort(void);
+extern int rand(void);
+
+static void copy(int *r,int *a,int na)
+{
+ int i;
+ for( i = 0 ; i < na ; i++ )
+ r[i] = a[i];
+}
+
+static void foo(int *a,int na)
+{
+ int i;
+ for( i = 0 ; i < na ; i++ )
+ a[i] = rand();
+}
+
+static int cmp(int *a,int *b,int n)
+{
+ int i;
+ for( i = 0 ; i < n ; i++ )
+ if ( a[i] != b[i] )
+ return -1;
+ return 0;
+}
+
+void __attribute__((noinline,noclone))
+test(int sz,int comm)
+{
+ int j,n;
+ int v[64],w[64];
+ for( j = 1 ; j <= sz ; j++ )
+ {
+ n = (2 * j - 1) * (2 * j - 1);
+ foo(w,n);
+ copy(v,w,n);
+ if ( comm )
+ if ( cmp(v,w,n) ) abort ();
+ }
+}
+
+int main()
+{
+ test(2,1);
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr56501.c b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr56501.c
new file mode 100644
index 000000000..d6fc29d7b
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr56501.c
@@ -0,0 +1,27 @@
+/* { dg-do compile } */
+/* { dg-options "-w" } */
+
+int a;
+void try_help () __attribute__ ((__noreturn__));
+void try_help ()
+{
+}
+
+int main ()
+{
+ switch (a)
+ {
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ break;
+ default:
+ try_help ();
+ }
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57083.c b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57083.c
new file mode 100644
index 000000000..070a53d21
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57083.c
@@ -0,0 +1,15 @@
+/* PR tree-optimization/57083 */
+/* { dg-do run { target int32plus } } */
+
+extern void abort (void);
+short x = 1;
+int y = 0;
+
+int
+main ()
+{
+ unsigned t = (0x7fff8001U - x) << (y == 0);
+ if (t != 0xffff0000U)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57214.c b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57214.c
new file mode 100644
index 000000000..d51067d95
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57214.c
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+
+extern int baz (void);
+extern int foo (void) __attribute__ ((returns_twice));
+
+void
+bar (_Bool b)
+{
+ int buf[1];
+ while (1)
+ {
+ _Bool x = 1;
+ if (b)
+ baz ();
+ b = 1;
+ baz ();
+ x = 0;
+ int i;
+ while (buf[i] && i)
+ i++;
+ foo ();
+ if (!x)
+ b = 0;
+ }
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57251.c b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57251.c
new file mode 100644
index 000000000..2fe268c36
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57251.c
@@ -0,0 +1,12 @@
+/* PR middle-end/57251 */
+/* { dg-do compile } */
+/* { dg-options "-ftracer" } */
+
+short a, b;
+int
+f (void)
+{
+ long long i = 2;
+ a ? f () ? : 0 : b--;
+ b &= i *= a |= 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57303.c b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57303.c
new file mode 100644
index 000000000..1ddb5a8aa
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57303.c
@@ -0,0 +1,33 @@
+/* { dg-do run } */
+
+void abort (void);
+
+struct S0
+{
+ int f0;
+};
+struct S1
+{
+ struct S0 f0;
+};
+
+struct S1 x = { {0} };
+struct S1 y = { {1} };
+
+static void
+foo (struct S0 p)
+{
+ struct S0 *l = &y.f0;
+ *l = x.f0;
+ if (p.f0)
+ *l = *l;
+}
+
+int
+main ()
+{
+ foo(y.f0);
+ if (y.f0.f0 != 0)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57330.c b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57330.c
new file mode 100644
index 000000000..3e6cbcbd2
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57330.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+
+void foo (int a)
+{}
+
+void *a;
+void bar ()
+{
+ void **( *b ) ( ) = (void**(*)()) foo;
+ a = b (0);
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57341.c b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57341.c
new file mode 100644
index 000000000..3f5cc8dd7
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/torture/pr57341.c
@@ -0,0 +1,22 @@
+/* { dg-do run } */
+/* { dg-additional-options "-msse" { target sse2_runtime } } */
+
+int a, d;
+int *b = &a, **c;
+int
+main ()
+{
+ int e;
+ {
+ int f[4];
+ for (d = 0; d < 4; d++)
+ f[d] = 1;
+ e = f[1];
+ }
+ int *g[28] = { };
+ *b = e;
+ c = &g[0];
+ if (a != 1)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c b/gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c
index bf0714902..abf1e07e2 100644
--- a/gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c
@@ -1,4 +1,4 @@
-/* { dg-do compile } */
+/* { dg-do compile { target nonpic } } */
/* { dg-options "-O3 -fdump-tree-fnsplit -fdump-tree-optimized" } */
struct a {int a,b;};
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c b/gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c
index 6fc2a57a9..bcd72c5ef 100644
--- a/gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c
@@ -1,4 +1,4 @@
-/* { dg-do compile } */
+/* { dg-do compile { target nonpic } } */
/* { dg-options "-O2 -fdump-tree-pre-stats -fdump-tree-fre1" } */
#include <stddef.h>
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/reassoc-27.c b/gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/reassoc-27.c
new file mode 100644
index 000000000..f406beb2f
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/reassoc-27.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O -ffast-math -frounding-math -fdump-tree-optimized" } */
+
+double baz (double foo, double bar)
+{
+ return foo * foo * foo * foo * bar * bar * bar * bar;
+}
+
+/* We should re-associate this as (foo * bar)**3. */
+/* { dg-final { scan-tree-dump-times " \\\* " 3 "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/stdarg-6.c b/gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/stdarg-6.c
index c21dc17b5..70cde1b80 100644
--- a/gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/stdarg-6.c
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/tree-ssa/stdarg-6.c
@@ -33,3 +33,4 @@ bar (int x, char const *y, ...)
/* { dg-final { scan-tree-dump "bar: va_list escapes 1, needs to save all GPR units" "stdarg" { target { { i?86-*-* x86_64-*-* } && ia32 } } } } */
/* { dg-final { scan-tree-dump "bar: va_list escapes 1, needs to save all GPR units" "stdarg" { target ia64-*-* } } } */
/* { dg-final { scan-tree-dump "bar: va_list escapes 1, needs to save all GPR units" "stdarg" { target { powerpc*-*-* && lp64 } } } } */
+/* { dg-final { cleanup-tree-dump "stdarg" } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/uninit-pred-5_a.c b/gcc-4.8/gcc/testsuite/gcc.dg/uninit-pred-5_a.c
index 7fa0b253f..5ced8971c 100644
--- a/gcc-4.8/gcc/testsuite/gcc.dg/uninit-pred-5_a.c
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/uninit-pred-5_a.c
@@ -6,8 +6,9 @@ int bar();
int blah(int);
void t(int);
+static int
__attribute__((always_inline))
-int foo (int n, int* v, int r)
+foo (int n, int* v, int r)
{
int flag = 0;
if (r > n)
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/uninit-pred-5_b.c b/gcc-4.8/gcc/testsuite/gcc.dg/uninit-pred-5_b.c
index 9760fa8a5..e8da25656 100644
--- a/gcc-4.8/gcc/testsuite/gcc.dg/uninit-pred-5_b.c
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/uninit-pred-5_b.c
@@ -6,8 +6,9 @@ int bar();
int blah(int);
void t(int);
+static int
__attribute__((always_inline))
-int foo (int n, int* v, int r)
+foo (int n, int* v, int r)
{
int flag = 0;
if (r > n)
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/vect/pr56918.c b/gcc-4.8/gcc/testsuite/gcc.dg/vect/pr56918.c
new file mode 100644
index 000000000..581faa0e2
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/vect/pr56918.c
@@ -0,0 +1,31 @@
+/* PR tree-optimization/56918 */
+/* { dg-additional-options "-O3" } */
+
+#include "tree-vect.h"
+
+extern void abort (void);
+double data[8];
+
+__attribute__((noinline, noclone)) void
+foo ()
+{
+ int i;
+ for (i = 0; i < 8; ++i)
+ data[i] = ((i + 2) % 3) + 1;
+}
+
+int
+main ()
+{
+ int i;
+ check_vect ();
+ foo ();
+ if (data[0] != 3 || data[7] != 1)
+ abort ();
+ for (i = 1; i < 4; ++i)
+ if (data[i] != i || data[i + 3] != i)
+ abort ();
+ return 0;
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.dg/vect/pr56920.c b/gcc-4.8/gcc/testsuite/gcc.dg/vect/pr56920.c
new file mode 100644
index 000000000..c6c7cca0f
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.dg/vect/pr56920.c
@@ -0,0 +1,21 @@
+/* PR tree-optimization/56920 */
+/* { dg-additional-options "-O3" } */
+
+#include "tree-vect.h"
+
+extern void abort (void);
+
+int
+main ()
+{
+ unsigned int a[15], i;
+ check_vect ();
+ for (i = 0; i < 15; ++i)
+ a[i] = (i * 2) % 15;
+ for (i = 0; i < 15; ++i)
+ if (a[i] != (i * 2) % 15)
+ abort ();
+ return 0;
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/asm-adder-clobber-lr.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/asm-adder-clobber-lr.c
new file mode 100644
index 000000000..540c79b01
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/asm-adder-clobber-lr.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+int
+adder (int a, int b)
+{
+ int result;
+ __asm__ ("add %w0,%w1,%w2" : "=r"(result) : "r"(a), "r"(b) : "x30");
+ return result;
+}
+
+int
+main (int argc, char** argv)
+{
+ int i;
+ int total = argc;
+ for (i = 0; i < 20; i++)
+ total = adder (total, i);
+
+ if (total != (190 + argc))
+ abort ();
+
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/asm-adder-no-clobber-lr.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/asm-adder-no-clobber-lr.c
new file mode 100644
index 000000000..2543d50e7
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/asm-adder-no-clobber-lr.c
@@ -0,0 +1,23 @@
+extern void abort (void);
+
+int
+adder (int a, int b)
+{
+ int result;
+ __asm__ ("add %w0,%w1,%w2" : "=r"(result) : "r"(a), "r"(b) : );
+ return result;
+}
+
+int
+main (int argc, char** argv)
+{
+ int i;
+ int total = argc;
+ for (i = 0; i < 20; i++)
+ total = adder (total, i);
+
+ if (total != (190 + argc))
+ abort ();
+
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/movk.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/movk.c
new file mode 100644
index 000000000..e4b22098c
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/movk.c
@@ -0,0 +1,31 @@
+/* { dg-do run } */
+/* { dg-options "-O2 --save-temps -fno-inline" } */
+
+extern void abort (void);
+
+long long int
+dummy_number_generator ()
+{
+ /* { dg-final { scan-assembler "movk\tx\[0-9\]+, 0xefff, lsl 16" } } */
+ /* { dg-final { scan-assembler "movk\tx\[0-9\]+, 0xc4cc, lsl 32" } } */
+ /* { dg-final { scan-assembler "movk\tx\[0-9\]+, 0xfffe, lsl 48" } } */
+ return -346565474575675;
+}
+
+int
+main (void)
+{
+
+ long long int num = dummy_number_generator ();
+ if (num > 0)
+ abort ();
+
+ /* { dg-final { scan-assembler "movk\tx\[0-9\]+, 0x4667, lsl 16" } } */
+ /* { dg-final { scan-assembler "movk\tx\[0-9\]+, 0x7a3d, lsl 32" } } */
+ if (num / 69313094915135 != -5)
+ abort ();
+
+ return 0;
+}
+
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-1.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-1.c
new file mode 100644
index 000000000..e44ca6d4c
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-1.c
@@ -0,0 +1,15 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fno-inline --save-temps" } */
+
+#include "asm-adder-no-clobber-lr.c"
+
+/* omit-frame-pointer is FALSE.
+ omit-leaf-frame-pointer is FALSE.
+ LR is not being clobbered in the leaf.
+
+ With no frame pointer omissions, we expect a frame record
+ for main and the leaf. */
+
+/* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */
+
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-2.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-2.c
new file mode 100644
index 000000000..40e483526
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-2.c
@@ -0,0 +1,15 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fomit-frame-pointer -mno-omit-leaf-frame-pointer -fno-inline --save-temps" } */
+
+#include "asm-adder-no-clobber-lr.c"
+
+/* omit-frame-pointer is TRUE.
+ omit-leaf-frame-pointer is false, but irrelevant due to omit-frame-pointer.
+ LR is not being clobbered in the leaf.
+
+ Since we asked to have no frame pointers anywhere, we expect no frame
+ record in main or the leaf. */
+
+/* { dg-final { scan-assembler-not "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" } } */
+
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-3.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-3.c
new file mode 100644
index 000000000..98cb2e0b6
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-3.c
@@ -0,0 +1,15 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fomit-frame-pointer -momit-leaf-frame-pointer -fno-inline --save-temps" } */
+
+#include "asm-adder-no-clobber-lr.c"
+
+/* omit-frame-pointer is TRUE.
+ omit-leaf-frame-pointer is true, but irrelevant due to omit-frame-pointer.
+ LR is not being clobbered in the leaf.
+
+ Since we asked to have no frame pointers anywhere, we expect no frame
+ record in main or the leaf. */
+
+/* { dg-final { scan-assembler-not "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" } } */
+
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-4.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-4.c
new file mode 100644
index 000000000..4143a7a9c
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-4.c
@@ -0,0 +1,16 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-omit-frame-pointer -momit-leaf-frame-pointer -fno-inline --save-temps" } */
+
+#include "asm-adder-no-clobber-lr.c"
+
+/* omit-frame-pointer is FALSE.
+ omit-leaf-frame-pointer is TRUE.
+ LR is not being clobbered in the leaf.
+
+ Unless we are removing all frame records, it's OK to remove the frame
+ record for a leaf where LR is not clobbered. Therefore, we expect a
+ frame record only in main. */
+
+/* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 1 } } */
+
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-5.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-5.c
new file mode 100644
index 000000000..c22bdc304
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-5.c
@@ -0,0 +1,15 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fno-inline --save-temps" } */
+
+#include "asm-adder-clobber-lr.c"
+
+/* omit-frame-pointer is FALSE.
+ omit-leaf-frame-pointer is FALSE.
+ LR is being clobbered in the leaf.
+
+ With no frame pointer omissions, we expect a frame record for main
+ and the leaf. */
+
+/* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */
+
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-6.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-6.c
new file mode 100644
index 000000000..e08ee43e5
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-6.c
@@ -0,0 +1,15 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fomit-frame-pointer -mno-omit-leaf-frame-pointer -fno-inline --save-temps" } */
+
+#include "asm-adder-clobber-lr.c"
+
+/* omit-frame-pointer is TRUE.
+ omit-leaf-frame-pointer is false, but irrelevant due to omit-frame-pointer.
+ LR is being clobbered in the leaf.
+
+ Since we asked to have no frame pointers anywhere, we expect no frame
+ record in main or the leaf. */
+
+/* { dg-final { scan-assembler-not "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" } } */
+
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-7.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-7.c
new file mode 100644
index 000000000..e8f7cabe7
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-7.c
@@ -0,0 +1,15 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fomit-frame-pointer -momit-leaf-frame-pointer -fno-inline --save-temps" } */
+
+#include "asm-adder-clobber-lr.c"
+
+/* omit-frame-pointer is TRUE.
+ omit-leaf-frame-pointer is true, but irrelevant due to omit-frame-pointer.
+ LR is being clobbered in the leaf.
+
+ Since we asked to have no frame pointers anywhere, we expect no frame
+ record in main or the leaf. */
+
+/* { dg-final { scan-assembler-not "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" } } */
+
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-8.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-8.c
new file mode 100644
index 000000000..c09b68759
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/test-framepointer-8.c
@@ -0,0 +1,16 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-omit-frame-pointer -momit-leaf-frame-pointer -fno-inline --save-temps" } */
+
+#include "asm-adder-clobber-lr.c"
+
+/* omit-frame-pointer is FALSE.
+ omit-leaf-frame-pointer is TRUE.
+ LR is being clobbered in the leaf.
+
+ Unless we are removing all frame records (which we aren't), it's
+ not OK to remove the frame record for a leaf where LR is clobbered.
+ Therefore, we expect a frame record in main and leaf. */
+
+/* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */
+
+/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-d.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-d.c
index b6fb5ae87..19ecd63b1 100644
--- a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-d.c
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-d.c
@@ -7,7 +7,7 @@
#include "vect-fcm.x"
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" } } */
/* { dg-final { scan-assembler "fcmeq\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */
/* { dg-final { scan-assembler "fcmeq\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, 0" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-f.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-f.c
index 283d34fb8..30be5adf5 100644
--- a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-f.c
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-f.c
@@ -7,7 +7,7 @@
#include "vect-fcm.x"
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" } } */
/* { dg-final { scan-assembler "fcmeq\\tv\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s" } } */
/* { dg-final { scan-assembler "fcmeq\\tv\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s, 0" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-d.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-d.c
index 868e1f8e6..b922833be 100644
--- a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-d.c
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-d.c
@@ -7,8 +7,9 @@
#include "vect-fcm.x"
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" } } */
/* { dg-final { scan-assembler "fcmge\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */
/* { dg-final { scan-assembler "fcmge\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, 0" } } */
+/* { dg-final { scan-assembler "fcmlt\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, 0" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-f.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-f.c
index e3258f364..04d3533ff 100644
--- a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-f.c
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-f.c
@@ -7,8 +7,9 @@
#include "vect-fcm.x"
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" } } */
/* { dg-final { scan-assembler "fcmge\\tv\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s" } } */
/* { dg-final { scan-assembler "fcmge\\tv\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s, 0" } } */
+/* { dg-final { scan-assembler "fcmlt\\tv\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s, 0" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-d.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-d.c
index ed8b45215..421a04acf 100644
--- a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-d.c
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-d.c
@@ -7,8 +7,9 @@
#include "vect-fcm.x"
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" } } */
/* { dg-final { scan-assembler "fcmgt\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */
/* { dg-final { scan-assembler "fcmgt\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, 0" } } */
+/* { dg-final { scan-assembler "fcmle\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, 0" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-f.c b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-f.c
index e90a87581..cdeab14e0 100644
--- a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-f.c
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-f.c
@@ -7,8 +7,9 @@
#include "vect-fcm.x"
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" } } */
/* { dg-final { scan-assembler "fcmgt\\tv\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s" } } */
/* { dg-final { scan-assembler "fcmgt\\tv\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s, 0" } } */
+/* { dg-final { scan-assembler "fcmle\\tv\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s, 0" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm.x b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm.x
index 7e51bef0c..803861b02 100644
--- a/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm.x
+++ b/gcc-4.8/gcc/testsuite/gcc.target/aarch64/vect-fcm.x
@@ -40,6 +40,15 @@ foobar (FTYPE *in1, FTYPE *in2, FTYPE *output)
output[i] = (in1[i] OP 0.0) ? 4.0 : 2.0;
}
+void
+foobarbar (FTYPE *in1, FTYPE *in2, FTYPE *output)
+{
+ int i = 0;
+ /* Vectorizable. */
+ for (i = 0; i < N; i++)
+ output[i] = (in1[i] INV_OP 0.0) ? 4.0 : 2.0;
+}
+
int
main (int argc, char **argv)
{
@@ -51,6 +60,11 @@ main (int argc, char **argv)
for (i = 0; i < N; i++)
if (out1[i] != out2[i])
abort ();
+ foobar (input1, input2, out1);
+ foobarbar (input1, input2, out2);
+ for (i = 0; i < N; i++)
+ if (out1[i] == out2[i])
+ abort ();
return 0;
}
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/arm/neon-vcond-gt.c b/gcc-4.8/gcc/testsuite/gcc.target/arm/neon-vcond-gt.c
new file mode 100644
index 000000000..86ccf95ad
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/arm/neon-vcond-gt.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O1 -funsafe-math-optimizations -ftree-vectorize" } */
+/* { dg-add-options arm_neon } */
+
+#define MAX(a, b) (a > b ? a : b)
+void foo (int ilast,float* w, float* w2)
+{
+ int i;
+ for (i = 0; i < ilast; ++i)
+ {
+ w[i] = MAX (0.0f, w2[i]);
+ }
+}
+
+/* { dg-final { scan-assembler "vcgt\\.f32\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" } } */
+/* { dg-final { scan-assembler "vbit\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/arm/neon-vcond-ltgt.c b/gcc-4.8/gcc/testsuite/gcc.target/arm/neon-vcond-ltgt.c
new file mode 100644
index 000000000..acb23a947
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/arm/neon-vcond-ltgt.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O1 -funsafe-math-optimizations -ftree-vectorize" } */
+/* { dg-add-options arm_neon } */
+
+#define LTGT(a, b) (__builtin_islessgreater (a, b) ? a : b)
+void foo (int ilast,float* w, float* w2)
+{
+ int i;
+ for (i = 0; i < ilast; ++i)
+ {
+ w[i] = LTGT (0.0f, w2[i]);
+ }
+}
+
+/* { dg-final { scan-assembler-times "vcgt\\.f32\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" 2 } } */
+/* { dg-final { scan-assembler "vorr\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" } } */
+/* { dg-final { scan-assembler "vbsl\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/arm/neon-vcond-unordered.c b/gcc-4.8/gcc/testsuite/gcc.target/arm/neon-vcond-unordered.c
new file mode 100644
index 000000000..c3e448d62
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/arm/neon-vcond-unordered.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O1 -funsafe-math-optimizations -ftree-vectorize" } */
+/* { dg-add-options arm_neon } */
+
+#define UNORD(a, b) (__builtin_isunordered (a, b) ? a : b)
+void foo (int ilast,float* w, float* w2)
+{
+ int i;
+ for (i = 0; i < ilast; ++i)
+ {
+ w[i] = UNORD (0.0f, w2[i]);
+ }
+}
+
+/* { dg-final { scan-assembler "vcgt\\.f32\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" } } */
+/* { dg-final { scan-assembler "vcge\\.f32\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" } } */
+/* { dg-final { scan-assembler "vorr\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" } } */
+/* { dg-final { scan-assembler "vbsl\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/arm/pr56732-1.c b/gcc-4.8/gcc/testsuite/gcc.target/arm/pr56732-1.c
new file mode 100644
index 000000000..ac8b8cf67
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/arm/pr56732-1.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target naked_functions } */
+/* { dg-options "-O2 -Wall" } */
+extern void bar();
+
+void __attribute__((__naked__))
+foo(void)
+{
+ bar ();
+}
+
+int __attribute__((naked))
+zoo (int a, int b, int c, int d, int e, int f)
+{
+ bar ();
+ return e;
+}
+/* Verify that __attribute__((naked)) produces a naked function that
+ does not use bx to return. */
+/* { dg-final { scan-assembler-not "\tbx\tlr" } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c
index c0592d508..7805e3ddb 100644
--- a/gcc-4.8/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c
+++ b/gcc-4.8/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c
@@ -10,5 +10,5 @@ __m128i y;
void extern
avx2_test (void)
{
- x = _mm_broadcastsi128_si256 (y);
+ x = _mm256_broadcastsi128_si256 (y);
}
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-2.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-2.c
index 6d3af38ff..ef1d370ab 100644
--- a/gcc-4.8/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-2.c
+++ b/gcc-4.8/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-2.c
@@ -19,7 +19,7 @@ avx2_test (void)
for (j = 0; j < 2; j++)
s1.a[j] = j * i;
- res.x = _mm_broadcastsi128_si256 (s1.x);
+ res.x = _mm256_broadcastsi128_si256 (s1.x);
memcpy (res_ref, s1.a, 16);
memcpy (res_ref + 2, s1.a, 16);
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/mmx-1.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/mmx-1.c
index 0b31a531a..e304acaa3 100644
--- a/gcc-4.8/gcc/testsuite/gcc.target/i386/mmx-1.c
+++ b/gcc-4.8/gcc/testsuite/gcc.target/i386/mmx-1.c
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-do compile { target { nonpic } } } */
/* { dg-options "-O2 -Werror-implicit-function-declaration -mmmx" } */
/* Test that the intrinsics compile with optimization. All of them are
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/pr44578.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr44578.c
new file mode 100644
index 000000000..20f76c31c
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr44578.c
@@ -0,0 +1,31 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -mtune=athlon64" } */
+
+extern void abort (void);
+
+long double
+__attribute__((noinline, noclone))
+test (float num)
+{
+ unsigned int i;
+
+ if (num < 0.0)
+ num = 0.0;
+
+ __builtin_memcpy (&i, &num, sizeof(unsigned int));
+
+ return (long double)(unsigned long long) i;
+}
+
+int
+main ()
+{
+ long double x;
+
+ x = test (0.0);
+
+ if (x != 0.0)
+ abort ();
+
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/pr56560.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr56560.c
new file mode 100644
index 000000000..5417cbdde
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr56560.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mavx -mvzeroupper -dp" } */
+
+extern void abort (void);
+
+typedef double vec_t __attribute__((vector_size(32)));
+
+struct S { int i1; int i2; int i3; };
+
+extern int bar (vec_t, int, int, int, int, int, struct S);
+
+void foo (vec_t v, struct S s)
+{
+ int i = bar (v, 1, 2, 3, 4, 5, s);
+ if (i == 0)
+ abort ();
+}
+
+/* { dg-final { scan-assembler-not "avx_vzeroupper" } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/pr56866.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr56866.c
new file mode 100644
index 000000000..fbd151745
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr56866.c
@@ -0,0 +1,16 @@
+/* PR target/56866 */
+/* { dg-do run } */
+/* { dg-require-effective-target xop } */
+/* { dg-options "-O3 -mxop" } */
+
+#define main xop_test_main
+#include "../../gcc.c-torture/execute/pr56866.c"
+#undef main
+
+#include "xop-check.h"
+
+static void
+xop_test (void)
+{
+ xop_test_main ();
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/pr56903.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr56903.c
new file mode 100644
index 000000000..9e6a1c391
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr56903.c
@@ -0,0 +1,18 @@
+/* PR rtl-optimization/56903 */
+/* { dg-do compile } */
+/* { dg-options "-Os" } */
+/* { dg-additional-options "-march=pentium3" { target ia32 } } */
+
+int a, *b, c;
+struct S { int s : 1; } *fn1 (void);
+extern int fn3 (void), fn4 (int *);
+
+void
+fn2 (void)
+{
+ int e = fn3 ();
+ char f = c + fn1 ()->s * 4;
+ if (*b && f == e)
+ a = *b;
+ fn4 (b);
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57003.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57003.c
new file mode 100644
index 000000000..dfa6b8b50
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57003.c
@@ -0,0 +1,54 @@
+/* PR rtl-optimization/57003 */
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+#define N 2001
+unsigned short *b, *c, *d;
+
+__attribute__ ((noinline, noclone)) unsigned
+bar (void)
+{
+ asm volatile ("" : : : "memory");
+ return N;
+}
+
+__attribute__ ((noinline, noclone)) unsigned short *
+baz (unsigned long x)
+{
+ if (x != N * sizeof (unsigned short) + 20)
+ __builtin_abort ();
+ asm volatile ("" : : : "memory");
+ return d;
+}
+
+__attribute__ ((ms_abi, noinline, noclone))
+foo (void)
+{
+ unsigned d;
+ unsigned short *e;
+ if ((d = bar ()))
+ {
+ e = baz (d * sizeof (unsigned short) + 20);
+ __builtin_memcpy (e, b, d * sizeof (unsigned short));
+ c = e;
+ }
+}
+
+int
+main ()
+{
+ unsigned short a[2 * N];
+ int i;
+ for (i = 0; i < 2 * N; i++)
+ a[i] = i + 1;
+ b = a;
+ d = a + N;
+ asm volatile ("" : : : "memory");
+ foo ();
+ for (i = 0; i < N; i++)
+ if (a[i] != i + 1 || a[i + N] != i + 1)
+ __builtin_abort ();
+ if (c != a + N)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57018.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57018.c
new file mode 100644
index 000000000..fb0d849ad
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57018.c
@@ -0,0 +1,31 @@
+/* { dg-do run } */
+/* { dg-options "-Os -fomit-frame-pointer -fno-asynchronous-unwind-tables" } */
+/* { dg-additional-options "-march=i686" { target ia32 } } */
+
+struct A { char a[16]; } a;
+
+void __attribute__((noinline, noclone))
+foo (struct A b)
+{
+ if (__builtin_memcmp (b.a, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16))
+ __builtin_abort ();
+ asm volatile ("" : : : "memory");
+}
+
+void __attribute__((noinline, noclone))
+bar (struct A b)
+{
+ foo (a);
+ a = b;
+}
+
+int
+main ()
+{
+ struct A b = { "\0\1\2\3\4\5\6\7\10\11\12\13\14\15\16\17" };
+ bar (b);
+ if (__builtin_memcmp (a.a, b.a, 16))
+ __builtin_abort ();
+ return 0;
+}
+
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57046.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57046.c
new file mode 100644
index 000000000..0aa43f9df
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57046.c
@@ -0,0 +1,77 @@
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+struct emac {
+ unsigned reg[23];
+};
+
+struct mop {
+ unsigned long long addr;
+ unsigned int size;
+};
+
+unsigned int __attribute__((__noinline__))
+level(const struct emac *obj)
+{
+ return 0;
+}
+
+void __attribute__((__noinline__))
+info(struct emac *dev, unsigned long long addr)
+{
+ asm("" : : : "memory");
+}
+
+unsigned long long __attribute__((__noinline__))
+get_value(const struct mop *mop)
+{
+ return 0x1234567890abcdefull;
+}
+
+int __attribute__((__noinline__))
+emac_operation(struct emac *obj, struct mop *mop)
+{
+ unsigned long long addr = mop->addr;
+ int index = addr >> 2;
+ unsigned int value, old_value;
+
+ if (mop->size != 4)
+ return 0;
+
+ if (index >= 23) {
+ if (level(obj) >= 1)
+ info(obj, addr);
+ return 0;
+ }
+
+ value = get_value(mop);
+ old_value = obj->reg[index];
+
+ info(obj, 0);
+
+ switch (index) {
+ case 0:
+ obj->reg[0] = old_value;
+ break;
+ case 7:
+ case 8:
+ obj->reg[index] = value;
+ break;
+ }
+
+ return 0;
+}
+
+int main(void)
+{
+ struct emac e = { { 0 } };
+ struct mop mop = { 32, 4 };
+
+ e.reg[8] = 0xdeadbeef;
+ emac_operation(&e, &mop);
+
+ if (e.reg[8] != 0x90abcdef)
+ __builtin_abort();
+
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57091.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57091.c
new file mode 100644
index 000000000..4fc7ed769
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57091.c
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-options "-O -mcmodel=large" { target lp64 } } */
+void (*bar)();
+
+void foo (void)
+{
+ bar ();
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57097.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57097.c
new file mode 100644
index 000000000..2f0093840
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57097.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fPIC" } */
+extern double ad[], bd[], cd[], dd[];
+extern long long all[], bll[], cll[], dll[];
+
+int
+main (int i, char **a)
+{
+ bd[i] = i + 64;
+ if (i % 3 == 0)
+ {
+ cd[i] = i;
+ }
+ dd[i] = i / 2;
+ ad[i] = i * 2;
+ if (i % 3 == 1)
+ {
+ dll[i] = 127;
+ }
+ dll[i] = i;
+ cll[i] = i * 2;
+ switch (i % 3)
+ {
+ case 0:
+ bll[i] = i + 64;
+ }
+ all[i] = i / 2;
+ return 0;
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57098.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57098.c
new file mode 100644
index 000000000..37598d7ce
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57098.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-msse4 -mcmodel=large" } */
+
+typedef int V __attribute__((vector_size(16)));
+
+void foo (V *p, V *mask)
+{
+ *p = __builtin_shuffle (*p, *mask);
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57106.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57106.c
new file mode 100644
index 000000000..6fccd8aac
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57106.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fschedule-insns -funroll-all-loops -fcompare-debug" } */
+
+typedef void block128_f (int *, int);
+
+void
+foo (int *out, int *iv, block128_f block)
+{
+ while (1)
+ {
+ *out = *out ^ *iv;
+ block (out, *out);
+ iv = out;
+ }
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57264.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57264.c
new file mode 100644
index 000000000..46fce7f04
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/i386/pr57264.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -mcld" } */
+
+void test (int x, int **pp)
+{
+ while (x)
+ {
+ int *ip = *pp;
+ int *op = *pp;
+ while (*ip)
+ {
+ int v = *ip++;
+ *op++ = v + 1;
+ }
+ }
+}
+
+/* { dg-final { scan-assembler-not "stosl" } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/powerpc/pr56605.c b/gcc-4.8/gcc/testsuite/gcc.target/powerpc/pr56605.c
new file mode 100644
index 000000000..7e5af449d
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/powerpc/pr56605.c
@@ -0,0 +1,13 @@
+/* PR rtl-optimization/56605 */
+/* { dg-do compile { target { powerpc64-*-* && lp64 } } } */
+/* { dg-options "-O3 -mvsx -mcpu=power7 -fno-unroll-loops -fdump-rtl-loop2_doloop" } */
+
+void foo (short* __restrict sb, int* __restrict ia)
+{
+ int i;
+ for (i = 0; i < 4000; i++)
+ ia[i] = (int) sb[i];
+}
+
+/* { dg-final { scan-rtl-dump-times "\\\(compare:CC \\\(subreg:SI \\\(reg:DI" 1 "loop2_doloop" } } */
+/* { dg-final { cleanup-rtl-dump "loop2_doloop" } } */
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/powerpc/pr57150.c b/gcc-4.8/gcc/testsuite/gcc.target/powerpc/pr57150.c
new file mode 100644
index 000000000..119bc4c52
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/powerpc/pr57150.c
@@ -0,0 +1,23 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-O3 -mcpu=power7 -fcaller-saves" } */
+/* { dg-final { scan-assembler-not "lxvd2x" } } */
+/* { dg-final { scan-assembler-not "lxvw4x" } } */
+/* { dg-final { scan-assembler-not "lvx" } } */
+/* { dg-final { scan-assembler-not "stxvd2x" } } */
+/* { dg-final { scan-assembler-not "stxvw4x" } } */
+/* { dg-final { scan-assembler-not "stvx" } } */
+
+/* Insure caller save on long double does not use VSX instructions. */
+
+extern long double modify (long double);
+
+void
+sum (long double *ptr, long double value, unsigned long n)
+{
+ unsigned long i;
+
+ for (i = 0; i < n; i++)
+ ptr[i] += modify (value);
+}
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/sh/pr57108.c b/gcc-4.8/gcc/testsuite/gcc.target/sh/pr57108.c
new file mode 100644
index 000000000..3d39637b6
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gcc.target/sh/pr57108.c
@@ -0,0 +1,19 @@
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O1" } */
+
+void __assert_func (void) __attribute__ ((__noreturn__)) ;
+
+void ATATransfer (int num, int buffer)
+{
+ int wordCount;
+
+ while (num > 0)
+ {
+ wordCount = num * 512 / sizeof (int);
+
+ ((0 == (buffer & 63)) ? (void)0 : __assert_func () );
+ ((0 == (wordCount & 31)) ? (void)0 : __assert_func ());
+ }
+
+
+ }
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_40.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_40.f90
index ca91d5eac..424f6f4fe 100644
--- a/gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_40.f90
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_40.f90
@@ -48,5 +48,5 @@ program main
call baz(a,b,res);
if (abs(res - 8.1) > 1e-5) call abort
end program main
-! { dg-final { scan-tree-dump-times "while" 3 "original" } }
+! { dg-final { scan-tree-dump-times "while" 5 "original" } }
! { dg-final { cleanup-tree-dump "original" } }
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_44.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_44.f90
new file mode 100644
index 000000000..e0cffd168
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_44.f90
@@ -0,0 +1,12 @@
+! { dg-do run }
+! { dg-options "-ffrontend-optimize" }
+! PR 56872 - wrong front-end optimization with a single constructor.
+! Original bug report by Rich Townsend.
+ integer :: k
+ real :: s
+ integer :: m
+ s = 2.0
+ m = 4
+ res = SUM([(s**(REAL(k-1)/REAL(m-1)),k=1,m)])
+ if (abs(res - 5.84732246) > 1e-6) call abort
+ end
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_45.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_45.f90
new file mode 100644
index 000000000..fdf049c37
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_45.f90
@@ -0,0 +1,15 @@
+! { dg-do run }
+! PR PR 56872 - wrong front-end optimization with a
+! single array constructor and another value.
+program main
+ real :: s
+ integer :: m
+ integer :: k
+ real :: res
+
+ m = 2
+ s = 1000.
+
+ res = SUM([3.0,(s**(REAL(k-1)/REAL(m-1)),k=1,m),17.])
+ if (abs(res - 1021.)>1e-4) call abort
+end
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_46.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_46.f90
new file mode 100644
index 000000000..471c6a86f
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_46.f90
@@ -0,0 +1,15 @@
+! { dg-do run }
+! { dg-options "-ffrontend-optimize -fdump-tree-original" }
+! Test that nested array constructors are optimized.
+program main
+ implicit none
+ integer, parameter :: dp=selected_real_kind(15)
+ real(kind=dp), dimension(2,2) :: a
+ real(kind=dp) thirteen
+
+ data a /2._dp,3._dp,5._dp,7._dp/
+ thirteen = 13._dp
+ if (abs (product([[11._dp, thirteen], a]) - 30030._dp) > 1e-8) call abort
+end program main
+! { dg-final { scan-tree-dump-times "while" 2 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_47.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_47.f90
new file mode 100644
index 000000000..2ad85be34
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/array_constructor_47.f90
@@ -0,0 +1,24 @@
+! { dg-do run }
+! { dg-options "-ffrontend-optimize -fdump-tree-original" }
+! Test that reduction optimization doesn't break with a function expression
+! in an array constructor.
+program main
+ implicit none
+ integer, parameter :: dp=selected_real_kind(15)
+ real(kind=dp), dimension(2,2) :: a
+ real(kind=dp) thirteen
+
+ data a /2._dp,3._dp,5._dp,7._dp/
+ thirteen = 13._dp
+ if (abs (product([[sum([eleven_ones()]), thirteen], a]) - 30030._dp) > 1e-8) call abort
+ contains
+ function eleven_ones()
+ real(kind=dp) :: eleven_ones(11)
+ integer :: i
+
+ eleven_ones = [ (1._dp, i=1,11) ]
+ end function eleven_ones
+end program main
+! { dg-final { scan-tree-dump-times "while" 4 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
+
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/do_1.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/do_1.f90
index 8ed0f7fb6..171275af3 100644
--- a/gcc-4.8/gcc/testsuite/gfortran.dg/do_1.f90
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/do_1.f90
@@ -1,5 +1,4 @@
-! { dg-do run { xfail *-*-* } }
-! XFAIL is tracked in PR 54932
+! { dg-do run }
! Program to check corner cases for DO statements.
program do_1
implicit none
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/eof_5.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/eof_5.f90
new file mode 100644
index 000000000..88671ba23
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/eof_5.f90
@@ -0,0 +1,21 @@
+! { dg-do run }
+!
+! PR fortran/56696
+!
+! Contributed by Keith Refson
+!
+
+program iotest
+ character(len=258) :: inp = ' 1.0 1.0 1.0'
+ character(len=7) :: inp2 = '1 2 3 4'
+ integer :: ios
+ real :: a1, a2, a3, a4
+
+ read(inp2,*,iostat=ios) a1, a2, a3, a4
+ if (ios /= 0) call abort ()
+
+ read(inp,*,iostat=ios) a1, a2, a3, a4
+ if (ios == 0) call abort ()
+! write(*,*) 'IOSTAT=',ios
+end program iotest
+
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/fmt_cache_3.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/fmt_cache_3.f90
new file mode 100644
index 000000000..ec8e1b389
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/fmt_cache_3.f90
@@ -0,0 +1,80 @@
+! { dg-do run }
+!
+! PR fortran/56737
+!
+! Contributed by Jonathan Hogg
+!
+module hsl_mc73_single
+ implicit none
+ integer, parameter, private :: wp = kind(0.0)
+contains
+ subroutine mc73_fiedler(n,lirn,irn,ip,list)
+ integer, intent (in) :: n
+ integer, intent (in) :: lirn
+ integer, intent (in) :: irn(*)
+ integer, intent (in) :: ip(*)
+ integer, intent (out) :: list(*)
+
+ integer :: icntl(10)
+
+ call fiedler_graph(icntl)
+ end subroutine mc73_fiedler
+
+ subroutine mc73_order
+ integer :: icntl(10)
+
+ call fiedler_graph(icntl)
+ end subroutine mc73_order
+
+ subroutine fiedler_graph(icntl)
+ integer, intent (in) :: icntl(10)
+
+ real (kind = wp) :: tol
+ real (kind = wp) :: tol1
+ real (kind = wp) :: rtol
+
+ call multilevel_eig(tol,tol1,rtol,icntl)
+ end subroutine fiedler_graph
+
+ subroutine multilevel_eig(tol,tol1,rtol,icntl)
+ real (kind = wp), intent (in) :: tol,tol1,rtol
+ integer, intent(in) :: icntl(10)
+
+ call level_print(6,'end of level ',1)
+ end subroutine multilevel_eig
+
+ subroutine level_print(mp,title1,level)
+ character (len = *), intent(in) :: title1
+ integer, intent(in) :: mp,level
+ character(len=80) fmt
+ integer :: char_len1,char_len2
+
+ char_len1=len_trim(title1)
+
+ write (fmt,"('(',i4,'(1H ),6h===== ,a',i4,',i4,6h =====)')") &
+ level*3, char_len1
+! print *, "fmt = ", fmt
+! print *, "title1= ", title1
+! print *, "level = ", level
+ write (66,fmt) title1,level
+ end subroutine level_print
+end module hsl_mc73_single
+
+program test
+ use hsl_mc73_single
+ implicit none
+ character(len=200) :: str(2)
+ integer, parameter :: wp = kind(0.0)
+
+ integer :: n, lirn
+ integer :: irn(1), ip(1), list(1)
+
+ str = ""
+ open (66, status='scratch')
+ call mc73_order
+ call mc73_fiedler(n,lirn,irn,ip,list)
+ rewind (66)
+ read (66, '(a)') str
+ close (66)
+ if (any (str /= " ===== end of level 1 =====")) call abort()
+end program test
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/namelist_77.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/namelist_77.f90
new file mode 100644
index 000000000..5cbfe3aad
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/namelist_77.f90
@@ -0,0 +1,49 @@
+! { dg-do run }
+!
+! PR libfortran/51825 - Fortran runtime error: Cannot match namelist object name
+! Test case derived from PR.
+
+module local_mod
+
+ type mytype1
+ integer :: int1
+ end type
+
+ type mytype2
+ integer :: n_x
+ integer :: n_px
+ end type
+
+ type beam_init_struct
+ character(16) :: chars(1) = ''
+ type (mytype1) dummy
+ type (mytype2) grid(1)
+ end type
+
+end module
+
+program error_namelist
+
+ use local_mod
+
+ implicit none
+
+ type (beam_init_struct) beam_init
+
+ namelist / error_params / beam_init
+
+ open (10, status='scratch')
+ write (10, '(a)') "&error_params"
+ write (10, '(a)') " beam_init%chars(1)='JUNK'"
+ write (10, '(a)') " beam_init%grid(1)%n_x=3"
+ write (10, '(a)') " beam_init%grid(1)%n_px=2"
+ write (10, '(a)') "/"
+ rewind(10)
+ read(10, nml=error_params)
+ close (10)
+
+ if (beam_init%chars(1) /= 'JUNK') call abort
+ if (beam_init%grid(1)%n_x /= 3) call abort
+ if (beam_init%grid(1)%n_px /= 2) call abort
+
+end program
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/namelist_78.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/namelist_78.f90
new file mode 100644
index 000000000..d4e29ab82
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/namelist_78.f90
@@ -0,0 +1,34 @@
+! { dg-do run }
+!
+! PR libfortran/51825
+! Test case regarding namelist problems with derived types
+
+program namelist
+
+ type d1
+ integer :: j = 0
+ end type d1
+
+ type d2
+ type(d1) k
+ end type d2
+
+ type d3
+ type(d2) d(2)
+ end type d3
+
+ type(d3) der
+ namelist /nmlst/ der
+
+ open (10, status='scratch')
+ write (10, '(a)') "&NMLST"
+ write (10, '(a)') " DER%D(1)%K%J = 1,"
+ write (10, '(a)') " DER%D(2)%K%J = 2,"
+ write (10, '(a)') "/"
+ rewind(10)
+ read(10, nml=nmlst)
+ close (10)
+
+ if (der%d(1)%k%j /= 1) call abort
+ if (der%d(2)%k%j /= 2) call abort
+end program namelist
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/namelist_79.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/namelist_79.f90
new file mode 100644
index 000000000..2b2ef310d
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/namelist_79.f90
@@ -0,0 +1,43 @@
+! { dg-do run }
+! PR libfortran/52512 - Cannot match namelist object name
+! Test case derived from PR.
+
+program testje
+
+ implicit none
+
+ integer :: getal, jn
+ type ptracer
+ character(len = 8) :: sname !: short name
+ logical :: lini !: read in a file or not
+ end type ptracer
+ type(ptracer) , dimension(3) :: tracer
+ namelist/namtoptrc/ getal,tracer
+
+ ! standard values
+ getal = 9999
+ do jn = 1, 3
+ tracer(jn)%sname = 'default_name'
+ tracer(jn)%lini = .false.
+ end do
+
+ open (10, status='scratch')
+ write (10, '(a)') "&namtoptrc"
+ write (10, '(a)') " getal = 7"
+ write (10, '(a)') " tracer(1) = 'DIC ', .true."
+ write (10, '(a)') " tracer(2) = 'Alkalini', .true."
+ write (10, '(a)') " tracer(3) = 'O2 ', .true."
+ write (10, '(a)') "/"
+ rewind(10)
+ read(10, nml=namtoptrc)
+ close (10)
+
+ if (getal /= 7) call abort
+ if (tracer(1)%sname /= 'DIC ') call abort
+ if (tracer(2)%sname /= 'Alkalini') call abort
+ if (tracer(3)%sname /= 'O2 ') call abort
+ if (.not. tracer(1)%lini) call abort
+ if (.not. tracer(2)%lini) call abort
+ if (.not. tracer(3)%lini) call abort
+
+end program testje
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/namelist_80.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/namelist_80.f90
new file mode 100644
index 000000000..1961b11b1
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/namelist_80.f90
@@ -0,0 +1,27 @@
+! { dg-do run }
+!
+! PR fortran/56735
+!
+! Contributed by Adam Williams
+!
+ PROGRAM TEST
+ INTEGER int1,int2,int3
+ NAMELIST /temp/ int1,int2,int3
+
+ int1 = -1; int2 = -2; int3 = -3
+
+ OPEN (53, STATUS='scratch')
+ WRITE (53, '(a)') ' ?'
+ WRITE (53, '(a)')
+ WRITE (53, '(a)') '$temp'
+ WRITE (53, '(a)') ' int1=1'
+ WRITE (53, '(a)') ' int2=2'
+ WRITE (53, '(a)') ' int3=3'
+ WRITE (53, '(a)') '$END'
+ REWIND(53)
+
+ READ (53, temp)
+ CLOSE (53)
+
+ if (int1 /= 1 .or. int2 /= 2 .or. int3 /= 3) call abort()
+ END PROGRAM
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/namelist_81.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/namelist_81.f90
new file mode 100644
index 000000000..ddb100bf8
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/namelist_81.f90
@@ -0,0 +1,43 @@
+! { dg-do run }
+! PR56786 Error on embedded spaces
+integer :: i(3)
+namelist /nml/ i
+
+i = -42
+open(99,status='scratch')
+write(99,'(a)') '&nml i(3 ) = 5 /'
+rewind(99)
+read(99,nml=nml)
+close(99)
+if (i(1)/=-42 .or. i(2)/=-42 .or. i(3)/=5) call abort()
+
+! Shorten the file so the read hits EOF
+
+open(99,status='scratch')
+write(99,'(a)') '&nml i(3 ) = 5 '
+rewind(99)
+read(99,nml=nml, end=30)
+call abort()
+! Shorten some more
+ 30 close(99)
+open(99,status='scratch')
+write(99,'(a)') '&nml i(3 ) ='
+rewind(99)
+read(99,nml=nml, end=40)
+call abort()
+! Shorten some more
+ 40 close(99)
+open(99,status='scratch')
+write(99,'(a)') '&nml i(3 )'
+rewind(99)
+read(99,nml=nml, end=50)
+call abort()
+! Shorten some more
+ 50 close(99)
+open(99,status='scratch')
+write(99,'(a)') '&nml i(3 '
+rewind(99)
+read(99,nml=nml, end=60)
+call abort()
+ 60 close(99)
+end
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/proc_ptr_41.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/proc_ptr_41.f90
new file mode 100644
index 000000000..7f50abab2
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/proc_ptr_41.f90
@@ -0,0 +1,37 @@
+! { dg-do compile }
+!
+! PR 56968: [4.7/4.8/4.9 Regression] [F03] Issue with a procedure defined with a generic name returning procedure pointer
+!
+! Contributed by Samuel Debionne <samuel.debionne@ujf-grenoble.fr>
+
+module test
+
+ interface generic_name_get_proc_ptr
+ module procedure specific_name_get_proc_ptr
+ end interface
+
+ abstract interface
+ double precision function foo(arg1)
+ real, intent(in) :: arg1
+ end function
+ end interface
+
+contains
+
+ function specific_name_get_proc_ptr() result(res)
+ procedure(foo), pointer :: res
+ end function
+
+end module test
+
+program crash_test
+ use :: test
+
+ procedure(foo), pointer :: ptr
+
+ ptr => specific_name_get_proc_ptr()
+ ptr => generic_name_get_proc_ptr()
+
+end program
+
+! { dg-final { cleanup-modules "test" } }
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/proc_ptr_42.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/proc_ptr_42.f90
new file mode 100644
index 000000000..8556fdf0c
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/proc_ptr_42.f90
@@ -0,0 +1,36 @@
+! { dg-do compile }
+!
+! PR 56814: [4.8/4.9 Regression] Bogus Interface mismatch in dummy procedure
+!
+! Contributed by Marco Restelli <mrestelli@gmail.com>
+
+module m1
+ abstract interface
+ pure function i_f(x) result(d)
+ real, intent(in) :: x(:,:)
+ real :: d(size(x,1),size(x,2))
+ end function
+ end interface
+
+ procedure(i_f), pointer :: f => null()
+end module
+
+module m2
+contains
+ pure subroutine ns_dirdata(fun)
+ interface
+ pure function fun(x) result(d)
+ real, intent(in) :: x(:,:)
+ real :: d(size(x,1),size(x,2))
+ end function
+ end interface
+ end subroutine
+end module
+
+program p
+ use m1
+ use m2
+ call ns_dirdata(f)
+end
+
+! { dg-final { cleanup-modules "m1 m2" } }
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/select_type_33.f03 b/gcc-4.8/gcc/testsuite/gfortran.dg/select_type_33.f03
new file mode 100644
index 000000000..3ba27e010
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/select_type_33.f03
@@ -0,0 +1,43 @@
+! { dg-do compile }
+!
+! PR fortran/56816
+! The unfinished SELECT TYPE statement below was leading to an ICE because
+! at the time the statement was rejected, the compiler tried to free
+! some symbols that had already been freed with the SELECT TYPE
+! namespace.
+!
+! Original testcase from Dominique Pelletier <dominique.pelletier@polymtl.ca>
+!
+module any_list_module
+ implicit none
+
+ private
+ public :: anylist, anyitem
+
+ type anylist
+ end type
+
+ type anyitem
+ class(*), allocatable :: value
+ end type
+end module any_list_module
+
+
+module my_item_list_module
+
+ use any_list_module
+ implicit none
+
+ type, extends (anyitem) :: myitem
+ end type myitem
+
+contains
+
+ subroutine myprint (this)
+ class (myitem) :: this
+
+ select type ( v => this % value ! { dg-error "parse error in SELECT TYPE" }
+ end select ! { dg-error "Expecting END SUBROUTINE" }
+ end subroutine myprint
+
+end module my_item_list_module
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/size_kind_2.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/size_kind_2.f90
new file mode 100644
index 000000000..002221c5b
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/size_kind_2.f90
@@ -0,0 +1,17 @@
+! { dg-do compile }
+! { dg-options "-fdump-tree-original" }
+!
+! PR fortran/57142
+!
+integer :: B(huge(1)+3_8,2_8)
+integer(8) :: var1(2), var2, var3
+
+var1 = shape(B,kind=8)
+var2 = size(B,kind=8)
+var3 = size(B,dim=1,kind=8)
+end
+
+! { dg-final { scan-tree-dump "static integer.kind=8. A..\\\[2\\\] = \\\{2147483650, 2\\\};" "original" } }
+! { dg-final { scan-tree-dump "var2 = 4294967300;" "original" } }
+! { dg-final { scan-tree-dump "var3 = 2147483650;" "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/size_kind_3.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/size_kind_3.f90
new file mode 100644
index 000000000..ae57bd9a1
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/size_kind_3.f90
@@ -0,0 +1,11 @@
+! { dg-do compile }
+!
+! PR fortran/57142
+!
+integer :: B(huge(1)+3_8,2_8)
+integer(8) :: var1(2), var2, var3
+
+var1 = shape(B) ! { dg-error "SHAPE overflows its kind" }
+var2 = size(B) ! { dg-error "SIZE overflows its kind" }
+var3 = size(B,dim=1) ! { dg-error "SIZE overflows its kind" }
+end
diff --git a/gcc-4.8/gcc/testsuite/gfortran.dg/transfer_check_4.f90 b/gcc-4.8/gcc/testsuite/gfortran.dg/transfer_check_4.f90
new file mode 100644
index 000000000..030d34549
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gfortran.dg/transfer_check_4.f90
@@ -0,0 +1,44 @@
+! { dg-do compile }
+! { dg-options "-Wall" }
+
+! PR 57022: [4.7/4.8/4.9 Regression] Inappropriate warning for use of TRANSFER with arrays
+! Contributed by William Clodius <wclodius@los-alamos.net>
+
+subroutine transfers (test)
+
+ use, intrinsic :: iso_fortran_env
+
+ integer, intent(in) :: test
+
+ integer(int8) :: test8(8) = 0
+ integer(int16) :: test16(4) = 0
+ integer(int32) :: test32(2) = 0
+ integer(int64) :: test64 = 0
+
+ select case(test)
+ case(0)
+ test64 = transfer(test8, test64)
+ case(1)
+ test64 = transfer(test16, test64)
+ case(2)
+ test64 = transfer(test32, test64)
+ case(3)
+ test8 = transfer(test64, test8, 8)
+ case(4)
+ test16 = transfer(test64, test16, 4)
+ case(5)
+ test32 = transfer(test64, test32, 2)
+ end select
+
+end subroutine
+
+
+! PR 53685: surprising warns about transfer with explicit character range
+! Contributed by Jos de Kloe <kloedej@knmi.nl>
+
+subroutine mytest(byte_array,val)
+ integer, parameter :: r8_ = Selected_Real_Kind(15,307) ! = real*8
+ character(len=1), dimension(16), intent(in) :: byte_array
+ real(r8_),intent(out) :: val
+ val = transfer(byte_array(1:8),val)
+end subroutine
diff --git a/gcc-4.8/gcc/testsuite/gnat.dg/specs/array3.ads b/gcc-4.8/gcc/testsuite/gnat.dg/specs/array3.ads
new file mode 100644
index 000000000..3ef39f38e
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gnat.dg/specs/array3.ads
@@ -0,0 +1,18 @@
+-- PR middle-end/56474
+-- Reported by Pavel Zhukov <pavel@zhukoff.net>
+
+-- { dg-do compile }
+
+with Ada.Streams;
+
+package Array3 is
+
+ use type Ada.Streams.Stream_Element_Offset;
+
+ type Vector (Size : Ada.Streams.Stream_Element_Offset) is record
+ Value : Ada.Streams.Stream_Element_Array (0 .. Size);
+ end record;
+
+ Empty_Vector : Vector (-1);
+
+end Array3;
diff --git a/gcc-4.8/gcc/testsuite/gnat.dg/specs/last_bit.ads b/gcc-4.8/gcc/testsuite/gnat.dg/specs/last_bit.ads
new file mode 100644
index 000000000..ecfc2540a
--- /dev/null
+++ b/gcc-4.8/gcc/testsuite/gnat.dg/specs/last_bit.ads
@@ -0,0 +1,19 @@
+-- { dg-do compile }
+
+package Last_Bit is
+
+ Max_Components : constant := 100;
+ type Count_Type is new Natural range 0 .. Max_Components;
+ subtype Index_Type is Count_Type range 1 .. Count_Type'Last;
+
+ type List_Type is array (Index_Type range <>) of Integer;
+
+ type Record_Type (Count : Count_Type := 0) is record
+ List : List_Type (1 .. Count);
+ end record;
+
+ Null_Record : Record_Type (Count => 0);
+
+ List_Last_Bit : Integer := Null_Record.List'Last_Bit;
+
+end Last_Bit;