aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/g++.dg
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2014-04-22 13:33:12 -0700
committerBen Cheng <bccheng@google.com>2014-04-22 13:33:12 -0700
commite3cc64dec20832769406aa38cde83c7dd4194bf4 (patch)
treeef8e39be37cfe0cb69d850043b7924389ff17164 /gcc-4.9/gcc/testsuite/g++.dg
parentf33c7b3122b1d7950efa88067c9a156229ba647b (diff)
downloadtoolchain_gcc-e3cc64dec20832769406aa38cde83c7dd4194bf4.tar.gz
toolchain_gcc-e3cc64dec20832769406aa38cde83c7dd4194bf4.tar.bz2
toolchain_gcc-e3cc64dec20832769406aa38cde83c7dd4194bf4.zip
[4.9] GCC 4.9.0 official release refresh
Change-Id: Ic99a7da8b44b789a48aeec93b33e93944d6e6767
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg')
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag3.C7
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag6.C25
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag7.C9
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/abi/thunk6.C19
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp89
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/auto42.C9
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ice15.C12
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted2.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist81.C25
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist82.C20
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval2.C7
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr31439.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic154.C8
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic155.C4
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic156.C6
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp0x/vt-33964.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C3
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60573.C28
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60626.C7
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ext/vla14.C23
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ext/vla15.C20
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/gomp/pr60682.C44
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/const10.C33
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/const11.C29
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/ctor4-1.C21
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/ctor4.C8
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/ctor8.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/pr25811.C90
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/pr29043.C17
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/pr43719.C60
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/pr44086.C4
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/init/uninitialized1.C6
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-21.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-23.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60600.C34
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-1.C50
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-2.C15
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-3.C81
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-4.C85
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/lto/pr60567_0.C23
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/opt/pr56999.C1
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/pr49718.C3
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/template/crash119.C8
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/template/crash97.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/template/crash98.C2
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/template/partial5.C4
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/torture/pr60315.C19
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/torture/pr60609.C252
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/torture/pr60648.C70
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/torture/pr60659.C58
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/torture/pr60746.C23
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/torture/pr60750.C21
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/vect/pr60729.cc10
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-2.C30
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-3.C75
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-4.C75
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor.C1
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/warn/Wreturn-local-addr-2.C11
59 files changed, 1450 insertions, 150 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag3.C b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag3.C
index 05fd58e94..13cb3c2f2 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag3.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag3.C
@@ -1,5 +1,4 @@
-// An explicit specialization doesn't get the tag from its template unless
-// it is specified there, too.
+// An explicit specialization gets the tag from its template.
// { dg-final { scan-assembler "_ZN3FooB5cxx11IcE1fEv" } }
template<typename T>
@@ -12,12 +11,12 @@ struct __attribute ((abi_tag("cxx11"))) Foo
template<>
struct
__attribute ((abi_tag("cxx11")))
-Foo<int>
+Foo<int> // { dg-warning "attribute" }
{
int f();
};
-// { dg-final { scan-assembler "_ZN3FooIdE1fEv" } }
+// { dg-final { scan-assembler "_ZN3FooB5cxx11IdE1fEv" } }
template<>
struct
Foo<double>
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag6.C b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag6.C
new file mode 100644
index 000000000..94ea2f37b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag6.C
@@ -0,0 +1,25 @@
+// PR c++/60642
+
+struct __attribute((abi_tag("test"))) foo
+{
+ void f();
+ virtual ~foo();
+};
+
+template<typename>
+struct __attribute((abi_tag("test"))) bar
+{
+ void f();
+ virtual ~bar();
+};
+
+int main()
+{
+ foo f;
+ f.f();
+
+ bar<int> b;
+ b.f();
+}
+
+// { dg-final { scan-assembler "_ZTV3barB4testIiE" } }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag7.C b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag7.C
new file mode 100644
index 000000000..4c47725c5
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/abi/abi-tag7.C
@@ -0,0 +1,9 @@
+// PR c++/60642
+
+template<typename T>
+class __attribute((abi_tag("foo"))) test{ };
+
+template class __attribute((abi_tag("foo"))) test<int>; // { dg-warning "attribute" }
+
+void f(test<char>*) {}
+// { dg-final { scan-assembler "_Z1fP4testB3fooIcE" } }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/abi/thunk6.C b/gcc-4.9/gcc/testsuite/g++.dg/abi/thunk6.C
new file mode 100644
index 000000000..6df51c24b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/abi/thunk6.C
@@ -0,0 +1,19 @@
+// PR c++/60566
+// We need to emit the construction vtable thunk for ~C even if we aren't
+// going to use it.
+
+struct A
+{
+ virtual void f() = 0;
+ virtual ~A() {}
+};
+
+struct B: virtual A { int i; };
+struct C: virtual A { int i; ~C(); };
+
+C::~C() {}
+
+int main() {}
+
+// { dg-final { scan-assembler "_ZTv0_n32_N1CD1Ev" { target lp64 } } }
+// { dg-final { scan-assembler "_ZTv0_n16_N1CD1Ev" { target ilp32 } } }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp b/gcc-4.9/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp
index 204a75458..0cb6539cb 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp
@@ -17,62 +17,55 @@
# Written by Balaji V. Iyer <balaji.v.iyer@intel.com>
load_lib g++-dg.exp
+load_lib cilk-plus-dg.exp
if { ![check_effective_target_cilkplus] } {
return;
}
-set library_var [get_multilibs]
-# Pointing the ld_library_path to the Cilk Runtime library binaries.
-append ld_library_path ":${library_var}/libcilkrts/.libs"
-set_ld_library_path_env_vars
-
-global TEST_EXTRA_LIBS
-set TEST_EXTRA_LIBS "-L${library_var}/libcilkrts/.libs"
-
dg-init
-# Run the tests that are shared with C.
-g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/PS/*.c]] ""
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] "-O3" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " " " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] "-g -O2" " "
-# Run the C++ only tests.
-g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] ""
-dg-finish
+if [cilkplus_init] {
+ # Run the tests that are shared with C.
+ g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/PS/*.c]] ""
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] "-O3" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " " " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] "-g -O2" " "
+ # Run the C++ only tests.
+ g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] ""
-dg-init
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O1 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O2 -ftree-vectorize -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O1 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O2 -ftree-vectorize -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O3 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -ftree-vectorize -fcilkplus -g" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O1 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O2 -ftree-vectorize -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O1 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O2 -ftree-vectorize -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -g -O3 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -O3 -ftree-vectorize -fcilkplus -g" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O0 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O1 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O2 -ftree-vectorize -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O3 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O0 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O1 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O2 -ftree-vectorize -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O3 -fcilkplus" " "
-dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O3 -ftree-vectorize -fcilkplus -g" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O0 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O1 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O2 -ftree-vectorize -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O3 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O0 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O1 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O2 -ftree-vectorize -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -g -O3 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/AN/*.cc]] " -O3 -ftree-vectorize -fcilkplus -g" " "
-if { [check_libcilkrts_available] } {
- dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -O1 -fcilkplus" " "
- dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -O3 -fcilkplus" " "
- dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -fcilkplus" " "
- dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -O2 -fcilkplus" " "
+ if { [check_libcilkrts_available] } {
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -O1 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -O3 -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -fcilkplus" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -O2 -fcilkplus" " "
- dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1" " "
- dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3" " "
- dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g" " "
- dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -O2" " "
- }
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g" " "
+ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -O2" " "
+ }
+}
+cilkplus_finish
dg-finish
-unset TEST_EXTRA_LIBS
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/auto42.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/auto42.C
new file mode 100644
index 000000000..fea4c28d8
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/auto42.C
@@ -0,0 +1,9 @@
+// PR c++/60628
+// { dg-do compile { target c++11 } }
+
+#include <initializer_list>
+
+void foo(int i)
+{
+ auto x[1] = { 0 }; // { dg-error "array of .auto" }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ice15.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ice15.C
new file mode 100644
index 000000000..576fd4150
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-ice15.C
@@ -0,0 +1,12 @@
+// PR c++/58207
+// { dg-do compile { target c++11 } }
+
+struct A
+{
+ virtual bool foo ();
+};
+
+struct B : public A
+{
+ constexpr B () : A (&::n) {} // { dg-error "declared" }
+};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted2.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted2.C
index bd83c7fb2..63be99754 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted2.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/defaulted2.C
@@ -35,7 +35,7 @@ struct D: public C
struct E
{
- const B b;
+ const B b; // { dg-message "should be initialized" }
E() { } // { dg-error "uninitialized" }
};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist81.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist81.C
new file mode 100644
index 000000000..5978c6388
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist81.C
@@ -0,0 +1,25 @@
+// PR c++/60713
+// { dg-options "-O" }
+// { dg-do compile { target c++11 } }
+
+template < class x0, class x1, class x2, class x3, class x4 >
+int *x5 (x0 *, x2 (x1::*)(x3, x4));
+
+class x6
+{
+ void x7 ();
+ struct x8
+ {
+ int *x9;
+ };
+ void x10 (x8);
+ void x11 (int *, int *);
+};
+
+void
+x6::x7 ()
+{
+ x10 ({
+ x5 (this, &x6::x11)
+ });
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist82.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist82.C
new file mode 100644
index 000000000..3b9ccad66
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/initlist82.C
@@ -0,0 +1,20 @@
+// PR c++/60708
+// { dg-do compile { target c++11 } }
+
+template <class T, class U> struct mypair {
+ mypair(T, U) {}
+};
+
+template<typename T> struct S {
+ mypair<T *, int> get_pair() noexcept {
+ return mypair<T*,int>(nullptr, 0);
+ }
+};
+
+static void foo(const mypair<char *, int> (&a)[2]) noexcept { }
+
+int main()
+{
+ S<char> s;
+ foo({s.get_pair(), s.get_pair()});
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C
index 898f685aa..dcea1690d 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval.C
@@ -5,3 +5,5 @@ template <class T>
struct A { };
A<decltype([]{ return 1; }())> a; // { dg-error "lambda.*unevaluated context" }
+// { dg-prune-output "template argument" }
+// { dg-prune-output "invalid type" }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval2.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval2.C
new file mode 100644
index 000000000..14cb29874
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-uneval2.C
@@ -0,0 +1,7 @@
+// PR c++/60375
+// { dg-do compile { target c++11 } }
+
+struct A
+{
+ decltype( [](){ return this; }() ) x; // { dg-error "unevaluated" }
+};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr31439.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr31439.C
index f75373555..df50e41cd 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr31439.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/pr31439.C
@@ -1,7 +1,7 @@
// { dg-do compile { target c++11 } }
template<typename...> struct A;
-template<char> struct A<> {}; // { dg-error "not used in partial specialization|anonymous|declaration" }
+template<char> struct A<> {}; // { dg-error "not deducible|anonymous|declaration" }
template<typename T, typename... U> struct A<T, U...> : A<U...> {}; // { dg-error "incomplete type" }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic154.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic154.C
new file mode 100644
index 000000000..198f9c5ba
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic154.C
@@ -0,0 +1,8 @@
+// PR c++/60374
+// { dg-do compile { target c++11 } }
+
+template<typename> struct A {};
+
+template<typename...T> struct A<T::T...> {}; // { dg-error "typename|partial|T" }
+
+A<int> a;
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic155.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic155.C
new file mode 100644
index 000000000..d912317bd
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic155.C
@@ -0,0 +1,4 @@
+// { dg-do compile { target c++11 } }
+
+template <typename T> struct A {};
+template <int... I> struct B: A<I...> {}; // { dg-error "type" }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic156.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic156.C
new file mode 100644
index 000000000..7d3c97d68
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/variadic156.C
@@ -0,0 +1,6 @@
+// PR c++/52844
+// { dg-do compile { target c++11 } }
+
+template < class > struct V { };
+template < int...Is > void f ( V < Is...>) { } // { dg-error "mismatch|type" }
+auto g ( ) -> decltype ( f ( V < long > ( ) ) ) ; // { dg-error "matching" }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/vt-33964.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/vt-33964.C
index 9e40737d5..8cbc0d647 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/vt-33964.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/vt-33964.C
@@ -6,7 +6,7 @@ struct foo
};
template<typename ... Args>
-struct foo< typename Args::is_applied... > // { dg-error "not used|Args" }
+struct foo< typename Args::is_applied... > // { dg-error "not deducible|Args" }
{
static bool const value = false;
};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C
index 628a685f7..24680f16d 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/auto-fn25.C
@@ -1,6 +1,7 @@
// PR c++/60574
-// { dg-options "-flto" }
// { dg-do compile { target c++1y } }
+// { dg-require-effective-target lto }
+// { dg-options "-flto" }
struct A
{
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60573.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60573.C
new file mode 100644
index 000000000..2f607071c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60573.C
@@ -0,0 +1,28 @@
+// PR c++/60573
+// { dg-do compile { target c++1y } }
+// { dg-options "" }
+
+struct A
+{
+ struct B
+ {
+ void foo(auto);
+ };
+
+ void B::foo(auto) {} // { dg-error "cannot define" }
+
+ struct X
+ {
+ struct Y
+ {
+ struct Z
+ {
+ void foo(auto);
+ };
+ };
+
+ void Y::Z::foo(auto) {} // { dg-error "cannot define" }
+ };
+
+ void X::Y::Z::foo(auto) {} // { dg-error "cannot define" }
+};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60626.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60626.C
new file mode 100644
index 000000000..39ea43815
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp1y/pr60626.C
@@ -0,0 +1,7 @@
+// PR c++/60626
+// { dg-do compile { target c++1y } }
+// { dg-options "" }
+
+struct A {};
+
+void (*A::p)(auto) = 0; // { dg-error "static member|non-template" }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ext/vla14.C b/gcc-4.9/gcc/testsuite/g++.dg/ext/vla14.C
new file mode 100644
index 000000000..278cb63b9
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ext/vla14.C
@@ -0,0 +1,23 @@
+// PR c++/21113
+// { dg-options "" }
+
+void
+f (int n)
+{
+ goto label; // { dg-error "from here" }
+ int a[n]; // { dg-error "crosses initialization" }
+label: // { dg-error "jump to label" }
+ ;
+}
+
+void
+g (int n)
+{
+ switch (1)
+ {
+ case 1:
+ int (*a)[n]; // { dg-error "crosses initialization" }
+ default: // { dg-error "jump to case label" }
+ ;
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ext/vla15.C b/gcc-4.9/gcc/testsuite/g++.dg/ext/vla15.C
new file mode 100644
index 000000000..feeb49ff2
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ext/vla15.C
@@ -0,0 +1,20 @@
+// PR c++/44613
+// { dg-do run }
+// { dg-options "" }
+
+void *volatile p;
+
+int
+main (void)
+{
+ int n = 0;
+ lab:;
+ int x[n % 1000 + 1];
+ x[0] = 1;
+ x[n % 1000] = 2;
+ p = x;
+ n++;
+ if (n < 1000000)
+ goto lab;
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/gomp/pr60682.C b/gcc-4.9/gcc/testsuite/g++.dg/gomp/pr60682.C
new file mode 100644
index 000000000..fdd7a204c
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/gomp/pr60682.C
@@ -0,0 +1,44 @@
+// PR middle-end/60682
+// { dg-do compile }
+// { dg-options "-O2 -fopenmp-simd" }
+
+struct A
+{
+ float a;
+ A () {}
+ A (const A &x) { a = x.a; }
+};
+
+struct B
+{
+ A a[16];
+};
+
+struct C
+{
+ float a[1];
+ C () {}
+ C (const C &x) { a[0] = x.a[0]; }
+};
+
+struct D
+{
+ C a[16];
+};
+
+void
+foo (int x, B &y, D &z)
+{
+#pragma omp simd
+ for (int i = 0; i < x; ++i)
+ {
+ A a;
+ y.a[i] = a;
+ }
+#pragma omp simd
+ for (int i = 0; i < x; ++i)
+ {
+ C a;
+ z.a[i] = a;
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/const10.C b/gcc-4.9/gcc/testsuite/g++.dg/init/const10.C
new file mode 100644
index 000000000..ecd0db450
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/const10.C
@@ -0,0 +1,33 @@
+// PR C++/52369
+// { dg-do compile { target c++11 } }
+
+class B // { dg-message "implicitly deleted" }
+ // { dg-error "uninitialized" "" { target c++11 } 4 }
+{
+ int const v_; // { dg-message "should be initialized" }
+};
+
+struct D : B {}; // { dg-error "deleted" }
+
+class A // { dg-message "implicitly deleted" }
+ // { dg-error "uninitialized" "" { target c++11 } 12 }
+{
+ int& ref; // { dg-message "should be initialized" }
+};
+
+struct C : A {}; // { dg-error "deleted" }
+
+void f()
+{
+ D d; // { dg-error "use of deleted" }
+ new D; // { dg-error "use of deleted" }
+ D(); // { dg-error "use of deleted" }
+ new D(); // { dg-error "use of deleted" }
+
+ C c; // { dg-error "use of deleted" }
+ new C; // { dg-error "use of deleted" }
+ C(); // { dg-error "use of deleted" }
+ new C(); // { dg-error "use of deleted" }
+}
+
+
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/const11.C b/gcc-4.9/gcc/testsuite/g++.dg/init/const11.C
new file mode 100644
index 000000000..08d5185c0
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/const11.C
@@ -0,0 +1,29 @@
+// PR C++/52369
+// { dg-do compile { target { ! c++11 } } }
+
+class B
+{
+ int const v_; // { dg-message "should be initialized" }
+};
+
+struct D : B {};
+
+class A
+{
+ int& ref; // { dg-message "should be initialized" }
+};
+
+struct C : A {};
+
+void f()
+{
+ D d; // { dg-error "uninitialized" }
+ new D; // { dg-error "uninitialized" }
+ D();
+ new D();
+
+ C c; // { dg-error "uninitialized" }
+ new C; // { dg-error "uninitialized" }
+ C(); // { dg-error "value-initialization" }
+ new C(); // { dg-error "value-initialization" }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4-1.C b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4-1.C
new file mode 100644
index 000000000..1333b35f9
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4-1.C
@@ -0,0 +1,21 @@
+// { dg-do compile }
+
+class foo {
+public:
+ foo();
+};
+
+class bar: public foo { // { dg-error "uninitialized" }
+ // { dg-message "implicitly deleted" "" { target c++11 } 8 }
+private:
+ int const a; // { dg-message "should be initialized" }
+};
+
+foo::foo() {
+}
+
+int main(int argc, char **argv)
+{
+ bar x; // { dg-error "deleted" "" { target c++11 } }
+ // { dg-message "synthesized" "" { target { ! c++11 } } 19 }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4.C b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4.C
index 1c92bb973..21034b679 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor4.C
@@ -6,9 +6,10 @@ public:
foo();
};
-class bar: public foo { // { dg-error "reference|bar::bar" }
+class bar: public foo { // { dg-error "uninitialized" }
+ // { dg-message "implicitly deleted" "" { target c++11 } 9 }
private:
- int &a;
+ int &a; // { dg-message "should be initialized" }
};
foo::foo() {
@@ -16,5 +17,6 @@ foo::foo() {
int main(int argc, char **argv)
{
- bar x; // { dg-message "synthesized|deleted" }
+ bar x; // { dg-error "deleted" "" { target c++11 } }
+ // { dg-message "synthesized" "" { target { ! c++11 } } 20 }
}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/ctor8.C b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor8.C
index 7eb72eb83..3c37790c0 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/init/ctor8.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/ctor8.C
@@ -1,6 +1,6 @@
// PR c++/29039
-typedef struct S { // { dg-error "reference" "" { target c++11 } }
+typedef struct S { // { dg-error "reference" "" { target c++11 } }
int &r;
}; // { dg-warning "'typedef' was ignored" }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/pr25811.C b/gcc-4.9/gcc/testsuite/g++.dg/init/pr25811.C
index 0a462be54..c29f40607 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/init/pr25811.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/pr25811.C
@@ -1,51 +1,60 @@
// PR c++/25811
// { dg-do compile }
-struct A1 // { dg-error "uninitialized" "" { target c++11 } }
+struct A1 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 4 }
{
- int const j; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const j; // { dg-message "should be initialized" }
};
-struct A2 // { dg-error "uninitialized" "" { target c++11 } }
+struct A2 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 10 }
{
- int const volatile i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const volatile i; // { dg-message "should be initialized" }
};
-struct A3 // { dg-error "uninitialized" "" { target c++11 } }
+struct A3 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 16 }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
-struct A4 // { dg-error "uninitialized" "" { target c++11 } }
+struct A4 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 22 }
{
- int const& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const& ref; // { dg-message "should be initialized" }
};
-struct A5 // { dg-error "uninitialized" "" { target c++11 } }
+struct A5 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 28 }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
+ int const i; // { dg-message "should be initialized" }
};
-template <class T> struct S1 // { dg-error "uninitialized" "" { target c++11 } }
+template <class T> struct S1 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 35 }
{
- T const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ T const i; // { dg-message "should be initialized" }
};
-template <class T> struct S2 // { dg-error "uninitialized" "" { target c++11 } }
+template <class T> struct S2 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 41 }
{
- T const volatile i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ T const volatile i; // { dg-message "should be initialized" }
};
-template <class T> struct S3 // { dg-error "uninitialized" "" { target c++11 } }
+template <class T> struct S3 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 47 }
{
- T& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ T& ref; // { dg-message "should be initialized" }
};
-template <class T> struct S4 // { dg-error "uninitialized" "" { target c++11 } }
+template <class T> struct S4 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 53 }
{
- T const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
- T& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ T const i; // { dg-message "should be initialized" }
+ T& ref; // { dg-message "should be initialized" }
};
struct X
@@ -55,44 +64,50 @@ struct X
int const& r;
};
-struct Y11 // { dg-error "uninitialized" "" { target c++11 } }
+struct Y11 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 67 }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
-struct Y1 // { dg-error "deleted" "" { target c++11 } }
+struct Y1 // { dg-error "deleted" "" { target c++11 } }
{
Y11 a[1];
};
-struct Y22 // { dg-error "uninitialized" "" { target c++11 } }
+struct Y22 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 78 }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
-struct Y2 // { dg-error "deleted" "" { target c++11 } }
+struct Y2 // { dg-error "deleted" "" { target c++11 } }
{
Y22 a[1];
};
-struct Z1 // { dg-error "uninitialized" "" { target c++11 } }
+struct Z1 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 89 }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
-struct Z2 // { dg-error "uninitialized" "" { target c++11 } }
+struct Z2 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 95 }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
-struct Z3 // { dg-error "uninitialized" "" { target c++11 } }
+struct Z3 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 101 }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
-struct Z4 // { dg-error "uninitialized" "" { target c++11 } }
+struct Z4 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 107 }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
struct Z5
@@ -100,7 +115,7 @@ struct Z5
int i;
};
-struct Z // { dg-error "deleted" "" { target c++11 } }
+struct Z // { dg-error "deleted" "" { target c++11 } }
{
Z1 z1;
Z2 z2;
@@ -109,9 +124,10 @@ struct Z // { dg-error "deleted" "" { target c++11 } }
Z5 z5;
};
-union U // { dg-error "uninitialized" "" { target c++11 } }
+union U // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 127 }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
void f1 ()
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/pr29043.C b/gcc-4.9/gcc/testsuite/g++.dg/init/pr29043.C
index f341f8c8f..c81c39cb0 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/init/pr29043.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/pr29043.C
@@ -1,9 +1,10 @@
// PR c++/29043
// { dg-do compile }
-struct S // { dg-error "uninitialized" "" { target c++11 } }
+struct S // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 4 }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
class C
@@ -13,9 +14,10 @@ public:
S s;
};
-struct S2 // { dg-error "uninitialized" "" { target c++11 } }
+struct S2 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 17 }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
class C2
@@ -33,9 +35,10 @@ class C3
};
};
-struct S4 // { dg-error "uninitialized" "" { target c++11 } }
+struct S4 // { dg-message "implicitly deleted" "" { target c++11 } }
+ // { dg-error "uninitialized" "" { target c++11 } 38 }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
struct C4
@@ -46,7 +49,7 @@ struct C4
struct C5
{
- C5() {} // { dg-message "uninitialized" }
+ C5() {} // { dg-error "uninitialized" }
int const iit[ 1 ];
};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/pr43719.C b/gcc-4.9/gcc/testsuite/g++.dg/init/pr43719.C
index 81930d07d..c8cebc2de 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/init/pr43719.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/pr43719.C
@@ -1,51 +1,51 @@
// PR c++/43719
// { dg-do compile }
-struct A1 // { dg-error "uninitialized" "" { target c++11 } }
+struct A1 // { dg-error "uninitialized" "" { target c++11 } }
{
- int const j; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const j; // { dg-message "should be initialized" }
};
-struct A2 // { dg-error "uninitialized" "" { target c++11 } }
+struct A2 // { dg-error "uninitialized" "" { target c++11 } }
{
- int const volatile i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const volatile i; // { dg-message "should be initialized" }
};
-struct A3 // { dg-error "uninitialized" "" { target c++11 } }
+struct A3 // { dg-error "uninitialized" "" { target c++11 } }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
-struct A4 // { dg-error "uninitialized" "" { target c++11 } }
+struct A4 // { dg-error "uninitialized" "" { target c++11 } }
{
- int const& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const& ref; // { dg-message "should be initialized" }
};
-struct A5 // { dg-error "uninitialized" "" { target c++11 } }
+struct A5 // { dg-error "uninitialized" "" { target c++11 } }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
+ int const i; // { dg-message "should be initialized" }
};
template <class T> struct S1 // { dg-error "uninitialized" "" { target c++11 } }
{
- T const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ T const i; // { dg-message "should be initialized" }
};
template <class T> struct S2 // { dg-error "uninitialized" "" { target c++11 } }
{
- T const volatile i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ T const volatile i; // { dg-message "should be initialized" }
};
template <class T> struct S3 // { dg-error "uninitialized" "" { target c++11 } }
{
- T& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ T& ref; // { dg-message "should be initialized" }
};
template <class T> struct S4 // { dg-error "uninitialized" "" { target c++11 } }
{
- T const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
- T& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ T const i; // { dg-message "should be initialized" }
+ T& ref; // { dg-message "should be initialized" }
};
struct X
@@ -55,9 +55,9 @@ struct X
int const& r;
};
-struct Y11 // { dg-error "uninitialized" "" { target c++11 } }
+struct Y11 // { dg-error "uninitialized" "" { target c++11 } }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
struct Y1 // { dg-error "deleted" "" { target c++11 } }
@@ -65,9 +65,9 @@ struct Y1 // { dg-error "deleted" "" { target c++11 } }
Y11 a[1];
};
-struct Y22 // { dg-error "uninitialized" "" { target c++11 } }
+struct Y22 // { dg-error "uninitialized" "" { target c++11 } }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
struct Y2 // { dg-error "deleted" "" { target c++11 } }
@@ -75,24 +75,24 @@ struct Y2 // { dg-error "deleted" "" { target c++11 } }
Y22 a[1];
};
-struct Z1 // { dg-error "uninitialized" "" { target c++11 } }
+struct Z1 // { dg-error "uninitialized" "" { target c++11 } }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
-struct Z2 // { dg-error "uninitialized" "" { target c++11 } }
+struct Z2 // { dg-error "uninitialized" "" { target c++11 } }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
-struct Z3 // { dg-error "uninitialized" "" { target c++11 } }
+struct Z3 // { dg-error "uninitialized" "" { target c++11 } }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
-struct Z4 // { dg-error "uninitialized" "" { target c++11 } }
+struct Z4 // { dg-error "uninitialized" "" { target c++11 } }
{
- int& ref; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int& ref; // { dg-message "should be initialized" }
};
struct Z5
@@ -109,9 +109,9 @@ struct Z // { dg-error "deleted" "" { target c++11 } }
Z5 z5;
};
-union U // { dg-error "uninitialized" "" { target c++11 } }
+union U // { dg-error "uninitialized" "" { target c++11 } }
{
- int const i; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i; // { dg-message "should be initialized" }
};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/pr44086.C b/gcc-4.9/gcc/testsuite/g++.dg/init/pr44086.C
index 96b5bef1c..c3e9d4e56 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/init/pr44086.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/pr44086.C
@@ -1,9 +1,9 @@
// PR c++/44086
// { dg-do compile }
-struct A // { dg-error "uninitialized" "" { target c++11 } }
+struct A // { dg-error "uninitialized" "" { target c++11 } }
{
- int const i : 2; // { dg-message "should be initialized" "" { target { ! c++11 } } }
+ int const i : 2; // { dg-message "should be initialized" }
};
void f()
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/init/uninitialized1.C b/gcc-4.9/gcc/testsuite/g++.dg/init/uninitialized1.C
index 1e4f7ae84..e8509ff4b 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/init/uninitialized1.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/init/uninitialized1.C
@@ -1,8 +1,8 @@
// PR c++/58126
-struct A { // { dg-error "uninitialized" "" { target c++11 } }
- const int value1;
- int& value2;
+struct A { // { dg-error "uninitialized" "" { target c++11 } }
+ const int value1; // { dg-message "should be initialized" }
+ int& value2; // { dg-message "should be initialized" }
};
struct B : A { }; // { dg-error "deleted" "" { target c++11 } }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-21.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-21.C
index 99f60afe3..675bd08d7 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-21.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-21.C
@@ -37,5 +37,5 @@ main()
{
class C c;
}
-/* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" } } */
+/* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "cp" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-23.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-23.C
index a32c7d674..98d86aee8 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-23.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/devirt-23.C
@@ -45,5 +45,5 @@ main()
{
class C c;
}
-/* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" } } */
+/* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" { xfail *-*-* } } } */
/* { dg-final { cleanup-ipa-dump "cp" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60600.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60600.C
new file mode 100644
index 000000000..00c368e63
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60600.C
@@ -0,0 +1,34 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-ipa-cp" } */
+
+struct data {
+ data(int);
+};
+
+struct top {
+ virtual int topf();
+};
+
+struct intermediate: top {
+ int topf() /* override */ { return 0; }
+};
+
+struct child1: top {
+ void childf()
+ {
+ data d(topf());
+ }
+};
+
+struct child2: intermediate {};
+
+void test(top& t)
+{
+ child1& c = static_cast<child1&>(t);
+ c.childf();
+ child2 d;
+ test(d);
+}
+
+/* { dg-final { scan-ipa-dump "Type inconsident devirtualization" "cp" } } */
+/* { dg-final { cleanup-ipa-dump "cp" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-1.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-1.C
new file mode 100644
index 000000000..7a0b91893
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-1.C
@@ -0,0 +1,50 @@
+// { dg-do compile }
+// { dg-options "-O3" }
+
+class ASN1Object
+{
+public:
+ virtual ~ASN1Object ();
+};
+class A
+{
+ virtual unsigned m_fn1 () const;
+};
+class B
+{
+public:
+ ASN1Object Element;
+ virtual unsigned m_fn1 (bool) const;
+};
+template <class BASE> class C : public BASE
+{
+};
+
+class D : ASN1Object, public B
+{
+};
+class G : public D
+{
+ unsigned m_fn1 (bool) const {}
+};
+class F : A
+{
+public:
+ F (A);
+ unsigned m_fn1 () const
+ {
+ int a;
+ a = m_fn2 ().m_fn1 (0);
+ return a;
+ }
+ const B &m_fn2 () const { return m_groupParameters; }
+ C<G> m_groupParameters;
+};
+template <class D> void BenchMarkKeyAgreement (int *, int *, int)
+{
+ A f;
+ D d (f);
+}
+
+void BenchmarkAll2 () { BenchMarkKeyAgreement<F>(0, 0, 0); }
+
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-2.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-2.C
new file mode 100644
index 000000000..c6e614cc0
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-2.C
@@ -0,0 +1,15 @@
+// { dg-do compile }
+// { dg-options "-O3" }
+
+struct B { virtual unsigned f () const; };
+struct C { virtual void f (); };
+struct F { virtual unsigned f (bool) const; ~F (); };
+struct J : C, F {};
+struct G : J { unsigned f (bool) const { return 0; } };
+struct H : B
+{
+ H (int);
+ unsigned f () const { return ((const F &) h).f (0); }
+ G h;
+};
+H h (0);
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-3.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-3.C
new file mode 100644
index 000000000..21b1f58a0
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-3.C
@@ -0,0 +1,81 @@
+// { dg-do run }
+// { dg-options "-O3" }
+
+struct Distraction
+{
+ char fc[8];
+ virtual Distraction * return_self ()
+ { return this; }
+};
+
+namespace {
+
+struct A;
+static A * __attribute__ ((noinline, noclone)) get_an_A ();
+
+static int go;
+
+struct A
+{
+ int fi;
+
+ A () : fi(777) {}
+ A (int pi) : fi (pi) {}
+ virtual A * foo (int p) = 0;
+};
+
+struct B;
+static B * __attribute__ ((noinline, noclone)) get_a_B ();
+
+struct B : public Distraction, A
+{
+ B () : Distraction(), A() { }
+ B (int pi) : Distraction (), A (pi) {}
+ virtual B * foo (int p)
+ {
+ int o = fi;
+ for (int i = 0; i < p; i++)
+ o += i + i * i;
+ go = o;
+
+ return get_a_B ();
+ }
+};
+
+
+struct B gb1 (1111), gb2 (2);
+static B * __attribute__ ((noinline, noclone))
+get_a_B ()
+{
+ return &gb1;
+}
+
+static A * __attribute__ ((noinline, noclone))
+get_an_A ()
+{
+ return &gb2;
+}
+
+}
+
+static int __attribute__ ((noinline, noclone))
+get_a_number ()
+{
+ return 5;
+}
+
+extern "C" void abort (void);
+
+int main (int argc, char *argv[])
+{
+ for (int i = 0; i < get_a_number (); i++)
+ {
+ struct A *p = get_an_A ();
+ struct A *r = p->foo (4);
+ if (r->fi != 1111)
+ abort ();
+ if (go != 22)
+ abort ();
+ }
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-4.C b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-4.C
new file mode 100644
index 000000000..eb9eb627f
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ipa/pr60640-4.C
@@ -0,0 +1,85 @@
+// { dg-do run }
+// { dg-options "-O3 -fdump-ipa-cp" }
+
+struct Distraction
+{
+ char fc[8];
+ virtual Distraction * return_self ()
+ { return this; }
+};
+
+namespace {
+
+struct A;
+static A * __attribute__ ((noinline, noclone)) get_an_A ();
+
+static int go;
+
+struct A
+{
+ int fi;
+
+ A () : fi(777) {}
+ A (int pi) : fi (pi) {}
+ virtual void foo (int p) = 0;
+};
+
+struct B : public Distraction, A
+{
+ B () : Distraction(), A() { }
+ B (int pi) : Distraction (), A (pi) {}
+ virtual void foo (int p)
+ {
+ int o = fi;
+ for (int i = 0; i < p; i++)
+ o += i + i * i;
+ go = o;
+ }
+};
+
+
+struct B gb (2);
+static A * __attribute__ ((noinline, noclone))
+get_an_A ()
+{
+ return &gb;
+}
+
+}
+
+static int __attribute__ ((noinline, noclone))
+get_a_number ()
+{
+ return 5;
+}
+
+extern "C" void abort (void);
+
+static void __attribute__ ((noinline, noclone))
+bar ()
+{
+ for (int i = 0; i < get_a_number (); i++)
+ {
+ struct A *p = get_an_A ();
+ p->foo (4);
+ if (go != 22)
+ abort ();
+ }
+}
+
+int main (int argc, char *argv[])
+{
+ for (int i = 0; i < get_a_number (); i++)
+ {
+ struct A *p = get_an_A ();
+ p->foo (4);
+ if (go != 22)
+ abort ();
+ }
+
+ bar ();
+ return 0;
+}
+
+/* { dg-final { scan-ipa-dump-times "Thunk fixed offset" 2 "cp"} } */
+/* { dg-final { cleanup-ipa-dump "cp" } } */
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/lto/pr60567_0.C b/gcc-4.9/gcc/testsuite/g++.dg/lto/pr60567_0.C
new file mode 100644
index 000000000..966a3c3bc
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/lto/pr60567_0.C
@@ -0,0 +1,23 @@
+// PR lto/60567
+// { dg-lto-do link }
+// { dg-lto-options { { -flto -fno-use-linker-plugin } } }
+// { dg-extra-ld-options "-r -nostdlib" }
+
+#pragma implementation
+struct S {};
+
+#pragma interface
+struct T
+{
+ virtual void foo (const S &) = 0;
+};
+
+struct U
+{
+ virtual void bar (const S &) = 0;
+};
+
+struct V : public T, public U
+{
+ virtual void bar (const S &) {}
+};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/opt/pr56999.C b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr56999.C
index 6db2f270e..8d89ffa16 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/opt/pr56999.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/opt/pr56999.C
@@ -159,6 +159,7 @@ TypeCompartment::addPendingRecompile (JSContext *cx, const RecompileInfo & info)
pendingRecompiles->append (info);
}
volatile JITScript *JSScript::JITScriptHandle::UNJITTABLE;
+#pragma GCC visibility pop
int
main ()
{
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/pr49718.C b/gcc-4.9/gcc/testsuite/g++.dg/pr49718.C
index d7f2710a9..b1cc5deb7 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/pr49718.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/pr49718.C
@@ -2,7 +2,8 @@
/* { dg-options "-O2 -finstrument-functions" } */
/* { dg-additional-options "-mno-explicit-relocs" { target alpha*-*-* } } */
/* { dg-additional-options "-mno-relax-pic-calls" { target mips*-*-* } } */
-/* { dg-final { scan-assembler-times "__cyg_profile_func_enter" 1} } */
+/* { dg-final { scan-assembler-times "__cyg_profile_func_enter" 1 { target { ! { hppa*-*-hpux* } } } } } */
+/* { dg-final { scan-assembler-times "__cyg_profile_func_enter,%r" 1 { target hppa*-*-hpux* } } } */
#define NOINSTR __attribute__((no_instrument_function))
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/crash119.C b/gcc-4.9/gcc/testsuite/g++.dg/template/crash119.C
new file mode 100644
index 000000000..95d80a8ff
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/template/crash119.C
@@ -0,0 +1,8 @@
+// PR c++/59115
+
+template<typename T, float, int, typename U> void foo(T, U) {} // { dg-error "valid type" }
+
+void bar()
+{
+ foo(0, 0); // { dg-error "matching" }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/crash97.C b/gcc-4.9/gcc/testsuite/g++.dg/template/crash97.C
index 3d177f4e5..7d2161f54 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/template/crash97.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/template/crash97.C
@@ -2,7 +2,7 @@
template<typename> struct A {};
-template<typename> struct A<int> // { dg-error "not used|template\\-parameter" }
+template<typename> struct A<int> // { dg-error "not deducible|template\\-parameter" }
{
template<int> void foo();
};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/crash98.C b/gcc-4.9/gcc/testsuite/g++.dg/template/crash98.C
index a79ab02f6..9d7d2ece1 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/template/crash98.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/template/crash98.C
@@ -2,7 +2,7 @@
template < typename > struct A;
-template < typename > struct A < int > // { dg-error "not used|template\\-parameter|declaration" }
+template < typename > struct A < int > // { dg-error "not deducible|template\\-parameter|declaration" }
{
int i;
int f ();
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/template/partial5.C b/gcc-4.9/gcc/testsuite/g++.dg/template/partial5.C
index aa32e3b8a..979e4c62b 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/template/partial5.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/template/partial5.C
@@ -4,7 +4,7 @@ template<typename T>
struct X { };
template<typename T>
-struct X<typename T::foo> { }; // { dg-error "not used|T" }
+struct X<typename T::foo> { }; // { dg-error "not deducible|T" }
template<int N>
struct X<int[N]> {}; // okay
@@ -14,7 +14,7 @@ template<typename T, typename T::foo V>
struct Y { };
template<typename T, typename U, U v>
-struct Y<T, v> { }; // { dg-error "not used|U" }
+struct Y<T, v> { }; // { dg-error "not deducible|U" }
template<typename T, T V>
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60315.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60315.C
new file mode 100644
index 000000000..05575c463
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60315.C
@@ -0,0 +1,19 @@
+// PR ipa/60315
+// { dg-do compile }
+// { dg-options "-std=c++11" }
+
+struct Base {
+ virtual int f() = 0;
+};
+
+struct Derived : public Base {
+ virtual int f() final override {
+ return 42;
+ }
+};
+
+extern Base* b;
+
+int main() {
+ return (static_cast<Derived*>(b)->*(&Derived::f))();
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60609.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60609.C
new file mode 100644
index 000000000..9ddec0b60
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60609.C
@@ -0,0 +1,252 @@
+/* { dg-do assemble } */
+
+class exception
+{
+};
+class bad_alloc:exception
+{
+};
+class logic_error:exception
+{
+};
+class domain_error:logic_error
+{
+};
+class invalid_argument:logic_error
+{
+};
+class length_error:logic_error
+{
+};
+class overflow_error:exception
+{
+};
+typedef int mpz_t[];
+template < class > class __gmp_expr;
+template <> class __gmp_expr < mpz_t >
+{
+ ~__gmp_expr ();
+};
+
+class PIP_Solution_Node;
+class internal_exception
+{
+ ~internal_exception ();
+};
+class not_an_integer:internal_exception
+{
+};
+class not_a_variable:internal_exception
+{
+};
+class not_an_optimization_mode:internal_exception
+{
+};
+class not_a_bounded_integer_type_width:internal_exception
+{
+};
+class not_a_bounded_integer_type_representation:internal_exception
+{
+};
+class not_a_bounded_integer_type_overflow:internal_exception
+{
+};
+class not_a_complexity_class:internal_exception
+{
+};
+class not_a_control_parameter_name:internal_exception
+{
+};
+class not_a_control_parameter_value:internal_exception
+{
+};
+class not_a_pip_problem_control_parameter_name:internal_exception
+{
+};
+class not_a_pip_problem_control_parameter_value:internal_exception
+{
+};
+class not_a_relation:internal_exception
+{
+};
+class ppl_handle_mismatch:internal_exception
+{
+};
+class timeout_exception
+{
+ ~timeout_exception ();
+};
+class deterministic_timeout_exception:timeout_exception
+{
+};
+void __assert_fail (const char *, const char *, int, int *)
+__attribute__ ((__noreturn__));
+void PL_get_pointer (void *);
+int Prolog_is_address ();
+inline int
+Prolog_get_address (void **p1)
+{
+ Prolog_is_address ()? static_cast <
+ void >(0) : __assert_fail ("Prolog_is_address", "./swi_cfli.hh", 0, 0);
+ PL_get_pointer (p1);
+ return 0;
+}
+
+class non_linear:internal_exception
+{
+};
+class not_unsigned_integer:internal_exception
+{
+};
+class not_universe_or_empty:internal_exception
+{
+};
+class not_a_nil_terminated_list:internal_exception
+{
+};
+class PPL_integer_out_of_range
+{
+ __gmp_expr < mpz_t > n;
+};
+void handle_exception ();
+template < typename T > T * term_to_handle (int, const char *)
+{
+ if (Prolog_is_address ())
+ {
+ void *p;
+ Prolog_get_address (&p);
+ return static_cast < T * >(0);
+ }
+ throw;
+}
+
+void
+ppl_new_MIP_Problem_from_MIP_Problem ()
+try
+{
+ term_to_handle < int >(0, "ppl_new_MIP_Problem_from_MIP_Problem/2");
+}
+
+catch (exception &)
+{
+}
+
+int
+ppl_PIP_Tree_Node_parametric_values ()
+{
+ try
+ {
+ PIP_Solution_Node *a = term_to_handle < PIP_Solution_Node > (0, 0);
+ (void)a;
+ return 1;
+ }
+ catch (internal_exception &)
+ {
+ }
+ catch (not_unsigned_integer &)
+ {
+ handle_exception ();
+ }
+ catch (non_linear &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_variable &)
+ {
+ handle_exception ();
+ }
+ catch (not_an_integer &)
+ {
+ handle_exception ();
+ }
+ catch (ppl_handle_mismatch &)
+ {
+ handle_exception ();
+ }
+ catch (not_an_optimization_mode &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_complexity_class &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_bounded_integer_type_width &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_bounded_integer_type_representation &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_bounded_integer_type_overflow &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_control_parameter_name &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_control_parameter_value &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_pip_problem_control_parameter_name &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_pip_problem_control_parameter_value &)
+ {
+ handle_exception ();
+ }
+ catch (not_universe_or_empty &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_relation &)
+ {
+ handle_exception ();
+ }
+ catch (not_a_nil_terminated_list &)
+ {
+ handle_exception ();
+ }
+ catch (PPL_integer_out_of_range &)
+ {
+ handle_exception ();
+ }
+ catch (int &)
+ {
+ } catch (timeout_exception &)
+ {
+ handle_exception ();
+ } catch (deterministic_timeout_exception &)
+ {
+ handle_exception ();
+ } catch (overflow_error &)
+ {
+ handle_exception ();
+ } catch (domain_error &)
+ {
+ handle_exception ();
+ } catch (length_error &)
+ {
+ handle_exception ();
+ } catch (invalid_argument &)
+ {
+ handle_exception ();
+ } catch (logic_error &)
+ {
+ handle_exception ();
+ } catch (bad_alloc &)
+ {
+ handle_exception ();
+ } catch (exception &)
+ {
+ handle_exception ();
+ } catch ( ...)
+ {
+ handle_exception ();
+ }
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60648.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60648.C
new file mode 100644
index 000000000..48cf0afb5
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60648.C
@@ -0,0 +1,70 @@
+// PR target/60648
+// { dg-do compile }
+// { dg-additional-options "-fPIC" { target fpic } }
+
+enum component
+{
+ Ex,
+ Ez,
+ Hy,
+ Permeability
+};
+enum derived_component
+{};
+enum direction
+{
+ X,
+ Y,
+ Z,
+ R,
+ P,
+ NO_DIRECTION
+};
+derived_component a;
+component *b;
+component c;
+direction d;
+inline direction fn1 (component p1)
+{
+ switch (p1)
+ {
+ case 0:
+ return Y;
+ case 1:
+ return Z;
+ case Permeability:
+ return NO_DIRECTION;
+ }
+ return X;
+}
+
+inline component fn2 (direction p1)
+{
+ switch (p1)
+ {
+ case 0:
+ case 1:
+ return component ();
+ case Z:
+ case R:
+ return component (1);
+ case P:
+ return component (3);
+ }
+}
+
+void fn3 ()
+{
+ direction e;
+ switch (0)
+ case 0:
+ switch (a)
+ {
+ case 0:
+ c = Ex;
+ b[1] = Hy;
+ }
+ e = fn1 (b[1]);
+ b[1] = fn2 (e);
+ d = fn1 (c);
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60659.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60659.C
new file mode 100644
index 000000000..f0158a522
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60659.C
@@ -0,0 +1,58 @@
+// { dg-do compile }
+template <typename _InputIterator> void __distance (_InputIterator);
+template <typename _InputIterator>
+void distance (_InputIterator, _InputIterator p2)
+{
+ __distance (p2);
+}
+
+namespace boost
+{
+template <class Iterator> struct A
+{
+ typedef typename Iterator::difference_type type;
+};
+template <class T> typename T::const_iterator end (T &);
+template <class T> typename T::const_iterator begin (T &);
+template <class T> struct D : A<typename T::const_iterator>
+{
+};
+template <class T> typename D<T>::type distance (const T &p1)
+{
+ distance (boost::begin (p1), boost::end (p1));
+ return 0;
+}
+template <class IteratorT> class B
+{
+public:
+ typedef B type;
+ typedef IteratorT const_iterator;
+};
+}
+
+typedef int storage_t[];
+struct F;
+template <template <typename> class> struct G
+{
+ G (const G &p1) { p1.m_fn1 ().m_fn1 (0); }
+ const F &m_fn1 () const
+ {
+ const void *a;
+ a = &data_m;
+ return *static_cast<const F *>(a);
+ }
+ storage_t *data_m;
+};
+
+struct F
+{
+ virtual F *m_fn1 (void *) const;
+};
+template <typename> struct H;
+struct C : G<H>
+{
+ typedef int difference_type;
+};
+boost::B<C> AllTransVideos ();
+int b = boost::distance (AllTransVideos ());
+
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60746.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60746.C
new file mode 100644
index 000000000..7ce6ebe6b
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60746.C
@@ -0,0 +1,23 @@
+// { dg-do compile }
+
+class One
+{
+public:
+ virtual unsigned long getSize () const;
+};
+
+class Two
+{
+ virtual int run ();
+};
+
+int
+Two::run ()
+{
+ One list_arry[5][2];
+ int orig = 0;
+ if (list_arry[3][orig].getSize () > 0
+ || list_arry[4][orig].getSize () > 0)
+ {
+ }
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60750.C b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60750.C
new file mode 100644
index 000000000..a344bd764
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/torture/pr60750.C
@@ -0,0 +1,21 @@
+// { dg-do run }
+// { dg-options "-std=c++11" }
+
+#include <string>
+#include <stdexcept>
+
+const std::string err_prefix = "Problem: ";
+void thrower (std::string msg)
+{
+ throw std::runtime_error(err_prefix + std::move(msg));
+}
+
+int main(int argc, char **argv)
+{
+ try {
+ std::string base = "hello";
+ thrower(std::move(base));
+ } catch (const std::runtime_error &e) {
+ }
+ return 0;
+}
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/vect/pr60729.cc b/gcc-4.9/gcc/testsuite/g++.dg/vect/pr60729.cc
new file mode 100644
index 000000000..fd472c50a
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/vect/pr60729.cc
@@ -0,0 +1,10 @@
+// { dg-do compile }
+// { dg-additional-options "-ftrapv" }
+
+void doSomething(int dim, double *Y, double *A)
+{
+ for (int k=0; k<dim; k++)
+ Y[k] += __builtin_fabs (A[k]);
+}
+
+// { dg-final { cleanup-tree-dump "vect" } }
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-2.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-2.C
index d40de3d7c..9f2e4bea4 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-2.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-2.C
@@ -6,18 +6,18 @@
// destructor, in which case it would be possible but unsafe to delete
// an instance of a derived class through a pointer to the base class.
-struct A // { dg-bogus "non-virtual destructor" }
+struct A
{
protected:
- ~A();
+ ~A(); // inaccessible - no warning
public:
virtual void f() = 0;
};
-struct B // { dg-bogus "non-virtual destructor" }
+struct B
{
private:
- ~B();
+ ~B(); // inaccessible - no warning
public:
virtual void f() = 0;
};
@@ -52,3 +52,25 @@ private:
public:
virtual void f() = 0;
};
+
+struct H {};
+
+struct I1 : H
+{};
+struct I2 : private H
+{};
+
+struct J1 : H
+{ virtual ~J1 ();};
+struct J2 : private H
+{ virtual ~J2 ();};
+
+struct K // { dg-warning "accessible non-virtual destructor" }
+{
+ virtual void k ();
+};
+
+struct L1 : K // { dg-warning "accessible non-virtual destructor" }
+{virtual ~L1 ();};
+struct L2 : private K
+{virtual ~L2 ();};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-3.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-3.C
new file mode 100644
index 000000000..e83134b06
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-3.C
@@ -0,0 +1,75 @@
+// { dg-do compile }
+// { dg-options "-Weffc++" }
+
+// Warn when a class has virtual functions and accessible non-virtual
+// destructor, in which case it would be possible but unsafe to delete
+// an instance of a derived class through a pointer to the base class.
+
+struct A
+{
+protected:
+ ~A(); // inaccessible - no warning
+public:
+ virtual void f() = 0;
+};
+
+struct B
+{
+private:
+ ~B(); // inaccessible - no warning
+public:
+ virtual void f() = 0;
+};
+
+struct C // { dg-warning "non-virtual destructor" }
+{
+ virtual void f() = 0;
+};
+
+struct D // { dg-warning "non-virtual destructor" }
+{
+ ~D();
+ virtual void f() = 0;
+};
+
+struct E;
+
+struct F // { dg-warning "non-virtual destructor" }
+{
+protected:
+ friend class E;
+ ~F();
+public:
+ virtual void f() = 0;
+};
+
+struct G // { dg-warning "non-virtual destructor" }
+{
+private:
+ friend class E;
+ ~G();
+public:
+ virtual void f() = 0;
+};
+
+struct H {};
+
+struct I1 : H
+{};
+struct I2 : private H
+{};
+
+struct J1 : H // { dg-warning "accessible non-virtual destructor" }
+{ virtual ~J1 ();};
+struct J2 : private H
+{ virtual ~J2 ();};
+
+struct K // { dg-warning "accessible non-virtual destructor" }
+{
+ virtual void k ();
+};
+
+struct L1 : K // { dg-warning "accessible non-virtual destructor" }
+{virtual ~L1 ();};
+struct L2 : private K
+{virtual ~L2 ();};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-4.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-4.C
new file mode 100644
index 000000000..dd6d9d768
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor-4.C
@@ -0,0 +1,75 @@
+// { dg-do compile }
+// { dg-options "-Weffc++ -Wno-non-virtual-dtor" }
+
+// Warn when a class has virtual functions and accessible non-virtual
+// destructor, in which case it would be possible but unsafe to delete
+// an instance of a derived class through a pointer to the base class.
+
+struct A
+{
+protected:
+ ~A();
+public:
+ virtual void f() = 0;
+};
+
+struct B
+{
+private:
+ ~B();
+public:
+ virtual void f() = 0;
+};
+
+struct C
+{
+ virtual void f() = 0;
+};
+
+struct D
+{
+ ~D();
+ virtual void f() = 0;
+};
+
+struct E;
+
+struct F
+{
+protected:
+ friend class E;
+ ~F();
+public:
+ virtual void f() = 0;
+};
+
+struct G
+{
+private:
+ friend class E;
+ ~G();
+public:
+ virtual void f() = 0;
+};
+
+struct H {};
+
+struct I1 : H
+{};
+struct I2 : private H
+{};
+
+struct J1 : H
+{ virtual ~J1 ();};
+struct J2 : private H
+{ virtual ~J2 ();};
+
+struct K
+{
+ virtual void k ();
+};
+
+struct L1 : K
+{virtual ~L1 ();};
+struct L2 : private K
+{virtual ~L2 ();};
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor.C
index b04fdcbe6..f03cff5b3 100644
--- a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor.C
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wnvdtor.C
@@ -8,3 +8,4 @@ extern "Java"
virtual void bar( void);
};
}
+
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/warn/Wreturn-local-addr-2.C b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wreturn-local-addr-2.C
new file mode 100644
index 000000000..c483601e6
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/warn/Wreturn-local-addr-2.C
@@ -0,0 +1,11 @@
+// PR c++/44859
+
+struct Base2 { int m_foo; };
+struct Derived2 : public Base2 {};
+
+const Base2& f8() { return Derived2(); } // { dg-warning "reference to temporary" }
+
+struct foo { };
+struct bar { foo base; };
+
+const foo& f9() { return bar().base; } // { dg-warning "reference to temporary" }