public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: tree-ssa branch: Call for preliminary testing
@ 2003-05-11 17:11 Richard Guenther
  2003-05-12 12:43 ` Diego Novillo
  0 siblings, 1 reply; 50+ messages in thread
From: Richard Guenther @ 2003-05-11 17:11 UTC (permalink / raw)
  To: Diego Novillo; +Cc: gcc

I just tested compiling the POOMA library with g++-ssa (GCC) 3.5-tree-ssa
20030511 (merged 20030504) and got failure due to OOM:

g++-ssa -c /net/bellatrix/home/rguenth/src/pooma-work/r2/src/Field/FieldCentering.cmpl.cpp
-o /net/bellatrix/home/rguenth/src/pooma-work/r2/src/Field/LINUXgccSSA/FieldCentering.cmpl.o
  -ftemplate-depth-80 -fno-exceptions -Drestrict=__restrict__  -DNOPAssert -DNOCTAssert -O2 -march=athlon
-funroll-loops -fomit-frame-pointer --param min-inline-insns=200 -I/net/bellatrix/home/rguenth/src/pooma-work/r2/src \
-I/net/bellatrix/home/rguenth/src/pooma-work/r2/lib/LINUXgccSSA  -I/home/rguenth/ix86/3.x/include

cc1plus: out of memory allocating 564784160 bytes after a total of 28152172 bytes
Command exited with non-zero status 1

gcc-3.3 uses about 300MB on this.

No candy from me ;)

Richard.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-11 17:11 tree-ssa branch: Call for preliminary testing Richard Guenther
@ 2003-05-12 12:43 ` Diego Novillo
  2003-05-12 12:58   ` Steven Bosscher
                     ` (2 more replies)
  0 siblings, 3 replies; 50+ messages in thread
From: Diego Novillo @ 2003-05-12 12:43 UTC (permalink / raw)
  To: Richard Guenther; +Cc: gcc

On Sun, 2003-05-11 at 13:11, Richard Guenther wrote:
> I just tested compiling the POOMA library with g++-ssa (GCC) 3.5-tree-ssa
> 20030511 (merged 20030504) and got failure due to OOM:
> 
Thanks.  Could you post a .ii file?  Or a pointer to POOMA.

> cc1plus: out of memory allocating 564784160 bytes after a total of 28152172 bytes
> Command exited with non-zero status 1
> 
> gcc-3.3 uses about 300MB on this.
> 
> No candy from me ;)
>
Oh, come on.  Memory is cheap! ;)


Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 12:43 ` Diego Novillo
@ 2003-05-12 12:58   ` Steven Bosscher
  2003-05-12 13:08     ` Andrew MacLeod
  2003-05-12 13:16     ` Diego Novillo
  2003-05-12 13:02   ` Steven Bosscher
  2003-05-12 13:02   ` Richard Guenther
  2 siblings, 2 replies; 50+ messages in thread
From: Steven Bosscher @ 2003-05-12 12:58 UTC (permalink / raw)
  To: Diego Novillo; +Cc: Richard Guenther, gcc

Op ma 12-05-2003, om 14:43 schreef Diego Novillo:
> On Sun, 2003-05-11 at 13:11, Richard Guenther wrote:
> > I just tested compiling the POOMA library with g++-ssa (GCC) 3.5-tree-ssa
> > 20030511 (merged 20030504) and got failure due to OOM:
> > 
> Thanks.  Could you post a .ii file?  Or a pointer to POOMA.

POOMA even has its own page in the GCC wwwdocs!
Ref. http://gcc.gnu.org/testing/testing-pooma.html

Did you look at the GCC testing pages? http://gcc.gnu.org/testing.  You
could try tree-ssa on the 5 C++ packages there and compare with mainline
(only if the results look good, of course ;-)


> > cc1plus: out of memory allocating 564784160 bytes after a total of 28152172 bytes
> > Command exited with non-zero status 1
> > 
> > gcc-3.3 uses about 300MB on this.
> > 
> > No candy from me ;)
> >
> Oh, come on.  Memory is cheap! ;)
> 
> 

Diego,

Do you know where the memory increase comes from?

I was thinking of all the temporaries because each one of them needs a
tree_decl (108 bytes each on ia32) and an identifier (64 bytes each for
C++).  But I don't have the numbers, maybe you do?

Greetz
Steven



^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 12:43 ` Diego Novillo
  2003-05-12 12:58   ` Steven Bosscher
  2003-05-12 13:02   ` Steven Bosscher
@ 2003-05-12 13:02   ` Richard Guenther
  2003-06-12 16:09     ` Diego Novillo
  2 siblings, 1 reply; 50+ messages in thread
From: Richard Guenther @ 2003-05-12 13:02 UTC (permalink / raw)
  To: Diego Novillo; +Cc: gcc

On 12 May 2003, Diego Novillo wrote:

> On Sun, 2003-05-11 at 13:11, Richard Guenther wrote:
> > I just tested compiling the POOMA library with g++-ssa (GCC) 3.5-tree-ssa
> > 20030511 (merged 20030504) and got failure due to OOM:
> >
> Thanks.  Could you post a .ii file?  Or a pointer to POOMA.
>
> > cc1plus: out of memory allocating 564784160 bytes after a total of 28152172 bytes
> > Command exited with non-zero status 1
> >
> > gcc-3.3 uses about 300MB on this.
> >
> > No candy from me ;)
> >
> Oh, come on.  Memory is cheap! ;)

Got it compile on a 2Gig machine - .ii file can be fetched from

http://www.tat.physik.uni-tuebingen.de/~rguenth/FieldCentering.cmpl.ii.gz

the test uses max. 1.5GB ram on this machine.

Richard.

--
Richard Guenther <richard dot guenther at uni-tuebingen dot de>
WWW: http://www.tat.physik.uni-tuebingen.de/~rguenth/

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 12:43 ` Diego Novillo
  2003-05-12 12:58   ` Steven Bosscher
@ 2003-05-12 13:02   ` Steven Bosscher
  2003-05-12 13:09     ` Diego Novillo
  2003-05-12 13:59     ` Daniel Berlin
  2003-05-12 13:02   ` Richard Guenther
  2 siblings, 2 replies; 50+ messages in thread
From: Steven Bosscher @ 2003-05-12 13:02 UTC (permalink / raw)
  To: Diego Novillo; +Cc: Richard Guenther, gcc

Op ma 12-05-2003, om 14:43 schreef Diego Novillo:
> On Sun, 2003-05-11 at 13:11, Richard Guenther wrote:
> > cc1plus: out of memory allocating 564784160 bytes after a total of 28152172 bytes
> > Command exited with non-zero status 1

FWIW, this is not the first report of such a message showing up.  I've
seen it at least twice for something involving the preprocessor.
I really can't think of _any_ situation where we would want to allocate
564MB in one big chunk, so this really is a bug somewhere.

Gr.
Steven


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 12:58   ` Steven Bosscher
@ 2003-05-12 13:08     ` Andrew MacLeod
  2003-05-12 13:16     ` Diego Novillo
  1 sibling, 0 replies; 50+ messages in thread
From: Andrew MacLeod @ 2003-05-12 13:08 UTC (permalink / raw)
  To: Steven Bosscher; +Cc: Diego Novillo, Richard Guenther, gcc mailing list

On Mon, 2003-05-12 at 08:56, Steven Bosscher wrote:
> Op ma 12-05-2003, om 14:43 schreef Diego Novillo:
> > On Sun, 2003-05-11 at 13:11, Richard Guenther wrote:

> Did you look at the GCC testing pages? http://gcc.gnu.org/testing.  You
> could try tree-ssa on the 5 C++ packages there and compare with mainline
> (only if the results look good, of course ;-)
> 
> 
> > > cc1plus: out of memory allocating 564784160 bytes after a total of 28152172 bytes
> > > Command exited with non-zero status 1
> > > 
> > > gcc-3.3 uses about 300MB on this.
> > > 
> > > No candy from me ;)
> > >
> > Oh, come on.  Memory is cheap! ;)
> > 
> > 
> 
> Diego,
> 
> Do you know where the memory increase comes from?
> 
> I was thinking of all the temporaries because each one of them needs a
> tree_decl (108 bytes each on ia32) and an identifier (64 bytes each for
> C++).  But I don't have the numbers, maybe you do?
> 

Without looking at it, I'd guess the out-of-ssa pass. We've only done
preliminary optimization of it since it isn't quite complete. It builds
an interference graph and allocates some bit vectors for live range
analysis. It looks like an attempt to allocate a big N x N bitvector.

As we finish the pass, we are attempting to reduce the size of things
which are allocated and worked on. Im doubt it will be hard to take care
of.

Andrew



^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 13:02   ` Steven Bosscher
@ 2003-05-12 13:09     ` Diego Novillo
  2003-05-12 13:59     ` Daniel Berlin
  1 sibling, 0 replies; 50+ messages in thread
From: Diego Novillo @ 2003-05-12 13:09 UTC (permalink / raw)
  To: Steven Bosscher; +Cc: Richard Guenther, gcc

On Mon, 2003-05-12 at 09:01, Steven Bosscher wrote:
> Op ma 12-05-2003, om 14:43 schreef Diego Novillo:
> > On Sun, 2003-05-11 at 13:11, Richard Guenther wrote:
> > > cc1plus: out of memory allocating 564784160 bytes after a total of 28152172 bytes
> > > Command exited with non-zero status 1
> 
> FWIW, this is not the first report of such a message showing up.  I've
> seen it at least twice for something involving the preprocessor.
> I really can't think of _any_ situation where we would want to allocate
> 564MB in one big chunk, so this really is a bug somewhere.
> 
The coalescer in the SSA->normal pass has been known to do this as well.


Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 12:58   ` Steven Bosscher
  2003-05-12 13:08     ` Andrew MacLeod
@ 2003-05-12 13:16     ` Diego Novillo
  2003-05-12 13:22       ` Andrew MacLeod
  2003-05-12 13:49       ` Richard Guenther
  1 sibling, 2 replies; 50+ messages in thread
From: Diego Novillo @ 2003-05-12 13:16 UTC (permalink / raw)
  To: Steven Bosscher; +Cc: Richard Guenther, gcc

On Mon, 2003-05-12 at 08:56, Steven Bosscher wrote:

> POOMA even has its own page in the GCC wwwdocs!
> Ref. http://gcc.gnu.org/testing/testing-pooma.html
> 
Shame on me.  Dobby will go iron his hands now.

> Did you look at the GCC testing pages? http://gcc.gnu.org/testing.  You
> could try tree-ssa on the 5 C++ packages there and compare with mainline
> (only if the results look good, of course ;-)
> 
If not, I'm sure we can redact the results to make them look good ;)
Thanks for the pointer.


> Do you know where the memory increase comes from?
> 
The SSA->normal pass has some bitmaps that can grow quite large.  The
pass is very recent, so it needs a bit of tuning.


Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 13:16     ` Diego Novillo
@ 2003-05-12 13:22       ` Andrew MacLeod
  2003-05-12 13:49       ` Richard Guenther
  1 sibling, 0 replies; 50+ messages in thread
From: Andrew MacLeod @ 2003-05-12 13:22 UTC (permalink / raw)
  To: Diego Novillo; +Cc: Steven Bosscher, Richard Guenther, gcc mailing list

On Mon, 2003-05-12 at 09:16, Diego Novillo wrote:
> On Mon, 2003-05-12 at 08:56, Steven Bosscher wrote:

> 
> 
> > Do you know where the memory increase comes from?
> > 
> The SSA->normal pass has some bitmaps that can grow quite large.  The
> pass is very recent, so it needs a bit of tuning.
> 

Its not only recent, its incomplete... hence the lack of serious
tuning...

Andrew

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 13:16     ` Diego Novillo
  2003-05-12 13:22       ` Andrew MacLeod
@ 2003-05-12 13:49       ` Richard Guenther
  2003-05-12 14:05         ` Daniel Berlin
  2003-06-12 15:36         ` Diego Novillo
  1 sibling, 2 replies; 50+ messages in thread
From: Richard Guenther @ 2003-05-12 13:49 UTC (permalink / raw)
  To: Diego Novillo; +Cc: Steven Bosscher, gcc

On 12 May 2003, Diego Novillo wrote:

> On Mon, 2003-05-12 at 08:56, Steven Bosscher wrote:
>
> > POOMA even has its own page in the GCC wwwdocs!
> > Ref. http://gcc.gnu.org/testing/testing-pooma.html
> >
> Shame on me.  Dobby will go iron his hands now.

Got something more interesting...

g++-ssa -c
/net/bellatrix/home/rguenth/src/pooma-work/r2/src/Engine/tests/ump_test2.cpp
\
-o
/net/bellatrix/home/rguenth/src/pooma-work/r2/src/Engine/tests/LINUXgccSSA/ump_test2.o
\
  -ftemplate-depth-80 -fno-exceptions \
-Drestrict=__restrict__ -DNOPAssert -DNOCTAssert -O2 -march=athlon
-funroll-loops -fomit-frame-pointer --param min-inline-insns=200 \
-I/net/bellatrix/home/rguenth/src/pooma-work/r2/src \
-I/net/bellatrix/home/rguenth/src/pooma-work/r2/lib/LINUXgccSSA  \
-I/home/rguenth/ix86/3.x/include

/net/bellatrix/home/rguenth/src/pooma-work/r2/src/Layout/UniformGridLayout.h:
In
   destructor `UniformGridLayout<Dim>::~UniformGridLayout() [with int Dim
= 1]
   ':
/net/bellatrix/home/rguenth/src/pooma-work/r2/src/Layout/UniformGridLayout.h:493:
internal compiler error: in
   assign_vars, at tree-ssa.c:1555
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.

testcase at

http://www.tat.physik.uni-tuebingen.de/~rguenth/ump_test2.ii.gz

Richard.

--
Richard Guenther <richard dot guenther at uni-tuebingen dot de>
WWW: http://www.tat.physik.uni-tuebingen.de/~rguenth/

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 13:02   ` Steven Bosscher
  2003-05-12 13:09     ` Diego Novillo
@ 2003-05-12 13:59     ` Daniel Berlin
  2003-05-12 14:12       ` Andrew MacLeod
  1 sibling, 1 reply; 50+ messages in thread
From: Daniel Berlin @ 2003-05-12 13:59 UTC (permalink / raw)
  To: Steven Bosscher; +Cc: Diego Novillo, Richard Guenther, gcc


On Monday, May 12, 2003, at 09:01  AM, Steven Bosscher wrote:

> Op ma 12-05-2003, om 14:43 schreef Diego Novillo:
>> On Sun, 2003-05-11 at 13:11, Richard Guenther wrote:
>>> cc1plus: out of memory allocating 564784160 bytes after a total of 
>>> 28152172 bytes
>>> Command exited with non-zero status 1
>
> FWIW, this is not the first report of such a message showing up.  I've
> seen it at least twice for something involving the preprocessor.
> I really can't think of _any_ situation where we would want to allocate
> 564MB in one big chunk, so this really is a bug somewhere.

Apparently you've never had the joy of working with some form of 
interference graph.
:)

Andrew, if this relationship is symmetric (ie a interferes with b 
implies b interferes with a), you can halve the size and represent it 
as a triangular bitmatrix like we do in new-regalloc.
grep for igraph and igraph_index.


>
> Gr.
> Steven
>
>

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 13:49       ` Richard Guenther
@ 2003-05-12 14:05         ` Daniel Berlin
  2003-05-12 14:16           ` Andrew MacLeod
  2003-05-12 14:17           ` Diego Novillo
  2003-06-12 15:36         ` Diego Novillo
  1 sibling, 2 replies; 50+ messages in thread
From: Daniel Berlin @ 2003-05-12 14:05 UTC (permalink / raw)
  To: Richard Guenther; +Cc: Diego Novillo, Steven Bosscher, gcc


On Monday, May 12, 2003, at 09:48  AM, Richard Guenther wrote:

> On 12 May 2003, Diego Novillo wrote:
>
>> On Mon, 2003-05-12 at 08:56, Steven Bosscher wrote:
>>
>>> POOMA even has its own page in the GCC wwwdocs!
>>> Ref. http://gcc.gnu.org/testing/testing-pooma.html
>>>
>> Shame on me.  Dobby will go iron his hands now.
>
> Got something more interesting...
>

This abort is a known thing (it's because of an unfinished piece of 
out-of-SSA), though I swear Diego was under the impression it shouldn't 
happen with any of the current passes.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 13:59     ` Daniel Berlin
@ 2003-05-12 14:12       ` Andrew MacLeod
  0 siblings, 0 replies; 50+ messages in thread
From: Andrew MacLeod @ 2003-05-12 14:12 UTC (permalink / raw)
  To: Daniel Berlin
  Cc: Steven Bosscher, Diego Novillo, Richard Guenther, gcc mailing list

On Mon, 2003-05-12 at 09:59, Daniel Berlin wrote:
> 

> Apparently you've never had the joy of working with some form of 
> interference graph.
> :)
> 
> Andrew, if this relationship is symmetric (ie a interferes with b 
> implies b interferes with a), you can halve the size and represent it 
> as a triangular bitmatrix like we do in new-regalloc.
> grep for igraph and igraph_index.
> 
> 

It reuses the conflict.c interference graph. Its more likely some of the
live range bitvectors. I think live-on-exit is a #BB x #vars matrix. I
have a patch laying around somewhere that uses sbitmaps when the size is
small, and bitmaps when its large, but when I originally tested it, it
was for time, and it didn't buy anything. Perhaps it will be useful
afterall. We'll see :-)

Im also working on reducing the number of variables. There will be a
note about it later today. There are a lot of variables which are used
for aliasing and stuff that never need to be rewritten and can be
trimmed out of the graph and live range vectors.. the whole cycle.

Andrew


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 14:05         ` Daniel Berlin
@ 2003-05-12 14:16           ` Andrew MacLeod
  2003-05-12 14:17           ` Diego Novillo
  1 sibling, 0 replies; 50+ messages in thread
From: Andrew MacLeod @ 2003-05-12 14:16 UTC (permalink / raw)
  To: Daniel Berlin
  Cc: Richard Guenther, Diego Novillo, Steven Bosscher, gcc mailing list

On Mon, 2003-05-12 at 10:05, Daniel Berlin wrote:
> 
> On Monday, May 12, 2003, at 09:48  AM, Richard Guenther wrote:
> 
> > On 12 May 2003, Diego Novillo wrote:
> >
> >> On Mon, 2003-05-12 at 08:56, Steven Bosscher wrote:
> >>
> >>> POOMA even has its own page in the GCC wwwdocs!
> >>> Ref. http://gcc.gnu.org/testing/testing-pooma.html
> >>>
> >> Shame on me.  Dobby will go iron his hands now.
> >
> > Got something more interesting...
> >
> 
> This abort is a known thing (it's because of an unfinished piece of 
> out-of-SSA), though I swear Diego was under the impression it shouldn't 
> happen with any of the current passes.
> 

It usually happens now only when we've done something wrong.  If we have
deleted a definition without removing all the uses, the live range
analyzer will make that variable live all the way from its use to the
beginning of the program, considering it to be live on entry to the
function.

THis will usually cause it to interfere with some other version of that
variable, and then this abort triggers.

Put a breakpoint in the abort(), 

p print_genric_expr (stderr, t, 2)

and this will be the variable for which you are probably can't find a
DEF for. Figure out who deleted it and why, and thats likely your bug

Andrew.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 14:05         ` Daniel Berlin
  2003-05-12 14:16           ` Andrew MacLeod
@ 2003-05-12 14:17           ` Diego Novillo
  1 sibling, 0 replies; 50+ messages in thread
From: Diego Novillo @ 2003-05-12 14:17 UTC (permalink / raw)
  To: Daniel Berlin; +Cc: Richard Guenther, Steven Bosscher, gcc

On Mon, 2003-05-12 at 10:05, Daniel Berlin wrote:

> This abort is a known thing (it's because of an unfinished piece of 
> out-of-SSA), though I swear Diego was under the impression it shouldn't 
> happen with any of the current passes.
>
Yeah, it shouldn't be happening at this stage.  I've fixed a couple of
cases like this one where calls to const/pure built-ins weren't being
marked as such, resulting in the call disappearing unexpectedly when it
was constant folded.  I'll take a look.


Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 13:49       ` Richard Guenther
  2003-05-12 14:05         ` Daniel Berlin
@ 2003-06-12 15:36         ` Diego Novillo
  1 sibling, 0 replies; 50+ messages in thread
From: Diego Novillo @ 2003-06-12 15:36 UTC (permalink / raw)
  To: Richard Guenther; +Cc: Steven Bosscher, gcc

On Mon, 2003-05-12 at 09:48, Richard Guenther wrote:

> /net/bellatrix/home/rguenth/src/pooma-work/r2/src/Layout/UniformGridLayout.h:493:
> internal compiler error: in
>    assign_vars, at tree-ssa.c:1555
> Please submit a full bug report,
> with preprocessed source if appropriate.
> See <URL:http://gcc.gnu.org/bugs.html> for instructions.
> 
> testcase at
> 
> http://www.tat.physik.uni-tuebingen.de/~rguenth/ump_test2.ii.gz
> 
Richard,

This seems fixed now.  Could you try a more recent snapshot of the
branch?  If you don't have it checked-out from CVS, the snapshot at 
http://people.redhat.com/dnovillo/pub/snapshot/ should work.


Thanks.  Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 13:02   ` Richard Guenther
@ 2003-06-12 16:09     ` Diego Novillo
  2003-06-12 21:10       ` Richard Guenther
  2003-06-13 20:15       ` Andrew MacLeod
  0 siblings, 2 replies; 50+ messages in thread
From: Diego Novillo @ 2003-06-12 16:09 UTC (permalink / raw)
  To: Richard Guenther; +Cc: gcc

On Mon, 2003-05-12 at 09:01, Richard Guenther wrote:

> Got it compile on a 2Gig machine - .ii file can be fetched from
> 
> http://www.tat.physik.uni-tuebingen.de/~rguenth/FieldCentering.cmpl.ii.gz
> 
> the test uses max. 1.5GB ram on this machine.
> 
> Richard.
> 
Seems partially fixed now.  It takes 19 minutes to compile, though. But!
it doesn't use more than 300Mb of core now.

$ /usr/bin/time gcc/cc1plus -ftemplate-depth-80 -fno-exceptions -Drestrict=__restrict__ -DNOPAssert -DNOCTAssert -O2 -march=athlon -funroll-loops -fomit-frame-pointer --param min-inline-insns=200 -quiet FieldCentering.cmpl.ii               1106.46user 1.19system
18:55.17elapsed 97%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (1205major+142535minor)pagefaults 0swaps

In contrast, this uses 200Mb of core in mainline and takes 17 seconds to
compile.  I'm thinking this and Gerald's PR8361 are good test cases :)

$ /usr/bin/time ~/merge-tree-ssa/mainline/native/bld.tobiano/gcc/cc1plus -ftemplate-depth-80 -fno-exceptions -Drestrict=__restrict__ -DNOPAssert -DNOCTAssert -O2 -march=athlon -funroll-loops -fomit-frame-pointer --param min-inline-insns=200 -quiet FieldCentering.cmpl.ii
16.29user 0.75system 0:17.13elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (1134major+109771minor)pagefaults 0swaps


Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-06-12 16:09     ` Diego Novillo
@ 2003-06-12 21:10       ` Richard Guenther
  2003-06-12 21:29         ` Diego Novillo
  2003-06-13 20:15       ` Andrew MacLeod
  1 sibling, 1 reply; 50+ messages in thread
From: Richard Guenther @ 2003-06-12 21:10 UTC (permalink / raw)
  To: Diego Novillo; +Cc: gcc

On 12 Jun 2003, Diego Novillo wrote:

> On Mon, 2003-05-12 at 09:01, Richard Guenther wrote:
>
> > Got it compile on a 2Gig machine - .ii file can be fetched from
> >
> > http://www.tat.physik.uni-tuebingen.de/~rguenth/FieldCentering.cmpl.ii.gz
> >
> > the test uses max. 1.5GB ram on this machine.
> >
> > Richard.
> >
> Seems partially fixed now.  It takes 19 minutes to compile, though. But!
> it doesn't use more than 300Mb of core now.
>
> $ /usr/bin/time gcc/cc1plus -ftemplate-depth-80 -fno-exceptions -Drestrict=__restrict__ -DNOPAssert -DNOCTAssert -O2 -march=athlon -funroll-loops -fomit-frame-pointer --param min-inline-insns=200 -quiet FieldCentering.cmpl.ii               1106.46user 1.19system
> 18:55.17elapsed 97%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (1205major+142535minor)pagefaults 0swaps
>
> In contrast, this uses 200Mb of core in mainline and takes 17 seconds to
> compile.  I'm thinking this and Gerald's PR8361 are good test cases :)
>
> $ /usr/bin/time ~/merge-tree-ssa/mainline/native/bld.tobiano/gcc/cc1plus -ftemplate-depth-80 -fno-exceptions -Drestrict=__restrict__ -DNOPAssert -DNOCTAssert -O2 -march=athlon -funroll-loops -fomit-frame-pointer --param min-inline-insns=200 -quiet FieldCentering.cmpl.ii
> 16.29user 0.75system 0:17.13elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
> 0inputs+0outputs (1134major+109771minor)pagefaults 0swaps

Seems you have a very fast machine ;) Compiling the POOMA library
succeeded, now on regression testing (and the first test is already
at 600MB core now).

Richard.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-06-12 21:10       ` Richard Guenther
@ 2003-06-12 21:29         ` Diego Novillo
  2003-06-13  9:58           ` Richard Guenther
  0 siblings, 1 reply; 50+ messages in thread
From: Diego Novillo @ 2003-06-12 21:29 UTC (permalink / raw)
  To: Richard Guenther; +Cc: gcc

On Thu, 2003-06-12 at 17:04, Richard Guenther wrote:

> Seems you have a very fast machine ;)
>
Yeah, that was 19 minutes at 2.2Ghz :)

I did intercept the process a couple of times with gdb.  We seemed to be
churning a good number of cycles inside DCE.  I'm going to be looking at
this testcase more carefully tomorrow.


> Compiling the POOMA library
> succeeded, now on regression testing (and the first test is already
> at 600MB core now).
>
Heh.  I'm starting to like POOMA.


Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-06-12 21:29         ` Diego Novillo
@ 2003-06-13  9:58           ` Richard Guenther
  2003-06-13 11:38             ` Diego Novillo
  0 siblings, 1 reply; 50+ messages in thread
From: Richard Guenther @ 2003-06-13  9:58 UTC (permalink / raw)
  To: Diego Novillo; +Cc: gcc

On 12 Jun 2003, Diego Novillo wrote:

> On Thu, 2003-06-12 at 17:04, Richard Guenther wrote:
>
> > Seems you have a very fast machine ;)
> >
> Yeah, that was 19 minutes at 2.2Ghz :)
>
> I did intercept the process a couple of times with gdb.  We seemed to be
> churning a good number of cycles inside DCE.  I'm going to be looking at
> this testcase more carefully tomorrow.
>
>
> > Compiling the POOMA library
> > succeeded, now on regression testing (and the first test is already
> > at 600MB core now).
> >
> Heh.  I'm starting to like POOMA.

Ok, its still regtesting (for 13 hours now, with gcc3.3 the whole suite
passes in 45min), one test got killed due
to OOM (machine has 1Gig), several got miscompiled. As you get to like
POOMA, you may get it from

:pserver:anoncvs@pooma.codesourcery.com:/home/pooma/Repository

module is r2, password anoncvs.

just do

./configure --arch LINUXgcc --serial --opt --cpp your-g++
(you can tune CFLAGS in config/arch/LINUXgcc.conf)

then make && make -k check
(there are some tests that wont build anyway)

Just compare the results with a ia32 gcc-3.2 or gcc-3.3 testsuite
run (so you know which tests are supposed to pass).

Richard.

--
Richard Guenther <richard dot guenther at uni-tuebingen dot de>
WWW: http://www.tat.physik.uni-tuebingen.de/~rguenth/

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-06-13  9:58           ` Richard Guenther
@ 2003-06-13 11:38             ` Diego Novillo
  2003-06-14 11:41               ` Richard Guenther
  0 siblings, 1 reply; 50+ messages in thread
From: Diego Novillo @ 2003-06-13 11:38 UTC (permalink / raw)
  To: Richard Guenther; +Cc: gcc

On Fri, 2003-06-13 at 04:53, Richard Guenther wrote:

> Ok, its still regtesting (for 13 hours now, with gcc3.3 the whole suite
> passes in 45min), one test got killed due
> to OOM (machine has 1Gig), several got miscompiled. As you get to like
> POOMA, you may get it from
> 
> :pserver:anoncvs@pooma.codesourcery.com:/home/pooma/Repository
> 
> module is r2, password anoncvs.
> 
Got it.  Thanks.


Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-06-12 16:09     ` Diego Novillo
  2003-06-12 21:10       ` Richard Guenther
@ 2003-06-13 20:15       ` Andrew MacLeod
  2003-06-14 20:06         ` Richard Guenther
  1 sibling, 1 reply; 50+ messages in thread
From: Andrew MacLeod @ 2003-06-13 20:15 UTC (permalink / raw)
  To: Diego Novillo; +Cc: Richard Guenther, gcc mailing list

On Thu, 2003-06-12 at 12:02, Diego Novillo wrote:
> On Mon, 2003-05-12 at 09:01, Richard Guenther wrote:
> 
> > Got it compile on a 2Gig machine - .ii file can be fetched from
> > 
> > http://www.tat.physik.uni-tuebingen.de/~rguenth/FieldCentering.cmpl.ii.gz
> > 
> > the test uses max. 1.5GB ram on this machine.
> > 
> > Richard.
> > 
> Seems partially fixed now.  It takes 19 minutes to compile, though. But!
> it doesn't use more than 300Mb of core now.
> 
> $ /usr/bin/time gcc/cc1plus -ftemplate-depth-80 -fno-exceptions -Drestrict=__restrict__ -DNOPAssert -DNOCTAssert -O2 -march=athlon -funroll-loops -fomit-frame-pointer --param min-inline-insns=200 -quiet FieldCentering.cmpl.ii               1106.46user 1.19system
> 18:55.17elapsed 97%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (1205major+142535minor)pagefaults 0swaps
> 
> In contrast, this uses 200Mb of core in mainline and takes 17 seconds to
> compile.  I'm thinking this and Gerald's PR8361 are good test cases :)
> 
> $ /usr/bin/time ~/merge-tree-ssa/mainline/native/bld.tobiano/gcc/cc1plus -ftemplate-depth-80 -fno-exceptions -Drestrict=__restrict__ -DNOPAssert -DNOCTAssert -O2 -march=athlon -funroll-loops -fomit-frame-pointer --param min-inline-insns=200 -quiet FieldCentering.cmpl.ii
> 16.29user 0.75system 0:17.13elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
> 0inputs+0outputs (1134major+109771minor)pagefaults 0swaps
> 

OK, I just posted a patch to speed up DCE, which was the culprit here.
On my machine, DCE went from using 1678 seconds to 3.5 seconds. 

This'll probably help all of POOMA, and most C++ programs.

Andrew

(PS, the patch is checked in.  tree-ssa-dce.c)


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-06-13 11:38             ` Diego Novillo
@ 2003-06-14 11:41               ` Richard Guenther
  0 siblings, 0 replies; 50+ messages in thread
From: Richard Guenther @ 2003-06-14 11:41 UTC (permalink / raw)
  To: Diego Novillo; +Cc: gcc

On 13 Jun 2003, Diego Novillo wrote:

> On Fri, 2003-06-13 at 04:53, Richard Guenther wrote:
>
> > Ok, its still regtesting (for 13 hours now, with gcc3.3 the whole suite
> > passes in 45min), one test got killed due
> > to OOM (machine has 1Gig), several got miscompiled. As you get to like
> > POOMA, you may get it from
> >
> > :pserver:anoncvs@pooma.codesourcery.com:/home/pooma/Repository
> >
> > module is r2, password anoncvs.
> >
> Got it.  Thanks.

src/Field/tests/LocalPatch.cpp now compiles for 1115 minutes on a 1.4GHz
Athlon MP, core is at 1.6GB at the moment (2GB ram available). I'm killing
this off now to test the patch that is supposed to fix this ;)

Richard.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-06-13 20:15       ` Andrew MacLeod
@ 2003-06-14 20:06         ` Richard Guenther
  0 siblings, 0 replies; 50+ messages in thread
From: Richard Guenther @ 2003-06-14 20:06 UTC (permalink / raw)
  To: Andrew MacLeod; +Cc: Diego Novillo, gcc mailing list

On 13 Jun 2003, Andrew MacLeod wrote:

> On Thu, 2003-06-12 at 12:02, Diego Novillo wrote:
> > On Mon, 2003-05-12 at 09:01, Richard Guenther wrote:
> >
> > > Got it compile on a 2Gig machine - .ii file can be fetched from
> > >
> > > http://www.tat.physik.uni-tuebingen.de/~rguenth/FieldCentering.cmpl.ii.gz
> > >
> > > the test uses max. 1.5GB ram on this machine.
> > >
> > > Richard.
> > >
>
> OK, I just posted a patch to speed up DCE, which was the culprit here.
> On my machine, DCE went from using 1678 seconds to 3.5 seconds.
>
> This'll probably help all of POOMA, and most C++ programs.

