xtensa: libgcc: fix PR target/95571
[gcc.git] / gcc / testsuite / g++.target / xtensa / pr95571.C
1 /* { dg-do run } */
2
3 extern "C" void abort(void);
4 extern "C" void __xtensa_libgcc_window_spill(void);
5
6 static int call;
7 static int cnt;
8
9 extern "C" void *memcpy(void *dst, const void *src, unsigned int sz)
10 {
11 char *a = (char *)dst;
12 const char *b = (const char *)src;
13
14 if (call++ == cnt)
15 __xtensa_libgcc_window_spill();
16
17 while (sz--)
18 *a++ = *b++;
19
20 return dst;
21 }
22
23 int main()
24 {
25 int i;
26
27 for (i = 0; i < 100; ++i)
28 {
29 call = 0;
30 cnt = i;
31
32 try
33 {
34 throw 1;
35 }
36 catch (int v)
37 {
38 if (v != 1)
39 abort ();
40 }
41 }
42 return 0;
43 }