OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.dg/] [cleanup-12.c] - Blame information for rev 801

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 689 jeremybenn
/* PR middle-end/32758 */
2
/* HP-UX libunwind.so doesn't provide _UA_END_OF_STACK */
3
/* { dg-do run } */
4
/* { dg-options "-O2 -fexceptions" } */
5
/* { dg-skip-if "" { "ia64-*-hpux11.*" }  { "*" } { "" } } */
6
/* Verify unwind info in presence of alloca.  */
7
 
8
#include <unwind.h>
9
#include <stdlib.h>
10
#include <string.h>
11
 
12
static _Unwind_Reason_Code
13
force_unwind_stop (int version, _Unwind_Action actions,
14
                   _Unwind_Exception_Class exc_class,
15
                   struct _Unwind_Exception *exc_obj,
16
                   struct _Unwind_Context *context,
17
                   void *stop_parameter)
18
{
19
  if (actions & _UA_END_OF_STACK)
20
    abort ();
21
  return _URC_NO_REASON;
22
}
23
 
24
static void force_unwind (void)
25
{
26
  struct _Unwind_Exception *exc = malloc (sizeof (*exc));
27
  memset (&exc->exception_class, 0, sizeof (exc->exception_class));
28
  exc->exception_cleanup = 0;
29
 
30
#ifndef __USING_SJLJ_EXCEPTIONS__
31
  _Unwind_ForcedUnwind (exc, force_unwind_stop, 0);
32
#else
33
  _Unwind_SjLj_ForcedUnwind (exc, force_unwind_stop, 0);
34
#endif
35
 
36
  abort ();
37
}
38
 
39
__attribute__((noinline))
40
void foo (void *x __attribute__((unused)))
41
{
42
  force_unwind ();
43
}
44
 
45
__attribute__((noinline))
46
int bar (unsigned int x)
47
{
48
  void *y = __builtin_alloca (x);
49
  foo (y);
50
  return 1;
51
}
52
 
53
static void handler (void *p __attribute__((unused)))
54
{
55
  exit (0);
56
}
57
 
58
__attribute__((noinline))
59
static void doit ()
60
{
61
  char dummy __attribute__((cleanup (handler)));
62
  bar (1024);
63
}
64
 
65
int main ()
66
{
67
  doit ();
68
  abort ();
69
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.