Jup, helps a lot. But still, 300min for a testsuite run is a factor
of about 10 regression compared to mainline. Also there seem to be
C++ problems with accepting legal code compared to mainline - I'll
investigate.

Richard.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-20 10:44     ` Gerald Pfeifer
@ 2003-05-20 11:39       ` Diego Novillo
  0 siblings, 0 replies; 50+ messages in thread
From: Diego Novillo @ 2003-05-20 11:39 UTC (permalink / raw)
  To: Gerald Pfeifer; +Cc: gcc

On Tue, 2003-05-20 at 06:26, Gerald Pfeifer wrote:

> Is it too early to try more heavy C++ code like the one from PR8361?
> 
Yes.  Sorry for the delay.  This one is still being fixed.  It involves
a few changes in the handling of INDIRECT_REF nodes.

http://gcc.gnu.org/ml/gcc/2003-05/msg01411.html

It should be fixed shortly (FLW).


Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 14:21   ` Gerald Pfeifer
  2003-05-12 16:27     ` Steven Bosscher
@ 2003-05-20 10:44     ` Gerald Pfeifer
  2003-05-20 11:39       ` Diego Novillo
  1 sibling, 1 reply; 50+ messages in thread
From: Gerald Pfeifer @ 2003-05-20 10:44 UTC (permalink / raw)
  To: gcc, Diego Novillo

On Mon, 12 May 2003, Gerald Pfeifer wrote:
> Now that I managed to build the branch, I have to report two serious
> problems shown by a project of mine I tested; source is part of PR8361:
>
>  - internal compiler error: in assign_vars, at tree-ssa.c:1555
>    when compiling with -O2 -c.

I didn't get a reponse for this report, and the crash still happens:

  internal compiler error: in assign_vars, at tree-ssa.c:1557

Is it too early to try more heavy C++ code like the one from PR8361?

Gerald
-- 
Gerald "Jerry"   pfeifer@dbai.tuwien.ac.at   http://www.pfeifer.com/gerald/

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-15 17:50   ` John David Anglin
@ 2003-05-15 19:32     ` Diego Novillo
  0 siblings, 0 replies; 50+ messages in thread
From: Diego Novillo @ 2003-05-15 19:32 UTC (permalink / raw)
  To: John David Anglin; +Cc: gcc, gcc-patches

On Thu, 2003-05-15 at 13:50, John David Anglin wrote:

> I installed the enclosed patched.  Tested on hppa-unknown-linux-gnu:
> 
Thanks.


Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 12:43 ` Diego Novillo
@ 2003-05-15 17:50   ` John David Anglin
  2003-05-15 19:32     ` Diego Novillo
  0 siblings, 1 reply; 50+ messages in thread
From: John David Anglin @ 2003-05-15 17:50 UTC (permalink / raw)
  To: Diego Novillo; +Cc: gcc, gcc-patches

> This is due to GIMPLE.  The gimplifier restructures the trees in ways
> that trigger false warnings like this one.  This needs to be fixed but
> for now you can just add a no-warning entry for regmove.c in
> Makefile.in.  There's a few of these already, they're clustered around a
> FIXME note that describes this problem.

I installed the enclosed patched.  Tested on hppa-unknown-linux-gnu:

<http://gcc.gnu.org/ml/gcc-testresults/2003-05/msg00889.html>.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)

2003-05-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* Makefile.in (regmove.o-warn): Change to -Wno-error.

Index: Makefile.in
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Makefile.in,v
retrieving revision 1.903.2.91
diff -u -3 -p -r1.903.2.91 Makefile.in
--- Makefile.in	14 May 2003 19:43:38 -0000	1.903.2.91
+++ Makefile.in	14 May 2003 23:11:30 -0000
@@ -192,6 +192,7 @@ ra-build.o-warn = -Wno-error
 simplify-rtx.o-warn = -Wno-error
 sched-vis.o-warn = -Wno-error
 stmt.o-warn = -Wno-error
+regmove.o-warn = -Wno-error
 reload1.o-warn = -Wno-error
 reload.o-warn = -Wno-error
 rtlanal.o-warn = -Wno-error

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12 14:21   ` Gerald Pfeifer
@ 2003-05-12 16:27     ` Steven Bosscher
  2003-05-20 10:44     ` Gerald Pfeifer
  1 sibling, 0 replies; 50+ messages in thread
From: Steven Bosscher @ 2003-05-12 16:27 UTC (permalink / raw)
  To: Gerald Pfeifer; +Cc: gcc, Diego Novillo

Op ma 12-05-2003, om 16:21 schreef Gerald Pfeifer:
> Now that I managed to build the branch, I have to report two serious
> problems shown by a project of mine I tested; source is part of PR8361:
> 
>  - internal compiler error: in assign_vars, at tree-ssa.c:1555
>    when compiling with -O2 -c.
> 
>  - it's sloooow: the crash happens after 135s, while current mainline
>    compiles the while file in 81s!

Have a time report for the curious? :-)

Greetz
Steven



^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-09 16:46 ` Gerald Pfeifer
  2003-05-09 17:28   ` Diego Novillo
@ 2003-05-12 14:21   ` Gerald Pfeifer
  2003-05-12 16:27     ` Steven Bosscher
  2003-05-20 10:44     ` Gerald Pfeifer
  1 sibling, 2 replies; 50+ messages in thread
From: Gerald Pfeifer @ 2003-05-12 14:21 UTC (permalink / raw)
  To: gcc, Diego Novillo

Now that I managed to build the branch, I have to report two serious
problems shown by a project of mine I tested; source is part of PR8361:

 - internal compiler error: in assign_vars, at tree-ssa.c:1555
   when compiling with -O2 -c.

 - it's sloooow: the crash happens after 135s, while current mainline
   compiles the while file in 81s!

Gerald
-- 
Gerald "Jerry"   pfeifer@dbai.tuwien.ac.at   http://www.pfeifer.com/gerald/

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-10 14:19     ` Gerald Pfeifer
  2003-05-10 14:43       ` Graham Stott
@ 2003-05-12 12:43       ` Diego Novillo
  1 sibling, 0 replies; 50+ messages in thread
From: Diego Novillo @ 2003-05-12 12:43 UTC (permalink / raw)
  To: Gerald Pfeifer; +Cc: gcc

 On Sat, 2003-05-10 at 10:19, Gerald Pfeifer wrote:

> I'm not sure whether this really is FreeBSD-related, or is triggered by
> some other peculiarity of my system, but if the libbanshee/stamp-h.in
> does not trigger some idea, I think I can arrange for a guest account.
> 
No, the libbanshee stamp file is unrelated.  Eric Botcazou suggested
that the fact that we try to always build with Java maybe the same
problem reported in PR bootstrap/10007.


Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-12  2:13 John David Anglin
@ 2003-05-12 12:43 ` Diego Novillo
  2003-05-15 17:50   ` John David Anglin
  0 siblings, 1 reply; 50+ messages in thread
From: Diego Novillo @ 2003-05-12 12:43 UTC (permalink / raw)
  To: John David Anglin; +Cc: gcc

On Sun, 2003-05-11 at 22:12, John David Anglin wrote:

> I can't see any way inc_code might be used without being initialized.
> 
This is due to GIMPLE.  The gimplifier restructures the trees in ways
that trigger false warnings like this one.  This needs to be fixed but
for now you can just add a no-warning entry for regmove.c in
Makefile.in.  There's a few of these already, they're clustered around a
FIXME note that describes this problem.


Thanks.  Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
@ 2003-05-12  2:13 John David Anglin
  2003-05-12 12:43 ` Diego Novillo
  0 siblings, 1 reply; 50+ messages in thread
From: John David Anglin @ 2003-05-12  2:13 UTC (permalink / raw)
  To: gcc; +Cc: dnovillo

The build fails in stage2 on hppa-unknown-linux-gnu due to a bogus warning:

stage1/xgcc -Bstage1/ -B/home/dave/opt/gnu/gcc/tree-ssa/hppa-linux/bin/ -c   -g -O2  -DIN_GCC   -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long -Werror -fno-common   -DHAVE_CONFIG_H    -I. -I. -I../../gcc/gcc -I../../gcc/gcc/. -I../../gcc/gcc/config -I../../gcc/gcc/../include -I../../gcc/gcc/../libbanshee/libcompat -I../../gcc/gcc/../libbanshee -I../../gcc/gcc/../libbanshee/points-to ../../gcc/gcc/regmove.c -o regmove.o
../../gcc/gcc/regmove.c: In function `try_auto_increment':
../../gcc/gcc/regmove.c:108: warning: `inc_code' might be used uninitialized in
this function

I can't see any way inc_code might be used without being initialized.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-10 14:43       ` Graham Stott
@ 2003-05-10 15:34         ` Daniel Berlin
  0 siblings, 0 replies; 50+ messages in thread
From: Daniel Berlin @ 2003-05-10 15:34 UTC (permalink / raw)
  To: Graham Stott; +Cc: Gerald Pfeifer, Diego Novillo, gcc


On Saturday, May 10, 2003, at 10:43  AM, Graham Stott wrote:

> Diego,
>
> Gerald Pfeifer wrote:
>> On Fri, 9 May 2003, Diego Novillo wrote:
>>> The branch does not really modify the configury framework (besides
>>> libmudflap and libbanshee).
>> Actually, there seems to be another bug, related to those: I use a
>> fresh objdir for every build, and never build in srcdir, but tree-ssa
>> branch always creates
>>   libbanshee/stamp-h.in
>> in my srcdir?
> I  also get that in my srcdir.
>

I didn't do anything odd when automaking it.
but it says:
Makefile.in:$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in 
$(ACLOCAL_M4)
Makefile.in:    @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null
Makefile.in:    -rm -f config.cache config.log stamp-h stamp-h[0-9]*
aclocal.m4:dnl When config.status generates a header, we must update 
the stamp-h file.

stamp-h exists in other automake'd stuff, too:
fastjar/stamp-h.in     libffi/stamp-h.in
libbanshee/stamp-h.in  libmudflap/stamp-h.in
[Daniel-Berlins-Computer:~/gcc-rw-ssa/gcc] dberlin$

They all have it in the CVS tree, so i've cvs added 
libbanshee/stamp-h.in it and committed.

> Graham
>

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-09 17:28   ` Diego Novillo
  2003-05-09 17:37     ` Diego Novillo
  2003-05-10 14:19     ` Gerald Pfeifer
@ 2003-05-10 15:04     ` Gerald Pfeifer
  2 siblings, 0 replies; 50+ messages in thread
From: Gerald Pfeifer @ 2003-05-10 15:04 UTC (permalink / raw)
  To: Diego Novillo; +Cc: gcc

On Fri, 9 May 2003, Diego Novillo wrote:
>> http://www.pfeifer.com/gerald/tmp/buildlog-20030509.bz2 contains the
>> full build log.
> Very odd.  I can't reproduce this on Linux.  For some reason, the
> configure script is enabling libjava regardless of your
> --enable-languages switch.  To build libjava, the Makefiles are using
> your system java compiler (not a big surprise).

Can you reproduce it with the following setting?

  % ls -d $GCC_SOURCE/gcc/java $GCC_SOURCE/libjava/
  ls: /sw/test/gcc/cvs-ts/gcc/java: No such file or directory
  /sw/test/gcc/cvs-ts/libjava/

That is, with gcc/java/ _not_ being present, but libjava/ being there?

Gerald
-- 
Gerald "Jerry"   pfeifer@dbai.tuwien.ac.at   http://www.pfeifer.com/gerald/

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-10 14:19     ` Gerald Pfeifer
@ 2003-05-10 14:43       ` Graham Stott
  2003-05-10 15:34         ` Daniel Berlin
  2003-05-12 12:43       ` Diego Novillo
  1 sibling, 1 reply; 50+ messages in thread
From: Graham Stott @ 2003-05-10 14:43 UTC (permalink / raw)
  To: Gerald Pfeifer; +Cc: Diego Novillo, gcc

Diego,

Gerald Pfeifer wrote:
> On Fri, 9 May 2003, Diego Novillo wrote:
> 
>>The branch does not really modify the configury framework (besides
>>libmudflap and libbanshee).
> 
> 
> Actually, there seems to be another bug, related to those: I use a
> fresh objdir for every build, and never build in srcdir, but tree-ssa
> branch always creates
> 
>   libbanshee/stamp-h.in
> 
> in my srcdir?
I  also get that in my srcdir.

Graham

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-09 17:28   ` Diego Novillo
  2003-05-09 17:37     ` Diego Novillo
@ 2003-05-10 14:19     ` Gerald Pfeifer
  2003-05-10 14:43       ` Graham Stott
  2003-05-12 12:43       ` Diego Novillo
  2003-05-10 15:04     ` Gerald Pfeifer
  2 siblings, 2 replies; 50+ messages in thread
From: Gerald Pfeifer @ 2003-05-10 14:19 UTC (permalink / raw)
  To: Diego Novillo; +Cc: gcc

On Fri, 9 May 2003, Diego Novillo wrote:
> The branch does not really modify the configury framework (besides
> libmudflap and libbanshee).

Actually, there seems to be another bug, related to those: I use a
fresh objdir for every build, and never build in srcdir, but tree-ssa
branch always creates

  libbanshee/stamp-h.in

in my srcdir?

> Can you reproduce the problem in mainline?

No, it doesn't happen there. (I'm using exactly the same scripts for
building mainline every night, only from a different srcdir.)

> I'm not very familiar with all the configuration scripts, but if I
> can get my hands on a freebsd system I could try debugging it.

I'm not sure whether this really is FreeBSD-related, or is triggered by
some other peculiarity of my system, but if the libbanshee/stamp-h.in
does not trigger some idea, I think I can arrange for a guest account.

Gerald
-- 
Gerald "Jerry"   pfeifer@dbai.tuwien.ac.at   http://www.pfeifer.com/gerald/

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-09 17:37     ` Diego Novillo
@ 2003-05-09 19:02       ` Eric Botcazou
  0 siblings, 0 replies; 50+ messages in thread
From: Eric Botcazou @ 2003-05-09 19:02 UTC (permalink / raw)
  To: Diego Novillo; +Cc: Gerald Pfeifer, gcc

> I wasn't clear: I can't reproduce neither the failure nor the fact that
> we try to build libjava.

I know how to reproduce the latter behaviour, at least on Solaris boxes: 
build with Java enabled, then do a 'make distclean', configure without Java 
and build again: libjava is being built in 100% of the cases.

The fix is to do 'rm -r gcc' in the $(objdir) directory.

This was reported as PR bootstrap/10007 on Linux/i686.

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-09 17:28   ` Diego Novillo
@ 2003-05-09 17:37     ` Diego Novillo
  2003-05-09 19:02       ` Eric Botcazou
  2003-05-10 14:19     ` Gerald Pfeifer
  2003-05-10 15:04     ` Gerald Pfeifer
  2 siblings, 1 reply; 50+ messages in thread
From: Diego Novillo @ 2003-05-09 17:37 UTC (permalink / raw)
  To: Gerald Pfeifer; +Cc: gcc

On Fri, 2003-05-09 at 13:28, Diego Novillo wrote:
> On Fri, 2003-05-09 at 12:45, Gerald Pfeifer wrote:
> 
> > http://www.pfeifer.com/gerald/tmp/buildlog-20030509.bz2 contains the
> > full build log.
> > 
> Very odd.  I can't reproduce this on Linux.  For some reason, the
> configure script is enabling libjava regardless of your
> --enable-languages switch.  To build libjava, the Makefiles are using
> your system java compiler (not a big surprise).
> 
I wasn't clear: I can't reproduce neither the failure nor the fact that
we try to build libjava.


Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-09 16:46 ` Gerald Pfeifer
@ 2003-05-09 17:28   ` Diego Novillo
  2003-05-09 17:37     ` Diego Novillo
                       ` (2 more replies)
  2003-05-12 14:21   ` Gerald Pfeifer
  1 sibling, 3 replies; 50+ messages in thread
From: Diego Novillo @ 2003-05-09 17:28 UTC (permalink / raw)
  To: Gerald Pfeifer; +Cc: gcc

On Fri, 2003-05-09 at 12:45, Gerald Pfeifer wrote:

> http://www.pfeifer.com/gerald/tmp/buildlog-20030509.bz2 contains the
> full build log.
> 
Very odd.  I can't reproduce this on Linux.  For some reason, the
configure script is enabling libjava regardless of your
--enable-languages switch.  To build libjava, the Makefiles are using
your system java compiler (not a big surprise).

The branch does not really modify the configury framework (besides
libmudflap and libbanshee).  Can you reproduce the problem in mainline? 
I'm not very familiar with all the configuration scripts, but if I can
get my hands on a freebsd system I could try debugging it.


Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-07 14:25 Diego Novillo
                   ` (2 preceding siblings ...)
  2003-05-08  5:51 ` Toon Moene
@ 2003-05-09 16:46 ` Gerald Pfeifer
  2003-05-09 17:28   ` Diego Novillo
  2003-05-12 14:21   ` Gerald Pfeifer
  3 siblings, 2 replies; 50+ messages in thread
From: Gerald Pfeifer @ 2003-05-09 16:46 UTC (permalink / raw)
  To: gcc, Diego Novillo

On Wed, 7 May 2003, Diego Novillo wrote:
> This call for testing is mostly to gather data that will help finding
> the most obvious problems with the branch.

I have a very strange one:

When configuring with --enable-languages=c,c++ --disable-checking, why
do my builds (reproducibly) abort with a failure in libjava

  gcj -B/files/pfeifer/OBJ-0509-1747/i386-unknown-freebsd4.8/libjava/ --encoding=UTF-8 -Wno-deprecated -C -g -classpath '' -bootclasspath /files/pfeifer/OBJ-0509-1747/i386-unknown-freebsd4.8/libjava:/sw/test/gcc/cvs-ts/libjava \
             -d /files/pfeifer/OBJ-0509-1747/i386-unknown-freebsd4.8/libjava /sw/test/gcc/cvs-ts/libjava/java/awt/font/TextAttribute.java
  /sw/test/gcc/cvs-ts/libjava/java/awt/font/TextAttribute.java:44: Superclass `AttributedCharacterIterator.Attribute' of class `java.awt.font.TextAttribute' not found.
     public final class TextAttribute extends AttributedCharacterIterator.Attribute
                                            ^
  1 error
  gmake[2]: *** [java/awt/font/TextAttribute.class] Error 1
  gmake[2]: *** Waiting for unfinished jobs....
  gmake[2]: Leaving directory `/files/pfeifer/OBJ-0509-1747/i386-unknown-freebsd4.8/libjava'
  gmake[1]: *** [all-target-libjava] Error 2

???

http://www.pfeifer.com/gerald/tmp/buildlog-20030509.bz2 contains the
full build log.

Gerald

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-09  1:31     ` Qiong Cai
@ 2003-05-09  2:02       ` Andrew Pinski
  0 siblings, 0 replies; 50+ messages in thread
From: Andrew Pinski @ 2003-05-09  2:02 UTC (permalink / raw)
  To: Qiong Cai; +Cc: Andrew Pinski, law, Diego Novillo, gcc

I think it is this line: (void)( { PL_stack_sp = PL_stack_base + ax + 
((1) - 1); return; } );

Looks to be the same problem as the glibc problem being discussed early 
today.

Thanks,
Andrew Pinski

On Thursday, May 8, 2003, at 21:31 US/Eastern, Qiong Cai wrote:

> universal.i is attached.
>
> Qiong
>
> On Wed, May 07, 2003 at 12:02:09PM -0600, law@redhat.com wrote:
>> In message <20030507175428.GA5081@cse.unsw.edu.au>, Qiong Cai writes:
>>> Compiling Error:
>>> 1) perlbmk
>>> universal.c: In function `XS_UNIVERSAL_isa':
>>> universal.c:123: internal compiler error: in simplify_stmt_expr, at 
>>> c-simplif
>>> y.c:991
>> If you could add "-save-temps" to the compilation line, recompile and 
>> send
>> the resulting universal.i file to Diego and myself it would be greatly
>> appreciated.
>>
>> Jeff
>>
> <universal.i>

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-07 18:02   ` law
@ 2003-05-09  1:31     ` Qiong Cai
  2003-05-09  2:02       ` Andrew Pinski
  0 siblings, 1 reply; 50+ messages in thread
From: Qiong Cai @ 2003-05-09  1:31 UTC (permalink / raw)
  To: law; +Cc: Diego Novillo, gcc

[-- Attachment #1: Type: text/plain, Size: 526 bytes --]

universal.i is attached.

Qiong

On Wed, May 07, 2003 at 12:02:09PM -0600, law@redhat.com wrote:
> In message <20030507175428.GA5081@cse.unsw.edu.au>, Qiong Cai writes:
>  >Compiling Error:
>  >1) perlbmk
>  >universal.c: In function `XS_UNIVERSAL_isa':
>  >universal.c:123: internal compiler error: in simplify_stmt_expr, at c-simplif
>  >y.c:991
> If you could add "-save-temps" to the compilation line, recompile and send
> the resulting universal.i file to Diego and myself it would be greatly
> appreciated.
> 
> Jeff
> 

[-- Attachment #2: universal.i --]
[-- Type: text/plain, Size: 184447 bytes --]

# 1 "universal.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "universal.c"
# 1 "EXTERN.h" 1
# 2 "universal.c" 2
# 1 "perl.h" 1
# 137 "perl.h"
# 1 "config.h" 1
# 1 "spec_config.h" 1
# 2 "config.h" 2
# 138 "perl.h" 2

# 1 "embed.h" 1
# 140 "perl.h" 2
# 307 "perl.h"
# 1 "/usr/include/sys/types.h" 1 3 4
# 26 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/features.h" 1 3 4
# 283 "/usr/include/features.h" 3 4
# 1 "/usr/include/sys/cdefs.h" 1 3 4
# 284 "/usr/include/features.h" 2 3 4
# 312 "/usr/include/features.h" 3 4
# 1 "/usr/include/gnu/stubs.h" 1 3 4
# 313 "/usr/include/features.h" 2 3 4
# 27 "/usr/include/sys/types.h" 2 3 4



# 1 "/usr/include/bits/types.h" 1 3 4
# 29 "/usr/include/bits/types.h" 3 4
# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 1 3 4
# 213 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 3 4
typedef unsigned int size_t;
# 30 "/usr/include/bits/types.h" 2 3 4


typedef unsigned char __u_char;
typedef unsigned short __u_short;
typedef unsigned int __u_int;
typedef unsigned long __u_long;

__extension__ typedef unsigned long long int __u_quad_t;
__extension__ typedef long long int __quad_t;
# 49 "/usr/include/bits/types.h" 3 4
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;

__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;

typedef __quad_t *__qaddr_t;

typedef __u_quad_t __dev_t;
typedef __u_int __uid_t;
typedef __u_int __gid_t;
typedef __u_long __ino_t;
typedef __u_int __mode_t;
typedef __u_int __nlink_t;
typedef long int __off_t;
typedef __quad_t __loff_t;
typedef int __pid_t;
typedef int __ssize_t;
typedef __u_long __rlim_t;
typedef __u_quad_t __rlim64_t;
typedef __u_int __id_t;

typedef struct
  {
    int __val[2];
  } __fsid_t;


typedef int __daddr_t;
typedef char *__caddr_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;
typedef long int __swblk_t;

typedef long int __clock_t;


typedef int __clockid_t;


typedef int __timer_t;






typedef int __key_t;


typedef unsigned short int __ipc_pid_t;



typedef long int __blksize_t;




typedef long int __blkcnt_t;
typedef __quad_t __blkcnt64_t;


typedef __u_long __fsblkcnt_t;
typedef __u_quad_t __fsblkcnt64_t;


typedef __u_long __fsfilcnt_t;
typedef __u_quad_t __fsfilcnt64_t;


typedef __u_quad_t __ino64_t;


typedef __loff_t __off64_t;


typedef long int __t_scalar_t;
typedef unsigned long int __t_uscalar_t;


typedef int __intptr_t;


typedef unsigned int __socklen_t;




# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
# 23 "/usr/include/bits/pthreadtypes.h" 3 4
# 1 "/usr/include/bits/sched.h" 1 3 4
# 68 "/usr/include/bits/sched.h" 3 4
struct __sched_param
  {
    int __sched_priority;
  };
# 24 "/usr/include/bits/pthreadtypes.h" 2 3 4

typedef int __atomic_lock_t;


struct _pthread_fastlock
{
  long int __status;
  __atomic_lock_t __spinlock;

};



typedef struct _pthread_descr_struct *_pthread_descr;





typedef struct __pthread_attr_s
{
  int __detachstate;
  int __schedpolicy;
  struct __sched_param __schedparam;
  int __inheritsched;
  int __scope;
  size_t __guardsize;
  int __stackaddr_set;
  void *__stackaddr;
  size_t __stacksize;
} pthread_attr_t;



typedef struct
{
  struct _pthread_fastlock __c_lock;
  _pthread_descr __c_waiting;
} pthread_cond_t;



typedef struct
{
  int __dummy;
} pthread_condattr_t;


typedef unsigned int pthread_key_t;





typedef struct
{
  int __m_reserved;
  int __m_count;
  _pthread_descr __m_owner;
  int __m_kind;
  struct _pthread_fastlock __m_lock;
} pthread_mutex_t;



typedef struct
{
  int __mutexkind;
} pthread_mutexattr_t;



typedef int pthread_once_t;
# 142 "/usr/include/bits/pthreadtypes.h" 3 4
typedef unsigned long int pthread_t;
# 144 "/usr/include/bits/types.h" 2 3 4
# 31 "/usr/include/sys/types.h" 2 3 4



typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;




typedef __loff_t loff_t;



typedef __ino_t ino_t;
# 61 "/usr/include/sys/types.h" 3 4
typedef __dev_t dev_t;




typedef __gid_t gid_t;




typedef __mode_t mode_t;




typedef __nlink_t nlink_t;




typedef __uid_t uid_t;





typedef __off_t off_t;
# 99 "/usr/include/sys/types.h" 3 4
typedef __pid_t pid_t;




typedef __id_t id_t;




typedef __ssize_t ssize_t;





typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;





typedef __key_t key_t;
# 132 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 70 "/usr/include/time.h" 3 4
typedef __time_t time_t;
# 82 "/usr/include/time.h" 3 4
typedef __clockid_t clockid_t;
# 94 "/usr/include/time.h" 3 4
typedef __timer_t timer_t;
# 133 "/usr/include/sys/types.h" 2 3 4
# 146 "/usr/include/sys/types.h" 3 4
# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 1 3 4
# 147 "/usr/include/sys/types.h" 2 3 4



typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 190 "/usr/include/sys/types.h" 3 4
typedef int int8_t ;
typedef int int16_t ;
typedef int int32_t ;
typedef int int64_t ;


typedef unsigned int u_int8_t ;
typedef unsigned int u_int16_t ;
typedef unsigned int u_int32_t ;
typedef unsigned int u_int64_t ;

typedef int register_t ;
# 212 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/endian.h" 1 3 4
# 37 "/usr/include/endian.h" 3 4
# 1 "/usr/include/bits/endian.h" 1 3 4
# 38 "/usr/include/endian.h" 2 3 4
# 213 "/usr/include/sys/types.h" 2 3 4


# 1 "/usr/include/sys/select.h" 1 3 4
# 31 "/usr/include/sys/select.h" 3 4
# 1 "/usr/include/bits/select.h" 1 3 4
# 32 "/usr/include/sys/select.h" 2 3 4


# 1 "/usr/include/bits/sigset.h" 1 3 4
# 23 "/usr/include/bits/sigset.h" 3 4
typedef int __sig_atomic_t;




typedef struct
  {
    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
  } __sigset_t;
# 35 "/usr/include/sys/select.h" 2 3 4



typedef __sigset_t sigset_t;





# 1 "/usr/include/time.h" 1 3 4
# 106 "/usr/include/time.h" 3 4
struct timespec
  {
    __time_t tv_sec;
    long int tv_nsec;
  };
# 45 "/usr/include/sys/select.h" 2 3 4

# 1 "/usr/include/bits/time.h" 1 3 4
# 67 "/usr/include/bits/time.h" 3 4
struct timeval
  {
    __time_t tv_sec;
    __suseconds_t tv_usec;
  };
# 47 "/usr/include/sys/select.h" 2 3 4


typedef __suseconds_t suseconds_t;





typedef long int __fd_mask;







typedef struct
  {






    __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];


  } fd_set;






typedef __fd_mask fd_mask;
# 95 "/usr/include/sys/select.h" 3 4







extern int select (int __nfds, fd_set *__restrict __readfds,
     fd_set *__restrict __writefds,
     fd_set *__restrict __exceptfds,
     struct timeval *__restrict __timeout) ;
# 118 "/usr/include/sys/select.h" 3 4

# 216 "/usr/include/sys/types.h" 2 3 4


# 1 "/usr/include/sys/sysmacros.h" 1 3 4
# 219 "/usr/include/sys/types.h" 2 3 4
# 230 "/usr/include/sys/types.h" 3 4
typedef __blkcnt_t blkcnt_t;



typedef __fsblkcnt_t fsblkcnt_t;



typedef __fsfilcnt_t fsfilcnt_t;
# 262 "/usr/include/sys/types.h" 3 4

# 308 "perl.h" 2
# 318 "perl.h"
# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdarg.h" 1 3 4
# 43 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 105 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdarg.h" 3 4
typedef __gnuc_va_list va_list;
# 319 "perl.h" 2






# 1 "iperlsys.h" 1
# 74 "iperlsys.h"
extern void PerlIO_init (void);
# 203 "iperlsys.h"
# 1 "perlsdio.h" 1




# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 1 3 4
# 39 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4




# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 1 3 4
# 44 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 2 3 4
# 54 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
typedef struct _IO_FILE FILE;
# 64 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
typedef struct _IO_FILE __FILE;
# 74 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
# 1 "/usr/include/libio.h" 1 3 4
# 32 "/usr/include/libio.h" 3 4
# 1 "/usr/include/_G_config.h" 1 3 4
# 14 "/usr/include/_G_config.h" 3 4
# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 1 3 4
# 325 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 3 4
typedef long int wchar_t;
# 354 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 3 4
typedef unsigned int wint_t;
# 15 "/usr/include/_G_config.h" 2 3 4
# 24 "/usr/include/_G_config.h" 3 4
# 1 "/usr/include/wchar.h" 1 3 4
# 48 "/usr/include/wchar.h" 3 4
# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 1 3 4
# 49 "/usr/include/wchar.h" 2 3 4

# 1 "/usr/include/bits/wchar.h" 1 3 4
# 51 "/usr/include/wchar.h" 2 3 4
# 67 "/usr/include/wchar.h" 3 4
typedef struct
{
  int __count;
  union
  {
    wint_t __wch;
    char __wchb[4];
  } __value;
} __mbstate_t;
# 25 "/usr/include/_G_config.h" 2 3 4

typedef struct
{
  __off_t __pos;
  __mbstate_t __state;
} _G_fpos_t;
typedef struct
{
  __off64_t __pos;
  __mbstate_t __state;
} _G_fpos64_t;
# 44 "/usr/include/_G_config.h" 3 4
# 1 "/usr/include/gconv.h" 1 3 4
# 28 "/usr/include/gconv.h" 3 4
# 1 "/usr/include/wchar.h" 1 3 4
# 48 "/usr/include/wchar.h" 3 4
# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 1 3 4
# 49 "/usr/include/wchar.h" 2 3 4
# 29 "/usr/include/gconv.h" 2 3 4


# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 1 3 4
# 32 "/usr/include/gconv.h" 2 3 4





enum
{
  __GCONV_OK = 0,
  __GCONV_NOCONV,
  __GCONV_NODB,
  __GCONV_NOMEM,

  __GCONV_EMPTY_INPUT,
  __GCONV_FULL_OUTPUT,
  __GCONV_ILLEGAL_INPUT,
  __GCONV_INCOMPLETE_INPUT,

  __GCONV_ILLEGAL_DESCRIPTOR,
  __GCONV_INTERNAL_ERROR
};



enum
{
  __GCONV_IS_LAST = 0x0001,
  __GCONV_IGNORE_ERRORS = 0x0002
};



struct __gconv_step;
struct __gconv_step_data;
struct __gconv_loaded_object;
struct __gconv_trans_data;



typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
       __const unsigned char **, __const unsigned char *,
       unsigned char **, size_t *, int, int);


typedef int (*__gconv_init_fct) (struct __gconv_step *);
typedef void (*__gconv_end_fct) (struct __gconv_step *);



typedef int (*__gconv_trans_fct) (struct __gconv_step *,
      struct __gconv_step_data *, void *,
      __const unsigned char *,
      __const unsigned char **,
      __const unsigned char *, unsigned char **,
      size_t *);


typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
       __const unsigned char *,
       unsigned char *, unsigned char *);


typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
     size_t *);


typedef int (*__gconv_trans_init_fct) (void **, const char *);
typedef void (*__gconv_trans_end_fct) (void *);

struct __gconv_trans_data
{

  __gconv_trans_fct __trans_fct;
  __gconv_trans_context_fct __trans_context_fct;
  __gconv_trans_end_fct __trans_end_fct;
  void *__data;
  struct __gconv_trans_data *__next;
};



struct __gconv_step
{
  struct __gconv_loaded_object *__shlib_handle;
  __const char *__modname;

  int __counter;

  char *__from_name;
  char *__to_name;

  __gconv_fct __fct;
  __gconv_init_fct __init_fct;
  __gconv_end_fct __end_fct;



  int __min_needed_from;
  int __max_needed_from;
  int __min_needed_to;
  int __max_needed_to;


  int __stateful;

  void *__data;
};



struct __gconv_step_data
{
  unsigned char *__outbuf;
  unsigned char *__outbufend;



  int __flags;



  int __invocation_counter;



  int __internal_use;

  __mbstate_t *__statep;
  __mbstate_t __state;



  struct __gconv_trans_data *__trans;
};



typedef struct __gconv_info
{
  size_t __nsteps;
  struct __gconv_step *__steps;
  __extension__ struct __gconv_step_data __data [];
} *__gconv_t;
# 45 "/usr/include/_G_config.h" 2 3 4
typedef union
{
  struct __gconv_info __cd;
  struct
  {
    struct __gconv_info __cd;
    struct __gconv_step_data __data;
  } __combined;
} _G_iconv_t;

typedef int _G_int16_t ;
typedef int _G_int32_t ;
typedef unsigned int _G_uint16_t ;
typedef unsigned int _G_uint32_t ;
# 33 "/usr/include/libio.h" 2 3 4
# 160 "/usr/include/libio.h" 3 4
struct _IO_jump_t; struct _IO_FILE;
# 170 "/usr/include/libio.h" 3 4
typedef void _IO_lock_t;





struct _IO_marker {
  struct _IO_marker *_next;
  struct _IO_FILE *_sbuf;



  int _pos;
# 193 "/usr/include/libio.h" 3 4
};


enum __codecvt_result
{
  __codecvt_ok,
  __codecvt_partial,
  __codecvt_error,
  __codecvt_noconv
};
# 261 "/usr/include/libio.h" 3 4
struct _IO_FILE {
  int _flags;




  char* _IO_read_ptr;
  char* _IO_read_end;
  char* _IO_read_base;
  char* _IO_write_base;
  char* _IO_write_ptr;
  char* _IO_write_end;
  char* _IO_buf_base;
  char* _IO_buf_end;

  char *_IO_save_base;
  char *_IO_backup_base;
  char *_IO_save_end;

  struct _IO_marker *_markers;

  struct _IO_FILE *_chain;

  int _fileno;
  int _blksize;
  __off_t _old_offset;



  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];



  _IO_lock_t *_lock;
# 305 "/usr/include/libio.h" 3 4
  __off64_t _offset;





  void *__pad1;
  void *__pad2;

  int _mode;

  char _unused2[15 * sizeof (int) - 2 * sizeof (void *)];

};


typedef struct _IO_FILE _IO_FILE;


struct _IO_FILE_plus;

extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
# 344 "/usr/include/libio.h" 3 4
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);







typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
     size_t __n);







typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);


typedef int __io_close_fn (void *__cookie);
# 396 "/usr/include/libio.h" 3 4
extern int __underflow (_IO_FILE *) ;
extern int __uflow (_IO_FILE *) ;
extern int __overflow (_IO_FILE *, int) ;
extern wint_t __wunderflow (_IO_FILE *) ;
extern wint_t __wuflow (_IO_FILE *) ;
extern wint_t __woverflow (_IO_FILE *, wint_t) ;
# 426 "/usr/include/libio.h" 3 4
extern int _IO_getc (_IO_FILE *__fp) ;
extern int _IO_putc (int __c, _IO_FILE *__fp) ;
extern int _IO_feof (_IO_FILE *__fp) ;
extern int _IO_ferror (_IO_FILE *__fp) ;

extern int _IO_peekc_locked (_IO_FILE *__fp) ;





extern void _IO_flockfile (_IO_FILE *) ;
extern void _IO_funlockfile (_IO_FILE *) ;
extern int _IO_ftrylockfile (_IO_FILE *) ;
# 456 "/usr/include/libio.h" 3 4
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
   __gnuc_va_list, int *__restrict) ;
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
    __gnuc_va_list) ;
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) ;
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) ;

extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) ;
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) ;

extern void _IO_free_backup_area (_IO_FILE *) ;
# 75 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 2 3 4
# 89 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
typedef _G_fpos_t fpos_t;
# 138 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
# 139 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 2 3 4



extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;






extern int remove (__const char *__filename) ;

extern int rename (__const char *__old, __const char *__new) ;




extern FILE *tmpfile (void) ;
# 170 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
extern char *tmpnam (char *__s) ;




extern char *tmpnam_r (char *__s) ;
# 187 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
extern char *tempnam (__const char *__dir, __const char *__pfx)
     ;




extern int fclose (FILE *__stream) ;

extern int fflush (FILE *__stream) ;



extern int fflush_unlocked (FILE *__stream) ;
# 210 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
extern FILE *fopen (__const char *__restrict __filename,
      __const char *__restrict __modes) ;

extern FILE *freopen (__const char *__restrict __filename,
        __const char *__restrict __modes,
        FILE *__restrict __stream) ;
# 240 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
extern FILE *fdopen (int __fd, __const char *__modes) ;
# 263 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) ;



extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
      int __modes, size_t __n) ;




extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
         size_t __size) ;


extern void setlinebuf (FILE *__stream) ;




extern int fprintf (FILE *__restrict __stream,
      __const char *__restrict __format, ...) ;

extern int printf (__const char *__restrict __format, ...) ;

extern int sprintf (char *__restrict __s,
      __const char *__restrict __format, ...) ;


extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
       __gnuc_va_list __arg) ;

extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg)
     ;

extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
       __gnuc_va_list __arg) ;



extern int snprintf (char *__restrict __s, size_t __maxlen,
       __const char *__restrict __format, ...)
     ;

extern int vsnprintf (char *__restrict __s, size_t __maxlen,
        __const char *__restrict __format, __gnuc_va_list __arg)
     ;
# 334 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
extern int fscanf (FILE *__restrict __stream,
     __const char *__restrict __format, ...) ;

extern int scanf (__const char *__restrict __format, ...) ;

extern int sscanf (__const char *__restrict __s,
     __const char *__restrict __format, ...) ;
# 360 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
extern int fgetc (FILE *__stream) ;
extern int getc (FILE *__stream) ;


extern int getchar (void) ;







extern int getc_unlocked (FILE *__stream) ;
extern int getchar_unlocked (void) ;




extern int fgetc_unlocked (FILE *__stream) ;




extern int fputc (int __c, FILE *__stream) ;
extern int putc (int __c, FILE *__stream) ;


extern int putchar (int __c) ;







extern int fputc_unlocked (int __c, FILE *__stream) ;




extern int putc_unlocked (int __c, FILE *__stream) ;
extern int putchar_unlocked (int __c) ;





extern int getw (FILE *__stream) ;


extern int putw (int __w, FILE *__stream) ;




extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
     ;
# 426 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
extern char *gets (char *__s) ;
# 450 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
extern int fputs (__const char *__restrict __s, FILE *__restrict __stream)
     ;
# 460 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
extern int puts (__const char *__s) ;



extern int ungetc (int __c, FILE *__stream) ;



extern size_t fread (void *__restrict __ptr, size_t __size,
       size_t __n, FILE *__restrict __stream) ;

extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
        size_t __n, FILE *__restrict __s) ;



extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
         size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
          size_t __n, FILE *__restrict __stream) ;




extern int fseek (FILE *__stream, long int __off, int __whence) ;

extern long int ftell (FILE *__stream) ;

extern void rewind (FILE *__stream) ;
# 504 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos)
     ;

extern int fsetpos (FILE *__stream, __const fpos_t *__pos) ;
# 540 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
extern void clearerr (FILE *__stream) ;

extern int feof (FILE *__stream) ;

extern int ferror (FILE *__stream) ;



extern void clearerr_unlocked (FILE *__stream) ;
extern int feof_unlocked (FILE *__stream) ;
extern int ferror_unlocked (FILE *__stream) ;




extern void perror (__const char *__s) ;





# 1 "/usr/include/bits/sys_errlist.h" 1 3 4
# 27 "/usr/include/bits/sys_errlist.h" 3 4
extern int sys_nerr;
extern __const char *__const sys_errlist[];
# 562 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 2 3 4




extern int fileno (FILE *__stream) ;




extern int fileno_unlocked (FILE *__stream) ;






extern FILE *popen (__const char *__command, __const char *__modes) ;


extern int pclose (FILE *__stream) ;





extern char *ctermid (char *__s) ;
# 613 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
extern void flockfile (FILE *__stream) ;



extern int ftrylockfile (FILE *__stream) ;


extern void funlockfile (FILE *__stream) ;
# 634 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 3 4
# 1 "/usr/include/bits/stdio.h" 1 3 4
# 33 "/usr/include/bits/stdio.h" 3 4
extern __inline int
vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
{
  return vfprintf (stdout, __fmt, __arg);
}


extern __inline int
getchar (void)
{
  return _IO_getc (stdin);
}




extern __inline int
getc_unlocked (FILE *__fp)
{
  return ((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}


extern __inline int
getchar_unlocked (void)
{
  return ((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
}




extern __inline int
putchar (int __c)
{
  return _IO_putc (__c, stdout);
}




extern __inline int
fputc_unlocked (int __c, FILE *__stream)
{
  return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}





extern __inline int
putc_unlocked (int __c, FILE *__stream)
{
  return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}


extern __inline int
putchar_unlocked (int __c)
{
  return (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
}
# 111 "/usr/include/bits/stdio.h" 3 4
extern __inline int
feof_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x10) != 0);
}


extern __inline int
ferror_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x20) != 0);
}
# 635 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stdio.h" 2 3 4



# 6 "perlsdio.h" 2
# 204 "iperlsys.h" 2
# 318 "iperlsys.h"
extern int PerlIO_sprintf (char *, int, const char *,...)
     ;
# 326 "perl.h" 2
# 336 "perl.h"
# 1 "/usr/include/ctype.h" 1 3 4
# 29 "/usr/include/ctype.h" 3 4

# 47 "/usr/include/ctype.h" 3 4
enum
{
  _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
  _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
  _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
  _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
  _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
  _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
  _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
  _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
  _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
  _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
  _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
  _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
};
# 75 "/usr/include/ctype.h" 3 4
extern __const unsigned short int *__ctype_b;
extern __const __int32_t *__ctype_tolower;
extern __const __int32_t *__ctype_toupper;
# 91 "/usr/include/ctype.h" 3 4
extern int isalnum (int) ;
extern int isalpha (int) ;
extern int iscntrl (int) ;
extern int isdigit (int) ;
extern int islower (int) ;
extern int isgraph (int) ;
extern int isprint (int) ;
extern int ispunct (int) ;
extern int isspace (int) ;
extern int isupper (int) ;
extern int isxdigit (int) ;







extern int tolower (int __c) ;


extern int toupper (int __c) ;






extern int isascii (int __c) ;



extern int toascii (int __c) ;



extern int _toupper (int) ;
extern int _tolower (int) ;
# 167 "/usr/include/ctype.h" 3 4
extern __inline int
tolower (int __c)
{
  return __c >= -128 && __c < 256 ? __ctype_tolower[__c] : __c;
}

extern __inline int
toupper (int __c)
{
  return __c >= -128 && __c < 256 ? __ctype_toupper[__c] : __c;
}
# 276 "/usr/include/ctype.h" 3 4

# 337 "perl.h" 2







# 1 "/usr/include/locale.h" 1 3 4
# 29 "/usr/include/locale.h" 3 4
# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 1 3 4
# 30 "/usr/include/locale.h" 2 3 4
# 1 "/usr/include/bits/locale.h" 1 3 4
# 27 "/usr/include/bits/locale.h" 3 4
enum
{
  __LC_CTYPE = 0,
  __LC_NUMERIC = 1,
  __LC_TIME = 2,
  __LC_COLLATE = 3,
  __LC_MONETARY = 4,
  __LC_MESSAGES = 5,
  __LC_ALL = 6,
  __LC_PAPER = 7,
  __LC_NAME = 8,
  __LC_ADDRESS = 9,
  __LC_TELEPHONE = 10,
  __LC_MEASUREMENT = 11,
  __LC_IDENTIFICATION = 12
};
# 31 "/usr/include/locale.h" 2 3 4


# 52 "/usr/include/locale.h" 3 4
struct lconv
{


  char *decimal_point;
  char *thousands_sep;





  char *grouping;





  char *int_curr_symbol;
  char *currency_symbol;
  char *mon_decimal_point;
  char *mon_thousands_sep;
  char *mon_grouping;
  char *positive_sign;
  char *negative_sign;
  char int_frac_digits;
  char frac_digits;

  char p_cs_precedes;

  char p_sep_by_space;

  char n_cs_precedes;

  char n_sep_by_space;






  char p_sign_posn;
  char n_sign_posn;
# 112 "/usr/include/locale.h" 3 4
  char __int_p_cs_precedes;
  char __int_p_sep_by_space;
  char __int_n_cs_precedes;
  char __int_n_sep_by_space;
  char __int_p_sign_posn;
  char __int_n_sign_posn;

};



extern char *setlocale (int __category, __const char *__locale) ;


extern struct lconv *localeconv (void) ;
# 161 "/usr/include/locale.h" 3 4

# 345 "perl.h" 2
# 361 "perl.h"
# 1 "/usr/include/setjmp.h" 1 3 4
# 28 "/usr/include/setjmp.h" 3 4


# 1 "/usr/include/bits/setjmp.h" 1 3 4
# 36 "/usr/include/bits/setjmp.h" 3 4
typedef int __jmp_buf[6];
# 31 "/usr/include/setjmp.h" 2 3 4
# 1 "/usr/include/bits/sigset.h" 1 3 4
# 32 "/usr/include/setjmp.h" 2 3 4


typedef struct __jmp_buf_tag
  {




    __jmp_buf __jmpbuf;
    int __mask_was_saved;
    __sigset_t __saved_mask;
  } jmp_buf[1];




extern int setjmp (jmp_buf __env) ;



extern int _setjmp (jmp_buf __env) ;




extern int __sigsetjmp (jmp_buf __env, int __savemask) ;
# 73 "/usr/include/setjmp.h" 3 4
extern void longjmp (jmp_buf __env, int __val)
     ;




extern void _longjmp (jmp_buf __env, int __val)
     ;







typedef jmp_buf sigjmp_buf;
# 98 "/usr/include/setjmp.h" 3 4
extern void siglongjmp (sigjmp_buf __env, int __val)
     ;



# 362 "perl.h" 2
# 373 "perl.h"
# 1 "/usr/include/stdlib.h" 1 3 4
# 33 "/usr/include/stdlib.h" 3 4
# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 1 3 4
# 34 "/usr/include/stdlib.h" 2 3 4


# 94 "/usr/include/stdlib.h" 3 4
typedef struct
  {
    int quot;
    int rem;
  } div_t;



typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;
# 133 "/usr/include/stdlib.h" 3 4
extern size_t __ctype_get_mb_cur_max (void) ;



extern double atof (__const char *__nptr) ;

extern int atoi (__const char *__nptr) ;

extern long int atol (__const char *__nptr) ;



__extension__ extern long long int atoll (__const char *__nptr)
     ;



extern double strtod (__const char *__restrict __nptr,
        char **__restrict __endptr) ;
# 163 "/usr/include/stdlib.h" 3 4
extern long int strtol (__const char *__restrict __nptr,
   char **__restrict __endptr, int __base) ;

extern unsigned long int strtoul (__const char *__restrict __nptr,
      char **__restrict __endptr, int __base)
     ;



__extension__
extern long long int strtoq (__const char *__restrict __nptr,
        char **__restrict __endptr, int __base) ;

__extension__
extern unsigned long long int strtouq (__const char *__restrict __nptr,
           char **__restrict __endptr, int __base)
     ;






__extension__
extern long long int strtoll (__const char *__restrict __nptr,
         char **__restrict __endptr, int __base) ;

__extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr,
     char **__restrict __endptr, int __base)
     ;
# 250 "/usr/include/stdlib.h" 3 4
extern double __strtod_internal (__const char *__restrict __nptr,
     char **__restrict __endptr, int __group)
     ;
extern float __strtof_internal (__const char *__restrict __nptr,
    char **__restrict __endptr, int __group)
     ;
extern long double __strtold_internal (__const char *__restrict __nptr,
           char **__restrict __endptr,
           int __group) ;

extern long int __strtol_internal (__const char *__restrict __nptr,
       char **__restrict __endptr,
       int __base, int __group) ;



extern unsigned long int __strtoul_internal (__const char *__restrict __nptr,
          char **__restrict __endptr,
          int __base, int __group) ;




__extension__
extern long long int __strtoll_internal (__const char *__restrict __nptr,
      char **__restrict __endptr,
      int __base, int __group) ;



__extension__
extern unsigned long long int __strtoull_internal (__const char *
         __restrict __nptr,
         char **__restrict __endptr,
         int __base, int __group)
     ;







extern __inline double
strtod (__const char *__restrict __nptr, char **__restrict __endptr)
{
  return __strtod_internal (__nptr, __endptr, 0);
}
extern __inline long int
strtol (__const char *__restrict __nptr, char **__restrict __endptr,
 int __base)
{
  return __strtol_internal (__nptr, __endptr, __base, 0);
}
extern __inline unsigned long int
strtoul (__const char *__restrict __nptr, char **__restrict __endptr,
  int __base)
{
  return __strtoul_internal (__nptr, __endptr, __base, 0);
}
# 325 "/usr/include/stdlib.h" 3 4
__extension__ extern __inline long long int
strtoq (__const char *__restrict __nptr, char **__restrict __endptr,
 int __base)
{
  return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
  int __base)
{
  return __strtoull_internal (__nptr, __endptr, __base, 0);
}



__extension__ extern __inline long long int
strtoll (__const char *__restrict __nptr, char **__restrict __endptr,
  int __base)
{
  return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
strtoull (__const char * __restrict __nptr, char **__restrict __endptr,
   int __base)
{
  return __strtoull_internal (__nptr, __endptr, __base, 0);
}


extern __inline double
atof (__const char *__nptr)
{
  return strtod (__nptr, (char **) ((void *)0));
}
extern __inline int
atoi (__const char *__nptr)
{
  return (int) strtol (__nptr, (char **) ((void *)0), 10);
}
extern __inline long int
atol (__const char *__nptr)
{
  return strtol (__nptr, (char **) ((void *)0), 10);
}


__extension__ extern __inline long long int
atoll (__const char *__nptr)
{
  return strtoll (__nptr, (char **) ((void *)0), 10);
}
# 384 "/usr/include/stdlib.h" 3 4
extern char *l64a (long int __n) ;


extern long int a64l (__const char *__s) ;
# 397 "/usr/include/stdlib.h" 3 4
extern long int random (void) ;


extern void srandom (unsigned int __seed) ;





extern char *initstate (unsigned int __seed, char *__statebuf,
   size_t __statelen) ;



extern char *setstate (char *__statebuf) ;







struct random_data
  {
    int32_t *fptr;
    int32_t *rptr;
    int32_t *state;
    int rand_type;
    int rand_deg;
    int rand_sep;
    int32_t *end_ptr;
  };

extern int random_r (struct random_data *__restrict __buf,
       int32_t *__restrict __result) ;

extern int srandom_r (unsigned int __seed, struct random_data *__buf) ;

extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
   size_t __statelen,
   struct random_data *__restrict __buf) ;

extern int setstate_r (char *__restrict __statebuf,
         struct random_data *__restrict __buf) ;





extern int rand (void) ;

extern void srand (unsigned int __seed) ;



extern int rand_r (unsigned int *__seed) ;







extern double drand48 (void) ;
extern double erand48 (unsigned short int __xsubi[3]) ;


extern long int lrand48 (void) ;
extern long int nrand48 (unsigned short int __xsubi[3]) ;


extern long int mrand48 (void) ;
extern long int jrand48 (unsigned short int __xsubi[3]) ;


extern void srand48 (long int __seedval) ;
extern unsigned short int *seed48 (unsigned short int __seed16v[3]) ;
extern void lcong48 (unsigned short int __param[7]) ;





struct drand48_data
  {
    unsigned short int __x[3];
    unsigned short int __old_x[3];
    unsigned short int __c;
    unsigned short int __init;
    unsigned long long int __a;
  };


extern int drand48_r (struct drand48_data *__restrict __buffer,
        double *__restrict __result) ;
extern int erand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        double *__restrict __result) ;


extern int lrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result) ;
extern int nrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result) ;


extern int mrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result) ;
extern int jrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result) ;


extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
     ;

extern int seed48_r (unsigned short int __seed16v[3],
       struct drand48_data *__buffer) ;

extern int lcong48_r (unsigned short int __param[7],
        struct drand48_data *__buffer) ;
# 527 "/usr/include/stdlib.h" 3 4
extern void *malloc (size_t __size) ;

extern void *calloc (size_t __nmemb, size_t __size)
     ;





extern void *realloc (void *__ptr, size_t __size) ;

extern void free (void *__ptr) ;



extern void cfree (void *__ptr) ;



# 1 "/usr/include/alloca.h" 1 3 4
# 25 "/usr/include/alloca.h" 3 4
# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 1 3 4
# 26 "/usr/include/alloca.h" 2 3 4







extern void *alloca (size_t __size) ;






# 547 "/usr/include/stdlib.h" 2 3 4




extern void *valloc (size_t __size) ;
# 561 "/usr/include/stdlib.h" 3 4
extern void abort (void) ;



extern int atexit (void (*__func) (void)) ;




extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
     ;





extern void exit (int __status) ;
# 587 "/usr/include/stdlib.h" 3 4
extern char *getenv (__const char *__name) ;



extern char *__secure_getenv (__const char *__name) ;





extern int putenv (char *__string) ;





extern int setenv (__const char *__name, __const char *__value, int __replace)
     ;


extern int unsetenv (__const char *__name) ;






extern int clearenv (void) ;
# 623 "/usr/include/stdlib.h" 3 4
extern char *mktemp (char *__template) ;







extern int mkstemp (char *__template) ;
# 650 "/usr/include/stdlib.h" 3 4
extern char *mkdtemp (char *__template) ;




extern int system (__const char *__command) ;
# 672 "/usr/include/stdlib.h" 3 4
extern char *realpath (__const char *__restrict __name,
         char *__restrict __resolved) ;






typedef int (*__compar_fn_t) (__const void *, __const void *);
# 689 "/usr/include/stdlib.h" 3 4
extern void *bsearch (__const void *__key, __const void *__base,
        size_t __nmemb, size_t __size, __compar_fn_t __compar);



extern void qsort (void *__base, size_t __nmemb, size_t __size,
     __compar_fn_t __compar);



extern int abs (int __x) ;
extern long int labs (long int __x) ;
# 710 "/usr/include/stdlib.h" 3 4
extern div_t div (int __numer, int __denom)
     ;
extern ldiv_t ldiv (long int __numer, long int __denom)
     ;
# 728 "/usr/include/stdlib.h" 3 4
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) ;




extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) ;




extern char *gcvt (double __value, int __ndigit, char *__buf) ;




extern char *qecvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign) ;
extern char *qfcvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign) ;
extern char *qgcvt (long double __value, int __ndigit, char *__buf) ;




extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) ;
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) ;

extern int qecvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len) ;
extern int qfcvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len) ;






extern int mblen (__const char *__s, size_t __n) ;


extern int mbtowc (wchar_t *__restrict __pwc,
     __const char *__restrict __s, size_t __n) ;


extern int wctomb (char *__s, wchar_t __wchar) ;



extern size_t mbstowcs (wchar_t *__restrict __pwcs,
   __const char *__restrict __s, size_t __n) ;

extern size_t wcstombs (char *__restrict __s,
   __const wchar_t *__restrict __pwcs, size_t __n)
     ;







extern int rpmatch (__const char *__response) ;
# 858 "/usr/include/stdlib.h" 3 4
extern int getloadavg (double __loadavg[], int __nelem) ;






# 374 "perl.h" 2
# 426 "perl.h"
# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 1 3 4
# 151 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 3 4
typedef int ptrdiff_t;
# 427 "perl.h" 2






# 1 "/usr/include/string.h" 1 3 4
# 28 "/usr/include/string.h" 3 4





# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 1 3 4
# 34 "/usr/include/string.h" 2 3 4



extern void *memcpy (void *__restrict __dest,
       __const void *__restrict __src, size_t __n) ;


extern void *memmove (void *__dest, __const void *__src, size_t __n)
     ;





extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
        int __c, size_t __n)
     ;




extern void *memset (void *__s, int __c, size_t __n) ;


extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
     ;


extern void *memchr (__const void *__s, int __c, size_t __n)
      ;
# 77 "/usr/include/string.h" 3 4
extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
     ;

extern char *strncpy (char *__restrict __dest,
        __const char *__restrict __src, size_t __n) ;


extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
     ;

extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
        size_t __n) ;


extern int strcmp (__const char *__s1, __const char *__s2)
     ;

extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
     ;


extern int strcoll (__const char *__s1, __const char *__s2)
     ;

extern size_t strxfrm (char *__restrict __dest,
         __const char *__restrict __src, size_t __n) ;
# 120 "/usr/include/string.h" 3 4
extern char *strdup (__const char *__s) ;
# 155 "/usr/include/string.h" 3 4
extern char *strchr (__const char *__s, int __c) ;

extern char *strrchr (__const char *__s, int __c) ;
# 167 "/usr/include/string.h" 3 4
extern size_t strcspn (__const char *__s, __const char *__reject)
     ;


extern size_t strspn (__const char *__s, __const char *__accept)
     ;

extern char *strpbrk (__const char *__s, __const char *__accept)
     ;

extern char *strstr (__const char *__haystack, __const char *__needle)
     ;
# 187 "/usr/include/string.h" 3 4
extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
     ;



extern char *__strtok_r (char *__restrict __s,
    __const char *__restrict __delim,
    char **__restrict __save_ptr) ;

extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
         char **__restrict __save_ptr) ;
# 218 "/usr/include/string.h" 3 4
extern size_t strlen (__const char *__s) ;
# 229 "/usr/include/string.h" 3 4
extern char *strerror (int __errnum) ;



extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) ;




extern void __bzero (void *__s, size_t __n) ;



extern void bcopy (__const void *__src, void *__dest, size_t __n) ;


extern void bzero (void *__s, size_t __n) ;


extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
     ;


extern char *index (__const char *__s, int __c) ;


extern char *rindex (__const char *__s, int __c) ;



extern int ffs (int __i) ;
# 272 "/usr/include/string.h" 3 4
extern int strcasecmp (__const char *__s1, __const char *__s2)
     ;


extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
     ;
# 294 "/usr/include/string.h" 3 4
extern char *strsep (char **__restrict __stringp,
       __const char *__restrict __delim) ;
# 357 "/usr/include/string.h" 3 4
# 1 "/usr/include/bits/string.h" 1 3 4
# 358 "/usr/include/string.h" 2 3 4


# 1 "/usr/include/bits/string2.h" 1 3 4
# 387 "/usr/include/bits/string2.h" 3 4
extern void *__rawmemchr (const void *__s, int __c);
# 917 "/usr/include/bits/string2.h" 3 4
extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
extern __inline size_t
__strcspn_c1 (__const char *__s, int __reject)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject)
    ++__result;
  return __result;
}

extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
         int __reject2);
extern __inline size_t
__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
  && __s[__result] != __reject2)
    ++__result;
  return __result;
}

extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
         int __reject2, int __reject3);
extern __inline size_t
__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
       int __reject3)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
  && __s[__result] != __reject2 && __s[__result] != __reject3)
    ++__result;
  return __result;
}
# 974 "/usr/include/bits/string2.h" 3 4
extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
extern __inline size_t
__strspn_c1 (__const char *__s, int __accept)
{
  register size_t __result = 0;

  while (__s[__result] == __accept)
    ++__result;
  return __result;
}

extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
        int __accept2);
extern __inline size_t
__strspn_c2 (__const char *__s, int __accept1, int __accept2)
{
  register size_t __result = 0;

  while (__s[__result] == __accept1 || __s[__result] == __accept2)
    ++__result;
  return __result;
}

extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
        int __accept2, int __accept3);
extern __inline size_t
__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
{
  register size_t __result = 0;

  while (__s[__result] == __accept1 || __s[__result] == __accept2
  || __s[__result] == __accept3)
    ++__result;
  return __result;
}
# 1031 "/usr/include/bits/string2.h" 3 4
extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
         int __accept2);
extern __inline char *
__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
{

  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
    ++__s;
  return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}

extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
         int __accept2, int __accept3);
extern __inline char *
__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
       int __accept3)
{

  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
  && *__s != __accept3)
    ++__s;
  return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
# 1083 "/usr/include/bits/string2.h" 3 4
extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
extern __inline char *
__strtok_r_1c (char *__s, char __sep, char **__nextp)
{
  char *__result;
  if (__s == ((void *)0))
    __s = *__nextp;
  while (*__s == __sep)
    ++__s;
  __result = ((void *)0);
  if (*__s != '\0')
    {
      __result = __s++;
      while (*__s != '\0')
 if (*__s++ == __sep)
   {
     __s[-1] = '\0';
     break;
   }
      *__nextp = __s;
    }
  return __result;
}
# 1115 "/usr/include/bits/string2.h" 3 4
extern char *__strsep_g (char **__stringp, __const char *__delim);
# 1133 "/usr/include/bits/string2.h" 3 4
extern __inline char *__strsep_1c (char **__s, char __reject);
extern __inline char *
__strsep_1c (char **__s, char __reject)
{
  register char *__retval = *__s;
  if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : strchr (__retval, __reject)))) != ((void *)0))
    *(*__s)++ = '\0';
  return __retval;
}

extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
extern __inline char *
__strsep_2c (char **__s, char __reject1, char __reject2)
{
  register char *__retval = *__s;
  if (__retval != ((void *)0))
    {
      register char *__cp = __retval;
      while (1)
 {
   if (*__cp == '\0')
     {
       __cp = ((void *)0);
   break;
     }
   if (*__cp == __reject1 || *__cp == __reject2)
     {
       *__cp++ = '\0';
       break;
     }
   ++__cp;
 }
      *__s = __cp;
    }
  return __retval;
}

extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
       char __reject3);
extern __inline char *
__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
{
  register char *__retval = *__s;
  if (__retval != ((void *)0))
    {
      register char *__cp = __retval;
      while (1)
 {
   if (*__cp == '\0')
     {
       __cp = ((void *)0);
   break;
     }
   if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
     {
       *__cp++ = '\0';
       break;
     }
   ++__cp;
 }
      *__s = __cp;
    }
  return __retval;
}
# 1214 "/usr/include/bits/string2.h" 3 4
extern char *__strdup (__const char *__string) ;
# 1233 "/usr/include/bits/string2.h" 3 4
extern char *__strndup (__const char *__string, size_t __n)
     ;
# 361 "/usr/include/string.h" 2 3 4




# 434 "perl.h" 2
# 537 "perl.h"
# 1 "/usr/include/sys/stat.h" 1 3 4
# 96 "/usr/include/sys/stat.h" 3 4


# 1 "/usr/include/bits/stat.h" 1 3 4
# 36 "/usr/include/bits/stat.h" 3 4
struct stat
  {
    __dev_t st_dev;
    unsigned short int __pad1;

    __ino_t st_ino;



    __mode_t st_mode;
    __nlink_t st_nlink;
    __uid_t st_uid;
    __gid_t st_gid;
    __dev_t st_rdev;
    unsigned short int __pad2;

    __off_t st_size;



    __blksize_t st_blksize;


    __blkcnt_t st_blocks;



    __time_t st_atime;
    unsigned long int __unused1;
    __time_t st_mtime;
    unsigned long int __unused2;
    __time_t st_ctime;
    unsigned long int __unused3;

    unsigned long int __unused4;
    unsigned long int __unused5;



  };
# 99 "/usr/include/sys/stat.h" 2 3 4
# 200 "/usr/include/sys/stat.h" 3 4
extern int stat (__const char *__restrict __file,
   struct stat *__restrict __buf) ;



extern int fstat (int __fd, struct stat *__buf) ;
# 228 "/usr/include/sys/stat.h" 3 4
extern int lstat (__const char *__restrict __file,
    struct stat *__restrict __buf) ;
# 249 "/usr/include/sys/stat.h" 3 4
extern int chmod (__const char *__file, __mode_t __mode) ;



