Viewing file: pr30807.c (4.43 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do compile } */ /* { dg-additional-options "-fpic -std=c99" } */
typedef unsigned int size_t; typedef struct { unsigned long __val[(1024 / (8 * sizeof (unsigned long)))]; } __sigset_t; struct __jmp_buf_tag { __sigset_t __saved_mask; }; typedef struct __jmp_buf_tag sigjmp_buf[1]; struct stat { long long st_dev; unsigned short int __pad1; int tm_isdst; long int tm_gmtoff; char *tm_zone; };
typedef size_t STRLEN; typedef struct op OP; typedef struct cop COP; typedef struct interpreter PerlInterpreter; typedef struct sv SV; typedef struct av AV; typedef struct cv CV; typedef struct gp GP; typedef struct gv GV; typedef struct xpv XPV; typedef struct xpvio XPVIO; typedef union any ANY; typedef unsigned char U8; typedef long I32; typedef unsigned long U32; typedef U32 line_t; typedef struct _PerlIO PerlIOl; typedef PerlIOl *PerlIO; struct sv { void *sv_any; U32 sv_flags; union { char *svu_pv; } sv_u; }; struct gv { U32 sv_flags; union { GP *svu_gp; } sv_u; }; struct io { XPVIO *sv_any; }; struct xpv { STRLEN xpv_cur; }; struct xpvio { PerlIO *xio_ofp; }; struct gp { SV *gp_sv; struct io *gp_io; }; struct jmpenv { struct jmpenv *je_prev; sigjmp_buf je_buf; int je_ret; }; typedef struct jmpenv JMPENV; struct cop { line_t cop_line; struct refcounted_he *cop_hints_hash; }; struct interpreter { SV **Istack_sp; OP *Iop; SV **Icurpad; SV **Istack_base; SV **Istack_max; I32 *Iscopestack; I32 Iscopestack_ix; I32 Iscopestack_max; ANY *Isavestack; I32 Isavestack_ix; I32 Isavestack_max; SV **Itmps_stack; I32 Itmps_ix; I32 Itmps_floor; I32 Itmps_max; I32 Imodcount; I32 *Imarkstack; I32 *Imarkstack_ptr; I32 *Imarkstack_max; SV *ISv; XPV *IXpv; STRLEN Ina; struct stat Istatbuf; struct stat Istatcache; OP *Irestartop; COP *volatile Icurcop; JMPENV *Itop_env; U8 Iexit_flags; I32 Istatusvalue; I32 Istatusvalue_posix; GV *Istderrgv; GV *Ierrgv; AV *Ibeginav; AV *Iunitcheckav; COP Icompiling; char Isavebegin; volatile U32 Idebug; AV *Ibeginav_save; AV *Icheckav_save; AV *Iunitcheckav_save; };
void S_my_exit_jump (PerlInterpreter *my_perl __attribute__((unused))) __attribute__((noreturn));
int Perl_av_len (PerlInterpreter*, AV*); void Perl_av_create_and_push (PerlInterpreter*, AV**, SV*); int __sigsetjmp (sigjmp_buf env, int savemask); void Perl_sv_2pv_flags (PerlInterpreter*, SV*, STRLEN*, int); void Perl_deb (PerlInterpreter*, const char*, const char*, int, const char*, int); void Perl_croak (PerlInterpreter*, const char*, void*); void foo (void);
void Perl_call_list (PerlInterpreter *my_perl __attribute__((unused)), I32 oldscope, AV *paramList) { SV *atsv; CV *cv; STRLEN len; int ret; JMPENV cur_env; GV *shplep; volatile line_t oldline;
oldline = (my_perl->Icurcop) ? my_perl->Icurcop->cop_line : 0;
while (Perl_av_len (my_perl, paramList) >= 0) { if (my_perl->Isavebegin) { if (paramList == my_perl->Ibeginav) { Perl_av_create_and_push (my_perl, &my_perl->Ibeginav_save, (SV*) cv); Perl_av_create_and_push(my_perl, &my_perl->Icheckav_save, (SV*) cv); } else if (paramList == my_perl->Iunitcheckav) Perl_av_create_and_push(my_perl, &my_perl->Iunitcheckav_save, (SV*) cv); }
cur_env.je_ret = __sigsetjmp (cur_env.je_buf, 0);
switch (ret) { case 0: shplep = (GV *) my_perl->Ierrgv; *my_perl->Imarkstack_ptr = my_perl->Istack_sp - my_perl->Istack_base; atsv = shplep->sv_u.svu_gp->gp_sv; if (atsv->sv_flags & 0x00000400 == 0x00000400) len = ((XPV*) ((SV *) atsv)->sv_any)->xpv_cur; else Perl_sv_2pv_flags (my_perl, atsv, &len, 2|32);
if (len) { my_perl->Icurcop = &my_perl->Icompiling; while (my_perl->Iscopestack_ix > oldscope) { if (my_perl->Idebug & 0x00000004) Perl_deb (my_perl, "scope", "LEAVE", my_perl->Iscopestack_ix, "perl.c", 5166); (my_perl->Itop_env) = cur_env.je_prev; }
Perl_croak (my_perl, "%""-p""", (void*) atsv); }
case 1: my_perl->Istatusvalue = 1; my_perl->Istatusvalue_posix = 1; case 2: while (my_perl->Iscopestack_ix > oldscope) if (my_perl->Idebug & 0x00000004) foo (); my_perl->Icurcop = &my_perl->Icompiling; my_perl->Icurcop->cop_line = oldline; if (my_perl->Idebug & 0x00000004) foo (); S_my_exit_jump (my_perl); case 3: if (my_perl->Irestartop) foo (); } } }
|