| // Test EH when V2SI SIMD registers are involved. |
| // Contributed by Aldy Hernandez (aldy@quesejoda.com). |
| // { dg-options "-O -Wno-abi" } |
| // { dg-options "-O -w" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } |
| // { dg-do run } |
| |
| typedef int __attribute__((vector_size (8))) vecint; |
| |
| vecint vecfunc (vecint beachbum) |
| { |
| return beachbum; |
| } |
| |
| void f3 (void) |
| { |
| /* Force a use of a V2SI register if available. On the PPC/E500, |
| this will cause the compiler to save the registers in this |
| function in 64-bits. */ |
| vecint foobar = (vecint) {0, 0}; |
| foobar = vecfunc (foobar); |
| |
| throw int(); |
| } |
| |
| void f2 (void) |
| { |
| vecint foobar = (vecint) {0, 0}; |
| foobar = vecfunc (foobar); |
| |
| f3 (); |
| } |
| |
| void f1 (void) |
| { |
| int i; |
| try |
| { |
| f2 (); |
| } |
| catch (int) |
| { |
| i = 9; |
| } |
| } |
| |
| int main () |
| { |
| f1 (); |
| return 0; |
| } |