extern int fchmod (int __fd, __mode_t __mode) ;





extern __mode_t umask (__mode_t __mask) ;
# 268 "/usr/include/sys/stat.h" 3 4
extern int mkdir (__const char *__path, __mode_t __mode) ;





extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev)
     ;




extern int mkfifo (__const char *__path, __mode_t __mode) ;
# 306 "/usr/include/sys/stat.h" 3 4
extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf) ;
extern int __xstat (int __ver, __const char *__filename,
      struct stat *__stat_buf) ;
extern int __lxstat (int __ver, __const char *__filename,
       struct stat *__stat_buf) ;
# 337 "/usr/include/sys/stat.h" 3 4
extern int __xmknod (int __ver, __const char *__path, __mode_t __mode,
       __dev_t *__dev) ;




extern __inline__ int stat (__const char *__path,
       struct stat *__statbuf)
{
  return __xstat (3, __path, __statbuf);
}


extern __inline__ int lstat (__const char *__path,
        struct stat *__statbuf)
{
  return __lxstat (3, __path, __statbuf);
}


extern __inline__ int fstat (int __fd, struct stat *__statbuf)
{
  return __fxstat (3, __fd, __statbuf);
}


extern __inline__ int mknod (__const char *__path, __mode_t __mode,
        __dev_t __dev)
{
  return __xmknod (1, __path, __mode, &__dev);
}
# 395 "/usr/include/sys/stat.h" 3 4

# 538 "perl.h" 2
# 566 "perl.h"
# 1 "/usr/include/sys/time.h" 1 3 4
# 26 "/usr/include/sys/time.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 27 "/usr/include/sys/time.h" 2 3 4

# 1 "/usr/include/bits/time.h" 1 3 4
# 29 "/usr/include/sys/time.h" 2 3 4
# 38 "/usr/include/sys/time.h" 3 4

# 56 "/usr/include/sys/time.h" 3 4
struct timezone
  {
    int tz_minuteswest;
    int tz_dsttime;
  };

typedef struct timezone *__restrict __timezone_ptr_t;
# 72 "/usr/include/sys/time.h" 3 4
extern int gettimeofday (struct timeval *__restrict __tv,
    __timezone_ptr_t __tz) ;




extern int settimeofday (__const struct timeval *__tv,
    __const struct timezone *__tz) ;





extern int adjtime (__const struct timeval *__delta,
      struct timeval *__olddelta) ;




enum __itimer_which
  {

    ITIMER_REAL = 0,


    ITIMER_VIRTUAL = 1,



    ITIMER_PROF = 2

  };



struct itimerval
  {

    struct timeval it_interval;

    struct timeval it_value;
  };






typedef int __itimer_which_t;




extern int getitimer (__itimer_which_t __which,
        struct itimerval *__value) ;




extern int setitimer (__itimer_which_t __which,
        __const struct itimerval *__restrict __new,
        struct itimerval *__restrict __old) ;



extern int utimes (__const char *__file, __const struct timeval __tvp[2])
     ;
# 171 "/usr/include/sys/time.h" 3 4

# 567 "perl.h" 2






# 1 "/usr/include/sys/times.h" 1 3 4
# 29 "/usr/include/sys/times.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 59 "/usr/include/time.h" 3 4
typedef __clock_t clock_t;
# 30 "/usr/include/sys/times.h" 2 3 4





struct tms
  {
    clock_t tms_utime;
    clock_t tms_stime;

    clock_t tms_cutime;
    clock_t tms_cstime;
  };






extern clock_t times (struct tms *__buffer) ;


# 574 "perl.h" 2






# 1 "/usr/include/errno.h" 1 3 4
# 32 "/usr/include/errno.h" 3 4




# 1 "/usr/include/bits/errno.h" 1 3 4
# 25 "/usr/include/bits/errno.h" 3 4
# 1 "/usr/include/linux/errno.h" 1 3 4



# 1 "/usr/include/asm/errno.h" 1 3 4
# 5 "/usr/include/linux/errno.h" 2 3 4
# 26 "/usr/include/bits/errno.h" 2 3 4
# 36 "/usr/include/bits/errno.h" 3 4
extern int errno;


extern int *__errno_location (void) ;
# 37 "/usr/include/errno.h" 2 3 4
# 59 "/usr/include/errno.h" 3 4

# 581 "perl.h" 2
# 618 "perl.h"
 char *strerror (int);
# 637 "perl.h"
# 1 "/usr/include/sys/ioctl.h" 1 3 4
# 24 "/usr/include/sys/ioctl.h" 3 4



# 1 "/usr/include/bits/ioctls.h" 1 3 4
# 24 "/usr/include/bits/ioctls.h" 3 4
# 1 "/usr/include/asm/ioctls.h" 1 3 4



# 1 "/usr/include/asm/ioctl.h" 1 3 4
# 5 "/usr/include/asm/ioctls.h" 2 3 4
# 25 "/usr/include/bits/ioctls.h" 2 3 4
# 28 "/usr/include/sys/ioctl.h" 2 3 4


# 1 "/usr/include/bits/ioctl-types.h" 1 3 4
# 28 "/usr/include/bits/ioctl-types.h" 3 4
struct winsize
  {
    unsigned short int ws_row;
    unsigned short int ws_col;
    unsigned short int ws_xpixel;
    unsigned short int ws_ypixel;
  };


struct termio
  {
    unsigned short int c_iflag;
    unsigned short int c_oflag;
    unsigned short int c_cflag;
    unsigned short int c_lflag;
    unsigned char c_line;
    unsigned char c_cc[8];
};
# 31 "/usr/include/sys/ioctl.h" 2 3 4






# 1 "/usr/include/sys/ttydefaults.h" 1 3 4
# 38 "/usr/include/sys/ioctl.h" 2 3 4




extern int ioctl (int __fd, unsigned long int __request, ...) ;


# 638 "perl.h" 2
# 660 "perl.h"
# 1 "/usr/include/dirent.h" 1 3 4
# 28 "/usr/include/dirent.h" 3 4

# 62 "/usr/include/dirent.h" 3 4
# 1 "/usr/include/bits/dirent.h" 1 3 4
# 23 "/usr/include/bits/dirent.h" 3 4
struct dirent
  {

    __ino_t d_ino;
    __off_t d_off;




    unsigned short int d_reclen;
    unsigned char d_type;
    char d_name[256];
  };
# 63 "/usr/include/dirent.h" 2 3 4
# 98 "/usr/include/dirent.h" 3 4
enum
  {
    DT_UNKNOWN = 0,

    DT_FIFO = 1,

    DT_CHR = 2,

    DT_DIR = 4,

    DT_BLK = 6,

    DT_REG = 8,

    DT_LNK = 10,

    DT_SOCK = 12,

    DT_WHT = 14

  };
# 128 "/usr/include/dirent.h" 3 4
typedef struct __dirstream DIR;



extern DIR *opendir (__const char *__name) ;



extern int closedir (DIR *__dirp) ;
# 146 "/usr/include/dirent.h" 3 4
extern struct dirent *readdir (DIR *__dirp) ;
# 163 "/usr/include/dirent.h" 3 4
extern int readdir_r (DIR *__restrict __dirp,
        struct dirent *__restrict __entry,
        struct dirent **__restrict __result) ;
# 186 "/usr/include/dirent.h" 3 4
extern void rewinddir (DIR *__dirp) ;





extern void seekdir (DIR *__dirp, long int __pos) ;


extern long int telldir (DIR *__dirp) ;





extern int dirfd (DIR *__dirp) ;







# 1 "/usr/include/bits/posix1_lim.h" 1 3 4
# 126 "/usr/include/bits/posix1_lim.h" 3 4
# 1 "/usr/include/bits/local_lim.h" 1 3 4
# 36 "/usr/include/bits/local_lim.h" 3 4
# 1 "/usr/include/linux/limits.h" 1 3 4
# 37 "/usr/include/bits/local_lim.h" 2 3 4
# 127 "/usr/include/bits/posix1_lim.h" 2 3 4
# 210 "/usr/include/dirent.h" 2 3 4
# 220 "/usr/include/dirent.h" 3 4
# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/stddef.h" 1 3 4
# 221 "/usr/include/dirent.h" 2 3 4






extern int scandir (__const char *__restrict __dir,
      struct dirent ***__restrict __namelist,
      int (*__selector) (__const struct dirent *),
      int (*__cmp) (__const void *, __const void *)) ;
# 255 "/usr/include/dirent.h" 3 4
extern int alphasort (__const void *__e1, __const void *__e2)
     ;
# 300 "/usr/include/dirent.h" 3 4
extern __ssize_t getdirentries (int __fd, char *__restrict __buf,
    size_t __nbytes,
    __off_t *__restrict __basep) ;
# 323 "/usr/include/dirent.h" 3 4

# 661 "perl.h" 2
# 840 "perl.h"
    typedef long IV;
    typedef unsigned long UV;
# 860 "perl.h"
# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/limits.h" 1 3 4
# 11 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/limits.h" 3 4
# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/syslimits.h" 1 3 4






# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/limits.h" 1 3 4
# 122 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/limits.h" 3 4
# 1 "/usr/include/limits.h" 1 3 4
# 148 "/usr/include/limits.h" 3 4
# 1 "/usr/include/bits/posix2_lim.h" 1 3 4
# 149 "/usr/include/limits.h" 2 3 4
# 123 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/limits.h" 2 3 4
# 8 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/syslimits.h" 2 3 4
# 12 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/limits.h" 2 3 4
# 861 "perl.h" 2
# 1041 "perl.h"
typedef size_t STRLEN;

typedef struct op OP;
typedef struct cop COP;
typedef struct unop UNOP;
typedef struct binop BINOP;
typedef struct listop LISTOP;
typedef struct logop LOGOP;
typedef struct condop CONDOP;
typedef struct pmop PMOP;
typedef struct svop SVOP;
typedef struct gvop GVOP;
typedef struct pvop PVOP;
typedef struct loop LOOP;

typedef struct Outrec Outrec;
typedef struct interpreter PerlInterpreter;

typedef struct ff FF;

typedef struct sv SV;
typedef struct av AV;
typedef struct hv HV;
typedef struct cv CV;
typedef struct regexp REGEXP;
typedef struct gp GP;
typedef struct gv GV;
typedef struct io IO;
typedef struct context PERL_CONTEXT;
typedef struct block BLOCK;

typedef struct magic MAGIC;
typedef struct xrv XRV;
typedef struct xpv XPV;
typedef struct xpviv XPVIV;
typedef struct xpvuv XPVUV;
typedef struct xpvnv XPVNV;
typedef struct xpvmg XPVMG;
typedef struct xpvlv XPVLV;
typedef struct xpvav XPVAV;
typedef struct xpvhv XPVHV;
typedef struct xpvgv XPVGV;
typedef struct xpvcv XPVCV;
typedef struct xpvbm XPVBM;
typedef struct xpvfm XPVFM;
typedef struct xpvio XPVIO;
typedef struct mgvtbl MGVTBL;
typedef union any ANY;

# 1 "handy.h" 1
# 108 "handy.h"
typedef char I8;
typedef unsigned char U8;





typedef short I16;
typedef unsigned short U16;
# 130 "handy.h"
  typedef long I32;
  typedef unsigned long U32;
# 259 "handy.h"
typedef U16 line_t;
# 1091 "perl.h" 2




typedef I32 (*filter_t) (int, SV *, int);
# 1121 "perl.h"
# 1 "unixish.h" 1
# 93 "unixish.h"
# 1 "/usr/include/signal.h" 1 3 4
# 31 "/usr/include/signal.h" 3 4


# 1 "/usr/include/bits/sigset.h" 1 3 4
# 103 "/usr/include/bits/sigset.h" 3 4
extern int __sigismember (__const __sigset_t *, int);
extern int __sigaddset (__sigset_t *, int);
extern int __sigdelset (__sigset_t *, int);
# 117 "/usr/include/bits/sigset.h" 3 4
extern __inline int __sigismember (__const __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return (__set->__val[__word] & __mask) ? 1 : 0; }
extern __inline int __sigaddset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] |= __mask), 0); }
extern __inline int __sigdelset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] &= ~__mask), 0); }
# 34 "/usr/include/signal.h" 2 3 4






typedef __sig_atomic_t sig_atomic_t;
# 56 "/usr/include/signal.h" 3 4
# 1 "/usr/include/bits/signum.h" 1 3 4
# 57 "/usr/include/signal.h" 2 3 4
# 71 "/usr/include/signal.h" 3 4
typedef void (*__sighandler_t) (int);




extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
     ;
# 87 "/usr/include/signal.h" 3 4
extern __sighandler_t signal (int __sig, __sighandler_t __handler) ;
# 110 "/usr/include/signal.h" 3 4
extern int kill (__pid_t __pid, int __sig) ;






extern int killpg (__pid_t __pgrp, int __sig) ;



extern int raise (int __sig) ;



extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) ;
extern int gsignal (int __sig) ;




extern void psignal (int __sig, __const char *__s) ;
# 140 "/usr/include/signal.h" 3 4
extern int __sigpause (int __sig_or_mask, int __is_sig) ;




extern int sigpause (int __mask) ;
# 168 "/usr/include/signal.h" 3 4
extern int sigblock (int __mask) ;


extern int sigsetmask (int __mask) ;


extern int siggetmask (void) ;
# 188 "/usr/include/signal.h" 3 4
typedef __sighandler_t sig_t;







# 1 "/usr/include/time.h" 1 3 4
# 197 "/usr/include/signal.h" 2 3 4


# 1 "/usr/include/bits/siginfo.h" 1 3 4
# 25 "/usr/include/bits/siginfo.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 26 "/usr/include/bits/siginfo.h" 2 3 4







typedef union sigval
  {
    int sival_int;
    void *sival_ptr;
  } sigval_t;
# 51 "/usr/include/bits/siginfo.h" 3 4
typedef struct siginfo
  {
    int si_signo;
    int si_errno;

    int si_code;

    union
      {
 int _pad[((128 / sizeof (int)) - 3)];


 struct
   {
     __pid_t si_pid;
     __uid_t si_uid;
   } _kill;


 struct
   {
     unsigned int _timer1;
     unsigned int _timer2;
   } _timer;


 struct
   {
     __pid_t si_pid;
     __uid_t si_uid;
     sigval_t si_sigval;
   } _rt;


 struct
   {
     __pid_t si_pid;
     __uid_t si_uid;
     int si_status;
     __clock_t si_utime;
     __clock_t si_stime;
   } _sigchld;


 struct
   {
     void *si_addr;
   } _sigfault;


 struct
   {
     long int si_band;
     int si_fd;
   } _sigpoll;
      } _sifields;
  } siginfo_t;
# 128 "/usr/include/bits/siginfo.h" 3 4
enum
{
  SI_ASYNCNL = -6,

  SI_SIGIO,

  SI_ASYNCIO,

  SI_MESGQ,

  SI_TIMER,

  SI_QUEUE,

  SI_USER,

  SI_KERNEL = 0x80

};



enum
{
  ILL_ILLOPC = 1,

  ILL_ILLOPN,

  ILL_ILLADR,

  ILL_ILLTRP,

  ILL_PRVOPC,

  ILL_PRVREG,

  ILL_COPROC,

  ILL_BADSTK

};


enum
{
  FPE_INTDIV = 1,

  FPE_INTOVF,

  FPE_FLTDIV,

  FPE_FLTOVF,

  FPE_FLTUND,

  FPE_FLTRES,

  FPE_FLTINV,

  FPE_FLTSUB

};


enum
{
  SEGV_MAPERR = 1,

  SEGV_ACCERR

};


enum
{
  BUS_ADRALN = 1,

  BUS_ADRERR,

  BUS_OBJERR

};


enum
{
  TRAP_BRKPT = 1,

  TRAP_TRACE

};


enum
{
  CLD_EXITED = 1,

  CLD_KILLED,

  CLD_DUMPED,

  CLD_TRAPPED,

  CLD_STOPPED,

  CLD_CONTINUED

};


enum
{
  POLL_IN = 1,

  POLL_OUT,

  POLL_MSG,

  POLL_ERR,

  POLL_PRI,

  POLL_HUP

};
# 271 "/usr/include/bits/siginfo.h" 3 4
struct __pthread_attr_s;

typedef struct sigevent
  {
    sigval_t sigev_value;
    int sigev_signo;
    int sigev_notify;

    union
      {
 int _pad[((64 / sizeof (int)) - 3)];

 struct
   {
     void (*_function) (sigval_t);
     struct __pthread_attr_s *_attribute;
   } _sigev_thread;
      } _sigev_un;
  } sigevent_t;






enum
{
  SIGEV_SIGNAL = 0,

  SIGEV_NONE,

  SIGEV_THREAD

};
# 200 "/usr/include/signal.h" 2 3 4



extern int sigemptyset (sigset_t *__set) ;


extern int sigfillset (sigset_t *__set) ;


extern int sigaddset (sigset_t *__set, int __signo) ;


extern int sigdelset (sigset_t *__set, int __signo) ;


extern int sigismember (__const sigset_t *__set, int __signo) ;
# 232 "/usr/include/signal.h" 3 4
# 1 "/usr/include/bits/sigaction.h" 1 3 4
# 25 "/usr/include/bits/sigaction.h" 3 4
struct sigaction
  {


    union
      {

 __sighandler_t sa_handler;

 void (*sa_sigaction) (int, siginfo_t *, void *);
      }
    __sigaction_handler;







    __sigset_t sa_mask;


    int sa_flags;


    void (*sa_restorer) (void);
  };
# 233 "/usr/include/signal.h" 2 3 4


extern int sigprocmask (int __how, __const sigset_t *__restrict __set,
   sigset_t *__restrict __oset) ;



extern int sigsuspend (__const sigset_t *__set) ;


extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
        struct sigaction *__restrict __oact) ;


extern int sigpending (sigset_t *__set) ;



extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
     ;



extern int sigwaitinfo (__const sigset_t *__restrict __set,
   siginfo_t *__restrict __info) ;



extern int sigtimedwait (__const sigset_t *__restrict __set,
    siginfo_t *__restrict __info,
    __const struct timespec *__restrict __timeout)
     ;



extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val)
     ;
# 278 "/usr/include/signal.h" 3 4
extern __const char *__const _sys_siglist[64];
extern __const char *__const sys_siglist[64];


struct sigvec
  {
    __sighandler_t sv_handler;
    int sv_mask;

    int sv_flags;

  };
# 302 "/usr/include/signal.h" 3 4
extern int sigvec (int __sig, __const struct sigvec *__vec,
     struct sigvec *__ovec) ;



# 1 "/usr/include/bits/sigcontext.h" 1 3 4
# 28 "/usr/include/bits/sigcontext.h" 3 4
# 1 "/usr/include/asm/sigcontext.h" 1 3 4
# 18 "/usr/include/asm/sigcontext.h" 3 4
struct _fpreg {
 unsigned short significand[4];
 unsigned short exponent;
};

struct _fpxreg {
 unsigned short significand[4];
 unsigned short exponent;
 unsigned short padding[3];
};

struct _xmmreg {
 unsigned long element[4];
};

struct _fpstate {

 unsigned long cw;
 unsigned long sw;
 unsigned long tag;
 unsigned long ipoff;
 unsigned long cssel;
 unsigned long dataoff;
 unsigned long datasel;
 struct _fpreg _st[8];
 unsigned short status;
 unsigned short magic;


 unsigned long _fxsr_env[6];
 unsigned long mxcsr;
 unsigned long reserved;
 struct _fpxreg _fxsr_st[8];
 struct _xmmreg _xmm[8];
 unsigned long padding[56];
};



struct sigcontext {
 unsigned short gs, __gsh;
 unsigned short fs, __fsh;
 unsigned short es, __esh;
 unsigned short Perl_ds, __dsh;
 unsigned long edi;
 unsigned long esi;
 unsigned long ebp;
 unsigned long esp;
 unsigned long ebx;
 unsigned long edx;
 unsigned long ecx;
 unsigned long eax;
 unsigned long trapno;
 unsigned long err;
 unsigned long eip;
 unsigned short cs, __csh;
 unsigned long eflags;
 unsigned long esp_at_signal;
 unsigned short ss, __ssh;
 struct _fpstate * fpstate;
 unsigned long oldmask;
 unsigned long cr2;
};
# 29 "/usr/include/bits/sigcontext.h" 2 3 4
# 308 "/usr/include/signal.h" 2 3 4


extern int sigreturn (struct sigcontext *__scp) ;
# 320 "/usr/include/signal.h" 3 4
extern int siginterrupt (int __sig, int __interrupt) ;

# 1 "/usr/include/bits/sigstack.h" 1 3 4
# 26 "/usr/include/bits/sigstack.h" 3 4
struct sigstack
  {
    void *ss_sp;
    int ss_onstack;
  };



enum
{
  SS_ONSTACK = 1,

  SS_DISABLE

};
# 50 "/usr/include/bits/sigstack.h" 3 4
typedef struct sigaltstack
  {
    void *ss_sp;
    int ss_flags;
    size_t ss_size;
  } stack_t;
# 323 "/usr/include/signal.h" 2 3 4







extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) ;



extern int sigaltstack (__const struct sigaltstack *__restrict __ss,
   struct sigaltstack *__restrict __oss) ;
# 358 "/usr/include/signal.h" 3 4
# 1 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/bits/sigthread.h" 1 3 4
# 40 "/tmp_amd/qin/import/1/qiongc/gcc-ssa/lib/gcc-lib/i686-pc-linux-gnu/3.5-tree-ssa/include/bits/sigthread.h" 3 4
extern int pthread_sigmask (int __how,
       __const __sigset_t *__restrict __newmask,
       __sigset_t *__restrict __oldmask);


extern int pthread_kill (pthread_t __thr, int __signo) ;
# 359 "/usr/include/signal.h" 2 3 4






extern int __libc_current_sigrtmin (void) ;

extern int __libc_current_sigrtmax (void) ;




# 94 "unixish.h" 2
# 1122 "perl.h" 2
# 1248 "perl.h"
union any {
    void* any_ptr;
    I32 any_i32;
    IV any_iv;
    long any_long;
    void (*any_dptr) (void*);
};
# 1268 "perl.h"
# 1 "regexp.h" 1
# 12 "regexp.h"
struct regnode {
    U8 flags;
    U8 type;
    U16 next_off;
};

typedef struct regnode regnode;

struct reg_data {
    U32 count;
    U8 *what;
    void* data[1];
};

struct reg_substr_datum {
    I32 min_offset;
    I32 max_offset;
    SV *substr;
};

struct reg_substr_data {
    struct reg_substr_datum data[3];
};

typedef struct regexp {
 I32 refcnt;
 char **startp;
 char **endp;
 regnode *regstclass;
 I32 minlen;
 I32 prelen;
 U32 nparens;
 U32 lastparen;
 char *precomp;
 char *subbase;
 char *subbeg;
 char *subend;
 U16 naughty;
 U16 reganch;
# 62 "regexp.h"
        struct reg_substr_data *substrs;

        struct reg_data *data;
 regnode program[1];
} regexp;
# 1269 "perl.h" 2
# 1 "sv.h" 1
# 14 "sv.h"
typedef enum {
 SVt_NULL,
 SVt_IV,
 SVt_NV,
 SVt_RV,
 SVt_PV,
 SVt_PVIV,
 SVt_PVNV,
 SVt_PVMG,
 SVt_PVBM,
 SVt_PVLV,
 SVt_PVAV,
 SVt_PVHV,
 SVt_PVCV,
 SVt_PVGV,
 SVt_PVFM,
 SVt_PVIO
} svtype;



struct sv {
    void* sv_any;
    U32 sv_refcnt;
    U32 sv_flags;
};

struct gv {
    XPVGV* sv_any;
    U32 sv_refcnt;
    U32 sv_flags;
};

struct cv {
    XPVCV* sv_any;
    U32 sv_refcnt;
    U32 sv_flags;
};

struct av {
    XPVAV* sv_any;
    U32 sv_refcnt;
    U32 sv_flags;
};

struct hv {
    XPVHV* sv_any;
    U32 sv_refcnt;
    U32 sv_flags;
};

struct io {
    XPVIO* sv_any;
    U32 sv_refcnt;
    U32 sv_flags;
};
# 168 "sv.h"
struct xrv {
    SV * xrv_rv;
};

struct xpv {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
};

struct xpviv {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xiv_iv;
};

struct xpvuv {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    UV xuv_uv;
};

struct xpvnv {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xiv_iv;
    double xnv_nv;
};


struct xpvmg {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xiv_iv;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;
};

struct xpvlv {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xiv_iv;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;

    STRLEN xlv_targoff;
    STRLEN xlv_targlen;
    SV* xlv_targ;
    char xlv_type;
};

struct xpvgv {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xiv_iv;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;

    GP* xgv_gp;
    char* xgv_name;
    STRLEN xgv_namelen;
    HV* xgv_stash;
    U8 xgv_flags;
};

struct xpvbm {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xiv_iv;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;

    I32 xbm_useful;
    U16 xbm_previous;
    U8 xbm_rare;
};



typedef U16 cv_flags_t;

struct xpvfm {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xiv_iv;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;

    HV * xcv_stash;
    OP * xcv_start;
    OP * xcv_root;
    void (*xcv_xsub)(CV* );
    ANY xcv_xsubany;
    GV * xcv_gv;
    GV * xcv_filegv;
    long xcv_depth;
    AV * xcv_padlist;
    CV * xcv_outside;




    cv_flags_t xcv_flags;

    I32 xfm_lines;
};

struct xpvio {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xiv_iv;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;

    FILE * xio_ifp;
    FILE * xio_ofp;
    DIR * xio_dirp;
    long xio_lines;
    long xio_page;
    long xio_page_len;
    long xio_lines_left;
    char * xio_top_name;
    GV * xio_top_gv;
    char * xio_fmt_name;
    GV * xio_fmt_gv;
    char * xio_bottom_name;
    GV * xio_bottom_gv;
    short xio_subprocess;
    char xio_type;
    char xio_flags;
};
# 1270 "perl.h" 2
# 1 "util.h" 1
# 1271 "perl.h" 2
# 1 "form.h" 1
# 1272 "perl.h" 2
# 1 "gv.h" 1
# 10 "gv.h"
struct gp {
    SV * gp_sv;
    U32 gp_refcnt;
    struct io * gp_io;
    CV * gp_form;
    AV * gp_av;
    HV * gp_hv;
    GV * gp_egv;
    CV * gp_cv;
    U32 gp_cvgen;
    I32 gp_lastexpr;
    line_t gp_line;
    GV * gp_filegv;
};
# 1273 "perl.h" 2
# 1 "cv.h" 1
# 12 "cv.h"
struct xpvcv {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xof_off;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;

    HV * xcv_stash;
    OP * xcv_start;
    OP * xcv_root;
    void (*xcv_xsub) (CV* );
    ANY xcv_xsubany;
    GV * xcv_gv;
    GV * xcv_filegv;
    long xcv_depth;
    AV * xcv_padlist;
    CV * xcv_outside;




    cv_flags_t xcv_flags;
};
# 1274 "perl.h" 2
# 1 "opcode.h" 1





typedef enum {
 OP_NULL,
 OP_STUB,
 OP_SCALAR,
 OP_PUSHMARK,
 OP_WANTARRAY,
 OP_CONST,
 OP_GVSV,
 OP_GV,
 OP_GELEM,
 OP_PADSV,
 OP_PADAV,
 OP_PADHV,
 OP_PADANY,
 OP_PUSHRE,
 OP_RV2GV,
 OP_RV2SV,
 OP_AV2ARYLEN,
 OP_RV2CV,
 OP_ANONCODE,
 OP_PROTOTYPE,
 OP_REFGEN,
 OP_SREFGEN,
 OP_REF,
 OP_BLESS,
 OP_BACKTICK,
 OP_GLOB,
 OP_READLINE,
 OP_RCATLINE,
 OP_REGCMAYBE,
 OP_REGCRESET,
 OP_REGCOMP,
 OP_MATCH,
 OP_QR,
 OP_SUBST,
 OP_SUBSTCONT,
 OP_TRANS,
 OP_SASSIGN,
 OP_AASSIGN,
 OP_CHOP,
 OP_SCHOP,
 OP_CHOMP,
 OP_SCHOMP,
 OP_DEFINED,
 OP_UNDEF,
 OP_STUDY,
 OP_POS,
 OP_PREINC,
 OP_I_PREINC,
 OP_PREDEC,
 OP_I_PREDEC,
 OP_POSTINC,
 OP_I_POSTINC,
 OP_POSTDEC,
 OP_I_POSTDEC,
 OP_POW,
 OP_MULTIPLY,
 OP_I_MULTIPLY,
 OP_DIVIDE,
 OP_I_DIVIDE,
 OP_MODULO,
 OP_I_MODULO,
 OP_REPEAT,
 OP_ADD,
 OP_I_ADD,
 OP_SUBTRACT,
 OP_I_SUBTRACT,
 OP_CONCAT,
 OP_STRINGIFY,
 OP_LEFT_SHIFT,
 OP_RIGHT_SHIFT,
 OP_LT,
 OP_I_LT,
 OP_GT,
 OP_I_GT,
 OP_LE,
 OP_I_LE,
 OP_GE,
 OP_I_GE,
 OP_EQ,
 OP_I_EQ,
 OP_NE,
 OP_I_NE,
 OP_NCMP,
 OP_I_NCMP,
 OP_SLT,
 OP_SGT,
 OP_SLE,
 OP_SGE,
 OP_SEQ,
 OP_SNE,
 OP_SCMP,
 OP_BIT_AND,
 OP_BIT_XOR,
 OP_BIT_OR,
 OP_NEGATE,
 OP_I_NEGATE,
 OP_NOT,
 OP_COMPLEMENT,
 OP_ATAN2,
 OP_SIN,
 OP_COS,
 OP_RAND,
 OP_SRAND,
 OP_EXP,
 OP_LOG,
 OP_SQRT,
 OP_INT,
 OP_HEX,
 OP_OCT,
 OP_ABS,
 OP_LENGTH,
 OP_SUBSTR,
 OP_VEC,
 OP_INDEX,
 OP_RINDEX,
 OP_SPRINTF,
 OP_FORMLINE,
 OP_ORD,
 OP_CHR,
 OP_CRYPT,
 OP_UCFIRST,
 OP_LCFIRST,
 OP_UC,
 OP_LC,
 OP_QUOTEMETA,
 OP_RV2AV,
 OP_AELEMFAST,
 OP_AELEM,
 OP_ASLICE,
 OP_EACH,
 OP_VALUES,
 OP_KEYS,
 OP_DELETE,
 OP_EXISTS,
 OP_RV2HV,
 OP_HELEM,
 OP_HSLICE,
 OP_UNPACK,
 OP_PACK,
 OP_SPLIT,
 OP_JOIN,
 OP_LIST,
 OP_LSLICE,
 OP_ANONLIST,
 OP_ANONHASH,
 OP_SPLICE,
 OP_PUSH,
 OP_POP,
 OP_SHIFT,
 OP_UNSHIFT,
 OP_SORT,
 OP_REVERSE,
 OP_GREPSTART,
 OP_GREPWHILE,
 OP_MAPSTART,
 OP_MAPWHILE,
 OP_RANGE,
 OP_FLIP,
 OP_FLOP,
 OP_AND,
 OP_OR,
 OP_XOR,
 OP_COND_EXPR,
 OP_ANDASSIGN,
 OP_ORASSIGN,
 OP_METHOD,
 OP_ENTERSUB,
 OP_LEAVESUB,
 OP_CALLER,
 OP_WARN,
 OP_DIE,
 OP_RESET,
 OP_LINESEQ,
 OP_NEXTSTATE,
 OP_DBSTATE,
 OP_UNSTACK,
 OP_ENTER,
 OP_LEAVE,
 OP_SCOPE,
 OP_ENTERITER,
 OP_ITER,
 OP_ENTERLOOP,
 OP_LEAVELOOP,
 OP_RETURN,
 OP_LAST,
 OP_NEXT,
 OP_REDO,
 OP_DUMP,
 OP_GOTO,
 OP_EXIT,
 OP_OPEN,
 OP_CLOSE,
 OP_PIPE_OP,
 OP_FILENO,
 OP_UMASK,
 OP_BINMODE,
 OP_TIE,
 OP_UNTIE,
 OP_TIED,
 OP_DBMOPEN,
 OP_DBMCLOSE,
 OP_SSELECT,
 OP_SELECT,
 OP_GETC,
 OP_READ,
 OP_ENTERWRITE,
 OP_LEAVEWRITE,
 OP_PRTF,
 OP_PRINT,
 OP_SYSOPEN,
 OP_SYSSEEK,
 OP_SYSREAD,
 OP_SYSWRITE,
 OP_SEND,
 OP_RECV,
 OP_EOF,
 OP_TELL,
 OP_SEEK,
 OP_TRUNCATE,
 OP_FCNTL,
 OP_IOCTL,
 OP_FLOCK,
 OP_SOCKET,
 OP_SOCKPAIR,
 OP_BIND,
 OP_CONNECT,
 OP_LISTEN,
 OP_ACCEPT,
 OP_SHUTDOWN,
 OP_GSOCKOPT,
 OP_SSOCKOPT,
 OP_GETSOCKNAME,
 OP_GETPEERNAME,
 OP_LSTAT,
 OP_STAT,
 OP_FTRREAD,
 OP_FTRWRITE,
 OP_FTREXEC,
 OP_FTEREAD,
 OP_FTEWRITE,
 OP_FTEEXEC,
 OP_FTIS,
 OP_FTEOWNED,
 OP_FTROWNED,
 OP_FTZERO,
 OP_FTSIZE,
 OP_FTMTIME,
 OP_FTATIME,
 OP_FTCTIME,
 OP_FTSOCK,
 OP_FTCHR,
 OP_FTBLK,
 OP_FTFILE,
 OP_FTDIR,
 OP_FTPIPE,
 OP_FTLINK,
 OP_FTSUID,
 OP_FTSGID,
 OP_FTSVTX,
 OP_FTTTY,
 OP_FTTEXT,
 OP_FTBINARY,
 OP_CHDIR,
 OP_CHOWN,
 OP_CHROOT,
 OP_UNLINK,
 OP_CHMOD,
 OP_UTIME,
 OP_RENAME,
 OP_LINK,
 OP_SYMLINK,
 OP_READLINK,
 OP_MKDIR,
 OP_RMDIR,
 OP_OPEN_DIR,
 OP_READDIR,
 OP_TELLDIR,
 OP_SEEKDIR,
 OP_REWINDDIR,
 OP_CLOSEDIR,
 OP_FORK,
 OP_WAIT,
 OP_WAITPID,
 OP_SYSTEM,
 OP_EXEC,
 OP_KILL,
 OP_GETPPID,
 OP_GETPGRP,
 OP_SETPGRP,
 OP_GETPRIORITY,
 OP_SETPRIORITY,
 OP_TIME,
 OP_TMS,
 OP_LOCALTIME,
 OP_GMTIME,
 OP_ALARM,
 OP_SLEEP,
 OP_SHMGET,
 OP_SHMCTL,
 OP_SHMREAD,
 OP_SHMWRITE,
 OP_MSGGET,
 OP_MSGCTL,
 OP_MSGSND,
 OP_MSGRCV,
 OP_SEMGET,
 OP_SEMCTL,
 OP_SEMOP,
 OP_REQUIRE,
 OP_DOFILE,
 OP_ENTEREVAL,
 OP_LEAVEEVAL,
 OP_ENTERTRY,
 OP_LEAVETRY,
 OP_GHBYNAME,
 OP_GHBYADDR,
 OP_GHOSTENT,
 OP_GNBYNAME,
 OP_GNBYADDR,
 OP_GNETENT,
 OP_GPBYNAME,
 OP_GPBYNUMBER,
 OP_GPROTOENT,
 OP_GSBYNAME,
 OP_GSBYPORT,
 OP_GSERVENT,
 OP_SHOSTENT,
 OP_SNETENT,
 OP_SPROTOENT,
 OP_SSERVENT,
 OP_EHOSTENT,
 OP_ENETENT,
 OP_EPROTOENT,
 OP_ESERVENT,
 OP_GPWNAM,
 OP_GPWUID,
 OP_GPWENT,
 OP_SPWENT,
 OP_EPWENT,
 OP_GGRNAM,
 OP_GGRGID,
 OP_GGRENT,
 OP_SGRENT,
 OP_EGRENT,
 OP_GETLOGIN,
 OP_SYSCALL,
 OP_LOCK,
 OP_THREADSV,
 OP_max
} opcode;




