summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.dg')
-rw-r--r--gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c3
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr38795.C13
-rw-r--r--gcc/testsuite/g++.dg/eh/check-vect.h5
-rw-r--r--gcc/testsuite/g++.dg/eh/simd-2.C4
-rw-r--r--gcc/testsuite/g++.dg/ext/altivec-2.C3
-rw-r--r--gcc/testsuite/g++.dg/ext/altivec-3.C5
-rw-r--r--gcc/testsuite/g++.dg/ext/altivec-cell-2.C5
-rw-r--r--gcc/testsuite/g++.dg/ext/altivec-cell-3.C5
-rw-r--r--gcc/testsuite/g++.dg/ext/altivec-cell-4.C5
-rw-r--r--gcc/testsuite/g++.dg/ext/altivec_check.h27
-rw-r--r--gcc/testsuite/g++.dg/ext/spe1.C3
-rw-r--r--gcc/testsuite/g++.dg/other/opaque-1.C4
-rw-r--r--gcc/testsuite/g++.dg/other/opaque-2.C3
-rw-r--r--gcc/testsuite/g++.dg/other/opaque-3.C3
-rw-r--r--gcc/testsuite/g++.dg/parse/crash50.C10
-rw-r--r--gcc/testsuite/g++.dg/parse/pr37862.C25
-rw-r--r--gcc/testsuite/g++.dg/torture/pr38811.C73
17 files changed, 141 insertions, 55 deletions
diff --git a/gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c b/gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c
index b314d7079b3..575ad61a01a 100644
--- a/gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c
+++ b/gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c
@@ -48,8 +48,7 @@ const char *dg_options[] = {
"/* { dg-options \"%s-I%s -fno-common\" { target hppa*-*-hpux* powerpc*-*-darwin* *-*-mingw32* *-*-cygwin* } } */\n",
"/* { dg-options \"%s-I%s -mno-mmx -fno-common\" { target i?86-*-darwin* x86_64-*-darwin* } } */\n",
"/* { dg-options \"%s-I%s -mno-base-addresses\" { target mmix-*-* } } */\n",
-"/* { dg-options \"%s-I%s -mlongcalls -mtext-section-literals\" { target xtensa*-*-* } } */\n",
-"/* { dg-options \"%s-I%s -mieee\" { target alpha*-*-* } } */\n"
+"/* { dg-options \"%s-I%s -mlongcalls -mtext-section-literals\" { target xtensa*-*-* } } */\n"
#define NDG_OPTIONS (sizeof (dg_options) / sizeof (dg_options[0]))
};
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr38795.C b/gcc/testsuite/g++.dg/cpp0x/pr38795.C
new file mode 100644
index 00000000000..54fb361d3d4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/pr38795.C
@@ -0,0 +1,13 @@
+// PR c++/38795
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+template<typename... T> int foo(int i)
+{
+ return *reinterpret_cast<T*>(i); // { dg-error "not expanded with|T" }
+}
+
+void bar(int i)
+{
+ foo<int>(i);
+}
diff --git a/gcc/testsuite/g++.dg/eh/check-vect.h b/gcc/testsuite/g++.dg/eh/check-vect.h
index 4321be0a4a6..b46a8827598 100644
--- a/gcc/testsuite/g++.dg/eh/check-vect.h
+++ b/gcc/testsuite/g++.dg/eh/check-vect.h
@@ -13,10 +13,7 @@ sig_ill_handler (int sig)
void check_vect (void)
{
signal(SIGILL, sig_ill_handler);
-#if defined(__ppc__) || defined(__ppc64__) || defined(__powerpc__) || defined(powerpc)
- /* Altivec instruction, 'vor %v0,%v0,%v0'. */
- asm volatile (".long 0x10000484");
-#elif defined(__i386__) || defined(__x86_64__)
+#if defined(__i386__) || defined(__x86_64__)
/* SSE2 instruction: movsd %xmm0,%xmm0 */
asm volatile (".byte 0xf2,0x0f,0x10,0xc0");
#elif defined(__sparc__)
diff --git a/gcc/testsuite/g++.dg/eh/simd-2.C b/gcc/testsuite/g++.dg/eh/simd-2.C
index e2af86636ac..b4c8690e9de 100644
--- a/gcc/testsuite/g++.dg/eh/simd-2.C
+++ b/gcc/testsuite/g++.dg/eh/simd-2.C
@@ -3,9 +3,7 @@
// { dg-options "-O" }
// { dg-options "-O -w" { target { { i?86-*-* x86_64-*-* } && ilp32 } } }
// { dg-options "-O -w" { target powerpc*-*-* } }
-// { dg-options "-O -w -maltivec" { target { powerpc*-*-linux* && powerpc_altivec_ok } } }
-// { dg-options "-O -w -maltivec" { target { powerpc*-*-darwin* && powerpc_altivec_ok } } }
-// { dg-xfail-if "" { "powerpc-*-eabispe*" "powerpc-ibm-aix*" } { "*" } { "" } }
+// { dg-options "-O -w -maltivec" { target { powerpc*-*-* && vmx_hw } } }
// { dg-do run }
#include "check-vect.h"
diff --git a/gcc/testsuite/g++.dg/ext/altivec-2.C b/gcc/testsuite/g++.dg/ext/altivec-2.C
index 268ff998946..299693694f6 100644
--- a/gcc/testsuite/g++.dg/ext/altivec-2.C
+++ b/gcc/testsuite/g++.dg/ext/altivec-2.C
@@ -6,7 +6,6 @@
arguments. */
#include <altivec.h>
-#include "altivec_check.h"
int main (int argc, const char * argv[])
{
@@ -15,8 +14,6 @@ int main (int argc, const char * argv[])
vector float v;
const vector float cv = (vector float){1.0, 2.0, 3.0, 4.0};
- altivec_check ();
-
vec_dst(&cv, i, 0);
v = vec_ld(0, &cv);
v = vec_lde(0, &cf);
diff --git a/gcc/testsuite/g++.dg/ext/altivec-3.C b/gcc/testsuite/g++.dg/ext/altivec-3.C
index d42303d8140..15113205950 100644
--- a/gcc/testsuite/g++.dg/ext/altivec-3.C
+++ b/gcc/testsuite/g++.dg/ext/altivec-3.C
@@ -1,4 +1,5 @@
-/* { dg-do run { target powerpc*-*-* } } */
+/* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */
+/* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */
/* { dg-require-effective-target powerpc_altivec_ok } */
/* { dg-options "-maltivec" } */
@@ -10,7 +11,6 @@
#include <stdlib.h>
#include <altivec.h>
-#include "altivec_check.h"
#define CHECK_INVARIANT(expr) \
if (!(expr)) { \
@@ -132,7 +132,6 @@ void main1(void)
int main(void)
{
- altivec_check();
main1();
return 0;
}
diff --git a/gcc/testsuite/g++.dg/ext/altivec-cell-2.C b/gcc/testsuite/g++.dg/ext/altivec-cell-2.C
index 969cc97aa8a..f0d3433cdd9 100644
--- a/gcc/testsuite/g++.dg/ext/altivec-cell-2.C
+++ b/gcc/testsuite/g++.dg/ext/altivec-cell-2.C
@@ -1,9 +1,9 @@
-/* { dg-do run { target powerpc*-*-* } } */
+/* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */
+/* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */
/* { dg-require-effective-target powerpc_altivec_ok } */
/* { dg-options "-maltivec" } */
/* Test the vec_extract VMX intrinsics. */
#include <altivec.h>
-#include "altivec_check.h"
extern "C" void abort (void);
@@ -137,6 +137,5 @@ int main1(void)
int main(void)
{
- altivec_check(); /* Exits if AltiVec not supported */
return main1 ();
}
diff --git a/gcc/testsuite/g++.dg/ext/altivec-cell-3.C b/gcc/testsuite/g++.dg/ext/altivec-cell-3.C
index f7ebcae054e..bd7e774e3cd 100644
--- a/gcc/testsuite/g++.dg/ext/altivec-cell-3.C
+++ b/gcc/testsuite/g++.dg/ext/altivec-cell-3.C
@@ -1,9 +1,9 @@
-/* { dg-do run { target powerpc*-*-* } } */
+/* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */
+/* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */
/* { dg-require-effective-target powerpc_altivec_ok } */
/* { dg-options "-maltivec" } */
/* Test the vec_splats and vec_promote VMX intrinsics. */
#include <altivec.h>
-#include "altivec_check.h"
extern "C" void abort (void);
@@ -33,6 +33,5 @@ int main1(int t)
int main(void)
{
- altivec_check(); /* Exits if AltiVec not supported */
return main1 (0);
}
diff --git a/gcc/testsuite/g++.dg/ext/altivec-cell-4.C b/gcc/testsuite/g++.dg/ext/altivec-cell-4.C
index 10ab162dad2..7d91adbb34e 100644
--- a/gcc/testsuite/g++.dg/ext/altivec-cell-4.C
+++ b/gcc/testsuite/g++.dg/ext/altivec-cell-4.C
@@ -1,10 +1,10 @@
-/* { dg-do run { target powerpc*-*-* } } */
+/* { dg-do run { target { powerpc*-*-* && vmx_hw } } } */
+/* { dg-do compile { target { powerpc*-*-* && { ! vmx_hw } } } } */
/* { dg-require-effective-target powerpc_altivec_ok } */
/* { dg-options "-maltivec" } */
/* Test the vec_splats and vec_promote VMX intrinsics. */
#include <altivec.h>
-#include "altivec_check.h"
extern "C" void abort (void);
@@ -38,6 +38,5 @@ int main1(int t)
int main(void)
{
- altivec_check(); /* Exits if AltiVec not supported */
return main1 (0);
}
diff --git a/gcc/testsuite/g++.dg/ext/altivec_check.h b/gcc/testsuite/g++.dg/ext/altivec_check.h
deleted file mode 100644
index 9e8b3f78ac2..00000000000
--- a/gcc/testsuite/g++.dg/ext/altivec_check.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* A runtime check for AltiVec capability. */
-/* Contributed by Ziemowit Laski <zlaski@apple.com> */
-
-#include <signal.h>
-extern
-#ifdef __cplusplus
-"C"
-#endif
-void exit(int);
-
-void
-sig_ill_handler (int sig)
-{
- exit (0);
-}
-
-void altivec_check(void) {
-
- /* Exit on systems without AltiVec. */
- signal (SIGILL, sig_ill_handler);
-#ifdef __MACH__
- asm volatile ("vor v0,v0,v0");
-#else
- asm volatile ("vor 0,0,0");
-#endif
- signal (SIGILL, SIG_DFL);
-}
diff --git a/gcc/testsuite/g++.dg/ext/spe1.C b/gcc/testsuite/g++.dg/ext/spe1.C
index fdd213964b4..8b1e630ecc0 100644
--- a/gcc/testsuite/g++.dg/ext/spe1.C
+++ b/gcc/testsuite/g++.dg/ext/spe1.C
@@ -1,5 +1,6 @@
-/* { dg-do compile { target powerpc-*-eabi* } } */
+/* { dg-do compile } */
/* { dg-options "-mcpu=8540 -mspe -mabi=spe -mfloat-gprs=single -O0" } */
+/* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } } */
typedef int v2si __attribute__ ((vector_size (8)));
diff --git a/gcc/testsuite/g++.dg/other/opaque-1.C b/gcc/testsuite/g++.dg/other/opaque-1.C
index fa79f6f2a1e..5cdaeafe31a 100644
--- a/gcc/testsuite/g++.dg/other/opaque-1.C
+++ b/gcc/testsuite/g++.dg/other/opaque-1.C
@@ -1,4 +1,6 @@
-/* { dg-do run { target { powerpc*-*-* && powerpc_spe } } } */
+/* { dg-do run } */
+/* { dg-options "-mcpu=8540 -mspe -mabi=spe -mfloat-gprs=single" } */
+/* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } } */
#define __vector __attribute__((vector_size(8)))
typedef float __vector __ev64_fs__;
diff --git a/gcc/testsuite/g++.dg/other/opaque-2.C b/gcc/testsuite/g++.dg/other/opaque-2.C
index 6b13ba2810d..3bb4af2c778 100644
--- a/gcc/testsuite/g++.dg/other/opaque-2.C
+++ b/gcc/testsuite/g++.dg/other/opaque-2.C
@@ -1,5 +1,6 @@
-/* { dg-do compile { target powerpc-*-eabi* powerpc*-*-linux*spe* } } */
+/* { dg-do compile } */
/* { dg-options "-mcpu=8540 -mspe -mabi=spe -mfloat-gprs=single" } */
+/* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } } */
#define __vector __attribute__((vector_size(8)))
typedef float __vector __ev64_fs__;
diff --git a/gcc/testsuite/g++.dg/other/opaque-3.C b/gcc/testsuite/g++.dg/other/opaque-3.C
index cf8119ffcac..5ece652c0cd 100644
--- a/gcc/testsuite/g++.dg/other/opaque-3.C
+++ b/gcc/testsuite/g++.dg/other/opaque-3.C
@@ -1,5 +1,6 @@
-/* { dg-do compile { target powerpc-*-eabi* powerpc*-*-linux*spe* } } */
+/* { dg-do compile } */
/* { dg-options "-mcpu=8540 -mspe -mabi=spe -mfloat-gprs=single" } */
+/* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } } */
__ev64_opaque__ o;
#define v __attribute__((vector_size(8)))
diff --git a/gcc/testsuite/g++.dg/parse/crash50.C b/gcc/testsuite/g++.dg/parse/crash50.C
new file mode 100644
index 00000000000..711048de160
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/crash50.C
@@ -0,0 +1,10 @@
+// Contributed by Dodji Seketeli <dodji@redhat.com>
+// Origin PR c++/38636
+// { dg-do compile }
+
+struct A; // { dg-error "forward declaration of 'struct A'" }
+
+A::A(
+
+struct B; // { dg-error "expected '\\)' before ';' token|invalid use of incomplete type 'struct A'" }
+
diff --git a/gcc/testsuite/g++.dg/parse/pr37862.C b/gcc/testsuite/g++.dg/parse/pr37862.C
new file mode 100644
index 00000000000..89b4b699475
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/pr37862.C
@@ -0,0 +1,25 @@
+// { dg-do run }
+#include <stdlib.h>
+
+class A {
+public:
+ virtual void get (void) { }
+};
+
+class B : public A {
+public:
+ void get (void) { abort (); }
+};
+
+class C : public B { };
+
+int main (void)
+{
+ C c;
+ C * p = &c;
+
+ p->A::get ();
+ (p->A::get) (); // The C++ parser used to resolve this to B::get()
+
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr38811.C b/gcc/testsuite/g++.dg/torture/pr38811.C
new file mode 100644
index 00000000000..e9b304da6e5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr38811.C
@@ -0,0 +1,73 @@
+/* { dg-do compile } */
+
+typedef unsigned long ULONG;
+void iwos_ErrorMessage(long error, const char * const file_name,
+ ULONG line_num, const char * const message);
+class AbcA2d {
+public:
+ double x;
+ double y;
+ ~AbcA2d() { }
+};
+enum AbcZyParamType { ABC_SP_1 };
+class AbcExtent2d {
+ AbcA2d m_vMin;
+ AbcA2d m_vMax;
+public:
+ AbcExtent2d(const AbcA2d & rMin, const AbcA2d & rMax);
+ AbcA2d ClampPoint2d(const AbcA2d & rPoint) const;
+ AbcA2d GetMax() const { return m_vMax; }
+ AbcA2d GetMin() const { }
+ AbcA2d Evaluate(double dNormalizedX, double dNormalizedY) const;
+};
+inline AbcExtent2d::AbcExtent2d(const AbcA2d & rMin, const AbcA2d & rMax)
+{
+ if (rMin.x > rMax.x || rMin.y > rMax.y)
+ {
+ long sErr = (1007);
+ if (sErr != 1000)
+ iwos_ErrorMessage(sErr,(const char * const)__null,
+ 0,(const char * const)__null);
+ }
+ else
+ {
+ m_vMin = rMin;
+ m_vMax = rMax;
+ }
+}
+inline AbcA2d AbcExtent2d::ClampPoint2d(const AbcA2d & rPoint) const
+{
+ AbcA2d sRet = rPoint;
+ if (rPoint.x < m_vMin.x)
+ sRet.x = m_vMin.x;
+ return sRet;
+}
+inline AbcA2d AbcExtent2d::Evaluate(double dNormalizedX, double dNormalizedY)
+const
+{
+ AbcA2d sRet;
+ sRet.x = m_vMin.x + dNormalizedX * (m_vMax.x - m_vMin.x);
+ sRet.y = m_vMin.y + dNormalizedY * (m_vMax.y - m_vMin.y);
+ return ClampPoint2d(sRet);
+}
+class AbcAbcdTracer {
+ AbcExtent2d m_vUVDomain;
+ virtual long TestIsoAbcde(AbcZyParamType eZyParam, double dParam,
+ int & rbZyxIsSolution);
+ virtual int DoesPointLieOnAbcde(AbcA2d & rUV, int bRefinePoint) const;
+};
+long AbcAbcdTracer::TestIsoAbcde(AbcZyParamType eZyParam, double dParam,
+ int & rbZyxIsSolution)
+{
+ AbcA2d sUV1(m_vUVDomain.GetMin());
+ AbcA2d sUV2(m_vUVDomain.GetMax());
+ AbcExtent2d sUVIso(sUV1,sUV2);
+ for (ULONG i=0; i<10; i++)
+ {
+ double dT = i / (10 -1.0);
+ AbcA2d sUV = sUVIso.Evaluate(dT,dT);
+ if (!DoesPointLieOnAbcde(sUV,0))
+ ;
+ }
+}
+