public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: chenglulu <chenglulu@loongson.cn>
To: Xi Ruoyao <xry111@xry111.site>, gcc-patches@gcc.gnu.org
Cc: i@xen0n.name, xuchenghua@loongson.cn
Subject: Re: [PATCH v2 2/2] LoongArch: When the code model is extreme, the symbol address is obtained through macro instructions regardless of the value of -mexplicit-relocs.
Date: Wed, 17 Jan 2024 17:38:53 +0800	[thread overview]
Message-ID: <f77f4679-4790-a655-7c6d-cc715c31eee2@loongson.cn> (raw)
In-Reply-To: <b05cf608406cc2bac1e5276945e30fdc9a493ed6.camel@xry111.site>

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


在 2024/1/13 下午9:05, Xi Ruoyao 写道:
> 在 2024-01-13星期六的 15:01 +0800,chenglulu写道:
>> 在 2024/1/12 下午7:42, Xi Ruoyao 写道:
>>> 在 2024-01-12星期五的 09:46 +0800,chenglulu写道:
>>>
>>>>> I found an issue bootstrapping GCC with -mcmodel=extreme in BOOT_CFLAGS:
>>>>> we need a target hook to tell the generic code
>>>>> UNSPEC_LA_PCREL_64_PART{1,2} are just a wrapper around symbols, or we'll
>>>>> see millions lines of messages like
>>>>>
>>>>> ../../gcc/gcc/tree.h:4171:1: note: non-delegitimized UNSPEC
>>>>> UNSPEC_LA_PCREL_64_PART1 (42) found in variable location
>>>> I build GCC with -mcmodel=extreme in BOOT_CFLAGS, but I haven't reproduced the problem you mentioned.
>>>>
>>>>       $ ../configure --host=loongarch64-linux-gnu --target=loongarch64-linux-gnu --build=loongarch64-linux-gnu \
>>>>           --with-arch=loongarch64 --with-abi=lp64d --enable-tls --enable-languages=c,c++,fortran,lto --enable-plugin \
>>>>           --disable-multilib --disable-host-shared --enable-bootstrap --enable-checking=release
>>>>       $ make BOOT_FLAGS="-mcmodel=extreme"
>>>>
>>>> What did I do wrong?:-(
>>> BOOT_CFLAGS, not BOOT_FLAGS :).
>>>
>> This is so strange. My compilation here stopped due to syntax problems,
>>
>> and I still haven't reproduced the information you mentioned about
>> UNSPEC_LA_PCREL_64_PART1.
> I used:
>
> ../gcc/configure --with-system-zlib --disable-fixincludes \
>                   --enable-default-ssp --enable-default-pie \
>                   --disable-werror --disable-multilib \
>                   --prefix=/home/xry111/gcc-dev
>
> and then
>
> make STAGE1_{C,CXX}FLAGS="-O2 -g" -j8 \
>       BOOT_{C,CXX}FLAGS="-O2 -g -mcmodel=extreme" &| tee gcc-build.log
>
> I guess "-g" is needed to reproduce the issue as well as the messages
> were produced in dwarf generation.
>
I have reproduced this problem, and it can be solved by adding a hook.

But unfortunately, when using '-mcmodel=extreme -mexplicit-relocs=always'

to test spec2006 403.gcc, an error will occur. Others have not been 
tested yet.

I roughly debugged it, and the problem should be this:

The problem is that the address of the instruction ‘ldx.d $r12, $r25, 
$r6’ is wrong.

Wrong assembly:

    5826         pcalau12i       $r13,%got_pc_hi20(recog_data)
  5827         addi.d  $r12,$r0,%got_pc_lo12(recog_data)
  5828         lu32i.d $r12,%got64_pc_lo20(recog_data)
  5829         lu52i.d $r12,$r12,%got64_pc_hi12(recog_data)
  5830         ldx.d   $r12,$r13,$r12
  5831         ld.b    $r8,$r12,997
  5832         .loc 1 829 18 discriminator 1 view .LVU1527
  5833         ble     $r8,$r0,.L476
  5834         ld.d    $r6,$r3,16
  5835         ld.d    $r9,$r3,88
  5836 .LBB189 = .
  5837         .loc 1 839 24 view .LVU1528
  5838         alsl.d  $r7,$r19,$r19,2
  5839         ldx.d   $r12,$r25,$r6
  5840         addi.d  $r17,$r3,120
  5841 .LBE189 = .
  5842         .loc 1 829 18 discriminator 1 view .LVU1529
  5843         or      $r13,$r0,$r0
  5844         addi.d  $r4,$r12,992

Assembly that works fine using macros:

3040         la.global       $r12,$r13,recog_data
3041         ld.b    $r9,$r12,997
3042         ble     $r9,$r0,.L475
3043         alsl.d  $r5,$r16,$r16,2
3044         la.global       $r15,$r17,recog_data
3045         addi.d  $r4,$r12,992
3046         addi.d  $r18,$r3,48
3047         or      $r13,$r0,$r0

Comparing the assembly, we can see that lines 5844 and 3045 have the 
same function,

but there is a problem with the base address register optimization at 
line 5844.

regrename.c.283r.loop2_init:

(insn 6 497 2741 34 (set (reg:DI 180 [ ivtmp.713D.15724 ])
         (const_int 0 [0])) "regrename.c":829:18 discrim 1 156 
{*movdi_64bit}
(nil))
(insn 2741 6 2744 34 (parallel [
             (set (reg:DI 1502)
                 (unspec:DI [
                         (symbol_ref:DI ("recog_data") [flags 0xc0]  
<var_decl 0x7f8c5ffd66c0 recog_data>)
                     ] UNSPEC_LA_PCREL_64_PART1))
             (set (reg/f:DI 1479)
                 (unspec:DI [
                         (symbol_ref:DI ("recog_data") [flags 0xc0]  
<var_decl 0x7f8c5ffd66c0 recog_data>)
                     ] UNSPEC_LA_PCREL_64_PART2))
         ]) -1
      (expr_list:REG_UNUSED (reg/f:DI 1479)
(nil)))
(insn 2744 2741 2745 34 (set (reg/f:DI 1503)
         (mem:DI (plus:DI (reg/f:DI 1479)
                 (reg:DI 1502)) [0  S8 A8])) 156 {*movdi_64bit}
      (expr_list:REG_EQUAL (symbol_ref:DI ("recog_data") [flags 0xc0]  
<var_decl 0x7f8c5ffd66c0 recog_data>)
(nil)))


Virtual register 1479 will be used in insn 2744, but register 1479 was 
assigned the REG_UNUSED attribute in the previous instruction.

The attached file is the wrong file.
The compilation command is as follows:

$ ./gcc/cc1 -fpreprocessed regrename.i -quiet -dp -dumpbase regrename.c 
-dumpbase-ext .c -mno-relax -mabi=lp64d -march=loongarch64 -mfpu=64 
-msimd=lasx -mcmodel=extreme -mtune=loongarch64 -g3 -O2 
-Wno-int-conversion -Wno-implicit-int -Wno-implicit-function-declaration 
-Wno-incompatible-pointer-types -version -o regrename.s 
-mexplicit-relocs=always -fdump-rtl-all-all


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

# 0 "regrename.c"
# 1 "/home/chenglulu/work/benchmark/cpu2006-v1.1/benchspec/CPU2006/403.gcc/build/build_base_trunk.0000//"
# 0 "<built-in>"
#define __STDC__ 1
# 0 "<built-in>"
#define __STDC_VERSION__ 201710L
# 0 "<built-in>"
#define __STDC_UTF_16__ 1
# 0 "<built-in>"
#define __STDC_UTF_32__ 1
# 0 "<built-in>"
#define __STDC_HOSTED__ 1
# 0 "<built-in>"
#define __GNUC__ 14
# 0 "<built-in>"
#define __GNUC_MINOR__ 0
# 0 "<built-in>"
#define __GNUC_PATCHLEVEL__ 1
# 0 "<built-in>"
#define __VERSION__ "14.0.1 20240115 (experimental)"
# 0 "<built-in>"
#define __ATOMIC_RELAXED 0
# 0 "<built-in>"
#define __ATOMIC_SEQ_CST 5
# 0 "<built-in>"
#define __ATOMIC_ACQUIRE 2
# 0 "<built-in>"
#define __ATOMIC_RELEASE 3
# 0 "<built-in>"
#define __ATOMIC_ACQ_REL 4
# 0 "<built-in>"
#define __ATOMIC_CONSUME 1
# 0 "<built-in>"
#define __OPTIMIZE__ 1
# 0 "<built-in>"
#define __FINITE_MATH_ONLY__ 0
# 0 "<built-in>"
#define _LP64 1
# 0 "<built-in>"
#define __LP64__ 1
# 0 "<built-in>"
#define __SIZEOF_INT__ 4
# 0 "<built-in>"
#define __SIZEOF_LONG__ 8
# 0 "<built-in>"
#define __SIZEOF_LONG_LONG__ 8
# 0 "<built-in>"
#define __SIZEOF_SHORT__ 2
# 0 "<built-in>"
#define __SIZEOF_FLOAT__ 4
# 0 "<built-in>"
#define __SIZEOF_DOUBLE__ 8
# 0 "<built-in>"
#define __SIZEOF_LONG_DOUBLE__ 16
# 0 "<built-in>"
#define __SIZEOF_SIZE_T__ 8
# 0 "<built-in>"
#define __CHAR_BIT__ 8
# 0 "<built-in>"
#define __BIGGEST_ALIGNMENT__ 32
# 0 "<built-in>"
#define __ORDER_LITTLE_ENDIAN__ 1234
# 0 "<built-in>"
#define __ORDER_BIG_ENDIAN__ 4321
# 0 "<built-in>"
#define __ORDER_PDP_ENDIAN__ 3412
# 0 "<built-in>"
#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
# 0 "<built-in>"
#define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__
# 0 "<built-in>"
#define __SIZEOF_POINTER__ 8
# 0 "<built-in>"
#define __GNUC_EXECUTION_CHARSET_NAME "UTF-8"
# 0 "<built-in>"
#define __GNUC_WIDE_EXECUTION_CHARSET_NAME "UTF-32LE"
# 0 "<built-in>"
#define __SIZE_TYPE__ long unsigned int
# 0 "<built-in>"
#define __PTRDIFF_TYPE__ long int
# 0 "<built-in>"
#define __WCHAR_TYPE__ int
# 0 "<built-in>"
#define __WINT_TYPE__ unsigned int
# 0 "<built-in>"
#define __INTMAX_TYPE__ long int
# 0 "<built-in>"
#define __UINTMAX_TYPE__ long unsigned int
# 0 "<built-in>"
#define __CHAR16_TYPE__ short unsigned int
# 0 "<built-in>"
#define __CHAR32_TYPE__ unsigned int
# 0 "<built-in>"
#define __SIG_ATOMIC_TYPE__ int
# 0 "<built-in>"
#define __INT8_TYPE__ signed char
# 0 "<built-in>"
#define __INT16_TYPE__ short int
# 0 "<built-in>"
#define __INT32_TYPE__ int
# 0 "<built-in>"
#define __INT64_TYPE__ long int
# 0 "<built-in>"
#define __UINT8_TYPE__ unsigned char
# 0 "<built-in>"
#define __UINT16_TYPE__ short unsigned int
# 0 "<built-in>"
#define __UINT32_TYPE__ unsigned int
# 0 "<built-in>"
#define __UINT64_TYPE__ long unsigned int
# 0 "<built-in>"
#define __INT_LEAST8_TYPE__ signed char
# 0 "<built-in>"
#define __INT_LEAST16_TYPE__ short int
# 0 "<built-in>"
#define __INT_LEAST32_TYPE__ int
# 0 "<built-in>"
#define __INT_LEAST64_TYPE__ long int
# 0 "<built-in>"
#define __UINT_LEAST8_TYPE__ unsigned char
# 0 "<built-in>"
#define __UINT_LEAST16_TYPE__ short unsigned int
# 0 "<built-in>"
#define __UINT_LEAST32_TYPE__ unsigned int
# 0 "<built-in>"
#define __UINT_LEAST64_TYPE__ long unsigned int
# 0 "<built-in>"
#define __INT_FAST8_TYPE__ signed char
# 0 "<built-in>"
#define __INT_FAST16_TYPE__ long int
# 0 "<built-in>"
#define __INT_FAST32_TYPE__ long int
# 0 "<built-in>"
#define __INT_FAST64_TYPE__ long int
# 0 "<built-in>"
#define __UINT_FAST8_TYPE__ unsigned char
# 0 "<built-in>"
#define __UINT_FAST16_TYPE__ long unsigned int
# 0 "<built-in>"
#define __UINT_FAST32_TYPE__ long unsigned int
# 0 "<built-in>"
#define __UINT_FAST64_TYPE__ long unsigned int
# 0 "<built-in>"
#define __INTPTR_TYPE__ long int
# 0 "<built-in>"
#define __UINTPTR_TYPE__ long unsigned int
# 0 "<built-in>"
#define __GXX_ABI_VERSION 1019
# 0 "<built-in>"
#define __SCHAR_MAX__ 0x7f
# 0 "<built-in>"
#define __SHRT_MAX__ 0x7fff
# 0 "<built-in>"
#define __INT_MAX__ 0x7fffffff
# 0 "<built-in>"
#define __LONG_MAX__ 0x7fffffffffffffffL
# 0 "<built-in>"
#define __LONG_LONG_MAX__ 0x7fffffffffffffffLL
# 0 "<built-in>"
#define __WCHAR_MAX__ 0x7fffffff
# 0 "<built-in>"
#define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
# 0 "<built-in>"
#define __WINT_MAX__ 0xffffffffU
# 0 "<built-in>"
#define __WINT_MIN__ 0U
# 0 "<built-in>"
#define __PTRDIFF_MAX__ 0x7fffffffffffffffL
# 0 "<built-in>"
#define __SIZE_MAX__ 0xffffffffffffffffUL
# 0 "<built-in>"
#define __SCHAR_WIDTH__ 8
# 0 "<built-in>"
#define __SHRT_WIDTH__ 16
# 0 "<built-in>"
#define __INT_WIDTH__ 32
# 0 "<built-in>"
#define __LONG_WIDTH__ 64
# 0 "<built-in>"
#define __LONG_LONG_WIDTH__ 64
# 0 "<built-in>"
#define __WCHAR_WIDTH__ 32
# 0 "<built-in>"
#define __WINT_WIDTH__ 32
# 0 "<built-in>"
#define __PTRDIFF_WIDTH__ 64
# 0 "<built-in>"
#define __SIZE_WIDTH__ 64
# 0 "<built-in>"
#define __INTMAX_MAX__ 0x7fffffffffffffffL
# 0 "<built-in>"
#define __INTMAX_C(c) c ## L
# 0 "<built-in>"
#define __UINTMAX_MAX__ 0xffffffffffffffffUL
# 0 "<built-in>"
#define __UINTMAX_C(c) c ## UL
# 0 "<built-in>"
#define __INTMAX_WIDTH__ 64
# 0 "<built-in>"
#define __SIG_ATOMIC_MAX__ 0x7fffffff
# 0 "<built-in>"
#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
# 0 "<built-in>"
#define __SIG_ATOMIC_WIDTH__ 32
# 0 "<built-in>"
#define __INT8_MAX__ 0x7f
# 0 "<built-in>"
#define __INT16_MAX__ 0x7fff
# 0 "<built-in>"
#define __INT32_MAX__ 0x7fffffff
# 0 "<built-in>"
#define __INT64_MAX__ 0x7fffffffffffffffL
# 0 "<built-in>"
#define __UINT8_MAX__ 0xff
# 0 "<built-in>"
#define __UINT16_MAX__ 0xffff
# 0 "<built-in>"
#define __UINT32_MAX__ 0xffffffffU
# 0 "<built-in>"
#define __UINT64_MAX__ 0xffffffffffffffffUL
# 0 "<built-in>"
#define __INT_LEAST8_MAX__ 0x7f
# 0 "<built-in>"
#define __INT8_C(c) c
# 0 "<built-in>"
#define __INT_LEAST8_WIDTH__ 8
# 0 "<built-in>"
#define __INT_LEAST16_MAX__ 0x7fff
# 0 "<built-in>"
#define __INT16_C(c) c
# 0 "<built-in>"
#define __INT_LEAST16_WIDTH__ 16
# 0 "<built-in>"
#define __INT_LEAST32_MAX__ 0x7fffffff
# 0 "<built-in>"
#define __INT32_C(c) c
# 0 "<built-in>"
#define __INT_LEAST32_WIDTH__ 32
# 0 "<built-in>"
#define __INT_LEAST64_MAX__ 0x7fffffffffffffffL
# 0 "<built-in>"
#define __INT64_C(c) c ## L
# 0 "<built-in>"
#define __INT_LEAST64_WIDTH__ 64
# 0 "<built-in>"
#define __UINT_LEAST8_MAX__ 0xff
# 0 "<built-in>"
#define __UINT8_C(c) c
# 0 "<built-in>"
#define __UINT_LEAST16_MAX__ 0xffff
# 0 "<built-in>"
#define __UINT16_C(c) c
# 0 "<built-in>"
#define __UINT_LEAST32_MAX__ 0xffffffffU
# 0 "<built-in>"
#define __UINT32_C(c) c ## U
# 0 "<built-in>"
#define __UINT_LEAST64_MAX__ 0xffffffffffffffffUL
# 0 "<built-in>"
#define __UINT64_C(c) c ## UL
# 0 "<built-in>"
#define __INT_FAST8_MAX__ 0x7f
# 0 "<built-in>"
#define __INT_FAST8_WIDTH__ 8
# 0 "<built-in>"
#define __INT_FAST16_MAX__ 0x7fffffffffffffffL
# 0 "<built-in>"
#define __INT_FAST16_WIDTH__ 64
# 0 "<built-in>"
#define __INT_FAST32_MAX__ 0x7fffffffffffffffL
# 0 "<built-in>"
#define __INT_FAST32_WIDTH__ 64
# 0 "<built-in>"
#define __INT_FAST64_MAX__ 0x7fffffffffffffffL
# 0 "<built-in>"
#define __INT_FAST64_WIDTH__ 64
# 0 "<built-in>"
#define __UINT_FAST8_MAX__ 0xff
# 0 "<built-in>"
#define __UINT_FAST16_MAX__ 0xffffffffffffffffUL
# 0 "<built-in>"
#define __UINT_FAST32_MAX__ 0xffffffffffffffffUL
# 0 "<built-in>"
#define __UINT_FAST64_MAX__ 0xffffffffffffffffUL
# 0 "<built-in>"
#define __INTPTR_MAX__ 0x7fffffffffffffffL
# 0 "<built-in>"
#define __INTPTR_WIDTH__ 64
# 0 "<built-in>"
#define __UINTPTR_MAX__ 0xffffffffffffffffUL
# 0 "<built-in>"
#define __GCC_IEC_559 2
# 0 "<built-in>"
#define __GCC_IEC_559_COMPLEX 2
# 0 "<built-in>"
#define __FLT_EVAL_METHOD__ 0
# 0 "<built-in>"
#define __FLT_EVAL_METHOD_TS_18661_3__ 0
# 0 "<built-in>"
#define __DEC_EVAL_METHOD__ 2
# 0 "<built-in>"
#define __FLT_RADIX__ 2
# 0 "<built-in>"
#define __FLT_MANT_DIG__ 24
# 0 "<built-in>"
#define __FLT_DIG__ 6
# 0 "<built-in>"
#define __FLT_MIN_EXP__ (-125)
# 0 "<built-in>"
#define __FLT_MIN_10_EXP__ (-37)
# 0 "<built-in>"
#define __FLT_MAX_EXP__ 128
# 0 "<built-in>"
#define __FLT_MAX_10_EXP__ 38
# 0 "<built-in>"
#define __FLT_DECIMAL_DIG__ 9
# 0 "<built-in>"
#define __FLT_MAX__ 3.40282346638528859811704183484516925e+38F
# 0 "<built-in>"
#define __FLT_NORM_MAX__ 3.40282346638528859811704183484516925e+38F
# 0 "<built-in>"
#define __FLT_MIN__ 1.17549435082228750796873653722224568e-38F
# 0 "<built-in>"
#define __FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F
# 0 "<built-in>"
#define __FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F
# 0 "<built-in>"
#define __FLT_HAS_DENORM__ 1
# 0 "<built-in>"
#define __FLT_HAS_INFINITY__ 1
# 0 "<built-in>"
#define __FLT_HAS_QUIET_NAN__ 1
# 0 "<built-in>"
#define __FP_FAST_FMAF 1
# 0 "<built-in>"
#define __FLT_IS_IEC_60559__ 1
# 0 "<built-in>"
#define __DBL_MANT_DIG__ 53
# 0 "<built-in>"
#define __DBL_DIG__ 15
# 0 "<built-in>"
#define __DBL_MIN_EXP__ (-1021)
# 0 "<built-in>"
#define __DBL_MIN_10_EXP__ (-307)
# 0 "<built-in>"
#define __DBL_MAX_EXP__ 1024
# 0 "<built-in>"
#define __DBL_MAX_10_EXP__ 308
# 0 "<built-in>"
#define __DBL_DECIMAL_DIG__ 17
# 0 "<built-in>"
#define __DBL_MAX__ ((double)1.79769313486231570814527423731704357e+308L)
# 0 "<built-in>"
#define __DBL_NORM_MAX__ ((double)1.79769313486231570814527423731704357e+308L)
# 0 "<built-in>"
#define __DBL_MIN__ ((double)2.22507385850720138309023271733240406e-308L)
# 0 "<built-in>"
#define __DBL_EPSILON__ ((double)2.22044604925031308084726333618164062e-16L)
# 0 "<built-in>"
#define __DBL_DENORM_MIN__ ((double)4.94065645841246544176568792868221372e-324L)
# 0 "<built-in>"
#define __DBL_HAS_DENORM__ 1
# 0 "<built-in>"
#define __DBL_HAS_INFINITY__ 1
# 0 "<built-in>"
#define __DBL_HAS_QUIET_NAN__ 1
# 0 "<built-in>"
#define __FP_FAST_FMA 1
# 0 "<built-in>"
#define __DBL_IS_IEC_60559__ 1
# 0 "<built-in>"
#define __LDBL_MANT_DIG__ 113
# 0 "<built-in>"
#define __LDBL_DIG__ 33
# 0 "<built-in>"
#define __LDBL_MIN_EXP__ (-16381)
# 0 "<built-in>"
#define __LDBL_MIN_10_EXP__ (-4931)
# 0 "<built-in>"
#define __LDBL_MAX_EXP__ 16384
# 0 "<built-in>"
#define __LDBL_MAX_10_EXP__ 4932
# 0 "<built-in>"
#define __DECIMAL_DIG__ 36
# 0 "<built-in>"
#define __LDBL_DECIMAL_DIG__ 36
# 0 "<built-in>"
#define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L
# 0 "<built-in>"
#define __LDBL_NORM_MAX__ 1.18973149535723176508575932662800702e+4932L
# 0 "<built-in>"
#define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L
# 0 "<built-in>"
#define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L
# 0 "<built-in>"
#define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L
# 0 "<built-in>"
#define __LDBL_HAS_DENORM__ 1
# 0 "<built-in>"
#define __LDBL_HAS_INFINITY__ 1
# 0 "<built-in>"
#define __LDBL_HAS_QUIET_NAN__ 1
# 0 "<built-in>"
#define __LDBL_IS_IEC_60559__ 1
# 0 "<built-in>"
#define __FLT32_MANT_DIG__ 24
# 0 "<built-in>"
#define __FLT32_DIG__ 6
# 0 "<built-in>"
#define __FLT32_MIN_EXP__ (-125)
# 0 "<built-in>"
#define __FLT32_MIN_10_EXP__ (-37)
# 0 "<built-in>"
#define __FLT32_MAX_EXP__ 128
# 0 "<built-in>"
#define __FLT32_MAX_10_EXP__ 38
# 0 "<built-in>"
#define __FLT32_DECIMAL_DIG__ 9
# 0 "<built-in>"
#define __FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32
# 0 "<built-in>"
#define __FLT32_NORM_MAX__ 3.40282346638528859811704183484516925e+38F32
# 0 "<built-in>"
#define __FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32
# 0 "<built-in>"
#define __FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32
# 0 "<built-in>"
#define __FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32
# 0 "<built-in>"
#define __FLT32_HAS_DENORM__ 1
# 0 "<built-in>"
#define __FLT32_HAS_INFINITY__ 1
# 0 "<built-in>"
#define __FLT32_HAS_QUIET_NAN__ 1
# 0 "<built-in>"
#define __FP_FAST_FMAF32 1
# 0 "<built-in>"
#define __FLT32_IS_IEC_60559__ 1
# 0 "<built-in>"
#define __FLT64_MANT_DIG__ 53
# 0 "<built-in>"
#define __FLT64_DIG__ 15
# 0 "<built-in>"
#define __FLT64_MIN_EXP__ (-1021)
# 0 "<built-in>"
#define __FLT64_MIN_10_EXP__ (-307)
# 0 "<built-in>"
#define __FLT64_MAX_EXP__ 1024
# 0 "<built-in>"
#define __FLT64_MAX_10_EXP__ 308
# 0 "<built-in>"
#define __FLT64_DECIMAL_DIG__ 17
# 0 "<built-in>"
#define __FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64
# 0 "<built-in>"
#define __FLT64_NORM_MAX__ 1.79769313486231570814527423731704357e+308F64
# 0 "<built-in>"
#define __FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64
# 0 "<built-in>"
#define __FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64
# 0 "<built-in>"
#define __FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64
# 0 "<built-in>"
#define __FLT64_HAS_DENORM__ 1
# 0 "<built-in>"
#define __FLT64_HAS_INFINITY__ 1
# 0 "<built-in>"
#define __FLT64_HAS_QUIET_NAN__ 1
# 0 "<built-in>"
#define __FP_FAST_FMAF64 1
# 0 "<built-in>"
#define __FLT64_IS_IEC_60559__ 1
# 0 "<built-in>"
#define __FLT128_MANT_DIG__ 113
# 0 "<built-in>"
#define __FLT128_DIG__ 33
# 0 "<built-in>"
#define __FLT128_MIN_EXP__ (-16381)
# 0 "<built-in>"
#define __FLT128_MIN_10_EXP__ (-4931)
# 0 "<built-in>"
#define __FLT128_MAX_EXP__ 16384
# 0 "<built-in>"
#define __FLT128_MAX_10_EXP__ 4932
# 0 "<built-in>"
#define __FLT128_DECIMAL_DIG__ 36
# 0 "<built-in>"
#define __FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128
# 0 "<built-in>"
#define __FLT128_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F128
# 0 "<built-in>"
#define __FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128
# 0 "<built-in>"
#define __FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128
# 0 "<built-in>"
#define __FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128
# 0 "<built-in>"
#define __FLT128_HAS_DENORM__ 1
# 0 "<built-in>"
#define __FLT128_HAS_INFINITY__ 1
# 0 "<built-in>"
#define __FLT128_HAS_QUIET_NAN__ 1
# 0 "<built-in>"
#define __FLT128_IS_IEC_60559__ 1
# 0 "<built-in>"
#define __FLT32X_MANT_DIG__ 53
# 0 "<built-in>"
#define __FLT32X_DIG__ 15
# 0 "<built-in>"
#define __FLT32X_MIN_EXP__ (-1021)
# 0 "<built-in>"
#define __FLT32X_MIN_10_EXP__ (-307)
# 0 "<built-in>"
#define __FLT32X_MAX_EXP__ 1024
# 0 "<built-in>"
#define __FLT32X_MAX_10_EXP__ 308
# 0 "<built-in>"
#define __FLT32X_DECIMAL_DIG__ 17
# 0 "<built-in>"
#define __FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x
# 0 "<built-in>"
#define __FLT32X_NORM_MAX__ 1.79769313486231570814527423731704357e+308F32x
# 0 "<built-in>"
#define __FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x
# 0 "<built-in>"
#define __FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x
# 0 "<built-in>"
#define __FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x
# 0 "<built-in>"
#define __FLT32X_HAS_DENORM__ 1
# 0 "<built-in>"
#define __FLT32X_HAS_INFINITY__ 1
# 0 "<built-in>"
#define __FLT32X_HAS_QUIET_NAN__ 1
# 0 "<built-in>"
#define __FP_FAST_FMAF32x 1
# 0 "<built-in>"
#define __FLT32X_IS_IEC_60559__ 1
# 0 "<built-in>"
#define __FLT64X_MANT_DIG__ 113
# 0 "<built-in>"
#define __FLT64X_DIG__ 33
# 0 "<built-in>"
#define __FLT64X_MIN_EXP__ (-16381)
# 0 "<built-in>"
#define __FLT64X_MIN_10_EXP__ (-4931)
# 0 "<built-in>"
#define __FLT64X_MAX_EXP__ 16384
# 0 "<built-in>"
#define __FLT64X_MAX_10_EXP__ 4932
# 0 "<built-in>"
#define __FLT64X_DECIMAL_DIG__ 36
# 0 "<built-in>"
#define __FLT64X_MAX__ 1.18973149535723176508575932662800702e+4932F64x
# 0 "<built-in>"
#define __FLT64X_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F64x
# 0 "<built-in>"
#define __FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x
# 0 "<built-in>"
#define __FLT64X_EPSILON__ 1.92592994438723585305597794258492732e-34F64x
# 0 "<built-in>"
#define __FLT64X_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F64x
# 0 "<built-in>"
#define __FLT64X_HAS_DENORM__ 1
# 0 "<built-in>"
#define __FLT64X_HAS_INFINITY__ 1
# 0 "<built-in>"
#define __FLT64X_HAS_QUIET_NAN__ 1
# 0 "<built-in>"
#define __FLT64X_IS_IEC_60559__ 1
# 0 "<built-in>"
#define __SFRACT_FBIT__ 7
# 0 "<built-in>"
#define __SFRACT_IBIT__ 0
# 0 "<built-in>"
#define __SFRACT_MIN__ (-0.5HR-0.5HR)
# 0 "<built-in>"
#define __SFRACT_MAX__ 0X7FP-7HR
# 0 "<built-in>"
#define __SFRACT_EPSILON__ 0x1P-7HR
# 0 "<built-in>"
#define __USFRACT_FBIT__ 8
# 0 "<built-in>"
#define __USFRACT_IBIT__ 0
# 0 "<built-in>"
#define __USFRACT_MIN__ 0.0UHR
# 0 "<built-in>"
#define __USFRACT_MAX__ 0XFFP-8UHR
# 0 "<built-in>"
#define __USFRACT_EPSILON__ 0x1P-8UHR
# 0 "<built-in>"
#define __FRACT_FBIT__ 15
# 0 "<built-in>"
#define __FRACT_IBIT__ 0
# 0 "<built-in>"
#define __FRACT_MIN__ (-0.5R-0.5R)
# 0 "<built-in>"
#define __FRACT_MAX__ 0X7FFFP-15R
# 0 "<built-in>"
#define __FRACT_EPSILON__ 0x1P-15R
# 0 "<built-in>"
#define __UFRACT_FBIT__ 16
# 0 "<built-in>"
#define __UFRACT_IBIT__ 0
# 0 "<built-in>"
#define __UFRACT_MIN__ 0.0UR
# 0 "<built-in>"
#define __UFRACT_MAX__ 0XFFFFP-16UR
# 0 "<built-in>"
#define __UFRACT_EPSILON__ 0x1P-16UR
# 0 "<built-in>"
#define __LFRACT_FBIT__ 31
# 0 "<built-in>"
#define __LFRACT_IBIT__ 0
# 0 "<built-in>"
#define __LFRACT_MIN__ (-0.5LR-0.5LR)
# 0 "<built-in>"
#define __LFRACT_MAX__ 0X7FFFFFFFP-31LR
# 0 "<built-in>"
#define __LFRACT_EPSILON__ 0x1P-31LR
# 0 "<built-in>"
#define __ULFRACT_FBIT__ 32
# 0 "<built-in>"
#define __ULFRACT_IBIT__ 0
# 0 "<built-in>"
#define __ULFRACT_MIN__ 0.0ULR
# 0 "<built-in>"
#define __ULFRACT_MAX__ 0XFFFFFFFFP-32ULR
# 0 "<built-in>"
#define __ULFRACT_EPSILON__ 0x1P-32ULR
# 0 "<built-in>"
#define __LLFRACT_FBIT__ 63
# 0 "<built-in>"
#define __LLFRACT_IBIT__ 0
# 0 "<built-in>"
#define __LLFRACT_MIN__ (-0.5LLR-0.5LLR)
# 0 "<built-in>"
#define __LLFRACT_MAX__ 0X7FFFFFFFFFFFFFFFP-63LLR
# 0 "<built-in>"
#define __LLFRACT_EPSILON__ 0x1P-63LLR
# 0 "<built-in>"
#define __ULLFRACT_FBIT__ 64
# 0 "<built-in>"
#define __ULLFRACT_IBIT__ 0
# 0 "<built-in>"
#define __ULLFRACT_MIN__ 0.0ULLR
# 0 "<built-in>"
#define __ULLFRACT_MAX__ 0XFFFFFFFFFFFFFFFFP-64ULLR
# 0 "<built-in>"
#define __ULLFRACT_EPSILON__ 0x1P-64ULLR
# 0 "<built-in>"
#define __SACCUM_FBIT__ 7
# 0 "<built-in>"
#define __SACCUM_IBIT__ 8
# 0 "<built-in>"
#define __SACCUM_MIN__ (-0X1P7HK-0X1P7HK)
# 0 "<built-in>"
#define __SACCUM_MAX__ 0X7FFFP-7HK
# 0 "<built-in>"
#define __SACCUM_EPSILON__ 0x1P-7HK
# 0 "<built-in>"
#define __USACCUM_FBIT__ 8
# 0 "<built-in>"
#define __USACCUM_IBIT__ 8
# 0 "<built-in>"
#define __USACCUM_MIN__ 0.0UHK
# 0 "<built-in>"
#define __USACCUM_MAX__ 0XFFFFP-8UHK
# 0 "<built-in>"
#define __USACCUM_EPSILON__ 0x1P-8UHK
# 0 "<built-in>"
#define __ACCUM_FBIT__ 15
# 0 "<built-in>"
#define __ACCUM_IBIT__ 16
# 0 "<built-in>"
#define __ACCUM_MIN__ (-0X1P15K-0X1P15K)
# 0 "<built-in>"
#define __ACCUM_MAX__ 0X7FFFFFFFP-15K
# 0 "<built-in>"
#define __ACCUM_EPSILON__ 0x1P-15K
# 0 "<built-in>"
#define __UACCUM_FBIT__ 16
# 0 "<built-in>"
#define __UACCUM_IBIT__ 16
# 0 "<built-in>"
#define __UACCUM_MIN__ 0.0UK
# 0 "<built-in>"
#define __UACCUM_MAX__ 0XFFFFFFFFP-16UK
# 0 "<built-in>"
#define __UACCUM_EPSILON__ 0x1P-16UK
# 0 "<built-in>"
#define __LACCUM_FBIT__ 31
# 0 "<built-in>"
#define __LACCUM_IBIT__ 32
# 0 "<built-in>"
#define __LACCUM_MIN__ (-0X1P31LK-0X1P31LK)
# 0 "<built-in>"
#define __LACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LK
# 0 "<built-in>"
#define __LACCUM_EPSILON__ 0x1P-31LK
# 0 "<built-in>"
#define __ULACCUM_FBIT__ 32
# 0 "<built-in>"
#define __ULACCUM_IBIT__ 32
# 0 "<built-in>"
#define __ULACCUM_MIN__ 0.0ULK
# 0 "<built-in>"
#define __ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK
# 0 "<built-in>"
#define __ULACCUM_EPSILON__ 0x1P-32ULK
# 0 "<built-in>"
#define __LLACCUM_FBIT__ 63
# 0 "<built-in>"
#define __LLACCUM_IBIT__ 64
# 0 "<built-in>"
#define __LLACCUM_MIN__ (-0X1P63LLK-0X1P63LLK)
# 0 "<built-in>"
#define __LLACCUM_MAX__ 0X7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFP-63LLK
# 0 "<built-in>"
#define __LLACCUM_EPSILON__ 0x1P-63LLK
# 0 "<built-in>"
#define __ULLACCUM_FBIT__ 64
# 0 "<built-in>"
#define __ULLACCUM_IBIT__ 64
# 0 "<built-in>"
#define __ULLACCUM_MIN__ 0.0ULLK
# 0 "<built-in>"
#define __ULLACCUM_MAX__ 0XFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFP-64ULLK
# 0 "<built-in>"
#define __ULLACCUM_EPSILON__ 0x1P-64ULLK
# 0 "<built-in>"
#define __QQ_FBIT__ 7
# 0 "<built-in>"
#define __QQ_IBIT__ 0
# 0 "<built-in>"
#define __HQ_FBIT__ 15
# 0 "<built-in>"
#define __HQ_IBIT__ 0
# 0 "<built-in>"
#define __SQ_FBIT__ 31
# 0 "<built-in>"
#define __SQ_IBIT__ 0
# 0 "<built-in>"
#define __DQ_FBIT__ 63
# 0 "<built-in>"
#define __DQ_IBIT__ 0
# 0 "<built-in>"
#define __TQ_FBIT__ 127
# 0 "<built-in>"
#define __TQ_IBIT__ 0
# 0 "<built-in>"
#define __UQQ_FBIT__ 8
# 0 "<built-in>"
#define __UQQ_IBIT__ 0
# 0 "<built-in>"
#define __UHQ_FBIT__ 16
# 0 "<built-in>"
#define __UHQ_IBIT__ 0
# 0 "<built-in>"
#define __USQ_FBIT__ 32
# 0 "<built-in>"
#define __USQ_IBIT__ 0
# 0 "<built-in>"
#define __UDQ_FBIT__ 64
# 0 "<built-in>"
#define __UDQ_IBIT__ 0
# 0 "<built-in>"
#define __UTQ_FBIT__ 128
# 0 "<built-in>"
#define __UTQ_IBIT__ 0
# 0 "<built-in>"
#define __HA_FBIT__ 7
# 0 "<built-in>"
#define __HA_IBIT__ 8
# 0 "<built-in>"
#define __SA_FBIT__ 15
# 0 "<built-in>"
#define __SA_IBIT__ 16
# 0 "<built-in>"
#define __DA_FBIT__ 31
# 0 "<built-in>"
#define __DA_IBIT__ 32
# 0 "<built-in>"
#define __TA_FBIT__ 63
# 0 "<built-in>"
#define __TA_IBIT__ 64
# 0 "<built-in>"
#define __UHA_FBIT__ 8
# 0 "<built-in>"
#define __UHA_IBIT__ 8
# 0 "<built-in>"
#define __USA_FBIT__ 16
# 0 "<built-in>"
#define __USA_IBIT__ 16
# 0 "<built-in>"
#define __UDA_FBIT__ 32
# 0 "<built-in>"
#define __UDA_IBIT__ 32
# 0 "<built-in>"
#define __UTA_FBIT__ 64
# 0 "<built-in>"
#define __UTA_IBIT__ 64
# 0 "<built-in>"
#define __REGISTER_PREFIX__ $
# 0 "<built-in>"
#define __USER_LABEL_PREFIX__ 
# 0 "<built-in>"
#define __GNUC_STDC_INLINE__ 1
# 0 "<built-in>"
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
# 0 "<built-in>"
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
# 0 "<built-in>"
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
# 0 "<built-in>"
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
# 0 "<built-in>"
#define __GCC_ATOMIC_BOOL_LOCK_FREE 2
# 0 "<built-in>"
#define __GCC_ATOMIC_CHAR_LOCK_FREE 2
# 0 "<built-in>"
#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
# 0 "<built-in>"
#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
# 0 "<built-in>"
#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
# 0 "<built-in>"
#define __GCC_ATOMIC_SHORT_LOCK_FREE 2
# 0 "<built-in>"
#define __GCC_ATOMIC_INT_LOCK_FREE 2
# 0 "<built-in>"
#define __GCC_ATOMIC_LONG_LOCK_FREE 2
# 0 "<built-in>"
#define __GCC_ATOMIC_LLONG_LOCK_FREE 2
# 0 "<built-in>"
#define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1
# 0 "<built-in>"
#define __GCC_ATOMIC_POINTER_LOCK_FREE 2
# 0 "<built-in>"
#define __HAVE_SPECULATION_SAFE_VALUE 1
# 0 "<built-in>"
#define __GCC_HAVE_DWARF2_CFI_ASM 1
# 0 "<built-in>"
#define __PRAGMA_REDEFINE_EXTNAME 1
# 0 "<built-in>"
#define __SIZEOF_INT128__ 16
# 0 "<built-in>"
#define __SIZEOF_WCHAR_T__ 4
# 0 "<built-in>"
#define __SIZEOF_WINT_T__ 4
# 0 "<built-in>"
#define __SIZEOF_PTRDIFF_T__ 8
# 0 "<built-in>"
#define __loongarch__ 1
# 0 "<built-in>"
#define _LOONGARCH_ARCH_LOONGARCH64 1
# 0 "<built-in>"
#define _LOONGARCH_ARCH "loongarch64"
# 0 "<built-in>"
#define _LOONGARCH_TUNE_LOONGARCH64 1
# 0 "<built-in>"
#define _LOONGARCH_TUNE "loongarch64"
# 0 "<built-in>"
#define __LOONGARCH_ARCH_LOONGARCH64 1
# 0 "<built-in>"
#define __loongarch_arch "loongarch64"
# 0 "<built-in>"
#define __LOONGARCH_TUNE_LOONGARCH64 1
# 0 "<built-in>"
#define __loongarch_tune "loongarch64"
# 0 "<built-in>"
#define __loongarch_grlen 64
# 0 "<built-in>"
#define __loongarch64 1
# 0 "<built-in>"
#define _ABILP64 3
# 0 "<built-in>"
#define _LOONGARCH_SIM _ABILP64
# 0 "<built-in>"
#define __loongarch_lp64 1
# 0 "<built-in>"
#define __loongarch_double_float 1
# 0 "<built-in>"
#define __loongarch_hard_float 1
# 0 "<built-in>"
#define __loongarch_frlen 64
# 0 "<built-in>"
#define __loongarch_simd 1
# 0 "<built-in>"
#define __loongarch_sx 1
# 0 "<built-in>"
#define __loongarch_asx 1
# 0 "<built-in>"
#define __loongarch_simd_width 256
# 0 "<built-in>"
#define __FLOAT128_TYPE__ 1
# 0 "<built-in>"
#define __builtin_fabsq __builtin_fabsf128
# 0 "<built-in>"
#define __builtin_copysignq __builtin_copysignf128
# 0 "<built-in>"
#define __builtin_nanq __builtin_nanf128
# 0 "<built-in>"
#define __builtin_nansq __builtin_nansf128
# 0 "<built-in>"
#define __builtin_infq __builtin_inff128
# 0 "<built-in>"
#define __builtin_huge_valq __builtin_huge_valf128
# 0 "<built-in>"
#define _LOONGARCH_SZINT 32
# 0 "<built-in>"
#define _LOONGARCH_SZLONG 64
# 0 "<built-in>"
#define _LOONGARCH_SZPTR 64
# 0 "<built-in>"
#define _LOONGARCH_FPSET 32
# 0 "<built-in>"
#define _LOONGARCH_SPFPSET 32
# 0 "<built-in>"
#define __gnu_linux__ 1
# 0 "<built-in>"
#define __linux 1
# 0 "<built-in>"
#define __linux__ 1
# 0 "<built-in>"
#define linux 1
# 0 "<built-in>"
#define __unix 1
# 0 "<built-in>"
#define __unix__ 1
# 0 "<built-in>"
#define unix 1
# 0 "<built-in>"
#define __ELF__ 1
# 0 "<命令行>"
#define SPEC_CPU 1
# 0 "<命令行>"
#define NDEBUG 1
# 0 "<命令行>"
#define SPEC_CPU_LP64 1
# 0 "<命令行>"
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdc-predef.h" 1 3 4
# 19 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdc-predef.h" 3 4
#define _STDC_PREDEF_H 1
# 38 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdc-predef.h" 3 4
#define __STDC_IEC_559__ 1
#define __STDC_IEC_60559_BFP__ 201404L
# 48 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdc-predef.h" 3 4
#define __STDC_IEC_559_COMPLEX__ 1
#define __STDC_IEC_60559_COMPLEX__ 201404L
# 62 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdc-predef.h" 3 4
#define __STDC_ISO_10646__ 201706L
# 0 "<命令行>" 2
# 1 "regrename.c"
# 21 "regrename.c"
#define REG_OK_STRICT 

# 1 "config.h" 1
#define TARGET_CPU_DEFAULT (TARGET_CPU_DEFAULT_athlon_sse)
# 1 "auto-host.h" 1
# 16 "auto-host.h"
#define GETGROUPS_T gid_t





#define HAVE_ALLOCA 1


#define HAVE_ALLOCA_H 1


#define HAVE_STRINGIZE 1
# 61 "auto-host.h"
#define STDC_HEADERS 1
# 74 "auto-host.h"
#define HAVE_GAS_MAX_SKIP_P2ALIGN 1


#define HAVE_GAS_BALIGN_AND_P2ALIGN 1


#define HAVE_GAS_FILDS_FISTS 1







#define PREFIX_INCLUDE_DIR "NONE/include"


#define HAVE___ARGZ_COUNT 1


#define HAVE___ARGZ_NEXT 1


#define HAVE___ARGZ_STRINGIFY 1


#define HAVE_ATOLL 1





#define HAVE_CLOCK 1


#define HAVE_DCGETTEXT 1


#define HAVE_DUP2 1
# 126 "auto-host.h"
#define HAVE_GETCWD 1


#define HAVE_GETEGID 1


#define HAVE_GETEUID 1


#define HAVE_GETGID 1





#define HAVE_GETRLIMIT 1





#define HAVE_GETUID 1


#define HAVE_KILL 1





#define HAVE_MEMPCPY 1


#define HAVE_MUNMAP 1


#define HAVE_NL_LANGINFO 1





#define HAVE_PUTENV 1


#define HAVE_SETENV 1


#define HAVE_SETLOCALE 1


#define HAVE_SETRLIMIT 1


#define HAVE_STPCPY 1


#define HAVE_STRCASECMP 1


#define HAVE_STRCHR 1


#define HAVE_STRDUP 1


#define HAVE_STRSIGNAL 1


#define HAVE_STRTOUL 1


#define HAVE_SYSCONF 1





#define HAVE_TSEARCH 1


#define HAVE_ARGZ_H 1





#define HAVE_FCNTL_H 1


#define HAVE_LANGINFO_H 1


#define HAVE_LIMITS_H 1


#define HAVE_LOCALE_H 1



#define HAVE_MALLOC_H 1



#define HAVE_NL_TYPES_H 1


#define HAVE_STDDEF_H 1


#define HAVE_STDLIB_H 1


#define HAVE_STRING_H 1





#define HAVE_SYS_FILE_H 1
# 254 "auto-host.h"
#define HAVE_SYS_STAT_H 1
# 263 "auto-host.h"
#define HAVE_TIME_H 1
# 309 "auto-host.h"
#define HAVE_VOLATILE 1


#define HAVE_LONG_DOUBLE 1
# 323 "auto-host.h"
#define HAVE_LONG_LONG 1

#define HAVE_UNISTD_H 1
# 338 "auto-host.h"
#define SIZEOF_SHORT 2


#define SIZEOF_INT 4


#define SIZEOF_LONG_LONG 8
#define MAX_LONG_TYPE_SIZE 64



#define SIZEOF_LONG 8
# 367 "auto-host.h"
#define _GNU_SOURCE 1
# 397 "auto-host.h"
#define HAVE_INTTYPES_H 1


#define HAVE_PRINTF_PTR 1
# 412 "auto-host.h"
#define HAVE_ICONV 1


#define ICONV_CONST 


#define HAVE_DECL_GETENV 1


#define HAVE_DECL_ATOL 1


#define HAVE_DECL_SBRK 1


#define HAVE_DECL_ABORT 1


#define HAVE_DECL_ATOF 1


#define HAVE_DECL_GETCWD 1


#define HAVE_DECL_GETWD 1
# 454 "auto-host.h"
#define HAVE_DECL_STRSTR 1


#define HAVE_DECL_ERRNO 1


#define HAVE_DECL_MALLOC 1


#define HAVE_DECL_REALLOC 1


#define HAVE_DECL_CALLOC 1


#define HAVE_DECL_FREE 1


#define HAVE_DECL_BASENAME 1


#define HAVE_DECL_GETOPT 1


#define HAVE_DECL_CLOCK 1


#define HAVE_DECL_GETRLIMIT 1


#define HAVE_DECL_SETRLIMIT 1
# 496 "auto-host.h"
#define HAVE_CLOCK_T 1





#define HAVE_ICONV 1


#define ICONV_CONST 


#define HAVE_LANGINFO_CODESET 1


#define HAVE_LC_MESSAGES 1



#define ENABLE_NLS 1




#define HAVE_GETTEXT 1
# 535 "auto-host.h"
#define HAVE_GAS_SUBSECTION_ORDERING 1


#define HAVE_GAS_WEAK 1


#define HAVE_GAS_HIDDEN 1


#define HAVE_AS_LEB128 1





#define HAVE_GAS_SHF_MERGE 1
# 571 "auto-host.h"
#define HAVE_AS_GOTOFF_IN_DATA 0



#define HAVE_AS_DWARF2_DEBUG_LINE 1


#define HAVE_AS_GDWARF2_DEBUG_FLAG 1


#define HAVE_AS_GSTABS_DEBUG_FLAG 1


#define HAVE_LD_EH_FRAME_HDR 1
# 3 "config.h" 2




struct rtx_def;
typedef struct rtx_def *rtx;
struct rtvec_def;
typedef struct rtvec_def *rtvec;
union tree_node;
typedef union tree_node *tree;
# 1 "ansidecl.h" 1
# 115 "ansidecl.h"
#define _ANSIDECL_H 1
# 136 "ansidecl.h"
#define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__)







#define ANSI_PROTOTYPES 1
#define PTR void *
#define PTRCONST void *const
#define LONG_DOUBLE long double

#define PARAMS(ARGS) ARGS
#define VPARAMS(ARGS) ARGS
#define VA_START(VA_LIST,VAR) va_start(VA_LIST, VAR)





#define VA_OPEN(AP,VAR) { va_list AP; va_start(AP, VAR); { struct Qdmy
#define VA_CLOSE(AP) } va_end(AP); }
#define VA_FIXEDARG(AP,T,N) struct Qdmy

#undef const
#undef volatile
#undef signed
# 225 "ansidecl.h"
#define ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
# 234 "ansidecl.h"
#define ATTRIBUTE_UNUSED_LABEL ATTRIBUTE_UNUSED






#define ATTRIBUTE_UNUSED __attribute__ ((__unused__))



#define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))



#define ATTRIBUTE_PRINTF(m,n) __attribute__ ((__format__ (__printf__, m, n)))
#define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2)
#define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3)
#define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4)
#define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5)
#define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6)
# 14 "config.h" 2
# 1 "biarch64.h" 1
# 24 "biarch64.h"
#define TARGET_64BIT_DEFAULT 
#define TARGET_BI_ARCH 
# 15 "config.h" 2
# 1 "i386.h" 1
# 40 "i386.h"
#define HALF_PIC_P() 0
#define HALF_PIC_NUMBER_PTRS 0
#define HALF_PIC_NUMBER_REFS 0
#define HALF_PIC_ENCODE(DECL) 
#define HALF_PIC_DECLARE(NAME) 
#define HALF_PIC_INIT() error ("half-pic init called on systems that don't support it")
#define HALF_PIC_ADDRESS_P(X) 0
#define HALF_PIC_PTR(X) (X)
#define HALF_PIC_FINISH(STREAM) 




struct processor_costs {
  const int add;
  const int lea;
  const int shift_var;
  const int shift_const;
  const int mult_init;
  const int mult_bit;
  const int divide;
  int movsx;
  int movzx;
  const int large_insn;
  const int move_ratio;

  const int movzbl_load;
  const int int_load[3];


  const int int_store[3];

  const int fp_move;
  const int fp_load[3];

  const int fp_store[3];

  const int mmx_move;
  const int mmx_load[2];

  const int mmx_store[2];

  const int sse_move;
  const int sse_load[3];

  const int sse_store[3];

  const int mmxsse_to_integer;

  const int prefetch_block;
  const int simultaneous_prefetches;

};

extern const struct processor_costs *ix86_cost;



extern int target_flags;
# 109 "i386.h"
#define MASK_80387 0x00000001
#define MASK_RTD 0x00000002
#define MASK_ALIGN_DOUBLE 0x00000004
#define MASK_SVR3_SHLIB 0x00000008
#define MASK_IEEE_FP 0x00000010
#define MASK_FLOAT_RETURNS 0x00000020
#define MASK_NO_FANCY_MATH_387 0x00000040
#define MASK_OMIT_LEAF_FRAME_POINTER 0x080
#define MASK_STACK_PROBE 0x00000100
#define MASK_NO_ALIGN_STROPS 0x00000200
#define MASK_INLINE_ALL_STROPS 0x00000400
#define MASK_NO_PUSH_ARGS 0x00000800
#define MASK_ACCUMULATE_OUTGOING_ARGS 0x00001000
#define MASK_ACCUMULATE_OUTGOING_ARGS_SET 0x00002000
#define MASK_MMX 0x00004000
#define MASK_MMX_SET 0x00008000
#define MASK_SSE 0x00010000
#define MASK_SSE_SET 0x00020000
#define MASK_SSE2 0x00040000
#define MASK_SSE2_SET 0x00080000
#define MASK_3DNOW 0x00100000
#define MASK_3DNOW_SET 0x00200000
#define MASK_3DNOW_A 0x00400000
#define MASK_3DNOW_A_SET 0x00800000
#define MASK_128BIT_LONG_DOUBLE 0x01000000
#define MASK_64BIT 0x02000000

#define MASK_NO_RED_ZONE 0x04000000


#define TARGET_80387 (target_flags & MASK_80387)




#define TARGET_RTD (target_flags & MASK_RTD)




#define TARGET_ALIGN_DOUBLE (target_flags & MASK_ALIGN_DOUBLE)


#define TARGET_PUSH_ARGS (!(target_flags & MASK_NO_PUSH_ARGS))


#define TARGET_ACCUMULATE_OUTGOING_ARGS (target_flags & MASK_ACCUMULATE_OUTGOING_ARGS)




#define TARGET_SVR3_SHLIB (target_flags & MASK_SVR3_SHLIB)




#define TARGET_IEEE_FP (target_flags & MASK_IEEE_FP)




#define TARGET_FLOAT_RETURNS_IN_80387 (target_flags & MASK_FLOAT_RETURNS)




#define TARGET_128BIT_LONG_DOUBLE (target_flags & MASK_128BIT_LONG_DOUBLE)



#define TARGET_NO_FANCY_MATH_387 (target_flags & MASK_NO_FANCY_MATH_387)


#define TARGET_OMIT_LEAF_FRAME_POINTER (target_flags & MASK_OMIT_LEAF_FRAME_POINTER)



#define TARGET_DEBUG_ADDR (ix86_debug_addr_string != 0)


#define TARGET_DEBUG_ARG (ix86_debug_arg_string != 0)



#define TARGET_64BIT (target_flags & MASK_64BIT)
# 202 "i386.h"
#define TARGET_386 (ix86_cpu == PROCESSOR_I386)
#define TARGET_486 (ix86_cpu == PROCESSOR_I486)
#define TARGET_PENTIUM (ix86_cpu == PROCESSOR_PENTIUM)
#define TARGET_PENTIUMPRO (ix86_cpu == PROCESSOR_PENTIUMPRO)
#define TARGET_K6 (ix86_cpu == PROCESSOR_K6)
#define TARGET_ATHLON (ix86_cpu == PROCESSOR_ATHLON)
#define TARGET_PENTIUM4 (ix86_cpu == PROCESSOR_PENTIUM4)

#define CPUMASK (1 << ix86_cpu)
extern const int x86_use_leave, x86_push_memory, x86_zero_extend_with_and;
extern const int x86_use_bit_test, x86_cmove, x86_deep_branch;
extern const int x86_branch_hints, x86_unroll_strlen;
extern const int x86_double_with_add, x86_partial_reg_stall, x86_movx;
extern const int x86_use_loop, x86_use_fiop, x86_use_mov0;
extern const int x86_use_cltd, x86_read_modify_write;
extern const int x86_read_modify, x86_split_long_moves;
extern const int x86_promote_QImode, x86_single_stringop;
extern const int x86_himode_math, x86_qimode_math, x86_promote_qi_regs;
extern const int x86_promote_hi_regs, x86_integer_DFmode_moves;
extern const int x86_add_esp_4, x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8;
extern const int x86_partial_reg_dependency, x86_memory_mismatch_stall;
extern const int x86_accumulate_outgoing_args, x86_prologue_using_move;
extern const int x86_epilogue_using_move, x86_decompose_lea;
extern const int x86_arch_always_fancy_math_387;
extern int x86_prefetch_sse;

#define TARGET_USE_LEAVE (x86_use_leave & CPUMASK)
#define TARGET_PUSH_MEMORY (x86_push_memory & CPUMASK)
#define TARGET_ZERO_EXTEND_WITH_AND (x86_zero_extend_with_and & CPUMASK)
#define TARGET_USE_BIT_TEST (x86_use_bit_test & CPUMASK)
#define TARGET_UNROLL_STRLEN (x86_unroll_strlen & CPUMASK)


#define TARGET_CMOVE ((x86_cmove & (1 << ix86_arch)) || TARGET_SSE)
#define TARGET_DEEP_BRANCH_PREDICTION (x86_deep_branch & CPUMASK)
#define TARGET_BRANCH_PREDICTION_HINTS (x86_branch_hints & CPUMASK)
#define TARGET_DOUBLE_WITH_ADD (x86_double_with_add & CPUMASK)
#define TARGET_USE_SAHF ((x86_use_sahf & CPUMASK) && !TARGET_64BIT)
#define TARGET_MOVX (x86_movx & CPUMASK)
#define TARGET_PARTIAL_REG_STALL (x86_partial_reg_stall & CPUMASK)
#define TARGET_USE_LOOP (x86_use_loop & CPUMASK)
#define TARGET_USE_FIOP (x86_use_fiop & CPUMASK)
#define TARGET_USE_MOV0 (x86_use_mov0 & CPUMASK)
#define TARGET_USE_CLTD (x86_use_cltd & CPUMASK)
#define TARGET_SPLIT_LONG_MOVES (x86_split_long_moves & CPUMASK)
#define TARGET_READ_MODIFY_WRITE (x86_read_modify_write & CPUMASK)
#define TARGET_READ_MODIFY (x86_read_modify & CPUMASK)
#define TARGET_PROMOTE_QImode (x86_promote_QImode & CPUMASK)
#define TARGET_SINGLE_STRINGOP (x86_single_stringop & CPUMASK)
#define TARGET_QIMODE_MATH (x86_qimode_math & CPUMASK)
#define TARGET_HIMODE_MATH (x86_himode_math & CPUMASK)
#define TARGET_PROMOTE_QI_REGS (x86_promote_qi_regs & CPUMASK)
#define TARGET_PROMOTE_HI_REGS (x86_promote_hi_regs & CPUMASK)
#define TARGET_ADD_ESP_4 (x86_add_esp_4 & CPUMASK)
#define TARGET_ADD_ESP_8 (x86_add_esp_8 & CPUMASK)
#define TARGET_SUB_ESP_4 (x86_sub_esp_4 & CPUMASK)
#define TARGET_SUB_ESP_8 (x86_sub_esp_8 & CPUMASK)
#define TARGET_INTEGER_DFMODE_MOVES (x86_integer_DFmode_moves & CPUMASK)
#define TARGET_PARTIAL_REG_DEPENDENCY (x86_partial_reg_dependency & CPUMASK)
#define TARGET_MEMORY_MISMATCH_STALL (x86_memory_mismatch_stall & CPUMASK)
#define TARGET_PROLOGUE_USING_MOVE (x86_prologue_using_move & CPUMASK)
#define TARGET_EPILOGUE_USING_MOVE (x86_epilogue_using_move & CPUMASK)
#define TARGET_DECOMPOSE_LEA (x86_decompose_lea & CPUMASK)
#define TARGET_PREFETCH_SSE (x86_prefetch_sse)

#define TARGET_STACK_PROBE (target_flags & MASK_STACK_PROBE)

#define TARGET_ALIGN_STRINGOPS (!(target_flags & MASK_NO_ALIGN_STROPS))
#define TARGET_INLINE_ALL_STRINGOPS (target_flags & MASK_INLINE_ALL_STROPS)

#define ASSEMBLER_DIALECT (ix86_asm_dialect)

#define TARGET_SSE ((target_flags & (MASK_SSE | MASK_SSE2)) != 0)
#define TARGET_SSE2 ((target_flags & MASK_SSE2) != 0)
#define TARGET_SSE_MATH ((ix86_fpmath & FPMATH_SSE) != 0)
#define TARGET_MIX_SSE_I387 ((ix86_fpmath & FPMATH_SSE) && (ix86_fpmath & FPMATH_387))

#define TARGET_MMX ((target_flags & MASK_MMX) != 0)
#define TARGET_3DNOW ((target_flags & MASK_3DNOW) != 0)
#define TARGET_3DNOW_A ((target_flags & MASK_3DNOW_A) != 0)

#define TARGET_RED_ZONE (!(target_flags & MASK_NO_RED_ZONE))






#define TARGET_SWITCHES { { "80387", MASK_80387, N_("Use hardware fp") }, { "no-80387", -MASK_80387, N_("Do not use hardware fp") }, { "hard-float", MASK_80387, N_("Use hardware fp") }, { "soft-float", -MASK_80387, N_("Do not use hardware fp") }, { "no-soft-float", MASK_80387, N_("Use hardware fp") }, { "386", 0, "" }, { "486", 0, "" }, { "pentium", 0, "" }, { "pentiumpro", 0, "" }, { "intel-syntax", 0, "" }, { "no-intel-syntax", 0, "" }, { "rtd", MASK_RTD, N_("Alternate calling convention") }, { "no-rtd", -MASK_RTD, N_("Use normal calling convention") }, { "align-double", MASK_ALIGN_DOUBLE, N_("Align some doubles on dword boundary") }, { "no-align-double", -MASK_ALIGN_DOUBLE, N_("Align doubles on word boundary") }, { "svr3-shlib", MASK_SVR3_SHLIB, N_("Uninitialized locals in .bss") }, { "no-svr3-shlib", -MASK_SVR3_SHLIB, N_("Uninitialized locals in .data") }, { "ieee-fp", MASK_IEEE_FP, N_("Use IEEE math for fp comparisons") }, { "no-ieee-fp", -MASK_IEEE_FP, N_("Do not use IEEE math for fp comparisons") }, { "fp-ret-in-387", MASK_FLOAT_RETURNS, N_("Return values of functions in FPU registers") }, { "no-fp-ret-in-387", -MASK_FLOAT_RETURNS , N_("Do not return values of functions in FPU registers")}, { "no-fancy-math-387", MASK_NO_FANCY_MATH_387, N_("Do not generate sin, cos, sqrt for FPU") }, { "fancy-math-387", -MASK_NO_FANCY_MATH_387, N_("Generate sin, cos, sqrt for FPU")}, { "omit-leaf-frame-pointer", MASK_OMIT_LEAF_FRAME_POINTER, N_("Omit the frame pointer in leaf functions") }, { "no-omit-leaf-frame-pointer",-MASK_OMIT_LEAF_FRAME_POINTER, "" }, { "stack-arg-probe", MASK_STACK_PROBE, N_("Enable stack probing") }, { "no-stack-arg-probe", -MASK_STACK_PROBE, "" }, { "windows", 0, 0 }, { "dll", 0, 0 }, { "align-stringops", -MASK_NO_ALIGN_STROPS, N_("Align destination of the string operations") }, { "no-align-stringops", MASK_NO_ALIGN_STROPS, N_("Do not align destination of the string operations") }, { "inline-all-stringops", MASK_INLINE_ALL_STROPS, N_("Inline all known string operations") }, { "no-inline-all-stringops", -MASK_INLINE_ALL_STROPS, N_("Do not inline all known string operations") }, { "push-args", -MASK_NO_PUSH_ARGS, N_("Use push instructions to save outgoing arguments") }, { "no-push-args", MASK_NO_PUSH_ARGS, N_("Do not use push instructions to save outgoing arguments") }, { "accumulate-outgoing-args", (MASK_ACCUMULATE_OUTGOING_ARGS | MASK_ACCUMULATE_OUTGOING_ARGS_SET), N_("Use push instructions to save outgoing arguments") }, { "no-accumulate-outgoing-args",MASK_ACCUMULATE_OUTGOING_ARGS_SET, N_("Do not use push instructions to save outgoing arguments") }, { "mmx", MASK_MMX | MASK_MMX_SET, N_("Support MMX built-in functions") }, { "no-mmx", -MASK_MMX, N_("Do not support MMX built-in functions") }, { "no-mmx", MASK_MMX_SET, "" }, { "3dnow", MASK_3DNOW | MASK_3DNOW_SET, N_("Support 3DNow! built-in functions") }, { "no-3dnow", -MASK_3DNOW, "" }, { "no-3dnow", MASK_3DNOW_SET, N_("Do not support 3DNow! built-in functions") }, { "sse", MASK_SSE | MASK_SSE_SET, N_("Support MMX and SSE built-in functions and code generation") }, { "no-sse", -MASK_SSE, "" }, { "no-sse", MASK_SSE_SET, N_("Do not support MMX and SSE built-in functions and code generation") }, { "sse2", MASK_SSE2 | MASK_SSE2_SET, N_("Support MMX, SSE and SSE2 built-in functions and code generation") }, { "no-sse2", -MASK_SSE2, "" }, { "no-sse2", MASK_SSE2_SET, N_("Do not support MMX, SSE and SSE2 built-in functions and code generation") }, { "128bit-long-double", MASK_128BIT_LONG_DOUBLE, N_("sizeof(long double) is 16") }, { "96bit-long-double", -MASK_128BIT_LONG_DOUBLE, N_("sizeof(long double) is 12") }, { "64", MASK_64BIT, N_("Generate 64bit x86-64 code") }, { "32", -MASK_64BIT, N_("Generate 32bit i386 code") }, { "red-zone", -MASK_NO_RED_ZONE, N_("Use red-zone in the x86-64 code") }, { "no-red-zone", MASK_NO_RED_ZONE, N_("Do not use red-zone in the x86-64 code") }, SUBTARGET_SWITCHES { "", TARGET_DEFAULT, 0 }}
# 387 "i386.h"
#define TARGET_DEFAULT (MASK_64BIT | TARGET_SUBTARGET_DEFAULT)







enum processor_type
{
  PROCESSOR_I386,
  PROCESSOR_I486,
  PROCESSOR_PENTIUM,
  PROCESSOR_PENTIUMPRO,
  PROCESSOR_K6,
  PROCESSOR_ATHLON,
  PROCESSOR_PENTIUM4,
  PROCESSOR_max
};
enum fpmath_unit
{
  FPMATH_387 = 1,
  FPMATH_SSE = 2
};

extern enum processor_type ix86_cpu;
extern enum fpmath_unit ix86_fpmath;

extern int ix86_arch;
# 426 "i386.h"
#define TARGET_OPTIONS { { "cpu=", &ix86_cpu_string, N_("Schedule code for given CPU")}, { "fpmath=", &ix86_fpmath_string, N_("Generate floating point mathematics using given instruction set")}, { "arch=", &ix86_arch_string, N_("Generate code for given CPU")}, { "regparm=", &ix86_regparm_string, N_("Number of registers used to pass integer arguments") }, { "align-loops=", &ix86_align_loops_string, N_("Loop code aligned to this power of 2") }, { "align-jumps=", &ix86_align_jumps_string, N_("Jump targets are aligned to this power of 2") }, { "align-functions=", &ix86_align_funcs_string, N_("Function starts are aligned to this power of 2") }, { "preferred-stack-boundary=", &ix86_preferred_stack_boundary_string, N_("Attempt to keep stack aligned to this power of 2") }, { "branch-cost=", &ix86_branch_cost_string, N_("Branches are this expensive (1-5, arbitrary units)") }, { "cmodel=", &ix86_cmodel_string, N_("Use given x86-64 code model") }, { "debug-arg", &ix86_debug_arg_string, "" }, { "debug-addr", &ix86_debug_addr_string, "" }, { "asm=", &ix86_asm_string, N_("Use given assembler dialect") }, SUBTARGET_OPTIONS }
# 466 "i386.h"
#define OVERRIDE_OPTIONS override_options ()


#define SUBTARGET_SWITCHES 
#define SUBTARGET_OPTIONS 


#define OPTIMIZATION_OPTIONS(LEVEL,SIZE) optimization_options ((LEVEL), (SIZE))





#define CC1_CPU_SPEC "%{!mcpu*: %{m386:-mcpu=i386 %n`-m386' is deprecated. Use `-march=i386' or `-mcpu=i386' instead.\n} %{m486:-mcpu=i486 %n`-m486' is deprecated. Use `-march=i486' or `-mcpu=i486' instead.\n} %{mpentium:-mcpu=pentium %n`-mpentium' is deprecated. Use `-march=pentium' or `-mcpu=pentium' instead.\n} %{mpentiumpro:-mcpu=pentiumpro %n`-mpentiumpro' is deprecated. Use `-march=pentiumpro' or `-mcpu=pentiumpro' instead.\n}} %{mintel-syntax:-masm=intel %n`-mintel-syntax' is deprecated. Use `-masm=intel' instead.\n} %{mno-intel-syntax:-masm=att %n`-mno-intel-syntax' is deprecated. Use `-masm=att' instead.\n}"
# 495 "i386.h"
#define TARGET_CPU_DEFAULT_i386 0
#define TARGET_CPU_DEFAULT_i486 1
#define TARGET_CPU_DEFAULT_pentium 2
#define TARGET_CPU_DEFAULT_pentium_mmx 3
#define TARGET_CPU_DEFAULT_pentiumpro 4
#define TARGET_CPU_DEFAULT_pentium2 5
#define TARGET_CPU_DEFAULT_pentium3 6
#define TARGET_CPU_DEFAULT_pentium4 7
#define TARGET_CPU_DEFAULT_k6 8
#define TARGET_CPU_DEFAULT_k6_2 9
#define TARGET_CPU_DEFAULT_k6_3 10
#define TARGET_CPU_DEFAULT_athlon 11
#define TARGET_CPU_DEFAULT_athlon_sse 12

#define TARGET_CPU_DEFAULT_NAMES {"i386", "i486", "pentium", "pentium-mmx", "pentiumpro", "pentium2", "pentium3", "pentium4", "k6", "k6-2", "k6-3", "athlon", "athlon-4"}
# 550 "i386.h"
#define CPP_CPU_DEFAULT_SPEC "-D__tune_athlon__ -D__tune_athlon_sse__"







#define NO_BUILTIN_SIZE_TYPE 
#define NO_BUILTIN_PTRDIFF_TYPE 



#define CPP_CPU32_SIZE_TYPE_SPEC " -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int"

#define CPP_CPU64_SIZE_TYPE_SPEC " -D__SIZE_TYPE__=unsigned\\ long\\ int -D__PTRDIFF_TYPE__=long\\ int"






#define CPP_CPU32_SPEC "-Acpu=i386 -Amachine=i386 %{!ansi:%{!std=c*:%{!std=i*:-Di386}}} -D__i386 -D__i386__ %(cpp_cpu32sizet)"



#define CPP_CPU64_SPEC "-Acpu=x86_64 -Amachine=x86_64 -D__x86_64 -D__x86_64__ %(cpp_cpu64sizet)"


#define CPP_CPUCOMMON_SPEC "%{march=i386:%{!mcpu*:-D__tune_i386__ }}%{march=i486:-D__i486 -D__i486__ %{!mcpu*:-D__tune_i486__ }}%{march=pentium|march=i586:-D__i586 -D__i586__ -D__pentium -D__pentium__   %{!mcpu*:-D__tune_i586__ -D__tune_pentium__ }}%{march=pentium-mmx:-D__i586 -D__i586__ -D__pentium -D__pentium__   -D__pentium__mmx__   %{!mcpu*:-D__tune_i586__ -D__tune_pentium__ -D__tune_pentium_mmx__}}%{march=pentiumpro|march=i686:-D__i686 -D__i686__   -D__pentiumpro -D__pentiumpro__   %{!mcpu*:-D__tune_i686__ -D__tune_pentiumpro__ }}%{march=k6:-D__k6 -D__k6__ %{!mcpu*:-D__tune_k6__ }}%{march=k6-2:-D__k6 -D__k6__ -D__k6_2__   %{!mcpu*:-D__tune_k6__ -D__tune_k6_2__ }}%{march=k6-3:-D__k6 -D__k6__ -D__k6_3__   %{!mcpu*:-D__tune_k6__ -D__tune_k6_3__ }}%{march=athlon|march=athlon-tbird:-D__athlon -D__athlon__   %{!mcpu*:-D__tune_athlon__ }}%{march=athlon-4|march=athlon-xp|march=athlon-mp:-D__athlon -D__athlon__   -D__athlon_sse__   %{!mcpu*:-D__tune_athlon__ -D__tune_athlon_sse__ }}%{march=pentium4:-D__pentium4 -D__pentium4__ %{!mcpu*:-D__tune_pentium4__ }}%{m386|mcpu=i386:-D__tune_i386__ }%{m486|mcpu=i486:-D__tune_i486__ }%{mpentium|mcpu=pentium|mcpu=i586|mcpu=pentium-mmx:-D__tune_i586__ -D__tune_pentium__ }%{mpentiumpro|mcpu=pentiumpro|mcpu=i686|cpu=pentium2|cpu=pentium3:-D__tune_i686__ -D__tune_pentiumpro__ }%{mcpu=k6|mcpu=k6-2|mcpu=k6-3:-D__tune_k6__ }%{mcpu=athlon|mcpu=athlon-tbird|mcpu=athlon-4|mcpu=athlon-xp|mcpu=athlon-mp:-D__tune_athlon__ }%{mcpu=athlon-4|mcpu=athlon-xp|mcpu=athlon-mp:-D__tune_athlon_sse__ }%{mcpu=pentium4:-D__tune_pentium4__ }%{march=athlon-xp|march=athlon-mp|march=pentium3|march=pentium4:-D__SSE__ }%{march=pentium-mmx|march=k6|march=k6-2|march=k6-3|march=athlon|march=athlon-tbird|march=athlon-4|march=athlon-xp|march=athlon-mp|march=pentium2|march=pentium3|march=pentium4: -D__MMX__ }%{march=k6-2|march=k6-3|march=athlon|march=athlon-tbird|march=athlon-4|march=athlon-xp|march=athlon-mp: -D__3dNOW__ }%{march=athlon|march=athlon-tbird|march=athlon-4|march=athlon-xp|march=athlon-mp: -D__3dNOW_A__ }%{march=pentium4: -D__SSE2__ }%{!march*:%{!mcpu*:%{!m386:%{!m486:%{!mpentium*:%(cpp_cpu_default)}}}}}"
# 628 "i386.h"
#define CPP_CPU_SPEC "%{m32:%(cpp_cpu32)}%{!m32:%(cpp_cpu64)} %(cpp_cpucommon)"
# 642 "i386.h"
#define CC1_SPEC "%(cc1_cpu) "
# 656 "i386.h"
#define SUBTARGET_EXTRA_SPECS 


#define EXTRA_SPECS { "cpp_cpu_default", CPP_CPU_DEFAULT_SPEC }, { "cpp_cpu", CPP_CPU_SPEC }, { "cpp_cpu32", CPP_CPU32_SPEC }, { "cpp_cpu64", CPP_CPU64_SPEC }, { "cpp_cpu32sizet", CPP_CPU32_SIZE_TYPE_SPEC }, { "cpp_cpu64sizet", CPP_CPU64_SIZE_TYPE_SPEC }, { "cpp_cpucommon", CPP_CPUCOMMON_SPEC }, { "cc1_cpu", CC1_CPU_SPEC }, SUBTARGET_EXTRA_SPECS
# 678 "i386.h"
#define LONG_DOUBLE_TYPE_SIZE (TARGET_128BIT_LONG_DOUBLE ? 128 : 96)
#define MAX_LONG_DOUBLE_TYPE_SIZE 128



#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 96



#define INTEL_EXTENDED_IEEE_FORMAT 1


#define SHORT_TYPE_SIZE 16
#define INT_TYPE_SIZE 32
#define FLOAT_TYPE_SIZE 32
#define LONG_TYPE_SIZE BITS_PER_WORD
#define MAX_WCHAR_TYPE_SIZE 32
#define DOUBLE_TYPE_SIZE 64
#define LONG_LONG_TYPE_SIZE 64


#define MAX_BITS_PER_WORD 64
#define MAX_LONG_TYPE_SIZE 64
# 714 "i386.h"
#define BITS_BIG_ENDIAN 0



#define BYTES_BIG_ENDIAN 0




#define WORDS_BIG_ENDIAN 0


#define BITS_PER_UNIT 8





#define BITS_PER_WORD (TARGET_64BIT ? 64 : 32)


#define UNITS_PER_WORD (TARGET_64BIT ? 8 : 4)
#define MIN_UNITS_PER_WORD 4



#define POINTER_SIZE BITS_PER_WORD


#define PARM_BOUNDARY BITS_PER_WORD


#define STACK_BOUNDARY BITS_PER_WORD



#define PREFERRED_STACK_BOUNDARY ix86_preferred_stack_boundary





#define FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN (ix86_preferred_stack_boundary > STACK_BOUNDARY && !TARGET_64BIT)



#define FUNCTION_BOUNDARY 16



#define EMPTY_FIELD_BOUNDARY BITS_PER_WORD
# 774 "i386.h"
#define BIGGEST_ALIGNMENT 128


#define ALIGN_MODE_128(MODE) ((MODE) == XFmode || (MODE) == TFmode || ((MODE) == TImode) || (MODE) == V4SFmode || (MODE) == V4SImode)
# 791 "i386.h"
#define ADJUST_FIELD_ALIGN(FIELD,COMPUTED) x86_field_alignment (FIELD, COMPUTED)
# 807 "i386.h"
#define CONSTANT_ALIGNMENT(EXP,ALIGN) ix86_constant_alignment ((EXP), (ALIGN))
# 821 "i386.h"
#define DATA_ALIGNMENT(TYPE,ALIGN) ix86_data_alignment ((TYPE), (ALIGN))
# 833 "i386.h"
#define LOCAL_ALIGNMENT(TYPE,ALIGN) ix86_local_alignment ((TYPE), (ALIGN))





#define FUNCTION_ARG_BOUNDARY(MODE,TYPE) ix86_function_arg_boundary ((MODE), (TYPE))




#define STRICT_ALIGNMENT 0




#define PCC_BITFIELD_TYPE_MATTERS 1






#define STACK_REGS 
#define IS_STACK_MODE(MODE) ((MODE) == DFmode || (MODE) == SFmode || (MODE) == XFmode || (MODE) == TFmode)
# 877 "i386.h"
#define FIRST_PSEUDO_REGISTER 53




#define DWARF_FRAME_REGISTERS 17
# 892 "i386.h"
#define FIXED_REGISTERS { 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
# 918 "i386.h"
#define CALL_USED_REGISTERS { 3, 3, 3, 0, 2, 2, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3}
# 941 "i386.h"
#define REG_ALLOC_ORDER { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52 }
# 951 "i386.h"
#define ORDER_REGS_FOR_LOCAL_ALLOC x86_order_regs_for_local_alloc ()



#define CONDITIONAL_REGISTER_USAGE do { int i; for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) { fixed_regs[i] = (fixed_regs[i] & (TARGET_64BIT ? 2 : 1)) != 0; call_used_regs[i] = (call_used_regs[i] & (TARGET_64BIT ? 2 : 1)) != 0; } if (PIC_OFFSET_TABLE_REGNUM != INVALID_REGNUM) { fixed_regs[PIC_OFFSET_TABLE_REGNUM] = 1; call_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1; } if (! TARGET_MMX) { int i; for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) if (TEST_HARD_REG_BIT (reg_class_contents[(int)MMX_REGS], i)) fixed_regs[i] = call_used_regs[i] = 1; } if (! TARGET_SSE) { int i; for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) if (TEST_HARD_REG_BIT (reg_class_contents[(int)SSE_REGS], i)) fixed_regs[i] = call_used_regs[i] = 1; } if (! TARGET_80387 && ! TARGET_FLOAT_RETURNS_IN_80387) { int i; HARD_REG_SET x; COPY_HARD_REG_SET (x, reg_class_contents[(int)FLOAT_REGS]); for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) if (TEST_HARD_REG_BIT (x, i)) fixed_regs[i] = call_used_regs[i] = 1; } } while (0)
# 1004 "i386.h"
#define HARD_REGNO_NREGS(REGNO,MODE) (FP_REGNO_P (REGNO) || SSE_REGNO_P (REGNO) || MMX_REGNO_P (REGNO) ? (COMPLEX_MODE_P (MODE) ? 2 : 1) : ((MODE) == TFmode ? (TARGET_64BIT ? 2 : 3) : (MODE) == TCmode ? (TARGET_64BIT ? 4 : 6) : ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)))
# 1013 "i386.h"
#define VALID_SSE_REG_MODE(MODE) ((MODE) == TImode || (MODE) == V4SFmode || (MODE) == V4SImode || (MODE) == SFmode || (TARGET_SSE2 && ((MODE) == DFmode || VALID_MMX_REG_MODE (MODE))))




#define VALID_MMX_REG_MODE_3DNOW(MODE) ((MODE) == V2SFmode || (MODE) == SFmode)


#define VALID_MMX_REG_MODE(MODE) ((MODE) == DImode || (MODE) == V8QImode || (MODE) == V4HImode || (MODE) == V2SImode || (MODE) == SImode)



#define VECTOR_MODE_SUPPORTED_P(MODE) (VALID_SSE_REG_MODE (MODE) && TARGET_SSE ? 1 : VALID_MMX_REG_MODE (MODE) && TARGET_MMX ? 1 : VALID_MMX_REG_MODE_3DNOW (MODE) && TARGET_3DNOW ? 1 : 0)




#define VALID_FP_MODE_P(MODE) ((MODE) == SFmode || (MODE) == DFmode || (MODE) == TFmode || (!TARGET_64BIT && (MODE) == XFmode) || (MODE) == SCmode || (MODE) == DCmode || (MODE) == TCmode || (!TARGET_64BIT && (MODE) == XCmode))





#define VALID_INT_MODE_P(MODE) ((MODE) == QImode || (MODE) == HImode || (MODE) == SImode || (MODE) == DImode || (MODE) == CQImode || (MODE) == CHImode || (MODE) == CSImode || (MODE) == CDImode || (TARGET_64BIT && ((MODE) == TImode || (MODE) == CTImode)))
# 1045 "i386.h"
#define HARD_REGNO_MODE_OK(REGNO,MODE) ix86_hard_regno_mode_ok ((REGNO), (MODE))







#define MODES_TIEABLE_P(MODE1,MODE2) ((MODE1) == (MODE2) || (((MODE1) == HImode || (MODE1) == SImode || ((MODE1) == QImode && (TARGET_64BIT || !TARGET_PARTIAL_REG_STALL)) || ((MODE1) == DImode && TARGET_64BIT)) && ((MODE2) == HImode || (MODE2) == SImode || ((MODE1) == QImode && (TARGET_64BIT || !TARGET_PARTIAL_REG_STALL)) || ((MODE2) == DImode && TARGET_64BIT))))
# 1070 "i386.h"
#define HARD_REGNO_CALLER_SAVE_MODE(REGNO,NREGS,MODE) (CC_REGNO_P (REGNO) ? VOIDmode : (MODE) == VOIDmode && (NREGS) != 1 ? VOIDmode : (MODE) == VOIDmode ? choose_hard_reg_mode ((REGNO), (NREGS)) : (MODE) == HImode && !TARGET_PARTIAL_REG_STALL ? SImode : (MODE) == QImode && (REGNO) >= 4 && !TARGET_64BIT ? SImode : (MODE))
# 1085 "i386.h"
#define STACK_POINTER_REGNUM 7


#define HARD_FRAME_POINTER_REGNUM 6


#define FRAME_POINTER_REGNUM 20


#define FIRST_FLOAT_REG 8


#define FIRST_STACK_REG FIRST_FLOAT_REG
#define LAST_STACK_REG (FIRST_FLOAT_REG + 7)

#define FLAGS_REG 17
#define FPSR_REG 18
#define DIRFLAG_REG 19

#define FIRST_SSE_REG (FRAME_POINTER_REGNUM + 1)
#define LAST_SSE_REG (FIRST_SSE_REG + 7)

#define FIRST_MMX_REG (LAST_SSE_REG + 1)
#define LAST_MMX_REG (FIRST_MMX_REG + 7)

#define FIRST_REX_INT_REG (LAST_MMX_REG + 1)
#define LAST_REX_INT_REG (FIRST_REX_INT_REG + 7)

#define FIRST_REX_SSE_REG (LAST_REX_INT_REG + 1)
#define LAST_REX_SSE_REG (FIRST_REX_SSE_REG + 7)





#define FRAME_POINTER_REQUIRED ix86_frame_pointer_required ()




#define SUBTARGET_FRAME_POINTER_REQUIRED 0



#define SETUP_FRAME_ADDRESSES() ix86_setup_frame_addresses ()


#define ARG_POINTER_REGNUM 16




#define STATIC_CHAIN_REGNUM (TARGET_64BIT ? FIRST_REX_INT_REG + 10 - 8 : 2)





#define PIC_OFFSET_TABLE_REGNUM (TARGET_64BIT || !flag_pic ? INVALID_REGNUM : 3)





#define STRUCT_VALUE_INCOMING 0



#define STRUCT_VALUE 0
# 1172 "i386.h"
#define RETURN_IN_MEMORY(TYPE) ix86_return_in_memory (TYPE)
# 1202 "i386.h"
enum reg_class
{
  NO_REGS,
  AREG, DREG, CREG, BREG, SIREG, DIREG,
  AD_REGS,
  Q_REGS,
  NON_Q_REGS,
  INDEX_REGS,
  LEGACY_REGS,
  GENERAL_REGS,
  FP_TOP_REG, FP_SECOND_REG,
  FLOAT_REGS,
  SSE_REGS,
  MMX_REGS,
  FP_TOP_SSE_REGS,
  FP_SECOND_SSE_REGS,
  FLOAT_SSE_REGS,
  FLOAT_INT_REGS,
  INT_SSE_REGS,
  FLOAT_INT_SSE_REGS,
  ALL_REGS, LIM_REG_CLASSES
};

#define N_REG_CLASSES ((int) LIM_REG_CLASSES)

#define INTEGER_CLASS_P(CLASS) reg_class_subset_p ((CLASS), GENERAL_REGS)

#define FLOAT_CLASS_P(CLASS) reg_class_subset_p ((CLASS), FLOAT_REGS)

#define SSE_CLASS_P(CLASS) reg_class_subset_p ((CLASS), SSE_REGS)

#define MMX_CLASS_P(CLASS) reg_class_subset_p ((CLASS), MMX_REGS)

#define MAYBE_INTEGER_CLASS_P(CLASS) reg_classes_intersect_p ((CLASS), GENERAL_REGS)

#define MAYBE_FLOAT_CLASS_P(CLASS) reg_classes_intersect_p ((CLASS), FLOAT_REGS)

#define MAYBE_SSE_CLASS_P(CLASS) reg_classes_intersect_p (SSE_REGS, (CLASS))

#define MAYBE_MMX_CLASS_P(CLASS) reg_classes_intersect_p (MMX_REGS, (CLASS))


#define Q_CLASS_P(CLASS) reg_class_subset_p ((CLASS), Q_REGS)




#define REG_CLASS_NAMES { "NO_REGS", "AREG", "DREG", "CREG", "BREG", "SIREG", "DIREG", "AD_REGS", "Q_REGS", "NON_Q_REGS", "INDEX_REGS", "LEGACY_REGS", "GENERAL_REGS", "FP_TOP_REG", "FP_SECOND_REG", "FLOAT_REGS", "SSE_REGS", "MMX_REGS", "FP_TOP_SSE_REGS", "FP_SECOND_SSE_REGS", "FLOAT_SSE_REGS", "FLOAT_INT_REGS", "INT_SSE_REGS", "FLOAT_INT_SSE_REGS", "ALL_REGS" }
# 1274 "i386.h"
#define REG_CLASS_CONTENTS { { 0x00, 0x0 }, { 0x01, 0x0 }, { 0x02, 0x0 }, { 0x04, 0x0 }, { 0x08, 0x0 }, { 0x10, 0x0 }, { 0x20, 0x0 }, { 0x03, 0x0 }, { 0x0f, 0x0 }, { 0x1100f0, 0x1fe0 }, { 0x7f, 0x1fe0 }, { 0x1100ff, 0x0 }, { 0x1100ff, 0x1fe0 }, { 0x100, 0x0 }, { 0x0200, 0x0 }, { 0xff00, 0x0 }, { 0x1fe00000,0x1fe000 }, { 0xe0000000, 0x1f }, { 0x1fe00100,0x1fe000 }, { 0x1fe00200,0x1fe000 }, { 0x1fe0ff00,0x1fe000 }, { 0x1ffff, 0x1fe0 }, { 0x1fe100ff,0x1fffe0 }, { 0x1fe1ffff,0x1fffe0 }, { 0xffffffff,0x1fffff } }
# 1303 "i386.h"
#define REGNO_REG_CLASS(REGNO) (regclass_map[REGNO])





#define SMALL_REGISTER_CLASSES 1

#define QI_REG_P(X) (REG_P (X) && REGNO (X) < 4)


#define GENERAL_REGNO_P(N) ((N) < 8 || REX_INT_REGNO_P (N))


#define GENERAL_REG_P(X) (REG_P (X) && GENERAL_REGNO_P (REGNO (X)))


#define ANY_QI_REG_P(X) (TARGET_64BIT ? GENERAL_REG_P(X) : QI_REG_P (X))

#define NON_QI_REG_P(X) (REG_P (X) && REGNO (X) >= 4 && REGNO (X) < FIRST_PSEUDO_REGISTER)


#define REX_INT_REGNO_P(N) ((N) >= FIRST_REX_INT_REG && (N) <= LAST_REX_INT_REG)
#define REX_INT_REG_P(X) (REG_P (X) && REX_INT_REGNO_P (REGNO (X)))

#define FP_REG_P(X) (REG_P (X) && FP_REGNO_P (REGNO (X)))
#define FP_REGNO_P(N) ((N) >= FIRST_STACK_REG && (N) <= LAST_STACK_REG)
#define ANY_FP_REG_P(X) (REG_P (X) && ANY_FP_REGNO_P (REGNO (X)))
#define ANY_FP_REGNO_P(N) (FP_REGNO_P (N) || SSE_REGNO_P (N))

#define SSE_REGNO_P(N) (((N) >= FIRST_SSE_REG && (N) <= LAST_SSE_REG) || ((N) >= FIRST_REX_SSE_REG && (N) <= LAST_REX_SSE_REG))



#define SSE_REGNO(N) ((N) < 8 ? FIRST_SSE_REG + (N) : FIRST_REX_SSE_REG + (N) - 8)

#define SSE_REG_P(N) (REG_P (N) && SSE_REGNO_P (REGNO (N)))

#define SSE_FLOAT_MODE_P(MODE) ((TARGET_SSE && (MODE) == SFmode) || (TARGET_SSE2 && (MODE) == DFmode))


#define MMX_REGNO_P(N) ((N) >= FIRST_MMX_REG && (N) <= LAST_MMX_REG)
#define MMX_REG_P(XOP) (REG_P (XOP) && MMX_REGNO_P (REGNO (XOP)))

#define STACK_REG_P(XOP) (REG_P (XOP) && REGNO (XOP) >= FIRST_STACK_REG && REGNO (XOP) <= LAST_STACK_REG)




#define NON_STACK_REG_P(XOP) (REG_P (XOP) && ! STACK_REG_P (XOP))

#define STACK_TOP_P(XOP) (REG_P (XOP) && REGNO (XOP) == FIRST_STACK_REG)

#define CC_REG_P(X) (REG_P (X) && CC_REGNO_P (REGNO (X)))
#define CC_REGNO_P(X) ((X) == FLAGS_REG || (X) == FPSR_REG)



#define CONVERT_HARD_REGISTER_TO_SSA_P(REG_NO) ((REG_NO) == FLAGS_REG || (REG_NO) == ARG_POINTER_REGNUM)




#define INDEX_REG_CLASS INDEX_REGS
#define BASE_REG_CLASS GENERAL_REGS



#define REG_CLASS_FROM_LETTER(C) ((C) == 'r' ? GENERAL_REGS : (C) == 'R' ? LEGACY_REGS : (C) == 'q' ? TARGET_64BIT ? GENERAL_REGS : Q_REGS : (C) == 'Q' ? Q_REGS : (C) == 'f' ? (TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387 ? FLOAT_REGS : NO_REGS) : (C) == 't' ? (TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387 ? FP_TOP_REG : NO_REGS) : (C) == 'u' ? (TARGET_80387 || TARGET_FLOAT_RETURNS_IN_80387 ? FP_SECOND_REG : NO_REGS) : (C) == 'a' ? AREG : (C) == 'b' ? BREG : (C) == 'c' ? CREG : (C) == 'd' ? DREG : (C) == 'x' ? TARGET_SSE ? SSE_REGS : NO_REGS : (C) == 'Y' ? TARGET_SSE2? SSE_REGS : NO_REGS : (C) == 'y' ? TARGET_MMX ? MMX_REGS : NO_REGS : (C) == 'A' ? AD_REGS : (C) == 'D' ? DIREG : (C) == 'S' ? SIREG : NO_REGS)
# 1410 "i386.h"
#define CONST_OK_FOR_LETTER_P(VALUE,C) ((C) == 'I' ? (VALUE) >= 0 && (VALUE) <= 31 : (C) == 'J' ? (VALUE) >= 0 && (VALUE) <= 63 : (C) == 'K' ? (VALUE) >= -128 && (VALUE) <= 127 : (C) == 'L' ? (VALUE) == 0xff || (VALUE) == 0xffff : (C) == 'M' ? (VALUE) >= 0 && (VALUE) <= 3 : (C) == 'N' ? (VALUE) >= 0 && (VALUE) <= 255 : 0)
# 1424 "i386.h"
#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE,C) ((C) == 'G' ? standard_80387_constant_p (VALUE) : ((C) == 'H' ? standard_sse_constant_p (VALUE) : 0))
# 1440 "i386.h"
#define EXTRA_CONSTRAINT(VALUE,C) ((C) == 'e' ? x86_64_sign_extended_value (VALUE) : (C) == 'Z' ? x86_64_zero_extended_value (VALUE) : 0)
# 1449 "i386.h"
#define LIMIT_RELOAD_CLASS(MODE,CLASS) ((MODE) == QImode && !TARGET_64BIT && ((CLASS) == ALL_REGS || (CLASS) == GENERAL_REGS || (CLASS) == LEGACY_REGS || (CLASS) == INDEX_REGS) ? Q_REGS : (CLASS))
# 1468 "i386.h"
#define PREFERRED_RELOAD_CLASS(X,CLASS) ix86_preferred_reload_class ((X), (CLASS))




#define SECONDARY_MEMORY_NEEDED(CLASS1,CLASS2,MODE) ix86_secondary_memory_needed ((CLASS1), (CLASS2), (MODE), 1)






#define SECONDARY_OUTPUT_RELOAD_CLASS(CLASS,MODE,OUT) (((CLASS) == GENERAL_REGS || (CLASS) == LEGACY_REGS || (CLASS) == INDEX_REGS) && !TARGET_64BIT && (MODE) == QImode ? Q_REGS : NO_REGS)
# 1492 "i386.h"
#define CLASS_MAX_NREGS(CLASS,MODE) (!MAYBE_INTEGER_CLASS_P (CLASS) ? (COMPLEX_MODE_P (MODE) ? 2 : 1) : ((GET_MODE_SIZE ((MODE) == TFmode ? XFmode : (MODE)) + UNITS_PER_WORD - 1) / UNITS_PER_WORD))
# 1514 "i386.h"
#define CLASS_LIKELY_SPILLED_P(CLASS) (((CLASS) == AREG) || ((CLASS) == DREG) || ((CLASS) == CREG) || ((CLASS) == BREG) || ((CLASS) == AD_REGS) || ((CLASS) == SIREG) || ((CLASS) == DIREG))
# 1529 "i386.h"
#define MD_ASM_CLOBBERS(CLOBBERS) do { (CLOBBERS) = tree_cons (NULL_TREE, build_string (5, "flags"), (CLOBBERS)); (CLOBBERS) = tree_cons (NULL_TREE, build_string (4, "fpsr"), (CLOBBERS)); (CLOBBERS) = tree_cons (NULL_TREE, build_string (7, "dirflag"), (CLOBBERS)); } while (0)
# 1543 "i386.h"
#define STACK_GROWS_DOWNWARD 





#define FRAME_GROWS_DOWNWARD 





#define STARTING_FRAME_OFFSET 0
# 1566 "i386.h"
#define PUSH_ROUNDING(BYTES) (TARGET_64BIT ? (((BYTES) + 7) & (-8)) : (((BYTES) + 1) & (-2)))
# 1577 "i386.h"
#define ACCUMULATE_OUTGOING_ARGS TARGET_ACCUMULATE_OUTGOING_ARGS




#define PUSH_ARGS (TARGET_PUSH_ARGS && !ACCUMULATE_OUTGOING_ARGS)


#define FIRST_PARM_OFFSET(FNDECL) 0
# 1596 "i386.h"
#define REG_PARM_STACK_SPACE(FNDECL) 0






#define MUST_PASS_IN_STACK(MODE,TYPE) ((TYPE) != 0 && (TREE_CODE (TYPE_SIZE (TYPE)) != INTEGER_CST || TREE_ADDRESSABLE (TYPE) || ((MODE) == TImode) || ((MODE) == BLKmode && ! ((TYPE) != 0 && TREE_CODE (TYPE_SIZE (TYPE)) == INTEGER_CST && 0 == (int_size_in_bytes (TYPE) % (PARM_BOUNDARY / BITS_PER_UNIT))) && (FUNCTION_ARG_PADDING (MODE, TYPE) == (BYTES_BIG_ENDIAN ? upward : downward)))))
# 1633 "i386.h"
#define RETURN_POPS_ARGS(FUNDECL,FUNTYPE,SIZE) ix86_return_pops_args ((FUNDECL), (FUNTYPE), (SIZE))






#define FUNCTION_VALUE(VALTYPE,FUNC) ix86_function_value (VALTYPE)


#define FUNCTION_VALUE_REGNO_P(N) ix86_function_value_regno_p (N)





#define LIBCALL_VALUE(MODE) ix86_libcall_value (MODE)






#define APPLY_RESULT_SIZE (8+108)


#define FUNCTION_ARG_REGNO_P(N) ix86_function_arg_regno_p (N)







typedef struct ix86_args {
  int words;
  int nregs;
  int regno;
  int sse_words;
  int sse_nregs;
  int sse_regno;
  int maybe_vaarg;
} CUMULATIVE_ARGS;





#define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) init_cumulative_args (&(CUM), (FNTYPE), (LIBNAME))






#define FUNCTION_ARG_ADVANCE(CUM,MODE,TYPE,NAMED) function_arg_advance (&(CUM), (MODE), (TYPE), (NAMED))
# 1704 "i386.h"
#define FUNCTION_ARG(CUM,MODE,TYPE,NAMED) function_arg (&(CUM), (MODE), (TYPE), (NAMED))






#define FUNCTION_ARG_PARTIAL_NREGS(CUM,MODE,TYPE,NAMED) 0






#define FUNCTION_OK_FOR_SIBCALL(DECL) ((DECL) && (! flag_pic || ! TREE_PUBLIC (DECL)) && (! TARGET_FLOAT_RETURNS_IN_80387 || ! FLOAT_MODE_P (TYPE_MODE (TREE_TYPE (TREE_TYPE (DECL)))) || FLOAT_MODE_P (TYPE_MODE (TREE_TYPE (TREE_TYPE (cfun->decl))))))
# 1739 "i386.h"
#define SETUP_INCOMING_VARARGS(CUM,MODE,TYPE,PRETEND_SIZE,NO_RTL) ix86_setup_incoming_varargs (&(CUM), (MODE), (TYPE), &(PRETEND_SIZE), (NO_RTL))




#define BUILD_VA_LIST_TYPE(VALIST) ((VALIST) = ix86_build_va_list ())



#define EXPAND_BUILTIN_VA_START(STDARG,VALIST,NEXTARG) ix86_va_start ((STDARG), (VALIST), (NEXTARG))



#define EXPAND_BUILTIN_VA_ARG(VALIST,TYPE) ix86_va_arg ((VALIST), (TYPE))





#undef ASM_FILE_END
#define ASM_FILE_END(FILE) ix86_asm_file_end (FILE)




#define FUNCTION_PROFILER(FILE,LABELNO) do { if (flag_pic) { fprintf ((FILE), "\tleal\t%sP%d@GOTOFF(%%ebx),%%edx\n", LPREFIX, (LABELNO)); fprintf ((FILE), "\tcall\t*_mcount@GOT(%%ebx)\n"); } else { fprintf ((FILE), "\tmovl\t$%sP%d,%%edx\n", LPREFIX, (LABELNO)); fprintf ((FILE), "\tcall\t_mcount\n"); } } while (0)
# 1787 "i386.h"
#define EXIT_IGNORE_STACK 1
# 1801 "i386.h"
#define TRAMPOLINE_SIZE (TARGET_64BIT ? 23 : 10)





#define INITIALIZE_TRAMPOLINE(TRAMP,FNADDR,CXT) x86_initialize_trampoline ((TRAMP), (FNADDR), (CXT))
# 1823 "i386.h"
#define ELIMINABLE_REGS {{ ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, { ARG_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}, { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}, { FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}}
# 1834 "i386.h"
#define CAN_ELIMINATE(FROM,TO) ((TO) == STACK_POINTER_REGNUM ? ! frame_pointer_needed : 1)





#define INITIAL_ELIMINATION_OFFSET(FROM,TO,OFFSET) ((OFFSET) = ix86_initial_elimination_offset ((FROM), (TO)))
# 1859 "i386.h"
#define REGNO_OK_FOR_INDEX_P(REGNO) ((REGNO) < STACK_POINTER_REGNUM || (REGNO >= FIRST_REX_INT_REG && (REGNO) <= LAST_REX_INT_REG) || ((unsigned) reg_renumber[(REGNO)] >= FIRST_REX_INT_REG && (unsigned) reg_renumber[(REGNO)] <= LAST_REX_INT_REG) || (unsigned) reg_renumber[(REGNO)] < STACK_POINTER_REGNUM)







#define REGNO_OK_FOR_BASE_P(REGNO) ((REGNO) <= STACK_POINTER_REGNUM || (REGNO) == ARG_POINTER_REGNUM || (REGNO) == FRAME_POINTER_REGNUM || (REGNO >= FIRST_REX_INT_REG && (REGNO) <= LAST_REX_INT_REG) || ((unsigned) reg_renumber[(REGNO)] >= FIRST_REX_INT_REG && (unsigned) reg_renumber[(REGNO)] <= LAST_REX_INT_REG) || (unsigned) reg_renumber[(REGNO)] <= STACK_POINTER_REGNUM)
# 1877 "i386.h"
#define REGNO_OK_FOR_SIREG_P(REGNO) ((REGNO) == 4 || reg_renumber[(REGNO)] == 4)

#define REGNO_OK_FOR_DIREG_P(REGNO) ((REGNO) == 5 || reg_renumber[(REGNO)] == 5)
# 1897 "i386.h"
#define REG_OK_FOR_INDEX_NONSTRICT_P(X) (REGNO (X) < STACK_POINTER_REGNUM || (REGNO (X) >= FIRST_REX_INT_REG && REGNO (X) <= LAST_REX_INT_REG) || REGNO (X) >= FIRST_PSEUDO_REGISTER)





#define REG_OK_FOR_BASE_NONSTRICT_P(X) (REGNO (X) <= STACK_POINTER_REGNUM || REGNO (X) == ARG_POINTER_REGNUM || REGNO (X) == FRAME_POINTER_REGNUM || (REGNO (X) >= FIRST_REX_INT_REG && REGNO (X) <= LAST_REX_INT_REG) || REGNO (X) >= FIRST_PSEUDO_REGISTER)
# 1912 "i386.h"
#define REG_OK_FOR_INDEX_STRICT_P(X) REGNO_OK_FOR_INDEX_P (REGNO (X))
#define REG_OK_FOR_BASE_STRICT_P(X) REGNO_OK_FOR_BASE_P (REGNO (X))






#define REG_OK_FOR_INDEX_P(X) REG_OK_FOR_INDEX_STRICT_P (X)
#define REG_OK_FOR_BASE_P(X) REG_OK_FOR_BASE_STRICT_P (X)
# 1935 "i386.h"
#define MAX_REGS_PER_ADDRESS 2

#define CONSTANT_ADDRESS_P(X) (GET_CODE (X) == LABEL_REF || GET_CODE (X) == SYMBOL_REF || GET_CODE (X) == CONST_INT || GET_CODE (X) == CONST || GET_CODE (X) == CONST_DOUBLE)







#define LEGITIMATE_CONSTANT_P(X) 1


#define GO_IF_LEGITIMATE_ADDRESS(MODE,X,ADDR) do { if (legitimate_address_p ((MODE), (X), 1)) goto ADDR; } while (0)
# 1972 "i386.h"
#define FIND_BASE_TERM(X) ix86_find_base_term (X)
# 1995 "i386.h"
#define LEGITIMIZE_ADDRESS(X,OLDX,MODE,WIN) do { (X) = legitimize_address ((X), (OLDX), (MODE)); if (memory_address_p ((MODE), (X))) goto WIN; } while (0)






#define REWRITE_ADDRESS(X) rewrite_address (X)





#define LEGITIMATE_PIC_OPERAND_P(X) (! SYMBOLIC_CONST (X) || legitimate_pic_address_disp_p (X))



#define SYMBOLIC_CONST(X) (GET_CODE (X) == SYMBOL_REF || GET_CODE (X) == LABEL_REF || (GET_CODE (X) == CONST && symbolic_reference_mentioned_p (X)))
# 2021 "i386.h"
#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR,LABEL) do { if (GET_CODE (ADDR) == POST_INC || GET_CODE (ADDR) == POST_DEC) goto LABEL; } while (0)







enum ix86_builtins
{
  IX86_BUILTIN_ADDPS,
  IX86_BUILTIN_ADDSS,
  IX86_BUILTIN_DIVPS,
  IX86_BUILTIN_DIVSS,
  IX86_BUILTIN_MULPS,
  IX86_BUILTIN_MULSS,
  IX86_BUILTIN_SUBPS,
  IX86_BUILTIN_SUBSS,

  IX86_BUILTIN_CMPEQPS,
  IX86_BUILTIN_CMPLTPS,
  IX86_BUILTIN_CMPLEPS,
  IX86_BUILTIN_CMPGTPS,
  IX86_BUILTIN_CMPGEPS,
  IX86_BUILTIN_CMPNEQPS,
  IX86_BUILTIN_CMPNLTPS,
  IX86_BUILTIN_CMPNLEPS,
  IX86_BUILTIN_CMPNGTPS,
  IX86_BUILTIN_CMPNGEPS,
  IX86_BUILTIN_CMPORDPS,
  IX86_BUILTIN_CMPUNORDPS,
  IX86_BUILTIN_CMPNEPS,
  IX86_BUILTIN_CMPEQSS,
  IX86_BUILTIN_CMPLTSS,
  IX86_BUILTIN_CMPLESS,
  IX86_BUILTIN_CMPGTSS,
  IX86_BUILTIN_CMPGESS,
  IX86_BUILTIN_CMPNEQSS,
  IX86_BUILTIN_CMPNLTSS,
  IX86_BUILTIN_CMPNLESS,
  IX86_BUILTIN_CMPNGTSS,
  IX86_BUILTIN_CMPNGESS,
  IX86_BUILTIN_CMPORDSS,
  IX86_BUILTIN_CMPUNORDSS,
  IX86_BUILTIN_CMPNESS,

  IX86_BUILTIN_COMIEQSS,
  IX86_BUILTIN_COMILTSS,
  IX86_BUILTIN_COMILESS,
  IX86_BUILTIN_COMIGTSS,
  IX86_BUILTIN_COMIGESS,
  IX86_BUILTIN_COMINEQSS,
  IX86_BUILTIN_UCOMIEQSS,
  IX86_BUILTIN_UCOMILTSS,
  IX86_BUILTIN_UCOMILESS,
  IX86_BUILTIN_UCOMIGTSS,
  IX86_BUILTIN_UCOMIGESS,
  IX86_BUILTIN_UCOMINEQSS,

  IX86_BUILTIN_CVTPI2PS,
  IX86_BUILTIN_CVTPS2PI,
  IX86_BUILTIN_CVTSI2SS,
  IX86_BUILTIN_CVTSS2SI,
  IX86_BUILTIN_CVTTPS2PI,
  IX86_BUILTIN_CVTTSS2SI,

  IX86_BUILTIN_MAXPS,
  IX86_BUILTIN_MAXSS,
  IX86_BUILTIN_MINPS,
  IX86_BUILTIN_MINSS,

  IX86_BUILTIN_LOADAPS,
  IX86_BUILTIN_LOADUPS,
  IX86_BUILTIN_STOREAPS,
  IX86_BUILTIN_STOREUPS,
  IX86_BUILTIN_LOADSS,
  IX86_BUILTIN_STORESS,
  IX86_BUILTIN_MOVSS,

  IX86_BUILTIN_MOVHLPS,
  IX86_BUILTIN_MOVLHPS,
  IX86_BUILTIN_LOADHPS,
  IX86_BUILTIN_LOADLPS,
  IX86_BUILTIN_STOREHPS,
  IX86_BUILTIN_STORELPS,

  IX86_BUILTIN_MASKMOVQ,
  IX86_BUILTIN_MOVMSKPS,
  IX86_BUILTIN_PMOVMSKB,

  IX86_BUILTIN_MOVNTPS,
  IX86_BUILTIN_MOVNTQ,

  IX86_BUILTIN_PACKSSWB,
  IX86_BUILTIN_PACKSSDW,
  IX86_BUILTIN_PACKUSWB,

  IX86_BUILTIN_PADDB,
  IX86_BUILTIN_PADDW,
  IX86_BUILTIN_PADDD,
  IX86_BUILTIN_PADDSB,
  IX86_BUILTIN_PADDSW,
  IX86_BUILTIN_PADDUSB,
  IX86_BUILTIN_PADDUSW,
  IX86_BUILTIN_PSUBB,
  IX86_BUILTIN_PSUBW,
  IX86_BUILTIN_PSUBD,
  IX86_BUILTIN_PSUBSB,
  IX86_BUILTIN_PSUBSW,
  IX86_BUILTIN_PSUBUSB,
  IX86_BUILTIN_PSUBUSW,

  IX86_BUILTIN_PAND,
  IX86_BUILTIN_PANDN,
  IX86_BUILTIN_POR,
  IX86_BUILTIN_PXOR,

  IX86_BUILTIN_PAVGB,
  IX86_BUILTIN_PAVGW,

  IX86_BUILTIN_PCMPEQB,
  IX86_BUILTIN_PCMPEQW,
  IX86_BUILTIN_PCMPEQD,
  IX86_BUILTIN_PCMPGTB,
  IX86_BUILTIN_PCMPGTW,
  IX86_BUILTIN_PCMPGTD,

  IX86_BUILTIN_PEXTRW,
  IX86_BUILTIN_PINSRW,

  IX86_BUILTIN_PMADDWD,

  IX86_BUILTIN_PMAXSW,
  IX86_BUILTIN_PMAXUB,
  IX86_BUILTIN_PMINSW,
  IX86_BUILTIN_PMINUB,

  IX86_BUILTIN_PMULHUW,
  IX86_BUILTIN_PMULHW,
  IX86_BUILTIN_PMULLW,

  IX86_BUILTIN_PSADBW,
  IX86_BUILTIN_PSHUFW,

  IX86_BUILTIN_PSLLW,
  IX86_BUILTIN_PSLLD,
  IX86_BUILTIN_PSLLQ,
  IX86_BUILTIN_PSRAW,
  IX86_BUILTIN_PSRAD,
  IX86_BUILTIN_PSRLW,
  IX86_BUILTIN_PSRLD,
  IX86_BUILTIN_PSRLQ,
  IX86_BUILTIN_PSLLWI,
  IX86_BUILTIN_PSLLDI,
  IX86_BUILTIN_PSLLQI,
  IX86_BUILTIN_PSRAWI,
  IX86_BUILTIN_PSRADI,
  IX86_BUILTIN_PSRLWI,
  IX86_BUILTIN_PSRLDI,
  IX86_BUILTIN_PSRLQI,

  IX86_BUILTIN_PUNPCKHBW,
  IX86_BUILTIN_PUNPCKHWD,
  IX86_BUILTIN_PUNPCKHDQ,
  IX86_BUILTIN_PUNPCKLBW,
  IX86_BUILTIN_PUNPCKLWD,
  IX86_BUILTIN_PUNPCKLDQ,

  IX86_BUILTIN_SHUFPS,

  IX86_BUILTIN_RCPPS,
  IX86_BUILTIN_RCPSS,
  IX86_BUILTIN_RSQRTPS,
  IX86_BUILTIN_RSQRTSS,
  IX86_BUILTIN_SQRTPS,
  IX86_BUILTIN_SQRTSS,

  IX86_BUILTIN_UNPCKHPS,
  IX86_BUILTIN_UNPCKLPS,

  IX86_BUILTIN_ANDPS,
  IX86_BUILTIN_ANDNPS,
  IX86_BUILTIN_ORPS,
  IX86_BUILTIN_XORPS,

  IX86_BUILTIN_EMMS,
  IX86_BUILTIN_LDMXCSR,
  IX86_BUILTIN_STMXCSR,
  IX86_BUILTIN_SFENCE,


  IX86_BUILTIN_FEMMS,
  IX86_BUILTIN_PAVGUSB,
  IX86_BUILTIN_PF2ID,
  IX86_BUILTIN_PFACC,
  IX86_BUILTIN_PFADD,
  IX86_BUILTIN_PFCMPEQ,
  IX86_BUILTIN_PFCMPGE,
  IX86_BUILTIN_PFCMPGT,
  IX86_BUILTIN_PFMAX,
  IX86_BUILTIN_PFMIN,
  IX86_BUILTIN_PFMUL,
  IX86_BUILTIN_PFRCP,
  IX86_BUILTIN_PFRCPIT1,
  IX86_BUILTIN_PFRCPIT2,
  IX86_BUILTIN_PFRSQIT1,
  IX86_BUILTIN_PFRSQRT,
  IX86_BUILTIN_PFSUB,
  IX86_BUILTIN_PFSUBR,
  IX86_BUILTIN_PI2FD,
  IX86_BUILTIN_PMULHRW,


  IX86_BUILTIN_PF2IW,
  IX86_BUILTIN_PFNACC,
  IX86_BUILTIN_PFPNACC,
  IX86_BUILTIN_PI2FW,
  IX86_BUILTIN_PSWAPDSI,
  IX86_BUILTIN_PSWAPDSF,

  IX86_BUILTIN_SSE_ZERO,
  IX86_BUILTIN_MMX_ZERO,

  IX86_BUILTIN_MAX
};
# 2254 "i386.h"
#define ENCODE_SECTION_INFO(DECL) do { if (flag_pic) { rtx rtl = (TREE_CODE_CLASS (TREE_CODE (DECL)) != 'd' ? TREE_CST_RTL (DECL) : DECL_RTL (DECL)); if (GET_CODE (rtl) == MEM) { if (TARGET_DEBUG_ADDR && TREE_CODE_CLASS (TREE_CODE (DECL)) == 'd') { fprintf (stderr, "Encode %s, public = %d\n", IDENTIFIER_POINTER (DECL_NAME (DECL)), TREE_PUBLIC (DECL)); } SYMBOL_REF_FLAG (XEXP (rtl, 0)) = (TREE_CODE_CLASS (TREE_CODE (DECL)) != 'd' || ! TREE_PUBLIC (DECL)); } } } while (0)
# 2285 "i386.h"
#define FINALIZE_PIC (current_function_uses_pic_offset_table |= current_function_profile)
# 2294 "i386.h"
#define REGPARM_MAX (TARGET_64BIT ? 6 : 3)

#define SSE_REGPARM_MAX (TARGET_64BIT ? 8 : 0)




#define CASE_VECTOR_MODE (!TARGET_64BIT || flag_pic ? SImode : DImode)
# 2310 "i386.h"
#define DEFAULT_SIGNED_CHAR 1


#define PREFETCH_BLOCK ix86_cost->prefetch_block


#define SIMULTANEOUS_PREFETCHES ix86_cost->simultaneous_prefetches



#define MOVE_MAX 16




#define MOVE_MAX_PIECES (TARGET_64BIT ? 8 : 4)
# 2334 "i386.h"
#define MOVE_RATIO (optimize_size ? 3 : ix86_cost->move_ratio)
# 2345 "i386.h"
#define TRULY_NOOP_TRUNCATION(OUTPREC,INPREC) 1




#define STORE_FLAG_VALUE 1




#define PROMOTE_PROTOTYPES (!TARGET_64BIT)
# 2365 "i386.h"
#define PROMOTE_MODE(MODE,UNSIGNEDP,TYPE) do { if (((MODE) == HImode && TARGET_PROMOTE_HI_REGS) || ((MODE) == QImode && TARGET_PROMOTE_QI_REGS)) (MODE) = SImode; } while (0)
# 2375 "i386.h"
#define Pmode (TARGET_64BIT ? DImode : SImode)




#define FUNCTION_MODE QImode
# 2395 "i386.h"
#define CONST_COSTS(RTX,CODE,OUTER_CODE) case CONST_INT: case CONST: case LABEL_REF: case SYMBOL_REF: if (TARGET_64BIT && !x86_64_sign_extended_value (RTX)) return 3; if (TARGET_64BIT && !x86_64_zero_extended_value (RTX)) return 2; return flag_pic && SYMBOLIC_CONST (RTX) ? 1 : 0; case CONST_DOUBLE: { int code; if (GET_MODE (RTX) == VOIDmode) return 0; code = standard_80387_constant_p (RTX); return code == 1 ? 1 : code == 2 ? 2 : 3; }
# 2419 "i386.h"
#define TOPLEVEL_COSTS_N_INSNS(N) do { total = COSTS_N_INSNS (N); goto egress_rtx_costs; } while (0)
# 2432 "i386.h"
#define RTX_COSTS(X,CODE,OUTER_CODE) case ZERO_EXTEND: if (TARGET_64BIT && GET_MODE (X) == DImode && GET_MODE (XEXP (X, 0)) == SImode) { total = 1; goto egress_rtx_costs; } else TOPLEVEL_COSTS_N_INSNS (TARGET_ZERO_EXTEND_WITH_AND ? ix86_cost->add : ix86_cost->movzx); break; case SIGN_EXTEND: TOPLEVEL_COSTS_N_INSNS (ix86_cost->movsx); break; case ASHIFT: if (GET_CODE (XEXP (X, 1)) == CONST_INT && (GET_MODE (XEXP (X, 0)) != DImode || TARGET_64BIT)) { HOST_WIDE_INT value = INTVAL (XEXP (X, 1)); if (value == 1) TOPLEVEL_COSTS_N_INSNS (ix86_cost->add); if ((value == 2 || value == 3) && !TARGET_DECOMPOSE_LEA && ix86_cost->lea <= ix86_cost->shift_const) TOPLEVEL_COSTS_N_INSNS (ix86_cost->lea); } case ROTATE: case ASHIFTRT: case LSHIFTRT: case ROTATERT: if (!TARGET_64BIT && GET_MODE (XEXP (X, 0)) == DImode) { if (GET_CODE (XEXP (X, 1)) == CONST_INT) { if (INTVAL (XEXP (X, 1)) > 32) TOPLEVEL_COSTS_N_INSNS(ix86_cost->shift_const + 2); else TOPLEVEL_COSTS_N_INSNS(ix86_cost->shift_const * 2); } else { if (GET_CODE (XEXP (X, 1)) == AND) TOPLEVEL_COSTS_N_INSNS(ix86_cost->shift_var * 2); else TOPLEVEL_COSTS_N_INSNS(ix86_cost->shift_var * 6 + 2); } } else { if (GET_CODE (XEXP (X, 1)) == CONST_INT) TOPLEVEL_COSTS_N_INSNS (ix86_cost->shift_const); else TOPLEVEL_COSTS_N_INSNS (ix86_cost->shift_var); } break; case MULT: if (GET_CODE (XEXP (X, 1)) == CONST_INT) { unsigned HOST_WIDE_INT value = INTVAL (XEXP (X, 1)); int nbits = 0; while (value != 0) { nbits++; value >>= 1; } TOPLEVEL_COSTS_N_INSNS (ix86_cost->mult_init + nbits * ix86_cost->mult_bit); } else TOPLEVEL_COSTS_N_INSNS (ix86_cost->mult_init + 7 * ix86_cost->mult_bit); case DIV: case UDIV: case MOD: case UMOD: TOPLEVEL_COSTS_N_INSNS (ix86_cost->divide); case PLUS: if (!TARGET_DECOMPOSE_LEA && INTEGRAL_MODE_P (GET_MODE (X)) && GET_MODE_BITSIZE (GET_MODE (X)) <= GET_MODE_BITSIZE (Pmode)) { if (GET_CODE (XEXP (X, 0)) == PLUS && GET_CODE (XEXP (XEXP (X, 0), 0)) == MULT && GET_CODE (XEXP (XEXP (XEXP (X, 0), 0), 1)) == CONST_INT && CONSTANT_P (XEXP (X, 1))) { HOST_WIDE_INT val = INTVAL (XEXP (XEXP (XEXP (X, 0), 0), 1)); if (val == 2 || val == 4 || val == 8) { return (COSTS_N_INSNS (ix86_cost->lea) + rtx_cost (XEXP (XEXP (X, 0), 1), (OUTER_CODE)) + rtx_cost (XEXP (XEXP (XEXP (X, 0), 0), 0), (OUTER_CODE)) + rtx_cost (XEXP (X, 1), (OUTER_CODE))); } } else if (GET_CODE (XEXP (X, 0)) == MULT && GET_CODE (XEXP (XEXP (X, 0), 1)) == CONST_INT) { HOST_WIDE_INT val = INTVAL (XEXP (XEXP (X, 0), 1)); if (val == 2 || val == 4 || val == 8) { return (COSTS_N_INSNS (ix86_cost->lea) + rtx_cost (XEXP (XEXP (X, 0), 0), (OUTER_CODE)) + rtx_cost (XEXP (X, 1), (OUTER_CODE))); } } else if (GET_CODE (XEXP (X, 0)) == PLUS) { return (COSTS_N_INSNS (ix86_cost->lea) + rtx_cost (XEXP (XEXP (X, 0), 0), (OUTER_CODE)) + rtx_cost (XEXP (XEXP (X, 0), 1), (OUTER_CODE)) + rtx_cost (XEXP (X, 1), (OUTER_CODE))); } } case AND: case IOR: case XOR: case MINUS: if (!TARGET_64BIT && GET_MODE (X) == DImode) return (COSTS_N_INSNS (ix86_cost->add) * 2 + (rtx_cost (XEXP (X, 0), (OUTER_CODE)) << (GET_MODE (XEXP (X, 0)) != DImode)) + (rtx_cost (XEXP (X, 1), (OUTER_CODE)) << (GET_MODE (XEXP (X, 1)) != DImode))); case NEG: case NOT: if (!TARGET_64BIT && GET_MODE (X) == DImode) TOPLEVEL_COSTS_N_INSNS (ix86_cost->add * 2); TOPLEVEL_COSTS_N_INSNS (ix86_cost->add); egress_rtx_costs: break;
# 2628 "i386.h"
#define ADDRESS_COST(RTX) ix86_address_cost (RTX)
# 2640 "i386.h"
#define REGISTER_MOVE_COST(MODE,CLASS1,CLASS2) ix86_register_move_cost ((MODE), (CLASS1), (CLASS2))
# 2651 "i386.h"
#define MEMORY_MOVE_COST(MODE,CLASS,IN) ix86_memory_move_cost ((MODE), (CLASS), (IN))





#define BRANCH_COST ix86_branch_cost
# 2673 "i386.h"
#define SLOW_BYTE_ACCESS 0


#define SLOW_SHORT_ACCESS 0
# 2704 "i386.h"
#define NO_FUNCTION_CSE 





#define NO_RECURSIVE_FUNCTION_CSE 
# 2732 "i386.h"
#define EXTRA_CC_MODES CC (CCGCmode, "CCGC") CC (CCGOCmode, "CCGOC") CC (CCNOmode, "CCNO") CC (CCZmode, "CCZ") CC (CCFPmode, "CCFP") CC (CCFPUmode, "CCFPU")
# 2749 "i386.h"
#define SELECT_CC_MODE(OP,X,Y) ix86_cc_mode ((OP), (X), (Y))




#define REVERSIBLE_CC_MODE(MODE) 1



#define REVERSE_CONDITION(CODE,MODE) ((MODE) != CCFPmode && (MODE) != CCFPUmode ? reverse_condition (CODE) : reverse_condition_maybe_unordered (CODE))
# 2775 "i386.h"
#undef HI_REGISTER_NAMES
#define HI_REGISTER_NAMES {"ax","dx","cx","bx","si","di","bp","sp", "st","st(1)","st(2)","st(3)","st(4)","st(5)","st(6)","st(7)","", "flags","fpsr", "dirflag", "frame", "xmm0","xmm1","xmm2","xmm3","xmm4","xmm5","xmm6","xmm7", "mm0", "mm1", "mm2", "mm3", "mm4", "mm5", "mm6", "mm7" , "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", "xmm8", "xmm9", "xmm10", "xmm11", "xmm12", "xmm13", "xmm14", "xmm15"}
# 2785 "i386.h"
#define REGISTER_NAMES HI_REGISTER_NAMES



#define ADDITIONAL_REGISTER_NAMES { { "eax", 0 }, { "edx", 1 }, { "ecx", 2 }, { "ebx", 3 }, { "esi", 4 }, { "edi", 5 }, { "ebp", 6 }, { "esp", 7 }, { "rax", 0 }, { "rdx", 1 }, { "rcx", 2 }, { "rbx", 3 }, { "rsi", 4 }, { "rdi", 5 }, { "rbp", 6 }, { "rsp", 7 }, { "al", 0 }, { "dl", 1 }, { "cl", 2 }, { "bl", 3 }, { "ah", 0 }, { "dh", 1 }, { "ch", 2 }, { "bh", 3 }, { "mm0", 8}, { "mm1", 9}, { "mm2", 10}, { "mm3", 11}, { "mm4", 12}, { "mm5", 13}, { "mm6", 14}, { "mm7", 15} }
# 2804 "i386.h"
#define QI_REGISTER_NAMES {"al", "dl", "cl", "bl", "sil", "dil", "bpl", "spl",}





#define QI_HIGH_REGISTER_NAMES {"ah", "dh", "ch", "bh", }




#define DBX_REGISTER_NUMBER(N) (TARGET_64BIT ? dbx64_register_map[(N)] : dbx_register_map[(N)])


extern int const dbx_register_map[53];
extern int const dbx64_register_map[53];
extern int const svr4_dbx_register_map[53];


#define INCOMING_RETURN_ADDR_RTX gen_rtx_MEM (VOIDmode, gen_rtx_REG (VOIDmode, STACK_POINTER_REGNUM))



#define RETURN_ADDR_RTX(COUNT,FRAME) ((COUNT) == 0 ? gen_rtx_MEM (Pmode, plus_constant (arg_pointer_rtx, -UNITS_PER_WORD)) : gen_rtx_MEM (Pmode, plus_constant (FRAME, UNITS_PER_WORD)))





#define DWARF_FRAME_RETURN_COLUMN (TARGET_64BIT ? 16 : 8)


#define INCOMING_FRAME_SP_OFFSET UNITS_PER_WORD


#define EH_RETURN_DATA_REGNO(N) ((N) < 2 ? (N) : INVALID_REGNUM)
#define EH_RETURN_STACKADJ_RTX gen_rtx_REG (Pmode, 2)
# 2851 "i386.h"
#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) (flag_pic ? ((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4 : DW_EH_PE_absptr)







#define ASM_OUTPUT_LABEL(FILE,NAME) (assemble_name ((FILE), (NAME)), fputs (":\n", (FILE)))






#define ASM_FORMAT_PRIVATE_NAME(OUTPUT,NAME,LABELNO) ( (OUTPUT) = (char *) alloca (strlen ((NAME)) + 10), sprintf ((OUTPUT), "%s.%d", (NAME), (LABELNO)))






#define ASM_OUTPUT_REG_PUSH(FILE,REGNO) asm_fprintf ((FILE), "\tpush{l}\t%%e%s\n", reg_names[(REGNO)])





#define ASM_OUTPUT_REG_POP(FILE,REGNO) asm_fprintf ((FILE), "\tpop{l}\t%%e%s\n", reg_names[(REGNO)])




#define ASM_OUTPUT_ADDR_VEC_ELT(FILE,VALUE) ix86_output_addr_vec_elt ((FILE), (VALUE))




#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE,BODY,VALUE,REL) ix86_output_addr_diff_elt ((FILE), (VALUE), (REL))





#define JUMP_TABLES_IN_TEXT_SECTION (!TARGET_64BIT && flag_pic && !HAVE_AS_GOTOFF_IN_DATA)





#define ASM_OUTPUT_DWARF_ADDR_CONST(FILE,X) i386_dwarf_output_addr_const ((FILE), (X))




#define ASM_SIMPLIFY_DWARF_ADDR(X) i386_simplify_dwarf_addr (X)





#define CRT_CALL_STATIC_FUNCTION(SECTION_OP,FUNC) asm (SECTION_OP "\n\t" "call " USER_LABEL_PREFIX #FUNC "\n" TEXT_SECTION_ASM_OP);
# 2922 "i386.h"
#define PRINT_OPERAND_PUNCT_VALID_P(CODE) ((CODE) == '*' || (CODE) == '+')
# 2933 "i386.h"
#define PRINT_REG(X,CODE,FILE) print_reg ((X), (CODE), (FILE))


#define PRINT_OPERAND(FILE,X,CODE) print_operand ((FILE), (X), (CODE))


#define PRINT_OPERAND_ADDRESS(FILE,ADDR) print_operand_address ((FILE), (ADDR))







#define DEBUG_PRINT_REG(X,CODE,FILE) do { static const char * const hi_name[] = HI_REGISTER_NAMES; static const char * const qi_name[] = QI_REGISTER_NAMES; fprintf ((FILE), "%d ", REGNO (X)); if (REGNO (X) == FLAGS_REG) { fputs ("flags", (FILE)); break; } if (REGNO (X) == DIRFLAG_REG) { fputs ("dirflag", (FILE)); break; } if (REGNO (X) == FPSR_REG) { fputs ("fpsr", (FILE)); break; } if (REGNO (X) == ARG_POINTER_REGNUM) { fputs ("argp", (FILE)); break; } if (REGNO (X) == FRAME_POINTER_REGNUM) { fputs ("frame", (FILE)); break; } if (STACK_TOP_P (X)) { fputs ("st(0)", (FILE)); break; } if (FP_REG_P (X)) { fputs (hi_name[REGNO(X)], (FILE)); break; } if (REX_INT_REG_P (X)) { switch (GET_MODE_SIZE (GET_MODE (X))) { default: case 8: fprintf ((FILE), "r%i", REGNO (X) - FIRST_REX_INT_REG + 8); break; case 4: fprintf ((FILE), "r%id", REGNO (X) - FIRST_REX_INT_REG + 8); break; case 2: fprintf ((FILE), "r%iw", REGNO (X) - FIRST_REX_INT_REG + 8); break; case 1: fprintf ((FILE), "r%ib", REGNO (X) - FIRST_REX_INT_REG + 8); break; } break; } switch (GET_MODE_SIZE (GET_MODE (X))) { case 8: fputs ("r", (FILE)); fputs (hi_name[REGNO (X)], (FILE)); break; default: fputs ("e", (FILE)); case 2: fputs (hi_name[REGNO (X)], (FILE)); break; case 1: fputs (qi_name[REGNO (X)], (FILE)); break; } } while (0)
# 3009 "i386.h"
#define ASM_OPERAND_LETTER '#'
#define RET return ""
#define AT_SP(MODE) (gen_rtx_MEM ((MODE), stack_pointer_rtx))



#define PREDICATE_CODES {"x86_64_immediate_operand", {CONST_INT, SUBREG, REG, SYMBOL_REF, LABEL_REF, CONST}}, {"x86_64_nonmemory_operand", {CONST_INT, SUBREG, REG, SYMBOL_REF, LABEL_REF, CONST}}, {"x86_64_movabs_operand", {CONST_INT, SUBREG, REG, SYMBOL_REF, LABEL_REF, CONST}}, {"x86_64_szext_nonmemory_operand", {CONST_INT, SUBREG, REG, SYMBOL_REF, LABEL_REF, CONST}}, {"x86_64_general_operand", {CONST_INT, SUBREG, REG, MEM, SYMBOL_REF, LABEL_REF, CONST}}, {"x86_64_szext_general_operand", {CONST_INT, SUBREG, REG, MEM, SYMBOL_REF, LABEL_REF, CONST}}, {"x86_64_zext_immediate_operand", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF, LABEL_REF}}, {"shiftdi_operand", {SUBREG, REG, MEM}}, {"const_int_1_operand", {CONST_INT}}, {"const_int_1_31_operand", {CONST_INT}}, {"symbolic_operand", {SYMBOL_REF, LABEL_REF, CONST}}, {"aligned_operand", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF, LABEL_REF, SUBREG, REG, MEM}}, {"pic_symbolic_operand", {CONST}}, {"call_insn_operand", {REG, SUBREG, MEM, SYMBOL_REF}}, {"constant_call_address_operand", {SYMBOL_REF, CONST}}, {"const0_operand", {CONST_INT, CONST_DOUBLE}}, {"const1_operand", {CONST_INT}}, {"const248_operand", {CONST_INT}}, {"incdec_operand", {CONST_INT}}, {"mmx_reg_operand", {REG}}, {"reg_no_sp_operand", {SUBREG, REG}}, {"general_no_elim_operand", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF, LABEL_REF, SUBREG, REG, MEM}}, {"nonmemory_no_elim_operand", {CONST_INT, REG, SUBREG}}, {"q_regs_operand", {SUBREG, REG}}, {"non_q_regs_operand", {SUBREG, REG}}, {"fcmov_comparison_operator", {EQ, NE, LTU, GTU, LEU, GEU, UNORDERED, ORDERED, LT, UNLT, GT, UNGT, LE, UNLE, GE, UNGE, LTGT, UNEQ}}, {"sse_comparison_operator", {EQ, LT, LE, UNORDERED, NE, UNGE, UNGT, ORDERED, UNEQ, UNLT, UNLE, LTGT, GE, GT }}, {"ix86_comparison_operator", {EQ, NE, LE, LT, GE, GT, LEU, LTU, GEU, GTU, UNORDERED, ORDERED, UNLE, UNLT, UNGE, UNGT, LTGT, UNEQ }}, {"cmp_fp_expander_operand", {CONST_DOUBLE, SUBREG, REG, MEM}}, {"ext_register_operand", {SUBREG, REG}}, {"binary_fp_operator", {PLUS, MINUS, MULT, DIV}}, {"mult_operator", {MULT}}, {"div_operator", {DIV}}, {"arith_or_logical_operator", {PLUS, MULT, AND, IOR, XOR, SMIN, SMAX, UMIN, UMAX, COMPARE, MINUS, DIV, MOD, UDIV, UMOD, ASHIFT, ROTATE, ASHIFTRT, LSHIFTRT, ROTATERT}}, {"promotable_binary_operator", {PLUS, MULT, AND, IOR, XOR, ASHIFT}}, {"memory_displacement_operand", {MEM}}, {"cmpsi_operand", {CONST_INT, CONST_DOUBLE, CONST, SYMBOL_REF, LABEL_REF, SUBREG, REG, MEM, AND}}, {"long_memory_operand", {MEM}},
# 3077 "i386.h"
#define SPECIAL_MODE_PREDICATES "ext_register_operand",
# 3092 "i386.h"
enum cmodel {
  CM_32,
  CM_SMALL,
  CM_KERNEL,
  CM_MEDIUM,
  CM_LARGE,
  CM_SMALL_PIC
};


#define RED_ZONE_SIZE 128

#define RED_ZONE_RESERVE 8
extern const char *ix86_debug_arg_string, *ix86_debug_addr_string;

enum asm_dialect {
  ASM_ATT,
  ASM_INTEL
};
extern const char *ix86_asm_string;
extern enum asm_dialect ix86_asm_dialect;

extern const char *ix86_cmodel_string;
extern enum cmodel ix86_cmodel;


extern const char *ix86_cpu_string;
extern const char *ix86_arch_string;
extern const char *ix86_fpmath_string;
extern const char *ix86_regparm_string;
extern const char *ix86_align_loops_string;
extern const char *ix86_align_jumps_string;
extern const char *ix86_align_funcs_string;
extern const char *ix86_preferred_stack_boundary_string;
extern const char *ix86_branch_cost_string;
extern int ix86_regparm;
extern int ix86_preferred_stack_boundary;
extern int ix86_branch_cost;
extern enum reg_class const regclass_map[53];
extern rtx ix86_compare_op0;
extern rtx ix86_compare_op1;
# 3149 "i386.h"
enum fp_cw_mode {FP_CW_STORED, FP_CW_UNINITIALIZED, FP_CW_ANY};




#define OPTIMIZE_MODE_SWITCHING(ENTITY) 1
# 3164 "i386.h"
#define NUM_MODES_FOR_MODE_SWITCHING { FP_CW_ANY }







#define MODE_NEEDED(ENTITY,I) (GET_CODE (I) == CALL_INSN || (GET_CODE (I) == INSN && (asm_noperands (PATTERN (I)) >= 0 || GET_CODE (PATTERN (I)) == ASM_INPUT)) ? FP_CW_UNINITIALIZED : recog_memoized (I) < 0 || get_attr_type (I) != TYPE_FISTP ? FP_CW_ANY : FP_CW_STORED)
# 3184 "i386.h"
#define MODE_PRIORITY_TO_MODE(ENTITY,N) (N)





#define EMIT_MODE_SET(ENTITY,MODE,HARD_REGS_LIVE) ((MODE) == FP_CW_STORED ? emit_i387_cw_initialization (assign_386_stack_local (HImode, 1), assign_386_stack_local (HImode, 2)), 0 : 0)
# 3202 "i386.h"
#define HARD_REGNO_RENAME_OK(SRC,TARGET) ((SRC) < FIRST_STACK_REG || (SRC) > LAST_STACK_REG)
# 16 "config.h" 2
# 1 "att.h" 1
# 22 "att.h"
# 1 "unix.h" 1
# 25 "unix.h"
#define DEFAULT_ASSEMBLER_DIALECT 0





#define SHIFT_DOUBLE_OMITS_COUNT 1





#define ASM_COMMENT_START "/"




#define ASM_APP_ON "/APP\n"




#define ASM_APP_OFF "/NO_APP\n"



#define TEXT_SECTION_ASM_OP "\t.text"



#define DATA_SECTION_ASM_OP "\t.data"



#define BSS_SECTION_ASM_OP "\t.bss"




#define ASM_GLOBALIZE_LABEL(FILE,NAME) (fputs (".globl ", FILE), assemble_name (FILE, NAME), fputs ("\n", FILE))





#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS)



#define VALUE_REGNO(MODE) (GET_MODE_CLASS (MODE) == MODE_FLOAT && TARGET_FLOAT_RETURNS_IN_80387 ? FIRST_FLOAT_REG : (MODE) == TImode || VECTOR_MODE_P (MODE) ? FIRST_SSE_REG : 0)







#define ASM_OUTPUT_MI_THUNK(FILE,THUNK_FNDECL,DELTA,FUNCTION) x86_output_mi_thunk (FILE, DELTA, FUNCTION);
# 23 "att.h" 2

#define TARGET_VERSION fprintf (stderr, " (80386, ATT syntax)");




#define LPREFIX ".L"



#define ASM_SHORT "\t.value\t"
#define ASM_LONG "\t.long\t"
#define ASM_QUAD "\t.quad\t"



#define ASM_OUTPUT_ASCII(FILE,PTR,SIZE) do { size_t i = 0, limit = (SIZE); while (i < limit) { if (i%10 == 0) { if (i!=0) fprintf ((FILE), "\n"); fputs ("\t.byte\t", (FILE)); } else fprintf ((FILE), ","); fprintf ((FILE), "0x%x", ((PTR)[i++] & 0377)) ;} fprintf ((FILE), "\n"); } while (0)
# 52 "att.h"
#undef ASM_FILE_START
#define ASM_FILE_START(FILE) do { output_file_directive (FILE, main_input_filename); if (ix86_asm_dialect == ASM_INTEL) fputs ("\t.intel_syntax\n", FILE); } while (0)







#undef ASM_FILE_START_1
#define ASM_FILE_START_1(FILE) fprintf (FILE, "\t.optim\n")





#define ASM_OUTPUT_ALIGN(FILE,LOG) if ((LOG)!=0) fprintf ((FILE), "\t.align %d\n", 1<<(LOG))





#define ASM_OUTPUT_SKIP(FILE,SIZE) fprintf ((FILE), "\t.set .,.+%u\n", (SIZE))




#define ASM_NO_SKIP_IN_TEXT 1




#undef LOCAL_LABEL_PREFIX
#define LOCAL_LABEL_PREFIX "."






#undef ASM_GENERATE_INTERNAL_LABEL
#define ASM_GENERATE_INTERNAL_LABEL(BUF,PREFIX,NUMBER) sprintf ((BUF), "%s%s%ld", LOCAL_LABEL_PREFIX, (PREFIX), (long)(NUMBER))





#undef ASM_OUTPUT_INTERNAL_LABEL
#define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) fprintf (FILE, "%s%s%d:\n", LOCAL_LABEL_PREFIX, PREFIX, NUM)




#undef USER_LABEL_PREFIX
#define USER_LABEL_PREFIX ""
# 17 "config.h" 2
# 1 "dbxelf.h" 1
# 26 "dbxelf.h"
#define GCC_DBX_ELF_H 



#undef DBX_DEBUGGING_INFO
#define DBX_DEBUGGING_INFO 






#undef DBX_BLOCKS_FUNCTION_RELATIVE
#define DBX_BLOCKS_FUNCTION_RELATIVE 1



#undef DBX_FUNCTION_FIRST
#define DBX_FUNCTION_FIRST 



#undef DBX_USE_BINCL
#define DBX_USE_BINCL 




#define DBX_CONTIN_LENGTH 0





#undef ASM_OUTPUT_SOURCE_LINE
#define ASM_OUTPUT_SOURCE_LINE(FILE,LINE) do { static int sym_lineno = 1; char temp[256]; ASM_GENERATE_INTERNAL_LABEL (temp, "LM", sym_lineno); fprintf (FILE, "\t.stabn 68,0,%d,", LINE); assemble_name (FILE, temp); putc ('-', FILE); assemble_name (FILE, XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); putc ('\n', FILE); ASM_OUTPUT_INTERNAL_LABEL (FILE, "LM", sym_lineno); sym_lineno += 1; } while (0)
# 82 "dbxelf.h"
#undef DBX_OUTPUT_MAIN_SOURCE_FILE_END
#define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE,FILENAME) asm_fprintf (FILE, "\t.text\n\t.stabs \"\",%d,0,0,%LLetext\n%LLetext:\n", N_SO)
# 18 "config.h" 2
# 1 "elfos.h" 1
# 27 "elfos.h"
#define USING_ELFOS_H 






#undef USER_LABEL_PREFIX
#define USER_LABEL_PREFIX ""






#define MAX_OFILE_ALIGNMENT (32768 * 8)




#define NO_DOLLAR_IN_LABEL 



#define PCC_BITFIELD_TYPE_MATTERS 1



#define TARGET_MEM_FUNCTIONS 



#define HANDLE_SYSV_PRAGMA 




#define DWARF_DEBUGGING_INFO 1





#define DWARF2_DEBUGGING_INFO 1







#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG



#define OBJECT_FORMAT_ELF 




#define ASM_OUTPUT_IDENT(FILE,NAME) fprintf (FILE, "%s\"%s\"\n", IDENT_ASM_OP, NAME);


#define IDENT_ASM_OP "\t.ident\t"

#undef SET_ASM_OP
#define SET_ASM_OP "\t.set\t"
# 102 "elfos.h"
#undef ASM_FILE_START
#define ASM_FILE_START(FILE) output_file_directive ((FILE), main_input_filename)





#define SKIP_ASM_OP "\t.zero\t"

#undef ASM_OUTPUT_SKIP
#define ASM_OUTPUT_SKIP(FILE,SIZE) fprintf (FILE, "%s%u\n", SKIP_ASM_OP, (SIZE))
# 121 "elfos.h"
#undef ASM_OUTPUT_INTERNAL_LABEL
#define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) do { fprintf (FILE, ".%s%u:\n", PREFIX, (unsigned) (NUM)); } while (0)
# 137 "elfos.h"
#undef ASM_GENERATE_INTERNAL_LABEL
#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) do { sprintf (LABEL, "*.%s%u", PREFIX, (unsigned) (NUM)); } while (0)
# 153 "elfos.h"
#undef ALIGN_ASM_OP
#define ALIGN_ASM_OP "\t.align\t"


#define ASM_OUTPUT_BEFORE_CASE_LABEL(FILE,PREFIX,NUM,TABLE) ASM_OUTPUT_ALIGN ((FILE), 2);



#undef ASM_OUTPUT_CASE_LABEL
#define ASM_OUTPUT_CASE_LABEL(FILE,PREFIX,NUM,JUMPTABLE) do { ASM_OUTPUT_BEFORE_CASE_LABEL (FILE, PREFIX, NUM, JUMPTABLE) ASM_OUTPUT_INTERNAL_LABEL (FILE, PREFIX, NUM); } while (0)
# 174 "elfos.h"
#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE,FUN) ASM_GLOBALIZE_LABEL (FILE, XSTR (FUN, 0))







#define COMMON_ASM_OP "\t.comm\t"

#undef ASM_OUTPUT_ALIGNED_COMMON
#define ASM_OUTPUT_ALIGNED_COMMON(FILE,NAME,SIZE,ALIGN) do { fprintf ((FILE), "%s", COMMON_ASM_OP); assemble_name ((FILE), (NAME)); fprintf ((FILE), ",%u,%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT); } while (0)
# 199 "elfos.h"
#define LOCAL_ASM_OP "\t.local\t"

#undef ASM_OUTPUT_ALIGNED_LOCAL
#define ASM_OUTPUT_ALIGNED_LOCAL(FILE,NAME,SIZE,ALIGN) do { fprintf ((FILE), "%s", LOCAL_ASM_OP); assemble_name ((FILE), (NAME)); fprintf ((FILE), "\n"); ASM_OUTPUT_ALIGNED_COMMON (FILE, NAME, SIZE, ALIGN); } while (0)
# 216 "elfos.h"
#undef ASCII_DATA_ASM_OP
#define ASCII_DATA_ASM_OP "\t.ascii\t"
# 227 "elfos.h"
#define USE_CONST_SECTION 1

#define CONST_SECTION_ASM_OP "\t.section\t.rodata"







#define INIT_SECTION_ASM_OP "\t.section\t.init"
#define FINI_SECTION_ASM_OP "\t.section\t.fini"



#define ASM_SECTION_START_OP "\t.subsection\t-1"


#define ASM_OUTPUT_SECTION_START(FILE) fprintf ((FILE), "%s\n", ASM_SECTION_START_OP)
# 255 "elfos.h"
#undef EXTRA_SECTIONS
#define EXTRA_SECTIONS in_const





#undef EXTRA_SECTION_FUNCTIONS
#define EXTRA_SECTION_FUNCTIONS CONST_SECTION_FUNCTION


#define READONLY_DATA_SECTION() const_section ()

#define CONST_SECTION_FUNCTION void const_section () { if (!USE_CONST_SECTION) text_section (); else if (in_section != in_const) { fprintf (asm_out_file, "%s\n", CONST_SECTION_ASM_OP); in_section = in_const; } }
# 281 "elfos.h"
#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)

#define UNIQUE_SECTION(DECL,RELOC) do { int len; int sec; const char *name; char *string; const char *prefix; static const char *const prefixes[4][2] = { { ".text.", ".gnu.linkonce.t." }, { ".rodata.", ".gnu.linkonce.r." }, { ".data.", ".gnu.linkonce.d." }, { ".bss.", ".gnu.linkonce.b." } }; if (TREE_CODE (DECL) == FUNCTION_DECL) sec = 0; else if (DECL_INITIAL (DECL) == 0 || DECL_INITIAL (DECL) == error_mark_node) sec = 3; else if (DECL_READONLY_SECTION (DECL, RELOC)) sec = 1; else sec = 2; name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL)); STRIP_NAME_ENCODING (name, name); prefix = prefixes[sec][DECL_ONE_ONLY(DECL)]; len = strlen (name) + strlen (prefix); string = alloca (len + 1); sprintf (string, "%s%s", prefix, name); DECL_SECTION_NAME (DECL) = build_string (len, string); } while (0)
# 323 "elfos.h"
#define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section
# 333 "elfos.h"
#undef SELECT_RTX_SECTION
#define SELECT_RTX_SECTION(MODE,RTX,ALIGN) mergeable_constant_section ((MODE), (ALIGN), 0)
# 358 "elfos.h"
#undef SELECT_SECTION
#define SELECT_SECTION(DECL,RELOC,ALIGN) { if (TREE_CODE (DECL) == STRING_CST) { if (! flag_writable_strings) mergeable_string_section ((DECL), (ALIGN), 0); else data_section (); } else if (TREE_CODE (DECL) == VAR_DECL) { if (!TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL) || !DECL_INITIAL (DECL) || (DECL_INITIAL (DECL) != error_mark_node && !TREE_CONSTANT (DECL_INITIAL (DECL)))) { if (flag_pic && ((RELOC) & 2)) named_section (NULL_TREE, ".data.rel", RELOC); else if (flag_pic && (RELOC)) named_section (NULL_TREE, ".data.rel.local", RELOC); else data_section (); } else if (flag_pic && ((RELOC) & 2)) named_section (NULL_TREE, ".data.rel.ro", RELOC); else if (flag_pic && (RELOC)) named_section (NULL_TREE, ".data.rel.ro.local", RELOC); else if (flag_merge_constants < 2) const_section (); else if (TREE_CODE (DECL_INITIAL (DECL)) == STRING_CST) mergeable_string_section (DECL_INITIAL (DECL), (ALIGN), 0); else mergeable_constant_section (DECL_MODE (DECL), (ALIGN), 0); } else if (TREE_CODE (DECL) == CONSTRUCTOR) { if ((flag_pic && RELOC) || TREE_SIDE_EFFECTS (DECL) || ! TREE_CONSTANT (DECL)) data_section (); else const_section (); } else const_section (); }
# 417 "elfos.h"
#define TYPE_ASM_OP "\t.type\t"
#define SIZE_ASM_OP "\t.size\t"



#define ASM_WEAKEN_LABEL(FILE,NAME) do { fputs ("\t.weak\t", (FILE)); assemble_name ((FILE), (NAME)); fputc ('\n', (FILE)); } while (0)
# 437 "elfos.h"
#define TYPE_OPERAND_FMT "@%s"






#define ASM_DECLARE_RESULT(FILE,RESULT) 
# 457 "elfos.h"
#define ASM_DECLARE_FUNCTION_NAME(FILE,NAME,DECL) do { fprintf (FILE, "%s", TYPE_ASM_OP); assemble_name (FILE, NAME); putc (',', FILE); fprintf (FILE, TYPE_OPERAND_FMT, "function"); putc ('\n', FILE); ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL)); ASM_OUTPUT_LABEL(FILE, NAME); } while (0)
# 474 "elfos.h"
#define ASM_DECLARE_OBJECT_NAME(FILE,NAME,DECL) do { fprintf (FILE, "%s", TYPE_ASM_OP); assemble_name (FILE, NAME); putc (',', FILE); fprintf (FILE, TYPE_OPERAND_FMT, "object"); putc ('\n', FILE); size_directive_output = 0; if (!flag_inhibit_size_directive && (DECL) && DECL_SIZE (DECL)) { size_directive_output = 1; fprintf (FILE, "%s", SIZE_ASM_OP); assemble_name (FILE, NAME); putc (',', FILE); fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, int_size_in_bytes (TREE_TYPE (DECL))); fputc ('\n', FILE); } ASM_OUTPUT_LABEL (FILE, NAME); } while (0)
# 507 "elfos.h"
#define ASM_FINISH_DECLARE_OBJECT(FILE,DECL,TOP_LEVEL,AT_END) do { const char *name = XSTR (XEXP (DECL_RTL (DECL), 0), 0); if (!flag_inhibit_size_directive && DECL_SIZE (DECL) && ! AT_END && TOP_LEVEL && DECL_INITIAL (DECL) == error_mark_node && !size_directive_output) { size_directive_output = 1; fprintf (FILE, "%s", SIZE_ASM_OP); assemble_name (FILE, name); putc (',', FILE); fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, int_size_in_bytes (TREE_TYPE (DECL))); fputc ('\n', FILE); } } while (0)
# 531 "elfos.h"
#define ASM_DECLARE_FUNCTION_SIZE(FILE,FNAME,DECL) do { if (!flag_inhibit_size_directive) { char label[256]; static int labelno; labelno++; ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno); fprintf (FILE, "%s", SIZE_ASM_OP); assemble_name (FILE, (FNAME)); fprintf (FILE, ","); assemble_name (FILE, label); fprintf (FILE, "-"); assemble_name (FILE, (FNAME)); putc ('\n', FILE); } } while (0)
# 570 "elfos.h"
#define ESCAPES "\1\1\1\1\1\1\1\1btn\1fr\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\0\0\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1"
# 592 "elfos.h"
#define STRING_LIMIT ((unsigned) 256)

#define STRING_ASM_OP "\t.string\t"
# 603 "elfos.h"
#define ASM_OUTPUT_LIMITED_STRING(FILE,STR) do { register const unsigned char *_limited_str = (const unsigned char *) (STR); register unsigned ch; fprintf ((FILE), "%s\"", STRING_ASM_OP); for (; (ch = *_limited_str); _limited_str++) { register int escape; switch (escape = ESCAPES[ch]) { case 0: putc (ch, (FILE)); break; case 1: fprintf ((FILE), "\\%03o", ch); break; default: putc ('\\', (FILE)); putc (escape, (FILE)); break; } } fprintf ((FILE), "\"\n"); } while (0)
# 642 "elfos.h"
#undef ASM_OUTPUT_ASCII
#define ASM_OUTPUT_ASCII(FILE,STR,LENGTH) do { register const unsigned char *_ascii_bytes = (const unsigned char *) (STR); register const unsigned char *limit = _ascii_bytes + (LENGTH); register unsigned bytes_in_chunk = 0; for (; _ascii_bytes < limit; _ascii_bytes++) { register const unsigned char *p; if (bytes_in_chunk >= 60) { fprintf ((FILE), "\"\n"); bytes_in_chunk = 0; } for (p = _ascii_bytes; p < limit && *p != '\0'; p++) continue; if (p < limit && (p - _ascii_bytes) <= (long)STRING_LIMIT) { if (bytes_in_chunk > 0) { fprintf ((FILE), "\"\n"); bytes_in_chunk = 0; } ASM_OUTPUT_LIMITED_STRING ((FILE), _ascii_bytes); _ascii_bytes = p; } else { register int escape; register unsigned ch; if (bytes_in_chunk == 0) fprintf ((FILE), "%s\"", ASCII_DATA_ASM_OP); switch (escape = ESCAPES[ch = *_ascii_bytes]) { case 0: putc (ch, (FILE)); bytes_in_chunk++; break; case 1: fprintf ((FILE), "\\%03o", ch); bytes_in_chunk += 4; break; default: putc ('\\', (FILE)); putc (escape, (FILE)); bytes_in_chunk += 2; break; } } } if (bytes_in_chunk > 0) fprintf ((FILE), "\"\n"); } while (0)
# 19 "config.h" 2
# 1 "svr4.h" 1
# 39 "svr4.h"
#define USING_SVR4_H 
# 48 "svr4.h"
#define SWITCH_TAKES_ARG(CHAR) (DEFAULT_SWITCH_TAKES_ARG (CHAR) || (CHAR) == 'h' || (CHAR) == 'x' || (CHAR) == 'z')
# 57 "svr4.h"
#define WORD_SWITCH_TAKES_ARG(STR) (DEFAULT_WORD_SWITCH_TAKES_ARG (STR) && strcmp (STR, "Tdata") && strcmp (STR, "Ttext") && strcmp (STR, "Tbss"))
# 66 "svr4.h"
#undef CPP_PREDEFINES
# 84 "svr4.h"
#undef ASM_SPEC
#define ASM_SPEC "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}"
# 96 "svr4.h"
#undef ASM_FINAL_SPEC
#define ASM_FINAL_SPEC "%|"





#undef MD_EXEC_PREFIX
#define MD_EXEC_PREFIX "/usr/ccs/bin/"






#undef MD_STARTFILE_PREFIX
#define MD_STARTFILE_PREFIX "/usr/ccs/lib/"





#undef LIB_SPEC
#define LIB_SPEC "%{!shared:%{!symbolic:-lc}}"







#undef ENDFILE_SPEC
#define ENDFILE_SPEC "crtend.o%s %{pg:gcrtn.o%s}%{!pg:crtn.o%s}"
# 153 "svr4.h"
#undef LINK_SPEC
# 164 "svr4.h"
#define LINK_SPEC "%{h*} %{v:-V} 		   %{b} 		   %{static:-dn -Bstatic} 		   %{shared:-G -dy -z text} 		   %{symbolic:-Bsymbolic -G -dy -z text} 		   %{G:-G} 		   %{YP,*} 		   %{!YP,*:%{p:-Y P,/usr/ccs/lib/libp:/usr/lib/libp:/usr/ccs/lib:/usr/lib} 		    %{!p:-Y P,/usr/ccs/lib:/usr/lib}} 		   %{Qy:} %{!Qn:-Qy}"
# 187 "svr4.h"
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "%{!shared: 			 %{!symbolic: 			  %{pg:gcrt1.o%s}%{!pg:%{p:mcrt1.o%s}%{!p:crt1.o%s}}}}			%{pg:gcrti.o%s}%{!pg:crti.o%s} 			%{ansi:values-Xc.o%s} 			%{!ansi: 			 %{traditional:values-Xt.o%s} 			 %{!traditional:values-Xa.o%s}}  			crtbegin.o%s"
# 200 "svr4.h"
#define SCCS_DIRECTIVE 
# 211 "svr4.h"
#undef DBX_REGISTER_NUMBER




#undef SIZE_TYPE
#define SIZE_TYPE "unsigned int"

#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "int"

#undef WCHAR_TYPE
#define WCHAR_TYPE "long int"

#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE BITS_PER_WORD





#define TARGET_HAS_F_SETLKW 
# 20 "config.h" 2
# 1 "linux.h" 1
# 24 "linux.h"
#define LINUX_DEFAULT_ELF 



#undef ASM_FILE_START
#define ASM_FILE_START(FILE) do { output_file_directive (FILE, main_input_filename); if (ix86_asm_dialect == ASM_INTEL) fputs ("\t.intel_syntax\n", FILE); } while (0)






#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (i386 Linux/ELF)");



#undef DEFAULT_PCC_STRUCT_RETURN
#define DEFAULT_PCC_STRUCT_RETURN 1

#undef ASM_COMMENT_START
#define ASM_COMMENT_START "#"

#undef DBX_REGISTER_NUMBER
#define DBX_REGISTER_NUMBER(n) (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])






#define NO_PROFILE_COUNTERS 

#undef FUNCTION_PROFILER
#define FUNCTION_PROFILER(FILE,LABELNO) { if (flag_pic) fprintf (FILE, "\tcall\t*mcount@GOT(%%ebx)\n"); else fprintf (FILE, "\tcall\tmcount\n"); }
# 72 "linux.h"
#undef TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER
#define TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER false

#undef SIZE_TYPE
#define SIZE_TYPE "unsigned int"

#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "int"

#undef WCHAR_TYPE
#define WCHAR_TYPE "long int"

#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE BITS_PER_WORD

#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-D__ELF__ -Dunix -D__gnu_linux__ -Dlinux -Asystem=posix"

#undef CPP_SPEC



#define CPP_SPEC "%(cpp_cpu) %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"


#undef CC1_SPEC
#define CC1_SPEC "%(cc1_cpu) %{profile:-p}"
# 116 "linux.h"
#undef LINK_SPEC
# 136 "linux.h"
#define LINK_SPEC "-m elf_i386 %{shared:-shared}   %{!shared:     %{!ibcs:       %{!static: 	%{rdynamic:-export-dynamic} 	%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} 	%{static:-static}}}"
# 150 "linux.h"
#define ASM_OUTPUT_ALIGNED_BSS(FILE,DECL,NAME,SIZE,ALIGN) asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
# 160 "linux.h"
#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) do { if ((LOG) != 0) { if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); } } while (0)
# 189 "linux.h"
#define ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(FILE,ENCODING,SIZE,ADDR,DONE) do { if ((SIZE) == 4 && ((ENCODING) & 0x70) == DW_EH_PE_datarel) { fputs (ASM_LONG, FILE); assemble_name (FILE, XSTR (ADDR, 0)); fputs (((ENCODING) & DW_EH_PE_indirect ? "@GOT" : "@GOTOFF"), FILE); goto DONE; } } while (0)
# 209 "linux.h"
#define CRT_GET_RFIB_DATA(BASE) __asm__ ("call\t.LPR%=\n" ".LPR%=:\n\t" "popl\t%0\n\t" "addl\t$_GLOBAL_OFFSET_TABLE_+[.-.LPR%=],%0" : "=d"(BASE))
# 228 "linux.h"
#define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT,FS,SUCCESS) do { unsigned char *pc_ = (CONTEXT)->ra; struct sigcontext *sc_; long new_cfa_; if (*(unsigned short *)(pc_+0) == 0xb858 && *(unsigned int *)(pc_+2) == 119 && *(unsigned short *)(pc_+6) == 0x80cd) sc_ = (CONTEXT)->cfa + 4; else if (*(unsigned char *)(pc_+0) == 0xb8 && *(unsigned int *)(pc_+1) == 173 && *(unsigned short *)(pc_+5) == 0x80cd) { struct rt_sigframe { int sig; struct siginfo *pinfo; void *puc; struct siginfo info; struct ucontext uc; } *rt_ = (CONTEXT)->cfa; sc_ = (struct sigcontext *) &rt_->uc.uc_mcontext; } else break; new_cfa_ = sc_->esp; (FS)->cfa_how = CFA_REG_OFFSET; (FS)->cfa_reg = 4; (FS)->cfa_offset = new_cfa_ - (long) (CONTEXT)->cfa; (FS)->regs.reg[0].how = REG_SAVED_OFFSET; (FS)->regs.reg[0].loc.offset = (long)&sc_->eax - new_cfa_; (FS)->regs.reg[3].how = REG_SAVED_OFFSET; (FS)->regs.reg[3].loc.offset = (long)&sc_->ebx - new_cfa_; (FS)->regs.reg[1].how = REG_SAVED_OFFSET; (FS)->regs.reg[1].loc.offset = (long)&sc_->ecx - new_cfa_; (FS)->regs.reg[2].how = REG_SAVED_OFFSET; (FS)->regs.reg[2].loc.offset = (long)&sc_->edx - new_cfa_; (FS)->regs.reg[6].how = REG_SAVED_OFFSET; (FS)->regs.reg[6].loc.offset = (long)&sc_->esi - new_cfa_; (FS)->regs.reg[7].how = REG_SAVED_OFFSET; (FS)->regs.reg[7].loc.offset = (long)&sc_->edi - new_cfa_; (FS)->regs.reg[5].how = REG_SAVED_OFFSET; (FS)->regs.reg[5].loc.offset = (long)&sc_->ebp - new_cfa_; (FS)->regs.reg[8].how = REG_SAVED_OFFSET; (FS)->regs.reg[8].loc.offset = (long)&sc_->eip - new_cfa_; (FS)->retaddr_column = 8; goto SUCCESS; } while (0)
# 21 "config.h" 2
# 1 "x86-64.h" 1
# 22 "x86-64.h"
#undef ASM_COMMENT_START
#define ASM_COMMENT_START "#"

#undef DBX_REGISTER_NUMBER
#define DBX_REGISTER_NUMBER(n) (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])



#define NO_PROFILE_COUNTERS 

#undef FUNCTION_PROFILER
#define FUNCTION_PROFILER(FILE,LABELNO) { if (TARGET_64BIT && flag_pic) fprintf (FILE, "\tcall\t*mcount@PLT\n"); else if (flag_pic) fprintf (FILE, "\tcall\t*mcount@GOT(%%ebx)\n"); else fprintf (FILE, "\tcall\tmcount\n"); }
# 43 "x86-64.h"
#undef SIZE_TYPE
#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int")

#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int")

#undef WCHAR_TYPE
#define WCHAR_TYPE "int"

#undef WCHAR_TYPE_SIZE
#define WCHAR_TYPE_SIZE 32

#undef CC1_SPEC
#define CC1_SPEC "%(cc1_cpu) %{profile:-p}"

#undef ASM_SPEC
#define ASM_SPEC "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*}  %{Wa,*:%*} %{m32:--32}"







#define ASM_OUTPUT_ALIGNED_BSS(FILE,DECL,NAME,SIZE,ALIGN) asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
# 76 "x86-64.h"
#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) do { if ((LOG) != 0) { if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); } } while (0)
# 88 "x86-64.h"
#undef DWARF2_DEBUGGING_INFO
#undef DWARF_DEBUGGING_INFO
#define DWARF2_DEBUGGING_INFO 
#define DWARF2_UNWIND_INFO 1

#undef HAVE_AS_DWARF2_DEBUG_LINE
#define HAVE_AS_DWARF2_DEBUG_LINE 

#undef PREFERRED_DEBUGGING_TYPE
#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
# 22 "config.h" 2
# 1 "linux64.h" 1
# 22 "linux64.h"
#define LINUX_DEFAULT_ELF 

#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (x86-64 Linux/ELF)");

#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-D__ELF__ -Dunix -D__gnu_linux__ -Dlinux -Asystem(posix)"

#undef CPP_SPEC
#define CPP_SPEC "%(cpp_cpu) %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT} %{!m32:-D__LONG_MAX__=9223372036854775807L}"
# 41 "linux64.h"
#undef LINK_SPEC
#define LINK_SPEC "%{!m32:-m elf_x86_64 -Y P,/usr/lib64} %{m32:-m elf_i386}   %{shared:-shared}   %{!shared:     %{!static:       %{rdynamic:-export-dynamic}       %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}}       %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}}     %{static:-static}}"
# 51 "linux64.h"
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "%{m32:%{!shared:        %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s}        %{!p:%{profile:gcrt1.o%s} %{!profile:crt1.o%s}}}}      crti.o%s %{static:crtbeginT.o%s}     %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}}    %{!m32:%{!shared:        %{pg:/usr/lib64/gcrt1.o%s} %{!pg:%{p:/usr/lib64/gcrt1.o%s}        %{!p:%{profile:/usr/lib64/gcrt1.o%s} %{!profile:/usr/lib64/crt1.o%s}}}}     /usr/lib64/crti.o%s %{static:crtbeginT.o%s}      %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}}"
# 64 "linux64.h"
#undef ENDFILE_SPEC
#define ENDFILE_SPEC "  %{m32:%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s}   %{!m32:%{!shared:crtend.o%s} %{shared:crtendS.o%s} /usr/lib64/crtn.o%s}"



#define MULTILIB_DEFAULTS { "m64" }
# 140 "linux64.h"
#undef MD_FALLBACK_FRAME_STATE_FOR
#define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT,FS,SUCCESS) do { unsigned char *pc_ = (CONTEXT)->ra; struct sigcontext *sc_; long new_cfa_; if (*(unsigned short *)(pc_+0) == 0xb858 && *(unsigned int *)(pc_+2) == 119 && *(unsigned short *)(pc_+6) == 0x80cd) sc_ = (CONTEXT)->cfa + 4; else if (*(unsigned char *)(pc_+0) == 0xb8 && *(unsigned int *)(pc_+1) == 173 && *(unsigned short *)(pc_+5) == 0x80cd) { struct rt_sigframe { int sig; struct siginfo *pinfo; void *puc; struct siginfo info; struct ucontext uc; } *rt_ = (CONTEXT)->cfa; sc_ = (struct sigcontext *) &rt_->uc.uc_mcontext; } else break; new_cfa_ = sc_->esp; (FS)->cfa_how = CFA_REG_OFFSET; (FS)->cfa_reg = 4; (FS)->cfa_offset = new_cfa_ - (long) (CONTEXT)->cfa; (FS)->regs.reg[0].how = REG_SAVED_OFFSET; (FS)->regs.reg[0].loc.offset = (long)&sc_->eax - new_cfa_; (FS)->regs.reg[3].how = REG_SAVED_OFFSET; (FS)->regs.reg[3].loc.offset = (long)&sc_->ebx - new_cfa_; (FS)->regs.reg[1].how = REG_SAVED_OFFSET; (FS)->regs.reg[1].loc.offset = (long)&sc_->ecx - new_cfa_; (FS)->regs.reg[2].how = REG_SAVED_OFFSET; (FS)->regs.reg[2].loc.offset = (long)&sc_->edx - new_cfa_; (FS)->regs.reg[6].how = REG_SAVED_OFFSET; (FS)->regs.reg[6].loc.offset = (long)&sc_->esi - new_cfa_; (FS)->regs.reg[7].how = REG_SAVED_OFFSET; (FS)->regs.reg[7].loc.offset = (long)&sc_->edi - new_cfa_; (FS)->regs.reg[5].how = REG_SAVED_OFFSET; (FS)->regs.reg[5].loc.offset = (long)&sc_->ebp - new_cfa_; (FS)->regs.reg[8].how = REG_SAVED_OFFSET; (FS)->regs.reg[8].loc.offset = (long)&sc_->eip - new_cfa_; (FS)->retaddr_column = 8; goto SUCCESS; } while (0)
# 23 "config.h" 2
# 1 "defaults.h" 1
# 24 "defaults.h"
#define GCC_DEFAULTS_H 



#define TARGET_BELL 007
#define TARGET_BS 010
#define TARGET_TAB 011
#define TARGET_NEWLINE 012
#define TARGET_VT 013
#define TARGET_FF 014
#define TARGET_CR 015
#define TARGET_ESC 033
# 57 "defaults.h"
#define ASM_STABD_OP "\t.stabd\t"
# 73 "defaults.h"
#define ASM_OUTPUT_ALTERNATE_LABEL_NAME(FILE,INSN) do { ASM_OUTPUT_LABEL(FILE,LABEL_ALTERNATE_NAME (INSN)); } while (0)
# 120 "defaults.h"
#define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2) do { fprintf ((FILE), "%s", SET_ASM_OP); assemble_name (FILE, LABEL1); fprintf (FILE, ","); assemble_name (FILE, LABEL2); fprintf (FILE, "\n"); } while (0)
# 133 "defaults.h"
#define ASM_OUTPUT_LABELREF(FILE,NAME) asm_fprintf ((FILE), "%U%s", (NAME))







#define ASM_OUTPUT_DEBUG_LABEL(FILE,PREFIX,NUM) ASM_OUTPUT_INTERNAL_LABEL (FILE, PREFIX, NUM)






#define ASM_OUTPUT_WEAK_ALIAS(STREAM,NAME,VALUE) do { ASM_WEAKEN_LABEL (STREAM, NAME); if (VALUE) ASM_OUTPUT_DEF (STREAM, NAME, VALUE); } while (0)
# 162 "defaults.h"
#define SUPPORTS_WEAK 1
# 171 "defaults.h"
#define SUPPORTS_ONE_ONLY 1
# 187 "defaults.h"
#define TARGET_ATTRIBUTE_WEAK __attribute__ ((weak))
# 196 "defaults.h"
#define SUPPORTS_INIT_PRIORITY 1






#define LINK_ELIMINATE_DUPLICATE_LDIRECTORIES 0
# 216 "defaults.h"
#define EH_FRAME_SECTION_NAME ".eh_frame"
# 225 "defaults.h"
#define JCR_SECTION_NAME ".jcr"
# 258 "defaults.h"
#define DWARF2_GENERATE_TEXT_SECTION_LABEL 1
# 285 "defaults.h"
#define CHAR_TYPE_SIZE BITS_PER_UNIT




#define BOOL_TYPE_SIZE CHAR_TYPE_SIZE
# 314 "defaults.h"
#define WCHAR_UNSIGNED 0
# 342 "defaults.h"
#define GCOV_TYPE_SIZE LONG_LONG_TYPE_SIZE







#define CPLUSPLUS_CPP_SPEC CPP_SPEC
# 380 "defaults.h"
#define TARGET_VTABLE_USES_DESCRIPTORS 0
# 396 "defaults.h"
#define TARGET_PTRMEMFUNC_VBIT_LOCATION (FUNCTION_BOUNDARY >= 2 * BITS_PER_UNIT ? ptrmemfunc_vbit_in_pfn : ptrmemfunc_vbit_in_delta)
# 409 "defaults.h"
#define DEFAULT_GDB_EXTENSIONS 1
# 455 "defaults.h"
#define FUNCTION_ARG_REG_LITTLE_ENDIAN 0






#define MODE_BASE_REG_CLASS(MODE) BASE_REG_CLASS





#define DEFAULT_USE_CXA_ATEXIT 0
# 24 "config.h" 2

#define POSIX 


# 1 "insn-constants.h" 1




#define GCC_INSN_CONSTANTS_H 
# 29 "config.h" 2
# 1 "insn-flags.h" 1




#define GCC_INSN_FLAGS_H 

#define HAVE_cmpdi_ccno_1_rex64 (TARGET_64BIT && ix86_match_ccmode (insn, CCNOmode))
#define HAVE_cmpdi_1_insn_rex64 (TARGET_64BIT && ix86_match_ccmode (insn, CCmode))
#define HAVE_cmpqi_ext_3_insn (!TARGET_64BIT && ix86_match_ccmode (insn, CCmode))
#define HAVE_cmpqi_ext_3_insn_rex64 (TARGET_64BIT && ix86_match_ccmode (insn, CCmode))
#define HAVE_x86_fnstsw_1 (TARGET_80387)
#define HAVE_x86_sahf_1 (!TARGET_64BIT)
#define HAVE_popsi1 (!TARGET_64BIT)
#define HAVE_movsi_insv_1 (!TARGET_64BIT)
#define HAVE_pushdi2_rex64 (TARGET_64BIT)
#define HAVE_popdi1 (TARGET_64BIT)
#define HAVE_swapxf 1
#define HAVE_swaptf 1
#define HAVE_zero_extendhisi2_and (TARGET_ZERO_EXTEND_WITH_AND && !optimize_size)
#define HAVE_zero_extendsidi2_32 (!TARGET_64BIT)
#define HAVE_zero_extendsidi2_rex64 (TARGET_64BIT)
#define HAVE_zero_extendhidi2 (TARGET_64BIT)
#define HAVE_zero_extendqidi2 (TARGET_64BIT)
#define HAVE_extendsidi2_rex64 (TARGET_64BIT)
#define HAVE_extendhidi2 (TARGET_64BIT)
#define HAVE_extendqidi2 (TARGET_64BIT)
#define HAVE_extendhisi2 1
#define HAVE_extendqihi2 1
#define HAVE_extendqisi2 1
#define HAVE_truncdfsf2_3 (TARGET_80387)
#define HAVE_truncdfsf2_sse_only (!TARGET_80387 && TARGET_SSE2)
#define HAVE_fix_truncdi_nomemory (TARGET_80387 && FLOAT_MODE_P (GET_MODE (operands[1])) && (!SSE_FLOAT_MODE_P (GET_MODE (operands[1])) || !TARGET_64BIT))

#define HAVE_fix_truncdi_memory (TARGET_80387 && FLOAT_MODE_P (GET_MODE (operands[1])) && (!SSE_FLOAT_MODE_P (GET_MODE (operands[1])) || !TARGET_64BIT))

#define HAVE_fix_truncsfdi_sse (TARGET_64BIT && TARGET_SSE)
#define HAVE_fix_truncdfdi_sse (TARGET_64BIT && TARGET_SSE2)
#define HAVE_fix_truncsi_nomemory (TARGET_80387 && FLOAT_MODE_P (GET_MODE (operands[1])) && !SSE_FLOAT_MODE_P (GET_MODE (operands[1])))

#define HAVE_fix_truncsi_memory (TARGET_80387 && FLOAT_MODE_P (GET_MODE (operands[1])) && !SSE_FLOAT_MODE_P (GET_MODE (operands[1])))

#define HAVE_fix_truncsfsi_sse (TARGET_SSE)
#define HAVE_fix_truncdfsi_sse (TARGET_SSE2)
#define HAVE_fix_trunchi_nomemory (TARGET_80387 && FLOAT_MODE_P (GET_MODE (operands[1])) && !SSE_FLOAT_MODE_P (GET_MODE (operands[1])))

#define HAVE_fix_trunchi_memory (TARGET_80387 && FLOAT_MODE_P (GET_MODE (operands[1])) && !SSE_FLOAT_MODE_P (GET_MODE (operands[1])))

#define HAVE_x86_fnstcw_1 (TARGET_80387)
#define HAVE_x86_fldcw_1 (TARGET_80387)
#define HAVE_floathisf2 (TARGET_80387 && !TARGET_SSE)
#define HAVE_floathidf2 (TARGET_80387 && !TARGET_SSE2)
#define HAVE_floathixf2 (!TARGET_64BIT && TARGET_80387)
#define HAVE_floathitf2 (TARGET_80387)
#define HAVE_floatsixf2 (!TARGET_64BIT && TARGET_80387)
#define HAVE_floatsitf2 (TARGET_80387)
#define HAVE_floatdixf2 (!TARGET_64BIT && TARGET_80387)
#define HAVE_floatditf2 (TARGET_80387)
#define HAVE_addqi3_cc (ix86_binary_operator_ok (PLUS, QImode, operands))
#define HAVE_addsi_1_zext (TARGET_64BIT && ix86_binary_operator_ok (PLUS, SImode, operands))
#define HAVE_addqi_ext_1 (!TARGET_64BIT)
#define HAVE_subdi3_carry_rex64 (TARGET_64BIT && ix86_binary_operator_ok (MINUS, DImode, operands))
#define HAVE_subsi3_carry (ix86_binary_operator_ok (MINUS, SImode, operands))
#define HAVE_subsi3_carry_zext (TARGET_64BIT && ix86_binary_operator_ok (MINUS, SImode, operands))
#define HAVE_divqi3 (TARGET_QIMODE_MATH)
#define HAVE_udivqi3 (TARGET_QIMODE_MATH)
#define HAVE_divmodhi4 (TARGET_HIMODE_MATH)
#define HAVE_udivmoddi4 (TARGET_64BIT)
#define HAVE_udivmodsi4 1
#define HAVE_testsi_1 (ix86_match_ccmode (insn, CCNOmode))
#define HAVE_andqi_ext_0 ((unsigned HOST_WIDE_INT)INTVAL (operands[2]) <= 0xff)
#define HAVE_negsf2_memory (ix86_unary_operator_ok (NEG, SFmode, operands))
#define HAVE_negsf2_ifs (TARGET_SSE && (reload_in_progress || reload_completed || (register_operand (operands[0], VOIDmode) && register_operand (operands[1], VOIDmode))))



#define HAVE_negdf2_memory (ix86_unary_operator_ok (NEG, DFmode, operands))
#define HAVE_negdf2_ifs (!TARGET_64BIT && TARGET_SSE2 && (reload_in_progress || reload_completed || (register_operand (operands[0], VOIDmode) && register_operand (operands[1], VOIDmode))))



#define HAVE_abssf2_memory (ix86_unary_operator_ok (ABS, SFmode, operands))
#define HAVE_abssf2_ifs (TARGET_SSE && (reload_in_progress || reload_completed || (register_operand (operands[0], VOIDmode) && register_operand (operands[1], VOIDmode))))



#define HAVE_absdf2_memory (ix86_unary_operator_ok (ABS, DFmode, operands))
#define HAVE_absdf2_ifs (!TARGET_64BIT && TARGET_SSE2 && (reload_in_progress || reload_completed || (register_operand (operands[0], VOIDmode) && register_operand (operands[1], VOIDmode))))



#define HAVE_ashldi3_1 (!TARGET_64BIT && TARGET_CMOVE)
#define HAVE_x86_shld_1 1
#define HAVE_ashrdi3_63_rex64 (TARGET_64BIT && INTVAL (operands[2]) == 63 && (TARGET_USE_CLTD || optimize_size) && ix86_binary_operator_ok (ASHIFTRT, DImode, operands))

#define HAVE_ashrdi3_1 (!TARGET_64BIT && TARGET_CMOVE)
#define HAVE_x86_shrd_1 1
#define HAVE_ashrsi3_31 (INTVAL (operands[2]) == 31 && (TARGET_USE_CLTD || optimize_size) && ix86_binary_operator_ok (ASHIFTRT, SImode, operands))

#define HAVE_lshrdi3_1 (!TARGET_64BIT && TARGET_CMOVE)
#define HAVE_setcc_2 1
#define HAVE_jump 1
#define HAVE_doloop_end_internal (!TARGET_64BIT && TARGET_USE_LOOP)
#define HAVE_blockage 1
#define HAVE_return_internal (reload_completed)
#define HAVE_return_pop_internal (reload_completed)
#define HAVE_return_indirect_internal (reload_completed)
#define HAVE_nop 1
#define HAVE_prologue_set_got (!TARGET_64BIT)
#define HAVE_prologue_get_pc (!TARGET_64BIT)
#define HAVE_eh_return_si (!TARGET_64BIT)
#define HAVE_eh_return_di (TARGET_64BIT)
#define HAVE_leave (!TARGET_64BIT)
#define HAVE_leave_rex64 (TARGET_64BIT)
#define HAVE_ffssi_1 1
#define HAVE_sqrtsf2_1 (! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && (TARGET_SSE_MATH && TARGET_MIX_SSE_I387))

#define HAVE_sqrtsf2_1_sse_only (TARGET_SSE_MATH && (!TARGET_80387 || !TARGET_MIX_SSE_I387))
#define HAVE_sqrtsf2_i387 (! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && !TARGET_SSE_MATH)

#define HAVE_sqrtdf2_1 (! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && (TARGET_SSE2 && TARGET_SSE_MATH && TARGET_MIX_SSE_I387))

#define HAVE_sqrtdf2_1_sse_only (TARGET_SSE2 && TARGET_SSE_MATH && (!TARGET_80387 || !TARGET_MIX_SSE_I387))
#define HAVE_sqrtdf2_i387 (! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && (!TARGET_SSE2 || !TARGET_SSE_MATH))

#define HAVE_sqrtxf2 (!TARGET_64BIT && TARGET_80387 && !TARGET_NO_FANCY_MATH_387 && (TARGET_IEEE_FP || flag_unsafe_math_optimizations) )

#define HAVE_sqrttf2 (! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && (TARGET_IEEE_FP || flag_unsafe_math_optimizations) )

#define HAVE_sindf2 (! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && flag_unsafe_math_optimizations)

#define HAVE_sinsf2 (! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && flag_unsafe_math_optimizations)

#define HAVE_sinxf2 (!TARGET_64BIT && TARGET_80387 && !TARGET_NO_FANCY_MATH_387 && flag_unsafe_math_optimizations)

#define HAVE_sintf2 (! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && flag_unsafe_math_optimizations)

#define HAVE_cosdf2 (! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && flag_unsafe_math_optimizations)

#define HAVE_cossf2 (! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && flag_unsafe_math_optimizations)

#define HAVE_cosxf2 (! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && flag_unsafe_math_optimizations)

#define HAVE_costf2 (! TARGET_NO_FANCY_MATH_387 && TARGET_80387 && flag_unsafe_math_optimizations)

#define HAVE_cld 1
#define HAVE_strmovdi_rex_1 (TARGET_64BIT && (TARGET_SINGLE_STRINGOP || optimize_size))
#define HAVE_strmovsi_1 (!TARGET_64BIT && (TARGET_SINGLE_STRINGOP || optimize_size))
#define HAVE_strmovsi_rex_1 (TARGET_64BIT && (TARGET_SINGLE_STRINGOP || optimize_size))
#define HAVE_strmovhi_1 (!TARGET_64BIT && (TARGET_SINGLE_STRINGOP || optimize_size))
#define HAVE_strmovhi_rex_1 (TARGET_64BIT && (TARGET_SINGLE_STRINGOP || optimize_size))
#define HAVE_strmovqi_1 (!TARGET_64BIT && (TARGET_SINGLE_STRINGOP || optimize_size))
#define HAVE_strmovqi_rex_1 (TARGET_64BIT && (TARGET_SINGLE_STRINGOP || optimize_size))
#define HAVE_rep_movdi_rex64 (TARGET_64BIT)
#define HAVE_rep_movsi (!TARGET_64BIT)
#define HAVE_rep_movsi_rex64 (TARGET_64BIT)
#define HAVE_rep_movqi (!TARGET_64BIT)
#define HAVE_rep_movqi_rex64 (TARGET_64BIT)
#define HAVE_strsetdi_rex_1 (TARGET_64BIT && (TARGET_SINGLE_STRINGOP || optimize_size))
#define HAVE_strsetsi_1 (!TARGET_64BIT && (TARGET_SINGLE_STRINGOP || optimize_size))
#define HAVE_strsetsi_rex_1 (TARGET_64BIT && (TARGET_SINGLE_STRINGOP || optimize_size))
#define HAVE_strsethi_1 (!TARGET_64BIT && (TARGET_SINGLE_STRINGOP || optimize_size))
#define HAVE_strsethi_rex_1 (TARGET_64BIT && (TARGET_SINGLE_STRINGOP || optimize_size))
#define HAVE_strsetqi_1 (!TARGET_64BIT && (TARGET_SINGLE_STRINGOP || optimize_size))
#define HAVE_strsetqi_rex_1 (TARGET_64BIT && (TARGET_SINGLE_STRINGOP || optimize_size))
#define HAVE_rep_stosdi_rex64 (TARGET_64BIT)
#define HAVE_rep_stossi (!TARGET_64BIT)
#define HAVE_rep_stossi_rex64 (TARGET_64BIT)
#define HAVE_rep_stosqi (!TARGET_64BIT)
#define HAVE_rep_stosqi_rex64 (TARGET_64BIT)
#define HAVE_cmpstrqi_nz_1 (!TARGET_64BIT)
#define HAVE_cmpstrqi_nz_rex_1 (TARGET_64BIT)
#define HAVE_cmpstrqi_1 (!TARGET_64BIT)
#define HAVE_cmpstrqi_rex_1 (TARGET_64BIT)
#define HAVE_strlenqi_1 (!TARGET_64BIT)
#define HAVE_strlenqi_rex_1 (TARGET_64BIT)
#define HAVE_x86_movdicc_0_m1_rex64 (TARGET_64BIT)
#define HAVE_x86_movsicc_0_m1 1
#define HAVE_pro_epilogue_adjust_stack_rex64 (TARGET_64BIT)
#define HAVE_sse_movsfcc (TARGET_SSE && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM) && (!TARGET_IEEE_FP || (GET_CODE (operands[1]) != EQ && GET_CODE (operands[1]) != NE)))



#define HAVE_sse_movsfcc_eq (TARGET_SSE && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM))

#define HAVE_sse_movdfcc (TARGET_SSE2 && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM) && (!TARGET_IEEE_FP || (GET_CODE (operands[1]) != EQ && GET_CODE (operands[1]) != NE)))



#define HAVE_sse_movdfcc_eq (TARGET_SSE && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM))

#define HAVE_allocate_stack_worker_1 (!TARGET_64BIT && TARGET_STACK_PROBE)
#define HAVE_allocate_stack_worker_rex64 (TARGET_64BIT && TARGET_STACK_PROBE)
#define HAVE_trap 1
#define HAVE_movv4sf_internal (TARGET_SSE)
#define HAVE_movv4si_internal (TARGET_SSE)
#define HAVE_movv8qi_internal (TARGET_MMX)
#define HAVE_movv4hi_internal (TARGET_MMX)
#define HAVE_movv2si_internal (TARGET_MMX)
#define HAVE_movv2sf_internal (TARGET_3DNOW)
#define HAVE_movti_internal (TARGET_SSE && !TARGET_64BIT)
#define HAVE_sse_movaps (TARGET_SSE)
#define HAVE_sse_movups (TARGET_SSE)
#define HAVE_sse_movmskps (TARGET_SSE)
#define HAVE_mmx_pmovmskb (TARGET_SSE || TARGET_3DNOW_A)
#define HAVE_mmx_maskmovq ((TARGET_SSE || TARGET_3DNOW_A) && !TARGET_64BIT)
#define HAVE_mmx_maskmovq_rex ((TARGET_SSE || TARGET_3DNOW_A) && TARGET_64BIT)
#define HAVE_sse_movntv4sf (TARGET_SSE)
#define HAVE_sse_movntdi (TARGET_SSE || TARGET_3DNOW_A)
#define HAVE_sse_movhlps (TARGET_SSE)
#define HAVE_sse_movlhps (TARGET_SSE)
#define HAVE_sse_movhps (TARGET_SSE && (GET_CODE (operands[1]) == MEM || GET_CODE (operands[2]) == MEM))

#define HAVE_sse_movlps (TARGET_SSE && (GET_CODE (operands[1]) == MEM || GET_CODE (operands[2]) == MEM))

#define HAVE_sse_loadss (TARGET_SSE)
#define HAVE_sse_movss (TARGET_SSE)
#define HAVE_sse_storess (TARGET_SSE)
#define HAVE_sse_shufps (TARGET_SSE)
#define HAVE_addv4sf3 (TARGET_SSE)
#define HAVE_vmaddv4sf3 (TARGET_SSE)
#define HAVE_subv4sf3 (TARGET_SSE)
#define HAVE_vmsubv4sf3 (TARGET_SSE)
#define HAVE_mulv4sf3 (TARGET_SSE)
#define HAVE_vmmulv4sf3 (TARGET_SSE)
#define HAVE_divv4sf3 (TARGET_SSE)
#define HAVE_vmdivv4sf3 (TARGET_SSE)
#define HAVE_rcpv4sf2 (TARGET_SSE)
#define HAVE_vmrcpv4sf2 (TARGET_SSE)
#define HAVE_rsqrtv4sf2 (TARGET_SSE)
#define HAVE_vmrsqrtv4sf2 (TARGET_SSE)
#define HAVE_sqrtv4sf2 (TARGET_SSE)
#define HAVE_vmsqrtv4sf2 (TARGET_SSE)
#define HAVE_sse_andti3 (TARGET_SSE && !TARGET_SSE2 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM))

#define HAVE_sse_nandti3 (TARGET_SSE && !TARGET_SSE2)
#define HAVE_sse_iorti3 (TARGET_SSE && !TARGET_SSE2 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM))

#define HAVE_sse_xorti3 (TARGET_SSE && !TARGET_SSE2 && (GET_CODE (operands[1]) != MEM || GET_CODE (operands[2]) != MEM))

#define HAVE_sse_clrv4sf (TARGET_SSE)
#define HAVE_maskcmpv4sf3 (TARGET_SSE)
#define HAVE_maskncmpv4sf3 (TARGET_SSE)
#define HAVE_vmmaskcmpv4sf3 (TARGET_SSE)
#define HAVE_vmmaskncmpv4sf3 (TARGET_SSE)
#define HAVE_sse_comi (TARGET_SSE)
#define HAVE_sse_ucomi (TARGET_SSE)
#define HAVE_sse_unpckhps (TARGET_SSE)
#define HAVE_sse_unpcklps (TARGET_SSE)
#define HAVE_smaxv4sf3 (TARGET_SSE)
#define HAVE_vmsmaxv4sf3 (TARGET_SSE)
#define HAVE_sminv4sf3 (TARGET_SSE)
#define HAVE_vmsminv4sf3 (TARGET_SSE)
#define HAVE_cvtpi2ps (TARGET_SSE)
#define HAVE_cvtps2pi (TARGET_SSE)
#define HAVE_cvttps2pi (TARGET_SSE)
#define HAVE_cvtsi2ss (TARGET_SSE)
#define HAVE_cvtss2si (TARGET_SSE)
#define HAVE_cvttss2si (TARGET_SSE)
#define HAVE_addv8qi3 (TARGET_MMX)
#define HAVE_addv4hi3 (TARGET_MMX)
#define HAVE_addv2si3 (TARGET_MMX)
#define HAVE_ssaddv8qi3 (TARGET_MMX)
#define HAVE_ssaddv4hi3 (TARGET_MMX)
#define HAVE_usaddv8qi3 (TARGET_MMX)
#define HAVE_usaddv4hi3 (TARGET_MMX)
#define HAVE_subv8qi3 (TARGET_MMX)
#define HAVE_subv4hi3 (TARGET_MMX)
#define HAVE_subv2si3 (TARGET_MMX)
#define HAVE_sssubv8qi3 (TARGET_MMX)
#define HAVE_sssubv4hi3 (TARGET_MMX)
#define HAVE_ussubv8qi3 (TARGET_MMX)
#define HAVE_ussubv4hi3 (TARGET_MMX)
#define HAVE_mulv4hi3 (TARGET_MMX)
#define HAVE_smulv4hi3_highpart (TARGET_MMX)
#define HAVE_umulv4hi3_highpart (TARGET_SSE || TARGET_3DNOW_A)
#define HAVE_mmx_pmaddwd (TARGET_MMX)
#define HAVE_mmx_iordi3 (TARGET_MMX)
#define HAVE_mmx_xordi3 (TARGET_MMX)
#define HAVE_mmx_clrdi (TARGET_MMX)
#define HAVE_mmx_anddi3 (TARGET_MMX)
#define HAVE_mmx_nanddi3 (TARGET_MMX)
#define HAVE_mmx_uavgv8qi3 (TARGET_SSE || TARGET_3DNOW_A)
#define HAVE_mmx_uavgv4hi3 (TARGET_SSE || TARGET_3DNOW_A)
#define HAVE_mmx_psadbw (TARGET_SSE || TARGET_3DNOW_A)
#define HAVE_mmx_pinsrw (TARGET_SSE || TARGET_3DNOW_A)
#define HAVE_mmx_pextrw (TARGET_SSE || TARGET_3DNOW_A)
#define HAVE_mmx_pshufw (TARGET_SSE || TARGET_3DNOW_A)
#define HAVE_eqv8qi3 (TARGET_MMX)
#define HAVE_eqv4hi3 (TARGET_MMX)
#define HAVE_eqv2si3 (TARGET_MMX)
#define HAVE_gtv8qi3 (TARGET_MMX)
#define HAVE_gtv4hi3 (TARGET_MMX)
#define HAVE_gtv2si3 (TARGET_MMX)
#define HAVE_umaxv8qi3 (TARGET_SSE || TARGET_3DNOW_A)
#define HAVE_smaxv4hi3 (TARGET_SSE || TARGET_3DNOW_A)
#define HAVE_uminv8qi3 (TARGET_SSE || TARGET_3DNOW_A)
#define HAVE_sminv4hi3 (TARGET_SSE || TARGET_3DNOW_A)
#define HAVE_ashrv4hi3 (TARGET_MMX)
#define HAVE_ashrv2si3 (TARGET_MMX)
#define HAVE_lshrv4hi3 (TARGET_MMX)
#define HAVE_lshrv2si3 (TARGET_MMX)
#define HAVE_mmx_lshrdi3 (TARGET_MMX)
#define HAVE_ashlv4hi3 (TARGET_MMX)
#define HAVE_ashlv2si3 (TARGET_MMX)
#define HAVE_mmx_ashldi3 (TARGET_MMX)
#define HAVE_mmx_packsswb (TARGET_MMX)
#define HAVE_mmx_packssdw (TARGET_MMX)
#define HAVE_mmx_packuswb (TARGET_MMX)
#define HAVE_mmx_punpckhbw (TARGET_MMX)
#define HAVE_mmx_punpckhwd (TARGET_MMX)
#define HAVE_mmx_punpckhdq (TARGET_MMX)
#define HAVE_mmx_punpcklbw (TARGET_MMX)
#define HAVE_mmx_punpcklwd (TARGET_MMX)
#define HAVE_mmx_punpckldq (TARGET_MMX)
#define HAVE_emms (TARGET_MMX)
#define HAVE_ldmxcsr (TARGET_MMX)
#define HAVE_stmxcsr (TARGET_MMX)
#define HAVE_addv2sf3 (TARGET_3DNOW)
#define HAVE_subv2sf3 (TARGET_3DNOW)
#define HAVE_subrv2sf3 (TARGET_3DNOW)
#define HAVE_gtv2sf3 (TARGET_3DNOW)
#define HAVE_gev2sf3 (TARGET_3DNOW)
#define HAVE_eqv2sf3 (TARGET_3DNOW)
#define HAVE_pfmaxv2sf3 (TARGET_3DNOW)
#define HAVE_pfminv2sf3 (TARGET_3DNOW)
#define HAVE_mulv2sf3 (TARGET_3DNOW)
#define HAVE_femms (TARGET_3DNOW)
#define HAVE_pf2id (TARGET_3DNOW)
#define HAVE_pf2iw (TARGET_3DNOW_A)
#define HAVE_pfacc (TARGET_3DNOW)
#define HAVE_pfnacc (TARGET_3DNOW_A)
#define HAVE_pfpnacc (TARGET_3DNOW_A)
#define HAVE_pi2fw (TARGET_3DNOW_A)
#define HAVE_floatv2si2 (TARGET_3DNOW)
#define HAVE_pavgusb (TARGET_3DNOW)
#define HAVE_pfrcpv2sf2 (TARGET_3DNOW)
#define HAVE_pfrcpit1v2sf3 (TARGET_3DNOW)
#define HAVE_pfrcpit2v2sf3 (TARGET_3DNOW)
#define HAVE_pfrsqrtv2sf2 (TARGET_3DNOW)
#define HAVE_pfrsqit1v2sf3 (TARGET_3DNOW)
#define HAVE_pmulhrwv4hi3 (TARGET_3DNOW)
#define HAVE_pswapdv2si2 (TARGET_3DNOW_A)
#define HAVE_pswapdv2sf2 (TARGET_3DNOW_A)
#define HAVE_cmpdi 1
#define HAVE_cmpsi 1
#define HAVE_cmphi 1
#define HAVE_cmpqi (TARGET_QIMODE_MATH)
#define HAVE_cmpdi_1_rex64 (TARGET_64BIT)
#define HAVE_cmpsi_1 1
#define HAVE_cmpqi_ext_3 1
#define HAVE_cmpxf (!TARGET_64BIT && TARGET_80387)
#define HAVE_cmptf (TARGET_80387)
#define HAVE_cmpdf (TARGET_80387 || TARGET_SSE2)
#define HAVE_cmpsf (TARGET_80387 || TARGET_SSE)
#define HAVE_movsi 1
#define HAVE_movhi 1
#define HAVE_movstricthi (! TARGET_PARTIAL_REG_STALL || optimize_size)
#define HAVE_movqi 1
#define HAVE_reload_outqi 1
#define HAVE_movstrictqi (! TARGET_PARTIAL_REG_STALL)
#define HAVE_movdi 1
#define HAVE_movsf 1
#define HAVE_movdf 1
#define HAVE_movxf (!TARGET_64BIT)
#define HAVE_movtf 1
#define HAVE_zero_extendhisi2 1
#define HAVE_zero_extendqihi2 1
#define HAVE_zero_extendqisi2 1
#define HAVE_zero_extendsidi2 1
#define HAVE_extendsidi2 1
#define HAVE_extendsfdf2 (TARGET_80387 || TARGET_SSE2)
#define HAVE_extendsfxf2 (!TARGET_64BIT && TARGET_80387)
#define HAVE_extendsftf2 (TARGET_80387)
#define HAVE_extenddfxf2 (!TARGET_64BIT && TARGET_80387)
#define HAVE_extenddftf2 (TARGET_80387)
#define HAVE_truncdfsf2 (TARGET_80387 || TARGET_SSE2)
#define HAVE_truncxfsf2 (!TARGET_64BIT && TARGET_80387)
#define HAVE_trunctfsf2 (TARGET_80387)
#define HAVE_truncxfdf2 (!TARGET_64BIT && TARGET_80387)
#define HAVE_trunctfdf2 (TARGET_80387)
#define HAVE_fix_truncxfdi2 (!TARGET_64BIT && TARGET_80387)
#define HAVE_fix_trunctfdi2 (TARGET_80387)
#define HAVE_fix_truncdfdi2 (TARGET_80387 || (TARGET_SSE2 && TARGET_64BIT))
#define HAVE_fix_truncsfdi2 (TARGET_80387 || (TARGET_SSE && TARGET_64BIT))
#define HAVE_fix_truncxfsi2 (!TARGET_64BIT && TARGET_80387)
#define HAVE_fix_trunctfsi2 (TARGET_80387)
#define HAVE_fix_truncdfsi2 (TARGET_80387 || TARGET_SSE2)
#define HAVE_fix_truncsfsi2 (TARGET_80387 || TARGET_SSE)
#define HAVE_fix_truncxfhi2 (!TARGET_64BIT && TARGET_80387)
#define HAVE_fix_trunctfhi2 (TARGET_80387)
#define HAVE_fix_truncdfhi2 (TARGET_80387 && !TARGET_SSE2)
#define HAVE_fix_truncsfhi2 (TARGET_80387 && !TARGET_SSE)
#define HAVE_floatsisf2 (TARGET_SSE || TARGET_80387)
#define HAVE_floatdisf2 ((TARGET_64BIT && TARGET_SSE) || TARGET_80387)
#define HAVE_floatsidf2 (TARGET_80387 || TARGET_SSE2)
#define HAVE_floatdidf2 ((TARGET_64BIT && TARGET_SSE2) || TARGET_80387)
#define HAVE_adddi3 1
#define HAVE_addsi3 1
#define HAVE_addhi3 (TARGET_HIMODE_MATH)
#define HAVE_addqi3 (TARGET_QIMODE_MATH)
#define HAVE_addxf3 (!TARGET_64BIT && TARGET_80387)
#define HAVE_addtf3 (TARGET_80387)
#define HAVE_adddf3 (TARGET_80387 || (TARGET_SSE2 && TARGET_SSE_MATH))
#define HAVE_addsf3 (TARGET_80387 || TARGET_SSE_MATH)
#define HAVE_subdi3 1
#define HAVE_subsi3 1
#define HAVE_subhi3 (TARGET_HIMODE_MATH)
#define HAVE_subqi3 (TARGET_QIMODE_MATH)
#define HAVE_subxf3 (!TARGET_64BIT && TARGET_80387)
#define HAVE_subtf3 (TARGET_80387)
#define HAVE_subdf3 (TARGET_80387 || (TARGET_SSE2 && TARGET_SSE_MATH))
#define HAVE_subsf3 (TARGET_80387 || TARGET_SSE_MATH)
#define HAVE_muldi3 (TARGET_64BIT)
#define HAVE_mulsi3 1
#define HAVE_mulhi3 (TARGET_HIMODE_MATH)
#define HAVE_mulqi3 (TARGET_QIMODE_MATH)
#define HAVE_umulqihi3 (TARGET_QIMODE_MATH)
#define HAVE_mulqihi3 (TARGET_QIMODE_MATH)
#define HAVE_umulditi3 (TARGET_64BIT)
#define HAVE_umulsidi3 (!TARGET_64BIT)
#define HAVE_mulditi3 (TARGET_64BIT)
#define HAVE_mulsidi3 (!TARGET_64BIT)
#define HAVE_umuldi3_highpart (TARGET_64BIT)
#define HAVE_umulsi3_highpart 1
#define HAVE_smuldi3_highpart (TARGET_64BIT)
#define HAVE_smulsi3_highpart 1
#define HAVE_mulxf3 (!TARGET_64BIT && TARGET_80387)
#define HAVE_multf3 (TARGET_80387)
#define HAVE_muldf3 (TARGET_80387 || (TARGET_SSE2 && TARGET_SSE_MATH))
#define HAVE_mulsf3 (TARGET_80387 || TARGET_SSE_MATH)
#define HAVE_divxf3 (!TARGET_64BIT && TARGET_80387)
#define HAVE_divtf3 (TARGET_80387)
#define HAVE_divdf3 (TARGET_80387 || (TARGET_SSE2 && TARGET_SSE_MATH))
#define HAVE_divsf3 (TARGET_80387 || TARGET_SSE_MATH)
#define HAVE_divmoddi4 (TARGET_64BIT)
#define HAVE_divmodsi4 1
#define HAVE_udivmodhi4 (TARGET_HIMODE_MATH)
#define HAVE_testsi_ccno_1 1
#define HAVE_testqi_ccz_1 1
#define HAVE_testqi_ext_ccno_0 1
#define HAVE_anddi3 (TARGET_64BIT)
#define HAVE_andsi3 1
#define HAVE_andhi3 (TARGET_HIMODE_MATH)
#define HAVE_andqi3 (TARGET_QIMODE_MATH)
#define HAVE_iordi3 (TARGET_64BIT)
#define HAVE_iorsi3 1
#define HAVE_iorhi3 (TARGET_HIMODE_MATH)
#define HAVE_iorqi3 (TARGET_QIMODE_MATH)
#define HAVE_xordi3 (TARGET_64BIT)
#define HAVE_xorsi3 1
#define HAVE_xorhi3 (TARGET_HIMODE_MATH)
#define HAVE_xorqi3 (TARGET_QIMODE_MATH)
#define HAVE_xorqi_cc_ext_1 1
#define HAVE_negdi2 1
#define HAVE_negsi2 1
#define HAVE_neghi2 (TARGET_HIMODE_MATH)
#define HAVE_negqi2 (TARGET_QIMODE_MATH)
#define HAVE_negsf2 (TARGET_80387)
#define HAVE_negdf2 (TARGET_80387)
#define HAVE_negxf2 (!TARGET_64BIT && TARGET_80387)
#define HAVE_negtf2 (TARGET_80387)
#define HAVE_abssf2 (TARGET_80387)
#define HAVE_absdf2 (TARGET_80387)
#define HAVE_absxf2 (!TARGET_64BIT && TARGET_80387)
#define HAVE_abstf2 (TARGET_80387)
#define HAVE_one_cmpldi2 (TARGET_64BIT)
#define HAVE_one_cmplsi2 1
#define HAVE_one_cmplhi2 (TARGET_HIMODE_MATH)
#define HAVE_one_cmplqi2 (TARGET_QIMODE_MATH)
#define HAVE_ashldi3 1
#define HAVE_x86_shift_adj_1 (TARGET_CMOVE)
#define HAVE_x86_shift_adj_2 1
#define HAVE_ashlsi3 1
#define HAVE_ashlhi3 (TARGET_HIMODE_MATH)
#define HAVE_ashlqi3 (TARGET_QIMODE_MATH)
#define HAVE_ashrdi3 1
#define HAVE_x86_shift_adj_3 1
#define HAVE_ashrsi3 1
#define HAVE_ashrhi3 (TARGET_HIMODE_MATH)
#define HAVE_ashrqi3 (TARGET_QIMODE_MATH)
#define HAVE_lshrdi3 1
#define HAVE_lshrsi3 1
#define HAVE_lshrhi3 (TARGET_HIMODE_MATH)
#define HAVE_lshrqi3 (TARGET_QIMODE_MATH)
#define HAVE_rotldi3 (TARGET_64BIT)
#define HAVE_rotlsi3 1
#define HAVE_rotlhi3 (TARGET_HIMODE_MATH)
#define HAVE_rotlqi3 (TARGET_QIMODE_MATH)
#define HAVE_rotrdi3 (TARGET_64BIT)
#define HAVE_rotrsi3 1
#define HAVE_rotrhi3 (TARGET_HIMODE_MATH)
#define HAVE_rotrqi3 (TARGET_QIMODE_MATH)
#define HAVE_extv 1
#define HAVE_extzv 1
#define HAVE_insv 1
#define HAVE_seq 1
#define HAVE_sne 1
#define HAVE_sgt 1
#define HAVE_sgtu 1
#define HAVE_slt 1
#define HAVE_sltu 1
#define HAVE_sge 1
#define HAVE_sgeu 1
#define HAVE_sle 1
#define HAVE_sleu 1
#define HAVE_sunordered (TARGET_80387 || TARGET_SSE)
#define HAVE_sordered (TARGET_80387)
#define HAVE_suneq (TARGET_80387 || TARGET_SSE)
#define HAVE_sunge (TARGET_80387 || TARGET_SSE)
#define HAVE_sungt (TARGET_80387 || TARGET_SSE)
#define HAVE_sunle (TARGET_80387 || TARGET_SSE)
#define HAVE_sunlt (TARGET_80387 || TARGET_SSE)
#define HAVE_sltgt (TARGET_80387 || TARGET_SSE)
#define HAVE_beq 1
#define HAVE_bne 1
#define HAVE_bgt 1
#define HAVE_bgtu 1
#define HAVE_blt 1
#define HAVE_bltu 1
#define HAVE_bge 1
#define HAVE_bgeu 1
#define HAVE_ble 1
#define HAVE_bleu 1
#define HAVE_bunordered (TARGET_80387 || TARGET_SSE)
#define HAVE_bordered (TARGET_80387 || TARGET_SSE)
#define HAVE_buneq (TARGET_80387 || TARGET_SSE)
#define HAVE_bunge (TARGET_80387 || TARGET_SSE)
#define HAVE_bungt (TARGET_80387 || TARGET_SSE)
#define HAVE_bunle (TARGET_80387 || TARGET_SSE)
#define HAVE_bunlt (TARGET_80387 || TARGET_SSE)
#define HAVE_bltgt (TARGET_80387 || TARGET_SSE)
#define HAVE_indirect_jump 1
#define HAVE_tablejump 1
#define HAVE_doloop_end (!TARGET_64BIT && TARGET_USE_LOOP)
#define HAVE_call_pop (!TARGET_64BIT)
#define HAVE_call 1
#define HAVE_call_exp 1
#define HAVE_call_value_pop (!TARGET_64BIT)
#define HAVE_call_value 1
#define HAVE_call_value_exp 1
#define HAVE_untyped_call 1
#define HAVE_return (ix86_can_use_return_insn_p ())
#define HAVE_prologue 1
#define HAVE_epilogue 1
#define HAVE_sibcall_epilogue 1
#define HAVE_eh_return 1
#define HAVE_ffssi2 1
#define HAVE_sqrtsf2 ((! TARGET_NO_FANCY_MATH_387 && TARGET_80387) || TARGET_SSE_MATH)
#define HAVE_sqrtdf2 ((! TARGET_NO_FANCY_MATH_387 && TARGET_80387) || (TARGET_SSE2 && TARGET_SSE_MATH))

#define HAVE_movstrsi 1
#define HAVE_movstrdi (TARGET_64BIT)
#define HAVE_strmovdi_rex64 (TARGET_64BIT)
#define HAVE_strmovsi 1
#define HAVE_strmovsi_rex64 (TARGET_64BIT)
#define HAVE_strmovhi 1
#define HAVE_strmovhi_rex64 (TARGET_64BIT)
#define HAVE_strmovqi 1
#define HAVE_strmovqi_rex64 (TARGET_64BIT)
#define HAVE_clrstrsi 1
#define HAVE_clrstrdi (TARGET_64BIT)
#define HAVE_strsetdi_rex64 (TARGET_64BIT)
#define HAVE_strsetsi 1
#define HAVE_strsetsi_rex64 (TARGET_64BIT)
#define HAVE_strsethi 1
#define HAVE_strsethi_rex64 (TARGET_64BIT)
#define HAVE_strsetqi 1
#define HAVE_strsetqi_rex64 (TARGET_64BIT)
#define HAVE_cmpstrsi 1
#define HAVE_cmpintqi 1
#define HAVE_strlensi 1
#define HAVE_strlendi 1
#define HAVE_movdicc (TARGET_64BIT)
#define HAVE_movsicc 1
#define HAVE_movhicc (TARGET_CMOVE && TARGET_HIMODE_MATH)
#define HAVE_movsfcc (TARGET_CMOVE)
#define HAVE_movdfcc (TARGET_CMOVE)
#define HAVE_movxfcc (!TARGET_64BIT && TARGET_CMOVE)
#define HAVE_movtfcc (TARGET_CMOVE)
#define HAVE_minsf3 (TARGET_SSE)
#define HAVE_mindf3 (TARGET_SSE2 && TARGET_SSE_MATH)
#define HAVE_maxsf3 (TARGET_SSE)
#define HAVE_maxdf3 (TARGET_SSE2 && TARGET_SSE_MATH)
#define HAVE_pro_epilogue_adjust_stack 1
#define HAVE_allocate_stack_worker (TARGET_STACK_PROBE)
#define HAVE_allocate_stack (TARGET_STACK_PROBE)
#define HAVE_builtin_setjmp_receiver (!TARGET_64BIT && flag_pic)
#define HAVE_conditional_trap 1
#define HAVE_movti (TARGET_SSE || TARGET_64BIT)
#define HAVE_movv4sf (TARGET_SSE)
#define HAVE_movv4si (TARGET_MMX)
#define HAVE_movv2si (TARGET_MMX)
#define HAVE_movv4hi (TARGET_MMX)
#define HAVE_movv8qi (TARGET_MMX)
#define HAVE_movv2sf (TARGET_3DNOW)
#define HAVE_sfence (TARGET_SSE || TARGET_3DNOW_A)
#define HAVE_sse_prologue_save (TARGET_64BIT)
#define HAVE_prefetch (TARGET_PREFETCH_SSE || TARGET_3DNOW)
struct rtx_def;
extern struct rtx_def *gen_cmpdi_ccno_1_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpdi_1_insn_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpqi_ext_3_insn (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpqi_ext_3_insn_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_x86_fnstsw_1 (struct rtx_def *);
extern struct rtx_def *gen_x86_sahf_1 (struct rtx_def *);
extern struct rtx_def *gen_popsi1 (struct rtx_def *);
extern struct rtx_def *gen_movsi_insv_1 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pushdi2_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_popdi1 (struct rtx_def *);
extern struct rtx_def *gen_swapxf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_swaptf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendhisi2_and (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendsidi2_32 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendsidi2_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendhidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendqidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendsidi2_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendhidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendhisi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqihi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqisi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_truncdfsf2_3 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_truncdfsf2_sse_only (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncdi_nomemory (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncdi_memory (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncsfdi_sse (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncdfdi_sse (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncsi_nomemory (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncsi_memory (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncsfsi_sse (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncdfsi_sse (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_trunchi_nomemory (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_trunchi_memory (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_x86_fnstcw_1 (struct rtx_def *);
extern struct rtx_def *gen_x86_fldcw_1 (struct rtx_def *);
extern struct rtx_def *gen_floathisf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floathidf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floathixf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floathitf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatsixf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatsitf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatdixf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatditf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addqi3_cc (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addsi_1_zext (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addqi_ext_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subdi3_carry_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subsi3_carry (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subsi3_carry_zext (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_udivqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divmodhi4 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_udivmoddi4 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_udivmodsi4 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_testsi_1 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_andqi_ext_0 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negsf2_memory (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negsf2_ifs (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negdf2_memory (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negdf2_ifs (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_abssf2_memory (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_abssf2_ifs (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_absdf2_memory (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_absdf2_ifs (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashldi3_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_x86_shld_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrdi3_63_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrdi3_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_x86_shrd_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrsi3_31 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_lshrdi3_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_setcc_2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_jump (struct rtx_def *);
extern struct rtx_def *gen_doloop_end_internal (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_blockage (void);
extern struct rtx_def *gen_return_internal (void);
extern struct rtx_def *gen_return_pop_internal (struct rtx_def *);
extern struct rtx_def *gen_return_indirect_internal (struct rtx_def *);
extern struct rtx_def *gen_nop (void);
extern struct rtx_def *gen_prologue_set_got (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_prologue_get_pc (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_eh_return_si (struct rtx_def *);
extern struct rtx_def *gen_eh_return_di (struct rtx_def *);
extern struct rtx_def *gen_leave (void);
extern struct rtx_def *gen_leave_rex64 (void);
extern struct rtx_def *gen_ffssi_1 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtsf2_1 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtsf2_1_sse_only (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtsf2_i387 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtdf2_1 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtdf2_1_sse_only (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtdf2_i387 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtxf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrttf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sindf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sinsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sinxf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sintf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cosdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cossf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cosxf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_costf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cld (void);
extern struct rtx_def *gen_strmovdi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovsi_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovsi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovhi_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovhi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovqi_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovqi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_movdi_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_movsi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_movsi_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_movqi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_movqi_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetdi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetsi_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetsi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsethi_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsethi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetqi_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetqi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_stosdi_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_stossi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_stossi_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_stosqi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_stosqi_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpstrqi_nz_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpstrqi_nz_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpstrqi_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpstrqi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strlenqi_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strlenqi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_x86_movdicc_0_m1_rex64 (struct rtx_def *);
extern struct rtx_def *gen_x86_movsicc_0_m1 (struct rtx_def *);
extern struct rtx_def *gen_pro_epilogue_adjust_stack_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movsfcc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movsfcc_eq (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movdfcc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movdfcc_eq (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_allocate_stack_worker_1 (struct rtx_def *);
extern struct rtx_def *gen_allocate_stack_worker_rex64 (struct rtx_def *);
extern struct rtx_def *gen_trap (void);
extern struct rtx_def *gen_movv4sf_internal (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv4si_internal (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv8qi_internal (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv4hi_internal (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv2si_internal (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv2sf_internal (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movti_internal (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movaps (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movups (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movmskps (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_pmovmskb (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_maskmovq (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_maskmovq_rex (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movntv4sf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movntdi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movhlps (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movlhps (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movhps (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movlps (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_loadss (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movss (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_storess (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_shufps (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmaddv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmsubv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmmulv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmdivv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rcpv4sf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmrcpv4sf2 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rsqrtv4sf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmrsqrtv4sf2 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtv4sf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmsqrtv4sf2 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_andti3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_nandti3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_iorti3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_xorti3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_clrv4sf (struct rtx_def *);
extern struct rtx_def *gen_maskcmpv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_maskncmpv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmmaskcmpv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmmaskncmpv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_comi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_ucomi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_unpckhps (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_unpcklps (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smaxv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmsmaxv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sminv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmsminv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cvtpi2ps (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cvtps2pi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cvttps2pi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cvtsi2ss (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cvtss2si (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cvttss2si (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addv2si3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ssaddv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ssaddv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_usaddv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_usaddv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subv2si3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sssubv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sssubv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ussubv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ussubv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smulv4hi3_highpart (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umulv4hi3_highpart (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_pmaddwd (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_iordi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_xordi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_clrdi (struct rtx_def *);
extern struct rtx_def *gen_mmx_anddi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_nanddi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_uavgv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_uavgv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_psadbw (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_pinsrw (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_pextrw (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_pshufw (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_eqv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_eqv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_eqv2si3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_gtv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_gtv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_gtv2si3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umaxv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smaxv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_uminv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sminv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrv2si3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_lshrv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_lshrv2si3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_lshrdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashlv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashlv2si3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_ashldi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_packsswb (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_packssdw (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_packuswb (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_punpckhbw (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_punpckhwd (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_punpckhdq (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_punpcklbw (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_punpcklwd (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_punpckldq (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_emms (void);
extern struct rtx_def *gen_ldmxcsr (struct rtx_def *);
extern struct rtx_def *gen_stmxcsr (struct rtx_def *);
extern struct rtx_def *gen_addv2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subv2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subrv2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_gtv2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_gev2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_eqv2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfmaxv2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfminv2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulv2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_femms (void);
extern struct rtx_def *gen_pf2id (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pf2iw (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfacc (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfnacc (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfpnacc (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pi2fw (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatv2si2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pavgusb (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfrcpv2sf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfrcpit1v2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfrcpit2v2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfrsqrtv2sf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfrsqit1v2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pmulhrwv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pswapdv2si2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pswapdv2sf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpdi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpsi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmphi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpqi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpdi_1_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpsi_1 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpqi_ext_3 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpxf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmptf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpdf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpsf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movsi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movhi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movstricthi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movqi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_outqi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movstrictqi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movsf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movxf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movtf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendhisi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendqihi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendqisi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendsidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendsidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendsfdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendsfxf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendsftf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extenddfxf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extenddftf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_truncdfsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_truncxfsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_trunctfsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_truncxfdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_trunctfdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncxfdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_trunctfdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncdfdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncsfdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncxfsi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_trunctfsi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncdfsi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncsfsi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncxfhi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_trunctfhi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncdfhi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncsfhi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatsisf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatdisf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatsidf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatdidf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_adddi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addxf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addtf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_adddf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subxf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subtf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subdf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_muldi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umulqihi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulqihi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umulditi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umulsidi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulditi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulsidi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umuldi3_highpart (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umulsi3_highpart (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smuldi3_highpart (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smulsi3_highpart (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulxf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_multf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_muldf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divxf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divtf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divdf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divmoddi4 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divmodsi4 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_udivmodhi4 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_testsi_ccno_1 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_testqi_ccz_1 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_testqi_ext_ccno_0 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_anddi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_andsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_andhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_andqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_iordi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_iorsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_iorhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_iorqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_xordi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_xorsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_xorhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_xorqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_xorqi_cc_ext_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negsi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_neghi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negqi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negxf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negtf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_abssf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_absdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_absxf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_abstf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_one_cmpldi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_one_cmplsi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_one_cmplhi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_one_cmplqi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashldi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_x86_shift_adj_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_x86_shift_adj_2 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashlsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashlhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashlqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_x86_shift_adj_3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_lshrdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_lshrsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_lshrhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_lshrqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rotldi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rotlsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rotlhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rotlqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rotrdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rotrsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rotrhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rotrqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extv (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extzv (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insv (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_seq (struct rtx_def *);
extern struct rtx_def *gen_sne (struct rtx_def *);
extern struct rtx_def *gen_sgt (struct rtx_def *);
extern struct rtx_def *gen_sgtu (struct rtx_def *);
extern struct rtx_def *gen_slt (struct rtx_def *);
extern struct rtx_def *gen_sltu (struct rtx_def *);
extern struct rtx_def *gen_sge (struct rtx_def *);
extern struct rtx_def *gen_sgeu (struct rtx_def *);
extern struct rtx_def *gen_sle (struct rtx_def *);
extern struct rtx_def *gen_sleu (struct rtx_def *);
extern struct rtx_def *gen_sunordered (struct rtx_def *);
extern struct rtx_def *gen_sordered (struct rtx_def *);
extern struct rtx_def *gen_suneq (struct rtx_def *);
extern struct rtx_def *gen_sunge (struct rtx_def *);
extern struct rtx_def *gen_sungt (struct rtx_def *);
extern struct rtx_def *gen_sunle (struct rtx_def *);
extern struct rtx_def *gen_sunlt (struct rtx_def *);
extern struct rtx_def *gen_sltgt (struct rtx_def *);
extern struct rtx_def *gen_beq (struct rtx_def *);
extern struct rtx_def *gen_bne (struct rtx_def *);
extern struct rtx_def *gen_bgt (struct rtx_def *);
extern struct rtx_def *gen_bgtu (struct rtx_def *);
extern struct rtx_def *gen_blt (struct rtx_def *);
extern struct rtx_def *gen_bltu (struct rtx_def *);
extern struct rtx_def *gen_bge (struct rtx_def *);
extern struct rtx_def *gen_bgeu (struct rtx_def *);
extern struct rtx_def *gen_ble (struct rtx_def *);
extern struct rtx_def *gen_bleu (struct rtx_def *);
extern struct rtx_def *gen_bunordered (struct rtx_def *);
extern struct rtx_def *gen_bordered (struct rtx_def *);
extern struct rtx_def *gen_buneq (struct rtx_def *);
extern struct rtx_def *gen_bunge (struct rtx_def *);
extern struct rtx_def *gen_bungt (struct rtx_def *);
extern struct rtx_def *gen_bunle (struct rtx_def *);
extern struct rtx_def *gen_bunlt (struct rtx_def *);
extern struct rtx_def *gen_bltgt (struct rtx_def *);
extern struct rtx_def *gen_indirect_jump (struct rtx_def *);
extern struct rtx_def *gen_tablejump (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_doloop_end (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
#define GEN_CALL_POP(A,B,C,D) gen_call_pop ((A), (B), (C), (D))
extern struct rtx_def *gen_call_pop (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
#define GEN_CALL(A,B,C,D) gen_call ((A), (B), (C))
extern struct rtx_def *gen_call (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_exp (struct rtx_def *, struct rtx_def *);
#define GEN_CALL_VALUE_POP(A,B,C,D,E) gen_call_value_pop ((A), (B), (C), (D), (E))
extern struct rtx_def *gen_call_value_pop (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
#define GEN_CALL_VALUE(A,B,C,D,E) gen_call_value ((A), (B), (C), (D))
extern struct rtx_def *gen_call_value (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_value_exp (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_untyped_call (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_return (void);
extern struct rtx_def *gen_prologue (void);
extern struct rtx_def *gen_epilogue (void);
extern struct rtx_def *gen_sibcall_epilogue (void);
extern struct rtx_def *gen_eh_return (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ffssi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movstrsi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movstrdi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovdi_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovsi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovsi_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovhi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovhi_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovqi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovqi_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_clrstrsi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_clrstrdi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetdi_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetsi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetsi_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsethi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsethi_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetqi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetqi_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpstrsi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpintqi (struct rtx_def *);
extern struct rtx_def *gen_strlensi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strlendi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdicc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movsicc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movhicc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movsfcc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdfcc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movxfcc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movtfcc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_minsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mindf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_maxsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_maxdf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pro_epilogue_adjust_stack (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_allocate_stack_worker (struct rtx_def *);
extern struct rtx_def *gen_allocate_stack (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_builtin_setjmp_receiver (struct rtx_def *);
extern struct rtx_def *gen_conditional_trap (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movti (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv4sf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv4si (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv2si (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv4hi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv8qi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv2sf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sfence (void);
extern struct rtx_def *gen_sse_prologue_save (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_prefetch (struct rtx_def *, struct rtx_def *, struct rtx_def *);
# 30 "config.h" 2
# 24 "regrename.c" 2
# 1 "system.h" 1
# 24 "system.h"
#define GCC_SYSTEM_H 




#define GCCBUGURL "<URL:http://www.spec.org/>"



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stdarg.h" 1 3 4
# 31 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stdarg.h" 3 4
#define _STDARG_H 
#define _ANSI_STDARG_H_ 

#undef __need___va_list




#define __GNUC_VA_LIST 

# 40 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 50 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stdarg.h" 3 4
#define va_start(v,l) __builtin_va_start(v,l)

#define va_end(v) __builtin_va_end(v)
#define va_arg(v,l) __builtin_va_arg(v,l)


#define va_copy(d,s) __builtin_va_copy(d,s)

#define __va_copy(d,s) __builtin_va_copy(d,s)
# 103 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stdarg.h" 3 4
typedef __gnuc_va_list va_list;





#define _VA_LIST_ 


#define _VA_LIST 


#define _VA_LIST_DEFINED 


#define _VA_LIST_T_H 


#define __va_list__ 
# 34 "system.h" 2
# 47 "system.h"
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 1 3 4
# 39 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#define _STDDEF_H 
#define _STDDEF_H_ 

#define _ANSI_STDDEF_H 
# 132 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#define _PTRDIFF_T 
#define _T_PTRDIFF_ 
#define _T_PTRDIFF 
#define __PTRDIFF_T 
#define _PTRDIFF_T_ 
#define _BSD_PTRDIFF_T_ 
#define ___int_ptrdiff_t_h 
#define _GCC_PTRDIFF_T 
#define _PTRDIFF_T_DECLARED 
#define __DEFINED_ptrdiff_t 



typedef long int ptrdiff_t;
# 158 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_ptrdiff_t
# 185 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#define __size_t__ 
#define __SIZE_T__ 
#define _SIZE_T 
#define _SYS_SIZE_T_H 
#define _T_SIZE_ 
#define _T_SIZE 
#define __SIZE_T 
#define _SIZE_T_ 
#define _BSD_SIZE_T_ 
#define _SIZE_T_DEFINED_ 
#define _SIZE_T_DEFINED 
#define _BSD_SIZE_T_DEFINED_ 
#define _SIZE_T_DECLARED 
#define __DEFINED_size_t 
#define ___int_size_t_h 
#define _GCC_SIZE_T 
#define _SIZET_ 






#define __size_t 





typedef long unsigned int size_t;
# 237 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_size_t
# 267 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#define __wchar_t__ 
#define __WCHAR_T__ 
#define _WCHAR_T 
#define _T_WCHAR_ 
#define _T_WCHAR 
#define __WCHAR_T 
#define _WCHAR_T_ 
#define _BSD_WCHAR_T_ 
#define _WCHAR_T_DEFINED_ 
#define _WCHAR_T_DEFINED 
#define _WCHAR_T_H 
#define ___int_wchar_t_h 
#define __INT_WCHAR_T_H 
#define _GCC_WCHAR_T 
#define _WCHAR_T_DECLARED 
#define __DEFINED_wchar_t 
# 295 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef _BSD_WCHAR_T_
# 329 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
typedef int wchar_t;
# 349 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_wchar_t
# 399 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef NULL




#define NULL ((void *)0)





#undef __need_NULL




#undef offsetof
#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)




#define _GCC_MAX_ALIGN_T 



typedef struct {
  long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
  long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))));
# 436 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
} max_align_t;
# 48 "system.h" 2


# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 1 3 4
# 24 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
#define _STDIO_H 1

#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION 
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 1 3 4
# 31 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 3 4
#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 1 3 4
# 19 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 3 4
#define _FEATURES_H 1
# 127 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 3 4
#undef __USE_ISOC11
#undef __USE_ISOC99
#undef __USE_ISOC95
#undef __USE_ISOCXX11
#undef __USE_POSIX
#undef __USE_POSIX2
#undef __USE_POSIX199309
#undef __USE_POSIX199506
#undef __USE_XOPEN
#undef __USE_XOPEN_EXTENDED
#undef __USE_UNIX98
#undef __USE_XOPEN2K
#undef __USE_XOPEN2KXSI
#undef __USE_XOPEN2K8
#undef __USE_XOPEN2K8XSI
#undef __USE_LARGEFILE
#undef __USE_LARGEFILE64
#undef __USE_FILE_OFFSET64
#undef __USE_MISC
#undef __USE_ATFILE
#undef __USE_DYNAMIC_STACK_SIZE
#undef __USE_GNU
#undef __USE_FORTIFY_LEVEL
#undef __KERNEL_STRICT_NAMES
#undef __GLIBC_USE_ISOC2X
#undef __GLIBC_USE_DEPRECATED_GETS
#undef __GLIBC_USE_DEPRECATED_SCANF
#undef __GLIBC_USE_C2X_STRTOL




#define __KERNEL_STRICT_NAMES 
# 170 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 3 4
#define __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
# 184 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 3 4
#define __glibc_clang_prereq(maj,min) 0



#define __GLIBC_USE(F) __GLIBC_USE_ ## F
# 203 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 3 4
#undef _ISOC95_SOURCE
#define _ISOC95_SOURCE 1
#undef _ISOC99_SOURCE
#define _ISOC99_SOURCE 1
#undef _ISOC11_SOURCE
#define _ISOC11_SOURCE 1
#undef _ISOC2X_SOURCE
#define _ISOC2X_SOURCE 1
#undef _POSIX_SOURCE
#define _POSIX_SOURCE 1
#undef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 200809L
#undef _XOPEN_SOURCE
#define _XOPEN_SOURCE 700
#undef _XOPEN_SOURCE_EXTENDED
#define _XOPEN_SOURCE_EXTENDED 1
#undef _LARGEFILE64_SOURCE
#define _LARGEFILE64_SOURCE 1
#undef _DEFAULT_SOURCE
#define _DEFAULT_SOURCE 1
#undef _ATFILE_SOURCE
#define _ATFILE_SOURCE 1
#undef _DYNAMIC_STACK_SIZE_SOURCE
#define _DYNAMIC_STACK_SIZE_SOURCE 1
# 237 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 3 4
#undef _DEFAULT_SOURCE
#define _DEFAULT_SOURCE 1





#define __GLIBC_USE_ISOC2X 1







#define __USE_ISOC11 1






#define __USE_ISOC99 1






#define __USE_ISOC95 1
# 289 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 3 4
#undef _POSIX_SOURCE
#define _POSIX_SOURCE 1
#undef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 200809L
# 327 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 3 4
#define __USE_POSIX 1



#define __USE_POSIX2 1



#define __USE_POSIX199309 1



#define __USE_POSIX199506 1



#define __USE_XOPEN2K 1
#undef __USE_ISOC95
#define __USE_ISOC95 1
#undef __USE_ISOC99
#define __USE_ISOC99 1



#define __USE_XOPEN2K8 1
#undef _ATFILE_SOURCE
#define _ATFILE_SOURCE 1



#define __USE_XOPEN 1

#define __USE_XOPEN_EXTENDED 1
#define __USE_UNIX98 1
#undef _LARGEFILE_SOURCE
#define _LARGEFILE_SOURCE 1


#define __USE_XOPEN2K8 1
#define __USE_XOPEN2K8XSI 1

#define __USE_XOPEN2K 1
#define __USE_XOPEN2KXSI 1
#undef __USE_ISOC95
#define __USE_ISOC95 1
#undef __USE_ISOC99
#define __USE_ISOC99 1
# 383 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 3 4
#define __USE_LARGEFILE 1



#define __USE_LARGEFILE64 1






# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features-time64.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features-time64.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 1 3 4
# 18 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 3 4
#define __WORDSIZE 64
#define __WORDSIZE_TIME64_COMPAT32 0
# 21 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features-time64.h" 2 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/timesize.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/timesize.h" 3 4
#define __TIMESIZE 64
# 22 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features-time64.h" 2 3 4
# 395 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 2 3 4


#define __USE_MISC 1



#define __USE_ATFILE 1



#define __USE_DYNAMIC_STACK_SIZE 1



#define __USE_GNU 1
# 434 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 3 4
#define __USE_FORTIFY_LEVEL 0







#define __GLIBC_USE_DEPRECATED_GETS 0
# 465 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 3 4
#define __GLIBC_USE_DEPRECATED_SCANF 0
# 474 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 3 4
#define __GLIBC_USE_C2X_STRTOL 1
# 489 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 3 4
#undef __GNU_LIBRARY__
#define __GNU_LIBRARY__ 6



#define __GLIBC__ 2
#define __GLIBC_MINOR__ 38

#define __GLIBC_PREREQ(maj,min) ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))





# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define _SYS_CDEFS_H 1
# 35 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#undef __P
#undef __PMT
# 45 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __glibc_has_attribute(attr) __has_attribute (attr)




#define __glibc_has_builtin(name) __has_builtin (name)




#define __glibc_has_extension(ext) __has_extension (ext)
# 65 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __LEAF , __leaf__
#define __LEAF_ATTR __attribute__ ((__leaf__))
# 79 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __THROW __attribute__ ((__nothrow__ __LEAF))
#define __THROWNL __attribute__ ((__nothrow__))
#define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct
#define __NTHNL(fct) __attribute__ ((__nothrow__)) fct
# 102 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __COLD __attribute__ ((__cold__))
# 125 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __P(args) args
#define __PMT(args) args




#define __CONCAT(x,y) x ## y
#define __STRING(x) #x


#define __ptr_t void *







#define __BEGIN_DECLS 
#define __END_DECLS 




#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
#define __bos0(ptr) __builtin_object_size (ptr, 0)







#define __glibc_objsize0(__o) __bos0 (__o)
#define __glibc_objsize(__o) __bos (__o)
# 212 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __warnattr(msg) __attribute__((__warning__ (msg)))
#define __errordecl(name,msg) extern void name (void) __attribute__((__error__ (msg)))
# 225 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __flexarr []
#define __glibc_c99_flexarr_available 1
# 256 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __REDIRECT(name,proto,alias) name proto __asm__ (__ASMNAME (#alias))






#define __REDIRECT_NTH(name,proto,alias) name proto __asm__ (__ASMNAME (#alias)) __THROW

#define __REDIRECT_NTHNL(name,proto,alias) name proto __asm__ (__ASMNAME (#alias)) __THROWNL


#define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
#define __ASMNAME2(prefix,cname) __STRING (prefix) cname


#define __REDIRECT_FORTIFY __REDIRECT



#define __REDIRECT_FORTIFY_NTH __REDIRECT_NTH
# 298 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __attribute_malloc__ __attribute__ ((__malloc__))







#define __attribute_alloc_size__(params) __attribute__ ((__alloc_size__ params))
# 315 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __attribute_alloc_align__(param) __attribute__ ((__alloc_align__ param))
# 325 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __attribute_pure__ __attribute__ ((__pure__))






#define __attribute_const__ __attribute__ ((__const__))





#define __attribute_maybe_unused__ __attribute__ ((__unused__))
# 347 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __attribute_used__ __attribute__ ((__used__))
#define __attribute_noinline__ __attribute__ ((__noinline__))







#define __attribute_deprecated__ __attribute__ ((__deprecated__))
# 366 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __attribute_deprecated_msg__(msg) __attribute__ ((__deprecated__ (msg)))
# 379 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
# 389 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __attribute_format_strfmon__(a,b) __attribute__ ((__format__ (__strfmon__, a, b)))
# 401 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __attribute_nonnull__(params) __attribute__ ((__nonnull__ params))





#define __nonnull(params) __attribute_nonnull__ (params)






#define __returns_nonnull __attribute__ ((__returns_nonnull__))
# 423 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __attribute_warn_unused_result__ __attribute__ ((__warn_unused_result__))
# 432 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __wur 







#undef __always_inline
#define __always_inline __inline __attribute__ ((__always_inline__))
# 450 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __attribute_artificial__ __attribute__ ((__artificial__))
# 468 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
#define __extern_always_inline extern __always_inline __attribute__ ((__gnu_inline__))
# 478 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __fortify_function __extern_always_inline __attribute_artificial__





#define __va_arg_pack() __builtin_va_arg_pack ()
#define __va_arg_pack_len() __builtin_va_arg_pack_len ()
# 512 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __restrict_arr __restrict
# 527 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __glibc_unlikely(cond) __builtin_expect ((cond), 0)
#define __glibc_likely(cond) __builtin_expect ((cond), 1)
# 549 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __attribute_nonstring__ __attribute__ ((__nonstring__))





#undef __attribute_copy__



#define __attribute_copy__(arg) __attribute__ ((__copy__ (arg)))
# 576 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 1 3 4
# 18 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 3 4
#define __WORDSIZE 64
#define __WORDSIZE_TIME64_COMPAT32 0
# 577 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 2 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/long-double.h" 1 3 4
# 21 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/long-double.h" 3 4
#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
# 578 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 2 3 4
# 634 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __LDBL_REDIR1(name,proto,alias) name proto
#define __LDBL_REDIR(name,proto) name proto
#define __LDBL_REDIR1_NTH(name,proto,alias) name proto __THROW
#define __LDBL_REDIR_NTH(name,proto) name proto __THROW
#define __LDBL_REDIR2_DECL(name) 
#define __LDBL_REDIR_DECL(name) 

#define __REDIRECT_LDBL(name,proto,alias) __REDIRECT (name, proto, alias)
#define __REDIRECT_NTH_LDBL(name,proto,alias) __REDIRECT_NTH (name, proto, alias)
# 653 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __glibc_macro_warning1(message) _Pragma (#message)
#define __glibc_macro_warning(message) __glibc_macro_warning1 (GCC warning message)
# 672 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __HAVE_GENERIC_SELECTION 1
# 683 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __attr_access(x) __attribute__ ((__access__ x))







#define __fortified_attr_access(a,o,s) __attr_access ((a, o, s))


#define __attr_access_none(argno) __attribute__ ((__access__ (__none__, argno)))
# 707 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __attr_dealloc(dealloc,argno) __attribute__ ((__malloc__ (dealloc, argno)))

#define __attr_dealloc_free __attr_dealloc (__builtin_free, 1)
# 718 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/cdefs.h" 3 4
#define __attribute_returns_twice__ __attribute__ ((__returns_twice__))
# 504 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 2 3 4
# 519 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 3 4
#define __USE_EXTERN_INLINES 1







# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/gnu/stubs.h" 1 3 4




# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 1 3 4
# 18 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 3 4
#define __WORDSIZE 64
#define __WORDSIZE_TIME64_COMPAT32 0
# 6 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/gnu/stubs.h" 2 3 4





# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/gnu/stubs-lp64d.h" 1 3 4
# 10 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/gnu/stubs-lp64d.h" 3 4
#define __stub___compat_bdflush 
#define __stub___compat_create_module 
#define __stub___compat_get_kernel_syms 
#define __stub___compat_query_module 
#define __stub___compat_uselib 
#define __stub_chflags 
#define __stub_fchflags 
#define __stub_gtty 
#define __stub_revoke 
#define __stub_setlogin 
#define __stub_sigreturn 
#define __stub_stty 
# 12 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/gnu/stubs.h" 2 3 4
# 528 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/features.h" 2 3 4
# 34 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 2 3 4



#undef __GLIBC_USE_LIB_EXT2


#define __GLIBC_USE_LIB_EXT2 1
# 67 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 3 4
#undef __GLIBC_USE_IEC_60559_BFP_EXT

#define __GLIBC_USE_IEC_60559_BFP_EXT 1



#undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X

#define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1



#undef __GLIBC_USE_IEC_60559_EXT

#define __GLIBC_USE_IEC_60559_EXT 1
# 90 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 3 4
#undef __GLIBC_USE_IEC_60559_FUNCS_EXT

#define __GLIBC_USE_IEC_60559_FUNCS_EXT 1



#undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X

#define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1






#undef __GLIBC_USE_IEC_60559_TYPES_EXT

#define __GLIBC_USE_IEC_60559_TYPES_EXT 1
# 28 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 2 3 4



#define __need_size_t 
#define __need_NULL 
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 1 3 4
# 158 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_ptrdiff_t
# 237 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_size_t
# 349 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_wchar_t
# 399 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef NULL




#define NULL ((void *)0)





#undef __need_NULL




#undef offsetof
#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
# 34 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 2 3 4

#define __need___va_list 


# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types.h" 1 3 4
# 24 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types.h" 3 4
#define _BITS_TYPES_H 1


# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 1 3 4
# 18 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 3 4
#define __WORDSIZE 64
#define __WORDSIZE_TIME64_COMPAT32 0
# 28 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types.h" 2 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/timesize.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/timesize.h" 3 4
#define __TIMESIZE 64
# 29 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types.h" 2 3 4


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


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;

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






typedef __int8_t __int_least8_t;
typedef __uint8_t __uint_least8_t;
typedef __int16_t __int_least16_t;
typedef __uint16_t __uint_least16_t;
typedef __int32_t __int_least32_t;
typedef __uint32_t __uint_least32_t;
typedef __int64_t __int_least64_t;
typedef __uint64_t __uint_least64_t;



typedef long int __quad_t;
typedef unsigned long int __u_quad_t;







typedef long int __intmax_t;
typedef unsigned long int __uintmax_t;
# 109 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types.h" 3 4
#define __S16_TYPE short int
#define __U16_TYPE unsigned short int
#define __S32_TYPE int
#define __U32_TYPE unsigned int
#define __SLONGWORD_TYPE long int
#define __ULONGWORD_TYPE unsigned long int
# 128 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types.h" 3 4
#define __SQUAD_TYPE long int
#define __UQUAD_TYPE unsigned long int
#define __SWORD_TYPE long int
#define __UWORD_TYPE unsigned long int
#define __SLONG32_TYPE int
#define __ULONG32_TYPE unsigned int
#define __S64_TYPE long int
#define __U64_TYPE unsigned long int

#define __STD_TYPE typedef



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/typesizes.h" 1 3 4
# 24 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/typesizes.h" 3 4
#define _BITS_TYPESIZES_H 1
# 40 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/typesizes.h" 3 4
#define __INO_T_TYPE __ULONGWORD_TYPE
#define __OFF_T_TYPE __SLONGWORD_TYPE
#define __RLIM_T_TYPE __ULONGWORD_TYPE
#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
#define __TIME_T_TYPE __SLONGWORD_TYPE
#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE


#define __DEV_T_TYPE __UQUAD_TYPE
#define __UID_T_TYPE __U32_TYPE
#define __GID_T_TYPE __U32_TYPE
#define __INO64_T_TYPE __UQUAD_TYPE
#define __MODE_T_TYPE __U32_TYPE
#define __NLINK_T_TYPE __U32_TYPE
#define __OFF64_T_TYPE __SQUAD_TYPE
#define __PID_T_TYPE __S32_TYPE
#define __RLIM64_T_TYPE __UQUAD_TYPE
#define __BLKCNT64_T_TYPE __SQUAD_TYPE
#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
#define __FSWORD_T_TYPE __SWORD_TYPE
#define __ID_T_TYPE __U32_TYPE
#define __CLOCK_T_TYPE __SLONGWORD_TYPE
#define __USECONDS_T_TYPE __U32_TYPE
#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
#define __DADDR_T_TYPE __S32_TYPE
#define __KEY_T_TYPE __S32_TYPE
#define __CLOCKID_T_TYPE __S32_TYPE
#define __TIMER_T_TYPE void *
#define __BLKSIZE_T_TYPE __S32_TYPE
#define __FSID_T_TYPE struct { int __val[2]; }
#define __SSIZE_T_TYPE __SWORD_TYPE
#define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE
#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE
#define __CPU_MASK_TYPE __ULONGWORD_TYPE





#define __OFF_T_MATCHES_OFF64_T 1


#define __INO_T_MATCHES_INO64_T 1


#define __RLIM_T_MATCHES_RLIM64_T 1


#define __STATFS_MATCHES_STATFS64 1


#define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 (__WORDSIZE == 64)
# 104 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/typesizes.h" 3 4
#define __FD_SETSIZE 1024
# 142 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types.h" 2 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/time64.h" 1 3 4
# 24 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/time64.h" 3 4
#define _BITS_TIME64_H 1





#define __TIME64_T_TYPE __TIME_T_TYPE
# 143 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types.h" 2 3 4


typedef unsigned long int __dev_t;
typedef unsigned int __uid_t;
typedef unsigned int __gid_t;
typedef unsigned long int __ino_t;
typedef unsigned long int __ino64_t;
typedef unsigned int __mode_t;
typedef unsigned int __nlink_t;
typedef long int __off_t;
typedef long int __off64_t;
typedef int __pid_t;
typedef struct { int __val[2]; } __fsid_t;
typedef long int __clock_t;
typedef unsigned long int __rlim_t;
typedef unsigned long int __rlim64_t;
typedef unsigned int __id_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;
typedef long int __suseconds64_t;

typedef int __daddr_t;
typedef int __key_t;


typedef int __clockid_t;


typedef void * __timer_t;


typedef int __blksize_t;




typedef long int __blkcnt_t;
typedef long int __blkcnt64_t;


typedef unsigned long int __fsblkcnt_t;
typedef unsigned long int __fsblkcnt64_t;


typedef unsigned long int __fsfilcnt_t;
typedef unsigned long int __fsfilcnt64_t;


typedef long int __fsword_t;

typedef long int __ssize_t;


typedef long int __syscall_slong_t;

typedef unsigned long int __syscall_ulong_t;



typedef __off64_t __loff_t;
typedef char *__caddr_t;


typedef long int __intptr_t;


typedef unsigned int __socklen_t;




typedef int __sig_atomic_t;
# 226 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types.h" 3 4
#undef __STD_TYPE
# 39 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 2 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/__fpos_t.h" 1 3 4

#define _____fpos_t_defined 1


# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/__mbstate_t.h" 1 3 4

#define ____mbstate_t_defined 1
# 13 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/__mbstate_t.h" 3 4
typedef struct
{
  int __count;
  union
  {
    unsigned int __wch;
    char __wchb[4];
  } __value;
} __mbstate_t;
# 6 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/__fpos_t.h" 2 3 4




typedef struct _G_fpos_t
{
  __off_t __pos;
  __mbstate_t __state;
} __fpos_t;
# 40 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 2 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/__fpos64_t.h" 1 3 4

#define _____fpos64_t_defined 1







typedef struct _G_fpos64_t
{
  __off64_t __pos;
  __mbstate_t __state;
} __fpos64_t;
# 41 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 2 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/__FILE.h" 1 3 4

#define ____FILE_defined 1

struct _IO_FILE;
typedef struct _IO_FILE __FILE;
# 42 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 2 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/FILE.h" 1 3 4

#define __FILE_defined 1

struct _IO_FILE;


typedef struct _IO_FILE FILE;
# 43 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 2 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/struct_FILE.h" 1 3 4
# 19 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/struct_FILE.h" 3 4
#define __struct_FILE_defined 1
# 35 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/struct_FILE.h" 3 4
struct _IO_FILE;
struct _IO_marker;
struct _IO_codecvt;
struct _IO_wide_data;




typedef void _IO_lock_t;





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 _flags2;
  __off_t _old_offset;


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

  _IO_lock_t *_lock;







  __off64_t _offset;

  struct _IO_codecvt *_codecvt;
  struct _IO_wide_data *_wide_data;
  struct _IO_FILE *_freeres_list;
  void *_freeres_buf;
  size_t __pad5;
  int _mode;

  char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
};


#define __getc_unlocked_body(_fp) (__glibc_unlikely ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end) ? __uflow (_fp) : *(unsigned char *) (_fp)->_IO_read_ptr++)



#define __putc_unlocked_body(_ch,_fp) (__glibc_unlikely ((_fp)->_IO_write_ptr >= (_fp)->_IO_write_end) ? __overflow (_fp, (unsigned char) (_ch)) : (unsigned char) (*(_fp)->_IO_write_ptr++ = (_ch)))




#define _IO_EOF_SEEN 0x0010
#define __feof_unlocked_body(_fp) (((_fp)->_flags & _IO_EOF_SEEN) != 0)

#define _IO_ERR_SEEN 0x0020
#define __ferror_unlocked_body(_fp) (((_fp)->_flags & _IO_ERR_SEEN) != 0)

#define _IO_USER_LOCK 0x8000
# 44 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 2 3 4


# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/cookie_io_functions_t.h" 1 3 4
# 19 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/cookie_io_functions_t.h" 3 4
#define __cookie_io_functions_t_defined 1







typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf,
                                          size_t __nbytes);







typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf,
                                           size_t __nbytes);







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


typedef int cookie_close_function_t (void *__cookie);






typedef struct _IO_cookie_io_functions_t
{
  cookie_read_function_t *read;
  cookie_write_function_t *write;
  cookie_seek_function_t *seek;
  cookie_close_function_t *close;
} cookie_io_functions_t;
# 47 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 2 3 4
# 63 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
typedef __off_t off_t;



#define __off_t_defined 


typedef __off64_t off64_t;
#define __off64_t_defined 





typedef __ssize_t ssize_t;
#define __ssize_t_defined 





typedef __fpos_t fpos_t;




typedef __fpos64_t fpos64_t;



#define _IOFBF 0
#define _IOLBF 1
#define _IONBF 2



#define BUFSIZ 8192




#define EOF (-1)




#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2

#define SEEK_DATA 3
#define SEEK_HOLE 4





#define P_tmpdir "/tmp"


#define L_tmpnam 20
#define TMP_MAX 238328



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stdio_lim.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stdio_lim.h" 3 4
#define _BITS_STDIO_LIM_H 1





#define FILENAME_MAX 4096
# 129 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 2 3 4


#define L_ctermid 9

#define L_cuserid 9



#undef FOPEN_MAX
#define FOPEN_MAX 16




#define _PRINTF_NAN_LEN_MAX 4




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

#define stdin stdin
#define stdout stdout
#define stderr stderr


extern int remove (const char *__filename) __attribute__ ((__nothrow__ , __leaf__));

extern int rename (const char *__old, const char *__new) __attribute__ ((__nothrow__ , __leaf__));



extern int renameat (int __oldfd, const char *__old, int __newfd,
       const char *__new) __attribute__ ((__nothrow__ , __leaf__));




#define RENAME_NOREPLACE (1 << 0)
#define RENAME_EXCHANGE (1 << 1)
#define RENAME_WHITEOUT (1 << 2)



extern int renameat2 (int __oldfd, const char *__old, int __newfd,
        const char *__new, unsigned int __flags) __attribute__ ((__nothrow__ , __leaf__));






extern int fclose (FILE *__stream) __attribute__ ((__nonnull__ (1)));

#undef __attr_dealloc_fclose
#define __attr_dealloc_fclose __attr_dealloc (fclose, 1)






extern FILE *tmpfile (void)
  __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) ;
# 205 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern FILE *tmpfile64 (void)
   __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) ;



extern char *tmpnam (char[20]) __attribute__ ((__nothrow__ , __leaf__)) ;




extern char *tmpnam_r (char __s[20]) __attribute__ ((__nothrow__ , __leaf__)) ;
# 227 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern char *tempnam (const char *__dir, const char *__pfx)
   __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (__builtin_free, 1)));






extern int fflush (FILE *__stream);
# 244 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern int fflush_unlocked (FILE *__stream);
# 254 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern int fcloseall (void);
# 263 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern FILE *fopen (const char *__restrict __filename,
      const char *__restrict __modes)
  __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) ;




extern FILE *freopen (const char *__restrict __filename,
        const char *__restrict __modes,
        FILE *__restrict __stream) __attribute__ ((__nonnull__ (3)));
# 288 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern FILE *fopen64 (const char *__restrict __filename,
        const char *__restrict __modes)
  __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) ;
extern FILE *freopen64 (const char *__restrict __filename,
   const char *__restrict __modes,
   FILE *__restrict __stream) __attribute__ ((__nonnull__ (3)));




extern FILE *fdopen (int __fd, const char *__modes) __attribute__ ((__nothrow__ , __leaf__))
  __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) ;





extern FILE *fopencookie (void *__restrict __magic_cookie,
     const char *__restrict __modes,
     cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__ , __leaf__))
  __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) ;




extern FILE *fmemopen (void *__s, size_t __len, const char *__modes)
  __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) ;




extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__ , __leaf__))
  __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) ;
# 333 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));



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




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


extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));







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, ...) __attribute__ ((__nothrow__));





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) __attribute__ ((__nothrow__));



extern int snprintf (char *__restrict __s, size_t __maxlen,
       const char *__restrict __format, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));

extern int vsnprintf (char *__restrict __s, size_t __maxlen,
        const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));





extern int vasprintf (char **__restrict __ptr, const char *__restrict __f,
        __gnuc_va_list __arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) ;
extern int __asprintf (char **__restrict __ptr,
         const char *__restrict __fmt, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
extern int asprintf (char **__restrict __ptr,
       const char *__restrict __fmt, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;




extern int vdprintf (int __fd, const char *__restrict __fmt,
       __gnuc_va_list __arg)
     __attribute__ ((__format__ (__printf__, 2, 0)));
extern int dprintf (int __fd, const char *__restrict __fmt, ...)
     __attribute__ ((__format__ (__printf__, 2, 3)));







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, ...) __attribute__ ((__nothrow__ , __leaf__));





# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn.h" 3 4
#define _BITS_FLOATN_H 


# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/long-double.h" 1 3 4
# 21 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/long-double.h" 3 4
#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
# 24 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn.h" 2 3 4





#define __HAVE_FLOAT128 1
# 40 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn.h" 3 4
#define __HAVE_DISTINCT_FLOAT128 0




#define __HAVE_FLOAT64X __HAVE_FLOAT128





#define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128
# 62 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn.h" 3 4
#define __f128(x) x ##f128
# 71 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn.h" 3 4
#define __CFLOAT128 _Complex _Float128
# 95 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn-common.h" 1 3 4
# 21 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn-common.h" 3 4
#define _BITS_FLOATN_COMMON_H 


# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/long-double.h" 1 3 4
# 21 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/long-double.h" 3 4
#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
# 25 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn-common.h" 2 3 4
# 34 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn-common.h" 3 4
#define __HAVE_FLOAT16 0
#define __HAVE_FLOAT32 1
#define __HAVE_FLOAT64 1
#define __HAVE_FLOAT32X 1
#define __HAVE_FLOAT128X 0
# 52 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn-common.h" 3 4
#define __HAVE_DISTINCT_FLOAT16 __HAVE_FLOAT16
#define __HAVE_DISTINCT_FLOAT32 0
#define __HAVE_DISTINCT_FLOAT64 0
#define __HAVE_DISTINCT_FLOAT32X 0
#define __HAVE_DISTINCT_FLOAT64X 0
#define __HAVE_DISTINCT_FLOAT128X __HAVE_FLOAT128X





#define __HAVE_FLOAT128_UNLIKE_LDBL (__HAVE_DISTINCT_FLOAT128 && __LDBL_MANT_DIG__ != 113)






#define __HAVE_FLOATN_NOT_TYPEDEF 1
# 93 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn-common.h" 3 4
#define __f32(x) x ##f32
# 105 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn-common.h" 3 4
#define __f64(x) x ##f64







#define __f32x(x) x ##f32x
# 125 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn-common.h" 3 4
#define __f64x(x) x ##f64x
# 151 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn-common.h" 3 4
#define __CFLOAT32 _Complex _Float32
# 163 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn-common.h" 3 4
#define __CFLOAT64 _Complex _Float64







#define __CFLOAT32X _Complex _Float32x
# 183 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn-common.h" 3 4
#define __CFLOAT64X _Complex _Float64x
# 96 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/floatn.h" 2 3 4
# 436 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 2 3 4




extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc23_fscanf")

                               ;
extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc23_scanf")
                              ;
extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) __asm__ ("" "__isoc23_sscanf") __attribute__ ((__nothrow__ , __leaf__))

                      ;
# 486 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern int vfscanf (FILE *__restrict __s, const char *__restrict __format,
      __gnuc_va_list __arg)
     __attribute__ ((__format__ (__scanf__, 2, 0))) ;





extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__format__ (__scanf__, 1, 0))) ;


extern int vsscanf (const char *__restrict __s,
      const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__scanf__, 2, 0)));






extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vfscanf")



     __attribute__ ((__format__ (__scanf__, 2, 0))) ;
extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vscanf")

     __attribute__ ((__format__ (__scanf__, 1, 0))) ;
extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc23_vsscanf") __attribute__ ((__nothrow__ , __leaf__))



     __attribute__ ((__format__ (__scanf__, 2, 0)));
# 571 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/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);
# 596 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern int fgetc_unlocked (FILE *__stream);
# 607 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern int fputc (int __c, FILE *__stream);
extern int putc (int __c, FILE *__stream);





extern int putchar (int __c);
# 623 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
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)
     __attribute__ ((__access__ (__write_only__, 1, 2)));
# 673 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern char *fgets_unlocked (char *__restrict __s, int __n,
        FILE *__restrict __stream)
    __attribute__ ((__access__ (__write_only__, 1, 2)));
# 690 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern __ssize_t __getdelim (char **__restrict __lineptr,
                             size_t *__restrict __n, int __delimiter,
                             FILE *__restrict __stream) ;
extern __ssize_t getdelim (char **__restrict __lineptr,
                           size_t *__restrict __n, int __delimiter,
                           FILE *__restrict __stream) ;







extern __ssize_t getline (char **__restrict __lineptr,
                          size_t *__restrict __n,
                          FILE *__restrict __stream) ;







extern int fputs (const char *__restrict __s, FILE *__restrict __stream);





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);
# 749 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern int fputs_unlocked (const char *__restrict __s,
      FILE *__restrict __stream);
# 760 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
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);
# 794 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern int fseeko (FILE *__stream, __off_t __off, int __whence);




extern __off_t ftello (FILE *__stream) ;
# 818 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);




extern int fsetpos (FILE *__stream, const fpos_t *__pos);
# 837 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
extern __off64_t ftello64 (FILE *__stream) ;
extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos);



extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));

extern int feof (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;

extern int ferror (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;



extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;







extern void perror (const char *__s) __attribute__ ((__cold__));




extern int fileno (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;




extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
# 881 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern int pclose (FILE *__stream);





extern FILE *popen (const char *__command, const char *__modes)
  __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (pclose, 1))) ;






extern char *ctermid (char *__s) __attribute__ ((__nothrow__ , __leaf__))
  __attribute__ ((__access__ (__write_only__, 1)));





extern char *cuserid (char *__s)
  __attribute__ ((__access__ (__write_only__, 1)));




struct obstack;


extern int obstack_printf (struct obstack *__restrict __obstack,
      const char *__restrict __format, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3)));
extern int obstack_vprintf (struct obstack *__restrict __obstack,
       const char *__restrict __format,
       __gnuc_va_list __args)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0)));







extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));



extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;


extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
# 943 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
extern int __uflow (FILE *);
extern int __overflow (FILE *, int);
# 960 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stdio.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stdio.h" 3 4
#define _BITS_STDIO_H 1
# 29 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stdio.h" 3 4
#define __STDIO_INLINE __extern_inline
# 38 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stdio.h" 3 4
extern __inline __attribute__ ((__gnu_inline__)) int
vprintf (const char *__restrict __fmt, __gnuc_va_list __arg)
{
  return vfprintf (stdout, __fmt, __arg);
}



extern __inline __attribute__ ((__gnu_inline__)) int
getchar (void)
{
  return getc (stdin);
}




extern __inline __attribute__ ((__gnu_inline__)) int
fgetc_unlocked (FILE *__fp)
{
  return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}





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


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




extern __inline __attribute__ ((__gnu_inline__)) int
putchar (int __c)
{
  return putc (__c, stdout);
}




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





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


extern __inline __attribute__ ((__gnu_inline__)) int
putchar_unlocked (int __c)
{
  return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
}





extern __inline __attribute__ ((__gnu_inline__)) __ssize_t
getline (char **__lineptr, size_t *__n, FILE *__stream)
{
  return __getdelim (__lineptr, __n, '\n', __stream);
}





extern __inline __attribute__ ((__gnu_inline__)) int
__attribute__ ((__nothrow__ , __leaf__)) feof_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x0010) != 0);
}


extern __inline __attribute__ ((__gnu_inline__)) int
__attribute__ ((__nothrow__ , __leaf__)) ferror_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x0020) != 0);
}
# 147 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stdio.h" 3 4
#define fread_unlocked(ptr,size,n,stream) (__extension__ ((__builtin_constant_p (size) && __builtin_constant_p (n) && (size_t) (size) * (size_t) (n) <= 8 && (size_t) (size) != 0) ? ({ char *__ptr = (char *) (ptr); FILE *__stream = (stream); size_t __cnt; for (__cnt = (size_t) (size) * (size_t) (n); __cnt > 0; --__cnt) { int __c = getc_unlocked (__stream); if (__c == EOF) break; *__ptr++ = __c; } ((size_t) (size) * (size_t) (n) - __cnt) / (size_t) (size); }) : (((__builtin_constant_p (size) && (size_t) (size) == 0) || (__builtin_constant_p (n) && (size_t) (n) == 0)) ? ((void) (ptr), (void) (stream), (void) (size), (void) (n), (size_t) 0) : fread_unlocked (ptr, size, n, stream))))
# 171 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stdio.h" 3 4
#define fwrite_unlocked(ptr,size,n,stream) (__extension__ ((__builtin_constant_p (size) && __builtin_constant_p (n) && (size_t) (size) * (size_t) (n) <= 8 && (size_t) (size) != 0) ? ({ const char *__ptr = (const char *) (ptr); FILE *__stream = (stream); size_t __cnt; for (__cnt = (size_t) (size) * (size_t) (n); __cnt > 0; --__cnt) if (putc_unlocked (*__ptr++, __stream) == EOF) break; ((size_t) (size) * (size_t) (n) - __cnt) / (size_t) (size); }) : (((__builtin_constant_p (size) && (size_t) (size) == 0) || (__builtin_constant_p (n) && (size_t) (n) == 0)) ? ((void) (ptr), (void) (stream), (void) (size), (void) (n), (size_t) 0) : fwrite_unlocked (ptr, size, n, stream))))
# 193 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stdio.h" 3 4
#undef __STDIO_INLINE
# 961 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdio.h" 2 3 4







# 51 "system.h" 2
# 110 "system.h"
# 1 "./safe-ctype.h" 1
# 36 "./safe-ctype.h"
#define SAFE_CTYPE_H 








# 44 "./safe-ctype.h"
enum {

  _sch_isblank = 0x0001,
  _sch_iscntrl = 0x0002,
  _sch_isdigit = 0x0004,
  _sch_islower = 0x0008,
  _sch_isprint = 0x0010,
  _sch_ispunct = 0x0020,
  _sch_isspace = 0x0040,
  _sch_isupper = 0x0080,
  _sch_isxdigit = 0x0100,


  _sch_isidst = 0x0200,
  _sch_isvsp = 0x0400,
  _sch_isnvsp = 0x0800,


  _sch_isalpha = _sch_isupper|_sch_islower,
  _sch_isalnum = _sch_isalpha|_sch_isdigit,
  _sch_isidnum = _sch_isidst|_sch_isdigit,
  _sch_isgraph = _sch_isalnum|_sch_ispunct,
  _sch_iscppsp = _sch_isvsp|_sch_isnvsp,
  _sch_isbasic = _sch_isprint|_sch_iscppsp

};


extern const unsigned short _sch_istable[256];

#define _sch_test(c,bit) (_sch_istable[(c) & 0xff] & (unsigned short)(bit))

#define ISALPHA(c) _sch_test(c, _sch_isalpha)
#define ISALNUM(c) _sch_test(c, _sch_isalnum)
#define ISBLANK(c) _sch_test(c, _sch_isblank)
#define ISCNTRL(c) _sch_test(c, _sch_iscntrl)
#define ISDIGIT(c) _sch_test(c, _sch_isdigit)
#define ISGRAPH(c) _sch_test(c, _sch_isgraph)
#define ISLOWER(c) _sch_test(c, _sch_islower)
#define ISPRINT(c) _sch_test(c, _sch_isprint)
#define ISPUNCT(c) _sch_test(c, _sch_ispunct)
#define ISSPACE(c) _sch_test(c, _sch_isspace)
#define ISUPPER(c) _sch_test(c, _sch_isupper)
#define ISXDIGIT(c) _sch_test(c, _sch_isxdigit)

#define ISIDNUM(c) _sch_test(c, _sch_isidnum)
#define ISIDST(c) _sch_test(c, _sch_isidst)
#define IS_ISOBASIC(c) _sch_test(c, _sch_isbasic)
#define IS_VSPACE(c) _sch_test(c, _sch_isvsp)
#define IS_NVSPACE(c) _sch_test(c, _sch_isnvsp)
#define IS_SPACE_OR_NUL(c) _sch_test(c, _sch_iscppsp)


extern const unsigned char _sch_toupper[256];
extern const unsigned char _sch_tolower[256];
#define TOUPPER(c) _sch_toupper[(c) & 0xff]
#define TOLOWER(c) _sch_tolower[(c) & 0xff]
# 111 "system.h" 2

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/types.h" 1 3 4
# 23 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/types.h" 3 4
#define _SYS_TYPES_H 1










# 33 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/types.h" 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;
#define __u_char_defined 

typedef __loff_t loff_t;




typedef __ino_t ino_t;



#define __ino_t_defined 


typedef __ino64_t ino64_t;
#define __ino64_t_defined 



typedef __dev_t dev_t;
#define __dev_t_defined 



typedef __gid_t gid_t;
#define __gid_t_defined 



typedef __mode_t mode_t;
#define __mode_t_defined 



typedef __nlink_t nlink_t;
#define __nlink_t_defined 



typedef __uid_t uid_t;
#define __uid_t_defined 
# 97 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/types.h" 3 4
typedef __pid_t pid_t;
#define __pid_t_defined 




typedef __id_t id_t;
#define __id_t_defined 
# 114 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/types.h" 3 4
typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;
#define __daddr_t_defined 




typedef __key_t key_t;
#define __key_t_defined 



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/clock_t.h" 1 3 4

#define __clock_t_defined 1




typedef __clock_t clock_t;
# 127 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/types.h" 2 3 4

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/clockid_t.h" 1 3 4

#define __clockid_t_defined 1




typedef __clockid_t clockid_t;
# 129 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/types.h" 2 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/time_t.h" 1 3 4

#define __time_t_defined 1







typedef __time_t time_t;
# 130 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/types.h" 2 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/timer_t.h" 1 3 4

#define __timer_t_defined 1




typedef __timer_t timer_t;
# 131 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/types.h" 2 3 4



typedef __useconds_t useconds_t;
#define __useconds_t_defined 


typedef __suseconds_t suseconds_t;
#define __suseconds_t_defined 



#define __need_size_t 
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 1 3 4
# 158 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_ptrdiff_t
# 237 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_size_t
# 349 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_wchar_t
# 399 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef NULL




#define NULL ((void *)0)





#undef __need_NULL




#undef offsetof
#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
# 145 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/types.h" 2 3 4



typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;




# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stdint-intn.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stdint-intn.h" 3 4
#define _BITS_STDINT_INTN_H 1



typedef __int8_t int8_t;
typedef __int16_t int16_t;
typedef __int32_t int32_t;
typedef __int64_t int64_t;
# 156 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/types.h" 2 3 4


typedef __uint8_t u_int8_t;
typedef __uint16_t u_int16_t;
typedef __uint32_t u_int32_t;
typedef __uint64_t u_int64_t;


typedef int register_t __attribute__ ((__mode__ (__word__)));






#define __BIT_TYPES_DEFINED__ 1




# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/endian.h" 1 3 4
# 19 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/endian.h" 3 4
#define _ENDIAN_H 1




# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/endian.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/endian.h" 3 4
#define _BITS_ENDIAN_H 1
# 30 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/endian.h" 3 4
#define __LITTLE_ENDIAN 1234
#define __BIG_ENDIAN 4321
#define __PDP_ENDIAN 3412


# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/endianness.h" 1 3 4

#define _BITS_ENDIANNESS_H 1






#define __BYTE_ORDER __LITTLE_ENDIAN
# 36 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/endian.h" 2 3 4




#define __FLOAT_WORD_ORDER __BYTE_ORDER



#define __LONG_LONG_PAIR(HI,LO) LO, HI
# 25 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/endian.h" 2 3 4


#define LITTLE_ENDIAN __LITTLE_ENDIAN
#define BIG_ENDIAN __BIG_ENDIAN
#define PDP_ENDIAN __PDP_ENDIAN
#define BYTE_ORDER __BYTE_ORDER




# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/byteswap.h" 1 3 4
# 24 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/byteswap.h" 3 4
#define _BITS_BYTESWAP_H 1





#define __bswap_constant_16(x) ((__uint16_t) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))


static __inline __uint16_t
__bswap_16 (__uint16_t __bsx)
{

  return __builtin_bswap16 (__bsx);



}


#define __bswap_constant_32(x) ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24))



static __inline __uint32_t
__bswap_32 (__uint32_t __bsx)
{

  return __builtin_bswap32 (__bsx);



}


#define __bswap_constant_64(x) ((((x) & 0xff00000000000000ull) >> 56) | (((x) & 0x00ff000000000000ull) >> 40) | (((x) & 0x0000ff0000000000ull) >> 24) | (((x) & 0x000000ff00000000ull) >> 8) | (((x) & 0x00000000ff000000ull) << 8) | (((x) & 0x0000000000ff0000ull) << 24) | (((x) & 0x000000000000ff00ull) << 40) | (((x) & 0x00000000000000ffull) << 56))
# 69 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/byteswap.h" 3 4
__extension__ static __inline __uint64_t
__bswap_64 (__uint64_t __bsx)
{

  return __builtin_bswap64 (__bsx);



}
# 36 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/endian.h" 2 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/uintn-identity.h" 1 3 4
# 24 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/uintn-identity.h" 3 4
#define _BITS_UINTN_IDENTITY_H 1







static __inline __uint16_t
__uint16_identity (__uint16_t __x)
{
  return __x;
}

static __inline __uint32_t
__uint32_identity (__uint32_t __x)
{
  return __x;
}

static __inline __uint64_t
__uint64_identity (__uint64_t __x)
{
  return __x;
}
# 37 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/endian.h" 2 3 4


#define htobe16(x) __bswap_16 (x)
#define htole16(x) __uint16_identity (x)
#define be16toh(x) __bswap_16 (x)
#define le16toh(x) __uint16_identity (x)

#define htobe32(x) __bswap_32 (x)
#define htole32(x) __uint32_identity (x)
#define be32toh(x) __bswap_32 (x)
#define le32toh(x) __uint32_identity (x)

#define htobe64(x) __bswap_64 (x)
#define htole64(x) __uint64_identity (x)
#define be64toh(x) __bswap_64 (x)
#define le64toh(x) __uint64_identity (x)
# 177 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/types.h" 2 3 4


# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/select.h" 1 3 4
# 22 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/select.h" 3 4
#define _SYS_SELECT_H 1







# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/select.h" 1 3 4
# 25 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/select.h" 3 4
#define __FD_ZERO(s) do { unsigned int __i; fd_set *__arr = (s); for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) __FDS_BITS (__arr)[__i] = 0; } while (0)






#define __FD_SET(d,s) ((void) (__FDS_BITS (s)[__FD_ELT(d)] |= __FD_MASK(d)))

#define __FD_CLR(d,s) ((void) (__FDS_BITS (s)[__FD_ELT(d)] &= ~__FD_MASK(d)))

#define __FD_ISSET(d,s) ((__FDS_BITS (s)[__FD_ELT (d)] & __FD_MASK (d)) != 0)
# 31 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/select.h" 2 3 4


# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/sigset_t.h" 1 3 4

#define __sigset_t_defined 1

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/__sigset_t.h" 1 3 4

#define ____sigset_t_defined 

#define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
typedef struct
{
  unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
} __sigset_t;
# 5 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/sigset_t.h" 2 3 4


typedef __sigset_t sigset_t;
# 34 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/select.h" 2 3 4



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/struct_timeval.h" 1 3 4

#define __timeval_defined 1





struct timeval
{




  __time_t tv_sec;
  __suseconds_t tv_usec;

};
# 38 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/select.h" 2 3 4

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/struct_timespec.h" 1 3 4


#define _STRUCT_TIMESPEC 1







struct timespec
{



  __time_t tv_sec;




  __syscall_slong_t tv_nsec;
# 31 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/struct_timespec.h" 3 4
};
# 40 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/select.h" 2 3 4
# 49 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/select.h" 3 4
typedef long int __fd_mask;


#undef __NFDBITS

#define __NFDBITS (8 * (int) sizeof (__fd_mask))
#define __FD_ELT(d) ((d) / __NFDBITS)
#define __FD_MASK(d) ((__fd_mask) (1UL << ((d) % __NFDBITS)))


typedef struct
  {



    __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))];
#define __FDS_BITS(set) ((set)->fds_bits)




  } fd_set;


#define FD_SETSIZE __FD_SETSIZE



typedef __fd_mask fd_mask;


#define NFDBITS __NFDBITS




#define FD_SET(fd,fdsetp) __FD_SET (fd, fdsetp)
#define FD_CLR(fd,fdsetp) __FD_CLR (fd, fdsetp)
#define FD_ISSET(fd,fdsetp) __FD_ISSET (fd, fdsetp)
#define FD_ZERO(fdsetp) __FD_ZERO (fdsetp)



# 102 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/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);
# 127 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/select.h" 3 4
extern int pselect (int __nfds, fd_set *__restrict __readfds,
      fd_set *__restrict __writefds,
      fd_set *__restrict __exceptfds,
      const struct timespec *__restrict __timeout,
      const __sigset_t *__restrict __sigmask);
# 153 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/select.h" 3 4

# 180 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/types.h" 2 3 4





typedef __blksize_t blksize_t;
#define __blksize_t_defined 





typedef __blkcnt_t blkcnt_t;
#define __blkcnt_t_defined 


typedef __fsblkcnt_t fsblkcnt_t;
#define __fsblkcnt_t_defined 


typedef __fsfilcnt_t fsfilcnt_t;
#define __fsfilcnt_t_defined 
# 219 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/types.h" 3 4
typedef __blkcnt64_t blkcnt64_t;
typedef __fsblkcnt64_t fsblkcnt64_t;
typedef __fsfilcnt64_t fsfilcnt64_t;





# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h" 3 4
#define _BITS_PTHREADTYPES_COMMON_H 1


# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/thread-shared-types.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/thread-shared-types.h" 3 4
#define _THREAD_SHARED_TYPES_H 1
# 44 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/thread-shared-types.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/pthreadtypes-arch.h" 1 3 4
# 21 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/pthreadtypes-arch.h" 3 4
#define _BITS_PTHREADTYPES_ARCH_H 1

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 1 3 4
# 18 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 3 4
#define __WORDSIZE 64
#define __WORDSIZE_TIME64_COMPAT32 0
# 24 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/pthreadtypes-arch.h" 2 3 4


#define __SIZEOF_PTHREAD_ATTR_T 56
#define __SIZEOF_PTHREAD_MUTEX_T 40
#define __SIZEOF_PTHREAD_RWLOCK_T 56
#define __SIZEOF_PTHREAD_BARRIER_T 32






#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
#define __SIZEOF_PTHREAD_COND_T 48
#define __SIZEOF_PTHREAD_CONDATTR_T 4

#define __LOCK_ALIGNMENT 
#define __ONCE_ALIGNMENT 
# 45 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/thread-shared-types.h" 2 3 4

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/atomic_wide_counter.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/atomic_wide_counter.h" 3 4
#define _BITS_ATOMIC_WIDE_COUNTER_H 




typedef union
{
  __extension__ unsigned long long int __value64;
  struct
  {
    unsigned int __low;
    unsigned int __high;
  } __value32;
} __atomic_wide_counter;
# 47 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/thread-shared-types.h" 2 3 4




typedef struct __pthread_internal_list
{
  struct __pthread_internal_list *__prev;
  struct __pthread_internal_list *__next;
} __pthread_list_t;

typedef struct __pthread_internal_slist
{
  struct __pthread_internal_slist *__next;
} __pthread_slist_t;
# 76 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/thread-shared-types.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/struct_mutex.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/struct_mutex.h" 3 4
#define _THREAD_MUTEX_INTERNAL_H 1






struct __pthread_mutex_s
{
  int __lock ;
  unsigned int __count;
  int __owner;

  unsigned int __nusers;
# 58 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/struct_mutex.h" 3 4
  int __kind;




  int __spins;
  __pthread_list_t __list;
#define __PTHREAD_MUTEX_HAVE_PREV 1
# 74 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/struct_mutex.h" 3 4
};


#define __PTHREAD_MUTEX_INITIALIZER(__kind) 0, 0, 0, 0, __kind, 0, { 0, 0 }
# 77 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/thread-shared-types.h" 2 3 4
# 89 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/thread-shared-types.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/struct_rwlock.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/struct_rwlock.h" 3 4
#define __RWLOCK_INTERNAL_H 
# 29 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/struct_rwlock.h" 3 4
struct __pthread_rwlock_arch_t
{
  unsigned int __readers;
  unsigned int __writers;
  unsigned int __wrphase_futex;
  unsigned int __writers_futex;
  unsigned int __pad3;
  unsigned int __pad4;
# 45 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/struct_rwlock.h" 3 4
  unsigned char __flags;
  unsigned char __shared;
  unsigned char __pad1;
  unsigned char __pad2;

  int __cur_writer;
};





#define __PTHREAD_RWLOCK_INITIALIZER(__flags) 0, 0, 0, 0, 0, 0, __flags, 0, 0, 0, 0
# 90 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/thread-shared-types.h" 2 3 4




struct __pthread_cond_s
{
  __atomic_wide_counter __wseq;
  __atomic_wide_counter __g1_start;
  unsigned int __g_refs[2] ;
  unsigned int __g_size[2];
  unsigned int __g1_orig_size;
  unsigned int __wrefs;
  unsigned int __g_signals[2];
};

typedef unsigned int __tss_t;
typedef unsigned long int __thrd_t;

typedef struct
{
  int __data ;
} __once_flag;

#define __ONCE_FLAG_INIT { 0 }
# 24 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/pthreadtypes.h" 2 3 4



typedef unsigned long int pthread_t;




typedef union
{
  char __size[4];
  int __align;
} pthread_mutexattr_t;




typedef union
{
  char __size[4];
  int __align;
} pthread_condattr_t;



typedef unsigned int pthread_key_t;



typedef int pthread_once_t;


union pthread_attr_t
{
  char __size[56];
  long int __align;
};

typedef union pthread_attr_t pthread_attr_t;
#define __have_pthread_attr_t 1



typedef union
{
  struct __pthread_mutex_s __data;
  char __size[40];
  long int __align;
} pthread_mutex_t;


typedef union
{
  struct __pthread_cond_s __data;
  char __size[48];
  __extension__ long long int __align;
} pthread_cond_t;





typedef union
{
  struct __pthread_rwlock_arch_t __data;
  char __size[56];
  long int __align;
} pthread_rwlock_t;

typedef union
{
  char __size[8];
  long int __align;
} pthread_rwlockattr_t;





typedef volatile int pthread_spinlock_t;




typedef union
{
  char __size[32];
  long int __align;
} pthread_barrier_t;

typedef union
{
  char __size[4];
  int __align;
} pthread_barrierattr_t;
# 228 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/types.h" 2 3 4



# 113 "system.h" 2

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/errno.h" 1 3 4
# 23 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/errno.h" 3 4
#define _ERRNO_H 1




# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/errno.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/errno.h" 3 4
#define _BITS_ERRNO_H 1





# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/errno.h" 1 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm/errno.h" 1 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm-generic/errno.h" 1 3 4


#define _ASM_GENERIC_ERRNO_H 

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm-generic/errno-base.h" 1 3 4


#define _ASM_GENERIC_ERRNO_BASE_H 

#define EPERM 1
#define ENOENT 2
#define ESRCH 3
#define EINTR 4
#define EIO 5
#define ENXIO 6
#define E2BIG 7
#define ENOEXEC 8
#define EBADF 9
#define ECHILD 10
#define EAGAIN 11
#define ENOMEM 12
#define EACCES 13
#define EFAULT 14
#define ENOTBLK 15
#define EBUSY 16
#define EEXIST 17
#define EXDEV 18
#define ENODEV 19
#define ENOTDIR 20
#define EISDIR 21
#define EINVAL 22
#define ENFILE 23
#define EMFILE 24
#define ENOTTY 25
#define ETXTBSY 26
#define EFBIG 27
#define ENOSPC 28
#define ESPIPE 29
#define EROFS 30
#define EMLINK 31
#define EPIPE 32
#define EDOM 33
#define ERANGE 34
# 6 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm-generic/errno.h" 2 3 4

#define EDEADLK 35
#define ENAMETOOLONG 36
#define ENOLCK 37
# 18 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm-generic/errno.h" 3 4
#define ENOSYS 38

#define ENOTEMPTY 39
#define ELOOP 40
#define EWOULDBLOCK EAGAIN
#define ENOMSG 42
#define EIDRM 43
#define ECHRNG 44
#define EL2NSYNC 45
#define EL3HLT 46
#define EL3RST 47
#define ELNRNG 48
#define EUNATCH 49
#define ENOCSI 50
#define EL2HLT 51
#define EBADE 52
#define EBADR 53
#define EXFULL 54
#define ENOANO 55
#define EBADRQC 56
#define EBADSLT 57

#define EDEADLOCK EDEADLK

#define EBFONT 59
#define ENOSTR 60
#define ENODATA 61
#define ETIME 62
#define ENOSR 63
#define ENONET 64
#define ENOPKG 65
#define EREMOTE 66
#define ENOLINK 67
#define EADV 68
#define ESRMNT 69
#define ECOMM 70
#define EPROTO 71
#define EMULTIHOP 72
#define EDOTDOT 73
#define EBADMSG 74
#define EOVERFLOW 75
#define ENOTUNIQ 76
#define EBADFD 77
#define EREMCHG 78
#define ELIBACC 79
#define ELIBBAD 80
#define ELIBSCN 81
#define ELIBMAX 82
#define ELIBEXEC 83
#define EILSEQ 84
#define ERESTART 85
#define ESTRPIPE 86
#define EUSERS 87
#define ENOTSOCK 88
#define EDESTADDRREQ 89
#define EMSGSIZE 90
#define EPROTOTYPE 91
#define ENOPROTOOPT 92
#define EPROTONOSUPPORT 93
#define ESOCKTNOSUPPORT 94
#define EOPNOTSUPP 95
#define EPFNOSUPPORT 96
#define EAFNOSUPPORT 97
#define EADDRINUSE 98
#define EADDRNOTAVAIL 99
#define ENETDOWN 100
#define ENETUNREACH 101
#define ENETRESET 102
#define ECONNABORTED 103
#define ECONNRESET 104
#define ENOBUFS 105
#define EISCONN 106
#define ENOTCONN 107
#define ESHUTDOWN 108
#define ETOOMANYREFS 109
#define ETIMEDOUT 110
#define ECONNREFUSED 111
#define EHOSTDOWN 112
#define EHOSTUNREACH 113
#define EALREADY 114
#define EINPROGRESS 115
#define ESTALE 116
#define EUCLEAN 117
#define ENOTNAM 118
#define ENAVAIL 119
#define EISNAM 120
#define EREMOTEIO 121
#define EDQUOT 122

#define ENOMEDIUM 123
#define EMEDIUMTYPE 124
#define ECANCELED 125
#define ENOKEY 126
#define EKEYEXPIRED 127
#define EKEYREVOKED 128
#define EKEYREJECTED 129


#define EOWNERDEAD 130
#define ENOTRECOVERABLE 131

#define ERFKILL 132

#define EHWPOISON 133
# 2 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm/errno.h" 2 3 4
# 2 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/errno.h" 2 3 4
# 27 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/errno.h" 2 3 4



#define ENOTSUP EOPNOTSUPP
# 29 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/errno.h" 2 3 4








extern int *__errno_location (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
#define errno (*__errno_location ())






extern char *program_invocation_name;
extern char *program_invocation_short_name;

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/error_t.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/error_t.h" 3 4
#define __error_t_defined 1

typedef int error_t;
# 49 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/errno.h" 2 3 4




# 115 "system.h" 2
# 125 "system.h"
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 1 3 4
# 23 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 3 4
#define _STRING_H 1

#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION 
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 1 3 4
# 31 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 3 4
#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION





#undef __GLIBC_USE_LIB_EXT2


#define __GLIBC_USE_LIB_EXT2 1
# 67 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 3 4
#undef __GLIBC_USE_IEC_60559_BFP_EXT

#define __GLIBC_USE_IEC_60559_BFP_EXT 1



#undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X

#define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1



#undef __GLIBC_USE_IEC_60559_EXT

#define __GLIBC_USE_IEC_60559_EXT 1
# 90 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 3 4
#undef __GLIBC_USE_IEC_60559_FUNCS_EXT

#define __GLIBC_USE_IEC_60559_FUNCS_EXT 1



#undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X

#define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1






#undef __GLIBC_USE_IEC_60559_TYPES_EXT

#define __GLIBC_USE_IEC_60559_TYPES_EXT 1
# 27 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 2 3 4




#define __need_size_t 
#define __need_NULL 
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 1 3 4
# 158 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_ptrdiff_t
# 237 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_size_t
# 349 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_wchar_t
# 399 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef NULL




#define NULL ((void *)0)





#undef __need_NULL




#undef offsetof
#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
# 34 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 2 3 4
# 43 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 3 4
extern void *memcpy (void *__restrict __dest, const void *__restrict __src,
       size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern void *memmove (void *__dest, const void *__src, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));





extern void *memccpy (void *__restrict __dest, const void *__restrict __src,
        int __c, size_t __n)
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 4)));




extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int memcmp (const void *__s1, const void *__s2, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 80 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 3 4
extern int __memcmpeq (const void *__s1, const void *__s2, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 107 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 3 4
extern void *memchr (const void *__s, int __c, size_t __n)
      __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 120 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 3 4
extern void *rawmemchr (const void *__s, int __c)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 133 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 3 4
extern void *memrchr (const void *__s, int __c, size_t __n)
      __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)))
      __attribute__ ((__access__ (__read_only__, 1, 3)));





extern char *strcpy (char *__restrict __dest, const char *__restrict __src)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));

extern char *strncpy (char *__restrict __dest,
        const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern char *strcat (char *__restrict __dest, const char *__restrict __src)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));

extern char *strncat (char *__restrict __dest, const char *__restrict __src,
        size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strcmp (const char *__s1, const char *__s2)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));

extern int strncmp (const char *__s1, const char *__s2, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strcoll (const char *__s1, const char *__s2)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));

extern size_t strxfrm (char *__restrict __dest,
         const char *__restrict __src, size_t __n)
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 1, 3)));



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/locale_t.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/locale_t.h" 3 4
#define _BITS_TYPES_LOCALE_T_H 1

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/__locale_t.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/__locale_t.h" 3 4
#define _BITS_TYPES___LOCALE_T_H 1






struct __locale_struct
{

  struct __locale_data *__locales[13];


  const unsigned short int *__ctype_b;
  const int *__ctype_tolower;
  const int *__ctype_toupper;


  const char *__names[13];
};

typedef struct __locale_struct *__locale_t;
# 23 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/locale_t.h" 2 3 4

typedef __locale_t locale_t;
# 173 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 2 3 4


extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));


extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n,
    locale_t __l) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4)))
     __attribute__ ((__access__ (__write_only__, 1, 3)));





extern char *strdup (const char *__s)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));






extern char *strndup (const char *__string, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));




#define strdupa(s) (__extension__ ({ const char *__old = (s); size_t __len = strlen (__old) + 1; char *__new = (char *) __builtin_alloca (__len); (char *) memcpy (__new, __old, __len); }))
# 211 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 3 4
#define strndupa(s,n) (__extension__ ({ const char *__old = (s); size_t __len = strnlen (__old, (n)); char *__new = (char *) __builtin_alloca (__len + 1); __new[__len] = '\0'; (char *) memcpy (__new, __old, __len); }))
# 246 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 3 4
extern char *strchr (const char *__s, int __c)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 273 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 3 4
extern char *strrchr (const char *__s, int __c)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 286 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 3 4
extern char *strchrnul (const char *__s, int __c)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));





extern size_t strcspn (const char *__s, const char *__reject)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern size_t strspn (const char *__s, const char *__accept)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 323 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 3 4
extern char *strpbrk (const char *__s, const char *__accept)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 350 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 3 4
extern char *strstr (const char *__haystack, const char *__needle)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));




extern char *strtok (char *__restrict __s, const char *__restrict __delim)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));



extern char *__strtok_r (char *__restrict __s,
    const char *__restrict __delim,
    char **__restrict __save_ptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));

extern char *strtok_r (char *__restrict __s, const char *__restrict __delim,
         char **__restrict __save_ptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
# 380 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 3 4
extern char *strcasestr (const char *__haystack, const char *__needle)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));







extern void *memmem (const void *__haystack, size_t __haystacklen,
       const void *__needle, size_t __needlelen)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)))
    __attribute__ ((__access__ (__read_only__, 1, 2)))
    __attribute__ ((__access__ (__read_only__, 3, 4)));



extern void *__mempcpy (void *__restrict __dest,
   const void *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *mempcpy (void *__restrict __dest,
        const void *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));




extern size_t strlen (const char *__s)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));




extern size_t strnlen (const char *__string, size_t __maxlen)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));




extern char *strerror (int __errnum) __attribute__ ((__nothrow__ , __leaf__));
# 444 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 3 4
extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3)));




extern const char *strerrordesc_np (int __err) __attribute__ ((__nothrow__ , __leaf__));

extern const char *strerrorname_np (int __err) __attribute__ ((__nothrow__ , __leaf__));





extern char *strerror_l (int __errnum, locale_t __l) __attribute__ ((__nothrow__ , __leaf__));



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/strings.h" 1 3 4
# 19 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/strings.h" 3 4
#define _STRINGS_H 1


#define __need_size_t 
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 1 3 4
# 158 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_ptrdiff_t
# 237 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_size_t
# 349 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_wchar_t
# 399 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef NULL




#define NULL ((void *)0)





#undef __need_NULL




#undef offsetof
#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
# 24 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/strings.h" 2 3 4










extern int bcmp (const void *__s1, const void *__s2, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern void bcopy (const void *__src, void *__dest, size_t __n)
  __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 68 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/strings.h" 3 4
extern char *index (const char *__s, int __c)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 96 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/strings.h" 3 4
extern char *rindex (const char *__s, int __c)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));






extern int ffs (int __i) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));





extern int ffsl (long int __l) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
__extension__ extern int ffsll (long long int __ll)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));



extern int strcasecmp (const char *__s1, const char *__s2)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strncasecmp (const char *__s1, const char *__s2, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));






extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));



extern int strncasecmp_l (const char *__s1, const char *__s2,
     size_t __n, locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));



# 463 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 2 3 4



extern void explicit_bzero (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)))
    __attribute__ ((__access__ (__write_only__, 1, 2)));



extern char *strsep (char **__restrict __stringp,
       const char *__restrict __delim)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));




extern char *strsignal (int __sig) __attribute__ ((__nothrow__ , __leaf__));



extern const char *sigabbrev_np (int __sig) __attribute__ ((__nothrow__ , __leaf__));


extern const char *sigdescr_np (int __sig) __attribute__ ((__nothrow__ , __leaf__));



extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *stpcpy (char *__restrict __dest, const char *__restrict __src)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));



extern char *__stpncpy (char *__restrict __dest,
   const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *stpncpy (char *__restrict __dest,
        const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));




extern size_t strlcpy (char *__restrict __dest,
         const char *__restrict __src, size_t __n)
  __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 3)));



extern size_t strlcat (char *__restrict __dest,
         const char *__restrict __src, size_t __n)
  __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__read_write__, 1, 3)));




extern int strverscmp (const char *__s1, const char *__s2)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern char *strfry (char *__string) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)))
    __attribute__ ((__access__ (__read_write__, 1, 2)));
# 540 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 3 4
extern char *basename (const char *__filename) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 552 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/string.h" 3 4

# 126 "system.h" 2
# 134 "system.h"
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 1 3 4
# 25 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION 
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 1 3 4
# 31 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 3 4
#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION





#undef __GLIBC_USE_LIB_EXT2


#define __GLIBC_USE_LIB_EXT2 1
# 67 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 3 4
#undef __GLIBC_USE_IEC_60559_BFP_EXT

#define __GLIBC_USE_IEC_60559_BFP_EXT 1



#undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X

#define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1



#undef __GLIBC_USE_IEC_60559_EXT

#define __GLIBC_USE_IEC_60559_EXT 1
# 90 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 3 4
#undef __GLIBC_USE_IEC_60559_FUNCS_EXT

#define __GLIBC_USE_IEC_60559_FUNCS_EXT 1



#undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X

#define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1






#undef __GLIBC_USE_IEC_60559_TYPES_EXT

#define __GLIBC_USE_IEC_60559_TYPES_EXT 1
# 27 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 2 3 4


#define __need_size_t 
#define __need_wchar_t 
#define __need_NULL 
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 1 3 4
# 158 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_ptrdiff_t
# 237 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_size_t
# 349 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_wchar_t
# 399 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef NULL




#define NULL ((void *)0)





#undef __need_NULL




#undef offsetof
#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
# 33 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 2 3 4



#define _STDLIB_H 1



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/waitflags.h" 1 3 4
# 25 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/waitflags.h" 3 4
#define WNOHANG 1
#define WUNTRACED 2



#define WSTOPPED 2
#define WEXITED 4
#define WCONTINUED 8
#define WNOWAIT 0x01000000


#define __WNOTHREAD 0x20000000

#define __WALL 0x40000000
#define __WCLONE 0x80000000
# 41 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 2 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/waitstatus.h" 1 3 4
# 28 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/waitstatus.h" 3 4
#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)


#define __WTERMSIG(status) ((status) & 0x7f)


#define __WSTOPSIG(status) __WEXITSTATUS(status)


#define __WIFEXITED(status) (__WTERMSIG(status) == 0)


#define __WIFSIGNALED(status) (((signed char) (((status) & 0x7f) + 1) >> 1) > 0)



#define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f)




#define __WIFCONTINUED(status) ((status) == __W_CONTINUED)



#define __WCOREDUMP(status) ((status) & __WCOREFLAG)


#define __W_EXITCODE(ret,sig) ((ret) << 8 | (sig))
#define __W_STOPCODE(sig) ((sig) << 8 | 0x7f)
#define __W_CONTINUED 0xffff
#define __WCOREFLAG 0x80
# 42 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 2 3 4


#define WEXITSTATUS(status) __WEXITSTATUS (status)
#define WTERMSIG(status) __WTERMSIG (status)
#define WSTOPSIG(status) __WSTOPSIG (status)
#define WIFEXITED(status) __WIFEXITED (status)
#define WIFSIGNALED(status) __WIFSIGNALED (status)
#define WIFSTOPPED(status) __WIFSTOPPED (status)

#define WIFCONTINUED(status) __WIFCONTINUED (status)







typedef struct
  {
    int quot;
    int rem;
  } div_t;



typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;
#define __ldiv_t_defined 1




__extension__ typedef struct
  {
    long long int quot;
    long long int rem;
  } lldiv_t;
#define __lldiv_t_defined 1




#define RAND_MAX 2147483647




#define EXIT_FAILURE 1
#define EXIT_SUCCESS 0



#define MB_CUR_MAX (__ctype_get_mb_cur_max ())
extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__ , __leaf__)) ;



extern double atof (const char *__nptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;

extern int atoi (const char *__nptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;

extern long int atol (const char *__nptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;



__extension__ extern long long int atoll (const char *__nptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;



extern double strtod (const char *__restrict __nptr,
        char **__restrict __endptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern float strtof (const char *__restrict __nptr,
       char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));

extern long double strtold (const char *__restrict __nptr,
       char **__restrict __endptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 141 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern _Float32 strtof32 (const char *__restrict __nptr,
     char **__restrict __endptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern _Float64 strtof64 (const char *__restrict __nptr,
     char **__restrict __endptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern _Float128 strtof128 (const char *__restrict __nptr,
       char **__restrict __endptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern _Float32x strtof32x (const char *__restrict __nptr,
       char **__restrict __endptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern _Float64x strtof64x (const char *__restrict __nptr,
       char **__restrict __endptr)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 177 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern long int strtol (const char *__restrict __nptr,
   char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));

extern unsigned long int strtoul (const char *__restrict __nptr,
      char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



__extension__
extern long long int strtoq (const char *__restrict __nptr,
        char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));

__extension__
extern unsigned long long int strtouq (const char *__restrict __nptr,
           char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));




__extension__
extern long long int strtoll (const char *__restrict __nptr,
         char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));

__extension__
extern unsigned long long int strtoull (const char *__restrict __nptr,
     char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));






extern long int strtol (const char *__restrict __nptr, char **__restrict __endptr, int __base) __asm__ ("" "__isoc23_strtol") __attribute__ ((__nothrow__ , __leaf__))


     __attribute__ ((__nonnull__ (1)));
extern unsigned long int strtoul (const char *__restrict __nptr, char **__restrict __endptr, int __base) __asm__ ("" "__isoc23_strtoul") __attribute__ ((__nothrow__ , __leaf__))



     __attribute__ ((__nonnull__ (1)));

__extension__
extern long long int strtoq (const char *__restrict __nptr, char **__restrict __endptr, int __base) __asm__ ("" "__isoc23_strtoll") __attribute__ ((__nothrow__ , __leaf__))


     __attribute__ ((__nonnull__ (1)));
__extension__
extern unsigned long long int strtouq (const char *__restrict __nptr, char **__restrict __endptr, int __base) __asm__ ("" "__isoc23_strtoull") __attribute__ ((__nothrow__ , __leaf__))



     __attribute__ ((__nonnull__ (1)));

__extension__
extern long long int strtoll (const char *__restrict __nptr, char **__restrict __endptr, int __base) __asm__ ("" "__isoc23_strtoll") __attribute__ ((__nothrow__ , __leaf__))


     __attribute__ ((__nonnull__ (1)));
__extension__
extern unsigned long long int strtoull (const char *__restrict __nptr, char **__restrict __endptr, int __base) __asm__ ("" "__isoc23_strtoull") __attribute__ ((__nothrow__ , __leaf__))



     __attribute__ ((__nonnull__ (1)));
# 278 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern int strfromd (char *__dest, size_t __size, const char *__format,
       double __f)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));

extern int strfromf (char *__dest, size_t __size, const char *__format,
       float __f)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));

extern int strfroml (char *__dest, size_t __size, const char *__format,
       long double __f)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
# 298 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern int strfromf32 (char *__dest, size_t __size, const char * __format,
         _Float32 __f)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));



extern int strfromf64 (char *__dest, size_t __size, const char * __format,
         _Float64 __f)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));



extern int strfromf128 (char *__dest, size_t __size, const char * __format,
   _Float128 __f)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));



extern int strfromf32x (char *__dest, size_t __size, const char * __format,
   _Float32x __f)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));



extern int strfromf64x (char *__dest, size_t __size, const char * __format,
   _Float64x __f)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
# 340 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern long int strtol_l (const char *__restrict __nptr,
     char **__restrict __endptr, int __base,
     locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4)));

extern unsigned long int strtoul_l (const char *__restrict __nptr,
        char **__restrict __endptr,
        int __base, locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4)));

__extension__
extern long long int strtoll_l (const char *__restrict __nptr,
    char **__restrict __endptr, int __base,
    locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4)));

__extension__
extern unsigned long long int strtoull_l (const char *__restrict __nptr,
       char **__restrict __endptr,
       int __base, locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4)));





extern long int strtol_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) __asm__ ("" "__isoc23_strtol_l") __attribute__ ((__nothrow__ , __leaf__))



     __attribute__ ((__nonnull__ (1, 4)));
extern unsigned long int strtoul_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) __asm__ ("" "__isoc23_strtoul_l") __attribute__ ((__nothrow__ , __leaf__))




     __attribute__ ((__nonnull__ (1, 4)));
__extension__
extern long long int strtoll_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) __asm__ ("" "__isoc23_strtoll_l") __attribute__ ((__nothrow__ , __leaf__))




     __attribute__ ((__nonnull__ (1, 4)));
__extension__
extern unsigned long long int strtoull_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) __asm__ ("" "__isoc23_strtoull_l") __attribute__ ((__nothrow__ , __leaf__))




     __attribute__ ((__nonnull__ (1, 4)));
# 415 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern double strtod_l (const char *__restrict __nptr,
   char **__restrict __endptr, locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));

extern float strtof_l (const char *__restrict __nptr,
         char **__restrict __endptr, locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));

extern long double strtold_l (const char *__restrict __nptr,
         char **__restrict __endptr,
         locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
# 436 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern _Float32 strtof32_l (const char *__restrict __nptr,
       char **__restrict __endptr,
       locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));



extern _Float64 strtof64_l (const char *__restrict __nptr,
       char **__restrict __endptr,
       locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));



extern _Float128 strtof128_l (const char *__restrict __nptr,
         char **__restrict __endptr,
         locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));



extern _Float32x strtof32x_l (const char *__restrict __nptr,
         char **__restrict __endptr,
         locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));



extern _Float64x strtof64x_l (const char *__restrict __nptr,
         char **__restrict __endptr,
         locale_t __loc)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
# 480 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern __inline __attribute__ ((__gnu_inline__)) int
__attribute__ ((__nothrow__ , __leaf__)) atoi (const char *__nptr)
{
  return (int) strtol (__nptr, (char **) ((void *)0), 10);
}
extern __inline __attribute__ ((__gnu_inline__)) long int
__attribute__ ((__nothrow__ , __leaf__)) atol (const char *__nptr)
{
  return strtol (__nptr, (char **) ((void *)0), 10);
}


__extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int
__attribute__ ((__nothrow__ , __leaf__)) atoll (const char *__nptr)
{
  return strtoll (__nptr, (char **) ((void *)0), 10);
}
# 505 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern char *l64a (long int __n) __attribute__ ((__nothrow__ , __leaf__)) ;


extern long int a64l (const char *__s)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
# 521 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern long int random (void) __attribute__ ((__nothrow__ , __leaf__));


extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__ , __leaf__));





extern char *initstate (unsigned int __seed, char *__statebuf,
   size_t __statelen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));



extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));







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) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));

extern int srandom_r (unsigned int __seed, struct random_data *__buf)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));

extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
   size_t __statelen,
   struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4)));

extern int setstate_r (char *__restrict __statebuf,
         struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));





extern int rand (void) __attribute__ ((__nothrow__ , __leaf__));

extern void srand (unsigned int __seed) __attribute__ ((__nothrow__ , __leaf__));



extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__ , __leaf__));







extern double drand48 (void) __attribute__ ((__nothrow__ , __leaf__));
extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern long int lrand48 (void) __attribute__ ((__nothrow__ , __leaf__));
extern long int nrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern long int mrand48 (void) __attribute__ ((__nothrow__ , __leaf__));
extern long int jrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern void srand48 (long int __seedval) __attribute__ ((__nothrow__ , __leaf__));
extern unsigned short int *seed48 (unsigned short int __seed16v[3])
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





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

  };


extern int drand48_r (struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int erand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int lrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int nrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int mrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int jrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));

extern int seed48_r (unsigned short int __seed16v[3],
       struct drand48_data *__buffer) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));

extern int lcong48_r (unsigned short int __param[7],
        struct drand48_data *__buffer)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));


extern __uint32_t arc4random (void)
     __attribute__ ((__nothrow__ , __leaf__)) ;


extern void arc4random_buf (void *__buf, size_t __size)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern __uint32_t arc4random_uniform (__uint32_t __upper_bound)
     __attribute__ ((__nothrow__ , __leaf__)) ;




extern void *malloc (size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__))
     __attribute__ ((__alloc_size__ (1))) ;

extern void *calloc (size_t __nmemb, size_t __size)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) ;






extern void *realloc (void *__ptr, size_t __size)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2)));


extern void free (void *__ptr) __attribute__ ((__nothrow__ , __leaf__));







extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__))
     __attribute__ ((__alloc_size__ (2, 3)))
    __attribute__ ((__malloc__ (__builtin_free, 1)));


extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__ (reallocarray, 1)));



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/alloca.h" 1 3 4
# 19 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/alloca.h" 3 4
#define _ALLOCA_H 1



#define __need_size_t 
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 1 3 4
# 158 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_ptrdiff_t
# 237 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_size_t
# 349 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_wchar_t
# 399 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef NULL




#define NULL ((void *)0)





#undef __need_NULL




#undef offsetof
#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
# 25 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/alloca.h" 2 3 4




#undef alloca


extern void *alloca (size_t __size) __attribute__ ((__nothrow__ , __leaf__));


#define alloca(size) __builtin_alloca (size)



# 707 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 2 3 4





extern void *valloc (size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__))
     __attribute__ ((__alloc_size__ (1))) ;




extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;




extern void *aligned_alloc (size_t __alignment, size_t __size)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_align__ (1)))
     __attribute__ ((__alloc_size__ (2))) ;



extern void abort (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));



extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));







extern int at_quick_exit (void (*__func) (void)) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));






extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern void exit (int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));





extern void quick_exit (int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));





extern void _Exit (int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));




extern char *getenv (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;




extern char *secure_getenv (const char *__name)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;






extern int putenv (char *__string) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern int setenv (const char *__name, const char *__value, int __replace)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));


extern int unsetenv (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));






extern int clearenv (void) __attribute__ ((__nothrow__ , __leaf__));
# 814 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern char *mktemp (char *__template) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 827 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
# 837 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
# 849 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) ;
# 859 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern int mkstemps64 (char *__template, int __suffixlen)
     __attribute__ ((__nonnull__ (1))) ;
# 870 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
# 881 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ;
# 891 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ;
# 901 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern int mkostemps (char *__template, int __suffixlen, int __flags)
     __attribute__ ((__nonnull__ (1))) ;
# 913 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern int mkostemps64 (char *__template, int __suffixlen, int __flags)
     __attribute__ ((__nonnull__ (1))) ;
# 923 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern int system (const char *__command) ;





extern char *canonicalize_file_name (const char *__name)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__malloc__))
     __attribute__ ((__malloc__ (__builtin_free, 1))) ;
# 940 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern char *realpath (const char *__restrict __name,
         char *__restrict __resolved) __attribute__ ((__nothrow__ , __leaf__)) ;





#define __COMPAR_FN_T 
typedef int (*__compar_fn_t) (const void *, const void *);


typedef __compar_fn_t comparison_fn_t;



typedef int (*__compar_d_fn_t) (const void *, const void *, void *);




extern void *bsearch (const void *__key, const void *__base,
        size_t __nmemb, size_t __size, __compar_fn_t __compar)
     __attribute__ ((__nonnull__ (1, 2, 5))) ;


# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stdlib-bsearch.h" 1 3 4
# 19 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stdlib-bsearch.h" 3 4
extern __inline __attribute__ ((__gnu_inline__)) void *
bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size,
  __compar_fn_t __compar)
{
  size_t __l, __u, __idx;
  const void *__p;
  int __comparison;

  __l = 0;
  __u = __nmemb;
  while (__l < __u)
    {
      __idx = (__l + __u) / 2;
      __p = (const void *) (((const char *) __base) + (__idx * __size));
      __comparison = (*__compar) (__key, __p);
      if (__comparison < 0)
 __u = __idx;
      else if (__comparison > 0)
 __l = __idx + 1;
      else
 {

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wcast-qual"

   return (void *) __p;

#pragma GCC diagnostic pop

 }
    }

  return ((void *)0);
}
# 966 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 2 3 4




extern void qsort (void *__base, size_t __nmemb, size_t __size,
     __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));

extern void qsort_r (void *__base, size_t __nmemb, size_t __size,
       __compar_d_fn_t __compar, void *__arg)
  __attribute__ ((__nonnull__ (1, 4)));




extern int abs (int __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;
extern long int labs (long int __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;


__extension__ extern long long int llabs (long long int __x)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;






extern div_t div (int __numer, int __denom)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;
extern ldiv_t ldiv (long int __numer, long int __denom)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;


__extension__ extern lldiv_t lldiv (long long int __numer,
        long long int __denom)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;
# 1012 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) ;




extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) ;




extern char *gcvt (double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))) ;




extern char *qecvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qfcvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qgcvt (long double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))) ;




extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5)));

extern int qecvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int qfcvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5)));





extern int mblen (const char *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__));


extern int mbtowc (wchar_t *__restrict __pwc,
     const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__ , __leaf__));


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



extern size_t mbstowcs (wchar_t *__restrict __pwcs,
   const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__ , __leaf__))
    __attribute__ ((__access__ (__read_only__, 2)));

extern size_t wcstombs (char *__restrict __s,
   const wchar_t *__restrict __pwcs, size_t __n)
     __attribute__ ((__nothrow__ , __leaf__))
  __attribute__ ((__access__ (__write_only__, 1, 3)))
  __attribute__ ((__access__ (__read_only__, 2)));






extern int rpmatch (const char *__response) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
# 1099 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
extern int getsubopt (char **__restrict __optionp,
        char *const *__restrict __tokens,
        char **__restrict __valuep)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3))) ;







extern int posix_openpt (int __oflag) ;







extern int grantpt (int __fd) __attribute__ ((__nothrow__ , __leaf__));



extern int unlockpt (int __fd) __attribute__ ((__nothrow__ , __leaf__));




extern char *ptsname (int __fd) __attribute__ ((__nothrow__ , __leaf__)) ;






extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3)));


extern int getpt (void);






extern int getloadavg (double __loadavg[], int __nelem)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 1155 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stdlib-float.h" 1 3 4
# 24 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stdlib-float.h" 3 4
extern __inline __attribute__ ((__gnu_inline__)) double
__attribute__ ((__nothrow__ , __leaf__)) atof (const char *__nptr)
{
  return strtod (__nptr, (char **) ((void *)0));
}
# 1156 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 2 3 4
# 1167 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/stdlib.h" 3 4

# 135 "system.h" 2







#define SUCCESS_EXIT_CODE EXIT_SUCCESS







#define FATAL_EXIT_CODE EXIT_FAILURE






# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 1 3 4
# 23 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
#define _UNISTD_H 1










#define _POSIX_VERSION 200809L
# 53 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
#define __POSIX2_THIS_VERSION 200809L
# 67 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
#define _POSIX2_VERSION __POSIX2_THIS_VERSION


#define _POSIX2_C_VERSION __POSIX2_THIS_VERSION



#define _POSIX2_C_BIND __POSIX2_THIS_VERSION



#define _POSIX2_C_DEV __POSIX2_THIS_VERSION



#define _POSIX2_SW_DEV __POSIX2_THIS_VERSION



#define _POSIX2_LOCALEDEF __POSIX2_THIS_VERSION



#define _XOPEN_VERSION 700
# 100 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
#define _XOPEN_XCU_VERSION 4


#define _XOPEN_XPG2 1
#define _XOPEN_XPG3 1
#define _XOPEN_XPG4 1


#define _XOPEN_UNIX 1



#define _XOPEN_ENH_I18N 1


#define _XOPEN_LEGACY 1
# 202 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/posix_opt.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/posix_opt.h" 3 4
#define _BITS_POSIX_OPT_H 1


#define _POSIX_JOB_CONTROL 1


#define _POSIX_SAVED_IDS 1





#define _POSIX_PRIORITY_SCHEDULING 200809L


#define _POSIX_SYNCHRONIZED_IO 200809L


#define _POSIX_FSYNC 200809L


#define _POSIX_MAPPED_FILES 200809L


#define _POSIX_MEMLOCK 200809L


#define _POSIX_MEMLOCK_RANGE 200809L


#define _POSIX_MEMORY_PROTECTION 200809L


#define _POSIX_CHOWN_RESTRICTED 0



#define _POSIX_VDISABLE '\0'


#define _POSIX_NO_TRUNC 1


#define _XOPEN_REALTIME 1


#define _XOPEN_REALTIME_THREADS 1


#define _XOPEN_SHM 1


#define _POSIX_THREADS 200809L


#define _POSIX_REENTRANT_FUNCTIONS 1
#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L


#define _POSIX_THREAD_PRIORITY_SCHEDULING 200809L


#define _POSIX_THREAD_ATTR_STACKSIZE 200809L


#define _POSIX_THREAD_ATTR_STACKADDR 200809L


#define _POSIX_THREAD_PRIO_INHERIT 200809L



#define _POSIX_THREAD_PRIO_PROTECT 200809L



#define _POSIX_THREAD_ROBUST_PRIO_INHERIT 200809L


#define _POSIX_THREAD_ROBUST_PRIO_PROTECT -1



#define _POSIX_SEMAPHORES 200809L


#define _POSIX_REALTIME_SIGNALS 200809L


#define _POSIX_ASYNCHRONOUS_IO 200809L
#define _POSIX_ASYNC_IO 1

#define _LFS_ASYNCHRONOUS_IO 1

#define _POSIX_PRIORITIZED_IO 200809L


#define _LFS64_ASYNCHRONOUS_IO 1


#define _LFS_LARGEFILE 1
#define _LFS64_LARGEFILE 1
#define _LFS64_STDIO 1


#define _POSIX_SHARED_MEMORY_OBJECTS 200809L


#define _POSIX_CPUTIME 0


#define _POSIX_THREAD_CPUTIME 0


#define _POSIX_REGEXP 1


#define _POSIX_READER_WRITER_LOCKS 200809L


#define _POSIX_SHELL 1


#define _POSIX_TIMEOUTS 200809L


#define _POSIX_SPIN_LOCKS 200809L


#define _POSIX_SPAWN 200809L


#define _POSIX_TIMERS 200809L


#define _POSIX_BARRIERS 200809L


#define _POSIX_MESSAGE_PASSING 200809L


#define _POSIX_THREAD_PROCESS_SHARED 200809L


#define _POSIX_MONOTONIC_CLOCK 0


#define _POSIX_CLOCK_SELECTION 200809L


#define _POSIX_ADVISORY_INFO 200809L


#define _POSIX_IPV6 200809L


#define _POSIX_RAW_SOCKETS 200809L


#define _POSIX2_CHAR_TERM 200809L


#define _POSIX_SPORADIC_SERVER -1
#define _POSIX_THREAD_SPORADIC_SERVER -1


#define _POSIX_TRACE -1
#define _POSIX_TRACE_EVENT_FILTER -1
#define _POSIX_TRACE_INHERIT -1
#define _POSIX_TRACE_LOG -1


#define _POSIX_TYPED_MEMORY_OBJECTS -1
# 203 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 2 3 4



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/environments.h" 1 3 4
# 22 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/environments.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 1 3 4
# 18 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 3 4
#define __WORDSIZE 64
#define __WORDSIZE_TIME64_COMPAT32 0
# 23 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/environments.h" 2 3 4
# 45 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/environments.h" 3 4
#define _POSIX_V7_ILP32_OFF32 -1
#define _POSIX_V7_ILP32_OFFBIG -1
#define _POSIX_V6_ILP32_OFF32 -1
#define _POSIX_V6_ILP32_OFFBIG -1
#define _XBS5_ILP32_OFF32 -1
#define _XBS5_ILP32_OFFBIG -1


#define _POSIX_V7_LPBIG_OFFBIG -1
#define _POSIX_V6_LPBIG_OFFBIG -1
#define _XBS5_LPBIG_OFFBIG -1


#define _POSIX_V7_LP64_OFF64 1
#define _POSIX_V6_LP64_OFF64 1
#define _XBS5_LP64_OFF64 1
# 207 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 2 3 4



#define STDIN_FILENO 0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2
# 224 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
#define __need_size_t 
#define __need_NULL 
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 1 3 4
# 158 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_ptrdiff_t
# 237 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_size_t
# 349 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_wchar_t
# 399 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef NULL




#define NULL ((void *)0)





#undef __need_NULL




#undef offsetof
#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
# 227 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 2 3 4
# 267 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
typedef __intptr_t intptr_t;
#define __intptr_t_defined 





typedef __socklen_t socklen_t;
#define __socklen_t_defined 





#define R_OK 4
#define W_OK 2
#define X_OK 1
#define F_OK 0


extern int access (const char *__name, int __type) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));




extern int euidaccess (const char *__name, int __type)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int eaccess (const char *__name, int __type)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern int execveat (int __fd, const char *__path, char *const __argv[],
                     char *const __envp[], int __flags)
    __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));






extern int faccessat (int __fd, const char *__file, int __type, int __flag)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) ;
# 327 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
#define L_SET SEEK_SET
#define L_INCR SEEK_CUR
#define L_XTND SEEK_END
# 339 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern __off_t lseek (int __fd, __off_t __offset, int __whence) __attribute__ ((__nothrow__ , __leaf__));
# 350 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
     __attribute__ ((__nothrow__ , __leaf__));






extern int close (int __fd);




extern void closefrom (int __lowfd) __attribute__ ((__nothrow__ , __leaf__));







extern ssize_t read (int __fd, void *__buf, size_t __nbytes)
    __attribute__ ((__access__ (__write_only__, 2, 3)));





extern ssize_t write (int __fd, const void *__buf, size_t __n)
    __attribute__ ((__access__ (__read_only__, 2, 3)));
# 389 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
        __off_t __offset)
    __attribute__ ((__access__ (__write_only__, 2, 3)));






extern ssize_t pwrite (int __fd, const void *__buf, size_t __n,
         __off_t __offset)
    __attribute__ ((__access__ (__read_only__, 2, 3)));
# 422 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
   __off64_t __offset)
    __attribute__ ((__access__ (__write_only__, 2, 3)));


extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n,
    __off64_t __offset)
    __attribute__ ((__access__ (__read_only__, 2, 3)));







extern int pipe (int __pipedes[2]) __attribute__ ((__nothrow__ , __leaf__)) ;




extern int pipe2 (int __pipedes[2], int __flags) __attribute__ ((__nothrow__ , __leaf__)) ;
# 452 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern unsigned int alarm (unsigned int __seconds) __attribute__ ((__nothrow__ , __leaf__));
# 464 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern unsigned int sleep (unsigned int __seconds);







extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
     __attribute__ ((__nothrow__ , __leaf__));






extern int usleep (__useconds_t __useconds);
# 489 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern int pause (void);



extern int chown (const char *__file, __uid_t __owner, __gid_t __group)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;



extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__ , __leaf__)) ;




extern int lchown (const char *__file, __uid_t __owner, __gid_t __group)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;






extern int fchownat (int __fd, const char *__file, __uid_t __owner,
       __gid_t __group, int __flag)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) ;



extern int chdir (const char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;



extern int fchdir (int __fd) __attribute__ ((__nothrow__ , __leaf__)) ;
# 531 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern char *getcwd (char *__buf, size_t __size) __attribute__ ((__nothrow__ , __leaf__)) ;





extern char *get_current_dir_name (void) __attribute__ ((__nothrow__ , __leaf__));







extern char *getwd (char *__buf)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__))
    __attribute__ ((__access__ (__write_only__, 1)));




extern int dup (int __fd) __attribute__ ((__nothrow__ , __leaf__)) ;


extern int dup2 (int __fd, int __fd2) __attribute__ ((__nothrow__ , __leaf__));




extern int dup3 (int __fd, int __fd2, int __flags) __attribute__ ((__nothrow__ , __leaf__));



extern char **__environ;

extern char **environ;





extern int execve (const char *__path, char *const __argv[],
     char *const __envp[]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));




extern int fexecve (int __fd, char *const __argv[], char *const __envp[])
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));




extern int execv (const char *__path, char *const __argv[])
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));



extern int execle (const char *__path, const char *__arg, ...)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));



extern int execl (const char *__path, const char *__arg, ...)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));



extern int execvp (const char *__file, char *const __argv[])
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));




extern int execlp (const char *__file, const char *__arg, ...)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));




extern int execvpe (const char *__file, char *const __argv[],
      char *const __envp[])
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));





extern int nice (int __inc) __attribute__ ((__nothrow__ , __leaf__)) ;




extern void _exit (int __status) __attribute__ ((__noreturn__));





# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/confname.h" 1 3 4
# 24 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/confname.h" 3 4
enum
  {
    _PC_LINK_MAX,
#define _PC_LINK_MAX _PC_LINK_MAX
    _PC_MAX_CANON,
#define _PC_MAX_CANON _PC_MAX_CANON
    _PC_MAX_INPUT,
#define _PC_MAX_INPUT _PC_MAX_INPUT
    _PC_NAME_MAX,
#define _PC_NAME_MAX _PC_NAME_MAX
    _PC_PATH_MAX,
#define _PC_PATH_MAX _PC_PATH_MAX
    _PC_PIPE_BUF,
#define _PC_PIPE_BUF _PC_PIPE_BUF
    _PC_CHOWN_RESTRICTED,
#define _PC_CHOWN_RESTRICTED _PC_CHOWN_RESTRICTED
    _PC_NO_TRUNC,
#define _PC_NO_TRUNC _PC_NO_TRUNC
    _PC_VDISABLE,
#define _PC_VDISABLE _PC_VDISABLE
    _PC_SYNC_IO,
#define _PC_SYNC_IO _PC_SYNC_IO
    _PC_ASYNC_IO,
#define _PC_ASYNC_IO _PC_ASYNC_IO
    _PC_PRIO_IO,
#define _PC_PRIO_IO _PC_PRIO_IO
    _PC_SOCK_MAXBUF,
#define _PC_SOCK_MAXBUF _PC_SOCK_MAXBUF
    _PC_FILESIZEBITS,
#define _PC_FILESIZEBITS _PC_FILESIZEBITS
    _PC_REC_INCR_XFER_SIZE,
#define _PC_REC_INCR_XFER_SIZE _PC_REC_INCR_XFER_SIZE
    _PC_REC_MAX_XFER_SIZE,
#define _PC_REC_MAX_XFER_SIZE _PC_REC_MAX_XFER_SIZE
    _PC_REC_MIN_XFER_SIZE,
#define _PC_REC_MIN_XFER_SIZE _PC_REC_MIN_XFER_SIZE
    _PC_REC_XFER_ALIGN,
#define _PC_REC_XFER_ALIGN _PC_REC_XFER_ALIGN
    _PC_ALLOC_SIZE_MIN,
#define _PC_ALLOC_SIZE_MIN _PC_ALLOC_SIZE_MIN
    _PC_SYMLINK_MAX,
#define _PC_SYMLINK_MAX _PC_SYMLINK_MAX
    _PC_2_SYMLINKS
#define _PC_2_SYMLINKS _PC_2_SYMLINKS
  };


enum
  {
    _SC_ARG_MAX,
#define _SC_ARG_MAX _SC_ARG_MAX
    _SC_CHILD_MAX,
#define _SC_CHILD_MAX _SC_CHILD_MAX
    _SC_CLK_TCK,
#define _SC_CLK_TCK _SC_CLK_TCK
    _SC_NGROUPS_MAX,
#define _SC_NGROUPS_MAX _SC_NGROUPS_MAX
    _SC_OPEN_MAX,
#define _SC_OPEN_MAX _SC_OPEN_MAX
    _SC_STREAM_MAX,
#define _SC_STREAM_MAX _SC_STREAM_MAX
    _SC_TZNAME_MAX,
#define _SC_TZNAME_MAX _SC_TZNAME_MAX
    _SC_JOB_CONTROL,
#define _SC_JOB_CONTROL _SC_JOB_CONTROL
    _SC_SAVED_IDS,
#define _SC_SAVED_IDS _SC_SAVED_IDS
    _SC_REALTIME_SIGNALS,
#define _SC_REALTIME_SIGNALS _SC_REALTIME_SIGNALS
    _SC_PRIORITY_SCHEDULING,
#define _SC_PRIORITY_SCHEDULING _SC_PRIORITY_SCHEDULING
    _SC_TIMERS,
#define _SC_TIMERS _SC_TIMERS
    _SC_ASYNCHRONOUS_IO,
#define _SC_ASYNCHRONOUS_IO _SC_ASYNCHRONOUS_IO
    _SC_PRIORITIZED_IO,
#define _SC_PRIORITIZED_IO _SC_PRIORITIZED_IO
    _SC_SYNCHRONIZED_IO,
#define _SC_SYNCHRONIZED_IO _SC_SYNCHRONIZED_IO
    _SC_FSYNC,
#define _SC_FSYNC _SC_FSYNC
    _SC_MAPPED_FILES,
#define _SC_MAPPED_FILES _SC_MAPPED_FILES
    _SC_MEMLOCK,
#define _SC_MEMLOCK _SC_MEMLOCK
    _SC_MEMLOCK_RANGE,
#define _SC_MEMLOCK_RANGE _SC_MEMLOCK_RANGE
    _SC_MEMORY_PROTECTION,
#define _SC_MEMORY_PROTECTION _SC_MEMORY_PROTECTION
    _SC_MESSAGE_PASSING,
#define _SC_MESSAGE_PASSING _SC_MESSAGE_PASSING
    _SC_SEMAPHORES,
#define _SC_SEMAPHORES _SC_SEMAPHORES
    _SC_SHARED_MEMORY_OBJECTS,
#define _SC_SHARED_MEMORY_OBJECTS _SC_SHARED_MEMORY_OBJECTS
    _SC_AIO_LISTIO_MAX,
#define _SC_AIO_LISTIO_MAX _SC_AIO_LISTIO_MAX
    _SC_AIO_MAX,
#define _SC_AIO_MAX _SC_AIO_MAX
    _SC_AIO_PRIO_DELTA_MAX,
#define _SC_AIO_PRIO_DELTA_MAX _SC_AIO_PRIO_DELTA_MAX
    _SC_DELAYTIMER_MAX,
#define _SC_DELAYTIMER_MAX _SC_DELAYTIMER_MAX
    _SC_MQ_OPEN_MAX,
#define _SC_MQ_OPEN_MAX _SC_MQ_OPEN_MAX
    _SC_MQ_PRIO_MAX,
#define _SC_MQ_PRIO_MAX _SC_MQ_PRIO_MAX
    _SC_VERSION,
#define _SC_VERSION _SC_VERSION
    _SC_PAGESIZE,
#define _SC_PAGESIZE _SC_PAGESIZE
#define _SC_PAGE_SIZE _SC_PAGESIZE
    _SC_RTSIG_MAX,
#define _SC_RTSIG_MAX _SC_RTSIG_MAX
    _SC_SEM_NSEMS_MAX,
#define _SC_SEM_NSEMS_MAX _SC_SEM_NSEMS_MAX
    _SC_SEM_VALUE_MAX,
#define _SC_SEM_VALUE_MAX _SC_SEM_VALUE_MAX
    _SC_SIGQUEUE_MAX,
#define _SC_SIGQUEUE_MAX _SC_SIGQUEUE_MAX
    _SC_TIMER_MAX,
#define _SC_TIMER_MAX _SC_TIMER_MAX



    _SC_BC_BASE_MAX,
#define _SC_BC_BASE_MAX _SC_BC_BASE_MAX
    _SC_BC_DIM_MAX,
#define _SC_BC_DIM_MAX _SC_BC_DIM_MAX
    _SC_BC_SCALE_MAX,
#define _SC_BC_SCALE_MAX _SC_BC_SCALE_MAX
    _SC_BC_STRING_MAX,
#define _SC_BC_STRING_MAX _SC_BC_STRING_MAX
    _SC_COLL_WEIGHTS_MAX,
#define _SC_COLL_WEIGHTS_MAX _SC_COLL_WEIGHTS_MAX
    _SC_EQUIV_CLASS_MAX,
#define _SC_EQUIV_CLASS_MAX _SC_EQUIV_CLASS_MAX
    _SC_EXPR_NEST_MAX,
#define _SC_EXPR_NEST_MAX _SC_EXPR_NEST_MAX
    _SC_LINE_MAX,
#define _SC_LINE_MAX _SC_LINE_MAX
    _SC_RE_DUP_MAX,
#define _SC_RE_DUP_MAX _SC_RE_DUP_MAX
    _SC_CHARCLASS_NAME_MAX,
#define _SC_CHARCLASS_NAME_MAX _SC_CHARCLASS_NAME_MAX

    _SC_2_VERSION,
#define _SC_2_VERSION _SC_2_VERSION
    _SC_2_C_BIND,
#define _SC_2_C_BIND _SC_2_C_BIND
    _SC_2_C_DEV,
#define _SC_2_C_DEV _SC_2_C_DEV
    _SC_2_FORT_DEV,
#define _SC_2_FORT_DEV _SC_2_FORT_DEV
    _SC_2_FORT_RUN,
#define _SC_2_FORT_RUN _SC_2_FORT_RUN
    _SC_2_SW_DEV,
#define _SC_2_SW_DEV _SC_2_SW_DEV
    _SC_2_LOCALEDEF,
#define _SC_2_LOCALEDEF _SC_2_LOCALEDEF

    _SC_PII,
#define _SC_PII _SC_PII
    _SC_PII_XTI,
#define _SC_PII_XTI _SC_PII_XTI
    _SC_PII_SOCKET,
#define _SC_PII_SOCKET _SC_PII_SOCKET
    _SC_PII_INTERNET,
#define _SC_PII_INTERNET _SC_PII_INTERNET
    _SC_PII_OSI,
#define _SC_PII_OSI _SC_PII_OSI
    _SC_POLL,
#define _SC_POLL _SC_POLL
    _SC_SELECT,
#define _SC_SELECT _SC_SELECT
    _SC_UIO_MAXIOV,
#define _SC_UIO_MAXIOV _SC_UIO_MAXIOV
    _SC_IOV_MAX = _SC_UIO_MAXIOV,
#define _SC_IOV_MAX _SC_IOV_MAX
    _SC_PII_INTERNET_STREAM,
#define _SC_PII_INTERNET_STREAM _SC_PII_INTERNET_STREAM
    _SC_PII_INTERNET_DGRAM,
#define _SC_PII_INTERNET_DGRAM _SC_PII_INTERNET_DGRAM
    _SC_PII_OSI_COTS,
#define _SC_PII_OSI_COTS _SC_PII_OSI_COTS
    _SC_PII_OSI_CLTS,
#define _SC_PII_OSI_CLTS _SC_PII_OSI_CLTS
    _SC_PII_OSI_M,
#define _SC_PII_OSI_M _SC_PII_OSI_M
    _SC_T_IOV_MAX,
#define _SC_T_IOV_MAX _SC_T_IOV_MAX


    _SC_THREADS,
#define _SC_THREADS _SC_THREADS
    _SC_THREAD_SAFE_FUNCTIONS,
#define _SC_THREAD_SAFE_FUNCTIONS _SC_THREAD_SAFE_FUNCTIONS
    _SC_GETGR_R_SIZE_MAX,
#define _SC_GETGR_R_SIZE_MAX _SC_GETGR_R_SIZE_MAX
    _SC_GETPW_R_SIZE_MAX,
#define _SC_GETPW_R_SIZE_MAX _SC_GETPW_R_SIZE_MAX
    _SC_LOGIN_NAME_MAX,
#define _SC_LOGIN_NAME_MAX _SC_LOGIN_NAME_MAX
    _SC_TTY_NAME_MAX,
#define _SC_TTY_NAME_MAX _SC_TTY_NAME_MAX
    _SC_THREAD_DESTRUCTOR_ITERATIONS,
#define _SC_THREAD_DESTRUCTOR_ITERATIONS _SC_THREAD_DESTRUCTOR_ITERATIONS
    _SC_THREAD_KEYS_MAX,
#define _SC_THREAD_KEYS_MAX _SC_THREAD_KEYS_MAX
    _SC_THREAD_STACK_MIN,
#define _SC_THREAD_STACK_MIN _SC_THREAD_STACK_MIN
    _SC_THREAD_THREADS_MAX,
#define _SC_THREAD_THREADS_MAX _SC_THREAD_THREADS_MAX
    _SC_THREAD_ATTR_STACKADDR,
#define _SC_THREAD_ATTR_STACKADDR _SC_THREAD_ATTR_STACKADDR
    _SC_THREAD_ATTR_STACKSIZE,
#define _SC_THREAD_ATTR_STACKSIZE _SC_THREAD_ATTR_STACKSIZE
    _SC_THREAD_PRIORITY_SCHEDULING,
#define _SC_THREAD_PRIORITY_SCHEDULING _SC_THREAD_PRIORITY_SCHEDULING
    _SC_THREAD_PRIO_INHERIT,
#define _SC_THREAD_PRIO_INHERIT _SC_THREAD_PRIO_INHERIT
    _SC_THREAD_PRIO_PROTECT,
#define _SC_THREAD_PRIO_PROTECT _SC_THREAD_PRIO_PROTECT
    _SC_THREAD_PROCESS_SHARED,
#define _SC_THREAD_PROCESS_SHARED _SC_THREAD_PROCESS_SHARED

    _SC_NPROCESSORS_CONF,
#define _SC_NPROCESSORS_CONF _SC_NPROCESSORS_CONF
    _SC_NPROCESSORS_ONLN,
#define _SC_NPROCESSORS_ONLN _SC_NPROCESSORS_ONLN
    _SC_PHYS_PAGES,
#define _SC_PHYS_PAGES _SC_PHYS_PAGES
    _SC_AVPHYS_PAGES,
#define _SC_AVPHYS_PAGES _SC_AVPHYS_PAGES
    _SC_ATEXIT_MAX,
#define _SC_ATEXIT_MAX _SC_ATEXIT_MAX
    _SC_PASS_MAX,
#define _SC_PASS_MAX _SC_PASS_MAX

    _SC_XOPEN_VERSION,
#define _SC_XOPEN_VERSION _SC_XOPEN_VERSION
    _SC_XOPEN_XCU_VERSION,
#define _SC_XOPEN_XCU_VERSION _SC_XOPEN_XCU_VERSION
    _SC_XOPEN_UNIX,
#define _SC_XOPEN_UNIX _SC_XOPEN_UNIX
    _SC_XOPEN_CRYPT,
#define _SC_XOPEN_CRYPT _SC_XOPEN_CRYPT
    _SC_XOPEN_ENH_I18N,
#define _SC_XOPEN_ENH_I18N _SC_XOPEN_ENH_I18N
    _SC_XOPEN_SHM,
#define _SC_XOPEN_SHM _SC_XOPEN_SHM

    _SC_2_CHAR_TERM,
#define _SC_2_CHAR_TERM _SC_2_CHAR_TERM
    _SC_2_C_VERSION,
#define _SC_2_C_VERSION _SC_2_C_VERSION
    _SC_2_UPE,
#define _SC_2_UPE _SC_2_UPE

    _SC_XOPEN_XPG2,
#define _SC_XOPEN_XPG2 _SC_XOPEN_XPG2
    _SC_XOPEN_XPG3,
#define _SC_XOPEN_XPG3 _SC_XOPEN_XPG3
    _SC_XOPEN_XPG4,
#define _SC_XOPEN_XPG4 _SC_XOPEN_XPG4

    _SC_CHAR_BIT,
#define _SC_CHAR_BIT _SC_CHAR_BIT
    _SC_CHAR_MAX,
#define _SC_CHAR_MAX _SC_CHAR_MAX
    _SC_CHAR_MIN,
#define _SC_CHAR_MIN _SC_CHAR_MIN
    _SC_INT_MAX,
#define _SC_INT_MAX _SC_INT_MAX
    _SC_INT_MIN,
#define _SC_INT_MIN _SC_INT_MIN
    _SC_LONG_BIT,
#define _SC_LONG_BIT _SC_LONG_BIT
    _SC_WORD_BIT,
#define _SC_WORD_BIT _SC_WORD_BIT
    _SC_MB_LEN_MAX,
#define _SC_MB_LEN_MAX _SC_MB_LEN_MAX
    _SC_NZERO,
#define _SC_NZERO _SC_NZERO
    _SC_SSIZE_MAX,
#define _SC_SSIZE_MAX _SC_SSIZE_MAX
    _SC_SCHAR_MAX,
#define _SC_SCHAR_MAX _SC_SCHAR_MAX
    _SC_SCHAR_MIN,
#define _SC_SCHAR_MIN _SC_SCHAR_MIN
    _SC_SHRT_MAX,
#define _SC_SHRT_MAX _SC_SHRT_MAX
    _SC_SHRT_MIN,
#define _SC_SHRT_MIN _SC_SHRT_MIN
    _SC_UCHAR_MAX,
#define _SC_UCHAR_MAX _SC_UCHAR_MAX
    _SC_UINT_MAX,
#define _SC_UINT_MAX _SC_UINT_MAX
    _SC_ULONG_MAX,
#define _SC_ULONG_MAX _SC_ULONG_MAX
    _SC_USHRT_MAX,
#define _SC_USHRT_MAX _SC_USHRT_MAX

    _SC_NL_ARGMAX,
#define _SC_NL_ARGMAX _SC_NL_ARGMAX
    _SC_NL_LANGMAX,
#define _SC_NL_LANGMAX _SC_NL_LANGMAX
    _SC_NL_MSGMAX,
#define _SC_NL_MSGMAX _SC_NL_MSGMAX
    _SC_NL_NMAX,
#define _SC_NL_NMAX _SC_NL_NMAX
    _SC_NL_SETMAX,
#define _SC_NL_SETMAX _SC_NL_SETMAX
    _SC_NL_TEXTMAX,
#define _SC_NL_TEXTMAX _SC_NL_TEXTMAX

    _SC_XBS5_ILP32_OFF32,
#define _SC_XBS5_ILP32_OFF32 _SC_XBS5_ILP32_OFF32
    _SC_XBS5_ILP32_OFFBIG,
#define _SC_XBS5_ILP32_OFFBIG _SC_XBS5_ILP32_OFFBIG
    _SC_XBS5_LP64_OFF64,
#define _SC_XBS5_LP64_OFF64 _SC_XBS5_LP64_OFF64
    _SC_XBS5_LPBIG_OFFBIG,
#define _SC_XBS5_LPBIG_OFFBIG _SC_XBS5_LPBIG_OFFBIG

    _SC_XOPEN_LEGACY,
#define _SC_XOPEN_LEGACY _SC_XOPEN_LEGACY
    _SC_XOPEN_REALTIME,
#define _SC_XOPEN_REALTIME _SC_XOPEN_REALTIME
    _SC_XOPEN_REALTIME_THREADS,
#define _SC_XOPEN_REALTIME_THREADS _SC_XOPEN_REALTIME_THREADS

    _SC_ADVISORY_INFO,
#define _SC_ADVISORY_INFO _SC_ADVISORY_INFO
    _SC_BARRIERS,
#define _SC_BARRIERS _SC_BARRIERS
    _SC_BASE,
#define _SC_BASE _SC_BASE
    _SC_C_LANG_SUPPORT,
#define _SC_C_LANG_SUPPORT _SC_C_LANG_SUPPORT
    _SC_C_LANG_SUPPORT_R,
#define _SC_C_LANG_SUPPORT_R _SC_C_LANG_SUPPORT_R
    _SC_CLOCK_SELECTION,
#define _SC_CLOCK_SELECTION _SC_CLOCK_SELECTION
    _SC_CPUTIME,
#define _SC_CPUTIME _SC_CPUTIME
    _SC_THREAD_CPUTIME,
#define _SC_THREAD_CPUTIME _SC_THREAD_CPUTIME
    _SC_DEVICE_IO,
#define _SC_DEVICE_IO _SC_DEVICE_IO
    _SC_DEVICE_SPECIFIC,
#define _SC_DEVICE_SPECIFIC _SC_DEVICE_SPECIFIC
    _SC_DEVICE_SPECIFIC_R,
#define _SC_DEVICE_SPECIFIC_R _SC_DEVICE_SPECIFIC_R
    _SC_FD_MGMT,
#define _SC_FD_MGMT _SC_FD_MGMT
    _SC_FIFO,
#define _SC_FIFO _SC_FIFO
    _SC_PIPE,
#define _SC_PIPE _SC_PIPE
    _SC_FILE_ATTRIBUTES,
#define _SC_FILE_ATTRIBUTES _SC_FILE_ATTRIBUTES
    _SC_FILE_LOCKING,
#define _SC_FILE_LOCKING _SC_FILE_LOCKING
    _SC_FILE_SYSTEM,
#define _SC_FILE_SYSTEM _SC_FILE_SYSTEM
    _SC_MONOTONIC_CLOCK,
#define _SC_MONOTONIC_CLOCK _SC_MONOTONIC_CLOCK
    _SC_MULTI_PROCESS,
#define _SC_MULTI_PROCESS _SC_MULTI_PROCESS
    _SC_SINGLE_PROCESS,
#define _SC_SINGLE_PROCESS _SC_SINGLE_PROCESS
    _SC_NETWORKING,
#define _SC_NETWORKING _SC_NETWORKING
    _SC_READER_WRITER_LOCKS,
#define _SC_READER_WRITER_LOCKS _SC_READER_WRITER_LOCKS
    _SC_SPIN_LOCKS,
#define _SC_SPIN_LOCKS _SC_SPIN_LOCKS
    _SC_REGEXP,
#define _SC_REGEXP _SC_REGEXP
    _SC_REGEX_VERSION,
#define _SC_REGEX_VERSION _SC_REGEX_VERSION
    _SC_SHELL,
#define _SC_SHELL _SC_SHELL
    _SC_SIGNALS,
#define _SC_SIGNALS _SC_SIGNALS
    _SC_SPAWN,
#define _SC_SPAWN _SC_SPAWN
    _SC_SPORADIC_SERVER,
#define _SC_SPORADIC_SERVER _SC_SPORADIC_SERVER
    _SC_THREAD_SPORADIC_SERVER,
#define _SC_THREAD_SPORADIC_SERVER _SC_THREAD_SPORADIC_SERVER
    _SC_SYSTEM_DATABASE,
#define _SC_SYSTEM_DATABASE _SC_SYSTEM_DATABASE
    _SC_SYSTEM_DATABASE_R,
#define _SC_SYSTEM_DATABASE_R _SC_SYSTEM_DATABASE_R
    _SC_TIMEOUTS,
#define _SC_TIMEOUTS _SC_TIMEOUTS
    _SC_TYPED_MEMORY_OBJECTS,
#define _SC_TYPED_MEMORY_OBJECTS _SC_TYPED_MEMORY_OBJECTS
    _SC_USER_GROUPS,
#define _SC_USER_GROUPS _SC_USER_GROUPS
    _SC_USER_GROUPS_R,
#define _SC_USER_GROUPS_R _SC_USER_GROUPS_R
    _SC_2_PBS,
#define _SC_2_PBS _SC_2_PBS
    _SC_2_PBS_ACCOUNTING,
#define _SC_2_PBS_ACCOUNTING _SC_2_PBS_ACCOUNTING
    _SC_2_PBS_LOCATE,
#define _SC_2_PBS_LOCATE _SC_2_PBS_LOCATE
    _SC_2_PBS_MESSAGE,
#define _SC_2_PBS_MESSAGE _SC_2_PBS_MESSAGE
    _SC_2_PBS_TRACK,
#define _SC_2_PBS_TRACK _SC_2_PBS_TRACK
    _SC_SYMLOOP_MAX,
#define _SC_SYMLOOP_MAX _SC_SYMLOOP_MAX
    _SC_STREAMS,
#define _SC_STREAMS _SC_STREAMS
    _SC_2_PBS_CHECKPOINT,
#define _SC_2_PBS_CHECKPOINT _SC_2_PBS_CHECKPOINT

    _SC_V6_ILP32_OFF32,
#define _SC_V6_ILP32_OFF32 _SC_V6_ILP32_OFF32
    _SC_V6_ILP32_OFFBIG,
#define _SC_V6_ILP32_OFFBIG _SC_V6_ILP32_OFFBIG
    _SC_V6_LP64_OFF64,
#define _SC_V6_LP64_OFF64 _SC_V6_LP64_OFF64
    _SC_V6_LPBIG_OFFBIG,
#define _SC_V6_LPBIG_OFFBIG _SC_V6_LPBIG_OFFBIG

    _SC_HOST_NAME_MAX,
#define _SC_HOST_NAME_MAX _SC_HOST_NAME_MAX
    _SC_TRACE,
#define _SC_TRACE _SC_TRACE
    _SC_TRACE_EVENT_FILTER,
#define _SC_TRACE_EVENT_FILTER _SC_TRACE_EVENT_FILTER
    _SC_TRACE_INHERIT,
#define _SC_TRACE_INHERIT _SC_TRACE_INHERIT
    _SC_TRACE_LOG,
#define _SC_TRACE_LOG _SC_TRACE_LOG

    _SC_LEVEL1_ICACHE_SIZE,
#define _SC_LEVEL1_ICACHE_SIZE _SC_LEVEL1_ICACHE_SIZE
    _SC_LEVEL1_ICACHE_ASSOC,
#define _SC_LEVEL1_ICACHE_ASSOC _SC_LEVEL1_ICACHE_ASSOC
    _SC_LEVEL1_ICACHE_LINESIZE,
#define _SC_LEVEL1_ICACHE_LINESIZE _SC_LEVEL1_ICACHE_LINESIZE
    _SC_LEVEL1_DCACHE_SIZE,
#define _SC_LEVEL1_DCACHE_SIZE _SC_LEVEL1_DCACHE_SIZE
    _SC_LEVEL1_DCACHE_ASSOC,
#define _SC_LEVEL1_DCACHE_ASSOC _SC_LEVEL1_DCACHE_ASSOC
    _SC_LEVEL1_DCACHE_LINESIZE,
#define _SC_LEVEL1_DCACHE_LINESIZE _SC_LEVEL1_DCACHE_LINESIZE
    _SC_LEVEL2_CACHE_SIZE,
#define _SC_LEVEL2_CACHE_SIZE _SC_LEVEL2_CACHE_SIZE
    _SC_LEVEL2_CACHE_ASSOC,
#define _SC_LEVEL2_CACHE_ASSOC _SC_LEVEL2_CACHE_ASSOC
    _SC_LEVEL2_CACHE_LINESIZE,
#define _SC_LEVEL2_CACHE_LINESIZE _SC_LEVEL2_CACHE_LINESIZE
    _SC_LEVEL3_CACHE_SIZE,
#define _SC_LEVEL3_CACHE_SIZE _SC_LEVEL3_CACHE_SIZE
    _SC_LEVEL3_CACHE_ASSOC,
#define _SC_LEVEL3_CACHE_ASSOC _SC_LEVEL3_CACHE_ASSOC
    _SC_LEVEL3_CACHE_LINESIZE,
#define _SC_LEVEL3_CACHE_LINESIZE _SC_LEVEL3_CACHE_LINESIZE
    _SC_LEVEL4_CACHE_SIZE,
#define _SC_LEVEL4_CACHE_SIZE _SC_LEVEL4_CACHE_SIZE
    _SC_LEVEL4_CACHE_ASSOC,
#define _SC_LEVEL4_CACHE_ASSOC _SC_LEVEL4_CACHE_ASSOC
    _SC_LEVEL4_CACHE_LINESIZE,
#define _SC_LEVEL4_CACHE_LINESIZE _SC_LEVEL4_CACHE_LINESIZE


    _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
#define _SC_IPV6 _SC_IPV6
    _SC_RAW_SOCKETS,
#define _SC_RAW_SOCKETS _SC_RAW_SOCKETS

    _SC_V7_ILP32_OFF32,
#define _SC_V7_ILP32_OFF32 _SC_V7_ILP32_OFF32
    _SC_V7_ILP32_OFFBIG,
#define _SC_V7_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG
    _SC_V7_LP64_OFF64,
#define _SC_V7_LP64_OFF64 _SC_V7_LP64_OFF64
    _SC_V7_LPBIG_OFFBIG,
#define _SC_V7_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG

    _SC_SS_REPL_MAX,
#define _SC_SS_REPL_MAX _SC_SS_REPL_MAX

    _SC_TRACE_EVENT_NAME_MAX,
#define _SC_TRACE_EVENT_NAME_MAX _SC_TRACE_EVENT_NAME_MAX
    _SC_TRACE_NAME_MAX,
#define _SC_TRACE_NAME_MAX _SC_TRACE_NAME_MAX
    _SC_TRACE_SYS_MAX,
#define _SC_TRACE_SYS_MAX _SC_TRACE_SYS_MAX
    _SC_TRACE_USER_EVENT_MAX,
#define _SC_TRACE_USER_EVENT_MAX _SC_TRACE_USER_EVENT_MAX

    _SC_XOPEN_STREAMS,
#define _SC_XOPEN_STREAMS _SC_XOPEN_STREAMS

    _SC_THREAD_ROBUST_PRIO_INHERIT,
#define _SC_THREAD_ROBUST_PRIO_INHERIT _SC_THREAD_ROBUST_PRIO_INHERIT
    _SC_THREAD_ROBUST_PRIO_PROTECT,
#define _SC_THREAD_ROBUST_PRIO_PROTECT _SC_THREAD_ROBUST_PRIO_PROTECT

    _SC_MINSIGSTKSZ,
#define _SC_MINSIGSTKSZ _SC_MINSIGSTKSZ

    _SC_SIGSTKSZ
#define _SC_SIGSTKSZ _SC_SIGSTKSZ
  };


enum
  {
    _CS_PATH,
#define _CS_PATH _CS_PATH

    _CS_V6_WIDTH_RESTRICTED_ENVS,
#define _CS_V6_WIDTH_RESTRICTED_ENVS _CS_V6_WIDTH_RESTRICTED_ENVS
#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS _CS_V6_WIDTH_RESTRICTED_ENVS

    _CS_GNU_LIBC_VERSION,
#define _CS_GNU_LIBC_VERSION _CS_GNU_LIBC_VERSION
    _CS_GNU_LIBPTHREAD_VERSION,
#define _CS_GNU_LIBPTHREAD_VERSION _CS_GNU_LIBPTHREAD_VERSION

    _CS_V5_WIDTH_RESTRICTED_ENVS,
#define _CS_V5_WIDTH_RESTRICTED_ENVS _CS_V5_WIDTH_RESTRICTED_ENVS
#define _CS_POSIX_V5_WIDTH_RESTRICTED_ENVS _CS_V5_WIDTH_RESTRICTED_ENVS

    _CS_V7_WIDTH_RESTRICTED_ENVS,
#define _CS_V7_WIDTH_RESTRICTED_ENVS _CS_V7_WIDTH_RESTRICTED_ENVS
#define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS _CS_V7_WIDTH_RESTRICTED_ENVS

    _CS_LFS_CFLAGS = 1000,
#define _CS_LFS_CFLAGS _CS_LFS_CFLAGS
    _CS_LFS_LDFLAGS,
#define _CS_LFS_LDFLAGS _CS_LFS_LDFLAGS
    _CS_LFS_LIBS,
#define _CS_LFS_LIBS _CS_LFS_LIBS
    _CS_LFS_LINTFLAGS,
#define _CS_LFS_LINTFLAGS _CS_LFS_LINTFLAGS
    _CS_LFS64_CFLAGS,
#define _CS_LFS64_CFLAGS _CS_LFS64_CFLAGS
    _CS_LFS64_LDFLAGS,
#define _CS_LFS64_LDFLAGS _CS_LFS64_LDFLAGS
    _CS_LFS64_LIBS,
#define _CS_LFS64_LIBS _CS_LFS64_LIBS
    _CS_LFS64_LINTFLAGS,
#define _CS_LFS64_LINTFLAGS _CS_LFS64_LINTFLAGS

    _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
#define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_XBS5_ILP32_OFF32_CFLAGS
    _CS_XBS5_ILP32_OFF32_LDFLAGS,
#define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_XBS5_ILP32_OFF32_LDFLAGS
    _CS_XBS5_ILP32_OFF32_LIBS,
#define _CS_XBS5_ILP32_OFF32_LIBS _CS_XBS5_ILP32_OFF32_LIBS
    _CS_XBS5_ILP32_OFF32_LINTFLAGS,
#define _CS_XBS5_ILP32_OFF32_LINTFLAGS _CS_XBS5_ILP32_OFF32_LINTFLAGS
    _CS_XBS5_ILP32_OFFBIG_CFLAGS,
#define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_XBS5_ILP32_OFFBIG_CFLAGS
    _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
#define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_XBS5_ILP32_OFFBIG_LDFLAGS
    _CS_XBS5_ILP32_OFFBIG_LIBS,
#define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_XBS5_ILP32_OFFBIG_LIBS
    _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
#define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
    _CS_XBS5_LP64_OFF64_CFLAGS,
#define _CS_XBS5_LP64_OFF64_CFLAGS _CS_XBS5_LP64_OFF64_CFLAGS
    _CS_XBS5_LP64_OFF64_LDFLAGS,
#define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_XBS5_LP64_OFF64_LDFLAGS
    _CS_XBS5_LP64_OFF64_LIBS,
#define _CS_XBS5_LP64_OFF64_LIBS _CS_XBS5_LP64_OFF64_LIBS
    _CS_XBS5_LP64_OFF64_LINTFLAGS,
#define _CS_XBS5_LP64_OFF64_LINTFLAGS _CS_XBS5_LP64_OFF64_LINTFLAGS
    _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
#define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_XBS5_LPBIG_OFFBIG_CFLAGS
    _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
#define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
    _CS_XBS5_LPBIG_OFFBIG_LIBS,
#define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_XBS5_LPBIG_OFFBIG_LIBS
    _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
#define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS

    _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V6_ILP32_OFF32_CFLAGS
    _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
    _CS_POSIX_V6_ILP32_OFF32_LIBS,
#define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V6_ILP32_OFF32_LIBS
    _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
#define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
    _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
    _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
    _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V6_ILP32_OFFBIG_LIBS
    _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
#define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS
    _CS_POSIX_V6_LP64_OFF64_CFLAGS,
#define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V6_LP64_OFF64_CFLAGS
    _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V6_LP64_OFF64_LDFLAGS
    _CS_POSIX_V6_LP64_OFF64_LIBS,
#define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V6_LP64_OFF64_LIBS
    _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
#define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS _CS_POSIX_V6_LP64_OFF64_LINTFLAGS
    _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
    _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
    _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
    _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,
#define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS

    _CS_POSIX_V7_ILP32_OFF32_CFLAGS,
#define _CS_POSIX_V7_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS
    _CS_POSIX_V7_ILP32_OFF32_LDFLAGS,
#define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
    _CS_POSIX_V7_ILP32_OFF32_LIBS,
#define _CS_POSIX_V7_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS
    _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS,
#define _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS
    _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,
#define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
    _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,
#define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
    _CS_POSIX_V7_ILP32_OFFBIG_LIBS,
#define _CS_POSIX_V7_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS
    _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS,
#define _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS
    _CS_POSIX_V7_LP64_OFF64_CFLAGS,
#define _CS_POSIX_V7_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS
    _CS_POSIX_V7_LP64_OFF64_LDFLAGS,
#define _CS_POSIX_V7_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS
    _CS_POSIX_V7_LP64_OFF64_LIBS,
#define _CS_POSIX_V7_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS
    _CS_POSIX_V7_LP64_OFF64_LINTFLAGS,
#define _CS_POSIX_V7_LP64_OFF64_LINTFLAGS _CS_POSIX_V7_LP64_OFF64_LINTFLAGS
    _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,
#define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
    _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,
#define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
    _CS_POSIX_V7_LPBIG_OFFBIG_LIBS,
#define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
    _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS,
#define _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS

    _CS_V6_ENV,
#define _CS_V6_ENV _CS_V6_ENV
    _CS_V7_ENV
#define _CS_V7_ENV _CS_V7_ENV
  };
# 631 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 2 3 4


extern long int pathconf (const char *__path, int __name)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));


extern long int fpathconf (int __fd, int __name) __attribute__ ((__nothrow__ , __leaf__));


extern long int sysconf (int __name) __attribute__ ((__nothrow__ , __leaf__));



extern size_t confstr (int __name, char *__buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__))
    __attribute__ ((__access__ (__write_only__, 2, 3)));




extern __pid_t getpid (void) __attribute__ ((__nothrow__ , __leaf__));


extern __pid_t getppid (void) __attribute__ ((__nothrow__ , __leaf__));


extern __pid_t getpgrp (void) __attribute__ ((__nothrow__ , __leaf__));


extern __pid_t __getpgid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__));

extern __pid_t getpgid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__));






extern int setpgid (__pid_t __pid, __pid_t __pgid) __attribute__ ((__nothrow__ , __leaf__));
# 682 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern int setpgrp (void) __attribute__ ((__nothrow__ , __leaf__));






extern __pid_t setsid (void) __attribute__ ((__nothrow__ , __leaf__));



extern __pid_t getsid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__));



extern __uid_t getuid (void) __attribute__ ((__nothrow__ , __leaf__));


extern __uid_t geteuid (void) __attribute__ ((__nothrow__ , __leaf__));


extern __gid_t getgid (void) __attribute__ ((__nothrow__ , __leaf__));


extern __gid_t getegid (void) __attribute__ ((__nothrow__ , __leaf__));




extern int getgroups (int __size, __gid_t __list[]) __attribute__ ((__nothrow__ , __leaf__))
    __attribute__ ((__access__ (__write_only__, 2, 1)));


extern int group_member (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__));






extern int setuid (__uid_t __uid) __attribute__ ((__nothrow__ , __leaf__)) ;




extern int setreuid (__uid_t __ruid, __uid_t __euid) __attribute__ ((__nothrow__ , __leaf__)) ;




extern int seteuid (__uid_t __uid) __attribute__ ((__nothrow__ , __leaf__)) ;






extern int setgid (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__)) ;




extern int setregid (__gid_t __rgid, __gid_t __egid) __attribute__ ((__nothrow__ , __leaf__)) ;




extern int setegid (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__)) ;





extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
     __attribute__ ((__nothrow__ , __leaf__));



extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
     __attribute__ ((__nothrow__ , __leaf__));



extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
     __attribute__ ((__nothrow__ , __leaf__)) ;



extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
     __attribute__ ((__nothrow__ , __leaf__)) ;






extern __pid_t fork (void) __attribute__ ((__nothrow__));







extern __pid_t vfork (void) __attribute__ ((__nothrow__ , __leaf__));






extern __pid_t _Fork (void) __attribute__ ((__nothrow__ , __leaf__));





extern char *ttyname (int __fd) __attribute__ ((__nothrow__ , __leaf__));



extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)))
     __attribute__ ((__access__ (__write_only__, 2, 3)));



extern int isatty (int __fd) __attribute__ ((__nothrow__ , __leaf__));




extern int ttyslot (void) __attribute__ ((__nothrow__ , __leaf__));




extern int link (const char *__from, const char *__to)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) ;




extern int linkat (int __fromfd, const char *__from, int __tofd,
     const char *__to, int __flags)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4))) ;




extern int symlink (const char *__from, const char *__to)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) ;




extern ssize_t readlink (const char *__restrict __path,
    char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)))
     __attribute__ ((__access__ (__write_only__, 2, 3)));





extern int symlinkat (const char *__from, int __tofd,
        const char *__to) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))) ;


extern ssize_t readlinkat (int __fd, const char *__restrict __path,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)))
     __attribute__ ((__access__ (__write_only__, 3, 4)));



extern int unlink (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern int unlinkat (int __fd, const char *__name, int __flag)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));



extern int rmdir (const char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));



extern __pid_t tcgetpgrp (int __fd) __attribute__ ((__nothrow__ , __leaf__));


extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __attribute__ ((__nothrow__ , __leaf__));






extern char *getlogin (void);







extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1)))
    __attribute__ ((__access__ (__write_only__, 1, 2)));




extern int setlogin (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));







# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/getopt_posix.h" 1 3 4
# 21 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/getopt_posix.h" 3 4
#define _GETOPT_POSIX_H 1





# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/getopt_core.h" 1 3 4
# 21 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/getopt_core.h" 3 4
#define _GETOPT_CORE_H 1














extern char *optarg;
# 50 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/getopt_core.h" 3 4
extern int optind;




extern int opterr;



extern int optopt;
# 91 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/getopt_core.h" 3 4
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
       __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));


# 28 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/getopt_posix.h" 2 3 4


# 49 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/getopt_posix.h" 3 4

# 904 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 2 3 4







extern int gethostname (char *__name, size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)))
    __attribute__ ((__access__ (__write_only__, 1, 2)));






extern int sethostname (const char *__name, size_t __len)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__read_only__, 1, 2)));



extern int sethostid (long int __id) __attribute__ ((__nothrow__ , __leaf__)) ;





extern int getdomainname (char *__name, size_t __len)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)))
     __attribute__ ((__access__ (__write_only__, 1, 2)));
extern int setdomainname (const char *__name, size_t __len)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__read_only__, 1, 2)));




extern int vhangup (void) __attribute__ ((__nothrow__ , __leaf__));


extern int revoke (const char *__file) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;







extern int profil (unsigned short int *__sample_buffer, size_t __size,
     size_t __offset, unsigned int __scale)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern int acct (const char *__name) __attribute__ ((__nothrow__ , __leaf__));



extern char *getusershell (void) __attribute__ ((__nothrow__ , __leaf__));
extern void endusershell (void) __attribute__ ((__nothrow__ , __leaf__));
extern void setusershell (void) __attribute__ ((__nothrow__ , __leaf__));





extern int daemon (int __nochdir, int __noclose) __attribute__ ((__nothrow__ , __leaf__)) ;






extern int chroot (const char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;



extern char *getpass (const char *__prompt) __attribute__ ((__nonnull__ (1)));







extern int fsync (int __fd);





extern int syncfs (int __fd) __attribute__ ((__nothrow__ , __leaf__));






extern long int gethostid (void);


extern void sync (void) __attribute__ ((__nothrow__ , __leaf__));





extern int getpagesize (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));




extern int getdtablesize (void) __attribute__ ((__nothrow__ , __leaf__));
# 1026 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern int truncate (const char *__file, __off_t __length)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
# 1038 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern int truncate64 (const char *__file, __off64_t __length)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
# 1049 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern int ftruncate (int __fd, __off_t __length) __attribute__ ((__nothrow__ , __leaf__)) ;
# 1059 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern int ftruncate64 (int __fd, __off64_t __length) __attribute__ ((__nothrow__ , __leaf__)) ;
# 1070 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern int brk (void *__addr) __attribute__ ((__nothrow__ , __leaf__)) ;





extern void *sbrk (intptr_t __delta) __attribute__ ((__nothrow__ , __leaf__));
# 1091 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern long int syscall (long int __sysno, ...) __attribute__ ((__nothrow__ , __leaf__));
# 1108 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
#define F_ULOCK 0
#define F_LOCK 1
#define F_TLOCK 2
#define F_TEST 3


extern int lockf (int __fd, int __cmd, __off_t __len) ;
# 1124 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern int lockf64 (int __fd, int __cmd, __off64_t __len) ;
# 1134 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
#define TEMP_FAILURE_RETRY(expression) (__extension__ ({ long int __result; do __result = (long int) (expression); while (__result == -1L && errno == EINTR); __result; }))







ssize_t copy_file_range (int __infd, __off64_t *__pinoff,
    int __outfd, __off64_t *__poutoff,
    size_t __length, unsigned int __flags);





extern int fdatasync (int __fildes);
# 1159 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern char *crypt (const char *__key, const char *__salt)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));







extern void swab (const void *__restrict __from, void *__restrict __to,
    ssize_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)))
    __attribute__ ((__access__ (__read_only__, 1, 3)))
    __attribute__ ((__access__ (__write_only__, 2, 3)));
# 1198 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
int getentropy (void *__buffer, size_t __length)
    __attribute__ ((__access__ (__write_only__, 1, 2)));
# 1208 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
extern int close_range (unsigned int __fd, unsigned int __max_fd,
   int __flags) __attribute__ ((__nothrow__ , __leaf__));
# 1218 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/unistd_ext.h" 1 3 4
# 34 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/unistd_ext.h" 3 4
extern __pid_t gettid (void) __attribute__ ((__nothrow__ , __leaf__));



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/close_range.h" 1 3 4


#define _LINUX_CLOSE_RANGE_H 


#define CLOSE_RANGE_UNSHARE (1U << 1)


#define CLOSE_RANGE_CLOEXEC (1U << 2)
# 39 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/unistd_ext.h" 2 3 4
# 1219 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/unistd.h" 2 3 4


# 158 "system.h" 2
# 167 "system.h"
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/limits.h" 1 3 4
# 30 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/limits.h" 3 4
#define _GCC_LIMITS_H_ 



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/syslimits.h" 1 3 4





#define _GCC_NEXT_LIMITS_H 
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/limits.h" 1 3 4
# 210 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/limits.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/limits.h" 1 3 4
# 23 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/limits.h" 3 4
#define _LIBC_LIMITS_H_ 1

#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION 
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 1 3 4
# 31 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 3 4
#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION





#undef __GLIBC_USE_LIB_EXT2


#define __GLIBC_USE_LIB_EXT2 1
# 67 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 3 4
#undef __GLIBC_USE_IEC_60559_BFP_EXT

#define __GLIBC_USE_IEC_60559_BFP_EXT 1



#undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X

#define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1



#undef __GLIBC_USE_IEC_60559_EXT

#define __GLIBC_USE_IEC_60559_EXT 1
# 90 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/libc-header-start.h" 3 4
#undef __GLIBC_USE_IEC_60559_FUNCS_EXT

#define __GLIBC_USE_IEC_60559_FUNCS_EXT 1



#undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X

#define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1






#undef __GLIBC_USE_IEC_60559_TYPES_EXT

#define __GLIBC_USE_IEC_60559_TYPES_EXT 1
# 27 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/limits.h" 2 3 4





#define MB_LEN_MAX 16
# 132 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/limits.h" 3 4
#define LLONG_MIN (-LLONG_MAX-1)


#define LLONG_MAX __LONG_LONG_MAX__


#define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
# 147 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/limits.h" 3 4
#define CHAR_WIDTH 8


#define SCHAR_WIDTH 8


#define UCHAR_WIDTH 8


#define SHRT_WIDTH 16


#define USHRT_WIDTH 16


#define INT_WIDTH 32


#define UINT_WIDTH 32


#define LONG_WIDTH __WORDSIZE


#define ULONG_WIDTH __WORDSIZE


#define LLONG_WIDTH 64


#define ULLONG_WIDTH 64
# 186 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/limits.h" 3 4
#define BOOL_MAX 1


#define BOOL_WIDTH 1





# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/posix1_lim.h" 1 3 4
# 25 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/posix1_lim.h" 3 4
#define _BITS_POSIX1_LIM_H 1

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 1 3 4
# 18 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 3 4
#define __WORDSIZE 64
#define __WORDSIZE_TIME64_COMPAT32 0
# 28 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/posix1_lim.h" 2 3 4




#define _POSIX_AIO_LISTIO_MAX 2


#define _POSIX_AIO_MAX 1


#define _POSIX_ARG_MAX 4096



#define _POSIX_CHILD_MAX 25





#define _POSIX_DELAYTIMER_MAX 32



#define _POSIX_HOST_NAME_MAX 255


#define _POSIX_LINK_MAX 8


#define _POSIX_LOGIN_NAME_MAX 9


#define _POSIX_MAX_CANON 255



#define _POSIX_MAX_INPUT 255


#define _POSIX_MQ_OPEN_MAX 8


#define _POSIX_MQ_PRIO_MAX 32


#define _POSIX_NAME_MAX 14



#define _POSIX_NGROUPS_MAX 8






#define _POSIX_OPEN_MAX 20







#define _POSIX_FD_SETSIZE _POSIX_OPEN_MAX



#define _POSIX_PATH_MAX 256


#define _POSIX_PIPE_BUF 512



#define _POSIX_RE_DUP_MAX 255


#define _POSIX_RTSIG_MAX 8


#define _POSIX_SEM_NSEMS_MAX 256


#define _POSIX_SEM_VALUE_MAX 32767


#define _POSIX_SIGQUEUE_MAX 32


#define _POSIX_SSIZE_MAX 32767


#define _POSIX_STREAM_MAX 8


#define _POSIX_SYMLINK_MAX 255



#define _POSIX_SYMLOOP_MAX 8


#define _POSIX_TIMER_MAX 32


#define _POSIX_TTY_NAME_MAX 9



#define _POSIX_TZNAME_MAX 6






#define _POSIX_QLIMIT 1



#define _POSIX_HIWAT _POSIX_PIPE_BUF


#define _POSIX_UIO_MAXIOV 16



#define _POSIX_CLOCKRES_MIN 20000000



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/local_lim.h" 1 3 4
# 25 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/local_lim.h" 3 4
#define __undef_NR_OPEN 


#define __undef_LINK_MAX 


#define __undef_OPEN_MAX 


#define __undef_ARG_MAX 



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/limits.h" 1 3 4


#define _LINUX_LIMITS_H 

#define NR_OPEN 1024

#define NGROUPS_MAX 65536
#define ARG_MAX 131072
#define LINK_MAX 127
#define MAX_CANON 255
#define MAX_INPUT 255
#define NAME_MAX 255
#define PATH_MAX 4096
#define PIPE_BUF 4096
#define XATTR_NAME_MAX 255
#define XATTR_SIZE_MAX 65536
#define XATTR_LIST_MAX 65536

#define RTSIG_MAX 32
# 39 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/local_lim.h" 2 3 4



#undef NR_OPEN
#undef __undef_NR_OPEN



#undef LINK_MAX
#undef __undef_LINK_MAX



#undef OPEN_MAX
#undef __undef_OPEN_MAX



#undef ARG_MAX
#undef __undef_ARG_MAX



#define _POSIX_THREAD_KEYS_MAX 128

#define PTHREAD_KEYS_MAX 1024


#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4

#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS


#define _POSIX_THREAD_THREADS_MAX 64

#undef PTHREAD_THREADS_MAX



#define AIO_PRIO_DELTA_MAX 20


# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/pthread_stack_min-dynamic.h" 1 3 4
# 22 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/pthread_stack_min-dynamic.h" 3 4
#define __SC_THREAD_STACK_MIN_VALUE 75

extern long int __sysconf (int __name) __attribute__ ((__nothrow__ , __leaf__));

#define PTHREAD_STACK_MIN __sysconf (__SC_THREAD_STACK_MIN_VALUE)
# 82 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/local_lim.h" 2 3 4


#define DELAYTIMER_MAX 2147483647


#define TTY_NAME_MAX 32


#define LOGIN_NAME_MAX 256


#define HOST_NAME_MAX 64


#define MQ_PRIO_MAX 32768


#define SEM_VALUE_MAX (2147483647)
# 162 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/posix1_lim.h" 2 3 4







#define SSIZE_MAX LONG_MAX
# 196 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/limits.h" 2 3 4



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/posix2_lim.h" 1 3 4
# 23 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/posix2_lim.h" 3 4
#define _BITS_POSIX2_LIM_H 1



#define _POSIX2_BC_BASE_MAX 99


#define _POSIX2_BC_DIM_MAX 2048


#define _POSIX2_BC_SCALE_MAX 99


#define _POSIX2_BC_STRING_MAX 1000



#define _POSIX2_COLL_WEIGHTS_MAX 2



#define _POSIX2_EXPR_NEST_MAX 32


#define _POSIX2_LINE_MAX 2048



#define _POSIX2_RE_DUP_MAX 255



#define _POSIX2_CHARCLASS_NAME_MAX 14







#define BC_BASE_MAX _POSIX2_BC_BASE_MAX


#define BC_DIM_MAX _POSIX2_BC_DIM_MAX


#define BC_SCALE_MAX _POSIX2_BC_SCALE_MAX


#define BC_STRING_MAX _POSIX2_BC_STRING_MAX


#define COLL_WEIGHTS_MAX 255


#define EXPR_NEST_MAX _POSIX2_EXPR_NEST_MAX


#define LINE_MAX _POSIX2_LINE_MAX


#define CHARCLASS_NAME_MAX 2048



#define RE_DUP_MAX (0x7fff)
# 200 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/limits.h" 2 3 4



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/xopen_lim.h" 1 3 4
# 30 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/xopen_lim.h" 3 4
#define _XOPEN_LIM_H 1
# 62 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/xopen_lim.h" 3 4
#define _XOPEN_IOV_MAX _POSIX_UIO_MAXIOV

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/uio_lim.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/uio_lim.h" 3 4
#define _BITS_UIO_LIM_H 1
# 30 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/uio_lim.h" 3 4
#define __IOV_MAX 1024
# 65 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/xopen_lim.h" 2 3 4

#define IOV_MAX __IOV_MAX






#define NL_ARGMAX _POSIX_ARG_MAX


#define NL_LANGMAX _POSIX2_LINE_MAX


#define NL_MSGMAX INT_MAX




#define NL_NMAX INT_MAX



#define NL_SETMAX INT_MAX


#define NL_TEXTMAX INT_MAX


#define NZERO 20
# 114 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/xopen_lim.h" 3 4
#define WORD_BIT 32
# 137 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/xopen_lim.h" 3 4
#define LONG_BIT 64
# 204 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/limits.h" 2 3 4
# 211 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/limits.h" 2 3 4
# 8 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/syslimits.h" 2 3 4
#undef _GCC_NEXT_LIMITS_H
# 35 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/limits.h" 2 3 4
# 60 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/limits.h" 3 4
#define _LIMITS_H___ 


#undef CHAR_BIT
#define CHAR_BIT __CHAR_BIT__







#undef SCHAR_MIN
#define SCHAR_MIN (-SCHAR_MAX - 1)
#undef SCHAR_MAX
#define SCHAR_MAX __SCHAR_MAX__


#undef UCHAR_MAX



#define UCHAR_MAX (SCHAR_MAX * 2 + 1)
# 96 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/limits.h" 3 4
#undef CHAR_MIN
#define CHAR_MIN SCHAR_MIN
#undef CHAR_MAX
#define CHAR_MAX SCHAR_MAX



#undef SHRT_MIN
#define SHRT_MIN (-SHRT_MAX - 1)
#undef SHRT_MAX
#define SHRT_MAX __SHRT_MAX__


#undef USHRT_MAX



#define USHRT_MAX (SHRT_MAX * 2 + 1)



#undef INT_MIN
#define INT_MIN (-INT_MAX - 1)
#undef INT_MAX
#define INT_MAX __INT_MAX__


#undef UINT_MAX
#define UINT_MAX (INT_MAX * 2U + 1U)



#undef LONG_MIN
#define LONG_MIN (-LONG_MAX - 1L)
#undef LONG_MAX
#define LONG_MAX __LONG_MAX__


#undef ULONG_MAX
#define ULONG_MAX (LONG_MAX * 2UL + 1UL)



#undef LLONG_MIN
#define LLONG_MIN (-LLONG_MAX - 1LL)
#undef LLONG_MAX
#define LLONG_MAX __LONG_LONG_MAX__


#undef ULLONG_MAX
#define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)




#undef LONG_LONG_MIN
#define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL)
#undef LONG_LONG_MAX
#define LONG_LONG_MAX __LONG_LONG_MAX__


#undef ULONG_LONG_MAX
#define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL)
# 168 "system.h" 2



# 1 "hwint.h" 1
# 10 "hwint.h"
#define GCC_HWINT_H 


#define HOST_BITS_PER_CHAR CHAR_BIT
#define HOST_BITS_PER_SHORT (CHAR_BIT * SIZEOF_SHORT)
#define HOST_BITS_PER_INT (CHAR_BIT * SIZEOF_INT)
#define HOST_BITS_PER_LONG (CHAR_BIT * SIZEOF_LONG)


#define HOST_BITS_PER_LONGLONG (CHAR_BIT * SIZEOF_LONG_LONG)
# 67 "hwint.h"
#define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONG
#define HOST_WIDE_INT long
# 84 "hwint.h"
#define HOST_WIDE_INT_PRINT_DEC "%ld"
# 100 "hwint.h"
#define HOST_WIDE_INT_PRINT_UNSIGNED "%lu"
# 116 "hwint.h"
#define HOST_WIDE_INT_PRINT_HEX "0x%lx"
# 133 "hwint.h"
#define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%lx%016lx"
# 178 "hwint.h"
#define HOST_BITS_PER_WIDEST_INT HOST_BITS_PER_LONG
#define HOST_WIDEST_INT long
#define HOST_WIDEST_INT_PRINT_DEC "%ld"
#define HOST_WIDEST_INT_PRINT_UNSIGNED "%lu"
#define HOST_WIDEST_INT_PRINT_HEX "0x%lx"
# 172 "system.h" 2
# 180 "system.h"
#define IN_RANGE(VALUE,LOWER,UPPER) ((unsigned HOST_WIDE_INT) ((VALUE) - (LOWER)) <= ((UPPER) - (LOWER)))






#define INTTYPE_SIGNED(t) (! ((t) 0 < (t) -1))


#define INTTYPE_MINIMUM(t) ((t) (INTTYPE_SIGNED (t) ? ~ (t) 0 << (sizeof(t) * CHAR_BIT - 1) : (t) 0))

#define INTTYPE_MAXIMUM(t) ((t) (~ (t) 0 - INTTYPE_MINIMUM (t)))
# 207 "system.h"
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 1 3 4
# 23 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
#define _TIME_H 1



#define __need_size_t 
#define __need_NULL 
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 1 3 4
# 158 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_ptrdiff_t
# 237 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_size_t
# 349 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_wchar_t
# 399 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef NULL




#define NULL ((void *)0)





#undef __need_NULL




#undef offsetof
#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
# 30 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 2 3 4



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/time.h" 1 3 4
# 24 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/time.h" 3 4
#define _BITS_TIME_H 1
# 34 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/time.h" 3 4
#define CLOCKS_PER_SEC ((__clock_t) 1000000)
# 46 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/time.h" 3 4
#define CLOCK_REALTIME 0

#define CLOCK_MONOTONIC 1

#define CLOCK_PROCESS_CPUTIME_ID 2

#define CLOCK_THREAD_CPUTIME_ID 3

#define CLOCK_MONOTONIC_RAW 4

#define CLOCK_REALTIME_COARSE 5

#define CLOCK_MONOTONIC_COARSE 6

#define CLOCK_BOOTTIME 7

#define CLOCK_REALTIME_ALARM 8

#define CLOCK_BOOTTIME_ALARM 9

#define CLOCK_TAI 11


#define TIMER_ABSTIME 1



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/timex.h" 1 3 4
# 19 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/timex.h" 3 4
#define _BITS_TIMEX_H 1






struct timex
{
# 58 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/timex.h" 3 4
  unsigned int modes;
  __syscall_slong_t offset;
  __syscall_slong_t freq;
  __syscall_slong_t maxerror;
  __syscall_slong_t esterror;
  int status;
  __syscall_slong_t constant;
  __syscall_slong_t precision;
  __syscall_slong_t tolerance;
  struct timeval time;
  __syscall_slong_t tick;
  __syscall_slong_t ppsfreq;
  __syscall_slong_t jitter;
  int shift;
  __syscall_slong_t stabil;
  __syscall_slong_t jitcnt;
  __syscall_slong_t calcnt;
  __syscall_slong_t errcnt;
  __syscall_slong_t stbcnt;

  int tai;


  int :32; int :32; int :32; int :32;
  int :32; int :32; int :32; int :32;
  int :32; int :32; int :32;

};


#define ADJ_OFFSET 0x0001
#define ADJ_FREQUENCY 0x0002
#define ADJ_MAXERROR 0x0004
#define ADJ_ESTERROR 0x0008
#define ADJ_STATUS 0x0010
#define ADJ_TIMECONST 0x0020
#define ADJ_TAI 0x0080
#define ADJ_SETOFFSET 0x0100
#define ADJ_MICRO 0x1000
#define ADJ_NANO 0x2000
#define ADJ_TICK 0x4000
#define ADJ_OFFSET_SINGLESHOT 0x8001
#define ADJ_OFFSET_SS_READ 0xa001


#define MOD_OFFSET ADJ_OFFSET
#define MOD_FREQUENCY ADJ_FREQUENCY
#define MOD_MAXERROR ADJ_MAXERROR
#define MOD_ESTERROR ADJ_ESTERROR
#define MOD_STATUS ADJ_STATUS
#define MOD_TIMECONST ADJ_TIMECONST
#define MOD_CLKB ADJ_TICK
#define MOD_CLKA ADJ_OFFSET_SINGLESHOT
#define MOD_TAI ADJ_TAI
#define MOD_MICRO ADJ_MICRO
#define MOD_NANO ADJ_NANO



#define STA_PLL 0x0001
#define STA_PPSFREQ 0x0002
#define STA_PPSTIME 0x0004
#define STA_FLL 0x0008

#define STA_INS 0x0010
#define STA_DEL 0x0020
#define STA_UNSYNC 0x0040
#define STA_FREQHOLD 0x0080

#define STA_PPSSIGNAL 0x0100
#define STA_PPSJITTER 0x0200
#define STA_PPSWANDER 0x0400
#define STA_PPSERROR 0x0800

#define STA_CLOCKERR 0x1000
#define STA_NANO 0x2000
#define STA_MODE 0x4000
#define STA_CLK 0x8000


#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
# 74 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/time.h" 2 3 4




extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
# 90 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/time.h" 3 4

# 34 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 2 3 4





# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/struct_tm.h" 1 3 4

#define __struct_tm_defined 1




struct tm
{
  int tm_sec;
  int tm_min;
  int tm_hour;
  int tm_mday;
  int tm_mon;
  int tm_year;
  int tm_wday;
  int tm_yday;
  int tm_isdst;


  long int tm_gmtoff;
  const char *tm_zone;




};
# 40 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 2 3 4
# 48 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/struct_itimerspec.h" 1 3 4

#define __itimerspec_defined 1





struct itimerspec
  {
    struct timespec it_interval;
    struct timespec it_value;
  };
# 49 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 2 3 4
struct sigevent;
# 65 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
#define TIME_UTC 1






extern clock_t clock (void) __attribute__ ((__nothrow__ , __leaf__));



extern time_t time (time_t *__timer) __attribute__ ((__nothrow__ , __leaf__));


extern double difftime (time_t __time1, time_t __time0)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));


extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__));
# 100 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
extern size_t strftime (char *__restrict __s, size_t __maxsize,
   const char *__restrict __format,
   const struct tm *__restrict __tp)
   __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3, 4)));




extern char *strptime (const char *__restrict __s,
         const char *__restrict __fmt, struct tm *__tp)
     __attribute__ ((__nothrow__ , __leaf__));






extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
     const char *__restrict __format,
     const struct tm *__restrict __tp,
     locale_t __loc) __attribute__ ((__nothrow__ , __leaf__));



extern char *strptime_l (const char *__restrict __s,
    const char *__restrict __fmt, struct tm *__tp,
    locale_t __loc) __attribute__ ((__nothrow__ , __leaf__));






extern struct tm *gmtime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__));



extern struct tm *localtime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__));
# 155 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
extern struct tm *gmtime_r (const time_t *__restrict __timer,
       struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__));



extern struct tm *localtime_r (const time_t *__restrict __timer,
          struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__));
# 180 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
extern char *asctime (const struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__));



extern char *ctime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__));
# 198 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
extern char *asctime_r (const struct tm *__restrict __tp,
   char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));



extern char *ctime_r (const time_t *__restrict __timer,
        char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));
# 218 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
extern char *__tzname[2];
extern int __daylight;
extern long int __timezone;




extern char *tzname[2];



extern void tzset (void) __attribute__ ((__nothrow__ , __leaf__));



extern int daylight;
extern long int timezone;





#define __isleap(year) ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))






extern time_t timegm (struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__));
# 264 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
extern time_t timelocal (struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__));







extern int dysize (int __year) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
# 282 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
extern int nanosleep (const struct timespec *__requested_time,
        struct timespec *__remaining);


extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __attribute__ ((__nothrow__ , __leaf__));


extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));


extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
# 324 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
extern int clock_nanosleep (clockid_t __clock_id, int __flags,
       const struct timespec *__req,
       struct timespec *__rem);
# 339 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __attribute__ ((__nothrow__ , __leaf__));




extern int timer_create (clockid_t __clock_id,
    struct sigevent *__restrict __evp,
    timer_t *__restrict __timerid) __attribute__ ((__nothrow__ , __leaf__));


extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__ , __leaf__));



extern int timer_settime (timer_t __timerid, int __flags,
     const struct itimerspec *__restrict __value,
     struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__ , __leaf__));


extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
     __attribute__ ((__nothrow__ , __leaf__));
# 377 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__ , __leaf__));






extern int timespec_get (struct timespec *__ts, int __base)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 400 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
extern int timespec_getres (struct timespec *__ts, int __base)
     __attribute__ ((__nothrow__ , __leaf__));
# 426 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
extern int getdate_err;
# 435 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
extern struct tm *getdate (const char *__string);
# 449 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/time.h" 3 4
extern int getdate_r (const char *__restrict __string,
        struct tm *__restrict __resbufp);



# 208 "system.h" 2





# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 1 3 4
# 23 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4
#define _FCNTL_H 1











# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/fcntl.h" 1 3 4
# 23 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/fcntl.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 1 3 4
# 18 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 3 4
#define __WORDSIZE 64
#define __WORDSIZE_TIME64_COMPAT32 0
# 24 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/fcntl.h" 2 3 4




#define __O_LARGEFILE 0

#define F_GETLK64 5
#define F_SETLK64 6
#define F_SETLKW64 7


struct flock
{
  short int l_type;
  short int l_whence;

  __off_t l_start;
  __off_t l_len;




  __pid_t l_pid;
};


struct flock64
{
  short int l_type;
  short int l_whence;
  __off64_t l_start;
  __off64_t l_len;
  __pid_t l_pid;
};



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/fcntl-linux.h" 1 3 4
# 38 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/fcntl-linux.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/struct_iovec.h" 1 3 4
# 20 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/struct_iovec.h" 3 4
#define __iovec_defined 1

#define __need_size_t 
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 1 3 4
# 158 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_ptrdiff_t
# 237 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_size_t
# 349 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef __need_wchar_t
# 399 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 3 4
#undef NULL




#define NULL ((void *)0)





#undef __need_NULL




#undef offsetof
#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
# 24 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/struct_iovec.h" 2 3 4


struct iovec
  {
    void *iov_base;
    size_t iov_len;
  };
# 39 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/fcntl-linux.h" 2 3 4



#define O_ACCMODE 0003
#define O_RDONLY 00
#define O_WRONLY 01
#define O_RDWR 02

#define O_CREAT 0100


#define O_EXCL 0200


#define O_NOCTTY 0400


#define O_TRUNC 01000


#define O_APPEND 02000


#define O_NONBLOCK 04000


#define O_NDELAY O_NONBLOCK


#define O_SYNC 04010000

#define O_FSYNC O_SYNC

#define O_ASYNC 020000






#define __O_DIRECTORY 0200000


#define __O_NOFOLLOW 0400000


#define __O_CLOEXEC 02000000


#define __O_DIRECT 040000


#define __O_NOATIME 01000000


#define __O_PATH 010000000


#define __O_DSYNC 010000


#define __O_TMPFILE (020000000 | __O_DIRECTORY)
# 109 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/fcntl-linux.h" 3 4
#define F_GETLK F_GETLK64
#define F_SETLK F_SETLK64
#define F_SETLKW F_SETLKW64
# 132 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/fcntl-linux.h" 3 4
#define F_OFD_GETLK 36
#define F_OFD_SETLK 37
#define F_OFD_SETLKW 38



#define O_LARGEFILE __O_LARGEFILE



#define O_DIRECTORY __O_DIRECTORY
#define O_NOFOLLOW __O_NOFOLLOW
#define O_CLOEXEC __O_CLOEXEC



#define O_DIRECT __O_DIRECT
#define O_NOATIME __O_NOATIME
#define O_PATH __O_PATH
#define O_TMPFILE __O_TMPFILE






#define O_DSYNC __O_DSYNC



#define O_RSYNC O_SYNC




#define F_DUPFD 0
#define F_GETFD 1
#define F_SETFD 2
#define F_GETFL 3
#define F_SETFL 4


#define __F_SETOWN 8
#define __F_GETOWN 9



#define F_SETOWN __F_SETOWN
#define F_GETOWN __F_GETOWN



#define __F_SETSIG 10
#define __F_GETSIG 11


#define __F_SETOWN_EX 15
#define __F_GETOWN_EX 16



#define F_SETSIG __F_SETSIG
#define F_GETSIG __F_GETSIG
#define F_SETOWN_EX __F_SETOWN_EX
#define F_GETOWN_EX __F_GETOWN_EX



#define F_SETLEASE 1024
#define F_GETLEASE 1025
#define F_NOTIFY 1026
#define F_SETPIPE_SZ 1031
#define F_GETPIPE_SZ 1032
#define F_ADD_SEALS 1033
#define F_GET_SEALS 1034

#define F_GET_RW_HINT 1035
#define F_SET_RW_HINT 1036
#define F_GET_FILE_RW_HINT 1037
#define F_SET_FILE_RW_HINT 1038


#define F_DUPFD_CLOEXEC 1030




#define FD_CLOEXEC 1



#define F_RDLCK 0
#define F_WRLCK 1
#define F_UNLCK 2





#define F_EXLCK 4
#define F_SHLCK 8




#define LOCK_SH 1
#define LOCK_EX 2
#define LOCK_NB 4

#define LOCK_UN 8



#define LOCK_MAND 32
#define LOCK_READ 64
#define LOCK_WRITE 128
#define LOCK_RW 192




#define DN_ACCESS 0x00000001
#define DN_MODIFY 0x00000002
#define DN_CREATE 0x00000004
#define DN_DELETE 0x00000008
#define DN_RENAME 0x00000010
#define DN_ATTRIB 0x00000020
#define DN_MULTISHOT 0x80000000





enum __pid_type
  {
    F_OWNER_TID = 0,
    F_OWNER_PID,
    F_OWNER_PGRP,
    F_OWNER_GID = F_OWNER_PGRP
  };


struct f_owner_ex
  {
    enum __pid_type type;
    __pid_t pid;
  };




#define F_SEAL_SEAL 0x0001
#define F_SEAL_SHRINK 0x0002
#define F_SEAL_GROW 0x0004
#define F_SEAL_WRITE 0x0008
#define F_SEAL_FUTURE_WRITE 0x0010

#define F_SEAL_EXEC 0x0020




#define RWH_WRITE_LIFE_NOT_SET 0
#define RWF_WRITE_LIFE_NOT_SET RWH_WRITE_LIFE_NOT_SET
#define RWH_WRITE_LIFE_NONE 1
#define RWH_WRITE_LIFE_SHORT 2
#define RWH_WRITE_LIFE_MEDIUM 3
#define RWH_WRITE_LIFE_LONG 4
#define RWH_WRITE_LIFE_EXTREME 5





#define FAPPEND O_APPEND
#define FFSYNC O_FSYNC
#define FASYNC O_ASYNC
#define FNONBLOCK O_NONBLOCK
#define FNDELAY O_NDELAY



#define __POSIX_FADV_DONTNEED 4
#define __POSIX_FADV_NOREUSE 5



#define POSIX_FADV_NORMAL 0
#define POSIX_FADV_RANDOM 1
#define POSIX_FADV_SEQUENTIAL 2
#define POSIX_FADV_WILLNEED 3
#define POSIX_FADV_DONTNEED __POSIX_FADV_DONTNEED
#define POSIX_FADV_NOREUSE __POSIX_FADV_NOREUSE





#define SYNC_FILE_RANGE_WAIT_BEFORE 1


#define SYNC_FILE_RANGE_WRITE 2


#define SYNC_FILE_RANGE_WAIT_AFTER 4




#define SYNC_FILE_RANGE_WRITE_AND_WAIT (SYNC_FILE_RANGE_WRITE | SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WAIT_AFTER)




#define SPLICE_F_MOVE 1
#define SPLICE_F_NONBLOCK 2


#define SPLICE_F_MORE 4
#define SPLICE_F_GIFT 8



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/falloc.h" 1 3 4


#define _FALLOC_H_ 

#define FALLOC_FL_KEEP_SIZE 0x01
#define FALLOC_FL_PUNCH_HOLE 0x02
#define FALLOC_FL_NO_HIDE_STALE 0x04
# 29 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/falloc.h" 3 4
#define FALLOC_FL_COLLAPSE_RANGE 0x08
# 43 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/falloc.h" 3 4
#define FALLOC_FL_ZERO_RANGE 0x10
# 60 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/falloc.h" 3 4
#define FALLOC_FL_INSERT_RANGE 0x20
# 78 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/falloc.h" 3 4
#define FALLOC_FL_UNSHARE_RANGE 0x40
# 356 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/fcntl-linux.h" 2 3 4



struct file_handle
{
  unsigned int handle_bytes;
  int handle_type;

  unsigned char f_handle[0];
};


#define MAX_HANDLE_SZ 128







extern __ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
    __attribute__ ((__nothrow__ , __leaf__));






extern int sync_file_range (int __fd, __off64_t __offset, __off64_t __count,
       unsigned int __flags);






extern __ssize_t vmsplice (int __fdout, const struct iovec *__iov,
      size_t __count, unsigned int __flags);





extern __ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
    __off64_t *__offout, size_t __len,
    unsigned int __flags);





extern __ssize_t tee (int __fdin, int __fdout, size_t __len,
        unsigned int __flags);






extern int fallocate (int __fd, int __mode, __off_t __offset, __off_t __len);
# 426 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/fcntl-linux.h" 3 4
extern int fallocate64 (int __fd, int __mode, __off64_t __offset,
   __off64_t __len);




extern int name_to_handle_at (int __dfd, const char *__name,
         struct file_handle *__handle, int *__mnt_id,
         int __flags) __attribute__ ((__nothrow__ , __leaf__));





extern int open_by_handle_at (int __mountdirfd, struct file_handle *__handle,
         int __flags);




# 62 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/fcntl.h" 2 3 4
# 36 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 2 3 4




#define __OPEN_NEEDS_MODE(oflag) (((oflag) & O_CREAT) != 0 || ((oflag) & __O_TMPFILE) == __O_TMPFILE)
# 78 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stat.h" 1 3 4
# 23 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stat.h" 3 4
#define _BITS_STAT_H 1

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/struct_stat.h" 1 3 4
# 24 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/struct_stat.h" 3 4
#define _BITS_STRUCT_STAT_H 1


# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 1 3 4
# 18 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/wordsize.h" 3 4
#define __WORDSIZE 64
#define __WORDSIZE_TIME64_COMPAT32 0
# 28 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/struct_stat.h" 2 3 4







#define __field64(type,type64,name) type name
# 44 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/struct_stat.h" 3 4
struct stat
  {
    __dev_t st_dev;
    __ino_t st_ino;
    __mode_t st_mode;
    __nlink_t st_nlink;
    __uid_t st_uid;
    __gid_t st_gid;
    __dev_t st_rdev;
    __dev_t __pad1;
    __off_t st_size;
    __blksize_t st_blksize;
    int __pad2;
    __blkcnt_t st_blocks;







    struct timespec st_atim;
    struct timespec st_mtim;
    struct timespec st_ctim;
#define st_atime st_atim.tv_sec
#define st_mtime st_mtim.tv_sec
#define st_ctime st_ctim.tv_sec
# 79 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/struct_stat.h" 3 4
    int __glibc_reserved[2];
  };

#undef __field64


struct stat64
  {
    __dev_t st_dev;
    __ino64_t st_ino;
    __mode_t st_mode;
    __nlink_t st_nlink;
    __uid_t st_uid;
    __gid_t st_gid;
    __dev_t st_rdev;
    __dev_t __pad1;
    __off64_t st_size;
    __blksize_t st_blksize;
    int __pad2;
    __blkcnt64_t st_blocks;







    struct timespec st_atim;
    struct timespec st_mtim;
    struct timespec st_ctim;
# 117 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/struct_stat.h" 3 4
    int __glibc_reserved[2];
  };



#define _STATBUF_ST_BLKSIZE 
#define _STATBUF_ST_RDEV 

#define _STATBUF_ST_NSEC 
# 26 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stat.h" 2 3 4



#define __S_IFMT 0170000


#define __S_IFDIR 0040000
#define __S_IFCHR 0020000
#define __S_IFBLK 0060000
#define __S_IFREG 0100000
#define __S_IFIFO 0010000
#define __S_IFLNK 0120000
#define __S_IFSOCK 0140000



#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)



#define __S_ISUID 04000
#define __S_ISGID 02000
#define __S_ISVTX 01000
#define __S_IREAD 0400
#define __S_IWRITE 0200
#define __S_IEXEC 0100


#define UTIME_NOW ((1l << 30) - 1l)
#define UTIME_OMIT ((1l << 30) - 2l)
# 79 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 2 3 4

#define S_IFMT __S_IFMT
#define S_IFDIR __S_IFDIR
#define S_IFCHR __S_IFCHR
#define S_IFBLK __S_IFBLK
#define S_IFREG __S_IFREG

#define S_IFIFO __S_IFIFO


#define S_IFLNK __S_IFLNK


#define S_IFSOCK __S_IFSOCK




#define S_ISUID __S_ISUID
#define S_ISGID __S_ISGID



#define S_ISVTX __S_ISVTX


#define S_IRUSR __S_IREAD
#define S_IWUSR __S_IWRITE
#define S_IXUSR __S_IEXEC

#define S_IRWXU (__S_IREAD|__S_IWRITE|__S_IEXEC)

#define S_IRGRP (S_IRUSR >> 3)
#define S_IWGRP (S_IWUSR >> 3)
#define S_IXGRP (S_IXUSR >> 3)

#define S_IRWXG (S_IRWXU >> 3)

#define S_IROTH (S_IRGRP >> 3)
#define S_IWOTH (S_IWGRP >> 3)
#define S_IXOTH (S_IXGRP >> 3)

#define S_IRWXO (S_IRWXG >> 3)
# 137 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4
#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2
# 149 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4
#define AT_FDCWD -100


#define AT_SYMLINK_NOFOLLOW 0x100
#define AT_REMOVEDIR 0x200

#define AT_SYMLINK_FOLLOW 0x400

#define AT_NO_AUTOMOUNT 0x800

#define AT_EMPTY_PATH 0x1000
#define AT_STATX_SYNC_TYPE 0x6000
#define AT_STATX_SYNC_AS_STAT 0x0000
#define AT_STATX_FORCE_SYNC 0x2000
#define AT_STATX_DONT_SYNC 0x4000
#define AT_RECURSIVE 0x8000

#define AT_EACCESS 0x200
# 177 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4
extern int fcntl (int __fd, int __cmd, ...);
# 186 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4
extern int fcntl64 (int __fd, int __cmd, ...);
# 209 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4
extern int open (const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1)));
# 219 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4
extern int open64 (const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1)));
# 233 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4
extern int openat (int __fd, const char *__file, int __oflag, ...)
     __attribute__ ((__nonnull__ (2)));
# 244 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4
extern int openat64 (int __fd, const char *__file, int __oflag, ...)
     __attribute__ ((__nonnull__ (2)));
# 255 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4
extern int creat (const char *__file, mode_t __mode) __attribute__ ((__nonnull__ (1)));
# 265 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4
extern int creat64 (const char *__file, mode_t __mode) __attribute__ ((__nonnull__ (1)));
# 301 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4
extern int posix_fadvise (int __fd, off_t __offset, off_t __len,
     int __advise) __attribute__ ((__nothrow__ , __leaf__));
# 313 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4
extern int posix_fadvise64 (int __fd, off64_t __offset, off64_t __len,
       int __advise) __attribute__ ((__nothrow__ , __leaf__));
# 323 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4
extern int posix_fallocate (int __fd, off_t __offset, off_t __len);
# 334 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4
extern int posix_fallocate64 (int __fd, off64_t __offset, off64_t __len);
# 345 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/fcntl.h" 3 4

# 214 "system.h" 2
# 242 "system.h"
#undef MIN
#undef MAX
#define MIN(X,Y) ((X) < (Y) ? (X) : (Y))
#define MAX(X,Y) ((X) > (Y) ? (X) : (Y))


#define CEIL(x,y) (((x) + (y) - 1) / (y))
# 312 "system.h"
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/malloc.h" 1 3 4
# 21 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/malloc.h" 3 4
#define _MALLOC_H 1


# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 1 3 4
# 25 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/malloc.h" 2 3 4






#define __MALLOC_HOOK_VOLATILE volatile
#define __MALLOC_DEPRECATED __attribute_deprecated__






extern void *malloc (size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__))
     __attribute__ ((__alloc_size__ (1))) ;


extern void *calloc (size_t __nmemb, size_t __size)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) ;






extern void *realloc (void *__ptr, size_t __size)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2)));






extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
  __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2, 3)))
  __attribute__ ((__malloc__ (__builtin_free, 1)));


extern void free (void *__ptr) __attribute__ ((__nothrow__ , __leaf__));


extern void *memalign (size_t __alignment, size_t __size)
  __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_align__ (1)))
  __attribute__ ((__alloc_size__ (2))) __attribute__ ((__malloc__ (__builtin_free, 1)));


extern void *valloc (size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__))
     __attribute__ ((__alloc_size__ (1))) __attribute__ ((__malloc__ (__builtin_free, 1)));



extern void *pvalloc (size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__))
  __attribute__ ((__malloc__ (__builtin_free, 1)));



struct mallinfo
{
  int arena;
  int ordblks;
  int smblks;
  int hblks;
  int hblkhd;
  int usmblks;
  int fsmblks;
  int uordblks;
  int fordblks;
  int keepcost;
};




struct mallinfo2
{
  size_t arena;
  size_t ordblks;
  size_t smblks;
  size_t hblks;
  size_t hblkhd;
  size_t usmblks;
  size_t fsmblks;
  size_t uordblks;
  size_t fordblks;
  size_t keepcost;
};


extern struct mallinfo mallinfo (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));


extern struct mallinfo2 mallinfo2 (void) __attribute__ ((__nothrow__ , __leaf__));



#define M_MXFAST 1


#define M_NLBLKS 2


#define M_GRAIN 3


#define M_KEEP 4



#define M_TRIM_THRESHOLD -1
#define M_TOP_PAD -2
#define M_MMAP_THRESHOLD -3
#define M_MMAP_MAX -4
#define M_CHECK_ACTION -5
#define M_PERTURB -6
#define M_ARENA_TEST -7
#define M_ARENA_MAX -8


extern int mallopt (int __param, int __val) __attribute__ ((__nothrow__ , __leaf__));



extern int malloc_trim (size_t __pad) __attribute__ ((__nothrow__ , __leaf__));



extern size_t malloc_usable_size (void *__ptr) __attribute__ ((__nothrow__ , __leaf__));


extern void malloc_stats (void) __attribute__ ((__nothrow__ , __leaf__));


extern int malloc_info (int __options, FILE *__fp) __attribute__ ((__nothrow__ , __leaf__));


# 313 "system.h" 2
# 369 "system.h"
#define HAVE_DESIGNATED_INITIALIZERS ((GCC_VERSION >= 2007) || (__STDC_VERSION__ >= 199901L))





#define HAVE__BOOL ((GCC_VERSION >= 3000) || (__STDC_VERSION__ >= 199901L))





# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/stat.h" 1 3 4
# 23 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/stat.h" 3 4
#define _SYS_STAT_H 1
# 99 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/stat.h" 3 4


# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/stat.h" 1 3 4
# 102 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/stat.h" 2 3 4


#define S_IFMT __S_IFMT
#define S_IFDIR __S_IFDIR
#define S_IFCHR __S_IFCHR
#define S_IFBLK __S_IFBLK
#define S_IFREG __S_IFREG

#define S_IFIFO __S_IFIFO


#define S_IFLNK __S_IFLNK



#define S_IFSOCK __S_IFSOCK





#define __S_ISTYPE(mode,mask) (((mode) & __S_IFMT) == (mask))

#define S_ISDIR(mode) __S_ISTYPE((mode), __S_IFDIR)
#define S_ISCHR(mode) __S_ISTYPE((mode), __S_IFCHR)
#define S_ISBLK(mode) __S_ISTYPE((mode), __S_IFBLK)
#define S_ISREG(mode) __S_ISTYPE((mode), __S_IFREG)

#define S_ISFIFO(mode) __S_ISTYPE((mode), __S_IFIFO)


#define S_ISLNK(mode) __S_ISTYPE((mode), __S_IFLNK)
# 142 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/stat.h" 3 4
#define S_ISSOCK(mode) __S_ISTYPE((mode), __S_IFSOCK)
# 152 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/stat.h" 3 4
#define S_TYPEISMQ(buf) __S_TYPEISMQ(buf)
#define S_TYPEISSEM(buf) __S_TYPEISSEM(buf)
#define S_TYPEISSHM(buf) __S_TYPEISSHM(buf)





#define S_ISUID __S_ISUID
#define S_ISGID __S_ISGID



#define S_ISVTX __S_ISVTX


#define S_IRUSR __S_IREAD
#define S_IWUSR __S_IWRITE
#define S_IXUSR __S_IEXEC

#define S_IRWXU (__S_IREAD|__S_IWRITE|__S_IEXEC)


#define S_IREAD S_IRUSR
#define S_IWRITE S_IWUSR
#define S_IEXEC S_IXUSR


#define S_IRGRP (S_IRUSR >> 3)
#define S_IWGRP (S_IWUSR >> 3)
#define S_IXGRP (S_IXUSR >> 3)

#define S_IRWXG (S_IRWXU >> 3)

#define S_IROTH (S_IRGRP >> 3)
#define S_IWOTH (S_IWGRP >> 3)
#define S_IXOTH (S_IXGRP >> 3)

#define S_IRWXO (S_IRWXG >> 3)




#define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO)
#define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)
#define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)

#define S_BLKSIZE 512





extern int stat (const char *__restrict __file,
   struct stat *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));



extern int fstat (int __fd, struct stat *__buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
# 240 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/stat.h" 3 4
extern int stat64 (const char *__restrict __file,
     struct stat64 *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int fstat64 (int __fd, struct stat64 *__buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
# 264 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/stat.h" 3 4
extern int fstatat (int __fd, const char *__restrict __file,
      struct stat *__restrict __buf, int __flag)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
# 291 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/stat.h" 3 4
extern int fstatat64 (int __fd, const char *__restrict __file,
        struct stat64 *__restrict __buf, int __flag)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
# 313 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/stat.h" 3 4
extern int lstat (const char *__restrict __file,
    struct stat *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
# 338 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/stat.h" 3 4
extern int lstat64 (const char *__restrict __file,
      struct stat64 *__restrict __buf)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
# 352 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/stat.h" 3 4
extern int chmod (const char *__file, __mode_t __mode)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern int lchmod (const char *__file, __mode_t __mode)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));




extern int fchmod (int __fd, __mode_t __mode) __attribute__ ((__nothrow__ , __leaf__));





extern int fchmodat (int __fd, const char *__file, __mode_t __mode,
       int __flag)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) ;






extern __mode_t umask (__mode_t __mask) __attribute__ ((__nothrow__ , __leaf__));




extern __mode_t getumask (void) __attribute__ ((__nothrow__ , __leaf__));



extern int mkdir (const char *__path, __mode_t __mode)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern int mkdirat (int __fd, const char *__path, __mode_t __mode)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));






extern int mknod (const char *__path, __mode_t __mode, __dev_t __dev)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern int mknodat (int __fd, const char *__path, __mode_t __mode,
      __dev_t __dev) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));





extern int mkfifo (const char *__path, __mode_t __mode)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));





extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));






extern int utimensat (int __fd, const char *__path,
        const struct timespec __times[2],
        int __flags)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
# 452 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/stat.h" 3 4
extern int futimens (int __fd, const struct timespec __times[2]) __attribute__ ((__nothrow__ , __leaf__));
# 465 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/stat.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/statx.h" 1 3 4
# 31 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/statx.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/stat.h" 1 3 4


#define _LINUX_STAT_H 

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/types.h" 1 3 4


#define _LINUX_TYPES_H 

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm/types.h" 1 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm-generic/types.h" 1 3 4


#define _ASM_GENERIC_TYPES_H 



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm-generic/int-ll64.h" 1 3 4
# 10 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm-generic/int-ll64.h" 3 4
#define _ASM_GENERIC_INT_LL64_H 

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm/bitsperlong.h" 1 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm-generic/bitsperlong.h" 1 3 4


#define __ASM_GENERIC_BITS_PER_LONG 
# 14 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm-generic/bitsperlong.h" 3 4
#define __BITS_PER_LONG (__CHAR_BIT__ * __SIZEOF_LONG__)
# 2 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm/bitsperlong.h" 2 3 4
# 13 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm-generic/int-ll64.h" 2 3 4







typedef __signed__ char __s8;
typedef unsigned char __u8;

typedef __signed__ short __s16;
typedef unsigned short __u16;

typedef __signed__ int __s32;
typedef unsigned int __u32;


__extension__ typedef __signed__ long long __s64;
__extension__ typedef unsigned long long __u64;
# 8 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm-generic/types.h" 2 3 4
# 2 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm/types.h" 2 3 4
# 6 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/types.h" 2 3 4



# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/posix_types.h" 1 3 4


#define _LINUX_POSIX_TYPES_H 

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/stddef.h" 1 3 4


#define _LINUX_STDDEF_H 
# 26 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/stddef.h" 3 4
#define __struct_group(TAG,NAME,ATTRS,MEMBERS...) union { struct { MEMBERS } ATTRS; struct TAG { MEMBERS } ATTRS NAME; }
# 47 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/stddef.h" 3 4
#define __DECLARE_FLEX_ARRAY(TYPE,NAME) struct { struct { } __empty_ ## NAME; TYPE NAME[]; }







#define __counted_by(m) 
# 6 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/posix_types.h" 2 3 4
# 22 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/posix_types.h" 3 4
#undef __FD_SETSIZE
#define __FD_SETSIZE 1024

typedef struct {
 unsigned long fds_bits[1024 / (8 * sizeof(long))];
} __kernel_fd_set;


typedef void (*__kernel_sighandler_t)(int);


typedef int __kernel_key_t;
typedef int __kernel_mqd_t;

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm/posix_types.h" 1 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm-generic/posix_types.h" 1 3 4


#define __ASM_GENERIC_POSIX_TYPES_H 

# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm/bitsperlong.h" 1 3 4
# 6 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm-generic/posix_types.h" 2 3 4
# 15 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm-generic/posix_types.h" 3 4
typedef long __kernel_long_t;
typedef unsigned long __kernel_ulong_t;



typedef __kernel_ulong_t __kernel_ino_t;



typedef unsigned int __kernel_mode_t;



typedef int __kernel_pid_t;



typedef int __kernel_ipc_pid_t;



typedef unsigned int __kernel_uid_t;
typedef unsigned int __kernel_gid_t;



typedef __kernel_long_t __kernel_suseconds_t;



typedef int __kernel_daddr_t;



typedef unsigned int __kernel_uid32_t;
typedef unsigned int __kernel_gid32_t;



typedef __kernel_uid_t __kernel_old_uid_t;
typedef __kernel_gid_t __kernel_old_gid_t;



typedef unsigned int __kernel_old_dev_t;
# 72 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm-generic/posix_types.h" 3 4
typedef __kernel_ulong_t __kernel_size_t;
typedef __kernel_long_t __kernel_ssize_t;
typedef __kernel_long_t __kernel_ptrdiff_t;




typedef struct {
 int val[2];
} __kernel_fsid_t;





typedef __kernel_long_t __kernel_off_t;
typedef long long __kernel_loff_t;
typedef __kernel_long_t __kernel_old_time_t;
typedef __kernel_long_t __kernel_time_t;
typedef long long __kernel_time64_t;
typedef __kernel_long_t __kernel_clock_t;
typedef int __kernel_timer_t;
typedef int __kernel_clockid_t;
typedef char * __kernel_caddr_t;
typedef unsigned short __kernel_uid16_t;
typedef unsigned short __kernel_gid16_t;
# 2 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/asm/posix_types.h" 2 3 4
# 37 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/posix_types.h" 2 3 4
# 10 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/types.h" 2 3 4


typedef __signed__ __int128 __s128 __attribute__((aligned(16)));
typedef unsigned __int128 __u128 __attribute__((aligned(16)));
# 25 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/types.h" 3 4
#define __bitwise 



#define __bitwise__ __bitwise

typedef __u16 __le16;
typedef __u16 __be16;
typedef __u32 __le32;
typedef __u32 __be32;
typedef __u64 __le64;
typedef __u64 __be64;

typedef __u16 __sum16;
typedef __u32 __wsum;
# 50 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/types.h" 3 4
#define __aligned_u64 __u64 __attribute__((aligned(8)))
#define __aligned_be64 __be64 __attribute__((aligned(8)))
#define __aligned_le64 __le64 __attribute__((aligned(8)))

typedef unsigned __poll_t;
# 6 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/stat.h" 2 3 4
# 56 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/stat.h" 3 4
struct statx_timestamp {
 __s64 tv_sec;
 __u32 tv_nsec;
 __s32 __reserved;
};
# 99 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/stat.h" 3 4
struct statx {

 __u32 stx_mask;
 __u32 stx_blksize;
 __u64 stx_attributes;

 __u32 stx_nlink;
 __u32 stx_uid;
 __u32 stx_gid;
 __u16 stx_mode;
 __u16 __spare0[1];

 __u64 stx_ino;
 __u64 stx_size;
 __u64 stx_blocks;
 __u64 stx_attributes_mask;

 struct statx_timestamp stx_atime;
 struct statx_timestamp stx_btime;
 struct statx_timestamp stx_ctime;
 struct statx_timestamp stx_mtime;

 __u32 stx_rdev_major;
 __u32 stx_rdev_minor;
 __u32 stx_dev_major;
 __u32 stx_dev_minor;

 __u64 stx_mnt_id;
 __u32 stx_dio_mem_align;
 __u32 stx_dio_offset_align;

 __u64 __spare3[12];

};
# 142 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/stat.h" 3 4
#define STATX_TYPE 0x00000001U
#define STATX_MODE 0x00000002U
#define STATX_NLINK 0x00000004U
#define STATX_UID 0x00000008U
#define STATX_GID 0x00000010U
#define STATX_ATIME 0x00000020U
#define STATX_MTIME 0x00000040U
#define STATX_CTIME 0x00000080U
#define STATX_INO 0x00000100U
#define STATX_SIZE 0x00000200U
#define STATX_BLOCKS 0x00000400U
#define STATX_BASIC_STATS 0x000007ffU
#define STATX_BTIME 0x00000800U
#define STATX_MNT_ID 0x00001000U
#define STATX_DIOALIGN 0x00002000U

#define STATX__RESERVED 0x80000000U






#define STATX_ALL 0x00000fffU
# 181 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/linux/stat.h" 3 4
#define STATX_ATTR_COMPRESSED 0x00000004
#define STATX_ATTR_IMMUTABLE 0x00000010
#define STATX_ATTR_APPEND 0x00000020
#define STATX_ATTR_NODUMP 0x00000040
#define STATX_ATTR_ENCRYPTED 0x00000800
#define STATX_ATTR_AUTOMOUNT 0x00001000
#define STATX_ATTR_MOUNT_ROOT 0x00002000
#define STATX_ATTR_VERITY 0x00100000
#define STATX_ATTR_DAX 0x00200000
# 32 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/statx.h" 2 3 4

#define __statx_timestamp_defined 1
#define __statx_defined 1




# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/statx-generic.h" 1 3 4
# 25 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/statx-generic.h" 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/struct_statx_timestamp.h" 1 3 4
# 26 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/statx-generic.h" 2 3 4
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/types/struct_statx.h" 1 3 4
# 27 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/statx-generic.h" 2 3 4
# 58 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/statx-generic.h" 3 4



int statx (int __dirfd, const char *__restrict __path, int __flags,
           unsigned int __mask, struct statx *__restrict __buf)
  __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 5)));


# 40 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/bits/statx.h" 2 3 4
# 466 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/loongarch64-linux-gnu/sysroot/usr/include/sys/stat.h" 2 3 4



# 382 "system.h" 2
# 454 "system.h"
#define HOST_PTR_PRINTF "%p"
# 464 "system.h"
#define PATH_SEPARATOR ':'



#define DIR_SEPARATOR '/'




#define IS_DIR_SEPARATOR(CH) ((CH) == DIR_SEPARATOR)
# 488 "system.h"
#define IS_ABSOLUTE_PATHNAME(STR) (IS_DIR_SEPARATOR ((STR)[0]) || (STR)[0] == '$')




# 1 "libiberty.h" 1
# 36 "libiberty.h"
#define LIBIBERTY_H 
# 46 "libiberty.h"
# 1 "/home/chenglulu/work/loongisa-toolchain/new_toolchain/install/loongarch64-linux-gnu-trunk/lib/gcc/loongarch64-linux-gnu/14.0.1/include/stddef.h" 1 3 4
# 47 "libiberty.h" 2
# 59 "libiberty.h"

# 59 "libiberty.h"
extern char **buildargv (const char *) __attribute__ ((__malloc__));



extern void freeargv (char **);




extern char **dupargv (char **) __attribute__ ((__malloc__));
# 82 "libiberty.h"
extern char *basename (const char *);
# 91 "libiberty.h"
extern const char *lbasename (const char *);





extern char *concat (const char *, ...) __attribute__ ((__malloc__));
# 106 "libiberty.h"
extern char *reconcat (char *, const char *, ...) __attribute__ ((__malloc__));





extern unsigned long concat_length (const char *, ...);






extern char *concat_copy (char *, const char *, ...);






extern char *concat_copy2 (const char *, ...);



extern char *libiberty_concat_ptr;





#define ACONCAT(ACONCAT_PARAMS) (libiberty_concat_ptr = alloca (concat_length ACONCAT_PARAMS + 1), concat_copy2 ACONCAT_PARAMS)





extern int fdmatch (int fd1, int fd2);




extern char * getpwd (void);



extern long get_run_time (void);



extern char *choose_temp_base (void) __attribute__ ((__malloc__));



extern char *make_temp_file (const char *) __attribute__ ((__malloc__));



extern const char *spaces (int count);




extern int errno_max (void);




extern const char *strerrno (int);



extern int strtoerrno (const char *);



extern char *xstrerror (int);




extern int signo_max (void);
# 198 "libiberty.h"
extern const char *strsigno (int);



extern int strtosigno (const char *);



extern int xatexit (void (*fn) (void));



extern void xexit (int status) __attribute__ ((__noreturn__));



extern void xmalloc_set_program_name (const char *);


extern void xmalloc_failed (size_t) __attribute__ ((__noreturn__));





extern void * xmalloc (size_t) __attribute__ ((__malloc__));





extern void * xrealloc (void *, size_t);




extern void * xcalloc (size_t, size_t) __attribute__ ((__malloc__));



extern char *xstrdup (const char *) __attribute__ ((__malloc__));



extern void * xmemdup (const void *, size_t, size_t) __attribute__ ((__malloc__));


extern void specqsort (void *, int, int, int (*)() );



#define _hex_array_size 256
#define _hex_bad 99
extern const char _hex_value[256];
extern void hex_init (void);
#define hex_p(c) (hex_value (c) != _hex_bad)


#define hex_value(c) (_hex_value[(unsigned char) (c)])



#define PEXECUTE_FIRST 1
#define PEXECUTE_LAST 2
#define PEXECUTE_ONE (PEXECUTE_FIRST + PEXECUTE_LAST)
#define PEXECUTE_SEARCH 4
#define PEXECUTE_VERBOSE 8



extern int pexecute (const char *, char * const *, const char *, const char *, char **, char **, int)
                                            ;



extern int pwait (int, int *, int);




extern int asprintf (char **, const char *, ...) __attribute__ ((__format__ (__printf__, 2, 3)));




extern int vasprintf (char **, const char *, va_list)
  __attribute__ ((__format__ (__printf__, 2, 0)));

#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
# 494 "system.h" 2
# 1 "symcat.h" 1
# 20 "symcat.h"
#define SYM_CAT_H 


#define CONCAT2(a,b) a ##b
#define CONCAT3(a,b,c) a ##b ##c
#define CONCAT4(a,b,c,d) a ##b ##c ##d
#define STRINGX(s) #s
# 38 "symcat.h"
#define XCONCAT2(a,b) CONCAT2(a,b)
#define XCONCAT3(a,b,c) CONCAT3(a,b,c)
#define XCONCAT4(a,b,c,d) CONCAT4(a,b,c,d)






#define XSTRING(s) STRINGX(s)
# 495 "system.h" 2





#define HOST_BIT_BUCKET "/dev/null"
# 509 "system.h"
#define ENUM_BITFIELD(TYPE) unsigned int
# 527 "system.h"
#define UNION_INIT_ZERO , {0}
# 549 "system.h"
#undef bool
#undef true
#undef false
#undef TRUE
#undef FALSE







#define bool _Bool
#define true 1
#define false 0


#define TRUE true
#define FALSE false
# 580 "system.h"
#define really_call_malloc malloc
#define really_call_calloc calloc
#define really_call_realloc realloc
# 626 "system.h"
#undef bcopy
#undef bzero
#undef bcmp
#undef rindex
        
# 25 "regrename.c" 2
# 1 "rtl.h" 1
# 23 "rtl.h"
#define GCC_RTL_H 

struct function;

# 1 "machmode.h" 1
# 23 "machmode.h"
#define HAVE_MACHINE_MODES 



#define DEF_MACHMODE(SYM,NAME,TYPE,BITSIZE,SIZE,UNIT,WIDER,INNER) SYM,

enum machine_mode {
# 1 "machmode.def" 1
# 74 "machmode.def"
VOIDmode,

BImode,
QImode,
HImode,
SImode,
DImode,
TImode,
OImode,




PQImode,
PHImode,
PSImode,
PDImode,

QFmode,
HFmode,
TQFmode,
SFmode,
DFmode,
XFmode,
TFmode,


QCmode,
HCmode,
SCmode,
DCmode,
XCmode,
TCmode,

CQImode,
CHImode,
CSImode,
CDImode,
CTImode,
COImode,







V2QImode,
V2HImode,
V2SImode,
V2DImode,

V4QImode,
V4HImode,
V4SImode,
V4DImode,

V8QImode,
V8HImode,
V8SImode,
V8DImode,

V16QImode,

V2SFmode,
V2DFmode,

V4SFmode,
V4DFmode,

V8SFmode,
V8DFmode,
V16SFmode,



BLKmode,






#define CC(E,M) DEF_MACHMODE (E, M, MODE_CC, BITS_PER_UNIT*4, 4, 4, VOIDmode, VOIDmode)

CCmode,


CCGCmode, CCGOCmode, CCNOmode, CCZmode, CCFPmode, CCFPUmode,


#undef CC
# 31 "machmode.h" 2
MAX_MACHINE_MODE };

#undef DEF_MACHMODE


#define NUM_MACHINE_MODES (int) MAX_MACHINE_MODE




extern const char * const mode_name[(int) MAX_MACHINE_MODE];
#define GET_MODE_NAME(MODE) (mode_name[(int) (MODE)])

enum mode_class { MODE_RANDOM, MODE_INT, MODE_FLOAT, MODE_PARTIAL_INT, MODE_CC,
    MODE_COMPLEX_INT, MODE_COMPLEX_FLOAT,
    MODE_VECTOR_INT, MODE_VECTOR_FLOAT,
    MAX_MODE_CLASS};




extern const enum mode_class mode_class[(int) MAX_MACHINE_MODE];
#define GET_MODE_CLASS(MODE) (mode_class[(int) (MODE)])


#define INTEGRAL_MODE_P(MODE) (GET_MODE_CLASS (MODE) == MODE_INT || GET_MODE_CLASS (MODE) == MODE_PARTIAL_INT || GET_MODE_CLASS (MODE) == MODE_COMPLEX_INT || GET_MODE_CLASS (MODE) == MODE_VECTOR_INT)






#define FLOAT_MODE_P(MODE) (GET_MODE_CLASS (MODE) == MODE_FLOAT || GET_MODE_CLASS (MODE) == MODE_COMPLEX_FLOAT || GET_MODE_CLASS (MODE) == MODE_VECTOR_FLOAT)





#define COMPLEX_MODE_P(MODE) (GET_MODE_CLASS (MODE) == MODE_COMPLEX_INT || GET_MODE_CLASS (MODE) == MODE_COMPLEX_FLOAT)




#define VECTOR_MODE_P(MODE) (GET_MODE_CLASS (MODE) == MODE_VECTOR_INT || GET_MODE_CLASS (MODE) == MODE_VECTOR_FLOAT)





extern const unsigned char mode_size[(int) MAX_MACHINE_MODE];
#define GET_MODE_SIZE(MODE) (mode_size[(int) (MODE)])



extern const unsigned char mode_unit_size[(int) MAX_MACHINE_MODE];
#define GET_MODE_UNIT_SIZE(MODE) (mode_unit_size[(int) (MODE)])



#define GET_MODE_NUNITS(MODE) ((GET_MODE_UNIT_SIZE ((MODE)) == 0) ? 0 : (GET_MODE_SIZE ((MODE)) / GET_MODE_UNIT_SIZE ((MODE))))





extern const unsigned short mode_bitsize[(int) MAX_MACHINE_MODE];
#define GET_MODE_BITSIZE(MODE) (mode_bitsize[(int) (MODE)])
# 106 "machmode.h"
extern const unsigned long mode_mask_array[(int) MAX_MACHINE_MODE];

#define GET_MODE_MASK(MODE) mode_mask_array[(int) (MODE)]

extern const enum machine_mode inner_mode_array[(int) MAX_MACHINE_MODE];



#define GET_MODE_INNER(MODE) inner_mode_array[(int) (MODE)]
# 123 "machmode.h"
extern const unsigned char mode_wider_mode[(int) MAX_MACHINE_MODE];
#define GET_MODE_WIDER_MODE(MODE) ((enum machine_mode)mode_wider_mode[(int) (MODE)])





extern enum machine_mode mode_for_size (unsigned int, enum mode_class, int)
                            ;



extern enum machine_mode smallest_mode_for_size
    (unsigned int, enum mode_class);





extern enum machine_mode int_mode_for_mode (enum machine_mode);



extern enum machine_mode get_best_mode (int, int, unsigned int, enum machine_mode, int)
                              ;



extern unsigned get_mode_alignment (enum machine_mode);

#define GET_MODE_ALIGNMENT(MODE) get_mode_alignment (MODE)



extern const enum machine_mode class_narrowest_mode[(int) MAX_MODE_CLASS];
#define GET_CLASS_NARROWEST_MODE(CLASS) class_narrowest_mode[(int) (CLASS)]




extern enum machine_mode byte_mode;
extern enum machine_mode word_mode;
extern enum machine_mode ptr_mode;
# 28 "rtl.h" 2

#undef FFS
#undef FLOAT
#undef ABS
#undef PC



#define NOOP_MOVE_INSN_CODE INT_MAX



#define RTX_CODE enum rtx_code
enum rtx_code {

#define DEF_RTL_EXPR(ENUM,NAME,FORMAT,CLASS) ENUM ,
# 1 "rtl.def" 1
# 70 "rtl.def"
UNKNOWN ,



NIL ,




INCLUDE ,






EXPR_LIST ,



INSN_LIST ,
# 129 "rtl.def"
MATCH_OPERAND ,






MATCH_SCRATCH ,




MATCH_DUP ,







MATCH_OPERATOR ,
# 158 "rtl.def"
MATCH_PARALLEL ,




MATCH_OP_DUP ,




MATCH_PAR_DUP ,




MATCH_INSN ,
# 192 "rtl.def"
DEFINE_INSN ,







DEFINE_PEEPHOLE ,
# 211 "rtl.def"
DEFINE_SPLIT ,
# 239 "rtl.def"
DEFINE_INSN_AND_SPLIT ,



DEFINE_PEEPHOLE2 ,



DEFINE_COMBINE ,
# 260 "rtl.def"
DEFINE_EXPAND ,
# 276 "rtl.def"
DEFINE_DELAY ,
# 317 "rtl.def"
DEFINE_FUNCTION_UNIT ,


DEFINE_ASM_ATTRIBUTES ,
# 333 "rtl.def"
DEFINE_COND_EXEC ,





SEQUENCE ,


ADDRESS ,
# 353 "rtl.def"
DEFINE_ATTR ,


ATTR ,







SET_ATTR ,
# 379 "rtl.def"
SET_ATTR_ALTERNATIVE ,




EQ_ATTR ,
# 394 "rtl.def"
ATTR_FLAG ,
# 407 "rtl.def"
INSN ,



JUMP_INSN ,






CALL_INSN ,


BARRIER ,
# 430 "rtl.def"
CODE_LABEL ,






NOTE ,
# 450 "rtl.def"
COND_EXEC ,


PARALLEL ,







ASM_INPUT ,
# 475 "rtl.def"
ASM_OPERANDS ,
# 486 "rtl.def"
UNSPEC ,


UNSPEC_VOLATILE ,



ADDR_VEC ,
# 518 "rtl.def"
ADDR_DIFF_VEC ,
# 529 "rtl.def"
PREFETCH ,
# 541 "rtl.def"
SET ,




USE ,




CLOBBER ,





CALL ,



RETURN ,





TRAP_IF ,




RESX ,






CONST_INT ,






CONST_DOUBLE ,


CONST_VECTOR ,


CONST_STRING ,





CONST ,



PC ,


VALUE ,
# 614 "rtl.def"
REG ,






SCRATCH ,
# 631 "rtl.def"
SUBREG ,
# 644 "rtl.def"
STRICT_LOW_PART ,





CONCAT ,




MEM ,





LABEL_REF ,





SYMBOL_REF ,






CC0 ,
# 683 "rtl.def"
ADDRESSOF ,
# 701 "rtl.def"
QUEUED ,
# 713 "rtl.def"
IF_THEN_ELSE ,
# 722 "rtl.def"
COND ,


COMPARE ,


PLUS ,


MINUS ,


NEG ,

MULT ,


DIV ,

MOD ,


UDIV ,
UMOD ,


AND ,

IOR ,

XOR ,

NOT ,




ASHIFT ,
ROTATE ,
ASHIFTRT ,
LSHIFTRT ,
ROTATERT ,





SMIN ,
SMAX ,
UMIN ,
UMAX ,
# 781 "rtl.def"
PRE_DEC ,
PRE_INC ,
POST_DEC ,
POST_INC ,
# 798 "rtl.def"
PRE_MODIFY ,
POST_MODIFY ,



NE ,
EQ ,
GE ,
GT ,
LE ,
LT ,
GEU ,
GTU ,
LEU ,
LTU ,


UNORDERED ,
ORDERED ,


UNEQ ,
UNGE ,
UNGT ,
UNLE ,
UNLT ,


LTGT ,




SIGN_EXTEND ,


ZERO_EXTEND ,


TRUNCATE ,


FLOAT_EXTEND ,
FLOAT_TRUNCATE ,


FLOAT ,







FIX ,


UNSIGNED_FLOAT ,




UNSIGNED_FIX ,


ABS ,


SQRT ,




FFS ,
# 882 "rtl.def"
SIGN_EXTRACT ,


ZERO_EXTRACT ,




HIGH ,



LO_SUM ,
# 907 "rtl.def"
RANGE_INFO ,
# 922 "rtl.def"
RANGE_REG ,





RANGE_VAR ,



RANGE_LIVE ,




CONSTANT_P_RTX ,
# 958 "rtl.def"
CALL_PLACEHOLDER ,






VEC_MERGE ,





VEC_SELECT ,




VEC_CONCAT ,





VEC_DUPLICATE ,


SS_PLUS ,


US_PLUS ,


SS_MINUS ,


US_MINUS ,


SS_TRUNCATE ,


US_TRUNCATE ,
# 1014 "rtl.def"
PHI ,
# 45 "rtl.h" 2
#undef DEF_RTL_EXPR

  LAST_AND_UNUSED_RTX_CODE};



#define NUM_RTX_CODE ((int) LAST_AND_UNUSED_RTX_CODE)


extern const unsigned char rtx_length[((int) LAST_AND_UNUSED_RTX_CODE)];
#define GET_RTX_LENGTH(CODE) (rtx_length[(int) (CODE)])

extern const char * const rtx_name[((int) LAST_AND_UNUSED_RTX_CODE)];
#define GET_RTX_NAME(CODE) (rtx_name[(int) (CODE)])

extern const char * const rtx_format[((int) LAST_AND_UNUSED_RTX_CODE)];
#define GET_RTX_FORMAT(CODE) (rtx_format[(int) (CODE)])

extern const char rtx_class[((int) LAST_AND_UNUSED_RTX_CODE)];
#define GET_RTX_CLASS(CODE) (rtx_class[(int) (CODE)])



typedef struct
{

  unsigned min_align: 8;

  unsigned base_after_vec: 1;
  unsigned min_after_vec: 1;

  unsigned max_after_vec: 1;

  unsigned min_after_base: 1;

  unsigned max_after_base: 1;


  unsigned offset_unsigned: 1;
  unsigned : 2;
  unsigned scale : 8;
} addr_diff_vec_flags;





typedef struct
{
  long alias;
  tree expr;
  rtx offset;
  rtx size;
  unsigned int align;
} mem_attrs;



typedef union rtunion_def
{
  long rtwint;
  int rtint;
  unsigned int rtuint;
  const char *rtstr;
  rtx rtx;
  rtvec rtvec;
  enum machine_mode rttype;
  addr_diff_vec_flags rt_addr_diff_vec_flags;
  struct cselib_val_struct *rt_cselib;
  struct bitmap_head_def *rtbit;
  tree rttree;
  struct basic_block_def *bb;
  mem_attrs *rtmem;
} rtunion;



struct rtx_def
{

  unsigned int code: 16;


  unsigned int mode : 8;






  unsigned int jump : 1;


  unsigned int call : 1;
# 149 "rtl.h"
  unsigned int unchanging : 1;







  unsigned int volatil : 1;
# 175 "rtl.h"
  unsigned int in_struct : 1;






  unsigned int used : 1;




  unsigned integrated : 1;
# 196 "rtl.h"
  unsigned frame_related : 1;




  rtunion fld[1];
};

#define NULL_RTX (rtx) 0



#define GET_CODE(RTX) ((enum rtx_code) (RTX)->code)
#define PUT_CODE(RTX,CODE) ((RTX)->code = (ENUM_BITFIELD(rtx_code)) (CODE))

#define GET_MODE(RTX) ((enum machine_mode) (RTX)->mode)
#define PUT_MODE(RTX,MODE) ((RTX)->mode = (ENUM_BITFIELD(machine_mode)) (MODE))

#define RTX_INTEGRATED_P(RTX) ((RTX)->integrated)
#define RTX_UNCHANGING_P(RTX) ((RTX)->unchanging)
#define RTX_FRAME_RELATED_P(RTX) ((RTX)->frame_related)





struct rtvec_def {
  int num_elem;
  rtx elem[1];
};

#define NULL_RTVEC (rtvec) 0

#define GET_NUM_ELEM(RTVEC) ((RTVEC)->num_elem)
#define PUT_NUM_ELEM(RTVEC,NUM) ((RTVEC)->num_elem = (NUM))


#define REG_P(X) (GET_CODE (X) == REG)


#define LABEL_P(X) (GET_CODE (X) == CODE_LABEL)


#define JUMP_P(X) (GET_CODE (X) == JUMP_INSN)


#define NOTE_P(X) (GET_CODE (X) == NOTE)


#define BARRIER_P(X) (GET_CODE (X) == BARRIER)


#define JUMP_TABLE_DATA_P(INSN) (JUMP_P (INSN) && (GET_CODE (PATTERN (INSN)) == ADDR_VEC || GET_CODE (PATTERN (INSN)) == ADDR_DIFF_VEC))





#define CONSTANT_P(X) (GET_CODE (X) == LABEL_REF || GET_CODE (X) == SYMBOL_REF || GET_CODE (X) == CONST_INT || GET_CODE (X) == CONST_DOUBLE || GET_CODE (X) == CONST || GET_CODE (X) == HIGH || GET_CODE (X) == CONST_VECTOR || GET_CODE (X) == CONSTANT_P_RTX)
# 332 "rtl.h"
#define RTL_CHECK1(RTX,N,C1) ((RTX)->fld[N])
#define RTL_CHECK2(RTX,N,C1,C2) ((RTX)->fld[N])
#define RTL_CHECKC1(RTX,N,C) ((RTX)->fld[N])
#define RTL_CHECKC2(RTX,N,C1,C2) ((RTX)->fld[N])
#define RTVEC_ELT(RTVEC,I) ((RTVEC)->elem[I])



#define XWINT(RTX,N) (RTL_CHECK1 (RTX, N, 'w').rtwint)
#define XINT(RTX,N) (RTL_CHECK2 (RTX, N, 'i', 'n').rtint)
#define XSTR(RTX,N) (RTL_CHECK2 (RTX, N, 's', 'S').rtstr)
#define XEXP(RTX,N) (RTL_CHECK2 (RTX, N, 'e', 'u').rtx)
#define XVEC(RTX,N) (RTL_CHECK2 (RTX, N, 'E', 'V').rtvec)
#define XMODE(RTX,N) (RTL_CHECK1 (RTX, N, 'M').rttype)
#define XBITMAP(RTX,N) (RTL_CHECK1 (RTX, N, 'b').rtbit)
#define XTREE(RTX,N) (RTL_CHECK1 (RTX, N, 't').rttree)
#define XBBDEF(RTX,N) (RTL_CHECK1 (RTX, N, 'B').bb)
#define XTMPL(RTX,N) (RTL_CHECK1 (RTX, N, 'T').rtstr)

#define XVECEXP(RTX,N,M) RTVEC_ELT (XVEC (RTX, N), M)
#define XVECLEN(RTX,N) GET_NUM_ELEM (XVEC (RTX, N))




#define X0WINT(RTX,N) (RTL_CHECK1 (RTX, N, '0').rtwint)
#define X0INT(RTX,N) (RTL_CHECK1 (RTX, N, '0').rtint)
#define X0UINT(RTX,N) (RTL_CHECK1 (RTX, N, '0').rtuint)
#define X0STR(RTX,N) (RTL_CHECK1 (RTX, N, '0').rtstr)
#define X0EXP(RTX,N) (RTL_CHECK1 (RTX, N, '0').rtx)
#define X0VEC(RTX,N) (RTL_CHECK1 (RTX, N, '0').rtvec)
#define X0MODE(RTX,N) (RTL_CHECK1 (RTX, N, '0').rttype)
#define X0BITMAP(RTX,N) (RTL_CHECK1 (RTX, N, '0').rtbit)
#define X0TREE(RTX,N) (RTL_CHECK1 (RTX, N, '0').rttree)
#define X0BBDEF(RTX,N) (RTL_CHECK1 (RTX, N, '0').bb)
#define X0ADVFLAGS(RTX,N) (RTL_CHECK1 (RTX, N, '0').rt_addr_diff_vec_flags)
#define X0CSELIB(RTX,N) (RTL_CHECK1 (RTX, N, '0').rt_cselib)
#define X0MEMATTR(RTX,N) (RTL_CHECK1 (RTX, N, '0').rtmem)

#define XCWINT(RTX,N,C) (RTL_CHECKC1 (RTX, N, C).rtwint)
#define XCINT(RTX,N,C) (RTL_CHECKC1 (RTX, N, C).rtint)
#define XCUINT(RTX,N,C) (RTL_CHECKC1 (RTX, N, C).rtuint)
#define XCSTR(RTX,N,C) (RTL_CHECKC1 (RTX, N, C).rtstr)
#define XCEXP(RTX,N,C) (RTL_CHECKC1 (RTX, N, C).rtx)
#define XCVEC(RTX,N,C) (RTL_CHECKC1 (RTX, N, C).rtvec)
#define XCMODE(RTX,N,C) (RTL_CHECKC1 (RTX, N, C).rttype)
#define XCBITMAP(RTX,N,C) (RTL_CHECKC1 (RTX, N, C).rtbit)
#define XCTREE(RTX,N,C) (RTL_CHECKC1 (RTX, N, C).rttree)
#define XCBBDEF(RTX,N,C) (RTL_CHECKC1 (RTX, N, C).bb)
#define XCADVFLAGS(RTX,N,C) (RTL_CHECKC1 (RTX, N, C).rt_addr_diff_vec_flags)
#define XCCSELIB(RTX,N,C) (RTL_CHECKC1 (RTX, N, C).rt_cselib)

#define XCVECEXP(RTX,N,M,C) RTVEC_ELT (XCVEC (RTX, N, C), M)
#define XCVECLEN(RTX,N,C) GET_NUM_ELEM (XCVEC (RTX, N, C))

#define XC2EXP(RTX,N,C1,C2) (RTL_CHECKC2 (RTX, N, C1, C2).rtx)




#define INSN_P(X) (GET_RTX_CLASS (GET_CODE(X)) == 'i')



#define INSN_UID(INSN) XINT (INSN, 0)


#define PREV_INSN(INSN) XEXP (INSN, 1)
#define NEXT_INSN(INSN) XEXP (INSN, 2)


#define PATTERN(INSN) XEXP (INSN, 3)



#define INSN_CODE(INSN) XINT (INSN, 4)






#define LOG_LINKS(INSN) XEXP(INSN, 5)


#define INSN_DELETED_P(INSN) ((INSN)->volatil)


#define CONST_OR_PURE_CALL_P(INSN) ((INSN)->unchanging)


#define SIBLING_CALL_P(INSN) ((INSN)->jump)



#define INSN_ANNULLED_BRANCH_P(INSN) ((INSN)->unchanging)


#define INSN_DEAD_CODE_P(INSN) ((INSN)->in_struct)





#define INSN_FROM_TARGET_P(INSN) ((INSN)->in_struct)

#define ADDR_DIFF_VEC_FLAGS(RTX) X0ADVFLAGS(RTX, 4)

#define CSELIB_VAL_PTR(RTX) X0CSELIB(RTX, 0)







#define REG_NOTES(INSN) XEXP(INSN, 6)


enum reg_note
{



  REG_DEAD = 1,


  REG_INC,
# 470 "rtl.h"
  REG_EQUIV,




  REG_EQUAL,





  REG_WAS_0,





  REG_RETVAL,




  REG_LIBCALL,






  REG_NONNEG,



  REG_NO_CONFLICT,


  REG_UNUSED,
# 515 "rtl.h"
  REG_CC_SETTER, REG_CC_USER,




  REG_LABEL,





  REG_DEP_ANTI, REG_DEP_OUTPUT,





  REG_BR_PROB,




  REG_EXEC_COUNT,



  REG_NOALIAS,



  REG_SAVE_AREA,





  REG_BR_PRED,




  REG_FRAME_RELATED_EXPR,




  REG_EH_CONTEXT,





  REG_EH_REGION,


  REG_SAVE_NOTE,





  REG_MAYBE_DEAD,


  REG_NORETURN,



  REG_NON_LOCAL_GOTO,



  REG_SETJMP,


  REG_ALWAYS_RETURN,



  REG_VTABLE_REF
};


#define REG_BR_PROB_BASE 10000


#define REG_NOTE_KIND(LINK) ((enum reg_note) GET_MODE (LINK))
#define PUT_REG_NOTE_KIND(LINK,KIND) PUT_MODE (LINK, (enum machine_mode) (KIND))




extern const char * const reg_note_name[];
#define GET_REG_NOTE_NAME(MODE) (reg_note_name[(int) (MODE)])
# 617 "rtl.h"
#define CALL_INSN_FUNCTION_USAGE(INSN) XEXP(INSN, 7)




#define CODE_LABEL_NUMBER(INSN) XINT (INSN, 5)

#define LINE_NUMBER NOTE
# 633 "rtl.h"
#define NOTE_SOURCE_FILE(INSN) XCSTR (INSN, 3, NOTE)
#define NOTE_BLOCK(INSN) XCTREE (INSN, 3, NOTE)
#define NOTE_EH_HANDLER(INSN) XCINT (INSN, 3, NOTE)
#define NOTE_RANGE_INFO(INSN) XCEXP (INSN, 3, NOTE)
#define NOTE_LIVE_INFO(INSN) XCEXP (INSN, 3, NOTE)
#define NOTE_BASIC_BLOCK(INSN) XCBBDEF (INSN, 3, NOTE)
#define NOTE_EXPECTED_VALUE(INSN) XCEXP (INSN, 3, NOTE)



#define NOTE_LINE_NUMBER(INSN) XCINT (INSN, 4, NOTE)


#define NOTE_INSN_BASIC_BLOCK_P(INSN) (GET_CODE (INSN) == NOTE && NOTE_LINE_NUMBER (INSN) == NOTE_INSN_BASIC_BLOCK)
# 663 "rtl.h"
enum insn_note
{

  NOTE_INSN_BIAS = -100,



  NOTE_INSN_DELETED,



  NOTE_INSN_BLOCK_BEG,
  NOTE_INSN_BLOCK_END,


  NOTE_INSN_LOOP_BEG,
  NOTE_INSN_LOOP_END,


  NOTE_INSN_LOOP_CONT,

  NOTE_INSN_LOOP_VTOP,





  NOTE_INSN_LOOP_END_TOP_COND,






  NOTE_INSN_FUNCTION_END,


  NOTE_INSN_PROLOGUE_END,


  NOTE_INSN_EPILOGUE_BEG,


  NOTE_INSN_DELETED_LABEL,




  NOTE_INSN_FUNCTION_BEG,



  NOTE_INSN_EH_REGION_BEG,
  NOTE_INSN_EH_REGION_END,




  NOTE_INSN_REPEATED_LINE_NUMBER,



  NOTE_INSN_RANGE_BEG,
  NOTE_INSN_RANGE_END,


  NOTE_INSN_LIVE,


  NOTE_INSN_BASIC_BLOCK,



  NOTE_INSN_EXPECTED_VALUE,

  NOTE_INSN_MAX
};



extern const char * const note_insn_name[NOTE_INSN_MAX - NOTE_INSN_BIAS];
#define GET_NOTE_INSN_NAME(NOTE_CODE) (note_insn_name[(NOTE_CODE) - (int) NOTE_INSN_BIAS])




#define LABEL_NAME(RTX) XCSTR (RTX, 6, CODE_LABEL)



#define LABEL_NUSES(RTX) XCINT (RTX, 3, CODE_LABEL)


#define LABEL_ALTERNATE_NAME(RTX) XCSTR (RTX, 7, CODE_LABEL)


#define ADDRESSOF_REGNO(RTX) XCUINT (RTX, 1, ADDRESSOF)


#define ADDRESSOF_DECL(RTX) XCTREE (RTX, 2, ADDRESSOF)




#define JUMP_LABEL(INSN) XCEXP (INSN, 7, JUMP_INSN)





#define LABEL_REFS(LABEL) XCEXP (LABEL, 4, CODE_LABEL)





#define LABEL_NEXTREF(REF) XCEXP (REF, 1, LABEL_REF)




#define CONTAINING_INSN(RTX) XCEXP (RTX, 2, LABEL_REF)





#define REGNO(RTX) XCUINT (RTX, 0, REG)
#define ORIGINAL_REGNO(RTX) X0UINT (RTX, 1)




#define REG_FUNCTION_VALUE_P(RTX) ((RTX)->integrated)


#define REG_USERVAR_P(RTX) ((RTX)->volatil)


#define REG_POINTER(RTX) ((RTX)->frame_related)


#define HARD_REGISTER_P(REG) (HARD_REGISTER_NUM_P (REGNO (REG)))


#define HARD_REGISTER_NUM_P(REG_NO) ((REG_NO) < FIRST_PSEUDO_REGISTER)



#define INTVAL(RTX) XCWINT(RTX, 0, CONST_INT)
# 821 "rtl.h"
#define CONST_DOUBLE_LOW(r) XCWINT (r, 1, CONST_DOUBLE)
#define CONST_DOUBLE_HIGH(r) XCWINT (r, 2, CONST_DOUBLE)


#define CONST_DOUBLE_CHAIN(r) XCEXP (r, 0, CONST_DOUBLE)


#define CONST_VECTOR_ELT(RTX,N) XCVECEXP (RTX, 0, N, CONST_VECTOR)


#define CONST_VECTOR_NUNITS(RTX) XCVECLEN (RTX, 0, CONST_VECTOR)




#define SUBREG_REG(RTX) XCEXP (RTX, 0, SUBREG)
#define SUBREG_BYTE(RTX) XCUINT (RTX, 1, SUBREG)


extern unsigned int subreg_lsb (rtx);
extern unsigned int subreg_regno_offset (unsigned int, enum machine_mode, unsigned int, enum machine_mode)


                           ;
extern unsigned int subreg_regno (rtx);
# 855 "rtl.h"
#define SUBREG_PROMOTED_VAR_P(RTX) ((RTX)->in_struct)
#define SUBREG_PROMOTED_UNSIGNED_P(RTX) ((RTX)->unchanging)



#define ASM_OPERANDS_TEMPLATE(RTX) XCSTR (RTX, 0, ASM_OPERANDS)
#define ASM_OPERANDS_OUTPUT_CONSTRAINT(RTX) XCSTR (RTX, 1, ASM_OPERANDS)
#define ASM_OPERANDS_OUTPUT_IDX(RTX) XCINT (RTX, 2, ASM_OPERANDS)
#define ASM_OPERANDS_INPUT_VEC(RTX) XCVEC (RTX, 3, ASM_OPERANDS)
#define ASM_OPERANDS_INPUT_CONSTRAINT_VEC(RTX) XCVEC (RTX, 4, ASM_OPERANDS)
#define ASM_OPERANDS_INPUT(RTX,N) XCVECEXP (RTX, 3, N, ASM_OPERANDS)
#define ASM_OPERANDS_INPUT_LENGTH(RTX) XCVECLEN (RTX, 3, ASM_OPERANDS)
#define ASM_OPERANDS_INPUT_CONSTRAINT_EXP(RTX,N) XCVECEXP (RTX, 4, N, ASM_OPERANDS)

#define ASM_OPERANDS_INPUT_CONSTRAINT(RTX,N) XSTR (XCVECEXP (RTX, 4, N, ASM_OPERANDS), 0)

#define ASM_OPERANDS_INPUT_MODE(RTX,N) GET_MODE (XCVECEXP (RTX, 4, N, ASM_OPERANDS))

#define ASM_OPERANDS_SOURCE_FILE(RTX) XCSTR (RTX, 5, ASM_OPERANDS)
#define ASM_OPERANDS_SOURCE_LINE(RTX) XCINT (RTX, 6, ASM_OPERANDS)




#define MEM_KEEP_ALIAS_SET_P(RTX) ((RTX)->jump)



#define MEM_VOLATILE_P(RTX) ((RTX)->volatil)




#define MEM_IN_STRUCT_P(RTX) ((RTX)->in_struct)



#define MEM_SCALAR_P(RTX) ((RTX)->frame_related)





#define MEM_SET_IN_STRUCT_P(RTX,VAL) do { if (VAL) { MEM_IN_STRUCT_P (RTX) = 1; MEM_SCALAR_P (RTX) = 0; } else { MEM_IN_STRUCT_P (RTX) = 0; MEM_SCALAR_P (RTX) = 1; } } while (0)
# 914 "rtl.h"
#define MEM_ATTRS(RTX) X0MEMATTR (RTX, 1)
# 925 "rtl.h"
#define MEM_ALIAS_SET(RTX) (MEM_ATTRS (RTX) == 0 ? 0 : MEM_ATTRS (RTX)->alias)



#define MEM_EXPR(RTX) (MEM_ATTRS (RTX) == 0 ? 0 : MEM_ATTRS (RTX)->expr)



#define MEM_OFFSET(RTX) (MEM_ATTRS (RTX) == 0 ? 0 : MEM_ATTRS (RTX)->offset)



#define MEM_SIZE(RTX) (MEM_ATTRS (RTX) != 0 ? MEM_ATTRS (RTX)->size : GET_MODE (RTX) != BLKmode ? GEN_INT (GET_MODE_SIZE (GET_MODE (RTX))) : 0)






#define MEM_ALIGN(RTX) (MEM_ATTRS (RTX) != 0 ? MEM_ATTRS (RTX)->align : (STRICT_ALIGNMENT && GET_MODE (RTX) != BLKmode ? GET_MODE_ALIGNMENT (GET_MODE (RTX)) : BITS_PER_UNIT))





#define MEM_COPY_ATTRIBUTES(LHS,RHS) (MEM_VOLATILE_P (LHS) = MEM_VOLATILE_P (RHS), MEM_IN_STRUCT_P (LHS) = MEM_IN_STRUCT_P (RHS), MEM_SCALAR_P (LHS) = MEM_SCALAR_P (RHS), RTX_UNCHANGING_P (LHS) = RTX_UNCHANGING_P (RHS), MEM_KEEP_ALIAS_SET_P (LHS) = MEM_KEEP_ALIAS_SET_P (RHS), MEM_ATTRS (LHS) = MEM_ATTRS (RHS))
# 960 "rtl.h"
#define LABEL_OUTSIDE_LOOP_P(RTX) ((RTX)->in_struct)



#define LABEL_REF_NONLOCAL_P(RTX) ((RTX)->volatil)


#define LABEL_PRESERVE_P(RTX) ((RTX)->in_struct)


#define REG_LOOP_TEST_P(RTX) ((RTX)->in_struct)



#define SCHED_GROUP_P(INSN) ((INSN)->in_struct)
# 983 "rtl.h"
#define LINK_COST_ZERO(X) ((X)->jump)
#define LINK_COST_FREE(X) ((X)->call)



#define SET_DEST(RTX) XC2EXP(RTX, 0, SET, CLOBBER)
#define SET_SRC(RTX) XCEXP(RTX, 1, SET)
#define SET_IS_RETURN_P(RTX) ((RTX)->jump)


#define TRAP_CONDITION(RTX) XCEXP (RTX, 0, TRAP_IF)
#define TRAP_CODE(RTX) XCEXP (RTX, 1, TRAP_IF)




#define COND_EXEC_TEST(RTX) XCEXP (RTX, 0, COND_EXEC)
#define COND_EXEC_CODE(RTX) XCEXP (RTX, 1, COND_EXEC)


#define CONSTANT_POOL_ADDRESS_P(RTX) ((RTX)->unchanging)


#define STRING_POOL_ADDRESS_P(RTX) ((RTX)->frame_related)


#define SYMBOL_REF_FLAG(RTX) ((RTX)->volatil)


#define SYMBOL_REF_USED(RTX) ((RTX)->used)


#define SYMBOL_REF_WEAK(RTX) ((RTX)->integrated)
# 1027 "rtl.h"
#define FIND_REG_INC_NOTE(INSN,REG) 0
# 1039 "rtl.h"
#define HAVE_PRE_INCREMENT 0



#define HAVE_PRE_DECREMENT 0



#define HAVE_POST_INCREMENT 0



#define HAVE_POST_DECREMENT 0



#define HAVE_POST_MODIFY_DISP 0



#define HAVE_POST_MODIFY_REG 0



#define HAVE_PRE_MODIFY_DISP 0



#define HAVE_PRE_MODIFY_REG 0
# 1076 "rtl.h"
#define USE_LOAD_POST_INCREMENT(MODE) HAVE_POST_INCREMENT



#define USE_LOAD_POST_DECREMENT(MODE) HAVE_POST_DECREMENT



#define USE_LOAD_PRE_INCREMENT(MODE) HAVE_PRE_INCREMENT



#define USE_LOAD_PRE_DECREMENT(MODE) HAVE_PRE_DECREMENT



#define USE_STORE_POST_INCREMENT(MODE) HAVE_POST_INCREMENT



#define USE_STORE_POST_DECREMENT(MODE) HAVE_POST_DECREMENT



#define USE_STORE_PRE_INCREMENT(MODE) HAVE_PRE_INCREMENT



#define USE_STORE_PRE_DECREMENT(MODE) HAVE_PRE_DECREMENT





#define RANGE_INFO_NOTE_START(INSN) XCEXP (INSN, 0, RANGE_INFO)


#define RANGE_INFO_NOTE_END(INSN) XCEXP (INSN, 1, RANGE_INFO)



#define RANGE_INFO_REGS(INSN) XCVEC (INSN, 2, RANGE_INFO)
#define RANGE_INFO_REGS_REG(INSN,N) XCVECEXP (INSN, 2, N, RANGE_INFO)
#define RANGE_INFO_NUM_REGS(INSN) XCVECLEN (INSN, 2, RANGE_INFO)


#define RANGE_INFO_NCALLS(INSN) XCINT (INSN, 3, RANGE_INFO)


#define RANGE_INFO_NINSNS(INSN) XCINT (INSN, 4, RANGE_INFO)


#define RANGE_INFO_UNIQUE(INSN) XCINT (INSN, 5, RANGE_INFO)


#define RANGE_INFO_BB_START(INSN) XCINT (INSN, 6, RANGE_INFO)


#define RANGE_INFO_BB_END(INSN) XCINT (INSN, 7, RANGE_INFO)


#define RANGE_INFO_LOOP_DEPTH(INSN) XCINT (INSN, 8, RANGE_INFO)



#define RANGE_INFO_LIVE_START(INSN) XCBITMAP (INSN, 9, RANGE_INFO)



#define RANGE_INFO_LIVE_END(INSN) XCBITMAP (INSN, 10, RANGE_INFO)


#define RANGE_INFO_MARKER_START(INSN) XCINT (INSN, 11, RANGE_INFO)


#define RANGE_INFO_MARKER_END(INSN) XCINT (INSN, 12, RANGE_INFO)


#define RANGE_REG_PSEUDO(INSN,N) XCINT (XCVECEXP (INSN, 2, N, RANGE_INFO), 0, REG)


#define RANGE_REG_COPY(INSN,N) XCINT (XCVECEXP (INSN, 2, N, RANGE_INFO), 1, REG)


#define RANGE_REG_REFS(INSN,N) XINT (XCVECEXP (INSN, 2, N, RANGE_INFO), 2)


#define RANGE_REG_SETS(INSN,N) XINT (XCVECEXP (INSN, 2, N, RANGE_INFO), 3)


#define RANGE_REG_DEATHS(INSN,N) XINT (XCVECEXP (INSN, 2, N, RANGE_INFO), 4)



#define RANGE_REG_COPY_FLAGS(INSN,N) XINT (XCVECEXP (INSN, 2, N, RANGE_INFO), 5)


#define RANGE_REG_LIVE_LENGTH(INSN,N) XINT (XCVECEXP (INSN, 2, N, RANGE_INFO), 6)


#define RANGE_REG_N_CALLS(INSN,N) XINT (XCVECEXP (INSN, 2, N, RANGE_INFO), 7)



#define RANGE_REG_SYMBOL_NODE(INSN,N) XTREE (XCVECEXP (INSN, 2, N, RANGE_INFO), 8)



#define RANGE_REG_BLOCK_NODE(INSN,N) XTREE (XCVECEXP (INSN, 2, N, RANGE_INFO), 9)


#define RANGE_VAR_LIST(INSN) (XEXP (INSN, 0))


#define RANGE_VAR_BLOCK(INSN) (XTREE (INSN, 1))


#define RANGE_VAR_NUM(INSN) (XINT (INSN, 2))


#define RANGE_LIVE_BITMAP(INSN) (XBITMAP (INSN, 0))


#define RANGE_LIVE_ORIG_BLOCK(INSN) (XINT (INSN, 1))


#define PHI_NODE_P(X) ((X) && GET_CODE (X) == INSN && GET_CODE (PATTERN (X)) == SET && GET_CODE (SET_SRC (PATTERN (X))) == PHI)
# 1211 "rtl.h"
extern int rtx_equal_function_value_matters;


extern int generating_concat_p;




extern int ceil_log2 (unsigned long);

#define plus_constant(X,C) plus_constant_wide ((X), (HOST_WIDE_INT) (C))


extern rtx expand_builtin_expect_jump (tree, rtx, rtx);


extern void set_stack_check_libfunc (rtx);
extern long trunc_int_for_mode (long, enum machine_mode)
                               ;
extern rtx plus_constant_wide (rtx, long);
extern rtx plus_constant_for_output_wide (rtx, long);
extern void optimize_save_area_alloca (rtx);


extern rtx gen_rtx (enum rtx_code, enum machine_mode, ...)
                               ;
extern rtvec gen_rtvec (int, ...);
extern rtx copy_insn_1 (rtx);
extern rtx copy_insn (rtx);
extern rtx gen_int_mode (long, enum machine_mode)
                          ;


extern rtx rtx_alloc (enum rtx_code);
extern rtvec rtvec_alloc (int);
extern rtx copy_rtx (rtx);


extern rtx copy_rtx_if_shared (rtx);


extern rtx copy_most_rtx (rtx, rtx);
extern rtx shallow_copy_rtx (rtx);
extern int rtx_equal_p (rtx, rtx);


extern rtvec gen_rtvec_v (int, rtx *);
extern rtx gen_reg_rtx (enum machine_mode);
extern rtx gen_label_rtx (void);
extern int subreg_hard_regno (rtx, int);
extern rtx gen_lowpart_common (enum machine_mode, rtx);
extern rtx gen_lowpart (enum machine_mode, rtx);


extern rtx gen_lowpart_if_possible (enum machine_mode, rtx);


extern rtx gen_highpart (enum machine_mode, rtx);
extern rtx gen_highpart_mode (enum machine_mode, enum machine_mode, rtx)
                               ;
extern rtx gen_realpart (enum machine_mode, rtx);
extern rtx gen_imagpart (enum machine_mode, rtx);
extern rtx operand_subword (rtx, unsigned int, int, enum machine_mode)
                          ;
extern rtx constant_subword (rtx, int, enum machine_mode)
                          ;


extern rtx operand_subword_force (rtx, unsigned int, enum machine_mode)
                          ;
extern int subreg_lowpart_p (rtx);
extern unsigned int subreg_lowpart_offset (enum machine_mode, enum machine_mode)
                            ;
extern unsigned int subreg_highpart_offset (enum machine_mode, enum machine_mode)
                             ;
extern rtx make_safe_from (rtx, rtx);
extern rtx convert_memory_address (enum machine_mode, rtx);
extern rtx get_insns (void);
extern const char *get_insn_name (int);
extern rtx get_last_insn (void);
extern rtx get_last_insn_anywhere (void);
extern void start_sequence (void);
extern void push_to_sequence (rtx);
extern void end_sequence (void);
extern void push_to_full_sequence (rtx, rtx);
extern void end_full_sequence (rtx*, rtx*);
extern rtx gen_sequence (void);


extern rtx immed_double_const (long, long, enum machine_mode);
extern rtx mem_for_const_double (rtx);
extern rtx force_const_mem (enum machine_mode, rtx);


extern rtx get_pool_constant (rtx);
extern rtx get_pool_constant_mark (rtx, _Bool *);
extern enum machine_mode get_pool_mode (rtx);
extern rtx get_pool_constant_for_function (struct function *, rtx);
extern enum machine_mode get_pool_mode_for_function (struct function *, rtx);
extern int get_pool_offset (rtx);
extern rtx simplify_subtraction (rtx);


extern rtx assign_stack_local (enum machine_mode, long, int)
                                ;
extern rtx assign_stack_temp (enum machine_mode, long, int)
                                ;
extern rtx assign_stack_temp_for_type (enum machine_mode, long, int, tree)
                                 ;
extern rtx assign_temp (tree, int, int, int);

extern rtx emit_insn_before (rtx, rtx);
extern rtx emit_jump_insn_before (rtx, rtx);
extern rtx emit_call_insn_before (rtx, rtx);
extern rtx emit_barrier_before (rtx);
extern rtx emit_label_before (rtx, rtx);
extern rtx emit_note_before (int, rtx);
extern rtx emit_insn_after (rtx, rtx);
extern rtx emit_jump_insn_after (rtx, rtx);
extern rtx emit_barrier_after (rtx);
extern rtx emit_label_after (rtx, rtx);
extern rtx emit_note_after (int, rtx);
extern rtx emit_line_note_after (const char *, int, rtx);
extern rtx emit_insn (rtx);
extern rtx emit_insns (rtx);
extern rtx emit_insns_before (rtx, rtx);
extern rtx emit_insns_after (rtx, rtx);
extern rtx emit_jump_insn (rtx);
extern rtx emit_call_insn (rtx);
extern rtx emit_label (rtx);
extern rtx emit_barrier (void);
extern rtx emit_line_note (const char *, int);
extern rtx emit_note (const char *, int);
extern rtx emit_line_note_force (const char *, int);
extern rtx make_insn_raw (rtx);
extern rtx previous_insn (rtx);
extern rtx next_insn (rtx);
extern rtx prev_nonnote_insn (rtx);
extern rtx next_nonnote_insn (rtx);
extern rtx prev_real_insn (rtx);
extern rtx next_real_insn (rtx);
extern rtx prev_active_insn (rtx);
extern rtx next_active_insn (rtx);
extern int active_insn_p (rtx);
extern rtx prev_label (rtx);
extern rtx next_label (rtx);
extern rtx next_cc0_user (rtx);
extern rtx prev_cc0_setter (rtx);


extern rtx next_nondeleted_insn (rtx);
extern enum rtx_code reverse_condition (enum rtx_code);
extern enum rtx_code reverse_condition_maybe_unordered (enum rtx_code);
extern enum rtx_code swap_condition (enum rtx_code);
extern enum rtx_code unsigned_condition (enum rtx_code);
extern enum rtx_code signed_condition (enum rtx_code);
extern void mark_jump_label (rtx, rtx, int);
extern void cleanup_barriers (void);


extern _Bool squeeze_notes (rtx *, rtx *);
extern rtx delete_related_insns (rtx);
extern void delete_jump (rtx);
extern void delete_barrier (rtx);
extern rtx get_label_before (rtx);
extern rtx get_label_after (rtx);
extern rtx follow_jumps (rtx);


extern rtx *find_constant_term_loc (rtx *);


extern rtx try_split (rtx, rtx, int);
extern int split_branch_probability;


extern rtx split_insns (rtx, rtx);


extern rtx simplify_unary_operation (enum rtx_code, enum machine_mode, rtx, enum machine_mode)

                          ;
extern rtx simplify_binary_operation (enum rtx_code, enum machine_mode, rtx, rtx)

            ;
extern rtx simplify_ternary_operation (enum rtx_code, enum machine_mode, enum machine_mode, rtx, rtx, rtx)


            ;
extern rtx simplify_relational_operation (enum rtx_code, enum machine_mode, rtx, rtx)

             ;
extern rtx simplify_gen_binary (enum rtx_code, enum machine_mode, rtx, rtx)

                 ;
extern rtx simplify_gen_unary (enum rtx_code, enum machine_mode, rtx, enum machine_mode)

                          ;
extern rtx simplify_gen_ternary (enum rtx_code, enum machine_mode, enum machine_mode, rtx, rtx, rtx)


                      ;
extern rtx simplify_gen_relational (enum rtx_code, enum machine_mode, enum machine_mode, rtx, rtx)


                 ;
extern rtx simplify_subreg (enum machine_mode, rtx, enum machine_mode, unsigned int)


                     ;
extern rtx simplify_gen_subreg (enum machine_mode, rtx, enum machine_mode, unsigned int)


                     ;
extern rtx simplify_replace_rtx (rtx, rtx, rtx);
extern rtx simplify_rtx (rtx);
extern rtx avoid_constant_pool_reference (rtx);


extern rtx gen_mem_addressof (rtx, tree);


extern enum machine_mode choose_hard_reg_mode (unsigned int, unsigned int)
                           ;


extern rtx set_unique_reg_note (rtx, enum reg_note, rtx);




#define single_set(I) (INSN_P (I) ? (GET_CODE (PATTERN (I)) == SET ? PATTERN (I) : single_set_1 (I)) : NULL_RTX)



#define single_set_1(I) single_set_2 (I, PATTERN (I))

extern int rtx_addr_can_trap_p (rtx);
extern int rtx_unstable_p (rtx);
extern int rtx_varies_p (rtx, int);
extern int rtx_addr_varies_p (rtx, int);
extern long get_integer_term (rtx);
extern rtx get_related_value (rtx);
extern rtx get_jump_table_offset (rtx, rtx *);
extern int reg_mentioned_p (rtx, rtx);
extern int count_occurrences (rtx, rtx, int);
extern int reg_referenced_p (rtx, rtx);
extern int reg_used_between_p (rtx, rtx, rtx);
extern int reg_referenced_between_p (rtx, rtx, rtx);
extern int reg_set_between_p (rtx, rtx, rtx);
extern int regs_set_between_p (rtx, rtx, rtx);
extern int commutative_operand_precedence (rtx);
extern int swap_commutative_operands_p (rtx, rtx);
extern int modified_between_p (rtx, rtx, rtx);
extern int no_labels_between_p (rtx, rtx);
extern int no_jumps_between_p (rtx, rtx);
extern int modified_in_p (rtx, rtx);
extern int insn_dependent_p (rtx, rtx);
extern int reg_set_p (rtx, rtx);
extern rtx single_set_2 (rtx, rtx);
extern int multiple_sets (rtx);
extern int set_noop_p (rtx);
extern int noop_move_p (rtx);
extern rtx find_last_value (rtx, rtx *, rtx, int);
extern int refers_to_regno_p (unsigned int, unsigned int, rtx, rtx *)
                   ;
extern int reg_overlap_mentioned_p (rtx, rtx);
extern rtx set_of (rtx, rtx);
extern void note_stores (rtx, void (*) (rtx, rtx, void *), void *)

               ;
extern void note_uses (rtx *, void (*) (rtx *, void *), void *)

               ;
extern rtx reg_set_last (rtx, rtx);
extern int dead_or_set_p (rtx, rtx);
extern int dead_or_set_regno_p (rtx, unsigned int);
extern rtx find_reg_note (rtx, enum reg_note, rtx);
extern rtx find_regno_note (rtx, enum reg_note, unsigned int)
                     ;
extern rtx find_reg_equal_equiv_note (rtx);
extern int find_reg_fusage (rtx, enum rtx_code, rtx);
extern int find_regno_fusage (rtx, enum rtx_code, unsigned int)
                     ;
extern int pure_call_p (rtx);
extern void remove_note (rtx, rtx);
extern int side_effects_p (rtx);
extern int volatile_refs_p (rtx);
extern int volatile_insn_p (rtx);
extern int may_trap_p (rtx);
extern int inequality_comparisons_p (rtx);
extern rtx replace_rtx (rtx, rtx, rtx);
extern rtx replace_regs (rtx, rtx *, unsigned int, int)
            ;
extern int computed_jump_p (rtx);
typedef int (*rtx_function) (rtx *, void *);
extern int for_each_rtx (rtx *, rtx_function, void *);
extern rtx regno_use_in (unsigned int, rtx);
extern int auto_inc_p (rtx);
extern int in_expr_list_p (rtx, rtx);
extern void remove_node_from_expr_list (rtx, rtx *);
extern int insns_safe_to_move_p (rtx, rtx, rtx *);
extern int loc_mentioned_in_p (rtx *, rtx);
extern rtx find_first_parameter_load (rtx, rtx);



extern rtx find_use_as_address (rtx, rtx, long);
void init_EXPR_INSN_LIST_cache (void);
void free_EXPR_LIST_list (rtx *);
void free_INSN_LIST_list (rtx *);
void free_EXPR_LIST_node (rtx);
void free_INSN_LIST_node (rtx);
rtx alloc_INSN_LIST (rtx, rtx);
rtx alloc_EXPR_LIST (int, rtx, rtx);







extern int max_parallel;


extern void free_reg_info (void);


extern int asm_noperands (rtx);
extern const char *decode_asm_operands (rtx, rtx *, rtx **, const char **, enum machine_mode *)

                                 ;

extern enum reg_class reg_preferred_class (int);
extern enum reg_class reg_alternate_class (int);

extern rtx get_first_nonparm_insn (void);

extern void split_all_insns (int);
extern void split_all_insns_noflow (void);

#define MAX_SAVED_CONST_INT 64
extern rtx const_int_rtx[64 * 2 + 1];

#define const0_rtx (const_int_rtx[MAX_SAVED_CONST_INT])
#define const1_rtx (const_int_rtx[MAX_SAVED_CONST_INT+1])
#define const2_rtx (const_int_rtx[MAX_SAVED_CONST_INT+2])
#define constm1_rtx (const_int_rtx[MAX_SAVED_CONST_INT-1])
extern rtx const_true_rtx;

extern rtx const_tiny_rtx[3][(int) MAX_MACHINE_MODE];




#define CONST0_RTX(MODE) (const_tiny_rtx[0][(int) (MODE)])



#define CONST1_RTX(MODE) (const_tiny_rtx[1][(int) (MODE)])
#define CONST2_RTX(MODE) (const_tiny_rtx[2][(int) (MODE)])
# 1584 "rtl.h"
enum global_rtl_index
{
  GR_PC,
  GR_CC0,
  GR_STACK_POINTER,
  GR_FRAME_POINTER,
# 1599 "rtl.h"
  GR_HARD_FRAME_POINTER,





  GR_ARG_POINTER,


  GR_VIRTUAL_INCOMING_ARGS,
  GR_VIRTUAL_STACK_ARGS,
  GR_VIRTUAL_STACK_DYNAMIC,
  GR_VIRTUAL_OUTGOING_ARGS,
  GR_VIRTUAL_CFA,

  GR_MAX
};


extern rtx global_rtl[GR_MAX];


#define pc_rtx (global_rtl[GR_PC])
#define cc0_rtx (global_rtl[GR_CC0])




#define stack_pointer_rtx (global_rtl[GR_STACK_POINTER])
#define frame_pointer_rtx (global_rtl[GR_FRAME_POINTER])
#define hard_frame_pointer_rtx (global_rtl[GR_HARD_FRAME_POINTER])
#define arg_pointer_rtx (global_rtl[GR_ARG_POINTER])

extern rtx pic_offset_table_rtx;
extern rtx struct_value_rtx;
extern rtx struct_value_incoming_rtx;
extern rtx static_chain_rtx;
extern rtx static_chain_incoming_rtx;
extern rtx return_address_pointer_rtx;




# 1 "genrtl.h" 1



#define GCC_GENRTL_H 

extern rtx gen_rtx_fmt_s (enum rtx_code, enum machine_mode mode, const char *arg0)
                             ;
extern rtx gen_rtx_fmt_ee (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1)
                               ;
extern rtx gen_rtx_fmt_ue (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1)
                               ;
extern rtx gen_rtx_fmt_iss (enum rtx_code, enum machine_mode mode, int arg0, const char *arg1, const char *arg2)

                             ;
extern rtx gen_rtx_fmt_is (enum rtx_code, enum machine_mode mode, int arg0, const char *arg1)
                                       ;
extern rtx gen_rtx_fmt_i (enum rtx_code, enum machine_mode mode, int arg0)
                     ;
extern rtx gen_rtx_fmt_isE (enum rtx_code, enum machine_mode mode, int arg0, const char *arg1, rtvec arg2)

                       ;
extern rtx gen_rtx_fmt_iE (enum rtx_code, enum machine_mode mode, int arg0, rtvec arg1)
                                 ;
extern rtx gen_rtx_fmt_Ess (enum rtx_code, enum machine_mode mode, rtvec arg0, const char *arg1, const char *arg2)

                             ;
extern rtx gen_rtx_fmt_sEss (enum rtx_code, enum machine_mode mode, const char *arg0, rtvec arg1, const char *arg2, const char *arg3)

                                               ;
extern rtx gen_rtx_fmt_eE (enum rtx_code, enum machine_mode mode, rtx arg0, rtvec arg1)
                                 ;
extern rtx gen_rtx_fmt_E (enum rtx_code, enum machine_mode mode, rtvec arg0)
                       ;
extern rtx gen_rtx_fmt_e (enum rtx_code, enum machine_mode mode, rtx arg0)
                     ;
extern rtx gen_rtx_fmt_sse (enum rtx_code, enum machine_mode mode, const char *arg0, const char *arg1, rtx arg2)

                     ;
extern rtx gen_rtx_fmt_ss (enum rtx_code, enum machine_mode mode, const char *arg0, const char *arg1)
                                               ;
extern rtx gen_rtx_fmt_sE (enum rtx_code, enum machine_mode mode, const char *arg0, rtvec arg1)
                                         ;
extern rtx gen_rtx_fmt_iuueiee (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, rtx arg3, int arg4, rtx arg5, rtx arg6)


                     ;
extern rtx gen_rtx_fmt_iuueiee0 (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, rtx arg3, int arg4, rtx arg5, rtx arg6)


                     ;
extern rtx gen_rtx_fmt_iuueieee (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, rtx arg3, int arg4, rtx arg5, rtx arg6, rtx arg7)


                               ;
extern rtx gen_rtx_fmt_iuu (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2)
                                         ;
extern rtx gen_rtx_fmt_iuu00iss (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, int arg3, const char *arg4, const char *arg5)


                             ;
extern rtx gen_rtx_fmt_ssiEEsi (enum rtx_code, enum machine_mode mode, const char *arg0, const char *arg1, int arg2, rtvec arg3, rtvec arg4, const char *arg5, int arg6)


                                       ;
extern rtx gen_rtx_fmt_Ei (enum rtx_code, enum machine_mode mode, rtvec arg0, int arg1)
                                 ;
extern rtx gen_rtx_fmt_eEee0 (enum rtx_code, enum machine_mode mode, rtx arg0, rtvec arg1, rtx arg2, rtx arg3)

                     ;
extern rtx gen_rtx_fmt_eee (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1, rtx arg2)
                                         ;
extern rtx gen_rtx_fmt_ (enum rtx_code, enum machine_mode mode);
extern rtx gen_rtx_fmt_w (enum rtx_code, enum machine_mode mode, long arg0)
                               ;
extern rtx gen_rtx_fmt_0www (enum rtx_code, enum machine_mode mode, long arg0, long arg1, long arg2)


                               ;
extern rtx gen_rtx_fmt_0 (enum rtx_code, enum machine_mode mode);
extern rtx gen_rtx_fmt_i0 (enum rtx_code, enum machine_mode mode, int arg0)
                     ;
extern rtx gen_rtx_fmt_ei (enum rtx_code, enum machine_mode mode, rtx arg0, int arg1)
                               ;
extern rtx gen_rtx_fmt_e0 (enum rtx_code, enum machine_mode mode, rtx arg0)
                     ;
extern rtx gen_rtx_fmt_u00 (enum rtx_code, enum machine_mode mode, rtx arg0)
                     ;
extern rtx gen_rtx_fmt_eit (enum rtx_code, enum machine_mode mode, rtx arg0, int arg1, union tree_node *arg2)

                                  ;
extern rtx gen_rtx_fmt_eeeee (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1, rtx arg2, rtx arg3, rtx arg4)

                               ;
extern rtx gen_rtx_fmt_Ee (enum rtx_code, enum machine_mode mode, rtvec arg0, rtx arg1)
                                 ;
extern rtx gen_rtx_fmt_uuEiiiiiibbii (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1, rtvec arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, struct bitmap_head_def *arg9, struct bitmap_head_def *arg10, int arg11, int arg12)





                                 ;
extern rtx gen_rtx_fmt_iiiiiiiitt (enum rtx_code, enum machine_mode mode, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, union tree_node *arg8, union tree_node *arg9)




                                  ;
extern rtx gen_rtx_fmt_eti (enum rtx_code, enum machine_mode mode, rtx arg0, union tree_node *arg1, int arg2)

                     ;
extern rtx gen_rtx_fmt_bi (enum rtx_code, enum machine_mode mode, struct bitmap_head_def *arg0, int arg1)

                     ;
extern rtx gen_rtx_fmt_uuuu (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1, rtx arg2, rtx arg3)

                     ;

#define gen_rtx_INCLUDE(MODE,ARG0) gen_rtx_fmt_s (INCLUDE, (MODE), (ARG0))

#define gen_rtx_EXPR_LIST(MODE,ARG0,ARG1) gen_rtx_fmt_ee (EXPR_LIST, (MODE), (ARG0), (ARG1))

#define gen_rtx_INSN_LIST(MODE,ARG0,ARG1) gen_rtx_fmt_ue (INSN_LIST, (MODE), (ARG0), (ARG1))

#define gen_rtx_MATCH_OPERAND(MODE,ARG0,ARG1,ARG2) gen_rtx_fmt_iss (MATCH_OPERAND, (MODE), (ARG0), (ARG1), (ARG2))

#define gen_rtx_MATCH_SCRATCH(MODE,ARG0,ARG1) gen_rtx_fmt_is (MATCH_SCRATCH, (MODE), (ARG0), (ARG1))

#define gen_rtx_MATCH_DUP(MODE,ARG0) gen_rtx_fmt_i (MATCH_DUP, (MODE), (ARG0))

#define gen_rtx_MATCH_OPERATOR(MODE,ARG0,ARG1,ARG2) gen_rtx_fmt_isE (MATCH_OPERATOR, (MODE), (ARG0), (ARG1), (ARG2))

#define gen_rtx_MATCH_PARALLEL(MODE,ARG0,ARG1,ARG2) gen_rtx_fmt_isE (MATCH_PARALLEL, (MODE), (ARG0), (ARG1), (ARG2))

#define gen_rtx_MATCH_OP_DUP(MODE,ARG0,ARG1) gen_rtx_fmt_iE (MATCH_OP_DUP, (MODE), (ARG0), (ARG1))

#define gen_rtx_MATCH_PAR_DUP(MODE,ARG0,ARG1) gen_rtx_fmt_iE (MATCH_PAR_DUP, (MODE), (ARG0), (ARG1))

#define gen_rtx_MATCH_INSN(MODE,ARG0,ARG1) gen_rtx_fmt_is (MATCH_INSN, (MODE), (ARG0), (ARG1))

#define gen_rtx_DEFINE_COMBINE(MODE,ARG0,ARG1,ARG2) gen_rtx_fmt_Ess (DEFINE_COMBINE, (MODE), (ARG0), (ARG1), (ARG2))

#define gen_rtx_DEFINE_EXPAND(MODE,ARG0,ARG1,ARG2,ARG3) gen_rtx_fmt_sEss (DEFINE_EXPAND, (MODE), (ARG0), (ARG1), (ARG2), (ARG3))

#define gen_rtx_DEFINE_DELAY(MODE,ARG0,ARG1) gen_rtx_fmt_eE (DEFINE_DELAY, (MODE), (ARG0), (ARG1))

#define gen_rtx_DEFINE_COND_EXEC(MODE,ARG0,ARG1,ARG2) gen_rtx_fmt_Ess (DEFINE_COND_EXEC, (MODE), (ARG0), (ARG1), (ARG2))

#define gen_rtx_SEQUENCE(MODE,ARG0) gen_rtx_fmt_E (SEQUENCE, (MODE), (ARG0))

#define gen_rtx_ADDRESS(MODE,ARG0) gen_rtx_fmt_e (ADDRESS, (MODE), (ARG0))

#define gen_rtx_DEFINE_ATTR(MODE,ARG0,ARG1,ARG2) gen_rtx_fmt_sse (DEFINE_ATTR, (MODE), (ARG0), (ARG1), (ARG2))

#define gen_rtx_ATTR(MODE,ARG0) gen_rtx_fmt_s (ATTR, (MODE), (ARG0))

#define gen_rtx_SET_ATTR(MODE,ARG0,ARG1) gen_rtx_fmt_ss (SET_ATTR, (MODE), (ARG0), (ARG1))

#define gen_rtx_SET_ATTR_ALTERNATIVE(MODE,ARG0,ARG1) gen_rtx_fmt_sE (SET_ATTR_ALTERNATIVE, (MODE), (ARG0), (ARG1))

#define gen_rtx_EQ_ATTR(MODE,ARG0,ARG1) gen_rtx_fmt_ss (EQ_ATTR, (MODE), (ARG0), (ARG1))

#define gen_rtx_ATTR_FLAG(MODE,ARG0) gen_rtx_fmt_s (ATTR_FLAG, (MODE), (ARG0))

#define gen_rtx_INSN(MODE,ARG0,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6) gen_rtx_fmt_iuueiee (INSN, (MODE), (ARG0), (ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6))

#define gen_rtx_JUMP_INSN(MODE,ARG0,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6) gen_rtx_fmt_iuueiee0 (JUMP_INSN, (MODE), (ARG0), (ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6))

#define gen_rtx_CALL_INSN(MODE,ARG0,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7) gen_rtx_fmt_iuueieee (CALL_INSN, (MODE), (ARG0), (ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7))

#define gen_rtx_BARRIER(MODE,ARG0,ARG1,ARG2) gen_rtx_fmt_iuu (BARRIER, (MODE), (ARG0), (ARG1), (ARG2))

#define gen_rtx_CODE_LABEL(MODE,ARG0,ARG1,ARG2,ARG3,ARG4,ARG5) gen_rtx_fmt_iuu00iss (CODE_LABEL, (MODE), (ARG0), (ARG1), (ARG2), (ARG3), (ARG4), (ARG5))

#define gen_rtx_COND_EXEC(MODE,ARG0,ARG1) gen_rtx_fmt_ee (COND_EXEC, (MODE), (ARG0), (ARG1))

#define gen_rtx_PARALLEL(MODE,ARG0) gen_rtx_fmt_E (PARALLEL, (MODE), (ARG0))

#define gen_rtx_ASM_INPUT(MODE,ARG0) gen_rtx_fmt_s (ASM_INPUT, (MODE), (ARG0))

#define gen_rtx_ASM_OPERANDS(MODE,ARG0,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6) gen_rtx_fmt_ssiEEsi (ASM_OPERANDS, (MODE), (ARG0), (ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6))

#define gen_rtx_UNSPEC(MODE,ARG0,ARG1) gen_rtx_fmt_Ei (UNSPEC, (MODE), (ARG0), (ARG1))

#define gen_rtx_UNSPEC_VOLATILE(MODE,ARG0,ARG1) gen_rtx_fmt_Ei (UNSPEC_VOLATILE, (MODE), (ARG0), (ARG1))

#define gen_rtx_ADDR_VEC(MODE,ARG0) gen_rtx_fmt_E (ADDR_VEC, (MODE), (ARG0))

#define gen_rtx_ADDR_DIFF_VEC(MODE,ARG0,ARG1,ARG2,ARG3) gen_rtx_fmt_eEee0 (ADDR_DIFF_VEC, (MODE), (ARG0), (ARG1), (ARG2), (ARG3))

#define gen_rtx_PREFETCH(MODE,ARG0,ARG1,ARG2) gen_rtx_fmt_eee (PREFETCH, (MODE), (ARG0), (ARG1), (ARG2))

#define gen_rtx_SET(MODE,ARG0,ARG1) gen_rtx_fmt_ee (SET, (MODE), (ARG0), (ARG1))

#define gen_rtx_USE(MODE,ARG0) gen_rtx_fmt_e (USE, (MODE), (ARG0))

#define gen_rtx_CLOBBER(MODE,ARG0) gen_rtx_fmt_e (CLOBBER, (MODE), (ARG0))

#define gen_rtx_CALL(MODE,ARG0,ARG1) gen_rtx_fmt_ee (CALL, (MODE), (ARG0), (ARG1))

#define gen_rtx_RETURN(MODE) gen_rtx_fmt_ (RETURN, (MODE))

#define gen_rtx_TRAP_IF(MODE,ARG0,ARG1) gen_rtx_fmt_ee (TRAP_IF, (MODE), (ARG0), (ARG1))

#define gen_rtx_RESX(MODE,ARG0) gen_rtx_fmt_i (RESX, (MODE), (ARG0))

#define gen_rtx_raw_CONST_INT(MODE,ARG0) gen_rtx_fmt_w (CONST_INT, (MODE), (ARG0))

#define gen_rtx_raw_CONST_DOUBLE(MODE,ARG0,ARG1,ARG2) gen_rtx_fmt_0www (CONST_DOUBLE, (MODE), (ARG0), (ARG1), (ARG2))

#define gen_rtx_CONST_VECTOR(MODE,ARG0) gen_rtx_fmt_E (CONST_VECTOR, (MODE), (ARG0))

#define gen_rtx_CONST_STRING(MODE,ARG0) gen_rtx_fmt_s (CONST_STRING, (MODE), (ARG0))

#define gen_rtx_CONST(MODE,ARG0) gen_rtx_fmt_e (CONST, (MODE), (ARG0))

#define gen_rtx_PC(MODE) gen_rtx_fmt_ (PC, (MODE))

#define gen_rtx_VALUE(MODE) gen_rtx_fmt_0 (VALUE, (MODE))

#define gen_rtx_raw_REG(MODE,ARG0) gen_rtx_fmt_i0 (REG, (MODE), (ARG0))

#define gen_rtx_SCRATCH(MODE) gen_rtx_fmt_0 (SCRATCH, (MODE))

#define gen_rtx_raw_SUBREG(MODE,ARG0,ARG1) gen_rtx_fmt_ei (SUBREG, (MODE), (ARG0), (ARG1))

#define gen_rtx_STRICT_LOW_PART(MODE,ARG0) gen_rtx_fmt_e (STRICT_LOW_PART, (MODE), (ARG0))

#define gen_rtx_CONCAT(MODE,ARG0,ARG1) gen_rtx_fmt_ee (CONCAT, (MODE), (ARG0), (ARG1))

#define gen_rtx_raw_MEM(MODE,ARG0) gen_rtx_fmt_e0 (MEM, (MODE), (ARG0))

#define gen_rtx_LABEL_REF(MODE,ARG0) gen_rtx_fmt_u00 (LABEL_REF, (MODE), (ARG0))

#define gen_rtx_SYMBOL_REF(MODE,ARG0) gen_rtx_fmt_s (SYMBOL_REF, (MODE), (ARG0))

#define gen_rtx_CC0(MODE) gen_rtx_fmt_ (CC0, (MODE))

#define gen_rtx_ADDRESSOF(MODE,ARG0,ARG1,ARG2) gen_rtx_fmt_eit (ADDRESSOF, (MODE), (ARG0), (ARG1), (ARG2))

#define gen_rtx_QUEUED(MODE,ARG0,ARG1,ARG2,ARG3,ARG4) gen_rtx_fmt_eeeee (QUEUED, (MODE), (ARG0), (ARG1), (ARG2), (ARG3), (ARG4))

#define gen_rtx_IF_THEN_ELSE(MODE,ARG0,ARG1,ARG2) gen_rtx_fmt_eee (IF_THEN_ELSE, (MODE), (ARG0), (ARG1), (ARG2))

#define gen_rtx_COND(MODE,ARG0,ARG1) gen_rtx_fmt_Ee (COND, (MODE), (ARG0), (ARG1))

#define gen_rtx_COMPARE(MODE,ARG0,ARG1) gen_rtx_fmt_ee (COMPARE, (MODE), (ARG0), (ARG1))

#define gen_rtx_PLUS(MODE,ARG0,ARG1) gen_rtx_fmt_ee (PLUS, (MODE), (ARG0), (ARG1))

#define gen_rtx_MINUS(MODE,ARG0,ARG1) gen_rtx_fmt_ee (MINUS, (MODE), (ARG0), (ARG1))

#define gen_rtx_NEG(MODE,ARG0) gen_rtx_fmt_e (NEG, (MODE), (ARG0))

#define gen_rtx_MULT(MODE,ARG0,ARG1) gen_rtx_fmt_ee (MULT, (MODE), (ARG0), (ARG1))

#define gen_rtx_DIV(MODE,ARG0,ARG1) gen_rtx_fmt_ee (DIV, (MODE), (ARG0), (ARG1))

#define gen_rtx_MOD(MODE,ARG0,ARG1) gen_rtx_fmt_ee (MOD, (MODE), (ARG0), (ARG1))

#define gen_rtx_UDIV(MODE,ARG0,ARG1) gen_rtx_fmt_ee (UDIV, (MODE), (ARG0), (ARG1))

#define gen_rtx_UMOD(MODE,ARG0,ARG1) gen_rtx_fmt_ee (UMOD, (MODE), (ARG0), (ARG1))

#define gen_rtx_AND(MODE,ARG0,ARG1) gen_rtx_fmt_ee (AND, (MODE), (ARG0), (ARG1))

#define gen_rtx_IOR(MODE,ARG0,ARG1) gen_rtx_fmt_ee (IOR, (MODE), (ARG0), (ARG1))

#define gen_rtx_XOR(MODE,ARG0,ARG1) gen_rtx_fmt_ee (XOR, (MODE), (ARG0), (ARG1))

#define gen_rtx_NOT(MODE,ARG0) gen_rtx_fmt_e (NOT, (MODE), (ARG0))

#define gen_rtx_ASHIFT(MODE,ARG0,ARG1) gen_rtx_fmt_ee (ASHIFT, (MODE), (ARG0), (ARG1))

#define gen_rtx_ROTATE(MODE,ARG0,ARG1) gen_rtx_fmt_ee (ROTATE, (MODE), (ARG0), (ARG1))

#define gen_rtx_ASHIFTRT(MODE,ARG0,ARG1) gen_rtx_fmt_ee (ASHIFTRT, (MODE), (ARG0), (ARG1))

#define gen_rtx_LSHIFTRT(MODE,ARG0,ARG1) gen_rtx_fmt_ee (LSHIFTRT, (MODE), (ARG0), (ARG1))

#define gen_rtx_ROTATERT(MODE,ARG0,ARG1) gen_rtx_fmt_ee (ROTATERT, (MODE), (ARG0), (ARG1))

#define gen_rtx_SMIN(MODE,ARG0,ARG1) gen_rtx_fmt_ee (SMIN, (MODE), (ARG0), (ARG1))

#define gen_rtx_SMAX(MODE,ARG0,ARG1) gen_rtx_fmt_ee (SMAX, (MODE), (ARG0), (ARG1))

#define gen_rtx_UMIN(MODE,ARG0,ARG1) gen_rtx_fmt_ee (UMIN, (MODE), (ARG0), (ARG1))

#define gen_rtx_UMAX(MODE,ARG0,ARG1) gen_rtx_fmt_ee (UMAX, (MODE), (ARG0), (ARG1))

#define gen_rtx_PRE_DEC(MODE,ARG0) gen_rtx_fmt_e (PRE_DEC, (MODE), (ARG0))

#define gen_rtx_PRE_INC(MODE,ARG0) gen_rtx_fmt_e (PRE_INC, (MODE), (ARG0))

#define gen_rtx_POST_DEC(MODE,ARG0) gen_rtx_fmt_e (POST_DEC, (MODE), (ARG0))

#define gen_rtx_POST_INC(MODE,ARG0) gen_rtx_fmt_e (POST_INC, (MODE), (ARG0))

#define gen_rtx_PRE_MODIFY(MODE,ARG0,ARG1) gen_rtx_fmt_ee (PRE_MODIFY, (MODE), (ARG0), (ARG1))

#define gen_rtx_POST_MODIFY(MODE,ARG0,ARG1) gen_rtx_fmt_ee (POST_MODIFY, (MODE), (ARG0), (ARG1))

#define gen_rtx_NE(MODE,ARG0,ARG1) gen_rtx_fmt_ee (NE, (MODE), (ARG0), (ARG1))

#define gen_rtx_EQ(MODE,ARG0,ARG1) gen_rtx_fmt_ee (EQ, (MODE), (ARG0), (ARG1))

#define gen_rtx_GE(MODE,ARG0,ARG1) gen_rtx_fmt_ee (GE, (MODE), (ARG0), (ARG1))

#define gen_rtx_GT(MODE,ARG0,ARG1) gen_rtx_fmt_ee (GT, (MODE), (ARG0), (ARG1))

#define gen_rtx_LE(MODE,ARG0,ARG1) gen_rtx_fmt_ee (LE, (MODE), (ARG0), (ARG1))

#define gen_rtx_LT(MODE,ARG0,ARG1) gen_rtx_fmt_ee (LT, (MODE), (ARG0), (ARG1))

#define gen_rtx_GEU(MODE,ARG0,ARG1) gen_rtx_fmt_ee (GEU, (MODE), (ARG0), (ARG1))

#define gen_rtx_GTU(MODE,ARG0,ARG1) gen_rtx_fmt_ee (GTU, (MODE), (ARG0), (ARG1))

#define gen_rtx_LEU(MODE,ARG0,ARG1) gen_rtx_fmt_ee (LEU, (MODE), (ARG0), (ARG1))

#define gen_rtx_LTU(MODE,ARG0,ARG1) gen_rtx_fmt_ee (LTU, (MODE), (ARG0), (ARG1))

#define gen_rtx_UNORDERED(MODE,ARG0,ARG1) gen_rtx_fmt_ee (UNORDERED, (MODE), (ARG0), (ARG1))

#define gen_rtx_ORDERED(MODE,ARG0,ARG1) gen_rtx_fmt_ee (ORDERED, (MODE), (ARG0), (ARG1))

#define gen_rtx_UNEQ(MODE,ARG0,ARG1) gen_rtx_fmt_ee (UNEQ, (MODE), (ARG0), (ARG1))

#define gen_rtx_UNGE(MODE,ARG0,ARG1) gen_rtx_fmt_ee (UNGE, (MODE), (ARG0), (ARG1))

#define gen_rtx_UNGT(MODE,ARG0,ARG1) gen_rtx_fmt_ee (UNGT, (MODE), (ARG0), (ARG1))

#define gen_rtx_UNLE(MODE,ARG0,ARG1) gen_rtx_fmt_ee (UNLE, (MODE), (ARG0), (ARG1))

#define gen_rtx_UNLT(MODE,ARG0,ARG1) gen_rtx_fmt_ee (UNLT, (MODE), (ARG0), (ARG1))

#define gen_rtx_LTGT(MODE,ARG0,ARG1) gen_rtx_fmt_ee (LTGT, (MODE), (ARG0), (ARG1))

#define gen_rtx_SIGN_EXTEND(MODE,ARG0) gen_rtx_fmt_e (SIGN_EXTEND, (MODE), (ARG0))

#define gen_rtx_ZERO_EXTEND(MODE,ARG0) gen_rtx_fmt_e (ZERO_EXTEND, (MODE), (ARG0))

#define gen_rtx_TRUNCATE(MODE,ARG0) gen_rtx_fmt_e (TRUNCATE, (MODE), (ARG0))

#define gen_rtx_FLOAT_EXTEND(MODE,ARG0) gen_rtx_fmt_e (FLOAT_EXTEND, (MODE), (ARG0))

#define gen_rtx_FLOAT_TRUNCATE(MODE,ARG0) gen_rtx_fmt_e (FLOAT_TRUNCATE, (MODE), (ARG0))

#define gen_rtx_FLOAT(MODE,ARG0) gen_rtx_fmt_e (FLOAT, (MODE), (ARG0))

#define gen_rtx_FIX(MODE,ARG0) gen_rtx_fmt_e (FIX, (MODE), (ARG0))

#define gen_rtx_UNSIGNED_FLOAT(MODE,ARG0) gen_rtx_fmt_e (UNSIGNED_FLOAT, (MODE), (ARG0))

#define gen_rtx_UNSIGNED_FIX(MODE,ARG0) gen_rtx_fmt_e (UNSIGNED_FIX, (MODE), (ARG0))

#define gen_rtx_ABS(MODE,ARG0) gen_rtx_fmt_e (ABS, (MODE), (ARG0))

#define gen_rtx_SQRT(MODE,ARG0) gen_rtx_fmt_e (SQRT, (MODE), (ARG0))

#define gen_rtx_FFS(MODE,ARG0) gen_rtx_fmt_e (FFS, (MODE), (ARG0))

#define gen_rtx_SIGN_EXTRACT(MODE,ARG0,ARG1,ARG2) gen_rtx_fmt_eee (SIGN_EXTRACT, (MODE), (ARG0), (ARG1), (ARG2))

#define gen_rtx_ZERO_EXTRACT(MODE,ARG0,ARG1,ARG2) gen_rtx_fmt_eee (ZERO_EXTRACT, (MODE), (ARG0), (ARG1), (ARG2))

#define gen_rtx_HIGH(MODE,ARG0) gen_rtx_fmt_e (HIGH, (MODE), (ARG0))

#define gen_rtx_LO_SUM(MODE,ARG0,ARG1) gen_rtx_fmt_ee (LO_SUM, (MODE), (ARG0), (ARG1))

#define gen_rtx_RANGE_INFO(MODE,ARG0,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7,ARG8,ARG9,ARG10,ARG11,ARG12) gen_rtx_fmt_uuEiiiiiibbii (RANGE_INFO, (MODE), (ARG0), (ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7), (ARG8), (ARG9), (ARG10), (ARG11), (ARG12))

#define gen_rtx_RANGE_REG(MODE,ARG0,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7,ARG8,ARG9) gen_rtx_fmt_iiiiiiiitt (RANGE_REG, (MODE), (ARG0), (ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7), (ARG8), (ARG9))

#define gen_rtx_RANGE_VAR(MODE,ARG0,ARG1,ARG2) gen_rtx_fmt_eti (RANGE_VAR, (MODE), (ARG0), (ARG1), (ARG2))

#define gen_rtx_RANGE_LIVE(MODE,ARG0,ARG1) gen_rtx_fmt_bi (RANGE_LIVE, (MODE), (ARG0), (ARG1))

#define gen_rtx_CONSTANT_P_RTX(MODE,ARG0) gen_rtx_fmt_e (CONSTANT_P_RTX, (MODE), (ARG0))

#define gen_rtx_CALL_PLACEHOLDER(MODE,ARG0,ARG1,ARG2,ARG3) gen_rtx_fmt_uuuu (CALL_PLACEHOLDER, (MODE), (ARG0), (ARG1), (ARG2), (ARG3))

#define gen_rtx_VEC_MERGE(MODE,ARG0,ARG1,ARG2) gen_rtx_fmt_eee (VEC_MERGE, (MODE), (ARG0), (ARG1), (ARG2))

#define gen_rtx_VEC_SELECT(MODE,ARG0,ARG1) gen_rtx_fmt_ee (VEC_SELECT, (MODE), (ARG0), (ARG1))

#define gen_rtx_VEC_CONCAT(MODE,ARG0,ARG1) gen_rtx_fmt_ee (VEC_CONCAT, (MODE), (ARG0), (ARG1))

#define gen_rtx_VEC_DUPLICATE(MODE,ARG0) gen_rtx_fmt_e (VEC_DUPLICATE, (MODE), (ARG0))

#define gen_rtx_SS_PLUS(MODE,ARG0,ARG1) gen_rtx_fmt_ee (SS_PLUS, (MODE), (ARG0), (ARG1))

#define gen_rtx_US_PLUS(MODE,ARG0,ARG1) gen_rtx_fmt_ee (US_PLUS, (MODE), (ARG0), (ARG1))

#define gen_rtx_SS_MINUS(MODE,ARG0,ARG1) gen_rtx_fmt_ee (SS_MINUS, (MODE), (ARG0), (ARG1))

#define gen_rtx_US_MINUS(MODE,ARG0,ARG1) gen_rtx_fmt_ee (US_MINUS, (MODE), (ARG0), (ARG1))

#define gen_rtx_SS_TRUNCATE(MODE,ARG0) gen_rtx_fmt_e (SS_TRUNCATE, (MODE), (ARG0))

#define gen_rtx_US_TRUNCATE(MODE,ARG0) gen_rtx_fmt_e (US_TRUNCATE, (MODE), (ARG0))

#define gen_rtx_PHI(MODE,ARG0) gen_rtx_fmt_E (PHI, (MODE), (ARG0))
# 1643 "rtl.h" 2







extern rtx gen_rtx_CONST_DOUBLE (enum machine_mode, long, long)
                                         ;
extern rtx gen_rtx_CONST_INT (enum machine_mode, long);
extern rtx gen_raw_REG (enum machine_mode, int);
extern rtx gen_rtx_REG (enum machine_mode, int);
extern rtx gen_rtx_SUBREG (enum machine_mode, rtx, int);
extern rtx gen_rtx_MEM (enum machine_mode, rtx);

extern rtx gen_lowpart_SUBREG (enum machine_mode, rtx);



#define GEN_INT(N) gen_rtx_CONST_INT (VOIDmode, (HOST_WIDE_INT) (N))







#define FIRST_VIRTUAL_REGISTER (FIRST_PSEUDO_REGISTER)





#define virtual_incoming_args_rtx (global_rtl[GR_VIRTUAL_INCOMING_ARGS])

#define VIRTUAL_INCOMING_ARGS_REGNUM (FIRST_VIRTUAL_REGISTER)





#define virtual_stack_vars_rtx (global_rtl[GR_VIRTUAL_STACK_ARGS])

#define VIRTUAL_STACK_VARS_REGNUM ((FIRST_VIRTUAL_REGISTER) + 1)





#define virtual_stack_dynamic_rtx (global_rtl[GR_VIRTUAL_STACK_DYNAMIC])

#define VIRTUAL_STACK_DYNAMIC_REGNUM ((FIRST_VIRTUAL_REGISTER) + 2)





#define virtual_outgoing_args_rtx (global_rtl[GR_VIRTUAL_OUTGOING_ARGS])

#define VIRTUAL_OUTGOING_ARGS_REGNUM ((FIRST_VIRTUAL_REGISTER) + 3)







#define virtual_cfa_rtx (global_rtl[GR_VIRTUAL_CFA])

#define VIRTUAL_CFA_REGNUM ((FIRST_VIRTUAL_REGISTER) + 4)

#define LAST_VIRTUAL_REGISTER ((FIRST_VIRTUAL_REGISTER) + 4)


#define REGNO_PTR_FRAME_P(REGNUM) ((REGNUM) == STACK_POINTER_REGNUM || (REGNUM) == FRAME_POINTER_REGNUM || (REGNUM) == HARD_FRAME_POINTER_REGNUM || (REGNUM) == ARG_POINTER_REGNUM || ((REGNUM) >= FIRST_VIRTUAL_REGISTER && (REGNUM) <= LAST_VIRTUAL_REGISTER))
# 1726 "rtl.h"
#define INVALID_REGNUM (~(unsigned int) 0)

extern rtx find_next_ref (rtx, rtx);

extern rtx output_constant_def (tree, int);
extern rtx immed_real_const (tree);
# 1741 "rtl.h"
extern int flow2_completed;




extern int reload_completed;




extern int reload_in_progress;







extern int cse_not_expected;



extern int no_new_pseudos;





extern int rtx_to_tree_code (enum rtx_code);


struct obstack;
extern void gcc_obstack_init (struct obstack *);


struct cse_basic_block_data;




#define COSTS_N_INSNS(N) ((N) * 4)



#define MAX_COST INT_MAX

extern int rtx_cost (rtx, enum rtx_code);
extern int address_cost (rtx, enum machine_mode);
extern void delete_trivially_dead_insns (rtx, int, int);

extern int cse_main (rtx, int, int, FILE *);

extern void cse_end_of_basic_block (rtx, struct cse_basic_block_data *, int, int, int)

                     ;


extern int comparison_dominates_p (enum rtx_code, enum rtx_code);
extern int condjump_p (rtx);
extern int any_condjump_p (rtx);
extern int any_uncondjump_p (rtx);
extern int safe_to_remove_jump_p (rtx);
extern rtx pc_set (rtx);
extern rtx condjump_label (rtx);
extern int simplejump_p (rtx);
extern int returnjump_p (rtx);
extern int onlyjump_p (rtx);
extern int only_sets_cc0_p (rtx);
extern int sets_cc0_p (rtx);
extern int invert_jump_1 (rtx, rtx);
extern int invert_jump (rtx, rtx, int);
extern int rtx_renumbered_equal_p (rtx, rtx);
extern int true_regnum (rtx);
extern int redirect_jump_1 (rtx, rtx);
extern int redirect_jump (rtx, rtx, int);
extern void rebuild_jump_labels (rtx);
extern enum rtx_code reversed_comparison_code (rtx, rtx);
extern enum rtx_code reversed_comparison_code_parts (enum rtx_code, rtx, rtx, rtx)
                           ;
extern void delete_for_peephole (rtx, rtx);
extern int condjump_in_parallel_p (rtx);
extern void never_reached_warning (rtx, rtx);
extern void purge_line_number_notes (rtx);
extern void copy_loop_headers (rtx);


extern int max_reg_num (void);
extern int max_label_num (void);
extern int get_first_label_num (void);
extern void delete_insns_since (rtx);
extern void mark_reg_pointer (rtx, int);
extern void mark_user_reg (rtx);
extern void reset_used_flags (rtx);
extern void reorder_insns (rtx, rtx, rtx);
extern void reorder_insns_nobb (rtx, rtx, rtx);
extern int get_max_uid (void);
extern int in_sequence_p (void);
extern void force_next_line_note (void);
extern void clear_emit_caches (void);
extern void init_emit (void);
extern void init_emit_once (int);
extern void push_topmost_sequence (void);
extern void pop_topmost_sequence (void);
extern int subreg_realpart_p (rtx);
extern void reverse_comparison (rtx);
extern void set_new_first_and_last_insn (rtx, rtx);
extern void set_new_first_and_last_label_num (int, int);
extern void set_new_last_label_num (int);
extern void unshare_all_rtl_again (rtx);
extern void set_last_insn (rtx);
extern void link_cc0_insns (rtx);
extern void add_insn (rtx);
extern void add_insn_before (rtx, rtx);
extern void add_insn_after (rtx, rtx);
extern void remove_insn (rtx);
extern void reorder_insns_with_line_notes (rtx, rtx, rtx);
extern void emit_insn_after_with_line_notes (rtx, rtx, rtx);
extern enum rtx_code classify_insn (rtx);
extern rtx emit (rtx);



int force_line_numbers (void);
void restore_line_number_status (int old_value);
extern void renumber_insns (FILE *);
extern void remove_unnecessary_notes (void);
extern rtx delete_insn (rtx);
extern void delete_insn_chain (rtx, rtx);


extern int combine_instructions (rtx, unsigned int);
extern unsigned int extended_count (rtx, enum machine_mode, int);
extern rtx remove_death (unsigned int, rtx);

extern void dump_combine_stats (FILE *);
extern void dump_combine_total_stats (FILE *);




extern void schedule_insns (FILE *);
extern void schedule_ebbs (FILE *);

extern void fix_sched_param (const char *, const char *);


extern const char *print_rtx_head;
extern void debug_rtx (rtx);
extern void debug_rtx_list (rtx, int);
extern void debug_rtx_range (rtx, rtx);
extern rtx debug_rtx_find (rtx, int);

extern void print_mem_expr (FILE *, tree);
extern void print_rtl (FILE *, rtx);
extern void print_simple_rtl (FILE *, rtx);
extern int print_rtl_single (FILE *, rtx);
extern void print_inline_rtx (FILE *, rtx, int);



extern void init_loop (void);
extern rtx libcall_other_reg (rtx, rtx);

extern void loop_optimize (rtx, FILE *, int);

extern void record_excess_regs (rtx, rtx, rtx *);


extern void reposition_prologue_and_epilogue_notes (rtx);
extern void thread_prologue_and_epilogue_insns (rtx);
extern int prologue_epilogue_contains (rtx);
extern int sibcall_epilogue_contains (rtx);
extern void preserve_rtl_expr_result (rtx);
extern void mark_temp_addr_taken (rtx);
extern void update_temp_slot_address (rtx, rtx);
extern void purge_addressof (rtx);
extern void purge_hard_subreg_sets (rtx);


extern void set_file_and_line_for_stmt (const char *, int);
extern void expand_null_return (void);
extern void emit_jump (rtx);
extern int preserve_subexpressions_p (void);


extern void move_by_pieces (rtx, rtx, unsigned long, unsigned int)

                     ;


extern void recompute_reg_usage (rtx, int);
extern int initialize_uninitialized_subregs (void);

extern void print_rtl_with_bb (FILE *, rtx);
extern void dump_flow_info (FILE *);



extern void init_expmed (void);
extern void expand_inc (rtx, rtx);
extern void expand_dec (rtx, rtx);
extern rtx expand_mult_highpart (enum machine_mode, rtx, unsigned long, rtx, int, int)

                ;



extern int gcse_main (rtx, FILE *);



extern void mark_elimination (int, int);

extern int global_alloc (FILE *);
extern void dump_global_regs (FILE *);




extern void build_insn_chain (rtx);


extern int reg_classes_intersect_p (enum reg_class, enum reg_class);
extern int reg_class_subset_p (enum reg_class, enum reg_class);
extern void globalize_reg (int);
extern void init_regs (void);
extern void init_reg_sets (void);
extern void regset_release_memory (void);
extern void regclass_init (void);
extern void regclass (rtx, int, FILE *);
extern void reg_scan (rtx, unsigned int, int);
extern void reg_scan_update (rtx, rtx, unsigned int);
extern void fix_register (const char *, int, int);

extern void delete_null_pointer_checks (rtx);



extern void regmove_optimize (rtx, int, FILE *);

extern void combine_stack_adjustments (void);



extern void dbr_schedule (rtx, FILE *);




extern void dump_local_alloc (FILE *);

extern int local_alloc (void);
extern int function_invariant_p (rtx);


extern void init_branch_prob (const char *);
extern void branch_prob (void);
extern void end_branch_prob (void);
extern void output_func_start_profiler (void);



extern void reg_to_stack (rtx, FILE *);



extern int add_double (unsigned long, long, unsigned long, long, unsigned long *, long *)


                       ;
extern int neg_double (unsigned long, long, unsigned long *, long *)

                       ;
extern int mul_double (unsigned long, long, unsigned long, long, unsigned long *, long *)



                       ;
extern void lshift_double (unsigned long, long, long, unsigned int, unsigned long *, long *, int)


                            ;
extern void rshift_double (unsigned long, long, long, unsigned int, unsigned long *, long *, int)


                            ;
extern void lrotate_double (unsigned long, long, long, unsigned int, unsigned long *, long *)


                       ;
extern void rrotate_double (unsigned long, long, long, unsigned int, unsigned long *, long *)


                       ;


enum libcall_type
{
  LCT_NORMAL = 0,
  LCT_CONST = 1,
  LCT_PURE = 2,
  LCT_CONST_MAKE_BLOCK = 3,
  LCT_PURE_MAKE_BLOCK = 4,
  LCT_NORETURN = 5,
  LCT_THROW = 6,
  LCT_ALWAYS_RETURN = 7,
  LCT_RETURNS_TWICE = 8
};

extern void emit_library_call (rtx, enum libcall_type, enum machine_mode, int, ...)

            ;
extern rtx emit_library_call_value (rtx, rtx, enum libcall_type, enum machine_mode, int, ...)

            ;


extern int set_dominates_use (int, int, int, rtx, rtx);


extern int in_data_section (void);
extern void init_varasm_once (void);


extern void init_rtl (void);
extern void traverse_md_constants (int (*) (void **, void *), void *)
               ;
struct md_constant { char *name, *value; };


extern int read_skip_spaces (FILE *);
extern rtx read_rtx (FILE *);


extern const char *read_rtx_filename;
extern int read_rtx_lineno;







extern void fancy_abort (const char *, int, const char *)
    __attribute__ ((__noreturn__));
#define abort() fancy_abort (__FILE__, __LINE__, __FUNCTION__)


extern void clear_reg_alias_info (rtx);
extern rtx canon_rtx (rtx);
extern int true_dependence (rtx, enum machine_mode, rtx, int (*)(rtx, int))
                         ;
extern rtx get_addr (rtx);
extern int canon_true_dependence (rtx, enum machine_mode, rtx, rtx, int (*)(rtx, int))
                                                                        ;
extern int read_dependence (rtx, rtx);
extern int anti_dependence (rtx, rtx);
extern int output_dependence (rtx, rtx);
extern void mark_constant_function (void);
extern void init_alias_once (void);
extern void init_alias_analysis (void);
extern void end_alias_analysis (void);
extern rtx addr_side_effect_eval (rtx, int, int);


typedef enum {
  sibcall_use_normal = 1,
  sibcall_use_tail_recursion,
  sibcall_use_sibcall
} sibcall_use_t;

extern void optimize_sibling_and_tail_recursive_calls (void);
extern void replace_call_placeholder (rtx, sibcall_use_t);


extern int stack_regs_mentioned (rtx insn);



extern rtx stack_limit_rtx;


extern void regrename_optimize (void);
extern void copyprop_hardreg_forward (void);


extern void if_convert (int);


extern void invert_br_probabilities (rtx);
extern _Bool expensive_function_p (int);
# 26 "regrename.c" 2
# 1 "tm_p.h" 1
# 1 "i386-protos.h" 1
# 23 "i386-protos.h"
extern void override_options (void);
extern void optimization_options (int, int);

extern int ix86_can_use_return_insn_p (void);
extern int ix86_frame_pointer_required (void);
extern void ix86_setup_frame_addresses (void);

extern void ix86_asm_file_end (FILE *);
extern void load_pic_register (void);
extern long ix86_initial_elimination_offset (int, int);
extern void ix86_expand_prologue (void);
extern void ix86_expand_epilogue (int);

extern void ix86_output_addr_vec_elt (FILE *, int);
extern void ix86_output_addr_diff_elt (FILE *, int, int);


extern int ix86_aligned_p (rtx);

extern int standard_80387_constant_p (rtx);
extern int standard_sse_constant_p (rtx);
extern int symbolic_reference_mentioned_p (rtx);

extern int x86_64_general_operand (rtx, enum machine_mode);
extern int x86_64_szext_general_operand (rtx, enum machine_mode);
extern int x86_64_nonmemory_operand (rtx, enum machine_mode);
extern int x86_64_szext_nonmemory_operand (rtx, enum machine_mode);
extern int x86_64_immediate_operand (rtx, enum machine_mode);
extern int x86_64_zext_immediate_operand (rtx, enum machine_mode);
extern int const_int_1_operand (rtx, enum machine_mode);
extern int symbolic_operand (rtx, enum machine_mode);
extern int pic_symbolic_operand (rtx, enum machine_mode);
extern int call_insn_operand (rtx, enum machine_mode);
extern int constant_call_address_operand (rtx, enum machine_mode);
extern int const0_operand (rtx, enum machine_mode);
extern int const1_operand (rtx, enum machine_mode);
extern int const248_operand (rtx, enum machine_mode);
extern int incdec_operand (rtx, enum machine_mode);
extern int reg_no_sp_operand (rtx, enum machine_mode);
extern int mmx_reg_operand (rtx, enum machine_mode);
extern int general_no_elim_operand (rtx, enum machine_mode);
extern int nonmemory_no_elim_operand (rtx, enum machine_mode);
extern int q_regs_operand (rtx, enum machine_mode);
extern int non_q_regs_operand (rtx, enum machine_mode);
extern int sse_comparison_operator (rtx, enum machine_mode);
extern int fcmov_comparison_operator (rtx, enum machine_mode);
extern int cmp_fp_expander_operand (rtx, enum machine_mode);
extern int ix86_comparison_operator (rtx, enum machine_mode);
extern int ext_register_operand (rtx, enum machine_mode);
extern int binary_fp_operator (rtx, enum machine_mode);
extern int mult_operator (rtx, enum machine_mode);
extern int div_operator (rtx, enum machine_mode);
extern int arith_or_logical_operator (rtx, enum machine_mode);
extern int promotable_binary_operator (rtx, enum machine_mode);
extern int memory_displacement_operand (rtx, enum machine_mode);
extern int cmpsi_operand (rtx, enum machine_mode);
extern int long_memory_operand (rtx, enum machine_mode);
extern int aligned_operand (rtx, enum machine_mode);
extern enum machine_mode ix86_cc_mode (enum rtx_code, rtx, rtx);

extern int ix86_expand_movstr (rtx, rtx, rtx, rtx);
extern int ix86_expand_clrstr (rtx, rtx, rtx);
extern int ix86_expand_strlen (rtx, rtx, rtx, rtx);

extern int legitimate_pic_address_disp_p (rtx);
extern int legitimate_address_p (enum machine_mode, rtx, int);
extern rtx legitimize_pic_address (rtx, rtx);
extern rtx legitimize_address (rtx, rtx, enum machine_mode);

extern void print_reg (rtx, int, FILE*);
extern void print_operand (FILE*, rtx, int);
extern void print_operand_address (FILE*, rtx);

extern void split_di (rtx[], int, rtx[], rtx[]);
extern void split_ti (rtx[], int, rtx[], rtx[]);

extern const char *output_387_binary_op (rtx, rtx*);
extern const char *output_fix_trunc (rtx, rtx*);
extern const char *output_fp_compare (rtx, rtx*, int, int);

extern void i386_dwarf_output_addr_const (FILE*, rtx);
extern rtx i386_simplify_dwarf_addr (rtx);

extern void ix86_expand_clear (rtx);
extern void ix86_expand_move (enum machine_mode, rtx[]);
extern void ix86_expand_vector_move (enum machine_mode, rtx[]);
extern void ix86_expand_binary_operator (enum rtx_code, enum machine_mode, rtx[])
                                      ;
extern int ix86_binary_operator_ok (enum rtx_code, enum machine_mode, rtx[])
              ;
extern void ix86_expand_unary_operator (enum rtx_code, enum machine_mode, rtx[])
                  ;
extern int ix86_unary_operator_ok (enum rtx_code, enum machine_mode, rtx[])
             ;
extern int ix86_match_ccmode (rtx, enum machine_mode);
extern rtx ix86_expand_compare (enum rtx_code, rtx *, rtx *);
extern int ix86_use_fcomi_compare (enum rtx_code);
extern void ix86_expand_branch (enum rtx_code, rtx);
extern int ix86_expand_setcc (enum rtx_code, rtx);
extern int ix86_expand_int_movcc (rtx[]);
extern int ix86_expand_fp_movcc (rtx[]);
extern void x86_initialize_trampoline (rtx, rtx, rtx);
extern rtx ix86_zero_extend_to_Pmode (rtx);
extern void ix86_split_long_move (rtx[]);
extern void ix86_split_ashldi (rtx *, rtx);
extern void ix86_split_ashrdi (rtx *, rtx);
extern void ix86_split_lshrdi (rtx *, rtx);
extern int ix86_address_cost (rtx);
extern rtx ix86_find_base_term (rtx);

extern rtx assign_386_stack_local (enum machine_mode, int);
extern int ix86_attr_length_immediate_default (rtx, int);
extern int ix86_attr_length_address_default (rtx);

extern enum machine_mode ix86_fp_compare_mode (enum rtx_code);

extern int x86_64_sign_extended_value (rtx);
extern int x86_64_zero_extended_value (rtx);
extern rtx ix86_libcall_value (enum machine_mode);
extern _Bool ix86_function_value_regno_p (int);
extern _Bool ix86_function_arg_regno_p (int);
extern int ix86_function_arg_boundary (enum machine_mode, tree);
extern int ix86_return_in_memory (tree);
extern void ix86_va_start (int, tree, rtx);
extern rtx ix86_va_arg (tree, tree);
extern void ix86_setup_incoming_varargs (CUMULATIVE_ARGS *, enum machine_mode, tree, int *, int)

                         ;

extern rtx ix86_force_to_memory (enum machine_mode, rtx);
extern void ix86_free_from_memory (enum machine_mode);
extern void ix86_split_fp_branch (enum rtx_code code, rtx, rtx, rtx, rtx, rtx)
                           ;
extern int ix86_hard_regno_mode_ok (int, enum machine_mode);
extern int ix86_register_move_cost (enum machine_mode, enum reg_class, enum reg_class)
                         ;
extern int ix86_secondary_memory_needed (enum reg_class, enum reg_class, enum machine_mode, int)

                               ;
extern enum reg_class ix86_preferred_reload_class (rtx, enum reg_class)
                          ;
extern int ix86_memory_move_cost (enum machine_mode, enum reg_class, int)
            ;
extern void ix86_set_move_mem_attrs (rtx, rtx, rtx, rtx, rtx);
extern void emit_i387_cw_initialization (rtx, rtx);
extern _Bool ix86_fp_jump_nontrivial_p (enum rtx_code);
extern void x86_order_regs_for_local_alloc (void);
# 2 "tm_p.h" 2
# 1 "tm-preds.h" 1



#define GCC_TM_PREDS_H 



extern int x86_64_immediate_operand (rtx, enum machine_mode);
extern int x86_64_nonmemory_operand (rtx, enum machine_mode);
extern int x86_64_movabs_operand (rtx, enum machine_mode);
extern int x86_64_szext_nonmemory_operand (rtx, enum machine_mode);
extern int x86_64_general_operand (rtx, enum machine_mode);
extern int x86_64_szext_general_operand (rtx, enum machine_mode);
extern int x86_64_zext_immediate_operand (rtx, enum machine_mode);
extern int shiftdi_operand (rtx, enum machine_mode);
extern int const_int_1_operand (rtx, enum machine_mode);
extern int const_int_1_31_operand (rtx, enum machine_mode);
extern int symbolic_operand (rtx, enum machine_mode);
extern int aligned_operand (rtx, enum machine_mode);
extern int pic_symbolic_operand (rtx, enum machine_mode);
extern int call_insn_operand (rtx, enum machine_mode);
extern int constant_call_address_operand (rtx, enum machine_mode);
extern int const0_operand (rtx, enum machine_mode);
extern int const1_operand (rtx, enum machine_mode);
extern int const248_operand (rtx, enum machine_mode);
extern int incdec_operand (rtx, enum machine_mode);
extern int mmx_reg_operand (rtx, enum machine_mode);
extern int reg_no_sp_operand (rtx, enum machine_mode);
extern int general_no_elim_operand (rtx, enum machine_mode);
extern int nonmemory_no_elim_operand (rtx, enum machine_mode);
extern int q_regs_operand (rtx, enum machine_mode);
extern int non_q_regs_operand (rtx, enum machine_mode);
extern int fcmov_comparison_operator (rtx, enum machine_mode);
extern int sse_comparison_operator (rtx, enum machine_mode);
extern int ix86_comparison_operator (rtx, enum machine_mode);
extern int cmp_fp_expander_operand (rtx, enum machine_mode);
extern int ext_register_operand (rtx, enum machine_mode);
extern int binary_fp_operator (rtx, enum machine_mode);
extern int mult_operator (rtx, enum machine_mode);
extern int div_operator (rtx, enum machine_mode);
extern int arith_or_logical_operator (rtx, enum machine_mode);
extern int promotable_binary_operator (rtx, enum machine_mode);
extern int memory_displacement_operand (rtx, enum machine_mode);
extern int cmpsi_operand (rtx, enum machine_mode);
extern int long_memory_operand (rtx, enum machine_mode);
# 3 "tm_p.h" 2
# 27 "regrename.c" 2
# 1 "insn-config.h" 1




#define GCC_INSN_CONFIG_H 

#define MAX_RECOG_OPERANDS 30
#define MAX_DUP_OPERANDS 4

#define MAX_INSNS_PER_SPLIT 4

#define HAVE_conditional_move 1
#define HAVE_peephole2 1
#define MAX_INSNS_PER_PEEP2 4
# 28 "regrename.c" 2
# 1 "regs.h" 1
# 23 "regs.h"
# 1 "varray.h" 1
# 23 "varray.h"
#define GCC_VARRAY_H 
# 36 "varray.h"
struct const_equiv_data {
# 50 "varray.h"
  struct rtx_def *rtx;



  unsigned age;
};


typedef union varray_data_tag {
  char c[1];
  unsigned char uc[1];
  short s[1];
  unsigned short us[1];
  int i[1];
  unsigned int u[1];
  long l[1];
  unsigned long ul[1];
  long hint[1];
  unsigned long uhint[1];
  void * generic[1];
  char *cptr[1];
  struct rtx_def *rtx[1];
  struct rtvec_def *rtvec[1];
  union tree_node *tree[1];
  struct bitmap_head_def *bitmap[1];
  struct sched_info_tag *sched[1];
  struct reg_info_def *reg[1];
  struct const_equiv_data const_equiv[1];
  struct basic_block_def *bb[1];
  struct elt_list *te[1];
} varray_data;


typedef struct varray_head_tag {
  size_t num_elements;
  size_t elements_used;

  size_t element_size;
  const char *name;
  varray_data data;
} *varray_type;



extern varray_type varray_init (size_t, size_t, const char *);

#define VARRAY_CHAR_INIT(va,num,name) va = varray_init (num, sizeof (char), name)


#define VARRAY_UCHAR_INIT(va,num,name) va = varray_init (num, sizeof (unsigned char), name)


#define VARRAY_SHORT_INIT(va,num,name) va = varray_init (num, sizeof (short), name)


#define VARRAY_USHORT_INIT(va,num,name) va = varray_init (num, sizeof (unsigned short), name)


#define VARRAY_INT_INIT(va,num,name) va = varray_init (num, sizeof (int), name)


#define VARRAY_UINT_INIT(va,num,name) va = varray_init (num, sizeof (unsigned int), name)


#define VARRAY_LONG_INIT(va,num,name) va = varray_init (num, sizeof (long), name)


#define VARRAY_ULONG_INIT(va,num,name) va = varray_init (num, sizeof (unsigned long), name)


#define VARRAY_WIDE_INT_INIT(va,num,name) va = varray_init (num, sizeof (HOST_WIDE_INT), name)


#define VARRAY_UWIDE_INT_INIT(va,num,name) va = varray_init (num, sizeof (unsigned HOST_WIDE_INT), name)


#define VARRAY_GENERIC_PTR_INIT(va,num,name) va = varray_init (num, sizeof (PTR), name)


#define VARRAY_CHAR_PTR_INIT(va,num,name) va = varray_init (num, sizeof (char *), name)


#define VARRAY_RTX_INIT(va,num,name) va = varray_init (num, sizeof (struct rtx_def *), name)


#define VARRAY_RTVEC_INIT(va,num,name) va = varray_init (num, sizeof (struct rtvec_def), name)


#define VARRAY_TREE_INIT(va,num,name) va = varray_init (num, sizeof (union tree_node *), name)


#define VARRAY_BITMAP_INIT(va,num,name) va = varray_init (num, sizeof (struct bitmap_head_def *), name)


#define VARRAY_SCHED_INIT(va,num,name) va = varray_init (num, sizeof (struct sched_info_tag *), name)


#define VARRAY_REG_INIT(va,num,name) va = varray_init (num, sizeof (struct reg_info_def *), name)


#define VARRAY_CONST_EQUIV_INIT(va,num,name) va = varray_init (num, sizeof (struct const_equiv_data), name)


#define VARRAY_BB_INIT(va,num,name) va = varray_init (num, sizeof (struct basic_block_def *), name)


#define VARRAY_ELT_LIST_INIT(va,num,name) va = varray_init (num, sizeof (struct elt_list *), name)




#define VARRAY_FREE(vp) do { if (vp) { free (vp); vp = (varray_type) 0; } } while (0)



extern varray_type varray_grow (varray_type, size_t);

#define VARRAY_GROW(VA,N) ((VA) = varray_grow (VA, N))

#define VARRAY_SIZE(VA) ((VA)->num_elements)

#define VARRAY_ACTIVE_SIZE(VA) ((VA)->elements_used)
#define VARRAY_POP_ALL(VA) ((VA)->elements_used = 0)
# 186 "varray.h"
#define VARRAY_CHECK(VA,N,T) ((VA)->data.T[N])




#define VARRAY_PUSH(VA,T,X) do { if ((VA)->elements_used >= (VA)->num_elements) VARRAY_GROW ((VA), 2 * (VA)->num_elements); (VA)->data.T[(VA)->elements_used++] = (X); } while (0)
# 201 "varray.h"
#define VARRAY_POP(VA) ((VA)->elements_used--)



#define VARRAY_TOP(VA,T) ((VA)->data.T[(VA)->elements_used - 1])


#define VARRAY_CHAR(VA,N) VARRAY_CHECK (VA, N, c)
#define VARRAY_UCHAR(VA,N) VARRAY_CHECK (VA, N, uc)
#define VARRAY_SHORT(VA,N) VARRAY_CHECK (VA, N, s)
#define VARRAY_USHORT(VA,N) VARRAY_CHECK (VA, N, us)
#define VARRAY_INT(VA,N) VARRAY_CHECK (VA, N, i)
#define VARRAY_UINT(VA,N) VARRAY_CHECK (VA, N, u)
#define VARRAY_LONG(VA,N) VARRAY_CHECK (VA, N, l)
#define VARRAY_ULONG(VA,N) VARRAY_CHECK (VA, N, ul)
#define VARRAY_WIDE_INT(VA,N) VARRAY_CHECK (VA, N, hint)
#define VARRAY_UWIDE_INT(VA,N) VARRAY_CHECK (VA, N, uhint)
#define VARRAY_GENERIC_PTR(VA,N) VARRAY_CHECK (VA, N, generic)
#define VARRAY_CHAR_PTR(VA,N) VARRAY_CHECK (VA, N, cptr)
#define VARRAY_RTX(VA,N) VARRAY_CHECK (VA, N, rtx)
#define VARRAY_RTVEC(VA,N) VARRAY_CHECK (VA, N, rtvec)
#define VARRAY_TREE(VA,N) VARRAY_CHECK (VA, N, tree)
#define VARRAY_BITMAP(VA,N) VARRAY_CHECK (VA, N, bitmap)
#define VARRAY_SCHED(VA,N) VARRAY_CHECK (VA, N, sched)
#define VARRAY_REG(VA,N) VARRAY_CHECK (VA, N, reg)
#define VARRAY_CONST_EQUIV(VA,N) VARRAY_CHECK (VA, N, const_equiv)
#define VARRAY_BB(VA,N) VARRAY_CHECK (VA, N, bb)
#define VARRAY_ELT_LIST(VA,N) VARRAY_CHECK (VA, N, te)


#define VARRAY_PUSH_CHAR(VA,X) VARRAY_PUSH (VA, c, X)
#define VARRAY_PUSH_UCHAR(VA,X) VARRAY_PUSH (VA, uc, X)
#define VARRAY_PUSH_SHORT(VA,X) VARRAY_PUSH (VA, s, X)
#define VARRAY_PUSH_USHORT(VA,X) VARRAY_PUSH (VA, us, X)
#define VARRAY_PUSH_INT(VA,X) VARRAY_PUSH (VA, i, X)
#define VARRAY_PUSH_UINT(VA,X) VARRAY_PUSH (VA, u, X)
#define VARRAY_PUSH_LONG(VA,X) VARRAY_PUSH (VA, l, X)
#define VARRAY_PUSH_ULONG(VA,X) VARRAY_PUSH (VA, ul, X)
#define VARRAY_PUSH_WIDE_INT(VA,X) VARRAY_PUSH (VA, hint, X)
#define VARRAY_PUSH_UWIDE_INT(VA,X) VARRAY_PUSH (VA, uhint, X)
#define VARRAY_PUSH_GENERIC_PTR(VA,X) VARRAY_PUSH (VA, generic, X)
#define VARRAY_PUSH_CHAR_PTR(VA,X) VARRAY_PUSH (VA, cptr, X)
#define VARRAY_PUSH_RTX(VA,X) VARRAY_PUSH (VA, rtx, X)
#define VARRAY_PUSH_RTVEC(VA,X) VARRAY_PUSH (VA, rtvec, X)
#define VARRAY_PUSH_TREE(VA,X) VARRAY_PUSH (VA, tree, X)
#define VARRAY_PUSH_BITMAP(VA,X) VARRAY_PUSH (VA, bitmap, X)
#define VARRAY_PUSH_SCHED(VA,X) VARRAY_PUSH (VA, sched, X)
#define VARRAY_PUSH_REG(VA,X) VARRAY_PUSH (VA, reg, X)
#define VARRAY_PUSH_CONST_EQUIV(VA,X) VARRAY_PUSH (VA, const_equiv, X)
#define VARRAY_PUSH_BB(VA,X) VARRAY_PUSH (VA, bb, X)


#define VARRAY_TOP_CHAR(VA) VARRAY_TOP (VA, c)
#define VARRAY_TOP_UCHAR(VA) VARRAY_TOP (VA, uc)
#define VARRAY_TOP_SHORT(VA) VARRAY_TOP (VA, s)
#define VARRAY_TOP_USHORT(VA) VARRAY_TOP (VA, us)
#define VARRAY_TOP_INT(VA) VARRAY_TOP (VA, i)
#define VARRAY_TOP_UINT(VA) VARRAY_TOP (VA, u)
#define VARRAY_TOP_LONG(VA) VARRAY_TOP (VA, l)
#define VARRAY_TOP_ULONG(VA) VARRAY_TOP (VA, ul)
#define VARRAY_TOP_WIDE_INT(VA) VARRAY_TOP (VA, hint)
#define VARRAY_TOP_UWIDE_INT(VA) VARRAY_TOP (VA, uhint)
#define VARRAY_TOP_GENERIC_PTR(VA) VARRAY_TOP (VA, generic)
#define VARRAY_TOP_CHAR_PTR(VA) VARRAY_TOP (VA, cptr)
#define VARRAY_TOP_RTX(VA) VARRAY_TOP (VA, rtx)
#define VARRAY_TOP_RTVEC(VA) VARRAY_TOP (VA, rtvec)
#define VARRAY_TOP_TREE(VA) VARRAY_TOP (VA, tree)
#define VARRAY_TOP_BITMAP(VA) VARRAY_TOP (VA, bitmap)
#define VARRAY_TOP_SCHED(VA) VARRAY_TOP (VA, sched)
#define VARRAY_TOP_REG(VA) VARRAY_TOP (VA, reg)
#define VARRAY_TOP_CONST_EQUIV(VA) VARRAY_TOP (VA, const_equiv)
#define VARRAY_TOP_BB(VA) VARRAY_TOP (VA, bb)
# 24 "regs.h" 2

#define REG_BYTES(R) mode_size[(int) GET_MODE (R)]







#define REGMODE_NATURAL_SIZE(MODE) UNITS_PER_WORD
# 42 "regs.h"
extern int max_regno;


typedef struct reg_info_def
{
  int first_uid;
  int last_uid;
  int last_note_uid;


  int sets;


  int refs;
  int freq;
  int deaths;
  int live_length;
  int calls_crossed;
  int basic_block;
  char changes_mode;

} reg_info;

extern varray_type reg_n_info;



#define REG_N_REFS(N) (VARRAY_REG (reg_n_info, N)->refs)



#define REG_FREQ(N) (VARRAY_REG (reg_n_info, N)->freq)





#define REG_FREQ_MAX 1000





#define REG_FREQ_FROM_BB(bb) (optimize_size || (flag_branch_probabilities && !ENTRY_BLOCK_PTR->count) ? REG_FREQ_MAX : ((bb)->frequency * REG_FREQ_MAX / BB_FREQ_MAX) ? ((bb)->frequency * REG_FREQ_MAX / BB_FREQ_MAX) : 1)
# 97 "regs.h"
#define REG_N_SETS(N) (VARRAY_REG (reg_n_info, N)->sets)







#define REG_N_DEATHS(N) (VARRAY_REG (reg_n_info, N)->deaths)






#define REG_CHANGES_MODE(N) (VARRAY_REG (reg_n_info, N)->changes_mode)



#define PSEUDO_REGNO_SIZE(N) ((GET_MODE_SIZE (PSEUDO_REGNO_MODE (N)) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)





#define PSEUDO_REGNO_BYTES(N) GET_MODE_SIZE (PSEUDO_REGNO_MODE (N))




#define PSEUDO_REGNO_MODE(N) GET_MODE (regno_reg_rtx[N])



#define REG_N_CALLS_CROSSED(N) (VARRAY_REG (reg_n_info, N)->calls_crossed)
# 148 "regs.h"
#define REG_LIVE_LENGTH(N) (VARRAY_REG (reg_n_info, N)->live_length)
# 157 "regs.h"
extern short *reg_renumber;




extern char regs_ever_live[53];



extern const char * reg_names[53];






extern enum machine_mode reg_raw_mode[53];






#define REGNO_FIRST_UID(N) (VARRAY_REG (reg_n_info, N)->first_uid)







#define REGNO_LAST_UID(N) (VARRAY_REG (reg_n_info, N)->last_uid)



#define REGNO_LAST_NOTE_UID(N) (VARRAY_REG (reg_n_info, N)->last_note_uid)



extern rtx regs_may_share;




extern int caller_save_needed;






#define CALLER_SAVE_PROFITABLE(REFS,CALLS) (4 * (CALLS) < (REFS))
# 226 "regs.h"
#define HARD_REGNO_CALL_PART_CLOBBERED(REGNO,MODE) 0



extern void allocate_reg_info (size_t, int, int);
# 29 "regrename.c" 2
# 1 "hard-reg-set.h" 1
# 22 "hard-reg-set.h"
#define GCC_HARD_REG_SET_H 
# 41 "hard-reg-set.h"
typedef unsigned long HARD_REG_ELT_TYPE;



#define HARD_REG_SET HARD_REG_ELT_TYPE
# 59 "hard-reg-set.h"
#define HARD_CONST(X) ((HARD_REG_ELT_TYPE) (X))
# 90 "hard-reg-set.h"
#define SET_HARD_REG_BIT(SET,BIT) ((SET) |= HARD_CONST (1) << (BIT))

#define CLEAR_HARD_REG_BIT(SET,BIT) ((SET) &= ~(HARD_CONST (1) << (BIT)))

#define TEST_HARD_REG_BIT(SET,BIT) ((SET) & (HARD_CONST (1) << (BIT)))


#define CLEAR_HARD_REG_SET(TO) ((TO) = HARD_CONST (0))
#define SET_HARD_REG_SET(TO) ((TO) = ~ HARD_CONST (0))

#define COPY_HARD_REG_SET(TO,FROM) ((TO) = (FROM))
#define COMPL_HARD_REG_SET(TO,FROM) ((TO) = ~(FROM))

#define IOR_HARD_REG_SET(TO,FROM) ((TO) |= (FROM))
#define IOR_COMPL_HARD_REG_SET(TO,FROM) ((TO) |= ~ (FROM))
#define AND_HARD_REG_SET(TO,FROM) ((TO) &= (FROM))
#define AND_COMPL_HARD_REG_SET(TO,FROM) ((TO) &= ~ (FROM))

#define GO_IF_HARD_REG_SUBSET(X,Y,TO) if (HARD_CONST (0) == ((X) & ~(Y))) goto TO

#define GO_IF_HARD_REG_EQUAL(X,Y,TO) if ((X) == (Y)) goto TO
# 395 "hard-reg-set.h"
extern char fixed_regs[53];



extern HARD_REG_ELT_TYPE fixed_reg_set;






extern char call_used_regs[53];



extern HARD_REG_ELT_TYPE call_used_reg_set;


extern HARD_REG_ELT_TYPE losing_caller_save_reg_set;







extern char call_fixed_regs[53];



extern HARD_REG_ELT_TYPE call_fixed_reg_set;






extern char global_regs[53];
# 441 "hard-reg-set.h"
extern HARD_REG_ELT_TYPE regs_invalidated_by_call;




extern int reg_alloc_order[53];



extern int inv_reg_alloc_order[53];




extern HARD_REG_ELT_TYPE reg_class_contents[((int) LIM_REG_CLASSES)];



extern unsigned int reg_class_size[((int) LIM_REG_CLASSES)];



extern enum reg_class reg_class_superclasses[((int) LIM_REG_CLASSES)][((int) LIM_REG_CLASSES)];



extern enum reg_class reg_class_subclasses[((int) LIM_REG_CLASSES)][((int) LIM_REG_CLASSES)];




extern enum reg_class reg_class_subunion[((int) LIM_REG_CLASSES)][((int) LIM_REG_CLASSES)];




extern enum reg_class reg_class_superunion[((int) LIM_REG_CLASSES)][((int) LIM_REG_CLASSES)];



extern int n_non_fixed_regs;



extern const char * reg_names[53];
# 30 "regrename.c" 2
# 1 "basic-block.h" 1
# 23 "basic-block.h"
#define GCC_BASIC_BLOCK_H 

# 1 "bitmap.h" 1
# 23 "bitmap.h"
#define GCC_BITMAP_H 




#define BITMAP_ELEMENT_WORDS 2






#define BITMAP_ELEMENT_ALL_BITS ((unsigned) (BITMAP_ELEMENT_WORDS * HOST_BITS_PER_WIDE_INT))







typedef struct bitmap_element_def
{
  struct bitmap_element_def *next;
  struct bitmap_element_def *prev;
  unsigned int indx;
  unsigned long bits[2];
} bitmap_element;


typedef struct bitmap_head_def {
  bitmap_element *first;
  bitmap_element *current;
  unsigned int indx;

} bitmap_head, *bitmap;


enum bitmap_bits {
  BITMAP_AND,
  BITMAP_AND_COMPL,
  BITMAP_IOR,
  BITMAP_XOR,
  BITMAP_IOR_COMPL
};


extern bitmap_element bitmap_zero_bits;


extern void bitmap_clear (bitmap);


extern void bitmap_copy (bitmap, bitmap);


extern int bitmap_equal_p (bitmap, bitmap);


extern int bitmap_operation (bitmap, bitmap, bitmap, enum bitmap_bits);



extern void bitmap_ior_and_compl (bitmap, bitmap, bitmap);


extern void bitmap_clear_bit (bitmap, int);


extern void bitmap_set_bit (bitmap, int);


extern int bitmap_bit_p (bitmap, int);


extern void debug_bitmap (bitmap);
extern void debug_bitmap_file (FILE *, bitmap);


extern void bitmap_print (FILE *, bitmap, const char *, const char *);


extern bitmap bitmap_initialize (bitmap);


extern void bitmap_release_memory (void);


#define dump_bitmap(file,bitmap) bitmap_print (file, bitmap, "", "\n")
#define bitmap_zero(a) bitmap_clear (a)
#define bitmap_a_or_b(a,b,c) bitmap_operation (a, b, c, BITMAP_IOR)
#define bitmap_a_and_b(a,b,c) bitmap_operation (a, b, c, BITMAP_AND)
extern int bitmap_union_of_diff (bitmap, bitmap, bitmap, bitmap);
extern int bitmap_first_set_bit (bitmap);
extern int bitmap_last_set_bit (bitmap);


#define BITMAP_OBSTACK_ALLOC(OBSTACK) bitmap_initialize ((bitmap) obstack_alloc (OBSTACK, sizeof (bitmap_head)))







#define BITMAP_ALLOCA(PTR) do { bitmap temp_bitmap_ = (bitmap) alloca (sizeof (bitmap_head)); (PTR) = bitmap_initialize (temp_bitmap_); } while (0)






#define BITMAP_XMALLOC() bitmap_initialize ((bitmap) xmalloc (sizeof (bitmap_head)))



#define BITMAP_FREE(BITMAP) do { if (BITMAP) { bitmap_clear (BITMAP); (BITMAP) = 0; } } while (0)
# 148 "bitmap.h"
#define BITMAP_XFREE(BITMAP) do { if (BITMAP) { bitmap_clear (BITMAP); free (BITMAP); (BITMAP) = 0; } } while (0)
# 159 "bitmap.h"
#define BITMAP_INIT_ONCE() 




#define EXECUTE_IF_SET_IN_BITMAP(BITMAP,MIN,BITNUM,CODE) do { bitmap_element *ptr_ = (BITMAP)->first; unsigned int indx_ = (MIN) / BITMAP_ELEMENT_ALL_BITS; unsigned bit_num_ = (MIN) % ((unsigned) HOST_BITS_PER_WIDE_INT); unsigned word_num_ = (((MIN) / ((unsigned) HOST_BITS_PER_WIDE_INT)) % BITMAP_ELEMENT_WORDS); while (ptr_ != 0 && ptr_->indx < indx_) ptr_ = ptr_->next; if (ptr_ != 0 && ptr_->indx != indx_) { bit_num_ = 0; word_num_ = 0; } for (; ptr_ != 0; ptr_ = ptr_->next) { for (; word_num_ < BITMAP_ELEMENT_WORDS; word_num_++) { unsigned HOST_WIDE_INT word_ = ptr_->bits[word_num_]; if (word_ != 0) { for (; bit_num_ < HOST_BITS_PER_WIDE_INT; bit_num_++) { unsigned HOST_WIDE_INT mask_ = ((unsigned HOST_WIDE_INT) 1) << bit_num_; if ((word_ & mask_) != 0) { word_ &= ~ mask_; (BITNUM) = (ptr_->indx * BITMAP_ELEMENT_ALL_BITS + word_num_ * HOST_BITS_PER_WIDE_INT + bit_num_); CODE; if (word_ == 0) break; } } } bit_num_ = 0; } word_num_ = 0; } } while (0)
# 221 "bitmap.h"
#define EXECUTE_IF_AND_COMPL_IN_BITMAP(BITMAP1,BITMAP2,MIN,BITNUM,CODE) do { bitmap_element *ptr1_ = (BITMAP1)->first; bitmap_element *ptr2_ = (BITMAP2)->first; unsigned int indx_ = (MIN) / BITMAP_ELEMENT_ALL_BITS; unsigned bit_num_ = (MIN) % ((unsigned) HOST_BITS_PER_WIDE_INT); unsigned word_num_ = (((MIN) / ((unsigned) HOST_BITS_PER_WIDE_INT)) % BITMAP_ELEMENT_WORDS); while (ptr1_ != 0 && ptr1_->indx < indx_) ptr1_ = ptr1_->next; if (ptr1_ != 0 && ptr1_->indx != indx_) { bit_num_ = 0; word_num_ = 0; } for (; ptr1_ != 0 ; ptr1_ = ptr1_->next) { bitmap_element *tmp2_; while (ptr2_ != 0 && ptr2_->indx < ptr1_->indx) ptr2_ = ptr2_->next; tmp2_ = ((ptr2_ != 0 && ptr2_->indx == ptr1_->indx) ? ptr2_ : &bitmap_zero_bits); for (; word_num_ < BITMAP_ELEMENT_WORDS; word_num_++) { unsigned HOST_WIDE_INT word_ = (ptr1_->bits[word_num_] & ~ tmp2_->bits[word_num_]); if (word_ != 0) { for (; bit_num_ < HOST_BITS_PER_WIDE_INT; bit_num_++) { unsigned HOST_WIDE_INT mask_ = ((unsigned HOST_WIDE_INT)1) << bit_num_; if ((word_ & mask_) != 0) { word_ &= ~ mask_; (BITNUM) = (ptr1_->indx * BITMAP_ELEMENT_ALL_BITS + word_num_ * HOST_BITS_PER_WIDE_INT + bit_num_); CODE; if (word_ == 0) break; } } } bit_num_ = 0; } word_num_ = 0; } } while (0)
# 288 "bitmap.h"
#define EXECUTE_IF_AND_IN_BITMAP(BITMAP1,BITMAP2,MIN,BITNUM,CODE) do { bitmap_element *ptr1_ = (BITMAP1)->first; bitmap_element *ptr2_ = (BITMAP2)->first; unsigned int indx_ = (MIN) / BITMAP_ELEMENT_ALL_BITS; unsigned bit_num_ = (MIN) % ((unsigned) HOST_BITS_PER_WIDE_INT); unsigned word_num_ = (((MIN) / ((unsigned) HOST_BITS_PER_WIDE_INT)) % BITMAP_ELEMENT_WORDS); while (ptr1_ != 0 && ptr1_->indx < indx_) ptr1_ = ptr1_->next; if (ptr1_ != 0 && ptr1_->indx != indx_) { bit_num_ = 0; word_num_ = 0; } for (; ptr1_ != 0 ; ptr1_ = ptr1_->next) { while (ptr2_ != 0 && ptr2_->indx < ptr1_->indx) ptr2_ = ptr2_->next; if (ptr2_ == 0) { ptr1_ = (bitmap_element *)0; break; } else if (ptr2_->indx > ptr1_->indx) { bit_num_ = word_num_ = 0; continue; } for (; word_num_ < BITMAP_ELEMENT_WORDS; word_num_++) { unsigned HOST_WIDE_INT word_ = (ptr1_->bits[word_num_] & ptr2_->bits[word_num_]); if (word_ != 0) { for (; bit_num_ < HOST_BITS_PER_WIDE_INT; bit_num_++) { unsigned HOST_WIDE_INT mask_ = ((unsigned HOST_WIDE_INT)1) << bit_num_; if ((word_ & mask_) != 0) { word_ &= ~ mask_; (BITNUM) = (ptr1_->indx * BITMAP_ELEMENT_ALL_BITS + word_num_ * HOST_BITS_PER_WIDE_INT + bit_num_); CODE; if (word_ == 0) break; } } } bit_num_ = 0; } word_num_ = 0; } } while (0)
# 26 "basic-block.h" 2
# 1 "sbitmap.h" 1
# 22 "sbitmap.h"
#define GCC_SBITMAP_H 





#define SBITMAP_ELT_BITS ((unsigned) HOST_BITS_PER_WIDE_INT)
#define SBITMAP_ELT_TYPE unsigned HOST_WIDE_INT

typedef struct simple_bitmap_def
{
  unsigned int n_bits;
  unsigned int size;
  unsigned int bytes;
  unsigned long elms[1];
} *sbitmap;

typedef unsigned long *sbitmap_ptr;


#define SBITMAP_SET_SIZE(N) (((N) + SBITMAP_ELT_BITS - 1) / SBITMAP_ELT_BITS)


#define SET_BIT(BITMAP,BITNO) ((BITMAP)->elms [(BITNO) / SBITMAP_ELT_BITS] |= (SBITMAP_ELT_TYPE) 1 << (BITNO) % SBITMAP_ELT_BITS)




#define TEST_BIT(BITMAP,BITNO) ((BITMAP)->elms [(BITNO) / SBITMAP_ELT_BITS] >> (BITNO) % SBITMAP_ELT_BITS & 1)



#define RESET_BIT(BITMAP,BITNO) ((BITMAP)->elms [(BITNO) / SBITMAP_ELT_BITS] &= ~((SBITMAP_ELT_TYPE) 1 << (BITNO) % SBITMAP_ELT_BITS))




#define EXECUTE_IF_SET_IN_SBITMAP(SBITMAP,MIN,N,CODE) do { unsigned int word_num_; unsigned int bit_num_ = (MIN) % (unsigned int) SBITMAP_ELT_BITS; unsigned int size_ = (SBITMAP)->size; SBITMAP_ELT_TYPE *ptr_ = (SBITMAP)->elms; for (word_num_ = (MIN) / (unsigned int) SBITMAP_ELT_BITS; word_num_ < size_; word_num_++, bit_num_ = 0) { SBITMAP_ELT_TYPE word_ = ptr_[word_num_]; if (word_ != 0) for (; bit_num_ < SBITMAP_ELT_BITS; bit_num_++) { SBITMAP_ELT_TYPE _mask = (SBITMAP_ELT_TYPE) 1 << bit_num_; if ((word_ & _mask) != 0) { word_ &= ~ _mask; (N) = word_num_ * SBITMAP_ELT_BITS + bit_num_; CODE; if (word_ == 0) break; } } } } while (0)
# 88 "sbitmap.h"
#define sbitmap_free(MAP) free(MAP)
#define sbitmap_vector_free(VEC) free(VEC)

struct int_list;

extern void dump_sbitmap (FILE *, sbitmap);
extern void dump_sbitmap_vector (FILE *, const char *, const char *, sbitmap *, int)

            ;
extern sbitmap sbitmap_alloc (unsigned int);
extern sbitmap *sbitmap_vector_alloc (unsigned int, unsigned int);
extern void sbitmap_copy (sbitmap, sbitmap);
extern int sbitmap_equal (sbitmap, sbitmap);
extern void sbitmap_zero (sbitmap);
extern void sbitmap_ones (sbitmap);
extern void sbitmap_vector_zero (sbitmap *, unsigned int);
extern void sbitmap_vector_ones (sbitmap *, unsigned int);

extern int sbitmap_union_of_diff (sbitmap, sbitmap, sbitmap, sbitmap)
                ;
extern void sbitmap_difference (sbitmap, sbitmap, sbitmap);
extern void sbitmap_not (sbitmap, sbitmap);
extern int sbitmap_a_or_b_and_c (sbitmap, sbitmap, sbitmap, sbitmap)
                ;
extern int sbitmap_a_and_b_or_c (sbitmap, sbitmap, sbitmap, sbitmap)
                ;
extern int sbitmap_a_and_b (sbitmap, sbitmap, sbitmap);
extern int sbitmap_a_or_b (sbitmap, sbitmap, sbitmap);
extern int sbitmap_a_xor_b (sbitmap, sbitmap, sbitmap);
extern int sbitmap_a_subset_b_p (sbitmap, sbitmap);

extern int sbitmap_first_set_bit (sbitmap);
extern int sbitmap_last_set_bit (sbitmap);

extern void sbitmap_intersect_of_predsucc (sbitmap, sbitmap *, int, struct int_list **)
                                 ;
#define sbitmap_intersect_of_predecessors sbitmap_intersect_of_predsucc
#define sbitmap_intersect_of_successors sbitmap_intersect_of_predsucc

extern void sbitmap_union_of_predsucc (sbitmap, sbitmap *, int, struct int_list **)
                           ;
#define sbitmap_union_of_predecessors sbitmap_union_of_predsucc
#define sbitmap_union_of_successors sbitmap_union_of_predsucc




extern void sbitmap_intersection_of_succs (sbitmap, sbitmap *, int);
extern void sbitmap_intersection_of_preds (sbitmap, sbitmap *, int);
extern void sbitmap_union_of_succs (sbitmap, sbitmap *, int);
extern void sbitmap_union_of_preds (sbitmap, sbitmap *, int);

extern void debug_sbitmap (sbitmap);
# 27 "basic-block.h" 2

# 1 "partition.h" 1
# 37 "partition.h"
#define _PARTITION_H 





# 1 "./ansidecl.h" 1
# 44 "partition.h" 2


struct partition_elem
{


  int class_element;


  struct partition_elem* next;


  unsigned class_count;
};

typedef struct partition_def
{

  int num_elements;

  struct partition_elem elements[1];
} *partition;

extern partition partition_new (int);
extern void partition_delete (partition);
extern int partition_union (partition, int, int)

           ;
extern void partition_print (partition, FILE*)
             ;




#define partition_find(partition__,element__) ((partition__)->elements[(element__)].class_element)
# 29 "basic-block.h" 2


typedef bitmap_head regset_head;

typedef bitmap regset;


#define INIT_REG_SET(HEAD) bitmap_initialize (HEAD)


#define CLEAR_REG_SET(HEAD) bitmap_clear (HEAD)


#define COPY_REG_SET(TO,FROM) bitmap_copy (TO, FROM)


#define REG_SET_EQUAL_P(A,B) bitmap_equal_p (A, B)


#define AND_REG_SET(TO,FROM) bitmap_operation (TO, TO, FROM, BITMAP_AND)


#define AND_COMPL_REG_SET(TO,FROM) bitmap_operation (TO, TO, FROM, BITMAP_AND_COMPL)



#define IOR_REG_SET(TO,FROM) bitmap_operation (TO, TO, FROM, BITMAP_IOR)


#define XOR_REG_SET(TO,FROM) bitmap_operation (TO, TO, FROM, BITMAP_XOR)


#define IOR_AND_COMPL_REG_SET(TO,FROM1,FROM2) bitmap_ior_and_compl (TO, FROM1, FROM2)



#define CLEAR_REGNO_REG_SET(HEAD,REG) bitmap_clear_bit (HEAD, REG)


#define SET_REGNO_REG_SET(HEAD,REG) bitmap_set_bit (HEAD, REG)


#define REGNO_REG_SET_P(TO,REG) bitmap_bit_p (TO, REG)


extern void reg_set_to_hard_reg_set (HARD_REG_ELT_TYPE *, bitmap);
#define REG_SET_TO_HARD_REG_SET(TO,FROM) do { CLEAR_HARD_REG_SET (TO); reg_set_to_hard_reg_set (&TO, FROM); } while (0)







#define EXECUTE_IF_SET_IN_REG_SET(REGSET,MIN,REGNUM,CODE) EXECUTE_IF_SET_IN_BITMAP (REGSET, MIN, REGNUM, CODE)





#define EXECUTE_IF_AND_COMPL_IN_REG_SET(REGSET1,REGSET2,MIN,REGNUM,CODE) EXECUTE_IF_AND_COMPL_IN_BITMAP (REGSET1, REGSET2, MIN, REGNUM, CODE)





#define EXECUTE_IF_AND_IN_REG_SET(REGSET1,REGSET2,MIN,REGNUM,CODE) EXECUTE_IF_AND_IN_BITMAP (REGSET1, REGSET2, MIN, REGNUM, CODE)



#define OBSTACK_ALLOC_REG_SET(OBSTACK) BITMAP_OBSTACK_ALLOC (OBSTACK)


#define INITIALIZE_REG_SET(HEAD) bitmap_initialize (&HEAD)


#define FREE_REG_SET(REGSET) BITMAP_FREE(REGSET)


#define INIT_ONCE_REG_SET() BITMAP_INIT_ONCE ()




#define MAX_REGNO_REG_SET(NUM_REGS,NEW_P,RENUMBER_P) 


typedef long gcov_type;


typedef struct edge_def {

  struct edge_def *pred_next, *succ_next;


  struct basic_block_def *src, *dest;


  rtx insns;


  void *aux;

  int flags;
  int probability;
  gcov_type count;

} *edge;

#define EDGE_FALLTHRU 1
#define EDGE_ABNORMAL 2
#define EDGE_ABNORMAL_CALL 4
#define EDGE_EH 8
#define EDGE_FAKE 16
#define EDGE_DFS_BACK 32

#define EDGE_COMPLEX (EDGE_ABNORMAL | EDGE_ABNORMAL_CALL | EDGE_EH)
# 174 "basic-block.h"
typedef struct basic_block_def {

  rtx head, end;


  tree head_tree;
  tree end_tree;


  edge pred, succ;




  regset local_set;



  regset cond_local_set;





  regset global_live_at_start;

  regset global_live_at_end;


  void *aux;


  int index;


  int loop_depth;


  gcov_type count;


  int frequency;


  int flags;
} *basic_block;

#define BB_FREQ_MAX 10000


#define BB_REACHABLE 1



extern int n_basic_blocks;



extern int n_edges;



extern varray_type basic_block_info;

#define BASIC_BLOCK(N) (VARRAY_BB (basic_block_info, (N)))



extern regset regs_live_at_setjmp;



extern rtx label_value_list, tail_recursion_label_list;

extern struct obstack flow_obstack;
# 257 "basic-block.h"
#define REG_BLOCK_UNKNOWN -1
#define REG_BLOCK_GLOBAL -2

#define REG_BASIC_BLOCK(N) (VARRAY_REG (reg_n_info, N)->basic_block)



#define BLOCK_HEAD(B) (BASIC_BLOCK (B)->head)
#define BLOCK_END(B) (BASIC_BLOCK (B)->end)

#define BLOCK_HEAD_TREE(B) (BASIC_BLOCK (B)->head_tree)
#define BLOCK_END_TREE(B) (BASIC_BLOCK (B)->end_tree)


#define ENTRY_BLOCK (-1)
#define EXIT_BLOCK (-2)


#define INVALID_BLOCK (-3)


extern struct basic_block_def entry_exit_blocks[2];
#define ENTRY_BLOCK_PTR (&entry_exit_blocks[0])
#define EXIT_BLOCK_PTR (&entry_exit_blocks[1])

extern varray_type basic_block_for_insn;
#define BLOCK_FOR_INSN(INSN) VARRAY_BB (basic_block_for_insn, INSN_UID (INSN))
#define BLOCK_NUM(INSN) (BLOCK_FOR_INSN (INSN)->index + 0)

extern void compute_bb_for_insn (int);
extern void free_bb_for_insn (void);
extern void update_bb_for_insn (basic_block);
extern void set_block_for_insn (rtx, basic_block);

extern void free_basic_block_vars (int);

extern edge split_block (basic_block, rtx);
extern basic_block split_edge (edge);
extern void insert_insn_on_edge (rtx, edge);
extern void commit_edge_insertions (void);
extern void remove_fake_edges (void);
extern void add_noreturn_fake_exit_edges (void);
extern void connect_infinite_loops_to_exit (void);
extern int flow_call_edges_add (sbitmap);
extern edge cached_make_edge (sbitmap *, basic_block, basic_block, int)
                         ;
extern edge make_edge (basic_block, basic_block, int)
                         ;
extern edge make_single_succ_edge (basic_block, basic_block, int)
                         ;
extern void remove_edge (edge);
extern void redirect_edge_succ (edge, basic_block);
extern edge redirect_edge_succ_nodup (edge, basic_block);
extern void redirect_edge_pred (edge, basic_block);
extern basic_block create_basic_block_structure (int, rtx, rtx, rtx);
extern basic_block create_basic_block (int, rtx, rtx);
extern int flow_delete_block (basic_block);
extern int flow_delete_block_noexpunge (basic_block);
extern void merge_blocks_nomove (basic_block, basic_block);
extern void tidy_fallthru_edge (edge, basic_block, basic_block)
                    ;
extern void tidy_fallthru_edges (void);
extern void flow_reverse_top_sort_order_compute (int *);
extern int flow_depth_first_order_compute (int *, int *);
extern void flow_preorder_transversal_compute (int *);
extern void dump_edge_info (FILE *, edge, int);
extern void clear_edges (void);
extern void mark_critical_edges (void);
extern rtx first_insn_after_basic_block_note (basic_block);


struct loop
{

  int num;


  basic_block header;


  basic_block latch;


  basic_block pre_header;




  edge *pre_header_edges;


  int num_pre_header_edges;



  basic_block first;



  basic_block last;


  sbitmap nodes;


  int num_nodes;


  edge *entry_edges;


  int num_entries;


  edge *exit_edges;


  int num_exits;


  sbitmap exits_doms;


  int depth;



  int level;


  struct loop *outer;


  struct loop *inner;


  struct loop *next;


  int shared;


  int invalid;


  void *aux;





  rtx vtop;



  rtx cont;


  rtx cont_dominator;


  rtx start;


  rtx end;



  rtx top;


  rtx scan_start;


  rtx sink;
# 442 "basic-block.h"
  rtx exit_labels;



  int exit_count;
};



struct loops
{

  int num;


  int levels;



  struct loop *array;


  struct loop *tree_root;


  struct cfg
  {

    sbitmap *dom;


    int *dfs_order;



    int *rc_order;
  } cfg;


  sbitmap shared_headers;
};

extern int flow_loops_find (struct loops *, int flags);
extern int flow_loops_update (struct loops *, int flags);
extern void flow_loops_free (struct loops *);
extern void flow_loops_dump (const struct loops *, FILE *, void (*)(const struct loop *, FILE *, int), int)

                              ;
extern void flow_loop_dump (const struct loop *, FILE *, void (*)(const struct loop *, FILE *, int), int)

                             ;
extern int flow_loop_scan (struct loops *, struct loop *, int);


struct edge_list
{
  int num_blocks;
  int num_edges;
  edge *index_to_edge;
};


#define EDGE_INDEX_NO_EDGE -1



#define EDGE_INDEX(el,pred,succ) (find_edge_index ((el), (pred), (succ)))



#define INDEX_EDGE_PRED_BB(el,index) ((el)->index_to_edge[(index)]->src)
#define INDEX_EDGE_SUCC_BB(el,index) ((el)->index_to_edge[(index)]->dest)


#define INDEX_EDGE(el,index) ((el)->index_to_edge[(index)])


#define NUM_EDGES(el) ((el)->num_edges)


#define FALLTHRU_EDGE(bb) ((bb)->succ->flags & EDGE_FALLTHRU ? (bb)->succ : (bb)->succ->succ_next)



#define BRANCH_EDGE(bb) ((bb)->succ->flags & EDGE_FALLTHRU ? (bb)->succ->succ_next : (bb)->succ)



#define EDGE_FREQUENCY(e) (((e)->src->frequency * (e)->probability + REG_BR_PROB_BASE / 2) / REG_BR_PROB_BASE)





#define EDGE_CRITICAL_P(e) ((e)->src->succ->succ_next && (e)->dest->pred->pred_next)


struct edge_list * create_edge_list (void);
void free_edge_list (struct edge_list *);
void print_edge_list (FILE *, struct edge_list *);
void verify_edge_list (FILE *, struct edge_list *);
int find_edge_index (struct edge_list *, basic_block, basic_block)
                                 ;


enum update_life_extent
{
  UPDATE_LIFE_LOCAL = 0,
  UPDATE_LIFE_GLOBAL = 1,
  UPDATE_LIFE_GLOBAL_RM_NOTES = 2
};



#define PROP_DEATH_NOTES 1
#define PROP_LOG_LINKS 2
#define PROP_REG_INFO 4
#define PROP_KILL_DEAD_CODE 8
#define PROP_SCAN_DEAD_CODE 16
#define PROP_ALLOW_CFG_CHANGES 32

#define PROP_AUTOINC 64
#define PROP_EQUAL_NOTES 128
#define PROP_FINAL 127

#define CLEANUP_EXPENSIVE 1

#define CLEANUP_CROSSJUMP 2
#define CLEANUP_POST_REGSTACK 4

#define CLEANUP_PRE_SIBCALL 8

#define CLEANUP_PRE_LOOP 16

#define CLEANUP_UPDATE_LIFE 32
#define CLEANUP_THREADING 64


#define LOOP_TREE 1
#define LOOP_PRE_HEADER 2
#define LOOP_ENTRY_EDGES 4
#define LOOP_EXIT_EDGES 8
#define LOOP_EDGES (LOOP_ENTRY_EDGES | LOOP_EXIT_EDGES)
#define LOOP_EXITS_DOMS 16
#define LOOP_ALL 31

extern void life_analysis (rtx, FILE *, int);
extern void update_life_info (sbitmap, enum update_life_extent, int)
           ;
extern int count_or_remove_death_notes (sbitmap, int);
extern int propagate_block (basic_block, regset, regset, regset, int)
           ;

struct propagate_block_info;
extern rtx propagate_one_insn (struct propagate_block_info *, rtx);
extern struct propagate_block_info *init_propagate_block_info
  (basic_block, regset, regset, regset, int);
extern void free_propagate_block_info (struct propagate_block_info *);


extern struct edge_list *pre_edge_lcm (FILE *, int, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap **, sbitmap **)


                   ;
extern struct edge_list *pre_edge_rev_lcm (FILE *, int, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap **, sbitmap **)


                     ;
extern void compute_available (sbitmap *, sbitmap *, sbitmap *, sbitmap *)
                             ;
extern int optimize_mode_switching (FILE *);


extern rtx emit_block_insn_after (rtx, rtx, basic_block);
extern rtx emit_block_insn_before (rtx, rtx, basic_block);


extern void estimate_probability (struct loops *);
extern void expected_value_to_br_prob (void);


extern void init_flow (void);
extern void reorder_basic_blocks (void);
extern void dump_bb (basic_block, FILE *);
extern void debug_bb (basic_block);
extern void debug_bb_n (int);
extern void dump_regset (regset, FILE *);
extern void debug_regset (regset);
extern void allocate_reg_life_data (void);
extern void allocate_bb_life_data (void);
extern void expunge_block (basic_block);
extern void expunge_block_nocompact (basic_block);
extern basic_block alloc_block (void);
extern void find_unreachable_blocks (void);
extern void delete_noop_moves (rtx);
extern basic_block redirect_edge_and_branch_force (edge, basic_block);
extern basic_block force_nonfallthru (edge);
extern _Bool redirect_edge_and_branch (edge, basic_block);
extern rtx block_label (basic_block);
extern _Bool forwarder_block_p (basic_block);
extern _Bool purge_all_dead_edges (int);
extern _Bool purge_dead_edges (basic_block);
extern void find_sub_basic_blocks (basic_block);
extern void find_many_sub_basic_blocks (sbitmap);
extern _Bool can_fallthru (basic_block, basic_block);
extern void flow_nodes_print (const char *, const sbitmap, FILE *)
               ;
extern void flow_edge_list_print (const char *, const edge *, int, FILE *)
                    ;
extern void alloc_aux_for_block (basic_block, int);
extern void alloc_aux_for_blocks (int);
extern void clear_aux_for_blocks (void);
extern void free_aux_for_blocks (void);



static



       void alloc_aux_for_edge (edge, int);
extern void alloc_aux_for_edges (int);
extern void clear_aux_for_edges (void);
extern void free_aux_for_edges (void);




extern void verify_flow_info (void);
extern int flow_loop_outside_edge_p (const struct loop *, edge);

typedef struct conflict_graph_def *conflict_graph;




typedef int (*conflict_graph_enum_fn) (int, int, void *);




extern conflict_graph conflict_graph_new
                                        (int);
extern void conflict_graph_delete (conflict_graph);
extern int conflict_graph_add (conflict_graph, int, int)
                 ;
extern int conflict_graph_conflict_p (conflict_graph, int, int)
                 ;
extern void conflict_graph_enum (conflict_graph, int, conflict_graph_enum_fn, void *)

               ;
extern void conflict_graph_merge_regs (conflict_graph, int, int)
            ;
extern void conflict_graph_print (conflict_graph, FILE*);
extern conflict_graph conflict_graph_compute
                                        (regset, partition)
                  ;
extern _Bool mark_dfs_back_edges (void);
extern void update_br_prob_note (basic_block);
extern void fixup_abnormal_edges (void);



enum cdi_direction
{
  CDI_DOMINATORS,
  CDI_POST_DOMINATORS
};

extern void calculate_dominance_info (int *, sbitmap *, enum cdi_direction)
                           ;
# 31 "regrename.c" 2
# 1 "reload.h" 1
# 35 "reload.h"
#define HAVE_SECONDARY_RELOADS 
# 47 "reload.h"
extern int memory_move_secondary_cost (enum machine_mode, enum reg_class, int);


#define MAX_RELOADS (2 * MAX_RECOG_OPERANDS * (MAX_REGS_PER_ADDRESS + 1))
# 76 "reload.h"
enum reload_type
{
  RELOAD_FOR_INPUT, RELOAD_FOR_OUTPUT, RELOAD_FOR_INSN,
  RELOAD_FOR_INPUT_ADDRESS, RELOAD_FOR_INPADDR_ADDRESS,
  RELOAD_FOR_OUTPUT_ADDRESS, RELOAD_FOR_OUTADDR_ADDRESS,
  RELOAD_FOR_OPERAND_ADDRESS, RELOAD_FOR_OPADDR_ADDR,
  RELOAD_OTHER, RELOAD_FOR_OTHER_ADDRESS
};
# 167 "reload.h"
extern rtx *reg_equiv_constant;
extern rtx *reg_equiv_memory_loc;
extern rtx *reg_equiv_address;
extern rtx *reg_equiv_mem;



extern int n_earlyclobbers;
extern rtx reload_earlyclobbers[30];


extern int reload_n_operands;



extern int reload_first_uid;





extern char indirect_symref_ok;


extern char double_reg_address_ok;

extern int num_not_at_initial_offset;

struct needs
{

  short regs[2][((int) LIM_REG_CLASSES)];
  short groups[((int) LIM_REG_CLASSES)];
};





struct insn_chain
{

  struct insn_chain *next, *prev;



  struct insn_chain *next_need_reload;


  int block;

  rtx insn;


  regset_head live_throughout;
  regset_head dead_or_set;


  struct reload *rld;
  int n_reloads;


  HARD_REG_ELT_TYPE used_spill_regs;


  struct needs need;


  unsigned int need_reload:1;


  unsigned int need_operand_change:1;

  unsigned int need_elim:1;

  unsigned int is_caller_save_insn:1;
};



extern struct insn_chain *reload_insn_chain;


extern struct insn_chain *new_insn_chain (void);

extern void compute_use_by_pseudos (HARD_REG_ELT_TYPE *, regset);







extern rtx get_secondary_mem (rtx, enum machine_mode, int, enum reload_type)
                               ;


extern void clear_secondary_mem (void);



extern void transfer_replacements (int, int);





extern int remove_address_replacements (rtx in_rtx);




extern int operands_match_p (rtx, rtx);


extern int safe_from_earlyclobber (rtx, rtx);




extern int find_reloads (rtx, int, int, int, short *);





extern rtx form_sum (rtx, rtx);



extern void subst_reloads (rtx);




extern void copy_replacements (rtx, rtx);


extern void move_replacements (rtx *x, rtx *y);



extern rtx find_replacement (rtx *);




extern int refers_to_regno_for_reload_p (unsigned int, unsigned int, rtx, rtx *)
                   ;


extern int reg_overlap_mentioned_for_reload_p (rtx, rtx);



extern int refers_to_mem_for_reload_p (rtx);



extern rtx find_equiv_reg (rtx, rtx, enum reg_class, int, short *, int, enum machine_mode)
                             ;


extern int regno_clobbered_p (unsigned int, rtx, enum machine_mode, int)
               ;


extern int earlyclobber_operand_p (rtx);


extern int push_reload (rtx, rtx, rtx *, rtx *, enum reg_class, enum machine_mode, enum machine_mode, int, int, int, enum reload_type)

                                     ;



extern void reload_cse_regs (rtx);
extern int reloads_conflict (int, int);


extern void init_reload (void);


extern int reload (rtx, int);



extern void mark_home_live (int);



extern rtx eliminate_regs (rtx, enum machine_mode, rtx);




extern rtx gen_reload (rtx, rtx, int, enum reload_type);


extern void deallocate_reload_reg (int r);




extern void init_caller_save (void);


extern void init_save_areas (void);


extern void setup_save_areas (void);


extern void save_call_clobbered_regs (void);


extern void cleanup_subreg_operands (rtx);


extern void debug_reload_to_stream (FILE *);
extern void debug_reload (void);
# 32 "regrename.c" 2
# 1 "output.h" 1
# 24 "output.h"
extern void compute_alignments (void);


extern void init_final (const char *);



extern void end_final (const char *);



extern void app_enable (void);



extern void app_disable (void);




extern int dbr_sequence_length (void);


extern void init_insn_lengths (void);




extern int get_attr_length (rtx);



extern void shorten_branches (rtx);






extern void final_start_function (rtx, FILE *, int);




extern void final_end_function (void);


extern void final (rtx, FILE *, int, int);




extern rtx final_scan_insn (rtx, FILE *, int, int, int);



extern rtx alter_subreg (rtx *);



extern void output_operand_lossage (const char *, ...) __attribute__ ((__format__ (__printf__, 1, 2)));



extern void output_asm_insn (const char *, rtx *);




extern int insn_current_reference_address (rtx);



extern int label_to_alignment (rtx);


extern void output_asm_label (rtx);



extern void output_address (rtx);




extern void output_addr_const (FILE *, rtx);



extern void asm_fprintf (FILE *file, const char *p, ...);



extern void split_double (rtx, rtx *, rtx *);


extern int leaf_function_p (void);




extern int final_forward_branch_p (rtx);



extern int only_leaf_regs_used (void);



extern void leaf_renumber_regs_insn (rtx);


extern const char *get_insn_template (int, rtx);



extern int add_weak (const char *, const char *);


extern void allocate_for_life_analysis (void);
extern int regno_uninitialized (unsigned int);
extern int regno_clobbered_at_setjmp (int);
extern void find_basic_blocks (rtx, int, FILE *);
extern _Bool cleanup_cfg (int);
extern void check_function_return_warnings (void);





extern void text_section (void);


extern void data_section (void);


extern void force_data_section (void);



extern void readonly_data_section (void);


extern int in_text_section (void);
# 178 "output.h"
extern void bss_section (void);



extern void const_section (void);



extern void init_section (void);



extern void fini_section (void);
# 239 "output.h"
extern void weak_finish (void);
# 248 "output.h"
extern int decode_reg_name (const char *);
# 292 "output.h"
extern void assemble_zeros (int);


extern void assemble_align (int);
extern void assemble_eh_align (int);


extern void assemble_string (const char *, int);



extern void assemble_external_libcall (rtx);



extern void assemble_global (const char *);


extern void assemble_label (const char *);
extern void assemble_eh_label (const char *);






extern void assemble_name (FILE *, const char *);
# 327 "output.h"
extern const char *integer_asm_op (int, int);




extern void assemble_integer_with_op (const char *, rtx);


extern _Bool default_assemble_integer (rtx, unsigned int, int);





extern _Bool assemble_integer (rtx, unsigned, unsigned, int);




#define assemble_aligned_integer(SIZE,VALUE) assemble_integer (VALUE, SIZE, (SIZE) * BITS_PER_UNIT, 1)
# 360 "output.h"
extern void clear_const_double_mem (void);


extern void defer_addressed_constants (void);



extern void output_deferred_addressed_constants (void);


extern int get_pool_size (void);
# 410 "output.h"
extern rtx final_sequence;
# 423 "output.h"
extern FILE *asm_out_file;



extern const char *first_global_object_name;


extern const char *weak_global_object_name;






extern int current_function_is_leaf;




extern int current_function_nothrow;





extern int current_function_sp_is_unchanging;





extern int current_function_uses_only_leaf_regs;




extern FILE *rtl_dump_file;



extern struct rtx_def *current_insn_predicate;


extern struct rtx_def *current_output_insn;




#define DECL_READONLY_SECTION(DECL,RELOC) (TREE_READONLY (DECL) && ! TREE_THIS_VOLATILE (DECL) && DECL_INITIAL (DECL) && (DECL_INITIAL (DECL) == error_mark_node || TREE_CONSTANT (DECL_INITIAL (DECL))) && ! (RELOC && (flag_pic || DECL_ONE_ONLY (DECL))))
# 480 "output.h"
extern const char *user_label_prefix;





#define STRIP_NAME_ENCODING(VAR,SYMBOL_NAME) (VAR) = ((SYMBOL_NAME) + ((SYMBOL_NAME)[0] == '*'))




extern void default_function_pro_epilogue (FILE *, long);


extern void default_exception_section (void);


extern void default_eh_frame_section (void);


extern void no_asm_to_stream (FILE *);


#define SECTION_ENTSIZE 0x000ff
#define SECTION_CODE 0x00100
#define SECTION_WRITE 0x00200
#define SECTION_DEBUG 0x00400
#define SECTION_LINKONCE 0x00800
#define SECTION_SMALL 0x01000
#define SECTION_BSS 0x02000
#define SECTION_FORGET 0x04000
#define SECTION_MERGE 0x08000
#define SECTION_STRINGS 0x10000

#define SECTION_OVERRIDE 0x20000
#define SECTION_MACH_DEP 0x40000

extern unsigned int get_named_section_flags (const char *);
extern _Bool set_named_section_flags (const char *, unsigned int);
extern void named_section_flags (const char *, unsigned int);
extern _Bool named_section_first_declaration (const char *);

union tree_node;
extern unsigned int default_section_type_flags (union tree_node *, const char *, int)
                          ;

extern void default_no_named_section (const char *, unsigned int);
extern void default_elf_asm_named_section (const char *, unsigned int);
extern void default_coff_asm_named_section (const char *, unsigned int)
                        ;
extern void default_pe_asm_named_section (const char *, unsigned int);

extern void default_stabs_asm_out_destructor (struct rtx_def *, int);
extern void default_named_section_asm_out_destructor (struct rtx_def *, int)
                  ;
extern void default_dtor_section_asm_out_destructor (struct rtx_def *, int)
                 ;
extern void default_stabs_asm_out_constructor (struct rtx_def *, int);
extern void default_named_section_asm_out_constructor (struct rtx_def *, int)
                   ;
extern void default_ctor_section_asm_out_constructor (struct rtx_def *, int)
                  ;


extern void assemble_vtable_entry (struct rtx_def *, long);
extern void assemble_vtable_inherit (struct rtx_def *, struct rtx_def *)
                            ;
# 33 "regrename.c" 2
# 1 "function.h" 1
# 22 "function.h"
struct var_refs_queue
{
  rtx modified;
  enum machine_mode promoted_mode;
  int unsignedp;
  struct var_refs_queue *next;
};






struct sequence_stack
{

  rtx first, last;
  tree sequence_rtl_expr;
  struct sequence_stack *next;
};

extern struct sequence_stack *sequence_stack;



struct simple_obstack_stack
{
  struct obstack *obstack;
  struct simple_obstack_stack *next;
};

struct emit_status
{


  int x_reg_rtx_no;


  int x_first_label_num;






  rtx x_first_insn;
  rtx x_last_insn;




  tree sequence_rtl_expr;





  struct sequence_stack *sequence_stack;



  int x_cur_insn_uid;



  int x_last_linenum;
  const char *x_last_filename;





  int regno_pointer_align_length;




  unsigned char *regno_pointer_align;



  tree *regno_decl;



  rtx *x_regno_reg_rtx;
};


#define reg_rtx_no (cfun->emit->x_reg_rtx_no)
#define seq_rtl_expr (cfun->emit->sequence_rtl_expr)
#define regno_reg_rtx (cfun->emit->x_regno_reg_rtx)
#define seq_stack (cfun->emit->sequence_stack)

#define REGNO_POINTER_ALIGN(REGNO) (cfun->emit->regno_pointer_align[REGNO])
#define REGNO_DECL(REGNO) (cfun->emit->regno_decl[REGNO])

struct expr_status
{


  int x_pending_stack_adjust;
# 140 "function.h"
  int x_inhibit_defer_pop;





  int x_stack_pointer_delta;




  rtx x_saveregs_value;


  rtx x_apply_args_value;


  rtx x_forced_labels;


  rtx x_pending_chain;
};

#define pending_stack_adjust (cfun->expr->x_pending_stack_adjust)
#define inhibit_defer_pop (cfun->expr->x_inhibit_defer_pop)
#define saveregs_value (cfun->expr->x_saveregs_value)
#define apply_args_value (cfun->expr->x_apply_args_value)
#define forced_labels (cfun->expr->x_forced_labels)
#define pending_chain (cfun->expr->x_pending_chain)
#define stack_pointer_delta (cfun->expr->x_stack_pointer_delta)




struct function
{
  struct eh_status *eh;
  struct stmt_status *stmt;
  struct expr_status *expr;
  struct emit_status *emit;
  struct varasm_status *varasm;




  const char *name;


  tree decl;


  struct function *outer;




  int pops_args;




  int args_size;




  int pretend_args_size;



  int outgoing_args_size;



  rtx arg_offset_rtx;



  CUMULATIVE_ARGS args_info;





  rtx return_rtx;


  rtx internal_arg_pointer;



  const char *cannot_inline;



  struct initial_value_struct *hard_reg_initial_vals;


  int x_function_call_count;




  tree x_nonlocal_labels;





  rtx x_nonlocal_goto_handler_slots;



  rtx x_nonlocal_goto_handler_labels;




  rtx x_nonlocal_goto_stack_level;





  rtx x_cleanup_label;




  rtx x_return_label;



  rtx x_save_expr_regs;



  rtx x_stack_slot_list;


  tree x_rtl_expr_chain;



  rtx x_tail_recursion_label;


  rtx x_tail_recursion_reentry;





  rtx x_arg_pointer_save_area;




  rtx x_clobber_return_insn;




  long x_frame_offset;




  tree x_context_display;
# 317 "function.h"
  tree x_trampoline_list;


  rtx x_parm_birth_insn;



  rtx x_last_parm_insn;



  unsigned int x_max_parm_reg;





  rtx *x_parm_reg_stack_loc;


  struct temp_slot *x_temp_slots;


  int x_temp_slot_level;


  int x_var_temp_slot_level;





  int x_target_temp_slot_level;



  struct var_refs_queue *fixup_var_refs_queue;


  int inlinable;
  int no_debugging_symbols;

  void *original_arg_vector;
  tree original_decl_initial;


  rtx inl_last_parm_insn;

  int inl_max_label_num;


  int profile_label_no;




  struct machine_function *machine;

  int stack_alignment_needed;

  int preferred_stack_boundary;


  struct language_function *language;





  rtx epilogue_delay_list;





  unsigned int returns_struct : 1;



  unsigned int returns_pcc_struct : 1;


  unsigned int returns_pointer : 1;


  unsigned int needs_context : 1;


  unsigned int calls_setjmp : 1;


  unsigned int calls_longjmp : 1;



  unsigned int calls_alloca : 1;


  unsigned int calls_eh_return : 1;



  unsigned int has_nonlocal_label : 1;



  unsigned int has_nonlocal_goto : 1;


  unsigned int contains_functions : 1;


  unsigned int has_computed_jump : 1;




  unsigned int is_thunk : 1;



  unsigned int instrument_entry_exit : 1;


  unsigned int profile : 1;



  unsigned int limit_stack : 1;



  unsigned int varargs : 1;



  unsigned int stdarg : 1;





  unsigned int x_whole_function_mode_p : 1;
# 468 "function.h"
  unsigned int x_dont_save_pending_sizes_p : 1;


  unsigned int uses_const_pool : 1;


  unsigned int uses_pic_offset_table : 1;


  unsigned int uses_eh_lsda : 1;


  unsigned int arg_pointer_save_area_init : 1;
};


extern struct function *cfun;


extern int virtuals_instantiated;


#define current_function_name (cfun->name)
#define current_function_pops_args (cfun->pops_args)
#define current_function_returns_struct (cfun->returns_struct)
#define current_function_returns_pcc_struct (cfun->returns_pcc_struct)
#define current_function_returns_pointer (cfun->returns_pointer)
#define current_function_needs_context (cfun->needs_context)
#define current_function_calls_setjmp (cfun->calls_setjmp)
#define current_function_calls_alloca (cfun->calls_alloca)
#define current_function_calls_longjmp (cfun->calls_longjmp)
#define current_function_calls_eh_return (cfun->calls_eh_return)
#define current_function_has_computed_jump (cfun->has_computed_jump)
#define current_function_contains_functions (cfun->contains_functions)
#define current_function_is_thunk (cfun->is_thunk)
#define current_function_args_info (cfun->args_info)
#define current_function_args_size (cfun->args_size)
#define current_function_pretend_args_size (cfun->pretend_args_size)
#define current_function_outgoing_args_size (cfun->outgoing_args_size)
#define current_function_arg_offset_rtx (cfun->arg_offset_rtx)
#define current_function_varargs (cfun->varargs)
#define current_function_stdarg (cfun->stdarg)
#define current_function_internal_arg_pointer (cfun->internal_arg_pointer)
#define current_function_return_rtx (cfun->return_rtx)
#define current_function_instrument_entry_exit (cfun->instrument_entry_exit)
#define current_function_profile (cfun->profile)
#define current_function_profile_label_no (cfun->profile_label_no)
#define current_function_limit_stack (cfun->limit_stack)
#define current_function_uses_pic_offset_table (cfun->uses_pic_offset_table)
#define current_function_uses_const_pool (cfun->uses_const_pool)
#define current_function_cannot_inline (cfun->cannot_inline)
#define current_function_epilogue_delay_list (cfun->epilogue_delay_list)
#define current_function_has_nonlocal_label (cfun->has_nonlocal_label)
#define current_function_has_nonlocal_goto (cfun->has_nonlocal_goto)

#define max_parm_reg (cfun->x_max_parm_reg)
#define parm_reg_stack_loc (cfun->x_parm_reg_stack_loc)
#define cleanup_label (cfun->x_cleanup_label)
#define return_label (cfun->x_return_label)
#define save_expr_regs (cfun->x_save_expr_regs)
#define stack_slot_list (cfun->x_stack_slot_list)
#define parm_birth_insn (cfun->x_parm_birth_insn)
#define frame_offset (cfun->x_frame_offset)
#define tail_recursion_label (cfun->x_tail_recursion_label)
#define tail_recursion_reentry (cfun->x_tail_recursion_reentry)
#define arg_pointer_save_area (cfun->x_arg_pointer_save_area)
#define rtl_expr_chain (cfun->x_rtl_expr_chain)
#define last_parm_insn (cfun->x_last_parm_insn)
#define context_display (cfun->x_context_display)
#define trampoline_list (cfun->x_trampoline_list)
#define function_call_count (cfun->x_function_call_count)
#define temp_slots (cfun->x_temp_slots)
#define temp_slot_level (cfun->x_temp_slot_level)
#define target_temp_slot_level (cfun->x_target_temp_slot_level)
#define var_temp_slot_level (cfun->x_var_temp_slot_level)
#define nonlocal_labels (cfun->x_nonlocal_labels)
#define nonlocal_goto_handler_slots (cfun->x_nonlocal_goto_handler_slots)
#define nonlocal_goto_handler_labels (cfun->x_nonlocal_goto_handler_labels)
#define nonlocal_goto_stack_level (cfun->x_nonlocal_goto_stack_level)


extern tree inline_function_decl;



struct function *find_function_data (tree);


extern void identify_blocks (void);



extern void reorder_blocks (void);


extern void number_blocks (tree);




extern long get_frame_size (void);

extern long get_func_frame_size (struct function *);



extern void (*init_machine_status) (struct function *);
extern void (*free_machine_status) (struct function *);



extern void (*mark_machine_status) (struct function *);


extern void (*init_lang_status) (struct function *);
extern void (*mark_lang_status) (struct function *);
extern void (*save_lang_status) (struct function *);
extern void (*restore_lang_status) (struct function *);
extern void (*free_lang_status) (struct function *);


extern void restore_emit_status (struct function *);
extern void free_after_parsing (struct function *);
extern void free_after_compilation (struct function *);

extern void init_varasm_status (struct function *);
extern void free_varasm_status (struct function *);
extern void free_emit_status (struct function *);
extern void free_stmt_status (struct function *);
extern void free_eh_status (struct function *);
extern void free_expr_status (struct function *);

extern rtx get_first_block_beg (void);


extern void diddle_return_value (void (*)(rtx, void*), void*);
extern void clobber_return_register (void);
extern void use_return_register (void);


extern rtx get_arg_pointer_save_area (struct function *);

extern void init_virtual_regs (struct emit_status *);


extern void init_function_once (void);
# 34 "regrename.c" 2
# 1 "recog.h" 1
# 23 "recog.h"
#define MAX_RECOG_ALTERNATIVES 30
#define recog_memoized(I) (INSN_CODE (I) >= 0 ? INSN_CODE (I) : recog_memoized_1 (I))



enum op_type {
  OP_IN,
  OP_OUT,
  OP_INOUT
};

struct operand_alternative
{


  const char *constraint;


  enum reg_class class;



  unsigned int reject;


  int matches;



  int matched;


  unsigned int earlyclobber:1;

  unsigned int memory_ok:1;

  unsigned int offmem_ok:1;

  unsigned int nonoffmem_ok:1;

  unsigned int decmem_ok:1;

  unsigned int incmem_ok:1;

  unsigned int is_address:1;


  unsigned int anything_ok:1;
};


extern void init_recog (void);
extern void init_recog_no_volatile (void);
extern int recog_memoized_1 (rtx);
extern int check_asm_operands (rtx);
extern int asm_operand_ok (rtx, const char *);
extern int validate_change (rtx, rtx *, rtx, int);
extern int insn_invalid_p (rtx);
extern int apply_change_group (void);
extern int num_validated_changes (void);
extern void cancel_changes (int);
extern int constrain_operands (int);
extern int constrain_operands_cached (int);
extern int memory_address_p (enum machine_mode, rtx);
extern int strict_memory_address_p (enum machine_mode, rtx);
extern int validate_replace_rtx_subexp (rtx, rtx, rtx, rtx *);
extern int validate_replace_rtx (rtx, rtx, rtx);
extern void validate_replace_rtx_group (rtx, rtx, rtx);
extern int validate_replace_src (rtx, rtx, rtx);



extern int reg_fits_class_p (rtx, enum reg_class, int, enum machine_mode)
                               ;
extern rtx *find_single_use (rtx, rtx, rtx *);

extern int general_operand (rtx, enum machine_mode);
extern int address_operand (rtx, enum machine_mode);
extern int register_operand (rtx, enum machine_mode);
extern int pmode_register_operand (rtx, enum machine_mode);
extern int scratch_operand (rtx, enum machine_mode);
extern int immediate_operand (rtx, enum machine_mode);
extern int const_int_operand (rtx, enum machine_mode);
extern int const_double_operand (rtx, enum machine_mode);
extern int nonimmediate_operand (rtx, enum machine_mode);
extern int nonmemory_operand (rtx, enum machine_mode);
extern int push_operand (rtx, enum machine_mode);
extern int pop_operand (rtx, enum machine_mode);
extern int memory_operand (rtx, enum machine_mode);
extern int indirect_operand (rtx, enum machine_mode);
extern int mode_independent_operand (rtx, enum machine_mode);
extern int comparison_operator (rtx, enum machine_mode);

extern int offsettable_memref_p (rtx);
extern int offsettable_nonstrict_memref_p (rtx);
extern int offsettable_address_p (int, enum machine_mode, rtx);
extern int mode_dependent_address_p (rtx);

extern int recog (rtx, rtx, int *);
extern void add_clobbers (rtx, int);
extern int added_clobbers_hard_reg_p (int);
extern void insn_extract (rtx);
extern void extract_insn (rtx);
extern void extract_constrain_insn_cached (rtx);
extern void extract_insn_cached (rtx);
extern void preprocess_constraints (void);
extern rtx peep2_next_insn (int);
extern int peep2_regno_dead_p (int, int);
extern int peep2_reg_dead_p (int, rtx);

extern rtx peep2_find_free_register (int, int, const char *, enum machine_mode, HARD_REG_ELT_TYPE *)

                       ;

extern void peephole2_optimize (FILE *);
extern rtx peephole2_insns (rtx, rtx, int *);


extern int volatile_ok;



extern int which_alternative;



struct recog_data
{







  rtx operand[30];


  rtx *operand_loc[30];


  const char *constraints[30];


  enum machine_mode operand_mode[30];


  enum op_type operand_type[30];



  rtx *dup_loc[4];



  char dup_num[4];
# 191 "recog.h"
  char n_operands;


  char n_dups;


  char n_alternatives;


  rtx insn;
};

extern struct recog_data recog_data;



extern struct operand_alternative recog_op_alt[30][30];




typedef int (*insn_operand_predicate_fn) (rtx, enum machine_mode);
typedef const char * (*insn_output_fn) (rtx *, rtx);
typedef rtx (*insn_gen_fn) (rtx, ...);

struct insn_operand_data
{
  const insn_operand_predicate_fn predicate;

  const char *const constraint;

  const unsigned int mode : 16;

  const char strict_low;

  const char eliminable;
};



#define INSN_OUTPUT_FORMAT_NONE 0
#define INSN_OUTPUT_FORMAT_SINGLE 1
#define INSN_OUTPUT_FORMAT_MULTI 2
#define INSN_OUTPUT_FORMAT_FUNCTION 3

struct insn_data
{
  const char *const name;
  const void * output;
  const insn_gen_fn genfun;
  const struct insn_operand_data *const operand;

  const char n_operands;
  const char n_dups;
  const char n_alternatives;
  const char output_format;
};

extern const struct insn_data insn_data[];
# 35 "regrename.c" 2
# 1 "flags.h" 1
# 23 "flags.h"
#define GCC_FLAGS_H 


extern const char *main_input_filename;

enum debug_info_type
{
  NO_DEBUG,
  DBX_DEBUG,
  SDB_DEBUG,
  DWARF_DEBUG,
  DWARF2_DEBUG,
  XCOFF_DEBUG,
  VMS_DEBUG,
  VMS_AND_DWARF2_DEBUG

};


extern enum debug_info_type write_symbols;

enum debug_info_level
{
  DINFO_LEVEL_NONE,
  DINFO_LEVEL_TERSE,
  DINFO_LEVEL_NORMAL,
  DINFO_LEVEL_VERBOSE
};


extern enum debug_info_level debug_info_level;



extern int use_gnu_debug_info_extensions;



extern int optimize;



extern int optimize_size;




extern int quiet_flag;



extern int time_report;




extern int mem_report;



extern int inhibit_warnings;



extern int warn_system_headers;



extern int extra_warnings;





extern void set_Wunused (int setting);

extern int warn_unused_function;
extern int warn_unused_label;
extern int warn_unused_parameter;
extern int warn_unused_variable;
extern int warn_unused_value;



extern int warn_notreached;



extern int warn_inline;



extern int warn_uninitialized;







extern int warn_unknown_pragmas;



extern int warn_shadow;



extern int warn_switch;




extern int warn_return_type;



extern int warn_missing_noreturn;





extern int warn_cast_align;





extern int warn_larger_than;
extern long larger_than_size;




extern int warn_aggregate_return;



extern int warn_packed;



extern int warn_padded;



extern int warn_disabled_optimization;




extern int warn_deprecated_decl;



extern int profile_flag;



extern int profile_arc_flag;



extern int flag_test_coverage;



extern int flag_branch_probabilities;



extern int flag_reorder_blocks;



extern int flag_rename_registers;




extern int pedantic;




extern int in_system_header;




extern int flag_print_asm_name;





extern int flag_signed_char;



extern int flag_short_enums;





extern int flag_caller_saves;



extern int flag_pcc_struct_return;




extern int flag_force_mem;




extern int flag_force_addr;




extern int flag_defer_pop;




extern int flag_float_store;



extern int flag_strength_reduce;






extern int flag_unroll_loops;




extern int flag_unroll_all_loops;




extern int flag_move_all_movables;



extern int flag_prefetch_loop_arrays;




extern int flag_reduce_all_givs;




extern int flag_cse_follow_jumps;




extern int flag_cse_skip_blocks;



extern int flag_expensive_optimizations;




extern int flag_writable_strings;





extern int flag_no_function_cse;




extern int flag_omit_frame_pointer;



extern int flag_no_peephole;



extern int flag_volatile;



extern int flag_volatile_global;



extern int flag_volatile_static;



extern int flag_optimize_sibling_calls;




extern int flag_errno_math;






extern int flag_unsafe_math_optimizations;





extern int flag_trapping_math;





extern int flag_complex_divide_method;



extern int flag_rerun_loop_opt;




extern int flag_inline_functions;





extern int flag_keep_inline_functions;







extern int flag_no_inline;




extern int flag_really_no_inline;



extern int flag_syntax_only;



extern int flag_gen_aux_info;



extern int flag_shared_data;






extern int flag_schedule_insns;
extern int flag_schedule_insns_after_reload;
# 418 "flags.h"
extern int flag_schedule_interblock;
extern int flag_schedule_speculative;
extern int flag_schedule_speculative_load;
extern int flag_schedule_speculative_load_dangerous;



extern int flag_branch_on_count_reg;





extern int flag_single_precision_constant;



extern int flag_delayed_branch;




extern int flag_dump_unnumbered;





extern int flag_pretend_float;




extern int flag_pedantic_errors;




extern int flag_pic;




extern int flag_exceptions;



extern int flag_unwind_tables;



extern int flag_asynchronous_unwind_tables;




extern int flag_no_common;





extern int flag_inhibit_size_directive;




extern int flag_function_sections;



extern int flag_data_sections;
# 498 "flags.h"
extern int flag_verbose_asm;
# 507 "flags.h"
extern int flag_debug_asm;

extern int flag_dump_rtl_in_asm;



extern int flag_gnu_linker;


extern int flag_pack_struct;
# 525 "flags.h"
extern int flag_argument_noalias;





extern int flag_strict_aliasing;



extern int flag_stack_check;


extern int flag_regmove;


extern int flag_instrument_function_entry_exit;


extern int flag_peephole2;


extern int flag_guess_branch_prob;






extern int flag_bounded_pointers;







extern int flag_bounds_check;




extern int flag_merge_constants;




extern int flag_renumber_insns;







extern int frame_pointer_needed;



extern int flag_trapv;


extern int g_switch_value;
extern int g_switch_set;






extern int align_loops;
extern int align_loops_log;
extern int align_loops_max_skip;
extern int align_jumps;
extern int align_jumps_log;
extern int align_jumps_max_skip;
extern int align_labels;
extern int align_labels_log;
extern int align_labels_max_skip;
extern int align_functions;
extern int align_functions_log;


extern int dump_for_graph;


enum graph_dump_types
{
  no_graph = 0,
  vcg
};
extern enum graph_dump_types graph_dump_format;





extern int flag_no_ident;



extern int flag_gcse_lm;



extern int flag_gcse_sm;




extern int flag_eliminate_dwarf2_dups;



extern int flag_detailed_statistics;


extern int flag_non_call_exceptions;
# 36 "regrename.c" 2
# 1 "toplev.h" 1
# 22 "toplev.h"
#define GCC_TOPLEV_H 



#define skip_leading_substring(whole,part) (strncmp (whole, part, strlen (part)) ? NULL : whole + strlen (part))


extern int toplev_main (int, char **);
extern int read_integral_parameter (const char *, const char *, const int)
                 ;
extern int count_error (int);
extern void strip_off_ending (char *, int);
extern void print_time (const char *, long);
extern const char *trim_filename (const char *);
extern void internal_error (const char *, ...)
            __attribute__ ((__noreturn__));
extern void fatal_io_error (const char *, ...)
            __attribute__ ((__noreturn__));
extern void _fatal_insn_not_found (struct rtx_def *, const char *, int, const char *)


            __attribute__ ((__noreturn__));
extern void _fatal_insn (const char *, struct rtx_def *, const char *, int, const char *)



           __attribute__ ((__noreturn__));

#define fatal_insn(msgid,insn) _fatal_insn (msgid, insn, __FILE__, __LINE__, __FUNCTION__)

#define fatal_insn_not_found(insn) _fatal_insn_not_found (insn, __FILE__, __LINE__, __FUNCTION__)





extern void warning (const char *, ...);
extern void error (const char *, ...);
extern void fatal_error (const char *, ...)
            __attribute__ ((__noreturn__));
extern void pedwarn (const char *, ...);
extern void pedwarn_with_file_and_line (const char *, int, const char *, ...)
                          ;
extern void warning_with_file_and_line (const char *, int, const char *, ...)
                          ;
extern void error_with_file_and_line (const char *, int, const char *, ...)
                          ;
extern void sorry (const char *, ...);
extern void report_error_function (const char *);

extern void rest_of_decl_compilation (union tree_node *, const char *, int, int)
                              ;
extern void rest_of_type_compilation (union tree_node *, int);
extern void rest_of_compilation (union tree_node *);

extern void pedwarn_with_decl (union tree_node *, const char *, ...)
                          ;
extern void warning_with_decl (union tree_node *, const char *, ...)
                          ;
extern void error_with_decl (union tree_node *, const char *, ...)
                          ;

extern void announce_function (union tree_node *);

extern void error_for_asm (struct rtx_def *, const char *, ...)
                          ;
extern void warning_for_asm (struct rtx_def *, const char *, ...)
                          ;
extern void warn_deprecated_use (union tree_node *);
extern int do_float_handler (void (*) (void *), void *);


extern void output_quoted_string (FILE *, const char *);
extern void output_file_directive (FILE *, const char *);

extern void do_abort (void) __attribute__ ((__noreturn__));
extern void botch (const char *)
  __attribute__ ((__noreturn__));




extern void fnotice (FILE *, const char *, ...)
            __attribute__ ((__format__ (__printf__, 2, 3)));


extern int wrapup_global_declarations (union tree_node **, int);
extern void check_global_declarations (union tree_node **, int);

extern const char *progname;
extern const char *dump_base_name;


extern struct ht *ident_hash;




extern void set_fast_math_flags (void);
extern void set_no_fast_math_flags (void);





#define exact_log2(N) exact_log2_wide ((unsigned HOST_WIDE_INT) (N))
#define floor_log2(N) floor_log2_wide ((unsigned HOST_WIDE_INT) (N))

extern int exact_log2_wide (unsigned long);
extern int floor_log2_wide (unsigned long);
# 37 "regrename.c" 2
# 1 "obstack.h" 1
# 111 "obstack.h"
#define _OBSTACK_H 1
# 122 "obstack.h"
#define __PTR_TO_INT(P) ((P) - (char *) 0)



#define __INT_TO_PTR(P) ((P) + (char *) 0)
# 136 "obstack.h"
#define PTR_INT_TYPE __PTRDIFF_TYPE__
# 149 "obstack.h"
#define _obstack_memcpy(To,From,N) memcpy ((To), (From), (N))
# 161 "obstack.h"
struct _obstack_chunk
{
  char *limit;
  struct _obstack_chunk *prev;
  char contents[4];
};

struct obstack
{
  long chunk_size;
  struct _obstack_chunk *chunk;
  char *object_base;
  char *next_free;
  char *chunk_limit;
  long int temp;
  int alignment_mask;




  struct _obstack_chunk *(*chunkfun) (void *, long);
  void (*freefun) (void *, struct _obstack_chunk *);
  void *extra_arg;





  unsigned use_extra_arg:1;
  unsigned maybe_empty_object:1;



  unsigned alloc_failed:1;


};




extern void _obstack_newchunk (struct obstack *, int);
extern void _obstack_free (struct obstack *, void *);
extern int _obstack_begin (struct obstack *, int, int,
       void *(*) (long), void (*) (void *));
extern int _obstack_begin_1 (struct obstack *, int, int,
        void *(*) (void *, long),
        void (*) (void *, void *), void *);
extern int _obstack_memory_used (struct obstack *);
# 223 "obstack.h"
void obstack_init (struct obstack *obstack);

void * obstack_alloc (struct obstack *obstack, int size);

void * obstack_copy (struct obstack *obstack, void *address, int size);
void * obstack_copy0 (struct obstack *obstack, void *address, int size);

void obstack_free (struct obstack *obstack, void *block);

void obstack_blank (struct obstack *obstack, int size);

void obstack_grow (struct obstack *obstack, void *data, int size);
void obstack_grow0 (struct obstack *obstack, void *data, int size);

void obstack_1grow (struct obstack *obstack, int data_char);
void obstack_ptr_grow (struct obstack *obstack, void *data);
void obstack_int_grow (struct obstack *obstack, int data);

void * obstack_finish (struct obstack *obstack);

int obstack_object_size (struct obstack *obstack);

int obstack_room (struct obstack *obstack);
void obstack_make_room (struct obstack *obstack, int size);
void obstack_1grow_fast (struct obstack *obstack, int data_char);
void obstack_ptr_grow_fast (struct obstack *obstack, void *data);
void obstack_int_grow_fast (struct obstack *obstack, int data);
void obstack_blank_fast (struct obstack *obstack, int size);

void * obstack_base (struct obstack *obstack);
void * obstack_next_free (struct obstack *obstack);
int obstack_alignment_mask (struct obstack *obstack);
int obstack_chunk_size (struct obstack *obstack);
int obstack_memory_used (struct obstack *obstack);
# 267 "obstack.h"
extern void (*obstack_alloc_failed_handler) (void);





extern int obstack_exit_failure;





#define obstack_base(h) ((h)->object_base)



#define obstack_chunk_size(h) ((h)->chunk_size)



#define obstack_next_free(h) ((h)->next_free)



#define obstack_alignment_mask(h) ((h)->alignment_mask)





#define obstack_init(h) _obstack_begin ((h), 0, 0, (void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free)



#define obstack_begin(h,size) _obstack_begin ((h), (size), 0, (void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free)



#define obstack_specify_allocation(h,size,alignment,chunkfun,freefun) _obstack_begin ((h), (size), (alignment), (void *(*) (long)) (chunkfun), (void (*) (void *)) (freefun))



#define obstack_specify_allocation_with_arg(h,size,alignment,chunkfun,freefun,arg) _obstack_begin_1 ((h), (size), (alignment), (void *(*) (void *, long)) (chunkfun), (void (*) (void *, void *)) (freefun), (arg))




#define obstack_chunkfun(h,newchunkfun) ((h) -> chunkfun = (struct _obstack_chunk *(*)(void *, long)) (newchunkfun))


#define obstack_freefun(h,newfreefun) ((h) -> freefun = (void (*)(void *, struct _obstack_chunk *)) (newfreefun))
# 346 "obstack.h"
#define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = achar)

#define obstack_blank_fast(h,n) ((h)->next_free += (n))

#define obstack_memory_used(h) _obstack_memory_used (h)
# 365 "obstack.h"
#define obstack_object_size(OBSTACK) __extension__ ({ struct obstack *__o = (OBSTACK); (unsigned) (__o->next_free - __o->object_base); })




#define obstack_room(OBSTACK) __extension__ ({ struct obstack *__o = (OBSTACK); (unsigned) (__o->chunk_limit - __o->next_free); })




#define obstack_make_room(OBSTACK,length) __extension__ ({ struct obstack *__o = (OBSTACK); int __len = (length); if (__o->chunk_limit - __o->next_free < __len) _obstack_newchunk (__o, __len); (void) 0; })







#define obstack_empty_p(OBSTACK) __extension__ ({ struct obstack *__o = (OBSTACK); (__o->chunk->prev == 0 && __o->next_free - __o->chunk->contents == 0); })




#define obstack_grow(OBSTACK,where,length) __extension__ ({ struct obstack *__o = (OBSTACK); int __len = (length); if (__o->next_free + __len > __o->chunk_limit) _obstack_newchunk (__o, __len); _obstack_memcpy (__o->next_free, (where), __len); __o->next_free += __len; (void) 0; })
# 398 "obstack.h"
#define obstack_grow0(OBSTACK,where,length) __extension__ ({ struct obstack *__o = (OBSTACK); int __len = (length); if (__o->next_free + __len + 1 > __o->chunk_limit) _obstack_newchunk (__o, __len + 1); _obstack_memcpy (__o->next_free, (where), __len); __o->next_free += __len; *(__o->next_free)++ = 0; (void) 0; })
# 409 "obstack.h"
#define obstack_1grow(OBSTACK,datum) __extension__ ({ struct obstack *__o = (OBSTACK); if (__o->next_free + 1 > __o->chunk_limit) _obstack_newchunk (__o, 1); *(__o->next_free)++ = (datum); (void) 0; })
# 421 "obstack.h"
#define obstack_ptr_grow(OBSTACK,datum) __extension__ ({ struct obstack *__o = (OBSTACK); if (__o->next_free + sizeof (void *) > __o->chunk_limit) _obstack_newchunk (__o, sizeof (void *)); ((*((void **)__o->next_free) = ((void *)datum)), (__o->next_free += sizeof (void *))); (void) 0; })
# 430 "obstack.h"
#define obstack_int_grow(OBSTACK,datum) __extension__ ({ struct obstack *__o = (OBSTACK); if (__o->next_free + sizeof (int) > __o->chunk_limit) _obstack_newchunk (__o, sizeof (int)); *((int *)__o->next_free)++ = ((int)datum); (void) 0; })







#define obstack_ptr_grow_fast(h,aptr) (*((void **) (h)->next_free)++ = (void *)aptr)
#define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)

#define obstack_blank(OBSTACK,length) __extension__ ({ struct obstack *__o = (OBSTACK); int __len = (length); if (__o->chunk_limit - __o->next_free < __len) _obstack_newchunk (__o, __len); __o->next_free += __len; (void) 0; })
# 450 "obstack.h"
#define obstack_alloc(OBSTACK,length) __extension__ ({ struct obstack *__h = (OBSTACK); obstack_blank (__h, (length)); obstack_finish (__h); })





#define obstack_copy(OBSTACK,where,length) __extension__ ({ struct obstack *__h = (OBSTACK); obstack_grow (__h, (where), (length)); obstack_finish (__h); })





#define obstack_copy0(OBSTACK,where,length) __extension__ ({ struct obstack *__h = (OBSTACK); obstack_grow0 (__h, (where), (length)); obstack_finish (__h); })







#define obstack_finish(OBSTACK) __extension__ ({ struct obstack *__o1 = (OBSTACK); void *value; value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = __INT_TO_PTR ((__PTR_TO_INT (__o1->next_free)+__o1->alignment_mask) & ~ (__o1->alignment_mask)); if (__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) __o1->next_free = __o1->chunk_limit; __o1->object_base = __o1->next_free; value; })
# 486 "obstack.h"
#define obstack_free(OBSTACK,OBJ) __extension__ ({ struct obstack *__o = (OBSTACK); void *__obj = (OBJ); if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) __o->next_free = __o->object_base = __obj; else (obstack_free) (__o, __obj); })
# 38 "regrename.c" 2

#define obstack_chunk_alloc xmalloc
#define obstack_chunk_free free


#define REGNO_MODE_OK_FOR_BASE_P(REGNO,MODE) REGNO_OK_FOR_BASE_P (REGNO)



#define REG_MODE_OK_FOR_BASE_P(REGNO,MODE) REG_OK_FOR_BASE_P (REGNO)


static const char *const reg_class_names[] = { "NO_REGS", "AREG", "DREG", "CREG", "BREG", "SIREG", "DIREG", "AD_REGS", "Q_REGS", "NON_Q_REGS", "INDEX_REGS", "LEGACY_REGS", "GENERAL_REGS", "FP_TOP_REG", "FP_SECOND_REG", "FLOAT_REGS", "SSE_REGS", "MMX_REGS", "FP_TOP_SSE_REGS", "FP_SECOND_SSE_REGS", "FLOAT_SSE_REGS", "FLOAT_INT_REGS", "INT_SSE_REGS", "FLOAT_INT_SSE_REGS", "ALL_REGS" };

struct du_chain
{
  struct du_chain *next_chain;
  struct du_chain *next_use;

  rtx insn;
  rtx *loc;
  enum reg_class class;
  unsigned int need_caller_save_reg:1;
  unsigned int earlyclobber:1;
};

enum scan_actions
{
  terminate_all_read,
  terminate_overlapping_read,
  terminate_write,
  terminate_dead,
  mark_read,
  mark_write
};

static const char * const scan_actions_name[] =
{
  "terminate_all_read",
  "terminate_overlapping_read",
  "terminate_write",
  "terminate_dead",
  "mark_read",
  "mark_write"
};

static struct obstack rename_obstack;

static void do_replace (struct du_chain *, int);
static void scan_rtx_reg (rtx, rtx *, enum reg_class, enum scan_actions, enum op_type, int)
                                            ;
static void scan_rtx_address (rtx, rtx *, enum reg_class, enum scan_actions, enum machine_mode)
                                                ;
static void scan_rtx (rtx, rtx *, enum reg_class, enum scan_actions, enum op_type, int)
                                               ;
static struct du_chain *build_def_use (basic_block);
static void dump_def_use_chain (struct du_chain *);
static void note_sets (rtx, rtx, void *);
static void clear_dead_regs (HARD_REG_ELT_TYPE *, enum machine_mode, rtx);
static void merge_overlapping_regs (basic_block, HARD_REG_ELT_TYPE *, struct du_chain *)
                            ;




static void
note_sets (x, set, data)
     rtx x;
     rtx set __attribute__ ((__unused__));
     void *data;
{
  HARD_REG_ELT_TYPE *pset = (HARD_REG_ELT_TYPE *) data;
  unsigned int regno;
  int nregs;
  if (((enum rtx_code) (x)->code) != REG)
    return;
  regno = (((x)->fld[0]).rtuint);
  nregs = (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (x)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (x)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (x)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));


  if (regno + nregs > 53)
    fancy_abort ("regrename.c", 119, __FUNCTION__);

  while (nregs-- > 0)
    ((*pset) |= ((HARD_REG_ELT_TYPE) (1)) << (regno + nregs));
}




static void
clear_dead_regs (pset, kind, notes)
     HARD_REG_ELT_TYPE *pset;
     enum machine_mode kind;
     rtx notes;
{
  rtx note;
  for (note = notes; note; note = (((note)->fld[1]).rtx))
    if (((enum reg_note) ((enum machine_mode) (note)->mode)) == kind && (((enum rtx_code) ((((note)->fld[0]).rtx))->code) == REG))
      {
 rtx reg = (((note)->fld[0]).rtx);
 unsigned int regno = (((reg)->fld[0]).rtuint);
 int nregs = (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (reg)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (reg)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (reg)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (reg)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (reg)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));


 if (regno + nregs > 53)
   fancy_abort ("regrename.c", 144, __FUNCTION__);

 while (nregs-- > 0)
   ((*pset) &= ~(((HARD_REG_ELT_TYPE) (1)) << (regno + nregs)));
      }
}




static void
merge_overlapping_regs (b, pset, chain)
     basic_block b;
     HARD_REG_ELT_TYPE *pset;
     struct du_chain *chain;
{
  struct du_chain *t = chain;
  rtx insn;
  HARD_REG_ELT_TYPE live;

  do { ((live) = ((HARD_REG_ELT_TYPE) (0))); reg_set_to_hard_reg_set (&live, b->global_live_at_start); } while (0);
  insn = b->head;
  while (t)
    {


      while (insn != t->insn)
 {
   if (((rtx_class[(int) (((enum rtx_code) (insn)->code))]) == 'i'))
     {
       clear_dead_regs (&live, REG_DEAD, (((insn)->fld[6]).rtx));
       note_stores ((((insn)->fld[3]).rtx), note_sets, (void *) &live);


       if (t != chain)
  ((*pset) |= (live));
       clear_dead_regs (&live, REG_UNUSED, (((insn)->fld[6]).rtx));
     }
   insn = (((insn)->fld[2]).rtx);
 }

      ((*pset) |= (live));




      if (! t->next_use)
 note_stores ((((insn)->fld[3]).rtx), note_sets, (void *) pset);

      t = t->next_use;
    }
}



void
regrename_optimize ()
{
  int tick[53];
  int this_tick = 0;
  int b;
  char *first_obj;

  memset (tick, 0, sizeof tick);

  gcc_obstack_init (&rename_obstack);
  first_obj = (char *) __extension__ ({ struct obstack *__h = (&rename_obstack); __extension__ ({ struct obstack *__o = (__h); int __len = ((0)); if (__o->chunk_limit - __o->next_free < __len) _obstack_newchunk (__o, __len); __o->next_free += __len; (void) 0; }); __extension__ ({ struct obstack *__o1 = (__h); void *value; value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *) 0)+__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *) 0); if (__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) __o1->next_free = __o1->chunk_limit; __o1->object_base = __o1->next_free; value; }); });

  for (b = 0; b < n_basic_blocks; b++)
    {
      basic_block bb = (((basic_block_info)->data.bb[(b)]));
      struct du_chain *all_chains = 0;
      HARD_REG_ELT_TYPE unavailable;
      HARD_REG_ELT_TYPE regs_seen;

      ((unavailable) = ((HARD_REG_ELT_TYPE) (0)));

      if (rtl_dump_file)
 fprintf (rtl_dump_file, "\nBasic block %d:\n", b);

      all_chains = build_def_use (bb);

      if (rtl_dump_file)
 dump_def_use_chain (all_chains);

      ((unavailable) = ((HARD_REG_ELT_TYPE) (0)));

      if (frame_pointer_needed)
 {
   int i;

   for (i = (((20) >= 8 && (20) <= (8 + 7)) || (((20) >= (20 + 1) && (20) <= ((20 + 1) + 7)) || ((20) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (20) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((20) >= (((20 + 1) + 7) + 1) && (20) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((target_flags & 0x02000000) ? DImode : SImode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((target_flags & 0x02000000) ? DImode : SImode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((target_flags & 0x02000000) ? DImode : SImode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((target_flags & 0x02000000) ? DImode : SImode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((target_flags & 0x02000000) ? DImode : SImode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4)))); i--;)
     ((unavailable) |= ((HARD_REG_ELT_TYPE) (1)) << (20 + i));


   for (i = (((6) >= 8 && (6) <= (8 + 7)) || (((6) >= (20 + 1) && (6) <= ((20 + 1) + 7)) || ((6) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (6) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((6) >= (((20 + 1) + 7) + 1) && (6) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((target_flags & 0x02000000) ? DImode : SImode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((target_flags & 0x02000000) ? DImode : SImode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((target_flags & 0x02000000) ? DImode : SImode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((target_flags & 0x02000000) ? DImode : SImode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((target_flags & 0x02000000) ? DImode : SImode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4)))); i--;)
     ((unavailable) |= ((HARD_REG_ELT_TYPE) (1)) << (6 + i));

 }

      ((regs_seen) = ((HARD_REG_ELT_TYPE) (0)));
      while (all_chains)
 {
   int new_reg, best_new_reg = -1;
   int n_uses;
   struct du_chain *this = all_chains;
   struct du_chain *tmp, *last;
   HARD_REG_ELT_TYPE this_unavailable;
   int reg = (((*this->loc)->fld[0]).rtuint);
   int i;

   all_chains = this->next_chain;
# 266 "regrename.c"
   if (fixed_regs[reg] || global_regs[reg]

       || (frame_pointer_needed && reg == 6)



       )
     continue;

   ((this_unavailable) = (unavailable));




   n_uses = 0;
   for (last = this; last->next_use; last = last->next_use)
     {
       n_uses++;
       ((this_unavailable) |= ~ (reg_class_contents[last->class]))
                                          ;
     }
   if (n_uses < 1)
     continue;

   ((this_unavailable) |= ~ (reg_class_contents[last->class]))
                                      ;

   if (this->need_caller_save_reg)
     ((this_unavailable) |= (call_used_reg_set));

   merge_overlapping_regs (bb, &this_unavailable, this);



   for (new_reg = 0; new_reg < 53; new_reg++)
     {
       int nregs = (((new_reg) >= 8 && (new_reg) <= (8 + 7)) || (((new_reg) >= (20 + 1) && (new_reg) <= ((20 + 1) + 7)) || ((new_reg) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (new_reg) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((new_reg) >= (((20 + 1) + 7) + 1) && (new_reg) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (*this->loc)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (*this->loc)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (*this->loc)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (*this->loc)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (*this->loc)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));

       for (i = nregs - 1; i >= 0; --i)
         if (((this_unavailable) & (((HARD_REG_ELT_TYPE) (1)) << (new_reg + i)))
      || fixed_regs[new_reg + i]
      || global_regs[new_reg + i]

      || (! regs_ever_live[new_reg + i]
   && ! call_used_regs[new_reg + i])







      || ! ((reg + i) < 8 || (reg + i) > (8 + 7))

      )
    break;
       if (i >= 0)
  continue;



       for (tmp = this; tmp; tmp = tmp->next_use)
  if (! ix86_hard_regno_mode_ok ((new_reg), (((enum machine_mode) (*tmp->loc)->mode)))
      || (tmp->need_caller_save_reg
   && ! (0
                                    )
   && (0
                                      )))
    break;
       if (! tmp)
  {
    if (best_new_reg == -1
        || tick[best_new_reg] > tick[new_reg])
      best_new_reg = new_reg;
  }
     }

   if (rtl_dump_file)
     {
       fprintf (rtl_dump_file, "Register %s in insn %d",
         reg_names[reg], (((last->insn)->fld[0]).rtint));
       if (last->need_caller_save_reg)
  fprintf (rtl_dump_file, " crosses a call");
       }

   if (best_new_reg == -1)
     {
       if (rtl_dump_file)
  fprintf (rtl_dump_file, "; no available registers\n");
       continue;
     }

   do_replace (this, best_new_reg);
   tick[best_new_reg] = this_tick++;

   if (rtl_dump_file)
     fprintf (rtl_dump_file, ", renamed as %s\n", reg_names[best_new_reg]);
 }

      __extension__ ({ struct obstack *__o = (&rename_obstack); void *__obj = (first_obj); if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) __o->next_free = __o->object_base = __obj; else (obstack_free) (__o, __obj); });
    }

  __extension__ ({ struct obstack *__o = (&rename_obstack); void *__obj = (
# 368 "regrename.c" 3 4
 ((void *)0)
# 368 "regrename.c"
 ); if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) __o->next_free = __o->object_base = __obj; else (obstack_free) (__o, __obj); });

  if (rtl_dump_file)
    fputc ('\n', rtl_dump_file);

  count_or_remove_death_notes (
# 373 "regrename.c" 3 4
                              ((void *)0)
# 373 "regrename.c"
                                  , 1);
  update_life_info (
# 374 "regrename.c" 3 4
                   ((void *)0)
# 374 "regrename.c"
                       , UPDATE_LIFE_LOCAL,
      4 | 1);
}

static void
do_replace (chain, reg)
     struct du_chain *chain;
     int reg;
{
  while (chain)
    {
      unsigned int regno = (((*chain->loc)->fld[1]).rtuint);
      *chain->loc = gen_raw_REG (((enum machine_mode) (*chain->loc)->mode), reg);
      if (regno >= 53)
 (((*chain->loc)->fld[1]).rtuint) = regno;
      chain = chain->next_use;
    }
}


static struct du_chain *open_chains;
static struct du_chain *closed_chains;

static void
scan_rtx_reg (insn, loc, class, action, type, earlyclobber)
     rtx insn;
     rtx *loc;
     enum reg_class class;
     enum scan_actions action;
     enum op_type type;
     int earlyclobber;
{
  struct du_chain **p;
  rtx x = *loc;
  enum machine_mode mode = ((enum machine_mode) (x)->mode);
  int this_regno = (((x)->fld[0]).rtuint);
  int this_nregs = (((this_regno) >= 8 && (this_regno) <= (8 + 7)) || (((this_regno) >= (20 + 1) && (this_regno) <= ((20 + 1) + 7)) || ((this_regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (this_regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((this_regno) >= (((20 + 1) + 7) + 1) && (this_regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (mode)]) == MODE_COMPLEX_INT || (mode_class[(int) (mode)]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((mode) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (mode) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (mode)]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));

  if (action == mark_write)
    {
      if (type == OP_OUT)
 {
   struct du_chain *this = (struct du_chain *)
     __extension__ ({ struct obstack *__h = (&rename_obstack); __extension__ ({ struct obstack *__o = (__h); int __len = ((sizeof (struct du_chain))); if (__o->chunk_limit - __o->next_free < __len) _obstack_newchunk (__o, __len); __o->next_free += __len; (void) 0; }); __extension__ ({ struct obstack *__o1 = (__h); void *value; value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *) 0)+__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *) 0); if (__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) __o1->next_free = __o1->chunk_limit; __o1->object_base = __o1->next_free; value; }); });
   this->next_use = 0;
   this->next_chain = open_chains;
   this->loc = loc;
   this->insn = insn;
   this->class = class;
   this->need_caller_save_reg = 0;
   this->earlyclobber = earlyclobber;
   open_chains = this;
 }
      return;
    }

  if ((type == OP_OUT && action != terminate_write)
      || (type != OP_OUT && action == terminate_write))
    return;

  for (p = &open_chains; *p;)
    {
      struct du_chain *this = *p;
# 445 "regrename.c"
      if (*this->loc == (global_rtl[GR_CC0]))
 p = &this->next_chain;
      else
        {
   int regno = (((*this->loc)->fld[0]).rtuint);
   int nregs = (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (*this->loc)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (*this->loc)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (*this->loc)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (*this->loc)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (*this->loc)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));
   int exact_match = (regno == this_regno && nregs == this_nregs);

   if (regno + nregs <= this_regno
       || this_regno + this_nregs <= regno)
     {
       p = &this->next_chain;
       continue;
     }

   if (action == mark_read)
     {
       if (! exact_match)
  fancy_abort ("regrename.c", 463, __FUNCTION__);





       if (class != NO_REGS)
  {
    this = (struct du_chain *)
      __extension__ ({ struct obstack *__h = (&rename_obstack); __extension__ ({ struct obstack *__o = (__h); int __len = ((sizeof (struct du_chain))); if (__o->chunk_limit - __o->next_free < __len) _obstack_newchunk (__o, __len); __o->next_free += __len; (void) 0; }); __extension__ ({ struct obstack *__o1 = (__h); void *value; value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *) 0)+__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *) 0); if (__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) __o1->next_free = __o1->chunk_limit; __o1->object_base = __o1->next_free; value; }); });
    this->next_use = 0;
    this->next_chain = (*p)->next_chain;
    this->loc = loc;
    this->insn = insn;
    this->class = class;
    this->need_caller_save_reg = 0;
    while (*p)
      p = &(*p)->next_use;
    *p = this;
    return;
  }
     }

   if (action != terminate_overlapping_read || ! exact_match)
     {
       struct du_chain *next = this->next_chain;





       if ((action == terminate_dead || action == terminate_write)
    && exact_match)
  {
    this->next_chain = closed_chains;
    closed_chains = this;
    if (rtl_dump_file)
      fprintf (rtl_dump_file,
        "Closing chain %s at insn %d (%s)\n",
        reg_names[(((*this->loc)->fld[0]).rtuint)], (((insn)->fld[0]).rtint),
        scan_actions_name[(int) action]);
  }
       else
  {
    if (rtl_dump_file)
      fprintf (rtl_dump_file,
        "Discarding chain %s at insn %d (%s)\n",
        reg_names[(((*this->loc)->fld[0]).rtuint)], (((insn)->fld[0]).rtint),
        scan_actions_name[(int) action]);
  }
       *p = next;
     }
   else
     p = &this->next_chain;
 }
    }
}




static void
scan_rtx_address (insn, loc, class, action, mode)
     rtx insn;
     rtx *loc;
     enum reg_class class;
     enum scan_actions action;
     enum machine_mode mode;
{
  rtx x = *loc;
  enum rtx_code code = ((enum rtx_code) (x)->code);
  const char *fmt;
  int i, j;

  if (action == mark_write)
    return;

  switch (code)
    {
    case PLUS:
      {
 rtx orig_op0 = (((x)->fld[0]).rtx);
 rtx orig_op1 = (((x)->fld[1]).rtx);
 enum rtx_code code0 = ((enum rtx_code) (orig_op0)->code);
 enum rtx_code code1 = ((enum rtx_code) (orig_op1)->code);
 rtx op0 = orig_op0;
 rtx op1 = orig_op1;
 rtx *locI = 
# 550 "regrename.c" 3 4
            ((void *)0)
# 550 "regrename.c"
                ;
 rtx *locB = 
# 551 "regrename.c" 3 4
            ((void *)0)
# 551 "regrename.c"
                ;

 if (((enum rtx_code) (op0)->code) == SUBREG)
   {
     op0 = (((op0)->fld[0]).rtx);
     code0 = ((enum rtx_code) (op0)->code);
   }

 if (((enum rtx_code) (op1)->code) == SUBREG)
   {
     op1 = (((op1)->fld[0]).rtx);
     code1 = ((enum rtx_code) (op1)->code);
   }

 if (code0 == MULT || code0 == SIGN_EXTEND || code0 == TRUNCATE
     || code0 == ZERO_EXTEND || code1 == MEM)
   {
     locI = &(((x)->fld[0]).rtx);
     locB = &(((x)->fld[1]).rtx);
   }
 else if (code1 == MULT || code1 == SIGN_EXTEND || code1 == TRUNCATE
   || code1 == ZERO_EXTEND || code0 == MEM)
   {
     locI = &(((x)->fld[1]).rtx);
     locB = &(((x)->fld[0]).rtx);
   }
 else if (code0 == CONST_INT || code0 == CONST
   || code0 == SYMBOL_REF || code0 == LABEL_REF)
   locB = &(((x)->fld[1]).rtx);
 else if (code1 == CONST_INT || code1 == CONST
   || code1 == SYMBOL_REF || code1 == LABEL_REF)
   locB = &(((x)->fld[0]).rtx);
 else if (code0 == REG && code1 == REG)
   {
     int index_op;

     if ((((((op0)->fld[0]).rtuint)) < 7 || ((((op0)->fld[0]).rtuint) >= (((((20 + 1) + 7) + 1) + 7) + 1) && ((((op0)->fld[0]).rtuint)) <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || ((unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] >= (((((20 + 1) + 7) + 1) + 7) + 1) && (unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || (unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] < 7)
  && (((((op1)->fld[0]).rtuint)) <= 7 || ((((op1)->fld[0]).rtuint)) == 16 || ((((op1)->fld[0]).rtuint)) == 20 || ((((op1)->fld[0]).rtuint) >= (((((20 + 1) + 7) + 1) + 7) + 1) && ((((op1)->fld[0]).rtuint)) <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || ((unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] >= (((((20 + 1) + 7) + 1) + 7) + 1) && (unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || (unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] <= 7))
       index_op = 0;
     else if ((((((op1)->fld[0]).rtuint)) < 7 || ((((op1)->fld[0]).rtuint) >= (((((20 + 1) + 7) + 1) + 7) + 1) && ((((op1)->fld[0]).rtuint)) <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || ((unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] >= (((((20 + 1) + 7) + 1) + 7) + 1) && (unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || (unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] < 7)
       && (((((op0)->fld[0]).rtuint)) <= 7 || ((((op0)->fld[0]).rtuint)) == 16 || ((((op0)->fld[0]).rtuint)) == 20 || ((((op0)->fld[0]).rtuint) >= (((((20 + 1) + 7) + 1) + 7) + 1) && ((((op0)->fld[0]).rtuint)) <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || ((unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] >= (((((20 + 1) + 7) + 1) + 7) + 1) && (unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || (unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] <= 7))
       index_op = 1;
     else if ((((((op1)->fld[0]).rtuint)) <= 7 || ((((op1)->fld[0]).rtuint)) == 16 || ((((op1)->fld[0]).rtuint)) == 20 || ((((op1)->fld[0]).rtuint) >= (((((20 + 1) + 7) + 1) + 7) + 1) && ((((op1)->fld[0]).rtuint)) <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || ((unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] >= (((((20 + 1) + 7) + 1) + 7) + 1) && (unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || (unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] <= 7))
       index_op = 0;
     else if ((((((op0)->fld[0]).rtuint)) <= 7 || ((((op0)->fld[0]).rtuint)) == 16 || ((((op0)->fld[0]).rtuint)) == 20 || ((((op0)->fld[0]).rtuint) >= (((((20 + 1) + 7) + 1) + 7) + 1) && ((((op0)->fld[0]).rtuint)) <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || ((unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] >= (((((20 + 1) + 7) + 1) + 7) + 1) && (unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || (unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] <= 7))
       index_op = 1;
     else if ((((((op1)->fld[0]).rtuint)) < 7 || ((((op1)->fld[0]).rtuint) >= (((((20 + 1) + 7) + 1) + 7) + 1) && ((((op1)->fld[0]).rtuint)) <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || ((unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] >= (((((20 + 1) + 7) + 1) + 7) + 1) && (unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || (unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] < 7))
       index_op = 1;
     else
       index_op = 0;

     locI = &(((x)->fld[index_op]).rtx);
     locB = &(((x)->fld[!index_op]).rtx);
   }
 else if (code0 == REG)
   {
     locI = &(((x)->fld[0]).rtx);
     locB = &(((x)->fld[1]).rtx);
   }
 else if (code1 == REG)
   {
     locI = &(((x)->fld[1]).rtx);
     locB = &(((x)->fld[0]).rtx);
   }

 if (locI)
   scan_rtx_address (insn, locI, INDEX_REGS, action, mode);
 if (locB)
   scan_rtx_address (insn, locB, GENERAL_REGS, action, mode);
 return;
      }

    case POST_INC:
    case POST_DEC:
    case POST_MODIFY:
    case PRE_INC:
    case PRE_DEC:
    case PRE_MODIFY:



      action = terminate_all_read;

      break;

    case MEM:
      scan_rtx_address (insn, &(((x)->fld[0]).rtx),
   GENERAL_REGS, action,
   ((enum machine_mode) (x)->mode));
      return;

    case REG:
      scan_rtx_reg (insn, loc, class, action, OP_IN, 0);
      return;

    default:
      break;
    }

  fmt = (rtx_format[(int) (code)]);
  for (i = (rtx_length[(int) (code)]) - 1; i >= 0; i--)
    {
      if (fmt[i] == 'e')
 scan_rtx_address (insn, &(((x)->fld[i]).rtx), class, action, mode);
      else if (fmt[i] == 'E')
 for (j = (((((x)->fld[i]).rtvec))->num_elem) - 1; j >= 0; j--)
   scan_rtx_address (insn, &(((((x)->fld[i]).rtvec))->elem[j]), class, action, mode);
    }
}

static void
scan_rtx (insn, loc, class, action, type, earlyclobber)
     rtx insn;
     rtx *loc;
     enum reg_class class;
     enum scan_actions action;
     enum op_type type;
     int earlyclobber;
{
  const char *fmt;
  rtx x = *loc;
  enum rtx_code code = ((enum rtx_code) (x)->code);
  int i, j;

  code = ((enum rtx_code) (x)->code);
  switch (code)
    {
    case CONST:
    case CONST_INT:
    case CONST_DOUBLE:
    case CONST_VECTOR:
    case SYMBOL_REF:
    case LABEL_REF:
    case CC0:
    case PC:
      return;

    case REG:
      scan_rtx_reg (insn, loc, class, action, type, earlyclobber);
      return;

    case MEM:
      scan_rtx_address (insn, &(((x)->fld[0]).rtx),
   GENERAL_REGS, action,
   ((enum machine_mode) (x)->mode));
      return;

    case SET:
      scan_rtx (insn, &(((x)->fld[1]).rtx), class, action, OP_IN, 0);
      scan_rtx (insn, &(((x)->fld[0]).rtx), class, action, OP_OUT, 0);
      return;

    case STRICT_LOW_PART:
      scan_rtx (insn, &(((x)->fld[0]).rtx), class, action, OP_INOUT, earlyclobber);
      return;

    case ZERO_EXTRACT:
    case SIGN_EXTRACT:
      scan_rtx (insn, &(((x)->fld[0]).rtx), class, action,
  type == OP_IN ? OP_IN : OP_INOUT, earlyclobber);
      scan_rtx (insn, &(((x)->fld[1]).rtx), class, action, OP_IN, 0);
      scan_rtx (insn, &(((x)->fld[2]).rtx), class, action, OP_IN, 0);
      return;

    case POST_INC:
    case PRE_INC:
    case POST_DEC:
    case PRE_DEC:
    case POST_MODIFY:
    case PRE_MODIFY:

      fancy_abort ("regrename.c", 722, __FUNCTION__);

    case CLOBBER:
      scan_rtx (insn, &(((x)->fld[0]).rtx), class, action, OP_OUT, 1);
      return;

    case EXPR_LIST:
      scan_rtx (insn, &(((x)->fld[0]).rtx), class, action, type, 0);
      if ((((x)->fld[1]).rtx))
 scan_rtx (insn, &(((x)->fld[1]).rtx), class, action, type, 0);
      return;

    default:
      break;
    }

  fmt = (rtx_format[(int) (code)]);
  for (i = (rtx_length[(int) (code)]) - 1; i >= 0; i--)
    {
      if (fmt[i] == 'e')
 scan_rtx (insn, &(((x)->fld[i]).rtx), class, action, type, 0);
      else if (fmt[i] == 'E')
 for (j = (((((x)->fld[i]).rtvec))->num_elem) - 1; j >= 0; j--)
   scan_rtx (insn, &(((((x)->fld[i]).rtvec))->elem[j]), class, action, type, 0);
    }
}



static struct du_chain *
build_def_use (bb)
     basic_block bb;
{
  rtx insn;

  open_chains = closed_chains = 
# 757 "regrename.c" 3 4
                               ((void *)0)
# 757 "regrename.c"
                                   ;

  for (insn = bb->head; ; insn = (((insn)->fld[2]).rtx))
    {
      if (((rtx_class[(int) (((enum rtx_code) (insn)->code))]) == 'i'))
 {
   int n_ops;
   rtx note;
   rtx old_operands[30];
   rtx old_dups[4];
   int i, icode;
   int alt;
   int predicated;
# 787 "regrename.c"
   icode = ((((insn)->fld[4]).rtint) >= 0 ? (((insn)->fld[4]).rtint) : recog_memoized_1 (insn));
   extract_insn (insn);
   constrain_operands (1);
   preprocess_constraints ();
   alt = which_alternative;
   n_ops = recog_data.n_operands;





   predicated = ((enum rtx_code) ((((insn)->fld[3]).rtx))->code) == COND_EXEC;
   for (i = 0; i < n_ops; ++i)
     {
       int matches = recog_op_alt[i][alt].matches;
       if (matches >= 0)
  recog_op_alt[i][alt].class = recog_op_alt[matches][alt].class;
       if (matches >= 0 || recog_op_alt[i][alt].matched >= 0
           || (predicated && recog_data.operand_type[i] == OP_OUT))
  recog_data.operand_type[i] = OP_INOUT;
     }


   for (i = 0; i < n_ops; i++)
     scan_rtx (insn, recog_data.operand_loc[i],
        NO_REGS, terminate_overlapping_read,
        recog_data.operand_type[i], 0);





   for (i = 0; i < n_ops; i++)
     {
       old_operands[i] = recog_data.operand[i];



       if (recog_data.constraints[i][0] == '\0')
  continue;
       *recog_data.operand_loc[i] = (global_rtl[GR_CC0]);
     }
   for (i = 0; i < recog_data.n_dups; i++)
     {
       int dup_num = recog_data.dup_num[i];

       old_dups[i] = *recog_data.dup_loc[i];
       *recog_data.dup_loc[i] = (global_rtl[GR_CC0]);



       if (icode >= 0
    && insn_data[icode].operand[dup_num].eliminable == 0)
  old_dups[i] = recog_data.operand[dup_num];
     }

   scan_rtx (insn, &(((insn)->fld[3]).rtx), NO_REGS, terminate_all_read,
      OP_IN, 0);

   for (i = 0; i < recog_data.n_dups; i++)
     *recog_data.dup_loc[i] = old_dups[i];
   for (i = 0; i < n_ops; i++)
     *recog_data.operand_loc[i] = old_operands[i];


   if (((enum rtx_code) (insn)->code) == CALL_INSN && (((insn)->fld[7]).rtx))
     scan_rtx (insn, &(((insn)->fld[7]).rtx),
        NO_REGS, terminate_all_read, OP_IN, 0);



   if (asm_noperands ((((insn)->fld[3]).rtx)) > 0)
     for (i = 0; i < n_ops; i++)
       {
  rtx *loc = recog_data.operand_loc[i];
  rtx op = *loc;

  if (((enum rtx_code) (op)->code) == REG
      && (((op)->fld[0]).rtuint) == (((op)->fld[1]).rtuint)
      && (recog_data.operand_type[i] == OP_IN
   || recog_data.operand_type[i] == OP_INOUT))
    scan_rtx (insn, loc, NO_REGS, terminate_all_read, OP_IN, 0);
       }


   for (i = 0; i < n_ops + recog_data.n_dups; i++)
     {
       int opn = i < n_ops ? i : recog_data.dup_num[i - n_ops];
       rtx *loc = (i < n_ops
     ? recog_data.operand_loc[opn]
     : recog_data.dup_loc[i - n_ops]);
       enum reg_class class = recog_op_alt[opn][alt].class;
       enum op_type type = recog_data.operand_type[opn];




       if (recog_data.constraints[opn][0] == '\0')
  continue;

       if (recog_op_alt[opn][alt].is_address)
  scan_rtx_address (insn, loc, class, mark_read, VOIDmode);
       else
  scan_rtx (insn, loc, class, mark_read, type, 0);
     }



   for (note = (((insn)->fld[6]).rtx); note; note = (((note)->fld[1]).rtx))
     {
       if (((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_DEAD)
  scan_rtx (insn, &(((note)->fld[0]).rtx), NO_REGS, terminate_dead,
     OP_IN, 0);
       else if (((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_INC)
  scan_rtx (insn, &(((note)->fld[0]).rtx), ALL_REGS, mark_read,
     OP_INOUT, 0);
     }



   if (((enum rtx_code) (insn)->code) == CALL_INSN)
     {
       struct du_chain *p;
       for (p = open_chains; p; p = p->next_chain)
  p->need_caller_save_reg = 1;
     }





   for (i = 0; i < n_ops; i++)
     {
       old_operands[i] = recog_data.operand[i];
       if (recog_data.operand_type[i] == OP_INOUT)
  *recog_data.operand_loc[i] = (global_rtl[GR_CC0]);
     }
   for (i = 0; i < recog_data.n_dups; i++)
     {
       int opn = recog_data.dup_num[i];
       old_dups[i] = *recog_data.dup_loc[i];
       if (recog_data.operand_type[opn] == OP_INOUT)
  *recog_data.dup_loc[i] = (global_rtl[GR_CC0]);
     }

   scan_rtx (insn, &(((insn)->fld[3]).rtx), NO_REGS, terminate_write, OP_IN, 0);

   for (i = 0; i < recog_data.n_dups; i++)
     *recog_data.dup_loc[i] = old_dups[i];
   for (i = 0; i < n_ops; i++)
     *recog_data.operand_loc[i] = old_operands[i];







   if (asm_noperands ((((insn)->fld[3]).rtx)) > 0)
     {
       for (i = 0; i < n_ops; i++)
  if (recog_data.operand_type[i] == OP_OUT)
    {
      rtx *loc = recog_data.operand_loc[i];
      rtx op = *loc;
      enum reg_class class = recog_op_alt[i][alt].class;

      if (((enum rtx_code) (op)->code) == REG
          && (((op)->fld[0]).rtuint) == (((op)->fld[1]).rtuint))
        continue;

      scan_rtx (insn, loc, class, mark_write, OP_OUT,
         recog_op_alt[i][alt].earlyclobber);
    }
     }
   else if (((enum rtx_code) (insn)->code) != CALL_INSN)
     for (i = 0; i < n_ops + recog_data.n_dups; i++)
       {
  int opn = i < n_ops ? i : recog_data.dup_num[i - n_ops];
  rtx *loc = (i < n_ops
       ? recog_data.operand_loc[opn]
       : recog_data.dup_loc[i - n_ops]);
  enum reg_class class = recog_op_alt[opn][alt].class;

  if (recog_data.operand_type[opn] == OP_OUT)
    scan_rtx (insn, loc, class, mark_write, OP_OUT,
       recog_op_alt[opn][alt].earlyclobber);
       }



   for (note = (((insn)->fld[6]).rtx); note; note = (((note)->fld[1]).rtx))
     if (((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_UNUSED)
       scan_rtx (insn, &(((note)->fld[0]).rtx), NO_REGS, terminate_dead,
   OP_IN, 0);
 }
      if (insn == bb->end)
 break;
    }



  return closed_chains;
}




static void
dump_def_use_chain (chains)
     struct du_chain *chains;
{
  while (chains)
    {
      struct du_chain *this = chains;
      int r = (((*this->loc)->fld[0]).rtuint);
      int nregs = (((r) >= 8 && (r) <= (8 + 7)) || (((r) >= (20 + 1) && (r) <= ((20 + 1) + 7)) || ((r) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (r) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((r) >= (((20 + 1) + 7) + 1) && (r) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (*this->loc)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (*this->loc)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (*this->loc)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (*this->loc)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (*this->loc)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));
      fprintf (rtl_dump_file, "Register %s (%d):", reg_names[r], nregs);
      while (this)
 {
   fprintf (rtl_dump_file, " %d [%s]", (((this->insn)->fld[0]).rtint),
     reg_class_names[this->class]);
   this = this->next_use;
 }
      fprintf (rtl_dump_file, "\n");
      chains = chains->next_chain;
    }
}
# 1028 "regrename.c"
struct value_data_entry
{
  enum machine_mode mode;
  unsigned int oldest_regno;
  unsigned int next_regno;
};

struct value_data
{
  struct value_data_entry e[53];
  unsigned int max_value_regs;
};

static void kill_value_regno (unsigned, struct value_data *);
static void kill_value (rtx, struct value_data *);
static void set_value_regno (unsigned, enum machine_mode, struct value_data *)
                              ;
static void init_value_data (struct value_data *);
static void kill_clobbered_value (rtx, rtx, void *);
static void kill_set_value (rtx, rtx, void *);
static int kill_autoinc_value (rtx *, void *);
static void copy_value (rtx, rtx, struct value_data *);
static _Bool mode_change_ok (enum machine_mode, enum machine_mode, unsigned int)
                      ;
static rtx find_oldest_value_reg (enum reg_class, rtx, struct value_data *)
                            ;
static _Bool replace_oldest_value_reg (rtx *, enum reg_class, rtx, struct value_data *)
                                ;
static _Bool replace_oldest_value_addr (rtx *, enum reg_class, enum machine_mode, rtx, struct value_data *)

                                 ;
static _Bool replace_oldest_value_mem (rtx, rtx, struct value_data *);
static _Bool copyprop_hardreg_forward_1 (basic_block, struct value_data *)
                            ;
extern void debug_value_data (struct value_data *);







static void
kill_value_regno (regno, vd)
     unsigned int regno;
     struct value_data *vd;
{
  unsigned int i, next;

  if (vd->e[regno].oldest_regno != regno)
    {
      for (i = vd->e[regno].oldest_regno;
    vd->e[i].next_regno != regno;
    i = vd->e[i].next_regno)
 continue;
      vd->e[i].next_regno = vd->e[regno].next_regno;
    }
  else if ((next = vd->e[regno].next_regno) != (~(unsigned int) 0))
    {
      for (i = next; i != (~(unsigned int) 0); i = vd->e[i].next_regno)
        vd->e[i].oldest_regno = next;
    }

  vd->e[regno].mode = VOIDmode;
  vd->e[regno].oldest_regno = regno;
  vd->e[regno].next_regno = (~(unsigned int) 0);




}




static void
kill_value (x, vd)
     rtx x;
     struct value_data *vd;
{





  if (((enum rtx_code) (x)->code) == SUBREG)
    x = simplify_subreg (((enum machine_mode) (x)->mode), (((x)->fld[0]).rtx),
    ((enum machine_mode) ((((x)->fld[0]).rtx))->mode), (((x)->fld[1]).rtuint));
  if ((((enum rtx_code) (x)->code) == REG))
    {
      unsigned int regno = (((x)->fld[0]).rtuint);
      unsigned int n = (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (x)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (x)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (x)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));
      unsigned int i, j;


      for (i = 0; i < n; ++i)
 kill_value_regno (regno + i, vd);


      if (regno < vd->max_value_regs)
 j = 0;
      else
 j = regno - vd->max_value_regs;
      for (; j < regno; ++j)
 {
   if (vd->e[j].mode == VOIDmode)
     continue;
   n = (((j) >= 8 && (j) <= (8 + 7)) || (((j) >= (20 + 1) && (j) <= ((20 + 1) + 7)) || ((j) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (j) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((j) >= (((20 + 1) + 7) + 1) && (j) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (vd->e[j].mode)]) == MODE_COMPLEX_INT || (mode_class[(int) (vd->e[j].mode)]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((vd->e[j].mode) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (vd->e[j].mode) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (vd->e[j].mode)]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));
   if (j + n > regno)
     for (i = 0; i < n; ++i)
       kill_value_regno (j + i, vd);
 }
    }
}



static void
set_value_regno (regno, mode, vd)
     unsigned int regno;
     enum machine_mode mode;
     struct value_data *vd;
{
  unsigned int nregs;

  vd->e[regno].mode = mode;

  nregs = (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (mode)]) == MODE_COMPLEX_INT || (mode_class[(int) (mode)]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((mode) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (mode) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (mode)]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));
  if (nregs > vd->max_value_regs)
    vd->max_value_regs = nregs;
}



static void
init_value_data (vd)
     struct value_data *vd;
{
  int i;
  for (i = 0; i < 53; ++i)
    {
      vd->e[i].mode = VOIDmode;
      vd->e[i].oldest_regno = i;
      vd->e[i].next_regno = (~(unsigned int) 0);
    }
  vd->max_value_regs = 0;
}



static void
kill_clobbered_value (x, set, data)
     rtx x;
     rtx set;
     void *data;
{
  struct value_data *vd = data;
  if (((enum rtx_code) (set)->code) == CLOBBER)
    kill_value (x, vd);
}




static void
kill_set_value (x, set, data)
     rtx x;
     rtx set;
     void *data;
{
  struct value_data *vd = data;
  if (((enum rtx_code) (set)->code) != CLOBBER)
    {
      kill_value (x, vd);
      if ((((enum rtx_code) (x)->code) == REG))
        set_value_regno ((((x)->fld[0]).rtuint), ((enum machine_mode) (x)->mode), vd);
    }
}





static int
kill_autoinc_value (px, data)
     rtx *px;
     void *data;
{
  rtx x = *px;
  struct value_data *vd = data;

  if ((rtx_class[(int) (((enum rtx_code) (x)->code))]) == 'a')
    {
      x = (((x)->fld[0]).rtx);
      kill_value (x, vd);
      set_value_regno ((((x)->fld[0]).rtuint), ((target_flags & 0x02000000) ? DImode : SImode), vd);
      return -1;
    }

  return 0;
}




static void
copy_value (dest, src, vd)
     rtx dest;
     rtx src;
     struct value_data *vd;
{
  unsigned int dr = (((dest)->fld[0]).rtuint);
  unsigned int sr = (((src)->fld[0]).rtuint);
  unsigned int dn, sn;
  unsigned int i;



  if (sr == dr)
    return;



  if (dr == 7)
    return;


  if (frame_pointer_needed && dr == 6)
    return;


  dn = (((dr) >= 8 && (dr) <= (8 + 7)) || (((dr) >= (20 + 1) && (dr) <= ((20 + 1) + 7)) || ((dr) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (dr) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((dr) >= (((20 + 1) + 7) + 1) && (dr) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (dest)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (dest)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (dest)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (dest)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (dest)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));
  sn = (((sr) >= 8 && (sr) <= (8 + 7)) || (((sr) >= (20 + 1) && (sr) <= ((20 + 1) + 7)) || ((sr) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (sr) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((sr) >= (((20 + 1) + 7) + 1) && (sr) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (dest)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (dest)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (dest)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (dest)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (dest)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));
  if ((dr > sr && dr < sr + sn)
      || (sr > dr && sr < dr + dn))
    return;




  if (vd->e[sr].mode == VOIDmode)
    set_value_regno (sr, vd->e[dr].mode, vd);




  else if (sn > (unsigned int) (((sr) >= 8 && (sr) <= (8 + 7)) || (((sr) >= (20 + 1) && (sr) <= ((20 + 1) + 7)) || ((sr) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (sr) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((sr) >= (((20 + 1) + 7) + 1) && (sr) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (vd->e[sr].mode)]) == MODE_COMPLEX_INT || (mode_class[(int) (vd->e[sr].mode)]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((vd->e[sr].mode) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (vd->e[sr].mode) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (vd->e[sr].mode)]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4)))))
    return;



  vd->e[dr].oldest_regno = vd->e[sr].oldest_regno;

  for (i = sr; vd->e[i].next_regno != (~(unsigned int) 0); i = vd->e[i].next_regno)
    continue;
  vd->e[i].next_regno = dr;




}



static _Bool
mode_change_ok (orig_mode, new_mode, regno)
     enum machine_mode orig_mode, new_mode;
     unsigned int regno __attribute__ ((__unused__));
{
  if ((mode_size[(int) (orig_mode)]) < (mode_size[(int) (new_mode)]))
    return 0;







  return 1;
}





static rtx
find_oldest_value_reg (class, reg, vd)
     enum reg_class class;
     rtx reg;
     struct value_data *vd;
{
  unsigned int regno = (((reg)->fld[0]).rtuint);
  enum machine_mode mode = ((enum machine_mode) (reg)->mode);
  unsigned int i;
# 1330 "regrename.c"
  if (mode != vd->e[regno].mode)
    {
      if ((((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (mode)]) == MODE_COMPLEX_INT || (mode_class[(int) (mode)]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((mode) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (mode) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (mode)]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))))
   > (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (vd->e[regno].mode)]) == MODE_COMPLEX_INT || (mode_class[(int) (vd->e[regno].mode)]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((vd->e[regno].mode) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (vd->e[regno].mode) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (vd->e[regno].mode)]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4)))))
 return (rtx) 0;
    }

  for (i = vd->e[regno].oldest_regno; i != regno; i = vd->e[i].next_regno)
    if (((reg_class_contents[class]) & (((HARD_REG_ELT_TYPE) (1)) << (i)))
 && (vd->e[i].mode == mode
     || mode_change_ok (vd->e[i].mode, mode, i)))
      {
 rtx new = gen_rtx_fmt_i0 (REG, (mode), (i));
 (((new)->fld[1]).rtuint) = (((reg)->fld[1]).rtuint);
 return new;
      }

  return (rtx) 0;
}




static _Bool
replace_oldest_value_reg (loc, class, insn, vd)
     rtx *loc;
     enum reg_class class;
     rtx insn;
     struct value_data *vd;
{
  rtx new = find_oldest_value_reg (class, *loc, vd);
  if (new)
    {
      if (rtl_dump_file)
 fprintf (rtl_dump_file, "insn %u: replaced reg %u with %u\n",
   (((insn)->fld[0]).rtint), (((*loc)->fld[0]).rtuint), (((new)->fld[0]).rtuint));

      *loc = new;
      return 1;
    }
  return 0;
}





static _Bool
replace_oldest_value_addr (loc, class, mode, insn, vd)
     rtx *loc;
     enum reg_class class;
     enum machine_mode mode;
     rtx insn;
     struct value_data *vd;
{
  rtx x = *loc;
  enum rtx_code code = ((enum rtx_code) (x)->code);
  const char *fmt;
  int i, j;
  _Bool changed = 0;

  switch (code)
    {
    case PLUS:
      {
 rtx orig_op0 = (((x)->fld[0]).rtx);
 rtx orig_op1 = (((x)->fld[1]).rtx);
 enum rtx_code code0 = ((enum rtx_code) (orig_op0)->code);
 enum rtx_code code1 = ((enum rtx_code) (orig_op1)->code);
 rtx op0 = orig_op0;
 rtx op1 = orig_op1;
 rtx *locI = 
# 1401 "regrename.c" 3 4
            ((void *)0)
# 1401 "regrename.c"
                ;
 rtx *locB = 
# 1402 "regrename.c" 3 4
            ((void *)0)
# 1402 "regrename.c"
                ;

 if (((enum rtx_code) (op0)->code) == SUBREG)
   {
     op0 = (((op0)->fld[0]).rtx);
     code0 = ((enum rtx_code) (op0)->code);
   }

 if (((enum rtx_code) (op1)->code) == SUBREG)
   {
     op1 = (((op1)->fld[0]).rtx);
     code1 = ((enum rtx_code) (op1)->code);
   }

 if (code0 == MULT || code0 == SIGN_EXTEND || code0 == TRUNCATE
     || code0 == ZERO_EXTEND || code1 == MEM)
   {
     locI = &(((x)->fld[0]).rtx);
     locB = &(((x)->fld[1]).rtx);
   }
 else if (code1 == MULT || code1 == SIGN_EXTEND || code1 == TRUNCATE
   || code1 == ZERO_EXTEND || code0 == MEM)
   {
     locI = &(((x)->fld[1]).rtx);
     locB = &(((x)->fld[0]).rtx);
   }
 else if (code0 == CONST_INT || code0 == CONST
   || code0 == SYMBOL_REF || code0 == LABEL_REF)
   locB = &(((x)->fld[1]).rtx);
 else if (code1 == CONST_INT || code1 == CONST
   || code1 == SYMBOL_REF || code1 == LABEL_REF)
   locB = &(((x)->fld[0]).rtx);
 else if (code0 == REG && code1 == REG)
   {
     int index_op;

     if ((((((op0)->fld[0]).rtuint)) < 7 || ((((op0)->fld[0]).rtuint) >= (((((20 + 1) + 7) + 1) + 7) + 1) && ((((op0)->fld[0]).rtuint)) <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || ((unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] >= (((((20 + 1) + 7) + 1) + 7) + 1) && (unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || (unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] < 7)
  && (((((op1)->fld[0]).rtuint)) <= 7 || ((((op1)->fld[0]).rtuint)) == 16 || ((((op1)->fld[0]).rtuint)) == 20 || ((((op1)->fld[0]).rtuint) >= (((((20 + 1) + 7) + 1) + 7) + 1) && ((((op1)->fld[0]).rtuint)) <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || ((unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] >= (((((20 + 1) + 7) + 1) + 7) + 1) && (unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || (unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] <= 7))
       index_op = 0;
     else if ((((((op1)->fld[0]).rtuint)) < 7 || ((((op1)->fld[0]).rtuint) >= (((((20 + 1) + 7) + 1) + 7) + 1) && ((((op1)->fld[0]).rtuint)) <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || ((unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] >= (((((20 + 1) + 7) + 1) + 7) + 1) && (unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || (unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] < 7)
       && (((((op0)->fld[0]).rtuint)) <= 7 || ((((op0)->fld[0]).rtuint)) == 16 || ((((op0)->fld[0]).rtuint)) == 20 || ((((op0)->fld[0]).rtuint) >= (((((20 + 1) + 7) + 1) + 7) + 1) && ((((op0)->fld[0]).rtuint)) <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || ((unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] >= (((((20 + 1) + 7) + 1) + 7) + 1) && (unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || (unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] <= 7))
       index_op = 1;
     else if ((((((op1)->fld[0]).rtuint)) <= 7 || ((((op1)->fld[0]).rtuint)) == 16 || ((((op1)->fld[0]).rtuint)) == 20 || ((((op1)->fld[0]).rtuint) >= (((((20 + 1) + 7) + 1) + 7) + 1) && ((((op1)->fld[0]).rtuint)) <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || ((unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] >= (((((20 + 1) + 7) + 1) + 7) + 1) && (unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || (unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] <= 7))
       index_op = 0;
     else if ((((((op0)->fld[0]).rtuint)) <= 7 || ((((op0)->fld[0]).rtuint)) == 16 || ((((op0)->fld[0]).rtuint)) == 20 || ((((op0)->fld[0]).rtuint) >= (((((20 + 1) + 7) + 1) + 7) + 1) && ((((op0)->fld[0]).rtuint)) <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || ((unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] >= (((((20 + 1) + 7) + 1) + 7) + 1) && (unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || (unsigned) reg_renumber[((((op0)->fld[0]).rtuint))] <= 7))
       index_op = 1;
     else if ((((((op1)->fld[0]).rtuint)) < 7 || ((((op1)->fld[0]).rtuint) >= (((((20 + 1) + 7) + 1) + 7) + 1) && ((((op1)->fld[0]).rtuint)) <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || ((unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] >= (((((20 + 1) + 7) + 1) + 7) + 1) && (unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] <= ((((((20 + 1) + 7) + 1) + 7) + 1) + 7)) || (unsigned) reg_renumber[((((op1)->fld[0]).rtuint))] < 7))
       index_op = 1;
     else
       index_op = 0;

     locI = &(((x)->fld[index_op]).rtx);
     locB = &(((x)->fld[!index_op]).rtx);
   }
 else if (code0 == REG)
   {
     locI = &(((x)->fld[0]).rtx);
     locB = &(((x)->fld[1]).rtx);
   }
 else if (code1 == REG)
   {
     locI = &(((x)->fld[1]).rtx);
     locB = &(((x)->fld[0]).rtx);
   }

 if (locI)
   changed |= replace_oldest_value_addr (locI, INDEX_REGS, mode,
             insn, vd);
 if (locB)
   changed |= replace_oldest_value_addr (locB,
      GENERAL_REGS,
      mode, insn, vd);
 return changed;
      }

    case POST_INC:
    case POST_DEC:
    case POST_MODIFY:
    case PRE_INC:
    case PRE_DEC:
    case PRE_MODIFY:
      return 0;

    case MEM:
      return replace_oldest_value_mem (x, insn, vd);

    case REG:
      return replace_oldest_value_reg (loc, class, insn, vd);

    default:
      break;
    }

  fmt = (rtx_format[(int) (code)]);
  for (i = (rtx_length[(int) (code)]) - 1; i >= 0; i--)
    {
      if (fmt[i] == 'e')
 changed |= replace_oldest_value_addr (&(((x)->fld[i]).rtx), class, mode,
           insn, vd);
      else if (fmt[i] == 'E')
 for (j = (((((x)->fld[i]).rtvec))->num_elem) - 1; j >= 0; j--)
   changed |= replace_oldest_value_addr (&(((((x)->fld[i]).rtvec))->elem[j]), class,
             mode, insn, vd);
    }

  return changed;
}



static _Bool
replace_oldest_value_mem (x, insn, vd)
     rtx x;
     rtx insn;
     struct value_data *vd;
{
  return replace_oldest_value_addr (&(((x)->fld[0]).rtx),
        GENERAL_REGS,
        ((enum machine_mode) (x)->mode), insn, vd);
}



static _Bool
copyprop_hardreg_forward_1 (bb, vd)
     basic_block bb;
     struct value_data *vd;
{
  _Bool changed = 0;
  rtx insn;

  for (insn = bb->head; ; insn = (((insn)->fld[2]).rtx))
    {
      int n_ops, i, alt, predicated;
      _Bool is_asm;
      rtx set;

      if (! ((rtx_class[(int) (((enum rtx_code) (insn)->code))]) == 'i'))
 {
   if (insn == bb->end)
     break;
   else
     continue;
 }

      set = (((rtx_class[(int) (((enum rtx_code) (insn)->code))]) == 'i') ? (((enum rtx_code) ((((insn)->fld[3]).rtx))->code) == SET ? (((insn)->fld[3]).rtx) : single_set_2 (insn, (((insn)->fld[3]).rtx))) : (rtx) 0);
      extract_insn (insn);
      constrain_operands (1);
      preprocess_constraints ();
      alt = which_alternative;
      n_ops = recog_data.n_operands;
      is_asm = asm_noperands ((((insn)->fld[3]).rtx)) >= 0;





      predicated = ((enum rtx_code) ((((insn)->fld[3]).rtx))->code) == COND_EXEC;
      for (i = 0; i < n_ops; ++i)
 {
   int matches = recog_op_alt[i][alt].matches;
   if (matches >= 0)
     recog_op_alt[i][alt].class = recog_op_alt[matches][alt].class;
   if (matches >= 0 || recog_op_alt[i][alt].matched >= 0
       || (predicated && recog_data.operand_type[i] == OP_OUT))
     recog_data.operand_type[i] = OP_INOUT;
 }


      for (i = 0; i < n_ops; i++)
 if (recog_op_alt[i][alt].earlyclobber)
   kill_value (recog_data.operand[i], vd);




      note_stores ((((insn)->fld[3]).rtx), kill_clobbered_value, vd);



      for_each_rtx (&(((insn)->fld[3]).rtx), kill_autoinc_value, vd);


      for (i = 0; i < n_ops; i++)
 if (recog_op_alt[i][alt].earlyclobber)
   kill_value (recog_data.operand[i], vd);



      if (set && (((enum rtx_code) ((((set)->fld[1]).rtx))->code) == REG))
 {
   rtx src = (((set)->fld[1]).rtx);
   unsigned int regno = (((src)->fld[0]).rtuint);
   enum machine_mode mode = ((enum machine_mode) (src)->mode);
   unsigned int i;
   rtx new;



   if (mode != vd->e[regno].mode)
     {
       if ((((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (mode)]) == MODE_COMPLEX_INT || (mode_class[(int) (mode)]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((mode) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (mode) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (mode)]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))))
    > (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (vd->e[regno].mode)]) == MODE_COMPLEX_INT || (mode_class[(int) (vd->e[regno].mode)]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((vd->e[regno].mode) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (vd->e[regno].mode) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (vd->e[regno].mode)]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4)))))
  goto no_move_special_case;
     }



   if ((((enum rtx_code) ((((set)->fld[0]).rtx))->code) == REG))
     {
       new = find_oldest_value_reg ((regclass_map[regno]), src, vd);
       if (new && validate_change (insn, &(((set)->fld[1]).rtx), new, 0))
  {
    if (rtl_dump_file)
      fprintf (rtl_dump_file,
        "insn %u: replaced reg %u with %u\n",
        (((insn)->fld[0]).rtint), regno, (((new)->fld[0]).rtuint));
           changed = 1;
    goto did_replacement;
  }
     }


   for (i = vd->e[regno].oldest_regno; i != regno;
        i = vd->e[i].next_regno)
     if (vd->e[i].mode == mode
  || mode_change_ok (vd->e[i].mode, mode, i))
       {
  new = gen_rtx_fmt_i0 (REG, (mode), (i));
  if (validate_change (insn, &(((set)->fld[1]).rtx), new, 0))
    {
      (((new)->fld[1]).rtuint) = (((src)->fld[1]).rtuint);
      if (rtl_dump_file)
        fprintf (rtl_dump_file,
          "insn %u: replaced reg %u with %u\n",
          (((insn)->fld[0]).rtint), regno, (((new)->fld[0]).rtuint));
      changed = 1;
      goto did_replacement;
    }
       }
 }
      no_move_special_case:



      for (i = 0; i < n_ops; i++)
 {
   _Bool replaced = 0;




   if (recog_data.constraints[i][0] == '\0')
     continue;


   if (is_asm && ((enum rtx_code) (recog_data.operand[i])->code) == REG
       && ((((recog_data.operand[i])->fld[0]).rtuint)
    == (((recog_data.operand[i])->fld[1]).rtuint)))
     continue;

   if (recog_data.operand_type[i] == OP_IN)
     {
       if (recog_op_alt[i][alt].is_address)
  replaced
    = replace_oldest_value_addr (recog_data.operand_loc[i],
            recog_op_alt[i][alt].class,
            VOIDmode, insn, vd);
       else if ((((enum rtx_code) (recog_data.operand[i])->code) == REG))
  replaced
    = replace_oldest_value_reg (recog_data.operand_loc[i],
           recog_op_alt[i][alt].class,
           insn, vd);
       else if (((enum rtx_code) (recog_data.operand[i])->code) == MEM)
  replaced = replace_oldest_value_mem (recog_data.operand[i],
           insn, vd);
     }
   else if (((enum rtx_code) (recog_data.operand[i])->code) == MEM)
     replaced = replace_oldest_value_mem (recog_data.operand[i],
              insn, vd);


   if (replaced)
     {
       int j;
       rtx new;

       changed = 1;

       new = *recog_data.operand_loc[i];
       recog_data.operand[i] = new;
       for (j = 0; j < recog_data.n_dups; j++)
  if (recog_data.dup_num[j] == i)
    *recog_data.dup_loc[j] = new;
     }
 }

    did_replacement:

      if (((enum rtx_code) (insn)->code) == CALL_INSN)
 for (i = 0; i < 53; i++)
   if (((regs_invalidated_by_call) & (((HARD_REG_ELT_TYPE) (1)) << (i))))
     kill_value_regno (i, vd);


      note_stores ((((insn)->fld[3]).rtx), kill_set_value, vd);


      if (set && (((enum rtx_code) ((((set)->fld[0]).rtx))->code) == REG) && (((enum rtx_code) ((((set)->fld[1]).rtx))->code) == REG))
 copy_value ((((set)->fld[0]).rtx), (((set)->fld[1]).rtx), vd);

      if (insn == bb->end)
 break;
    }

  return changed;
}



void
copyprop_hardreg_forward ()
{
  struct value_data *all_vd;
  _Bool need_refresh;
  int b;

  need_refresh = 0;

  all_vd = xmalloc (sizeof (struct value_data) * n_basic_blocks);

  for (b = 0; b < n_basic_blocks; b++)
    {
      basic_block bb = (((basic_block_info)->data.bb[(b)]));





      if (bb->pred
   && ! bb->pred->pred_next
   && ! (bb->pred->flags & (4 | 8))
   && bb->pred->src->index != (-1)
   && bb->pred->src->index < b)
 all_vd[b] = all_vd[bb->pred->src->index];
      else
        init_value_data (all_vd + b);

      if (copyprop_hardreg_forward_1 (bb, all_vd + b))
 need_refresh = 1;
    }

  if (need_refresh)
    {
      if (rtl_dump_file)
 fputs ("\n\n", rtl_dump_file);




      delete_noop_moves (get_insns ());
      update_life_info (
# 1763 "regrename.c" 3 4
                       ((void *)0)
# 1763 "regrename.c"
                           , UPDATE_LIFE_GLOBAL_RM_NOTES,
   1
   | 16
   | 8);
    }

  free (all_vd);
}



void
debug_value_data (vd)
     struct value_data *vd;
{
  HARD_REG_ELT_TYPE set;
  unsigned int i, j;

  ((set) = ((HARD_REG_ELT_TYPE) (0)));

  for (i = 0; i < 53; ++i)
    if (vd->e[i].oldest_regno == i)
      {
 if (vd->e[i].mode == VOIDmode)
   {
     if (vd->e[i].next_regno != (~(unsigned int) 0))
       fprintf (
# 1789 "regrename.c" 3 4
               stderr
# 1789 "regrename.c"
                     , "[%u] Bad next_regno for empty chain (%u)\n",
         i, vd->e[i].next_regno);
     continue;
   }

 ((set) |= ((HARD_REG_ELT_TYPE) (1)) << (i));
 fprintf (
# 1795 "regrename.c" 3 4
         stderr
# 1795 "regrename.c"
               , "[%u %s] ", i, (mode_name[(int) (vd->e[i].mode)]));

 for (j = vd->e[i].next_regno;
      j != (~(unsigned int) 0);
      j = vd->e[j].next_regno)
   {
     if (((set) & (((HARD_REG_ELT_TYPE) (1)) << (j))))
       {
  fprintf (
# 1803 "regrename.c" 3 4
          stderr
# 1803 "regrename.c"
                , "[%u] Loop in regno chain\n", j);
  return;
       }

     if (vd->e[j].oldest_regno != i)
       {
  fprintf (
# 1809 "regrename.c" 3 4
          stderr
# 1809 "regrename.c"
                , "[%u] Bad oldest_regno (%u)\n",
    j, vd->e[j].oldest_regno);
  return;
       }
     ((set) |= ((HARD_REG_ELT_TYPE) (1)) << (j));
     fprintf (
# 1814 "regrename.c" 3 4
             stderr
# 1814 "regrename.c"
                   , "[%u %s] ", j, (mode_name[(int) (vd->e[j].mode)]));
   }
 fputc ('\n', 
# 1816 "regrename.c" 3 4
             stderr
# 1816 "regrename.c"
                   );
      }

  for (i = 0; i < 53; ++i)
    if (! ((set) & (((HARD_REG_ELT_TYPE) (1)) << (i)))
 && (vd->e[i].mode != VOIDmode
     || vd->e[i].oldest_regno != i
     || vd->e[i].next_regno != (~(unsigned int) 0)))
      fprintf (
# 1824 "regrename.c" 3 4
              stderr
# 1824 "regrename.c"
                    , "[%u] Non-empty reg in chain (%s %u %i)\n",
        i, (mode_name[(int) (vd->e[i].mode)]), vd->e[i].oldest_regno,
        vd->e[i].next_regno);
}

  parent reply	other threads:[~2024-01-17  9:39 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-05  3:40 [PATCH v2 0/2] When cmodel=extreme, add macro support and only support macros Lulu Cheng
2024-01-05  3:40 ` [PATCH v2 1/2] LoongArch: Add the macro implementation of mcmodel=extreme Lulu Cheng
2024-01-05  3:40 ` [PATCH v2 2/2] LoongArch: When the code model is extreme, the symbol address is obtained through macro instructions regardless of the value of -mexplicit-relocs Lulu Cheng
2024-01-05  8:37   ` Xi Ruoyao
2024-01-05  8:51     ` chenglulu
2024-01-05  9:57     ` chenglulu
2024-01-05 10:25       ` Xi Ruoyao
2024-01-05 11:55         ` Xi Ruoyao
2024-01-05 12:45           ` chenglulu
2024-01-05 14:16             ` Xi Ruoyao
2024-01-12  1:46               ` chenglulu
2024-01-12 11:42                 ` Xi Ruoyao
2024-01-13  7:01                   ` chenglulu
2024-01-13 13:05                     ` Xi Ruoyao
2024-01-13 14:05                       ` chenglulu
2024-01-17  9:38                       ` chenglulu [this message]
2024-01-17  9:50                         ` Xi Ruoyao
2024-01-17  9:57                           ` chenglulu
2024-01-19  5:46                             ` Xi Ruoyao
2024-01-19  8:51                               ` chenglulu
2024-01-22  7:27                                 ` chenglulu
2024-01-23 19:36                                   ` Xi Ruoyao
2024-01-25  0:48                                     ` chenglulu
2024-01-25  7:59                                       ` Xi Ruoyao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f77f4679-4790-a655-7c6d-cc715c31eee2@loongson.cn \
    --to=chenglulu@loongson.cn \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=i@xen0n.name \
    --cc=xry111@xry111.site \
    --cc=xuchenghua@loongson.cn \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).