extern char *Perl_op_name[];
# 716 "opcode.h"
extern char *Perl_op_desc[];
# 1071 "opcode.h"


OP * Perl_ck_anoncode (OP* o);
OP * Perl_ck_bitop (OP* o);
OP * Perl_ck_concat (OP* o);
OP * Perl_ck_delete (OP* o);
OP * Perl_ck_eof (OP* o);
OP * Perl_ck_eval (OP* o);
OP * Perl_ck_exec (OP* o);
OP * Perl_ck_exists (OP* o);
OP * Perl_ck_ftst (OP* o);
OP * Perl_ck_fun (OP* o);
OP * Perl_ck_fun_locale (OP* o);
OP * Perl_ck_glob (OP* o);
OP * Perl_ck_grep (OP* o);
OP * Perl_ck_index (OP* o);
OP * Perl_ck_lengthconst (OP* o);
OP * Perl_ck_lfun (OP* o);
OP * Perl_ck_listiob (OP* o);
OP * Perl_ck_match (OP* o);
OP * Perl_ck_null (OP* o);
OP * Perl_ck_repeat (OP* o);
OP * Perl_ck_require (OP* o);
OP * Perl_ck_rfun (OP* o);
OP * Perl_ck_rvconst (OP* o);
OP * Perl_ck_scmp (OP* o);
OP * Perl_ck_select (OP* o);
OP * Perl_ck_shift (OP* o);
OP * Perl_ck_sort (OP* o);
OP * Perl_ck_spair (OP* o);
OP * Perl_ck_split (OP* o);
OP * Perl_ck_subr (OP* o);
OP * Perl_ck_svconst (OP* o);
OP * Perl_ck_trunc (OP* o);

OP * Perl_pp_null (void);
OP * Perl_pp_stub (void);
OP * Perl_pp_scalar (void);
OP * Perl_pp_pushmark (void);
OP * Perl_pp_wantarray (void);
OP * Perl_pp_const (void);
OP * Perl_pp_gvsv (void);
OP * Perl_pp_gv (void);
OP * Perl_pp_gelem (void);
OP * Perl_pp_padsv (void);
OP * Perl_pp_padav (void);
OP * Perl_pp_padhv (void);
OP * Perl_pp_padany (void);
OP * Perl_pp_pushre (void);
OP * Perl_pp_rv2gv (void);
OP * Perl_pp_rv2sv (void);
OP * Perl_pp_av2arylen (void);
OP * Perl_pp_rv2cv (void);
OP * Perl_pp_anoncode (void);
OP * Perl_pp_prototype (void);
OP * Perl_pp_refgen (void);
OP * Perl_pp_srefgen (void);
OP * Perl_pp_ref (void);
OP * Perl_pp_bless (void);
OP * Perl_pp_backtick (void);
OP * Perl_pp_glob (void);
OP * Perl_pp_readline (void);
OP * Perl_pp_rcatline (void);
OP * Perl_pp_regcmaybe (void);
OP * Perl_pp_regcreset (void);
OP * Perl_pp_regcomp (void);
OP * Perl_pp_match (void);
OP * Perl_pp_qr (void);
OP * Perl_pp_subst (void);
OP * Perl_pp_substcont (void);
OP * Perl_pp_trans (void);
OP * Perl_pp_sassign (void);
OP * Perl_pp_aassign (void);
OP * Perl_pp_chop (void);
OP * Perl_pp_schop (void);
OP * Perl_pp_chomp (void);
OP * Perl_pp_schomp (void);
OP * Perl_pp_defined (void);
OP * Perl_pp_undef (void);
OP * Perl_pp_study (void);
OP * Perl_pp_pos (void);
OP * Perl_pp_preinc (void);
OP * Perl_pp_preinc (void);
OP * Perl_pp_predec (void);
OP * Perl_pp_predec (void);
OP * Perl_pp_postinc (void);
OP * Perl_pp_postinc (void);
OP * Perl_pp_postdec (void);
OP * Perl_pp_postdec (void);
OP * Perl_pp_pow (void);
OP * Perl_pp_multiply (void);
OP * Perl_pp_i_multiply (void);
OP * Perl_pp_divide (void);
OP * Perl_pp_i_divide (void);
OP * Perl_pp_modulo (void);
OP * Perl_pp_i_modulo (void);
OP * Perl_pp_repeat (void);
OP * Perl_pp_add (void);
OP * Perl_pp_i_add (void);
OP * Perl_pp_subtract (void);
OP * Perl_pp_i_subtract (void);
OP * Perl_pp_concat (void);
OP * Perl_pp_stringify (void);
OP * Perl_pp_left_shift (void);
OP * Perl_pp_right_shift (void);
OP * Perl_pp_lt (void);
OP * Perl_pp_i_lt (void);
OP * Perl_pp_gt (void);
OP * Perl_pp_i_gt (void);
OP * Perl_pp_le (void);
OP * Perl_pp_i_le (void);
OP * Perl_pp_ge (void);
OP * Perl_pp_i_ge (void);
OP * Perl_pp_eq (void);
OP * Perl_pp_i_eq (void);
OP * Perl_pp_ne (void);
OP * Perl_pp_i_ne (void);
OP * Perl_pp_ncmp (void);
OP * Perl_pp_i_ncmp (void);
OP * Perl_pp_slt (void);
OP * Perl_pp_sgt (void);
OP * Perl_pp_sle (void);
OP * Perl_pp_sge (void);
OP * Perl_pp_seq (void);
OP * Perl_pp_sne (void);
OP * Perl_pp_scmp (void);
OP * Perl_pp_bit_and (void);
OP * Perl_pp_bit_xor (void);
OP * Perl_pp_bit_or (void);
OP * Perl_pp_negate (void);
OP * Perl_pp_i_negate (void);
OP * Perl_pp_not (void);
OP * Perl_pp_complement (void);
OP * Perl_pp_atan2 (void);
OP * Perl_pp_sin (void);
OP * Perl_pp_cos (void);
OP * Perl_pp_rand (void);
OP * Perl_pp_srand (void);
OP * Perl_pp_exp (void);
OP * Perl_pp_log (void);
OP * Perl_pp_sqrt (void);
OP * Perl_pp_int (void);
OP * Perl_pp_hex (void);
OP * Perl_pp_oct (void);
OP * Perl_pp_abs (void);
OP * Perl_pp_length (void);
OP * Perl_pp_substr (void);
OP * Perl_pp_vec (void);
OP * Perl_pp_index (void);
OP * Perl_pp_rindex (void);
OP * Perl_pp_sprintf (void);
OP * Perl_pp_formline (void);
OP * Perl_pp_ord (void);
OP * Perl_pp_chr (void);
OP * Perl_pp_crypt (void);
OP * Perl_pp_ucfirst (void);
OP * Perl_pp_lcfirst (void);
OP * Perl_pp_uc (void);
OP * Perl_pp_lc (void);
OP * Perl_pp_quotemeta (void);
OP * Perl_pp_rv2av (void);
OP * Perl_pp_aelemfast (void);
OP * Perl_pp_aelem (void);
OP * Perl_pp_aslice (void);
OP * Perl_pp_each (void);
OP * Perl_pp_values (void);
OP * Perl_pp_keys (void);
OP * Perl_pp_delete (void);
OP * Perl_pp_exists (void);
OP * Perl_pp_rv2hv (void);
OP * Perl_pp_helem (void);
OP * Perl_pp_hslice (void);
OP * Perl_pp_unpack (void);
OP * Perl_pp_pack (void);
OP * Perl_pp_split (void);
OP * Perl_pp_join (void);
OP * Perl_pp_list (void);
OP * Perl_pp_lslice (void);
OP * Perl_pp_anonlist (void);
OP * Perl_pp_anonhash (void);
OP * Perl_pp_splice (void);
OP * Perl_pp_push (void);
OP * Perl_pp_pop (void);
OP * Perl_pp_shift (void);
OP * Perl_pp_unshift (void);
OP * Perl_pp_sort (void);
OP * Perl_pp_reverse (void);
OP * Perl_pp_grepstart (void);
OP * Perl_pp_grepwhile (void);
OP * Perl_pp_mapstart (void);
OP * Perl_pp_mapwhile (void);
OP * Perl_pp_range (void);
OP * Perl_pp_flip (void);
OP * Perl_pp_flop (void);
OP * Perl_pp_and (void);
OP * Perl_pp_or (void);
OP * Perl_pp_xor (void);
OP * Perl_pp_cond_expr (void);
OP * Perl_pp_andassign (void);
OP * Perl_pp_orassign (void);
OP * Perl_pp_method (void);
OP * Perl_pp_entersub (void);
OP * Perl_pp_leavesub (void);
OP * Perl_pp_caller (void);
OP * Perl_pp_warn (void);
OP * Perl_pp_die (void);
OP * Perl_pp_reset (void);
OP * Perl_pp_lineseq (void);
OP * Perl_pp_nextstate (void);
OP * Perl_pp_dbstate (void);
OP * Perl_pp_unstack (void);
OP * Perl_pp_enter (void);
OP * Perl_pp_leave (void);
OP * Perl_pp_scope (void);
OP * Perl_pp_enteriter (void);
OP * Perl_pp_iter (void);
OP * Perl_pp_enterloop (void);
OP * Perl_pp_leaveloop (void);
OP * Perl_pp_return (void);
OP * Perl_pp_last (void);
OP * Perl_pp_next (void);
OP * Perl_pp_redo (void);
OP * Perl_pp_dump (void);
OP * Perl_pp_goto (void);
OP * Perl_pp_exit (void);
OP * Perl_pp_open (void);
OP * Perl_pp_close (void);
OP * Perl_pp_pipe_op (void);
OP * Perl_pp_fileno (void);
OP * Perl_pp_umask (void);
OP * Perl_pp_binmode (void);
OP * Perl_pp_tie (void);
OP * Perl_pp_untie (void);
OP * Perl_pp_tied (void);
OP * Perl_pp_dbmopen (void);
OP * Perl_pp_dbmclose (void);
OP * Perl_pp_sselect (void);
OP * Perl_pp_select (void);
OP * Perl_pp_getc (void);
OP * Perl_pp_read (void);
OP * Perl_pp_enterwrite (void);
OP * Perl_pp_leavewrite (void);
OP * Perl_pp_prtf (void);
OP * Perl_pp_print (void);
OP * Perl_pp_sysopen (void);
OP * Perl_pp_sysseek (void);
OP * Perl_pp_sysread (void);
OP * Perl_pp_syswrite (void);
OP * Perl_pp_send (void);
OP * Perl_pp_recv (void);
OP * Perl_pp_eof (void);
OP * Perl_pp_tell (void);
OP * Perl_pp_seek (void);
OP * Perl_pp_truncate (void);
OP * Perl_pp_fcntl (void);
OP * Perl_pp_ioctl (void);
OP * Perl_pp_flock (void);
OP * Perl_pp_socket (void);
OP * Perl_pp_sockpair (void);
OP * Perl_pp_bind (void);
OP * Perl_pp_connect (void);
OP * Perl_pp_listen (void);
OP * Perl_pp_accept (void);
OP * Perl_pp_shutdown (void);
OP * Perl_pp_gsockopt (void);
OP * Perl_pp_ssockopt (void);
OP * Perl_pp_getsockname (void);
OP * Perl_pp_getpeername (void);
OP * Perl_pp_lstat (void);
OP * Perl_pp_stat (void);
OP * Perl_pp_ftrread (void);
OP * Perl_pp_ftrwrite (void);
OP * Perl_pp_ftrexec (void);
OP * Perl_pp_fteread (void);
OP * Perl_pp_ftewrite (void);
OP * Perl_pp_fteexec (void);
OP * Perl_pp_ftis (void);
OP * Perl_pp_fteowned (void);
OP * Perl_pp_ftrowned (void);
OP * Perl_pp_ftzero (void);
OP * Perl_pp_ftsize (void);
OP * Perl_pp_ftmtime (void);
OP * Perl_pp_ftatime (void);
OP * Perl_pp_ftctime (void);
OP * Perl_pp_ftsock (void);
OP * Perl_pp_ftchr (void);
OP * Perl_pp_ftblk (void);
OP * Perl_pp_ftfile (void);
OP * Perl_pp_ftdir (void);
OP * Perl_pp_ftpipe (void);
OP * Perl_pp_ftlink (void);
OP * Perl_pp_ftsuid (void);
OP * Perl_pp_ftsgid (void);
OP * Perl_pp_ftsvtx (void);
OP * Perl_pp_fttty (void);
OP * Perl_pp_fttext (void);
OP * Perl_pp_ftbinary (void);
OP * Perl_pp_chdir (void);
OP * Perl_pp_chown (void);
OP * Perl_pp_chroot (void);
OP * Perl_pp_unlink (void);
OP * Perl_pp_chmod (void);
OP * Perl_pp_utime (void);
OP * Perl_pp_rename (void);
OP * Perl_pp_link (void);
OP * Perl_pp_symlink (void);
OP * Perl_pp_readlink (void);
OP * Perl_pp_mkdir (void);
OP * Perl_pp_rmdir (void);
OP * Perl_pp_open_dir (void);
OP * Perl_pp_readdir (void);
OP * Perl_pp_telldir (void);
OP * Perl_pp_seekdir (void);
OP * Perl_pp_rewinddir (void);
OP * Perl_pp_closedir (void);
OP * Perl_pp_fork (void);
OP * Perl_pp_wait (void);
OP * Perl_pp_waitpid (void);
OP * Perl_pp_system (void);
OP * Perl_pp_exec (void);
OP * Perl_pp_kill (void);
OP * Perl_pp_getppid (void);
OP * Perl_pp_getpgrp (void);
OP * Perl_pp_setpgrp (void);
OP * Perl_pp_getpriority (void);
OP * Perl_pp_setpriority (void);
OP * Perl_pp_time (void);
OP * Perl_pp_tms (void);
OP * Perl_pp_localtime (void);
OP * Perl_pp_gmtime (void);
OP * Perl_pp_alarm (void);
OP * Perl_pp_sleep (void);
OP * Perl_pp_shmget (void);
OP * Perl_pp_shmctl (void);
OP * Perl_pp_shmread (void);
OP * Perl_pp_shmwrite (void);
OP * Perl_pp_msgget (void);
OP * Perl_pp_msgctl (void);
OP * Perl_pp_msgsnd (void);
OP * Perl_pp_msgrcv (void);
OP * Perl_pp_semget (void);
OP * Perl_pp_semctl (void);
OP * Perl_pp_semop (void);
OP * Perl_pp_require (void);
OP * Perl_pp_dofile (void);
OP * Perl_pp_entereval (void);
OP * Perl_pp_leaveeval (void);
OP * Perl_pp_entertry (void);
OP * Perl_pp_leavetry (void);
OP * Perl_pp_ghbyname (void);
OP * Perl_pp_ghbyaddr (void);
OP * Perl_pp_ghostent (void);
OP * Perl_pp_gnbyname (void);
OP * Perl_pp_gnbyaddr (void);
OP * Perl_pp_gnetent (void);
OP * Perl_pp_gpbyname (void);
OP * Perl_pp_gpbynumber (void);
OP * Perl_pp_gprotoent (void);
OP * Perl_pp_gsbyname (void);
OP * Perl_pp_gsbyport (void);
OP * Perl_pp_gservent (void);
OP * Perl_pp_shostent (void);
OP * Perl_pp_snetent (void);
OP * Perl_pp_sprotoent (void);
OP * Perl_pp_sservent (void);
OP * Perl_pp_ehostent (void);
OP * Perl_pp_enetent (void);
OP * Perl_pp_eprotoent (void);
OP * Perl_pp_eservent (void);
OP * Perl_pp_gpwnam (void);
OP * Perl_pp_gpwuid (void);
OP * Perl_pp_gpwent (void);
OP * Perl_pp_spwent (void);
OP * Perl_pp_epwent (void);
OP * Perl_pp_ggrnam (void);
OP * Perl_pp_ggrgid (void);
OP * Perl_pp_ggrent (void);
OP * Perl_pp_sgrent (void);
OP * Perl_pp_egrent (void);
OP * Perl_pp_getlogin (void);
OP * Perl_pp_syscall (void);
OP * Perl_pp_lock (void);
OP * Perl_pp_threadsv (void);





extern OP * (*Perl_ppaddr[])(void);
# 1816 "opcode.h"
extern OP * (*Perl_check[]) (OP *op);
# 2173 "opcode.h"
extern U32 Perl_opargs[];
# 1275 "perl.h" 2
# 1 "op.h" 1
# 26 "op.h"
typedef U32 PADOFFSET;
# 146 "op.h"
struct op {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
};

struct unop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    OP * op_first;
};

struct binop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    OP * op_first;
    OP * op_last;
};

struct logop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    OP * op_first;
    OP * op_other;
};

struct condop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    OP * op_first;
    OP * op_true;
    OP * op_false;
};

struct listop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    OP * op_first;
    OP * op_last;
    U32 op_children;
};

struct pmop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    OP * op_first;
    OP * op_last;
    U32 op_children;
    OP * op_pmreplroot;
    OP * op_pmreplstart;
    PMOP * op_pmnext;
    REGEXP * op_pmregexp;
    U16 op_pmflags;
    U16 op_pmpermflags;
    U8 op_pmdynflags;
};
# 218 "op.h"
struct svop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    SV * op_sv;
};

struct gvop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    GV * op_gv;
};

struct pvop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    char * op_pv;
};

struct loop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    OP * op_first;
    OP * op_last;
    U32 op_children;
    OP * op_redoop;
    OP * op_nextop;
    OP * op_lastop;
};
# 1276 "perl.h" 2
# 1 "cop.h" 1
# 10 "cop.h"
struct cop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    char * cop_label;
    HV * cop_stash;
    GV * cop_filegv;
    U32 cop_seq;
    I32 cop_arybase;
    line_t cop_line;
};
# 27 "cop.h"
struct block_sub {
    CV * cv;
    GV * gv;
    GV * dfoutgv;

    AV * savearray;

    AV * argarray;
    U16 olddepth;
    U8 hasargs;
};
# 86 "cop.h"
struct block_eval {
    I32 old_in_eval;
    I32 old_op_type;
    char * old_name;
    OP * old_eval_root;
    SV * cur_text;
};
# 107 "cop.h"
struct block_loop {
    char * label;
    I32 resetsp;
    OP * redo_op;
    OP * next_op;
    OP * last_op;
    SV ** itervar;
    SV * itersave;
    SV * iterlval;
    AV * iterary;
    IV iterix;
    IV itermax;
};
# 152 "cop.h"
struct block {
    I32 blku_oldsp;
    COP * blku_oldcop;
    I32 blku_oldretsp;
    I32 blku_oldmarksp;
    I32 blku_oldscopesp;
    PMOP * blku_oldpm;
    U8 blku_gimme;

    union {
 struct block_sub blku_sub;
 struct block_eval blku_eval;
 struct block_loop blku_loop;
    } blk_u;
};
# 212 "cop.h"
struct subst {
    I32 sbu_iters;
    I32 sbu_maxiters;
    I32 sbu_safebase;
    I32 sbu_oldsave;
    int sbu_once;
    int sbu_rxtainted;
    char * sbu_orig;
    SV * sbu_dstr;
    SV * sbu_targ;
    char * sbu_s;
    char * sbu_m;
    char * sbu_strend;
    void * sbu_rxres;
    REGEXP * sbu_rx;
};
# 264 "cop.h"
struct context {
    U32 cx_type;
    union {
 struct block cx_blk;
 struct subst cx_subst;
    } cx_u;
};
# 316 "cop.h"
struct stackinfo {
    AV * si_stack;
    PERL_CONTEXT * si_cxstack;
    I32 si_cxix;
    I32 si_cxmax;
    I32 si_type;
    struct stackinfo * si_prev;
    struct stackinfo * si_next;
    I32 * si_markbase;


};

typedef struct stackinfo PERL_SI;
# 1277 "perl.h" 2
# 1 "av.h" 1
# 10 "av.h"
struct xpvav {
    char* xav_array;
    ssize_t xav_fill;
    ssize_t xav_max;
    IV xof_off;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;

    SV** xav_alloc;
    SV* xav_arylen;
    U8 xav_flags;
};
# 1278 "perl.h" 2
# 1 "hv.h" 1
# 10 "hv.h"
typedef struct he HE;
typedef struct hek HEK;

struct he {
    HE *hent_next;
    HEK *hent_hek;
    SV *hent_val;
};

struct hek {
    U32 hek_hash;
    I32 hek_len;
    char hek_key[1];
};


struct xpvhv {
    char * xhv_array;
    STRLEN xhv_fill;
    STRLEN xhv_max;
    IV xhv_keys;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;

    I32 xhv_riter;
    HE *xhv_eiter;
    PMOP *xhv_pmroot;
    char *xhv_name;
};
# 1279 "perl.h" 2
# 1 "mg.h" 1
# 13 "mg.h"
struct mgvtbl {
    int (*svt_get) (SV *sv, MAGIC* mg);
    int (*svt_set) (SV *sv, MAGIC* mg);
    U32 (*svt_len) (SV *sv, MAGIC* mg);
    int (*svt_clear) (SV *sv, MAGIC* mg);
    int (*svt_free) (SV *sv, MAGIC* mg);
};


struct magic {
    MAGIC* mg_moremagic;
    MGVTBL* mg_virtual;
    U16 mg_private;
    char mg_type;
    U8 mg_flags;
    SV* mg_obj;
    char* mg_ptr;
    I32 mg_len;
};
# 1280 "perl.h" 2
# 1 "scope.h" 1
# 131 "scope.h"
struct jmpenv {
    struct jmpenv * je_prev;
    jmp_buf je_buf;
    int je_ret;
    int je_mustcatch;
};

typedef struct jmpenv JMPENV;
# 1281 "perl.h" 2
# 1 "bytecode.h" 1
typedef char *pvcontents;
typedef char *strconst;
typedef U32 PV;
typedef char *op_tr_array;
typedef int comment_t;
typedef SV *svindex;
typedef OP *opindex;
typedef IV IV64;
# 1282 "perl.h" 2
# 1 "byterun.h" 1
# 20 "byterun.h"
void *Perl_bset_obj_store (void *, I32);

enum {
    INSN_RET,
    INSN_LDSV,
    INSN_LDOP,
    INSN_STSV,
    INSN_STOP,
    INSN_LDSPECSV,
    INSN_NEWSV,
    INSN_NEWOP,
    INSN_NEWOPN,
    INSN_NEWPV,
    INSN_NOP,
    INSN_PV_CUR,
    INSN_PV_FREE,
    INSN_SV_UPGRADE,
    INSN_SV_REFCNT,
    INSN_SV_REFCNT_ADD,
    INSN_SV_FLAGS,
    INSN_XRV,
    INSN_XPV,
    INSN_XIV32,
    INSN_XIV64,
    INSN_XNV,
    INSN_XLV_TARGOFF,
    INSN_XLV_TARGLEN,
    INSN_XLV_TARG,
    INSN_XLV_TYPE,
    INSN_XBM_USEFUL,
    INSN_XBM_PREVIOUS,
    INSN_XBM_RARE,
    INSN_XFM_LINES,
    INSN_XIO_LINES,
    INSN_XIO_PAGE,
    INSN_XIO_PAGE_LEN,
    INSN_XIO_LINES_LEFT,
    INSN_XIO_TOP_NAME,
    INSN_COMMENT,
    INSN_XIO_TOP_GV,
    INSN_XIO_FMT_NAME,
    INSN_XIO_FMT_GV,
    INSN_XIO_BOTTOM_NAME,
    INSN_XIO_BOTTOM_GV,
    INSN_XIO_SUBPROCESS,
    INSN_XIO_TYPE,
    INSN_XIO_FLAGS,
    INSN_XCV_STASH,
    INSN_XCV_START,
    INSN_XCV_ROOT,
    INSN_XCV_GV,
    INSN_XCV_FILEGV,
    INSN_XCV_DEPTH,
    INSN_XCV_PADLIST,
    INSN_XCV_OUTSIDE,
    INSN_XCV_FLAGS,
    INSN_AV_EXTEND,
    INSN_AV_PUSH,
    INSN_XAV_FILL,
    INSN_XAV_MAX,
    INSN_XAV_FLAGS,
    INSN_XHV_RITER,
    INSN_XHV_NAME,
    INSN_HV_STORE,
    INSN_SV_MAGIC,
    INSN_MG_OBJ,
    INSN_MG_PRIVATE,
    INSN_MG_FLAGS,
    INSN_MG_PV,
    INSN_XMG_STASH,
    INSN_GV_FETCHPV,
    INSN_GV_STASHPV,
    INSN_GP_SV,
    INSN_GP_REFCNT,
    INSN_GP_REFCNT_ADD,
    INSN_GP_AV,
    INSN_GP_HV,
    INSN_GP_CV,
    INSN_GP_FILEGV,
    INSN_GP_IO,
    INSN_GP_FORM,
    INSN_GP_CVGEN,
    INSN_GP_LINE,
    INSN_GP_SHARE,
    INSN_XGV_FLAGS,
    INSN_OP_NEXT,
    INSN_OP_SIBLING,
    INSN_OP_PPADDR,
    INSN_OP_TARG,
    INSN_OP_TYPE,
    INSN_OP_SEQ,
    INSN_OP_FLAGS,
    INSN_OP_PRIVATE,
    INSN_OP_FIRST,
    INSN_OP_LAST,
    INSN_OP_OTHER,
    INSN_OP_TRUE,
    INSN_OP_FALSE,
    INSN_OP_CHILDREN,
    INSN_OP_PMREPLROOT,
    INSN_OP_PMREPLROOTGV,
    INSN_OP_PMREPLSTART,
    INSN_OP_PMNEXT,
    INSN_PREGCOMP,
    INSN_OP_PMFLAGS,
    INSN_OP_PMPERMFLAGS,
    INSN_OP_SV,
    INSN_OP_GV,
    INSN_OP_PV,
    INSN_OP_PV_TR,
    INSN_OP_REDOOP,
    INSN_OP_NEXTOP,
    INSN_OP_LASTOP,
    INSN_COP_LABEL,
    INSN_COP_STASH,
    INSN_COP_FILEGV,
    INSN_COP_SEQ,
    INSN_COP_ARYBASE,
    INSN_COP_LINE,
    INSN_MAIN_START,
    INSN_MAIN_ROOT,
    INSN_CURPAD,
    MAX_INSN = 118
};

enum {
    OPt_OP,
    OPt_UNOP,
    OPt_BINOP,
    OPt_LOGOP,
    OPt_CONDOP,
    OPt_LISTOP,
    OPt_PMOP,
    OPt_SVOP,
    OPt_GVOP,
    OPt_PVOP,
    OPt_LOOP,
    OPt_COP
};

extern int optype_size[]
# 177 "byterun.h"
;
# 1283 "perl.h" 2


typedef struct curcur CURCUR;
struct curcur {
    int parenfloor;
    int cur;
    int min;
    int max;
    int minmod;
    regnode * scan;
    regnode * next;
    char * lastloc;
    CURCUR * oldcc;
};

typedef struct _sublex_info SUBLEXINFO;
struct _sublex_info {
    I32 super_state;
    I32 sub_inwhat;
    OP *sub_op;
};
# 1414 "perl.h"
 U32 Perl_cast_ulong (double);
# 1425 "perl.h"

I32 cast_i32 (double);
IV cast_iv (double);
UV cast_uv (double);






struct Outrec {
    I32 o_lines;
    char *o_str;
    U32 o_len;
};
# 1450 "perl.h"
uid_t getuid (void);
uid_t geteuid (void);
gid_t getgid (void);
gid_t getegid (void);
# 1517 "perl.h"
struct ufuncs {
    I32 (*uf_val)(IV, SV*);
    I32 (*uf_set)(IV, SV*);
    IV uf_index;
};



char *mktemp (char*);
double atof (const char*);
# 1544 "perl.h"
# 1 "/usr/include/math.h" 1 3 4
# 29 "/usr/include/math.h" 3 4




# 1 "/usr/include/bits/huge_val.h" 1 3 4
# 34 "/usr/include/math.h" 2 3 4






# 1 "/usr/include/bits/mathdef.h" 1 3 4
# 41 "/usr/include/math.h" 2 3 4
# 63 "/usr/include/math.h" 3 4
# 1 "/usr/include/bits/mathcalls.h" 1 3 4
# 54 "/usr/include/bits/mathcalls.h" 3 4
extern double acos (double __x) ; extern double __acos (double __x) ;

extern double asin (double __x) ; extern double __asin (double __x) ;

extern double atan (double __x) ; extern double __atan (double __x) ;

extern double atan2 (double __y, double __x) ; extern double __atan2 (double __y, double __x) ;


extern double cos (double __x) ; extern double __cos (double __x) ;

extern double sin (double __x) ; extern double __sin (double __x) ;

extern double tan (double __x) ; extern double __tan (double __x) ;
# 78 "/usr/include/bits/mathcalls.h" 3 4
extern double cosh (double __x) ; extern double __cosh (double __x) ;

extern double sinh (double __x) ; extern double __sinh (double __x) ;

extern double tanh (double __x) ; extern double __tanh (double __x) ;



extern double acosh (double __x) ; extern double __acosh (double __x) ;

extern double asinh (double __x) ; extern double __asinh (double __x) ;

extern double atanh (double __x) ; extern double __atanh (double __x) ;





extern double exp (double __x) ; extern double __exp (double __x) ;
# 106 "/usr/include/bits/mathcalls.h" 3 4
extern double frexp (double __x, int *__exponent) ; extern double __frexp (double __x, int *__exponent) ;


