1 // Test EH when V4SI SIMD registers are involved. 2 // Contributed by Aldy Hernandez (aldy@quesejoda.com). 3 // { dg-options "-O -Wno-abi" } 4 // { dg-options "-O -w -msse" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } 5 // { dg-options "-O -w" { target powerpc*-*-* } } 6 // { dg-options "-O -w -maltivec" { target { powerpc*-*-* && vmx_hw } } } 7 // { dg-do run } 8 // { dg-require-effective-target sse_runtime { target { { i?86-*-* x86_64-*-* } && ilp32 } } } 9 10 #include "check-vect.h" 11 12 typedef int __attribute__((vector_size (16))) vecint; 13 vecfunc(vecint beachbum)14vecint vecfunc (vecint beachbum) 15 { 16 return beachbum; 17 } 18 f3(void)19void f3 (void) 20 { 21 vecint foobar = (vecint) {0, 0}; 22 foobar = vecfunc (foobar); 23 24 throw int(); 25 } 26 f2(void)27void f2 (void) 28 { 29 vecint foobar = (vecint) {0, 0}; 30 foobar = vecfunc (foobar); 31 32 f3 (); 33 } 34 f1(void)35void f1 (void) 36 { 37 int i; 38 try 39 { 40 f2 (); 41 } 42 catch (int) 43 { 44 i = 9; 45 } 46 } 47 main()48int main () 49 { 50 /* Exit with zero if the hardware does not support AltiVec instructions. */ 51 check_vect (); 52 f1 (); 53 return 0; 54 } 55