diff options
Diffstat (limited to 'gcc/testsuite/g++.dg')
-rw-r--r-- | gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/pr38795.C | 13 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/eh/check-vect.h | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/eh/simd-2.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/altivec-2.C | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/altivec-3.C | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/altivec-cell-2.C | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/altivec-cell-3.C | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/altivec-cell-4.C | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/altivec_check.h | 27 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/spe1.C | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/other/opaque-1.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/other/opaque-2.C | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/other/opaque-3.C | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/crash50.C | 10 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/pr37862.C | 25 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/torture/pr38811.C | 73 |
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)) + ; + } +} + |