extern double ldexp (double __x, int __exponent) ; extern double __ldexp (double __x, int __exponent) ;


extern double log (double __x) ; extern double __log (double __x) ;


extern double log10 (double __x) ; extern double __log10 (double __x) ;


extern double modf (double __x, double *__iptr) ; extern double __modf (double __x, double *__iptr) ;



extern double expm1 (double __x) ; extern double __expm1 (double __x) ;


extern double log1p (double __x) ; extern double __log1p (double __x) ;


extern double logb (double __x) ; extern double __logb (double __x) ;
# 143 "/usr/include/bits/mathcalls.h" 3 4
extern double pow (double __x, double __y) ; extern double __pow (double __x, double __y) ;


extern double sqrt (double __x) ; extern double __sqrt (double __x) ;



extern double hypot (double __x, double __y) ; extern double __hypot (double __x, double __y) ;




extern double cbrt (double __x) ; extern double __cbrt (double __x) ;






extern double ceil (double __x) ; extern double __ceil (double __x) ;


extern double fabs (double __x) ; extern double __fabs (double __x) ;


extern double floor (double __x) ; extern double __floor (double __x) ;


extern double fmod (double __x, double __y) ; extern double __fmod (double __x, double __y) ;




extern int __isinf (double __value) ;


extern int __finite (double __value) ;




extern int isinf (double __value) ;


extern int finite (double __value) ;


extern double drem (double __x, double __y) ; extern double __drem (double __x, double __y) ;



extern double significand (double __x) ; extern double __significand (double __x) ;




extern double copysign (double __x, double __y) ; extern double __copysign (double __x, double __y) ;
# 209 "/usr/include/bits/mathcalls.h" 3 4
extern int __isnan (double __value) ;



extern int isnan (double __value) ;


extern double j0 (double) ; extern double __j0 (double) ;
extern double j1 (double) ; extern double __j1 (double) ;
extern double jn (int, double) ; extern double __jn (int, double) ;
extern double y0 (double) ; extern double __y0 (double) ;
extern double y1 (double) ; extern double __y1 (double) ;
extern double yn (int, double) ; extern double __yn (int, double) ;





extern double erf (double) ; extern double __erf (double) ;
extern double erfc (double) ; extern double __erfc (double) ;
extern double lgamma (double) ; extern double __lgamma (double) ;
# 238 "/usr/include/bits/mathcalls.h" 3 4
extern double gamma (double) ; extern double __gamma (double) ;






extern double lgamma_r (double, int *__signgamp) ; extern double __lgamma_r (double, int *__signgamp) ;






extern double rint (double __x) ; extern double __rint (double __x) ;


extern double nextafter (double __x, double __y) ; extern double __nextafter (double __x, double __y) ;





extern double remainder (double __x, double __y) ; extern double __remainder (double __x, double __y) ;



extern double scalb (double __x, double __n) ; extern double __scalb (double __x, double __n) ;




extern double scalbn (double __x, int __n) ; extern double __scalbn (double __x, int __n) ;



extern int ilogb (double __x) ; extern int __ilogb (double __x) ;
# 64 "/usr/include/math.h" 2 3 4
# 82 "/usr/include/math.h" 3 4
# 1 "/usr/include/bits/mathcalls.h" 1 3 4
# 54 "/usr/include/bits/mathcalls.h" 3 4
extern float acosf (float __x) ; extern float __acosf (float __x) ;

extern float asinf (float __x) ; extern float __asinf (float __x) ;

extern float atanf (float __x) ; extern float __atanf (float __x) ;

extern float atan2f (float __y, float __x) ; extern float __atan2f (float __y, float __x) ;


extern float cosf (float __x) ; extern float __cosf (float __x) ;

extern float sinf (float __x) ; extern float __sinf (float __x) ;

extern float tanf (float __x) ; extern float __tanf (float __x) ;
# 78 "/usr/include/bits/mathcalls.h" 3 4
extern float coshf (float __x) ; extern float __coshf (float __x) ;

extern float sinhf (float __x) ; extern float __sinhf (float __x) ;

extern float tanhf (float __x) ; extern float __tanhf (float __x) ;



extern float acoshf (float __x) ; extern float __acoshf (float __x) ;

extern float asinhf (float __x) ; extern float __asinhf (float __x) ;

extern float atanhf (float __x) ; extern float __atanhf (float __x) ;





extern float expf (float __x) ; extern float __expf (float __x) ;
# 106 "/usr/include/bits/mathcalls.h" 3 4
extern float frexpf (float __x, int *__exponent) ; extern float __frexpf (float __x, int *__exponent) ;


extern float ldexpf (float __x, int __exponent) ; extern float __ldexpf (float __x, int __exponent) ;


extern float logf (float __x) ; extern float __logf (float __x) ;


extern float log10f (float __x) ; extern float __log10f (float __x) ;


extern float modff (float __x, float *__iptr) ; extern float __modff (float __x, float *__iptr) ;



extern float expm1f (float __x) ; extern float __expm1f (float __x) ;


extern float log1pf (float __x) ; extern float __log1pf (float __x) ;


extern float logbf (float __x) ; extern float __logbf (float __x) ;
# 143 "/usr/include/bits/mathcalls.h" 3 4
extern float powf (float __x, float __y) ; extern float __powf (float __x, float __y) ;


extern float sqrtf (float __x) ; extern float __sqrtf (float __x) ;



extern float hypotf (float __x, float __y) ; extern float __hypotf (float __x, float __y) ;




extern float cbrtf (float __x) ; extern float __cbrtf (float __x) ;






extern float ceilf (float __x) ; extern float __ceilf (float __x) ;


extern float fabsf (float __x) ; extern float __fabsf (float __x) ;


extern float floorf (float __x) ; extern float __floorf (float __x) ;


extern float fmodf (float __x, float __y) ; extern float __fmodf (float __x, float __y) ;




extern int __isinff (float __value) ;


extern int __finitef (float __value) ;




extern int isinff (float __value) ;


extern int finitef (float __value) ;


extern float dremf (float __x, float __y) ; extern float __dremf (float __x, float __y) ;



extern float significandf (float __x) ; extern float __significandf (float __x) ;




extern float copysignf (float __x, float __y) ; extern float __copysignf (float __x, float __y) ;
# 209 "/usr/include/bits/mathcalls.h" 3 4
extern int __isnanf (float __value) ;



extern int isnanf (float __value) ;


extern float j0f (float) ; extern float __j0f (float) ;
extern float j1f (float) ; extern float __j1f (float) ;
extern float jnf (int, float) ; extern float __jnf (int, float) ;
extern float y0f (float) ; extern float __y0f (float) ;
extern float y1f (float) ; extern float __y1f (float) ;
extern float ynf (int, float) ; extern float __ynf (int, float) ;





extern float erff (float) ; extern float __erff (float) ;
extern float erfcf (float) ; extern float __erfcf (float) ;
extern float lgammaf (float) ; extern float __lgammaf (float) ;
# 238 "/usr/include/bits/mathcalls.h" 3 4
extern float gammaf (float) ; extern float __gammaf (float) ;






extern float lgammaf_r (float, int *__signgamp) ; extern float __lgammaf_r (float, int *__signgamp) ;






extern float rintf (float __x) ; extern float __rintf (float __x) ;


extern float nextafterf (float __x, float __y) ; extern float __nextafterf (float __x, float __y) ;





extern float remainderf (float __x, float __y) ; extern float __remainderf (float __x, float __y) ;



extern float scalbf (float __x, float __n) ; extern float __scalbf (float __x, float __n) ;




extern float scalbnf (float __x, int __n) ; extern float __scalbnf (float __x, int __n) ;



extern int ilogbf (float __x) ; extern int __ilogbf (float __x) ;
# 83 "/usr/include/math.h" 2 3 4
# 99 "/usr/include/math.h" 3 4
# 1 "/usr/include/bits/mathcalls.h" 1 3 4
# 54 "/usr/include/bits/mathcalls.h" 3 4
extern long double acosl (long double __x) ; extern long double __acosl (long double __x) ;

extern long double asinl (long double __x) ; extern long double __asinl (long double __x) ;

extern long double atanl (long double __x) ; extern long double __atanl (long double __x) ;

extern long double atan2l (long double __y, long double __x) ; extern long double __atan2l (long double __y, long double __x) ;


extern long double cosl (long double __x) ; extern long double __cosl (long double __x) ;

extern long double sinl (long double __x) ; extern long double __sinl (long double __x) ;

extern long double tanl (long double __x) ; extern long double __tanl (long double __x) ;
# 78 "/usr/include/bits/mathcalls.h" 3 4
extern long double coshl (long double __x) ; extern long double __coshl (long double __x) ;

extern long double sinhl (long double __x) ; extern long double __sinhl (long double __x) ;

extern long double tanhl (long double __x) ; extern long double __tanhl (long double __x) ;



extern long double acoshl (long double __x) ; extern long double __acoshl (long double __x) ;

extern long double asinhl (long double __x) ; extern long double __asinhl (long double __x) ;

extern long double atanhl (long double __x) ; extern long double __atanhl (long double __x) ;





extern long double expl (long double __x) ; extern long double __expl (long double __x) ;
# 106 "/usr/include/bits/mathcalls.h" 3 4
extern long double frexpl (long double __x, int *__exponent) ; extern long double __frexpl (long double __x, int *__exponent) ;


extern long double ldexpl (long double __x, int __exponent) ; extern long double __ldexpl (long double __x, int __exponent) ;


extern long double logl (long double __x) ; extern long double __logl (long double __x) ;


extern long double log10l (long double __x) ; extern long double __log10l (long double __x) ;


extern long double modfl (long double __x, long double *__iptr) ; extern long double __modfl (long double __x, long double *__iptr) ;



extern long double expm1l (long double __x) ; extern long double __expm1l (long double __x) ;


extern long double log1pl (long double __x) ; extern long double __log1pl (long double __x) ;


extern long double logbl (long double __x) ; extern long double __logbl (long double __x) ;
# 143 "/usr/include/bits/mathcalls.h" 3 4
extern long double powl (long double __x, long double __y) ; extern long double __powl (long double __x, long double __y) ;


extern long double sqrtl (long double __x) ; extern long double __sqrtl (long double __x) ;



extern long double hypotl (long double __x, long double __y) ; extern long double __hypotl (long double __x, long double __y) ;




extern long double cbrtl (long double __x) ; extern long double __cbrtl (long double __x) ;






extern long double ceill (long double __x) ; extern long double __ceill (long double __x) ;


extern long double fabsl (long double __x) ; extern long double __fabsl (long double __x) ;


extern long double floorl (long double __x) ; extern long double __floorl (long double __x) ;


extern long double fmodl (long double __x, long double __y) ; extern long double __fmodl (long double __x, long double __y) ;




extern int __isinfl (long double __value) ;


extern int __finitel (long double __value) ;




extern int isinfl (long double __value) ;


extern int finitel (long double __value) ;


extern long double dreml (long double __x, long double __y) ; extern long double __dreml (long double __x, long double __y) ;



extern long double significandl (long double __x) ; extern long double __significandl (long double __x) ;




extern long double copysignl (long double __x, long double __y) ; extern long double __copysignl (long double __x, long double __y) ;
# 209 "/usr/include/bits/mathcalls.h" 3 4
extern int __isnanl (long double __value) ;



extern int isnanl (long double __value) ;


extern long double j0l (long double) ; extern long double __j0l (long double) ;
extern long double j1l (long double) ; extern long double __j1l (long double) ;
extern long double jnl (int, long double) ; extern long double __jnl (int, long double) ;
extern long double y0l (long double) ; extern long double __y0l (long double) ;
extern long double y1l (long double) ; extern long double __y1l (long double) ;
extern long double ynl (int, long double) ; extern long double __ynl (int, long double) ;





extern long double erfl (long double) ; extern long double __erfl (long double) ;
extern long double erfcl (long double) ; extern long double __erfcl (long double) ;
extern long double lgammal (long double) ; extern long double __lgammal (long double) ;
# 238 "/usr/include/bits/mathcalls.h" 3 4
extern long double gammal (long double) ; extern long double __gammal (long double) ;






extern long double lgammal_r (long double, int *__signgamp) ; extern long double __lgammal_r (long double, int *__signgamp) ;






extern long double rintl (long double __x) ; extern long double __rintl (long double __x) ;


extern long double nextafterl (long double __x, long double __y) ; extern long double __nextafterl (long double __x, long double __y) ;





extern long double remainderl (long double __x, long double __y) ; extern long double __remainderl (long double __x, long double __y) ;



extern long double scalbl (long double __x, long double __n) ; extern long double __scalbl (long double __x, long double __n) ;




extern long double scalbnl (long double __x, int __n) ; extern long double __scalbnl (long double __x, int __n) ;



extern int ilogbl (long double __x) ; extern int __ilogbl (long double __x) ;
# 100 "/usr/include/math.h" 2 3 4
# 113 "/usr/include/math.h" 3 4
extern int signgam;
# 240 "/usr/include/math.h" 3 4
typedef enum
{
  _IEEE_ = -1,
  _SVID_,
  _XOPEN_,
  _POSIX_,
  _ISOC_
} _LIB_VERSION_TYPE;




extern _LIB_VERSION_TYPE _LIB_VERSION;
# 265 "/usr/include/math.h" 3 4
struct exception

  {
    int type;
    char *name;
    double arg1;
    double arg2;
    double retval;
  };




extern int matherr (struct exception *__exc);
# 350 "/usr/include/math.h" 3 4
# 1 "/usr/include/bits/mathinline.h" 1 3 4
# 291 "/usr/include/bits/mathinline.h" 3 4
extern __inline double __sgn (double) ; extern __inline double __sgn (double __x) { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); } extern __inline float __sgnf (float) ; extern __inline float __sgnf (float __x) { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); } extern __inline long double __sgnl (long double) ; extern __inline long double __sgnl (long double __x) { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); }
# 425 "/usr/include/bits/mathinline.h" 3 4
extern __inline double atan2 (double __y, double __x) { register long double __value; __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); return __value; } extern __inline float atan2f (float __y, float __x) { register long double __value; __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); return __value; } extern __inline long double atan2l (long double __y, long double __x) { register long double __value; __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); return __value; }
extern __inline long double __atan2l (long double __y, long double __x) { register long double __value; __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); return __value; }


extern __inline double fmod (double __x, double __y) { register long double __value; __asm __volatile__ ("1:	fprem\n\t" "fnstsw	%%ax\n\t" "sahf\n\t" "jp	1b" : "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); return __value; } extern __inline float fmodf (float __x, float __y) { register long double __value; __asm __volatile__ ("1:	fprem\n\t" "fnstsw	%%ax\n\t" "sahf\n\t" "jp	1b" : "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); return __value; } extern __inline long double fmodl (long double __x, long double __y) { register long double __value; __asm __volatile__ ("1:	fprem\n\t" "fnstsw	%%ax\n\t" "sahf\n\t" "jp	1b" : "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); return __value; }
# 440 "/usr/include/bits/mathinline.h" 3 4
extern __inline double sqrt (double __x) { register double __result; __asm __volatile__ ("fsqrt" : "=t" (__result) : "0" (__x)); return __result; } extern __inline float sqrtf (float __x) { register float __result; __asm __volatile__ ("fsqrt" : "=t" (__result) : "0" (__x)); return __result; } extern __inline long double sqrtl (long double __x) { register long double __result; __asm __volatile__ ("fsqrt" : "=t" (__result) : "0" (__x)); return __result; }
extern __inline long double __sqrtl (long double __x) { register long double __result; __asm __volatile__ ("fsqrt" : "=t" (__result) : "0" (__x)); return __result; }


extern __inline double fabs (double __x) { return __builtin_fabs (__x); }
extern __inline float fabsf (float __x) { return __builtin_fabsf (__x); }
extern __inline long double fabsl (long double __x) { return __builtin_fabsl (__x); }
extern __inline long double __fabsl (long double __x) { return __builtin_fabsl (__x); }
# 466 "/usr/include/bits/mathinline.h" 3 4
extern __inline double atan (double __x) { register double __result; __asm __volatile__ ("fld1; fpatan" : "=t" (__result) : "0" (__x) : "st(1)"); return __result; } extern __inline float atanf (float __x) { register float __result; __asm __volatile__ ("fld1; fpatan" : "=t" (__result) : "0" (__x) : "st(1)"); return __result; } extern __inline long double atanl (long double __x) { register long double __result; __asm __volatile__ ("fld1; fpatan" : "=t" (__result) : "0" (__x) : "st(1)"); return __result; }

extern __inline long double __sgn1l (long double) ; extern __inline long double __sgn1l (long double __x) { __extension__ union { long double __xld; unsigned int __xi[3]; } __n = { __xld: __x }; __n.__xi[2] = (__n.__xi[2] & 0x8000) | 0x3fff; __n.__xi[1] = 0x80000000; __n.__xi[0] = 0; return __n.__xld; }
# 492 "/usr/include/bits/mathinline.h" 3 4
extern __inline double floor (double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline float floorf (float __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline long double floorl (long double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; }
# 503 "/usr/include/bits/mathinline.h" 3 4
extern __inline double ceil (double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline float ceilf (float __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline long double ceill (long double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; }
# 521 "/usr/include/bits/mathinline.h" 3 4
extern __inline double
ldexp (double __x, int __y)
{
  register long double __value; __asm __volatile__ ("fscale" : "=t" (__value) : "0" (__x), "u" ((long double) __y)); return __value;
}
# 539 "/usr/include/bits/mathinline.h" 3 4
extern __inline double log1p (double __x) { register long double __value; if (__fabsl (__x) >= 1.0 - 0.5 * 1.41421356237309504880L) __value = logl (1.0 + __x); else __asm __volatile__ ("fldln2\n\t" "fxch\n\t" "fyl2xp1" : "=t" (__value) : "0" (__x) : "st(1)"); return __value; } extern __inline float log1pf (float __x) { register long double __value; if (__fabsl (__x) >= 1.0 - 0.5 * 1.41421356237309504880L) __value = logl (1.0 + __x); else __asm __volatile__ ("fldln2\n\t" "fxch\n\t" "fyl2xp1" : "=t" (__value) : "0" (__x) : "st(1)"); return __value; } extern __inline long double log1pl (long double __x) { register long double __value; if (__fabsl (__x) >= 1.0 - 0.5 * 1.41421356237309504880L) __value = logl (1.0 + __x); else __asm __volatile__ ("fldln2\n\t" "fxch\n\t" "fyl2xp1" : "=t" (__value) : "0" (__x) : "st(1)"); return __value; }
# 553 "/usr/include/bits/mathinline.h" 3 4
extern __inline double asinh (double __x) { register long double __y = __fabsl (__x); return (log1pl (__y * __y / (__sqrtl (__y * __y + 1.0) + 1.0) + __y) * __sgn1l (__x)); } extern __inline float asinhf (float __x) { register long double __y = __fabsl (__x); return (log1pl (__y * __y / (__sqrtl (__y * __y + 1.0) + 1.0) + __y) * __sgn1l (__x)); } extern __inline long double asinhl (long double __x) { register long double __y = __fabsl (__x); return (log1pl (__y * __y / (__sqrtl (__y * __y + 1.0) + 1.0) + __y) * __sgn1l (__x)); }




extern __inline double acosh (double __x) { return logl (__x + __sqrtl (__x - 1.0) * __sqrtl (__x + 1.0)); } extern __inline float acoshf (float __x) { return logl (__x + __sqrtl (__x - 1.0) * __sqrtl (__x + 1.0)); } extern __inline long double acoshl (long double __x) { return logl (__x + __sqrtl (__x - 1.0) * __sqrtl (__x + 1.0)); }


extern __inline double atanh (double __x) { register long double __y = __fabsl (__x); return -0.5 * log1pl (-(__y + __y) / (1.0 + __y)) * __sgn1l (__x); } extern __inline float atanhf (float __x) { register long double __y = __fabsl (__x); return -0.5 * log1pl (-(__y + __y) / (1.0 + __y)) * __sgn1l (__x); } extern __inline long double atanhl (long double __x) { register long double __y = __fabsl (__x); return -0.5 * log1pl (-(__y + __y) / (1.0 + __y)) * __sgn1l (__x); }




extern __inline double hypot (double __x, double __y) { return __sqrtl (__x * __x + __y * __y); } extern __inline float hypotf (float __x, float __y) { return __sqrtl (__x * __x + __y * __y); } extern __inline long double hypotl (long double __x, long double __y) { return __sqrtl (__x * __x + __y * __y); }

extern __inline double logb (double __x) { register long double __value; register long double __junk; __asm __volatile__ ("fxtract\n\t" : "=t" (__junk), "=u" (__value) : "0" (__x)); return __value; } extern __inline float logbf (float __x) { register long double __value; register long double __junk; __asm __volatile__ ("fxtract\n\t" : "=t" (__junk), "=u" (__value) : "0" (__x)); return __value; } extern __inline long double logbl (long double __x) { register long double __value; register long double __junk; __asm __volatile__ ("fxtract\n\t" : "=t" (__junk), "=u" (__value) : "0" (__x)); return __value; }
# 652 "/usr/include/bits/mathinline.h" 3 4
extern __inline double drem (double __x, double __y) { register double __value; register int __clobbered; __asm __volatile__ ("1:	fprem1\n\t" "fstsw	%%ax\n\t" "sahf\n\t" "jp	1b" : "=t" (__value), "=&a" (__clobbered) : "0" (__x), "u" (__y) : "cc"); return __value; } extern __inline float dremf (float __x, float __y) { register double __value; register int __clobbered; __asm __volatile__ ("1:	fprem1\n\t" "fstsw	%%ax\n\t" "sahf\n\t" "jp	1b" : "=t" (__value), "=&a" (__clobbered) : "0" (__x), "u" (__y) : "cc"); return __value; } extern __inline long double dreml (long double __x, long double __y) { register double __value; register int __clobbered; __asm __volatile__ ("1:	fprem1\n\t" "fstsw	%%ax\n\t" "sahf\n\t" "jp	1b" : "=t" (__value), "=&a" (__clobbered) : "0" (__x), "u" (__y) : "cc"); return __value; }
# 665 "/usr/include/bits/mathinline.h" 3 4
extern __inline int
__finite (double __x)
{
  return (__extension__
   (((((union { double __d; int __i[2]; }) {__d: __x}).__i[1]
      | 0x800fffffu) + 1) >> 31));
}
# 351 "/usr/include/math.h" 2 3 4
# 411 "/usr/include/math.h" 3 4

# 1545 "perl.h" 2
# 1566 "perl.h"
char *crypt (const char*, const char*);




char *getenv (const char*);

off_t lseek (int,off_t,int);

char *getlogin (void);
# 1598 "perl.h"
typedef void (*Sighandler_t) (int);




typedef Sighandler_t Sigsave_t;
# 1650 "perl.h"
typedef int runops_proc_t (void);
int Perl_runops_standard (void);
# 1665 "perl.h"
extern char ** environ;
# 1678 "perl.h"
extern int * Perl_di;
extern short * Perl_ds;
extern char * Perl_dc;


extern const char Perl_warn_uninit[]
  ;
extern const char Perl_warn_nosemi[]
  ;
extern const char Perl_warn_reserved[]
  ;
extern const char Perl_warn_nl[]
  ;
extern const char Perl_no_wrongref[]
  ;
extern const char Perl_no_symref[]
  ;
extern const char Perl_no_usym[]
  ;
extern const char Perl_no_aelem[]
  ;
extern const char Perl_no_helem[]
  ;
extern const char Perl_no_modify[]
  ;
extern const char Perl_no_mem[]
  ;
extern const char Perl_no_security[]
  ;
extern const char Perl_no_sock_func[]
  ;
extern const char Perl_no_dir_func[]
  ;
extern const char Perl_no_func[]
  ;
extern const char Perl_no_myglob[]
  ;







extern char *Perl_sig_name[];
extern int Perl_sig_num[];
extern SV * Perl_psig_ptr[];
extern SV * Perl_psig_name[];
# 1803 "perl.h"
extern const unsigned char Perl_fold[];
# 1842 "perl.h"
extern unsigned char Perl_fold_locale[];
# 1918 "perl.h"
extern const unsigned char Perl_freq[];
# 1941 "perl.h"
# 1 "perly.h" 1
# 59 "perly.h"
typedef union {
    I32 ival;
    char *pval;
    OP *opval;
    GV *gvval;
} YYSTYPE;
extern YYSTYPE Perl_yylval;
# 1942 "perl.h" 2



typedef enum {
    XOPERATOR,
    XTERM,
    XREF,
    XSTATE,
    XBLOCK,
    XTERMBLOCK
} expectation;

enum {
    want_vtbl_sv,
    want_vtbl_env,
    want_vtbl_envelem,
    want_vtbl_sig,
    want_vtbl_sigelem,
    want_vtbl_pack,
    want_vtbl_packelem,
    want_vtbl_dbline,
    want_vtbl_isa,
    want_vtbl_isaelem,
    want_vtbl_arylen,
    want_vtbl_glob,
    want_vtbl_mglob,
    want_vtbl_nkeys,
    want_vtbl_taint,
    want_vtbl_substr,
    want_vtbl_vec,
    want_vtbl_pos,
    want_vtbl_bm,
    want_vtbl_fm,
    want_vtbl_uvar,
    want_vtbl_defelem,
    want_vtbl_regexp,
    want_vtbl_collxfrm,
    want_vtbl_amagic,
    want_vtbl_amagicelem




};
# 2022 "perl.h"
typedef regexp*(*regcomp_t) (char* exp, char* xend, PMOP* pm);
typedef I32 (*regexec_t) (regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, void* data, U32 flags);
# 2035 "perl.h"
typedef struct exitlistentry {



    void (*fn) (void*);

    void *ptr;
} PerlExitListEntry;
# 2094 "perl.h"
struct interpreter {
    char broiled;
};
# 2112 "perl.h"
typedef void *Thread;







# 1 "thread.h" 1
# 2121 "perl.h" 2
# 1 "pp.h" 1
# 2122 "perl.h" 2
# 1 "proto.h" 1
# 9 "proto.h"

# 26 "proto.h"
 SV* Perl_amagic_call (SV* left,SV* right,int method,int dir);
 int Perl_Gv_AMupdate (HV* stash);

 OP* Perl_append_elem (I32 optype, OP* head, OP* tail);
 OP* Perl_append_list (I32 optype, LISTOP* first, LISTOP* last);
 I32 Perl_apply (I32 type, SV** mark, SV** sp);
 void Perl_assertref (OP* o);
 int Perl_avhv_exists_ent (AV *ar, SV* keysv, U32 hash);
 SV** Perl_avhv_fetch_ent (AV *ar, SV* keysv, I32 lval, U32 hash);
 HE* Perl_avhv_iternext (AV *ar);
 SV* Perl_avhv_iterval (AV *ar, HE* entry);
 HV* Perl_avhv_keys (AV *ar);
 void Perl_av_clear (AV* ar);
 void Perl_av_extend (AV* ar, I32 key);
 AV* Perl_av_fake (I32 size, SV** svp);
 SV** Perl_av_fetch (AV* ar, I32 key, I32 lval);
 void Perl_av_fill (AV* ar, I32 fill);
 I32 Perl_av_len (AV* ar);
 AV* Perl_av_make (I32 size, SV** svp);
 SV* Perl_av_pop (AV* ar);
 void Perl_av_push (AV* ar, SV* val);
 void Perl_av_reify (AV* ar);
 SV* Perl_av_shift (AV* ar);
 SV** Perl_av_store (AV* ar, I32 key, SV* val);
 void Perl_av_undef (AV* ar);
 void Perl_av_unshift (AV* ar, I32 num);
 OP* Perl_bind_match (I32 type, OP* left, OP* pat);
 OP* Perl_block_end (I32 floor, OP* seq);
 I32 Perl_block_gimme (void);
 int Perl_block_start (int full);
 void Perl_boot_core_UNIVERSAL (void);
 void Perl_call_list (I32 oldscope, AV* av_list);
 I32 Perl_cando (I32 bit, I32 effective, struct stat* statbufp);

 U32 Perl_cast_ulong (double f);




 OP* Perl_ck_gvconst (OP* o);
 OP* Perl_ck_retarget (OP* o);



 OP* Perl_convert (I32 optype, I32 flags, OP* o);
 void Perl_croak (const char* pat,...) ;
 void Perl_cv_ckproto (CV* cv, GV* gv, char* p);
 CV* Perl_cv_clone (CV* proto);
 SV* Perl_cv_const_sv (CV* cv);
 SV* Perl_op_const_sv (OP* o, CV* cv);
 void Perl_cv_undef (CV* cv);
 void Perl_cx_dump (PERL_CONTEXT* cs);
 SV* Perl_filter_add (filter_t funcp, SV* datasv);
 void Perl_filter_del (filter_t funcp);
 I32 Perl_filter_read (int idx, SV* buffer, int maxlen);
 char ** Perl_get_op_descs (void);
 char ** Perl_get_op_names (void);
 char * Perl_get_no_modify (void);
 U32 * Perl_get_opargs (void);
 I32 Perl_cxinc (void);
 void Perl_deb (const char* pat,...);
 void Perl_deb_growlevel (void);
 void Perl_debprofdump (void);
 I32 Perl_debop (OP* o);
 I32 Perl_debstack (void);
 I32 Perl_debstackptrs (void);
 char* Perl_delimcpy (char* to, char* toend, char* from, char* fromend, int delim, I32* retlen);

 void Perl_deprecate (char* s);
 OP* Perl_die (const char* pat,...);
 OP* Perl_die_where (char* message);
 void Perl_dounwind (I32 cxix);
 int Perl_do_aexec (SV* really, SV** mark, SV** sp);
 int Perl_do_binmode (FILE *fp, int iotype, int flag);
 void Perl_do_chop (SV* asv, SV* sv);
 int Perl_do_close (GV* gv, int not_implicit);
 int Perl_do_eof (GV* gv);
 int Perl_do_exec (char* cmd);
 void Perl_do_execfree (void);




 void Perl_do_join (SV* sv, SV* del, SV** mark, SV** sp);
 OP* Perl_do_kv (void);




 int Perl_do_open (GV* gv, char* name, I32 len, int as_raw, int rawmode, int rawperm, FILE* supplied_fp);

 void Perl_do_pipe (SV* sv, GV* rgv, GV* wgv);
 int Perl_do_print (SV* sv, FILE* fp);
 OP* Perl_do_readline (void);
 I32 Perl_do_chomp (SV* sv);
 int Perl_do_seek (GV* gv, long pos, int whence);




 void Perl_do_sprintf (SV* sv, I32 len, SV** sarg);
 long Perl_do_sysseek (GV* gv, long pos, int whence);
 long Perl_do_tell (GV* gv);
 I32 Perl_do_trans (SV* sv, OP* arg);
 void Perl_do_vecset (SV* sv);
 void Perl_do_vop (I32 optype, SV* sv, SV* left, SV* right);
 I32 Perl_dowantarray (void);
 void Perl_dump_all (void);
 void Perl_dump_eval (void);



 void Perl_dump_form (GV* gv);
 void Perl_dump_gv (GV* gv);



 void Perl_dump_op (OP* arg);
 void Perl_dump_pm (PMOP* pm);
 void Perl_dump_packsubs (HV* stash);
 void Perl_dump_sub (GV* gv);
 void Perl_fbm_compile (SV* sv, U32 flags);
 char* Perl_fbm_instr (unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags);
 char* Perl_find_script (char *scriptname, int dosearch, char **search_ext, I32 flags);



 OP* Perl_force_list (OP* arg);
 OP* Perl_fold_constants (OP* arg);
 char* Perl_form (const char* pat, ...);
 void Perl_free_tmps (void);
 OP* Perl_gen_constant_list (OP* o);
 void Perl_gp_free (GV* gv);
 GP* Perl_gp_ref (GP* gp);
 GV* Perl_gv_AVadd (GV* gv);
 GV* Perl_gv_HVadd (GV* gv);
 GV* Perl_gv_IOadd (GV* gv);
 GV* Perl_gv_autoload4 (HV* stash, char* name, STRLEN len, I32 method);
 void Perl_gv_check (HV* stash);
 void Perl_gv_efullname (SV* sv, GV* gv);
 void Perl_gv_efullname3 (SV* sv, GV* gv, char* prefix);
 GV* Perl_gv_fetchfile (char* name);
 GV* Perl_gv_fetchmeth (HV* stash, char* name, STRLEN len, I32 level);
 GV* Perl_gv_fetchmethod (HV* stash, char* name);
 GV* Perl_gv_fetchmethod_autoload (HV* stash, char* name, I32 autoload);
 GV* Perl_gv_fetchpv (char* name, I32 add, I32 sv_type);
 void Perl_gv_fullname (SV* sv, GV* gv);
 void Perl_gv_fullname3 (SV* sv, GV* gv, char* prefix);
 void Perl_gv_init (GV* gv, HV* stash, char* name, STRLEN len, int multi);
 HV* Perl_gv_stashpv (char* name, I32 create);
 HV* Perl_gv_stashpvn (char* name, U32 namelen, I32 create);
 HV* Perl_gv_stashsv (SV* sv, I32 create);
 void Perl_hv_clear (HV* tb);
 void Perl_hv_delayfree_ent (HV* hv, HE* entry);
 SV* Perl_hv_delete (HV* tb, char* key, U32 klen, I32 flags);
 SV* Perl_hv_delete_ent (HV* tb, SV* key, I32 flags, U32 hash);
 int Perl_hv_exists (HV* tb, char* key, U32 klen);
 int Perl_hv_exists_ent (HV* tb, SV* key, U32 hash);
 SV** Perl_hv_fetch (HV* tb, char* key, U32 klen, I32 lval);
 HE* Perl_hv_fetch_ent (HV* tb, SV* key, I32 lval, U32 hash);
 void Perl_hv_free_ent (HV* hv, HE* entry);
 I32 Perl_hv_iterinit (HV* tb);
 char* Perl_hv_iterkey (HE* entry, I32* retlen);
 SV* Perl_hv_iterkeysv (HE* entry);
 HE* Perl_hv_iternext (HV* tb);
 SV* Perl_hv_iternextsv (HV* hv, char** key, I32* retlen);
 SV* Perl_hv_iterval (HV* tb, HE* entry);
 void Perl_hv_ksplit (HV* hv, IV newmax);
 void Perl_hv_magic (HV* hv, GV* gv, int how);
 SV** Perl_hv_store (HV* tb, char* key, U32 klen, SV* val, U32 hash);
 HE* Perl_hv_store_ent (HV* tb, SV* key, SV* val, U32 hash);
 void Perl_hv_undef (HV* tb);
 I32 Perl_ibcmp (char* a, char* b, I32 len);
 I32 Perl_ibcmp_locale (char* a, char* b, I32 len);
 I32 Perl_ingroup (I32 testgid, I32 effective);
 void Perl_init_stacks (void);
 U32 Perl_intro_my (void);
 char* Perl_instr (char* big, char* little);
 int Perl_io_close (IO* io);
 OP* Perl_invert (OP* cmd);
 OP* Perl_jmaybe (OP* arg);
 I32 Perl_keyword (char* d, I32 len);
 void Perl_leave_scope (I32 base);
 void Perl_lex_end (void);
 void Perl_lex_start (SV* line);
 OP* Perl_linklist (OP* o);
 OP* Perl_list (OP* o);
 OP* Perl_listkids (OP* o);
 OP* Perl_localize (OP* arg, I32 lexical);
 I32 Perl_looks_like_number (SV* sv);
 int Perl_magic_clearenv (SV* sv, MAGIC* mg);
 int Perl_magic_clear_all_env (SV* sv, MAGIC* mg);
 int Perl_magic_clearpack (SV* sv, MAGIC* mg);
 int Perl_magic_clearsig (SV* sv, MAGIC* mg);
 int Perl_magic_existspack (SV* sv, MAGIC* mg);
 int Perl_magic_freeregexp (SV* sv, MAGIC* mg);
 int Perl_magic_get (SV* sv, MAGIC* mg);
 int Perl_magic_getarylen (SV* sv, MAGIC* mg);
 int Perl_magic_getdefelem (SV* sv, MAGIC* mg);
 int Perl_magic_getglob (SV* sv, MAGIC* mg);
 int Perl_magic_getnkeys (SV* sv, MAGIC* mg);
 int Perl_magic_getpack (SV* sv, MAGIC* mg);
 int Perl_magic_getpos (SV* sv, MAGIC* mg);
 int Perl_magic_getsig (SV* sv, MAGIC* mg);
 int Perl_magic_getsubstr (SV* sv, MAGIC* mg);
 int Perl_magic_gettaint (SV* sv, MAGIC* mg);
 int Perl_magic_getuvar (SV* sv, MAGIC* mg);
 int Perl_magic_getvec (SV* sv, MAGIC* mg);
 U32 Perl_magic_len (SV* sv, MAGIC* mg);



 int Perl_magic_nextpack (SV* sv, MAGIC* mg, SV* key);
 int Perl_magic_set (SV* sv, MAGIC* mg);

 int Perl_magic_setamagic (SV* sv, MAGIC* mg);

 int Perl_magic_setarylen (SV* sv, MAGIC* mg);
 int Perl_magic_setbm (SV* sv, MAGIC* mg);
 int Perl_magic_setdbline (SV* sv, MAGIC* mg);



 int Perl_magic_setdefelem (SV* sv, MAGIC* mg);
 int Perl_magic_setenv (SV* sv, MAGIC* mg);
 int Perl_magic_setfm (SV* sv, MAGIC* mg);
 int Perl_magic_setisa (SV* sv, MAGIC* mg);
 int Perl_magic_setglob (SV* sv, MAGIC* mg);
 int Perl_magic_setmglob (SV* sv, MAGIC* mg);
 int Perl_magic_setnkeys (SV* sv, MAGIC* mg);
 int Perl_magic_setpack (SV* sv, MAGIC* mg);
 int Perl_magic_setpos (SV* sv, MAGIC* mg);
 int Perl_magic_setsig (SV* sv, MAGIC* mg);
 int Perl_magic_setsubstr (SV* sv, MAGIC* mg);
 int Perl_magic_settaint (SV* sv, MAGIC* mg);
 int Perl_magic_setuvar (SV* sv, MAGIC* mg);
 int Perl_magic_setvec (SV* sv, MAGIC* mg);
 int Perl_magic_set_all_env (SV* sv, MAGIC* mg);
 U32 Perl_magic_sizepack (SV* sv, MAGIC* mg);
 int Perl_magic_wipepack (SV* sv, MAGIC* mg);
 void Perl_magicname (char* sym, char* name, I32 namlen);
int main (int argc, char** argv, char** env);



 void Perl_markstack_grow (void);



 char* Perl_mess (const char* pat, va_list* args);
 int Perl_mg_clear (SV* sv);
 int Perl_mg_copy (SV* sv, SV* nsv, char* key, I32 klen);
 MAGIC* Perl_mg_find (SV* sv, int type);
 int Perl_mg_free (SV* sv);
 int Perl_mg_get (SV* sv);
 U32 Perl_mg_length (SV* sv);
 void Perl_mg_magical (SV* sv);
 int Perl_mg_set (SV* sv);
 I32 Perl_mg_size (SV* sv);
 OP* Perl_mod (OP* o, I32 type);
 char* Perl_moreswitches (char* s);
 OP* Perl_my (OP* o);

 char* Perl_my_bcopy (char* from, char* to, I32 len);




 void Perl_my_exit (U32 status) ;
 void Perl_my_failure_exit (void) ;
 I32 Perl_my_lstat (void);

 I32 Perl_my_memcmp (char* s1, char* s2, I32 len);





 I32 Perl_my_pclose (FILE* ptr);
 FILE* Perl_my_popen (char* cmd, char* mode);

 void Perl_my_setenv (char* nam, char* val);
 I32 Perl_my_stat (void);

 short Perl_my_swap (short s);
 long Perl_my_htonl (long l);
 long Perl_my_ntohl (long l);

 void Perl_my_unexec (void);
 OP* Perl_newANONLIST (OP* o);
 OP* Perl_newANONHASH (OP* o);
 OP* Perl_newANONSUB (I32 floor, OP* proto, OP* block);
 OP* Perl_newASSIGNOP (I32 flags, OP* left, I32 optype, OP* right);
 OP* Perl_newCONDOP (I32 flags, OP* expr, OP* trueop, OP* falseop);
 void Perl_newCONSTSUB (HV* stash, char* name, SV* sv);
 void Perl_newFORM (I32 floor, OP* o, OP* block);
 OP* Perl_newFOROP (I32 flags, char* label, line_t forline, OP* sclr, OP* expr, OP*block, OP*cont);
 OP* Perl_newLOGOP (I32 optype, I32 flags, OP* left, OP* right);
 OP* Perl_newLOOPEX (I32 type, OP* label);
 OP* Perl_newLOOPOP (I32 flags, I32 debuggable, OP* expr, OP* block);
 OP* Perl_newNULLLIST (void);
 OP* Perl_newOP (I32 optype, I32 flags);
 void Perl_newPROG (OP* o);
 OP* Perl_newRANGE (I32 flags, OP* left, OP* right);
 OP* Perl_newSLICEOP (I32 flags, OP* subscript, OP* Perl_list);
 OP* Perl_newSTATEOP (I32 flags, char* label, OP* o);
 CV* Perl_newSUB (I32 floor, OP* o, OP* proto, OP* block);
 CV* Perl_newXS (char* name, void (*subaddr)(CV* cv ), char* filename);
 AV* Perl_newAV (void);
 OP* Perl_newAVREF (OP* o);
 OP* Perl_newBINOP (I32 type, I32 flags, OP* first, OP* last);
 OP* Perl_newCVREF (I32 flags, OP* o);
 OP* Perl_newGVOP (I32 type, I32 flags, GV* gv);
 GV* Perl_newGVgen (char* pack);
 OP* Perl_newGVREF (I32 type, OP* o);
 OP* Perl_newHVREF (OP* o);
 HV* Perl_newHV (void);
 HV* Perl_newHVhv (HV* hv);
 IO* Perl_newIO (void);
 OP* Perl_newLISTOP (I32 type, I32 flags, OP* first, OP* last);
 OP* Perl_newPMOP (I32 type, I32 flags);
 OP* Perl_newPVOP (I32 type, I32 flags, char* pv);
 SV* Perl_newRV (SV* pref);
 SV* Perl_newRV_noinc (SV *sv);
 SV* Perl_newSV (STRLEN len);
 OP* Perl_newSVREF (OP* o);
 OP* Perl_newSVOP (I32 type, I32 flags, SV* sv);
 SV* Perl_newSViv (IV i);
 SV* Perl_newSVnv (double n);
 SV* Perl_newSVpv (char* s, STRLEN len);
 SV* Perl_newSVpvn (char *s, STRLEN len);
 SV* Perl_newSVpvf (const char* pat, ...);
 SV* Perl_newSVrv (SV* rv, char* classname);
 SV* Perl_newSVsv (SV* old);
 OP* Perl_newUNOP (I32 type, I32 flags, OP* first);
 OP* Perl_newWHILEOP (I32 flags, I32 debuggable, LOOP* loop, I32 whileline, OP* expr, OP* block, OP* cont);




 PERL_SI * Perl_new_stackinfo (I32 stitems, I32 cxitems);
 FILE* Perl_nextargv (GV* gv);
 char* Perl_ninstr (char* big, char* bigend, char* little, char* lend);
 OP* Perl_oopsCV (OP* o);
 void Perl_op_free (OP* arg);
 void Perl_package (OP* o);
 PADOFFSET Perl_pad_alloc (I32 optype, U32 tmptype);
 PADOFFSET Perl_pad_allocmy (char* name);
 PADOFFSET Perl_pad_findmy (char* name);
 OP* Perl_oopsAV (OP* o);
 OP* Perl_oopsHV (OP* o);
 void Perl_pad_leavemy (I32 fill);
 SV* Perl_pad_sv (PADOFFSET po);
 void Perl_pad_free (PADOFFSET po);
 void Perl_pad_reset (void);
 void Perl_pad_swipe (PADOFFSET po);
 void Perl_peep (OP* o);

PerlInterpreter* perl_alloc (void);




void perl_atexit (void(*fn)(void *), void*);

 I32 perl_call_argv (char* sub_name, I32 flags, char** argv);
 I32 perl_call_method (char* methname, I32 flags);
 I32 perl_call_pv (char* sub_name, I32 flags);
 I32 perl_call_sv (SV* sv, I32 flags);




void perl_construct (PerlInterpreter* sv_interp);
void perl_destruct (PerlInterpreter* sv_interp);

 SV* perl_eval_pv (char* p, I32 croak_on_error);
 I32 perl_eval_sv (SV* sv, I32 flags);



void perl_free (PerlInterpreter* sv_interp);

 SV* perl_get_sv (char* name, I32 create);
 AV* perl_get_av (char* name, I32 create);
 HV* perl_get_hv (char* name, I32 create);
 CV* perl_get_cv (char* name, I32 create);
 int perl_init_i18nl10n (int printwarn);
 int perl_init_i18nl14n (int printwarn);
 void perl_new_collate (char* newcoll);
 void perl_new_ctype (char* newctype);
 void perl_new_numeric (char* newcoll);
 void perl_set_numeric_local (void);
 void perl_set_numeric_standard (void);



int perl_parse (PerlInterpreter* sv_interp, void(*xsinit)(void), int argc, char** argv, char** env);

 void perl_require_pv (char* pv);




int perl_run (PerlInterpreter* sv_interp);

 void Perl_pidgone (int pid, int status);
 void Perl_pmflag (U16* pmfl, int ch);
 OP* Perl_pmruntime (OP* pm, OP* expr, OP* repl);
 OP* Perl_pmtrans (OP* o, OP* expr, OP* repl);
 OP* Perl_pop_return (void);
 void Perl_pop_scope (void);
 OP* Perl_prepend_elem (I32 optype, OP* head, OP* tail);
 void Perl_push_return (OP* o);
 void Perl_push_scope (void);
 OP* Perl_ref (OP* o, I32 type);
 OP* Perl_refkids (OP* o, I32 type);
 void Perl_regdump (regexp* r);
 I32 Perl_pregexec (regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, U32 nosave);
 void Perl_pregfree (struct regexp* r);
 regexp* Perl_pregcomp (char* exp, char* xend, PMOP* pm);
 I32 Perl_regexec_flags (regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, void* data, U32 flags);


 regnode* Perl_regnext (regnode* p);
 void Perl_regprop (SV* sv, regnode* o);
 void Perl_repeatcpy (char* to, char* from, I32 len, I32 count);
 char* Perl_rninstr (char* big, char* bigend, char* little, char* lend);
 Sighandler_t Perl_rsignal (int i, Sighandler_t t);
 int Perl_rsignal_restore (int i, Sigsave_t* t);
 int Perl_rsignal_save (int i, Sighandler_t t1, Sigsave_t* t2);
 Sighandler_t Perl_rsignal_state (int i);
 void Perl_rxres_free (void** rsp);
 void Perl_rxres_restore (void** rsp, REGEXP* prx);
 void Perl_rxres_save (void** rsp, REGEXP* prx);



 char* Perl_savepv (char* sv);
 char* Perl_savepvn (char* sv, I32 len);
 void Perl_savestack_grow (void);
 void Perl_save_aelem (AV* av, I32 idx, SV **sptr);
 void Perl_save_aptr (AV** aptr);
 AV* Perl_save_ary (GV* gv);
 void Perl_save_clearsv (SV** svp);
 void Perl_save_delete (HV* hv, char* key, I32 klen);





void Perl_save_destructor (void (*f)(void*), void* p);


 void Perl_save_freesv (SV* sv);
 void Perl_save_freeop (OP* o);
 void Perl_save_freepv (char* pv);
 void Perl_save_gp (GV* gv, I32 empty);
 HV* Perl_save_hash (GV* gv);
 void Perl_save_helem (HV* hv, SV *key, SV **sptr);
 void Perl_save_hints (void);
 void Perl_save_hptr (HV** hptr);
 void Perl_save_I16 (I16* intp);
 void Perl_save_I32 (I32* intp);
 void Perl_save_int (int* intp);
 void Perl_save_item (SV* item);
 void Perl_save_iv (IV* iv);
 void Perl_save_list (SV** sarg, I32 maxsarg);
 void Perl_save_long (long* longp);
 void Perl_save_nogv (GV* gv);
 void Perl_save_op (void);
 SV* Perl_save_scalar (GV* gv);
 void Perl_save_pptr (char** pptr);
 void Perl_save_sptr (SV** sptr);
 SV* Perl_save_svref (SV** sptr);
 SV** Perl_save_threadsv (PADOFFSET i);
 OP* Perl_sawparens (OP* o);
 OP* Perl_scalar (OP* o);
 OP* Perl_scalarkids (OP* o);
 OP* Perl_scalarseq (OP* o);
 OP* Perl_scalarvoid (OP* o);
 UV Perl_scan_hex (char* start, I32 len, I32* retlen);
 char* Perl_scan_num (char* s);
 UV Perl_scan_oct (char* start, I32 len, I32* retlen);
 OP* Perl_scope (OP* o);
 char* Perl_screaminstr (SV* bigsv, SV* littlesv, I32 start_shift, I32 end_shift, I32 *state, I32 last);

 I32 Perl_setenv_getix (char* nam);

 void Perl_setdefout (GV* gv);
 char* Perl_sharepvn (char* sv, I32 len, U32 hash);
 HEK* Perl_share_hek (char* sv, I32 len, U32 hash);
 void Perl_sighandler (int sig);
 SV** Perl_stack_grow (SV** sp, SV**p, int n);
 I32 Perl_start_subparse (I32 is_format, U32 flags);
 void Perl_sub_crush_depth (CV* cv);
 int Perl_sv_2bool (SV* sv);
 CV* Perl_sv_2cv (SV* sv, HV** st, GV** gvp, I32 lref);
 IO* Perl_sv_2io (SV* sv);
 IV Perl_sv_2iv (SV* sv);
 SV* Perl_sv_2mortal (SV* sv);
 double Perl_sv_2nv (SV* sv);
 char* Perl_sv_2pv (SV* sv, STRLEN* lp);
 UV Perl_sv_2uv (SV* sv);
 IV Perl_sv_iv (SV* sv);
 UV Perl_sv_uv (SV* sv);
 double Perl_sv_nv (SV* sv);
 char * Perl_sv_pvn (SV *sv, STRLEN *len);
 I32 Perl_sv_true (SV *sv);
 void Perl_sv_add_arena (char* ptr, U32 size, U32 flags);
 int Perl_sv_backoff (SV* sv);
 SV* Perl_sv_bless (SV* sv, HV* stash);
 void Perl_sv_catpvf (SV* sv, const char* pat, ...);
 void Perl_sv_catpv (SV* sv, char* ptr);
 void Perl_sv_catpvn (SV* sv, char* ptr, STRLEN len);
 void Perl_sv_catsv (SV* dsv, SV* ssv);
 void Perl_sv_chop (SV* sv, char* ptr);
 void Perl_sv_clean_all (void);
 void Perl_sv_clean_objs (void);
 void Perl_sv_clear (SV* sv);
 I32 Perl_sv_cmp (SV* sv1, SV* sv2);
 I32 Perl_sv_cmp_locale (SV* sv1, SV* sv2);



 OP* Perl_sv_compile_2op (SV* sv, OP** startp, char* code, AV** avp);
 void Perl_sv_dec (SV* sv);
 void Perl_sv_dump (SV* sv);
 int Perl_sv_derived_from (SV* sv, char* name);
 I32 Perl_sv_eq (SV* sv1, SV* sv2);
 void Perl_sv_free (SV* sv);
 void Perl_sv_free_arenas (void);
 char* Perl_sv_gets (SV* sv, FILE* fp, I32 append);

 char* Perl_sv_grow (SV* sv, I32 newlen);



 void Perl_sv_inc (SV* sv);
 void Perl_sv_insert (SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen);
 int Perl_sv_isa (SV* sv, char* name);
 int Perl_sv_isobject (SV* sv);
 STRLEN Perl_sv_len (SV* sv);
 void Perl_sv_magic (SV* sv, SV* obj, int how, char* name, I32 namlen);
 SV* Perl_sv_mortalcopy (SV* oldsv);
 SV* Perl_sv_newmortal (void);
 SV* Perl_sv_newref (SV* sv);
 char* Perl_sv_peek (SV* sv);
 char* Perl_sv_pvn_force (SV* sv, STRLEN* lp);
 char* Perl_sv_reftype (SV* sv, int ob);
 void Perl_sv_replace (SV* sv, SV* nsv);
 void Perl_sv_report_used (void);
 void Perl_sv_reset (char* s, HV* stash);
 void Perl_sv_setpvf (SV* sv, const char* pat, ...);
 void Perl_sv_setiv (SV* sv, IV num);
 void Perl_sv_setpviv (SV* sv, IV num);
 void Perl_sv_setuv (SV* sv, UV num);
 void Perl_sv_setnv (SV* sv, double num);
 SV* Perl_sv_setref_iv (SV* rv, char* classname, IV iv);
 SV* Perl_sv_setref_nv (SV* rv, char* classname, double nv);
 SV* Perl_sv_setref_pv (SV* rv, char* classname, void* pv);
 SV* Perl_sv_setref_pvn (SV* rv, char* classname, char* pv, I32 n);
 void Perl_sv_setpv (SV* sv, const char* ptr);
 void Perl_sv_setpvn (SV* sv, const char* ptr, STRLEN len);
 void Perl_sv_setsv (SV* dsv, SV* ssv);
 void Perl_sv_taint (SV* sv);
 int Perl_sv_tainted (SV* sv);
 int Perl_sv_unmagic (SV* sv, int type);
 void Perl_sv_unref (SV* sv);
 void Perl_sv_untaint (SV* sv);
 int Perl_sv_upgrade (SV* sv, U32 mt);
 void Perl_sv_usepvn (SV* sv, char* ptr, STRLEN len);
 void Perl_sv_vcatpvfn (SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, int *used_locale);


 void Perl_sv_vsetpvfn (SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, int *used_locale);


 void Perl_taint_env (void);
 void Perl_taint_proper (const char* f, char* s);






 void Perl_unsharepvn (char* sv, I32 len, U32 hash);
 void Perl_unshare_hek (HEK* hek);
 void Perl_utilize (int aver, I32 floor, OP* version, OP* id, OP* arg);
 void Perl_vivify_defelem (SV* sv);
 void Perl_vivify_ref (SV* sv, U32 to_what);
 I32 Perl_wait4pid (int pid, int* statusp, int flags);
 void Perl_warn (const char* pat,...);
 void Perl_watch (char** addr);
 I32 Perl_whichsig (char* sig);
 int Perl_yyerror (char* s);
 int Perl_yylex (void);
 int Perl_yyparse (void);
 int Perl_yywarn (char* s);


 void * Perl_safemalloc (size_t nbytes);
 void * Perl_safecalloc (size_t elements, size_t size);
 void * Perl_saferealloc (void * where, size_t nbytes);
 void Perl_safefree (void * where);
# 879 "proto.h"






 void Perl_byterun (FILE *fp);


 void Perl_sv_catpvf_mg (SV *sv, const char* pat, ...);
 void Perl_sv_catpv_mg (SV *sv, char *ptr);
 void Perl_sv_catpvn_mg (SV *sv, char *ptr, STRLEN len);
 void Perl_sv_catsv_mg (SV *dstr, SV *sstr);
 void Perl_sv_setpvf_mg (SV *sv, const char* pat, ...);
 void Perl_sv_setiv_mg (SV *sv, IV i);
 void Perl_sv_setpviv_mg (SV *sv, IV iv);
 void Perl_sv_setuv_mg (SV *sv, UV u);
 void Perl_sv_setnv_mg (SV *sv, double num);
 void Perl_sv_setpv_mg (SV *sv, const char *ptr);
 void Perl_sv_setpvn_mg (SV *sv, const char *ptr, STRLEN len);
 void Perl_sv_setsv_mg (SV *dstr, SV *sstr);
 void Perl_sv_usepvn_mg (SV *sv, char *ptr, STRLEN len);

 MGVTBL* Perl_get_vtbl (int vtbl_id);
 OP* Perl_dofile (OP* term);
 void Perl_save_generic_svref (SV** sptr);
# 2123 "perl.h" 2
# 2134 "perl.h"
# 1 "embedvar.h" 1
# 2135 "perl.h" 2
# 2146 "perl.h"
# 1 "perlvars.h" 1
# 21 "perlvars.h"
extern PerlInterpreter * PL_curinterp;
# 42 "perlvars.h"
extern int PL_ninterps;

extern int PL_uid;
extern int PL_euid;
extern int PL_gid;
extern int PL_egid;
extern int PL_nomemok;
extern U32 PL_an;
extern U32 PL_cop_seqmax;
extern U16 PL_op_seqmax;
extern U32 PL_evalseq;
extern char ** PL_origenviron;
extern U32 PL_origalen;
extern HV * PL_pidstatus;
extern int PL_maxo ;
extern char * PL_osname;
extern char * PL_sh_path ;
extern Sighandler_t PL_sighandlerp;

extern XPV* PL_xiv_arenaroot;
extern IV * PL_xiv_root;
extern double * PL_xnv_root;
extern XRV * PL_xrv_root;
extern XPV * PL_xpv_root;
extern HE * PL_he_root;
extern char * PL_nice_chunk;
extern U32 PL_nice_chunk_size;




extern runops_proc_t * PL_runops ;


extern char PL_tokenbuf[256];
extern STRLEN PL_na;


extern SV PL_sv_undef;
extern SV PL_sv_no;
extern SV PL_sv_yes;





extern U32 PL_lex_state;
extern U32 PL_lex_defer;
extern expectation PL_lex_expect;
extern I32 PL_lex_brackets;
extern I32 PL_lex_formbrack;
extern I32 PL_lex_fakebrack;
extern I32 PL_lex_casemods;
extern I32 PL_lex_dojoin;
extern I32 PL_lex_starts;
extern SV * PL_lex_stuff;
extern SV * PL_lex_repl;
extern OP * PL_lex_op;
extern OP * PL_lex_inpat;
extern I32 PL_lex_inwhat;
extern char * PL_lex_brackstack;
extern char * PL_lex_casestack;


extern YYSTYPE PL_nextval[5];
extern I32 PL_nexttype[5];
extern I32 PL_nexttoke;

extern SV * PL_linestr;
extern char * PL_bufptr;
extern char * PL_oldbufptr;
extern char * PL_oldoldbufptr;
extern char * PL_bufend;
extern expectation PL_expect ;

extern I32 PL_multi_start;
extern I32 PL_multi_end;
extern I32 PL_multi_open;
extern I32 PL_multi_close;

extern I32 PL_error_count;
extern I32 PL_subline;
extern SV * PL_subname;

extern I32 PL_min_intro_pending;
extern I32 PL_max_intro_pending;
extern I32 PL_padix;
extern I32 PL_padix_floor;
extern I32 PL_pad_reset_pending;

extern I32 PL_thisexpr;
extern char * PL_last_uni;
extern char * PL_last_lop;
extern U16 PL_last_lop_op;
extern int PL_in_my;
extern HV * PL_in_my_stash;




extern U32 PL_hints;

extern int PL_do_undump;
extern volatile U32 PL_debug;




extern long PL_amagic_generation;
# 174 "perlvars.h"
extern const char * PL_Yes ;
extern const char * PL_No ;
extern const char * PL_hexdigit ;
extern const char * PL_patleave ;

extern SV * PL_specialsv_list[4];
# 2147 "perl.h" 2




# 1 "intrpvar.h" 1
# 17 "intrpvar.h"
extern int PL_origargc;
extern char ** PL_origargv;
extern GV * PL_envgv;
extern GV * PL_siggv;
extern GV * PL_incgv;
extern GV * PL_hintgv;
extern char * PL_origfilename;
extern SV * PL_diehook;
extern SV * PL_warnhook;
extern SV * PL_parsehook;
extern char * PL_cddir;
extern int PL_minus_c;
extern char PL_patchlevel[10];
extern char ** PL_localpatches;
extern char * PL_splitstr ;
extern int PL_preprocess;
extern int PL_minus_n;
extern int PL_minus_p;
extern int PL_minus_l;
extern int PL_minus_a;
extern int PL_minus_F;
extern int PL_doswitches;
extern int PL_dowarn;
extern int PL_doextract;
extern int PL_sawampersand;
extern int PL_sawstudy;
extern int PL_sawvec;
extern int PL_unsafe;
extern char * PL_inplace;
extern SV * PL_e_script;
extern U32 PL_perldb;



extern int PL_perl_destruct_level ;


extern time_t PL_basetime;
extern SV * PL_formfeed;


extern I32 PL_maxsysfd ;

extern int PL_multiline;
extern I32 PL_statusvalue;





extern GV * PL_stdingv;
extern GV * PL_defgv;
extern GV * PL_argvgv;
extern GV * PL_argvoutgv;



extern GV * PL_leftgv;
extern GV * PL_ampergv;
extern GV * PL_rightgv;



extern GV * PL_replgv;


extern GV * PL_errgv;


extern GV * PL_DBgv;
extern GV * PL_DBline;
extern GV * PL_DBsub;
extern SV * PL_DBsingle;
extern SV * PL_DBtrace;
extern SV * PL_DBsignal;
extern AV * PL_lineary;
extern AV * PL_dbargs;


extern HV * PL_debstash;
extern HV * PL_globalstash;
extern SV * PL_curstname;
extern AV * PL_beginav;
extern AV * PL_endav;
extern AV * PL_initav;
extern HV * PL_strtab;
extern U32 PL_sub_generation ;


extern I32 PL_sv_count;
extern I32 PL_sv_objcount;
extern SV* PL_sv_root;
extern SV* PL_sv_arenaroot;


extern I32 PL_lastspbase;
extern I32 PL_lastsize;
extern int PL_forkprocess;


extern AV * PL_fdpid;


extern int PL_tainting;
extern char * PL_op_mask ;
extern char * PL_last_proto;


extern I32 PL_dlevel;
extern I32 PL_dlmax ;
extern char * PL_debname;
extern char * PL_debdelim;


extern CV * PL_main_cv;
extern OP * PL_main_root;
extern OP * PL_main_start;
extern OP * PL_eval_root;
extern OP * PL_eval_start;


extern COP * PL_curcopdb ;
extern line_t PL_copline ;


extern SV PL_strchop;
extern int PL_filemode;
extern int PL_lastfd;
extern char * PL_oldname;
extern char ** PL_Argv;
extern char * PL_Cmd;
extern SV * PL_mystrk;
extern I32 PL_dumplvl;
extern PMOP * PL_oldlastpm;
extern I32 PL_gensym;
extern int PL_preambled;
extern AV * PL_preambleav;
extern int PL_laststatval ;
extern I32 PL_laststype ;
extern SV * PL_mess_sv;


extern char * PL_ors;
extern STRLEN PL_orslen;
extern char * PL_ofmt;


extern PerlExitListEntry * PL_exitlist ;

extern I32 PL_exitlistlen ;
extern HV * PL_modglobal;


extern U32 * PL_profiledata ;
extern FILE * volatile PL_rsfp ;
extern AV * PL_rsfp_filters ;

extern COP PL_compiling;

extern CV * PL_compcv;
extern AV * PL_comppad;
extern AV * PL_comppad_name;
extern I32 PL_comppad_name_fill;
extern I32 PL_comppad_name_floor;







extern int PL_generation ;
extern CV * PL_DBcv;
extern char* PL_archpat_auto;

extern int PL_in_clean_objs ;
extern int PL_in_clean_all ;

extern char * PL_linestart;
extern char PL_pending_ident;
extern SUBLEXINFO PL_sublex_info;







extern int PL_bytecode_iv_overflows ;
extern SV * PL_bytecode_sv;
extern XPV PL_bytecode_pv;
extern void ** PL_bytecode_obj_list;
extern I32 PL_bytecode_obj_list_fill ;
# 2152 "perl.h" 2

# 1 "thrdvar.h" 1
# 20 "thrdvar.h"
extern SV ** PL_stack_sp;



extern OP * PL_op;

extern SV ** PL_curpad;

extern SV ** PL_stack_base;
extern SV ** PL_stack_max;

extern I32 * PL_scopestack;
extern I32 PL_scopestack_ix;
extern I32 PL_scopestack_max;

extern ANY * PL_savestack;

extern I32 PL_savestack_ix;
extern I32 PL_savestack_max;

extern SV ** PL_tmps_stack;
extern I32 PL_tmps_ix ;
extern I32 PL_tmps_floor ;
extern I32 PL_tmps_max;

extern I32 * PL_markstack;
extern I32 * PL_markstack_ptr;
extern I32 * PL_markstack_max;

extern OP ** PL_retstack;
extern I32 PL_retstack_ix;
extern I32 PL_retstack_max;

extern SV * PL_Sv;
extern XPV * PL_Xpv;


extern struct stat PL_statbuf;
extern struct stat PL_statcache;
extern GV * PL_statgv;
extern SV * PL_statname ;


extern struct tms PL_timesbuf;



extern int PL_tainted;
extern PMOP * PL_curpm;
extern SV * PL_nrs;
extern SV * PL_rs;
extern GV * PL_last_in_gv;
extern char * PL_ofs;
extern STRLEN PL_ofslen;
extern GV * PL_defoutgv;
extern char * PL_chopset ;
extern SV * PL_formtarget;
extern SV * PL_bodytarget;
extern SV * PL_toptarget;


extern HV * PL_defstash;
extern HV * PL_curstash;

extern OP * PL_restartop;
extern COP * volatile PL_curcop ;
extern volatile int PL_in_eval;
extern int PL_delaymagic;
extern int PL_dirty;
extern int PL_localizing;

extern AV * PL_curstack;
extern PERL_SI * PL_curstackinfo;
extern AV * PL_mainstack;
extern JMPENV * PL_top_env;
extern JMPENV PL_start_env;


extern SV * PL_av_fetch_sv;
extern SV * PL_hv_fetch_sv;
extern HE PL_hv_fetch_ent_mh;

extern I32 PL_modcount;

extern OP* PL_lastgotoprobe;


extern OP * PL_sortcop;
extern HV * PL_sortstash;
extern GV * PL_firstgv;
extern GV * PL_secondgv;
extern I32 PL_sortcxix;



extern I32 * PL_screamfirst;
extern I32 * PL_screamnext;
extern I32 PL_maxscream ;
extern SV * PL_lastscream;

extern regnode PL_regdummy;
extern char* PL_regcomp_parse;
extern char* PL_regxend;
extern regnode* PL_regcode;
extern I32 PL_regnaughty;
extern I32 PL_regsawback;
extern char * PL_regprecomp;
extern I32 PL_regnpar;
extern I32 PL_regsize;
extern U16 PL_regflags;
extern U32 PL_regseen;
extern I32 PL_seen_zerolen;
extern I32 PL_seen_evals;
extern regexp * PL_regcomp_rx;
extern I32 PL_extralen;
extern int PL_colorset;
extern char * PL_colors[4];
extern char * PL_reginput;
extern char * PL_regbol;
extern char * PL_regeol;
extern char ** PL_regstartp;
extern char ** PL_regendp;
extern U32 * PL_reglastparen;
extern char * PL_regtill;
extern char PL_regprev;
extern char ** PL_reg_start_tmp;
extern U32 PL_reg_start_tmpl;
extern struct reg_data * PL_regdata;

extern char * PL_bostr;
extern U32 PL_reg_flags;
extern I32 PL_reg_eval_set;
extern I32 PL_regnarrate;
extern regnode * PL_regprogram;
extern int PL_regindent ;
extern CURCUR * PL_regcc;

extern regcomp_t PL_regcompp ;

extern regexec_t PL_regexecp ;

extern int PL_reginterp_cnt ;
# 2154 "perl.h" 2
# 2317 "perl.h"
extern MGVTBL Perl_vtbl_sv;
extern MGVTBL Perl_vtbl_env;
extern MGVTBL Perl_vtbl_envelem;
extern MGVTBL Perl_vtbl_sig;
extern MGVTBL Perl_vtbl_sigelem;
extern MGVTBL Perl_vtbl_pack;
extern MGVTBL Perl_vtbl_packelem;
extern MGVTBL Perl_vtbl_dbline;
extern MGVTBL Perl_vtbl_isa;
extern MGVTBL Perl_vtbl_isaelem;
extern MGVTBL Perl_vtbl_arylen;
extern MGVTBL Perl_vtbl_glob;
extern MGVTBL Perl_vtbl_mglob;
extern MGVTBL Perl_vtbl_nkeys;
extern MGVTBL Perl_vtbl_taint;
extern MGVTBL Perl_vtbl_substr;
extern MGVTBL Perl_vtbl_vec;
extern MGVTBL Perl_vtbl_pos;
extern MGVTBL Perl_vtbl_bm;
extern MGVTBL Perl_vtbl_fm;
extern MGVTBL Perl_vtbl_uvar;





extern MGVTBL Perl_vtbl_defelem;
extern MGVTBL Perl_vtbl_regexp;






extern MGVTBL Perl_vtbl_amagic;
extern MGVTBL Perl_vtbl_amagicelem;
# 2393 "perl.h"
extern const char * Perl_AMG_names[58];


struct am_table {
  long was_ok_sub;
  long was_ok_am;
  U32 flags;
  CV* table[58];
  long fallback;
};
struct am_table_short {
  long was_ok_sub;
  long was_ok_am;
  U32 flags;
};
typedef struct am_table AMT;
typedef struct am_table_short AMTS;
# 2420 "perl.h"
enum {
  Perl_fallback_amg, Perl_abs_amg,
  Perl_bool__amg, Perl_nomethod_amg,
  Perl_string_amg, Perl_numer_amg,
  Perl_add_amg, Perl_add_ass_amg,
  Perl_subtr_amg, Perl_subtr_ass_amg,
  Perl_mult_amg, Perl_mult_ass_amg,
  Perl_div_amg, Perl_div_ass_amg,
  modulo_amg, modulo_ass_amg,
  Perl_pow_amg, Perl_pow_ass_amg,
  Perl_lshift_amg, Perl_lshift_ass_amg,
  Perl_rshift_amg, Perl_rshift_ass_amg,
  Perl_band_amg, band_ass_amg,
  Perl_bor_amg, bor_ass_amg,
  Perl_bxor_amg, bxor_ass_amg,
  Perl_lt_amg, Perl_le_amg,
  Perl_gt_amg, Perl_ge_amg,
  Perl_eq_amg, Perl_ne_amg,
  Perl_ncmp_amg, Perl_scmp_amg,
  Perl_slt_amg, Perl_sle_amg,
  Perl_sgt_amg, Perl_sge_amg,
  Perl_seq_amg, Perl_sne_amg,
  Perl_not_amg, Perl_compl_amg,
  Perl_inc_amg, Perl_dec_amg,
  Perl_atan2_amg, Perl_cos_amg,
  Perl_sin_amg, Perl_exp_amg,
  Perl_log_amg, Perl_sqrt_amg,
  Perl_repeat_amg, Perl_repeat_ass_amg,
  Perl_concat_amg, Perl_concat_ass_amg,
  copy_amg, Perl_neg_amg
};
# 3 "universal.c" 2






static SV *
isa_lookup(HV *stash, char *name, int len, int level)
{
    AV* av;
    GV* gv;
    GV** gvp;
    HV* hv = ((HV*)((void *)0));

    if (!stash)
 return &PL_sv_undef;

    if((!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (((XPVHV*) (stash)->sv_any)->xhv_name) && __builtin_constant_p (name) && (__s1_len = strlen (((XPVHV*) (stash)->sv_any)->xhv_name), __s2_len = strlen (name), (!((size_t)(const void *)((((XPVHV*) (stash)->sv_any)->xhv_name) + 1) - (size_t)(const void *)(((XPVHV*) (stash)->sv_any)->xhv_name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s2_len >= 4)) ? Perl_my_memcmp ((__const char *) (((XPVHV*) (stash)->sv_any)->xhv_name), (__const char *) (name), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (((XPVHV*) (stash)->sv_any)->xhv_name) && ((size_t)(const void *)((((XPVHV*) (stash)->sv_any)->xhv_name) + 1) - (size_t)(const void *)(((XPVHV*) (stash)->sv_any)->xhv_name) == 1) && (__s1_len = strlen (((XPVHV*) (stash)->sv_any)->xhv_name), __s1_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (((XPVHV*) (stash)->sv_any)->xhv_name))[0] - ((__const unsigned char *) (__const char *)(name))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (((XPVHV*) (stash)->sv_any)->xhv_name))[1] - ((__const unsigned char *) (__const char *) (name))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (((XPVHV*) (stash)->sv_any)->xhv_name))[2] - ((__const unsigned char *) (__const char *) (name))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (((XPVHV*) (stash)->sv_any)->xhv_name))[3] - ((__const unsigned char *) (__const char *) (name))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (name); register int __result = (((__const unsigned char *) (__const char *) (((XPVHV*) (stash)->sv_any)->xhv_name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (((XPVHV*) (stash)->sv_any)->xhv_name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (((XPVHV*) (stash)->sv_any)->xhv_name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (((XPVHV*) (stash)->sv_any)->xhv_name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s2_len = strlen (name), __s2_len < 4) ? (__builtin_constant_p (((XPVHV*) (stash)->sv_any)->xhv_name) && ((size_t)(const void *)((((XPVHV*) (stash)->sv_any)->xhv_name) + 1) - (size_t)(const void *)(((XPVHV*) (stash)->sv_any)->xhv_name) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (((XPVHV*) (stash)->sv_any)->xhv_name))[0] - ((__const unsigned char *) (__const char *)(name))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (((XPVHV*) (stash)->sv_any)->xhv_name))[1] - ((__const unsigned char *) (__const char *) (name))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (((XPVHV*) (stash)->sv_any)->xhv_name))[2] - ((__const unsigned char *) (__const char *) (name))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (((XPVHV*) (stash)->sv_any)->xhv_name))[3] - ((__const unsigned char *) (__const char *) (name))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (((XPVHV*) (stash)->sv_any)->xhv_name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (name))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (name))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (name))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (name))[3]); } } __result; }))) : strcmp (((XPVHV*) (stash)->sv_any)->xhv_name, name)))); })))
 return &PL_sv_yes;

    if (level > 100)
 Perl_croak("Recursive inheritance detected in package '%s'", ((XPVHV*) (stash)->sv_any)->xhv_name);

    gvp = (GV**)Perl_hv_fetch(stash, "::ISA::CACHE::", 14, (0));

    if (gvp && (gv = *gvp) != (GV*)&PL_sv_undef && (hv = (((((XPVGV*)(gv)->sv_any)->xgv_gp))->gp_hv))) {
 SV* sv;
 SV** svp = (SV**)Perl_hv_fetch(hv, name, len, (0));
 if (svp && (sv = *svp) != (SV*)&PL_sv_undef)
     return sv;
    }

    gvp = (GV**)Perl_hv_fetch(stash,"ISA",3,(0));

    if (gvp && (gv = *gvp) != (GV*)&PL_sv_undef && (av = ((((XPVGV*)(gv)->sv_any)->xgv_gp)->gp_av))) {
 if(!hv) {
     gvp = (GV**)Perl_hv_fetch(stash, "::ISA::CACHE::", 14, (1));

     gv = *gvp;

     if (((gv)->sv_flags & 0xff) != SVt_PVGV)
  Perl_gv_init(gv, stash, "::ISA::CACHE::", 14, (1));

     hv = ((((XPVGV*)(gv)->sv_any)->xgv_gp)->gp_hv ? (((XPVGV*)(gv)->sv_any)->xgv_gp)->gp_hv : (((XPVGV*)(Perl_gv_HVadd(gv))->sv_any)->xgv_gp)->gp_hv);
 }
 if(hv) {
     SV** svp = ((SV**)((XPVAV*) (av)->sv_any)->xav_array);

     I32 items = ((XPVAV*) (av)->sv_any)->xav_fill + 1;
     while (items--) {
  SV* sv = *svp++;
  HV* basestash = Perl_gv_stashsv(sv, (0));
  if (!basestash) {
      if (PL_dowarn)
   Perl_warn("Can't locate package %s for @%s::ISA",
       ((XPV*) (sv)->sv_any)->xpv_pv, ((XPVHV*) (stash)->sv_any)->xhv_name);
      continue;
  }
  if(&PL_sv_yes == isa_lookup(basestash, name, len, level + 1)) {
      (void)Perl_hv_store(hv,name,len,&PL_sv_yes,0);
      return &PL_sv_yes;
  }
     }
     (void)Perl_hv_store(hv,name,len,&PL_sv_no,0);
 }
    }

    return (((!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("UNIVERSAL") && (__s1_len = strlen (name), __s2_len = strlen ("UNIVERSAL"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("UNIVERSAL") + 1) - (size_t)(const void *)("UNIVERSAL") == 1) || __s2_len >= 4)) ? Perl_my_memcmp ((__const char *) (name), (__const char *) ("UNIVERSAL"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("UNIVERSAL") && ((size_t)(const void *)(("UNIVERSAL") + 1) - (size_t)(const void *)("UNIVERSAL") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (name))[0] - ((__const unsigned char *) (__const char *)("UNIVERSAL"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - ((__const unsigned char *) (__const char *) ("UNIVERSAL"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - ((__const unsigned char *) (__const char *) ("UNIVERSAL"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - ((__const unsigned char *) (__const char *) ("UNIVERSAL"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("UNIVERSAL"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("UNIVERSAL") && ((size_t)(const void *)(("UNIVERSAL") + 1) - (size_t)(const void *)("UNIVERSAL") == 1) && (__s2_len = strlen ("UNIVERSAL"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (name))[0] - ((__const unsigned char *) (__const char *)("UNIVERSAL"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - ((__const unsigned char *) (__const char *) ("UNIVERSAL"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - ((__const unsigned char *) (__const char *) ("UNIVERSAL"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - ((__const unsigned char *) (__const char *) ("UNIVERSAL"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("UNIVERSAL"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("UNIVERSAL"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("UNIVERSAL"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("UNIVERSAL"))[3]); } } __result; }))) : strcmp (name, "UNIVERSAL")))); }))) ? &PL_sv_yes : &PL_sv_no);
}

int
Perl_sv_derived_from(SV *sv, char *name)
{
    SV *rv;
    char *type;
    HV *stash;

    stash = ((HV*)((void *)0));
    type = ((char*)((void *)0));

    if (((sv)->sv_flags & 0x00002000))
        Perl_mg_get(sv) ;

    if (((sv)->sv_flags & 0x00080000)) {
        sv = ((XRV*) (sv)->sv_any)->xrv_rv;
        type = Perl_sv_reftype(sv,0);
        if(((sv)->sv_flags & 0x00001000))
            stash = ((XPVMG*) (sv)->sv_any)->xmg_stash;
    }
    else {
        stash = Perl_gv_stashsv(sv, (0));
    }

    return (type && (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (type) && __builtin_constant_p (name) && (__s1_len = strlen (type), __s2_len = strlen (name), (!((size_t)(const void *)((type) + 1) - (size_t)(const void *)(type) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s2_len >= 4)) ? Perl_my_memcmp ((__const char *) (type), (__const char *) (name), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (type) && ((size_t)(const void *)((type) + 1) - (size_t)(const void *)(type) == 1) && (__s1_len = strlen (type), __s1_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (type))[0] - ((__const unsigned char *) (__const char *)(name))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (type))[1] - ((__const unsigned char *) (__const char *) (name))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (type))[2] - ((__const unsigned char *) (__const char *) (name))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (type))[3] - ((__const unsigned char *) (__const char *) (name))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (name); register int __result = (((__const unsigned char *) (__const char *) (type))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (type))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (type))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (type))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s2_len = strlen (name), __s2_len < 4) ? (__builtin_constant_p (type) && ((size_t)(const void *)((type) + 1) - (size_t)(const void *)(type) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (type))[0] - ((__const unsigned char *) (__const char *)(name))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (type))[1] - ((__const unsigned char *) (__const char *) (name))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (type))[2] - ((__const unsigned char *) (__const char *) (name))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (type))[3] - ((__const unsigned char *) (__const char *) (name))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (type); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (name))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (name))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (name))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (name))[3]); } } __result; }))) : strcmp (type, name)))); }))) ||
            (stash && isa_lookup(stash, name, strlen(name), 0) == &PL_sv_yes)
        ? (1)
        : (0) ;

}





# 1 "XSUB.h" 1
# 108 "universal.c" 2

void XS_UNIVERSAL_isa(CV* cv)
{
    extern int (*__errno_location ()); register SV **sp = PL_stack_sp; register SV **mark = PL_stack_base + (*PL_markstack_ptr--); I32 ax = mark - PL_stack_base + 1; I32 items = sp - mark;
    SV *sv;
    char *name;
    STRLEN n_a;

    if (items != 2)
 Perl_croak("Usage: UNIVERSAL::isa(reference, kind)");

    sv = PL_stack_base[ax + (0)];
    name = (char *)(((PL_stack_base[ax + (1)])->sv_flags & 0x00040000) ? ((n_a = ((XPV*) (PL_stack_base[ax + (1)])->sv_any)->xpv_cur), ((XPV*) (PL_stack_base[ax + (1)])->sv_any)->xpv_pv) : Perl_sv_2pv(PL_stack_base[ax + (1)], &n_a));

    PL_stack_base[ax + (0)] = ((Perl_sv_derived_from(sv, name)) ? &PL_sv_yes : &PL_sv_no);
    (void)( { PL_stack_sp = PL_stack_base + ax + ((1) - 1); return; } );
}

void XS_UNIVERSAL_can(CV* cv)
{
    extern int (*__errno_location ()); register SV **sp = PL_stack_sp; register SV **mark = PL_stack_base + (*PL_markstack_ptr--); I32 ax = mark - PL_stack_base + 1; I32 items = sp - mark;
    SV *sv;
    char *name;
    SV *rv;
    HV *pkg = ((void *)0);
    STRLEN n_a;

    if (items != 2)
 Perl_croak("Usage: UNIVERSAL::can(object-ref, method)");

    sv = PL_stack_base[ax + (0)];
    name = (char *)(((PL_stack_base[ax + (1)])->sv_flags & 0x00040000) ? ((n_a = ((XPV*) (PL_stack_base[ax + (1)])->sv_any)->xpv_cur), ((XPV*) (PL_stack_base[ax + (1)])->sv_any)->xpv_pv) : Perl_sv_2pv(PL_stack_base[ax + (1)], &n_a));
    rv = &PL_sv_undef;

    if(((sv)->sv_flags & 0x00080000)) {
        sv = (SV*)((XRV*) (sv)->sv_any)->xrv_rv;
        if(((sv)->sv_flags & 0x00001000))
            pkg = ((XPVMG*) (sv)->sv_any)->xmg_stash;
    }
    else {
        pkg = Perl_gv_stashsv(sv, (0));
    }

    if (pkg) {
        GV *gv = Perl_gv_fetchmethod_autoload(pkg, name, (0));
        if (gv && (((gv)->sv_flags & 0xff) == SVt_PVGV))
     rv = Perl_sv_2mortal(Perl_newRV((SV*)((((XPVGV*)(gv)->sv_any)->xgv_gp)->gp_cv)));
    }

    PL_stack_base[ax + (0)] = rv;
    (void)( { PL_stack_sp = PL_stack_base + ax + ((1) - 1); return; } );
}

void XS_UNIVERSAL_VERSION(CV* cv)
{
    extern int (*__errno_location ()); register SV **sp = PL_stack_sp; register SV **mark = PL_stack_base + (*PL_markstack_ptr--); I32 ax = mark - PL_stack_base + 1; I32 items = sp - mark;
    HV *pkg;
    GV **gvp;
    GV *gv;
    SV *sv;
    char *undef;
    double req;

    if(((PL_stack_base[ax + (0)])->sv_flags & 0x00080000)) {
        sv = (SV*)((XRV*) (PL_stack_base[ax + (0)])->sv_any)->xrv_rv;
        if(!((sv)->sv_flags & 0x00001000))
            Perl_croak("Cannot find version of an unblessed reference");
        pkg = ((XPVMG*) (sv)->sv_any)->xmg_stash;
    }
    else {
        pkg = Perl_gv_stashsv(PL_stack_base[ax + (0)], (0));
    }

    gvp = pkg ? (GV**)Perl_hv_fetch(pkg,"VERSION",7,(0)) : ((GV**)((void *)0));

    if (gvp && (gv = *gvp) != (GV*)&PL_sv_undef && (sv = ((((XPVGV*)(gv)->sv_any)->xgv_gp)->gp_sv))) {
        SV *nsv = Perl_sv_newmortal();
        Perl_sv_setsv(nsv, sv);
        sv = nsv;
        undef = ((char*)((void *)0));
    }
    else {
        sv = (SV*)&PL_sv_undef;
        undef = "(undef)";
    }

    if (items > 1 && (undef || (req = (((PL_stack_base[ax + (1)])->sv_flags & 0x00020000) ? ((XPVNV*)(PL_stack_base[ax + (1)])->sv_any)->xnv_nv : Perl_sv_2nv(PL_stack_base[ax + (1)])), req > (((sv)->sv_flags & 0x00020000) ? ((XPVNV*)(sv)->sv_any)->xnv_nv : Perl_sv_2nv(sv))))) {
 STRLEN n_a;
 Perl_croak("%s version %s required--this is only version %s",
       ((XPVHV*) (pkg)->sv_any)->xhv_name, (((PL_stack_base[ax + (1)])->sv_flags & 0x00040000) ? ((n_a = ((XPV*) (PL_stack_base[ax + (1)])->sv_any)->xpv_cur), ((XPV*) (PL_stack_base[ax + (1)])->sv_any)->xpv_pv) : Perl_sv_2pv(PL_stack_base[ax + (1)], &n_a)), undef ? undef : (((sv)->sv_flags & 0x00040000) ? ((n_a = ((XPV*) (sv)->sv_any)->xpv_cur), ((XPV*) (sv)->sv_any)->xpv_pv) : Perl_sv_2pv(sv, &n_a)));
    }

    PL_stack_base[ax + (0)] = sv;

    (void)( { PL_stack_sp = PL_stack_base + ax + ((1) - 1); return; } );
}







void
Perl_boot_core_UNIVERSAL(void)
{
    char *file = "universal.c";

    Perl_newXS("UNIVERSAL::isa", XS_UNIVERSAL_isa, file);
    Perl_newXS("UNIVERSAL::can", XS_UNIVERSAL_can, file);
    Perl_newXS("UNIVERSAL::VERSION", XS_UNIVERSAL_VERSION, file);
}

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-08  5:51 ` Toon Moene
@ 2003-05-08 13:26   ` Diego Novillo
  0 siblings, 0 replies; 50+ messages in thread
From: Diego Novillo @ 2003-05-08 13:26 UTC (permalink / raw)
  To: Toon Moene; +Cc: gcc

On Thu, 2003-05-08 at 01:54, Toon Moene wrote:

> Google -> groups -> comp.lang.fortran -> search "gcc-g95 got it right" 
> (comp.lang.fortran only)
> 
> :-)
>
Something like that :)

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-07 14:25 Diego Novillo
  2003-05-07 14:30 ` Diego Novillo
  2003-05-07 17:54 ` Qiong Cai
@ 2003-05-08  5:51 ` Toon Moene
  2003-05-08 13:26   ` Diego Novillo
  2003-05-09 16:46 ` Gerald Pfeifer
  3 siblings, 1 reply; 50+ messages in thread
From: Toon Moene @ 2003-05-08  5:51 UTC (permalink / raw)
  To: Diego Novillo; +Cc: gcc

Diego Novillo wrote:

> - Correctness.  Does the branch compiler fail or generate
>   incorrect code?  Does it fail to bootstrap on your platform?

Ah, correctness - you mean like so:

Google -> groups -> comp.lang.fortran -> search "gcc-g95 got it right" 
(comp.lang.fortran only)

:-)

-- 
Toon Moene - mailto:toon@moene.indiv.nluug.nl - phoneto: +31 346 214290
Saturnushof 14, 3738 XG  Maartensdijk, The Netherlands
Maintainer, GNU Fortran 77: http://gcc.gnu.org/onlinedocs/g77_news.html
GNU Fortran 95: http://gcc-g95.sourceforge.net/ (under construction)

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-07 17:54 ` Qiong Cai
  2003-05-07 18:02   ` law
@ 2003-05-07 18:24   ` Daniel Berlin
  1 sibling, 0 replies; 50+ messages in thread
From: Daniel Berlin @ 2003-05-07 18:24 UTC (permalink / raw)
  To: Qiong Cai; +Cc: Diego Novillo, gcc

>
> BTW, I haven't tried SSAPRE. Is the implemenation complete now?
The implementation has been complete for a while (though it doesn't do 
load PRE or store PRE yet), it's waiting till overlapping live ranges 
are allowed, because we can sometimes generate them.
I also need it to enable strength reduction.
However, I can bootstrap with SSAPRE enabled.
--Dan

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-07 17:54 ` Qiong Cai
@ 2003-05-07 18:02   ` law
  2003-05-09  1:31     ` Qiong Cai
  2003-05-07 18:24   ` Daniel Berlin
  1 sibling, 1 reply; 50+ messages in thread
From: law @ 2003-05-07 18:02 UTC (permalink / raw)
  To: Qiong Cai; +Cc: Diego Novillo, gcc

In message <20030507175428.GA5081@cse.unsw.edu.au>, Qiong Cai writes:
 >Compiling Error:
 >1) perlbmk
 >universal.c: In function `XS_UNIVERSAL_isa':
 >universal.c:123: internal compiler error: in simplify_stmt_expr, at c-simplif
 >y.c:991
If you could add "-save-temps" to the compilation line, recompile and send
the resulting universal.i file to Diego and myself it would be greatly
appreciated.

Jeff


^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-07 14:25 Diego Novillo
  2003-05-07 14:30 ` Diego Novillo
@ 2003-05-07 17:54 ` Qiong Cai
  2003-05-07 18:02   ` law
  2003-05-07 18:24   ` Daniel Berlin
  2003-05-08  5:51 ` Toon Moene
  2003-05-09 16:46 ` Gerald Pfeifer
  3 siblings, 2 replies; 50+ messages in thread
From: Qiong Cai @ 2003-05-07 17:54 UTC (permalink / raw)
  To: Diego Novillo; +Cc: gcc

bootstrap on a 933Mhz PIII Linux 2.4.20-workstation with 256MB.

> ../gcc/configure --prefix=/import/qin/1/qiongc/gcc-ssa --enable-languages=c --disable-libgcj : (reconfigured)
Thread model: posix
gcc version 3.5-tree-ssa 20030504 (experimental)

15 C programs from SPEC2000 are compiled and run with test input.

Compiling times (user time) in secs are shown  as follows for those 
successfully compiled. In (x/y), x is compiling time
by gcc 3.3 prerelease and y compiling time by gcc ssa.

Compiling and Running Passed:
gzip(4.5/6.55), gcc(113.86/176.88), mcf(2.92/3.94), crafty(22.10/33.64), 
parser(9.26/12.93), 
gap(40.89/62.00), bzip2(2.66/3.65), twolf(26.32/42.56), mesa(46.36/69.02), 
art(1.49/1.96), 
equake(1.84/2.68), ammp(13.21/20.39)

Compiling Passed:
vpr(12.87/18.81), vortex(46.68/68.43)

Compiling Error:
1) perlbmk
universal.c: In function `XS_UNIVERSAL_isa':
universal.c:123: internal compiler error: in simplify_stmt_expr, at c-simplify.c:991

Running Error:
1) vpr
unning 175.vpr test base x86_linux default
*** Miscompare of route_log.out, see /import/qin/1/qiongc/cpu2000/benchspec/CINT2000/175.vpr/run/00000002/route_log.out.mis
Invalid run; unable to continue.  If you wish to ignore errors please use '-I' or ignore_errors

2) vortex
Running 255.vortex test base x86_linux default
*** Miscompare of vortex.out, see /import/qin/1/qiongc/cpu2000/benchspec/CINT2000/255.vortex/run/00000002/vortex.out.mis

And the compiling base flag is -O2 -march=i686 -fomit-frame-pointer.

BTW, I haven't tried SSAPRE. Is the implemenation complete now?


Thanks.

Qiong

On Wed, May 07, 2003 at 10:25:03AM -0400, Diego Novillo wrote:
> I'm looking for volunteers to try out the tree-ssa branch with
> their favourite C/C++ code.  Be warned that at this time you
> shouldn't expect the branch compiler to be any better than
> mainline.  In fact, it will probably be worse.
> 
> This call for testing is mostly to gather data that will help
> finding the most obvious problems with the branch.  Besides the
> obvious correctness issues, I'm mostly concerned with compile and
> run time performance.
> 
> If you're willing to help, I'd like to know:
> 
> - Compile time comparisons vs mainline (-ftime-report or gprof).
> 
> 
> - Run time comparisons vs mainline (oprofile or gprof or other
>   profilers).
>   
>   Sometimes it's useful to compare the pretty-printed dumps given
>   by -fdump-tree-all.  Particularly, comparing .t05.simple vs
>   .t14.optimized shows the difference before and after
>   optimization.
> 
>   Also, comparing the .00.rtl between the branch and mainline may
>   give hints.  Direct comparison on large codes will probably not
>   be useful because the branch generates RTL from GIMPLE trees,
>   while mainline generates RTL directly from FE trees.
> 
> 
> - Correctness.  Does the branch compiler fail or generate
>   incorrect code?  Does it fail to bootstrap on your platform?
> 
> 
> Thanks.  Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* Re: tree-ssa branch: Call for preliminary testing
  2003-05-07 14:25 Diego Novillo
@ 2003-05-07 14:30 ` Diego Novillo
  2003-05-07 17:54 ` Qiong Cai
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 50+ messages in thread
From: Diego Novillo @ 2003-05-07 14:30 UTC (permalink / raw)
  To: gcc

On Wed, 2003-05-07 at 10:25, Diego Novillo wrote:

> I'm looking for volunteers to try out the tree-ssa branch with
> their favourite C/C++ code.
>
I forgot the obvious.

Information about the branch is at http://gcc.gnu.org/projects/tree-ssa/

To get a copy of the branch:

$ cvs -d :ext:gcc.gnu.org:/cvs/gcc co -r tree-ssa-20020619-branch gcc


Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

* tree-ssa branch: Call for preliminary testing
@ 2003-05-07 14:25 Diego Novillo
  2003-05-07 14:30 ` Diego Novillo
                   ` (3 more replies)
  0 siblings, 4 replies; 50+ messages in thread
From: Diego Novillo @ 2003-05-07 14:25 UTC (permalink / raw)
  To: gcc

I'm looking for volunteers to try out the tree-ssa branch with
their favourite C/C++ code.  Be warned that at this time you
shouldn't expect the branch compiler to be any better than
mainline.  In fact, it will probably be worse.

This call for testing is mostly to gather data that will help
finding the most obvious problems with the branch.  Besides the
obvious correctness issues, I'm mostly concerned with compile and
run time performance.

If you're willing to help, I'd like to know:

- Compile time comparisons vs mainline (-ftime-report or gprof).


- Run time comparisons vs mainline (oprofile or gprof or other
  profilers).
  
  Sometimes it's useful to compare the pretty-printed dumps given
  by -fdump-tree-all.  Particularly, comparing .t05.simple vs
  .t14.optimized shows the difference before and after
  optimization.

  Also, comparing the .00.rtl between the branch and mainline may
  give hints.  Direct comparison on large codes will probably not
  be useful because the branch generates RTL from GIMPLE trees,
  while mainline generates RTL directly from FE trees.


- Correctness.  Does the branch compiler fail or generate
  incorrect code?  Does it fail to bootstrap on your platform?


Thanks.  Diego.

^ permalink raw reply	[flat|nested] 50+ messages in thread

end of thread, other threads:[~2003-06-14 19:38 UTC | newest]

Thread overview: 50+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-11 17:11 tree-ssa branch: Call for preliminary testing Richard Guenther
2003-05-12 12:43 ` Diego Novillo
2003-05-12 12:58   ` Steven Bosscher
2003-05-12 13:08     ` Andrew MacLeod
2003-05-12 13:16     ` Diego Novillo
2003-05-12 13:22       ` Andrew MacLeod
2003-05-12 13:49       ` Richard Guenther
2003-05-12 14:05         ` Daniel Berlin
2003-05-12 14:16           ` Andrew MacLeod
2003-05-12 14:17           ` Diego Novillo
2003-06-12 15:36         ` Diego Novillo
2003-05-12 13:02   ` Steven Bosscher
2003-05-12 13:09     ` Diego Novillo
2003-05-12 13:59     ` Daniel Berlin
2003-05-12 14:12       ` Andrew MacLeod
2003-05-12 13:02   ` Richard Guenther
2003-06-12 16:09     ` Diego Novillo
2003-06-12 21:10       ` Richard Guenther
2003-06-12 21:29         ` Diego Novillo
2003-06-13  9:58           ` Richard Guenther
2003-06-13 11:38             ` Diego Novillo
2003-06-14 11:41               ` Richard Guenther
2003-06-13 20:15       ` Andrew MacLeod
2003-06-14 20:06         ` Richard Guenther
  -- strict thread matches above, loose matches on Subject: below --
2003-05-12  2:13 John David Anglin
2003-05-12 12:43 ` Diego Novillo
2003-05-15 17:50   ` John David Anglin
2003-05-15 19:32     ` Diego Novillo
2003-05-07 14:25 Diego Novillo
2003-05-07 14:30 ` Diego Novillo
2003-05-07 17:54 ` Qiong Cai
2003-05-07 18:02   ` law
2003-05-09  1:31     ` Qiong Cai
2003-05-09  2:02       ` Andrew Pinski
2003-05-07 18:24   ` Daniel Berlin
2003-05-08  5:51 ` Toon Moene
2003-05-08 13:26   ` Diego Novillo
2003-05-09 16:46 ` Gerald Pfeifer
2003-05-09 17:28   ` Diego Novillo
2003-05-09 17:37     ` Diego Novillo
2003-05-09 19:02       ` Eric Botcazou
2003-05-10 14:19     ` Gerald Pfeifer
2003-05-10 14:43       ` Graham Stott
2003-05-10 15:34         ` Daniel Berlin
2003-05-12 12:43       ` Diego Novillo
2003-05-10 15:04     ` Gerald Pfeifer
2003-05-12 14:21   ` Gerald Pfeifer
2003-05-12 16:27     ` Steven Bosscher
2003-05-20 10:44     ` Gerald Pfeifer
2003-05-20 11:39       ` Diego Novillo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).